У меня есть этот код, который работает:
MyToken.airdrop(wallets,amounts,{
gas: 1267051,
gasPrice: 2000000000,
},function(err,tx){
console.log('err is %s',err)
console.log('tx is %s',tx)
callback(err,tx)
})
Теперь предположим, что я хочу контролировать nonce
себя ( причина здесь ), поэтому я делаю:
MyToken.airdrop(wallets,amounts,{
gas: 1267051,
gasPrice: 2000000000,
nonce: 432 // = web3.eth.getTransactionCount() + 1
},function(err,tx){
console.log('err is %s',err)
console.log('tx is %s',tx)
callback(err,tx)
})
Я получаю хэш tx в качестве вывода, а не ошибку , но транзакция не может быть найдена на соответствующем etherscan, кажется, она никогда не отправляется в сеть. Пробовал на Ринкеби, Ропстене и Коване.
В чем может быть проблема с указанием nonce
себя или того, как я это делаю?
Примечание. Я использую infura
как «узел».
По-видимому, есть нюанс с одноразовым номером... моя ошибка заключалась в том, что я установил одноразовый номер на web3.eth.getTransactionCount() + 1, что оставило разрыв между одноразовым номером предыдущей транзакции и одноразовым номером следующей транзакции ( одноразовые номера индексируются 0, транзакции индексируются от 1 , это корень ошибки). Получается, что вам не разрешено увеличивать одноразовый номер на 2 и оставлять пробел. Должен быть последовательным.
Ксавье Лепретр B9lab
Вигнеш Картикеян
Сенджу