Ich habe einen Vertrag, der diese Funktion hat:
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;
}
Wenn ich diese Funktion in der Truffle-Konsole mit diesem Befehl aufrufe:
Svd.then(function(instance) {return instance.registerSensor("Miner", "MH/s", "Desk"); })
dann funktioniert alles gut, der Sensor wird dem Adressen-Array hinzugefügt.
Wenn ich versuche, dasselbe in der Geth-Konsole zu tun, passiert nichts, der Sensor wird nicht zum Adressen-Array hinzugefügt. Ich kann sehen, dass die Transaktion gesendet wurde, und ich erhalte auch eine Transaktions-ID.
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);
})
Übersehe ich etwas?
Ok, das Problem war, dass ich kein Gaslimit definiert habe, also funktioniert es nach dem Hinzufügen der maximalen Gasmenge endlich:
svd.registerSensor("Node 1", "C", "Desk", {from: web3.eth.accounts[0], gas:3000000})
:), scheint, als würde Trüffel das Gaslimit automatisch hinzufügen