¿Cómo puede geth acceder a las variables del contrato a través de la consola?

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.jscall_function.js
En la última fila comentada, puede ver el valor que quiero imprimir (100).

ingrese la descripción de la imagen aquíMonedero de niebla

ingrese la descripción de la imagen aquí

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.

0x2c1e75ec... es la función que está enviando, no el resultado de la función
proporcione el código del contrato; de lo contrario, es difícil de depurar. por ejemplo: es la función que usted llama constant?
@ValidityLabs-Sebastian actualizo el código en el código del contrato. Gracias.

Respuestas (2)

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.uint256submitUnits

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);
});
Sí entendí @Ismael, pero con la transacción siempre puedo enviar valores a mi contrato. Lo que estoy buscando es a través de la consola geth acceder a la variable TotalUnits. ¿Cómo puedo devolver el valor de la Transacción? He actualizado la publicación con el contrato de billetera.
web3.eth.getStorageAt (address, position)

Aquí addressestá la dirección de su contrato inteligente, y positiones la posición de la variable de estado, en su caso posición = 1 porque TotalUnitses la segunda variable en su contrato, y las variables se numeran a partir de cero.