Estoy usando la billetera Mist solo para mostrar el contenido del contrato.
A continuación, puede ver el código para acceder a la función de contrato (submitUnits) y el resultado del LoadScript cuando ejecuto en la consola.
call_function.js
En la última fila comentada, puede ver el valor que quiero imprimir (100).
Sin embargo, siempre devuelve este número hexadecimal. ¿Cómo puedo obtener las unidades totales que se mencionan en la captura de pantalla de la billetera?
El código del contrato es este:
contract UCounter {
mapping (address => uint256) public UnitsFrom;
uint256 public TotalUnits;
function submitUnits(uint256 Units) returns (uint ){
UnitsFrom[msg.sender] = Units;
TotalUnits = Units;
return TotalUnits;
}
}
Espero que alguien pueda ayudar. Gracias.
La función getData devuelve los parámetros de llamada de la función codificados junto con la firma de la función.
Desde el fragmento de código de su abi nosubmitUnits
es constante tiene un parámetro de entrada de tipo . El tipo de salida se recorta, pero en este caso, dado que es una transacción, no una llamada , y para la transacción podemos recuperar el valor de retorno.uint256
submitUnits
De la documentación para ejecutar una transacción tenemos que hacer:
var txid = MyContractInstance.submitUnits.sendTransaction(parameter, { from: eth.accounts[3] });
console.log(txid);
Y debe esperar hasta que la transacción se extraiga en la cadena de bloques.
Para leer una variable o llamar a un método constante, debe realizar una llamada
MyContractInstance.TotalUnits.call(function (value) {
console.log(value);
});
web3.eth.getStorageAt (address, position)
Aquí address
está la dirección de su contrato inteligente, y position
es la posición de la variable de estado, en su caso posición = 1 porque TotalUnits
es la segunda variable en su contrato, y las variables se numeran a partir de cero.
José
SCBuergel
constant
?JC_92