Tengo un contrato simple Foo
que se implementa en una red Ganache.
pragma solidity ^0.4.18;
contract Foo {
uint storageData;
function set(uint x) public {
storageData = x;
}
function get() constant public returns (uint) {
return storageData;
}
}
Ahora, cuando quiero interactuar con él usando truffle console
, primero establezco el valor
truffle(development)> Foo.at("0x4d4337B075a442cF3351Fa11c425C350cE2984F5").set(123)
Pregunta 1: Luego traté de recuperar ese valor, pero está devolviendo un archivo BignNumber
. ¿Por qué no es un número entero?
truffle(development)> Foo.at("0x4d4337B075a442cF3351Fa11c425C350cE2984F5").get.call()
BigNumber { s: 1, e: 0, c: [ 123 ] }
Pregunta 2: ¿Cómo puedes convertirlo en un número entero o una cadena?
truffle(development)> Foo.at("0x4d4337B075a442cF3351Fa11c425C350cE2984F5").get.call().toNumber()
TypeError: Foo.at(...).get.call(...).toNumber is not a function
Lo intenté console.log
después de un .toNumber
, imprime el valor correcto 123
, pero ¿por qué también imprime un undefined
?
truffle(development)> Foo.at("0x4d4337B075a442cF3351Fa11c425C350cE2984F5").get.call().then(a => console.log(a.toNumber()))
123
undefined
Algunos consejos:
Intentar
var n;
var foo = Foo.at("0x4d4337B075a442cF3351Fa11c425C350cE2984F5");
foo.get().then(function(response) {
n = response.toString(10);
console.log(n);
}
Solo lo esbocé para ilustrar, así que espero no haber fallado en la sintaxis.
Espero eso ayude.
justin
toNumber()
:count = await app.getCount; count.toNumber()