Как вы предоставляете GasPrice и GasLimit для преодоления сообщения журнала «Низкий одноразовый номер tx или недостаточно средств»

Я получаю следующее, зарегистрированное моим узлом geth приватной цепи при запуске теста в трюфеле:

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

Код теста выглядит следующим образом:

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

});

Я подтвердил, что GasPrice и GasLimit отражают значения, предоставленные в тесте, и что предоставление их в объекте в качестве последнего аргумента функции контракта является правильным.

На счетах [0] достаточно средств, поэтому я не знаю, почему это происходит.

Ответы (1)

Сообщение low tx nonce or out of fundsоб ошибке означает, что либо у вас недостаточно средств для покрытия всех указанных вами потребностей в газе (т. е. лимит газа * цена газа); или что одноразовый номер, с которым вы отправляете транзакцию, меньше, чем тот, который уже используется вашей отправляющей учетной записью.

Возможно, зарегистрируйте все транзакции, которые вы выдаете, и проверьте, не создает ли трюфель по какой-то причине несколько транзакций с одним и тем же одноразовым номером. Это может объяснить проблемы, которые вы видите.

После того, как я задал этот вопрос, я пошел дальше и получил свой полный контракт, работающий с Geth (Geth/v1.4.0-rc-8241fa52), но эта жалоба продолжает поступать по всем моим контрактным транзакциям. Однажды было сообщено о проблеме github.com/ethereum/go-ethereum/issues/1368 . Может быть, оно вернулось.