Funktion kann nicht aufgerufen und Write-Transaction von der Geth-Konsole gesendet werden

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);
})

Hier die Ausgabe der Konsole:Geben Sie hier die Bildbeschreibung ein

Übersehe ich etwas?

Antworten (1)

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