Tengo un contrato que tiene esta función:
function registerSensor(bytes32 name, bytes32 unit, bytes32 location) returns (bool success)
{
sensors[msg.sender].exists = true;
sensors[msg.sender].name = name;
sensors[msg.sender].unit = unit;
sensors[msg.sender].location = location;
addresses.push(msg.sender);
return true;
}
Si llamo a esta función en la consola de trufas con este comando:
Svd.then(function(instance) {return instance.registerSensor("Miner", "MH/s", "Desk"); })
entonces todo funciona bien, el sensor se agrega a la matriz de direcciones.
Si trato de hacer lo mismo en la consola geth, entonces no pasa nada, el sensor no se agrega a la matriz de direcciones. Puedo ver que la transacción se envía y también obtengo una identificación de transacción.
var svd = web3.eth.contract([{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"getSensorData","outputs":[{"name":"data","type":"bytes32[]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getSensorAddresses","outputs":[{"name":"addr","type":"address[]"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"name","type":"bytes32"},{"name":"unit","type":"bytes32"},{"name":"location","type":"bytes32"}],"name":"registerSensor","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"getSensorMetaData","outputs":[{"name":"name","type":"bytes32"},{"name":"unit","type":"bytes32"},{"name":"location","type":"bytes32"}],"payable":false,"type":"function"},{"inputs":[],"payable":true,"type":"constructor"}]).at('0x27517492524152c925061648b15d78d451bbd04b')
svd.registerSensor("Node 1", "C", "Desk", {from: web3.eth.accounts[0]}, function(err, result) {
console.log(err);
console.log(result);
})
Aquí está la salida de la consola:
¿Me estoy perdiendo de algo?
Ok, el problema fue que no definí un límite de gas, así que después de agregar la cantidad máxima de gas, finalmente funciona:
svd.registerSensor("Node 1", "C", "Desk", {from: web3.eth.accounts[0], gas:3000000})
:), parece que la trufa agrega el límite de gas automáticamente