Error: el nuevo BigNumber() no es un número de base 16: al intentar recuperar una cadena de una asignación

Creé un contrato inteligente bastante simple que se implementó en la red de prueba de rinkeby. Puedes ver el código a continuación:

pragma solidity ^0.4.18;

contract KVStore {

 mapping(address => mapping(string => string)) store;
 uint MAX_STR_LENGTH = 1000;

 function get(address _acct, string _key) public view returns(string) {
    return store[_acct][_key];
 }
 function set(string _key, string _value) public {
   if (bytes(_value).length <= MAX_STR_LENGTH) {
     store[msg.sender][_key] = _value;
   }
 }

}

Estoy usando geth para llamar a la función set y luego a la función get. Sin embargo, cuando llamo a kvstore.get(dirección, clave) aparece el siguiente error:

Error: new BigNumber() not a base 16 number: 

No estoy seguro de qué está pasando o cómo solucionarlo. La función set funciona bien y escribe en la cadena rinkeby.

Primero ejecuto esto:

geth --verbosity 0 console --rinkeby

Entonces

var kvstoreContract = web3.eth.contract([{"constant":false,"inputs":[{"name":"_key","type":"string"},{"name":"_value","type":"string"}],"name":"set","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_acct","type":"address"},{"name":"_key","type":"string"}],"name":"get","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"}]).at("0xf8daca377691c8f52b07ef77dfc0e7ca287622c5");

Entonces

kvstoreContract.set("fly","star",{from:eth.accounts[1]});

Que funciona bien y envía una transacción a la dirección del contrato.

Cuando trato de hacer

kvstoreContract.get(eth.accounts[1],"fly");

Recibo el error bigNumber. ¿Alguna idea de por qué? Realmente apreciaría la ayuda.

Respuestas (1)

Lo descubrí finalmente. Estaba pasando la dirección de contrato incorrecta todo el tiempo... ¡eso te atrapará!