Ошибка от sendSignedTransaction: Ошибка: Возвращенная ошибка: замещающая транзакция занижена

Я новичок в Ethereum, мне нужно руководство, пожалуйста, помогите. Я использую частную сеть ethereum и использую туманный кошелек, вот мой код контракта.

pragma solidity ^0.4.0;

contract MyFirstContract {
    uint256 counter =0;

    function increase() public {
        counter++;
    }

    function  decrease() public{
        counter--;
    }

    function getCounter() public constant  returns (uint256) {
        return counter;
    }
}

значение счетчика не менялось, когда я нажимаю кнопку «Выполнить » ,increment или значение счетчика функции не менялось после decrementмногих попыток. Я получил это сообщение об ошибке . сделкаError from sendSignedTransaction: Error: Returned error: replacement transaction underpriced

web3.eth.pendingTransactions();

[{
    blockHash: null,
    blockNumber: null,
    from: "0x4f7f384236f79a5e3322e33cc7bb2ccd5143a87c",
    gas: 188189,
    gasPrice: 18000000000,
    hash: "0x193d30297d98ad9da5958e6295d61bf333050cec901601ccdbf83e9c0b1cb082",
    input: "0x60806040526000805534801561001457600080fd5b5060ea806100236000396000f30060806040526004361060525763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166313bdfacd81146057578063d732d95514607b578063e8927fbc14608f575b600080fd5b348015606257600080fd5b50606960a1565b60408051918252519081900360200190f35b348015608657600080fd5b50608d60a7565b005b348015609a57600080fd5b50608d60b3565b60005490565b60008054600019019055565b6000805460010190555600a165627a7a7230582094d5704152e41ee1cb7ab5b820a49845ec5652e2c9c442a8d55da756f6d5cda60029",
    nonce: 10,
    r: "0x34fa67311a0a29d31139a425c2ab120033d4ab34a6d1a860d6c806f95412f7af",
    s: "0x7d831f773e541f73a2371be911ec29b36d803db414ab4712007c4b00d4f10be9",
    to: null,
    transactionIndex: 0,
    v: "0x1b",
    value: 0
}]

поэтому я увеличил объявление web3.eth.getTransactionCount("0x4f7f384236f79a5e3322e33cc7bb2ccd5143a87c")+1; 11

после этого я снова пытаюсь выполнить транзакцию, но снова получаю эти сообщениявведите описание изображения здесь

Ответы (1)

Nonces индексируются с 0, транзакции индексируются с 1 . В этом посте упоминается:

По-видимому, есть нюанс с одноразовым номером... моя ошибка заключалась в том, что я установил одноразовый номер на web3.eth.getTransactionCount() + 1, что оставило разрыв между одноразовым номером предыдущей транзакции и одноразовым номером следующей транзакции (одноразовые номера индексируются 0, транзакции индексируются от 1, это корень ошибки). Получается, что вам не разрешено увеличивать одноразовый номер на 2 и оставлять пробел. Должен быть последовательным.

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

var firstNonce = web3.eth.getTransactionCount(yourSender);.

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

не могли бы вы уточнить, что я должен сделать в качестве примера, поскольку я новичок, мне трудно понять это
@swaheed Я отредактировал его, чтобы включить больше деталей. Кроме того, если вы используете infura, убедитесь, что вы вызываете getTransactionCount только один раз и вручную отслеживаете увеличение одноразового номера.