Должен ли правильный одноразовый номер транзакции быть на единицу меньше, чем количество транзакций по счету?

Я пытаюсь решить вопрос «Почему я получаю сообщение «удалено tx из пула: низкий одноразовый номер tx или нет средств»?» проблема в моей частной тестовой сети.

Кажется, у меня достаточно средств, однако одноразовый номер отклоненной транзакции всегда на единицу меньше, чем количество транзакций отправляющего адреса:

I0427 16:02:49.456986   84576 tx_pool.go:492] removed tx (
    TX(cf149f29fdb9ee3fe4f6b3907d396e8fd5abc832e21ee5453c9702003b5fd62a)
    Contract: false
    From:     db575481f1d1b626b9a0ee2f2c6946b3f6526cd4
    To:       [contract creation]
    Nonce:    6
    GasPrice: 20000000000
    GasLimit  1062420143
    Value:    0
    Data:     0x
    V:        0x1c
    R:        0x7832879e31c8c679779c34f0004a38e3e64848ce9a92757cebb11d792ccb1435
    S:        0x28d0b672e4b904d972d221df2c53250a9884b13142a63c9be193537557b241ea
    Hex:      f852068504a817c800843f533eaf8080801ca07832879e31c8c679779c34f0004a38e3e64848ce9a92757cebb11d792ccb1435a028d0b672e4b904d972d221df2c53250a9884b13142a63c9be193537557b241ea
) from pool: low tx nonce or out of funds



> eth.getTransactionCount("db575481f1d1b626b9a0ee2f2c6946b3f6526cd4") 
7
> eth.getBalance("db575481f1d1b626b9a0ee2f2c6946b3f6526cd4");
7.4699999999999996e+21

Согласованы ли здесь одноразовый номер tx и количество транзакций?

Если одноразовый номер нулевой индекс, то я предполагаю, что они есть. Если это так, я понятия не имею, почему я получаю это сообщение об ошибке. Это сводит меня с ума. Кто-нибудь может помочь?

Является ли ваш адрес db575481f1d1b626b9a0ee2f2c6946b3f6526cd4 и вы находитесь в основной сети? Поскольку я не вижу никаких транзакций для этой учетной записи, поэтому одноразовый номер должен быть равен 0.

Ответы (2)

Да, одноразовый номер нулевой индекс. Учитывая, что он имеет нулевой индекс и у вас есть 7 выполненных транзакций, это означает, что последним использованным одноразовым номером было 6. Таким образом, следующим допустимым значением, необходимым для того, чтобы пул принял его, является 7 (т.е. то же самое, что и eth.getTransactionCount).

Большое спасибо @Péter. В этом случае и мои средства, и nonce кажутся в порядке. У вас есть идеи, почему еще мои транзакции могут быть удалены?
В приведенном выше примере одноразовый номер удаленной транзакции равен 6, тогда как согласно моему объяснению он должен быть равен 7.
Вы подразумеваете, что количество транзакций не должно увеличиваться, если транзакция удалена, т.е. неудачна? Что касается вопроса, количество транзакций до того, как я отправил неудачную транзакцию выше, действительно было 6 (то же самое, что и одноразовый номер). Количество моих транзакций увеличивается, даже когда транзакции «удаляются».
Количество транзакций — это количество успешно выполненных транзакций. (если вы не запрашиваете количество ожидающих транзакций, которое вы не превышаете). Так что, если он говорит 7, то многие транзакции со счета уже включены в блокчейн.

Этот комментарий к аналогичному вопросу дал ответ на вторую часть этого вопроса - почему транзакции удаляются, когда одноразовый номер и средства действительны?

Похоже, что, несмотря на это сообщение об ошибке, моя транзакция ДЕЙСТВИТЕЛЬНО добыта успешно. Это можно проверить, получив квитанцию ​​о транзакции для якобы «удаленной» транзакции.

К вашему сведению: я использую geth v1.3.6