Wie stellen Sie einen GasPrice und ein GasLimit bereit, um die Protokollmeldung „Low tx nonce or out of funds“ zu umgehen?

Ich erhalte Folgendes, das von meinem Private-Chain-Geth-Knoten protokolliert wird, wenn ich einen Test in Trüffel ausführe:

removed tx (
    TX(ff8ec4f713e64fb25df07d153607e29629c9276b57e0b7e331f17b5a3c31fdd1)
    Contract: false
    From:     d90b704c738b49ff50741bd887334e49d8f277f1
    To:       [contract creation]
    Nonce:    520
    GasPrice: 18000000010
    GasLimit  3200000
    Value:    0
    Data:     0x606060405..........
    V:        0x1b
    R:        0x5b......
    S:        0xe09017.......
    Hex:      f901c3.......
) from pool: low tx nonce or out of funds

Der Testcode lautet wie folgt:

contract('MyContract', function (accounts) {

    it("should be able to set a value", function (done) {

        var myContract = MyContract.deployed();

        myContract.setValue("aStringValue", 2, {from: accounts[0],gas: 3200000, gasPrice: 18000000010}).then(
            function (tx_id) {
                return zone.isValueSet.call("aStringValue");
            }).then(
            function (_bool) {
                assert.isTrue(_bool, "value not set");
                done();
            }).catch(done);
    });

});

Ich habe bestätigt, dass der GasPrice und das GasLimit die im Test bereitgestellten Werte widerspiegeln und dass die Bereitstellung in einem Objekt als letztes Argument für die Vertragsfunktion korrekt ist.

Es gibt genügend Guthaben auf den Konten[0], daher weiß ich nicht, warum dies geschieht.

Antworten (1)

Die low tx nonce or out of fundsFehlermeldung bedeutet, dass Sie entweder nicht über genügend Guthaben verfügen, um den gesamten von Ihnen angegebenen Gasbedarf (z. B. Gaslimit * Gaspreis) zu decken; oder dass die Nonce, mit der Sie die Transaktion senden, niedriger ist als die, die bereits von Ihrem sendenden Konto verwendet wird.

Protokollieren Sie möglicherweise alle Transaktionen, die Sie ausgeben, und prüfen Sie, ob Truffle aus irgendeinem Grund mehrere Transaktionen mit derselben Nonce erstellt. Das könnte die Probleme erklären, die Sie sehen.

Seitdem ich diese Frage gestellt habe, bin ich weitergezogen und habe meinen vollständigen Vertrag auf Geth (Geth/v1.4.0-rc-8241fa52) zum Laufen gebracht, aber diese Beschwerde wird weiterhin bei allen meinen Vertragstransaktionen gemeldet. Es wurde einmal ein Problem gemeldet github.com/ethereum/go-ethereum/issues/1368 . Vielleicht kam es zurück.