Tengo la siguiente estructura y matriz en mi código Solidity:
struct Character { int256 strength; uint256 dexterity; uint256 constitution; .... } Character[] public characters;Tengo la siguiente línea en mi prueba de Hardhat intentando acceder a un miembro de esa matriz:
const character = await contract.characters(0)Entonces recibo el siguiente error:
Error: VM Exception while processing transaction: invalid opcode at Contract.characters¿Cuál es la forma correcta de acceder a un miembro de esta matriz de estructuras?
Como se señaló en el comentario de la pregunta, la matriz de characters estaba vacía cuando se llamó a la función de characters(0) .
Solidity genera automáticamente funciones getter para matrices public , lo que permite acceder a un elemento de la matriz utilizando su índice.
Cuando intenta acceder a un índice que está fuera de los límites, EVM genera una excepción.