当我试图用相同的nonce和更高的煤气费替换交易时,我遇到了这个问题。例如,我使用DEX:中的交换函数
const tx1 = await contract.swapExactTokensForTokens( amountIn, amountOutMin, [TokenIn, TokenOut], AddressTo, deadline, {'gasPrice': gasPrice, 'gasLimit': gasLimit})
然后我尝试用tx1的nonce:替换事务
const tx2 = await contract.swapExactTokensForTokens( amountIn, amountOutMin, [TokenIn, TokenOut], AddressTo, deadline, {'gasPrice': gasPrice+1*10**9, 'gasLimit': gasLimit, 'nonce': tx1.nonce})
在这之后,我立即得到nonce_expired错误。我该如何继续?
可能是您的滑动过紧,请尝试设置更高的amountOutMin。对于nonce,您应该使用web3.utils.toHex(txCount(,其中txCount是web3.eth.getTransactionCount
在钱包中,每个交易都有不同的nonce,以防止重放攻击。https://ethereum.stackexchange.com/questions/84207/how-does-nonce-prevent-a-replay-attack-in-case-of-knowing-nonce-value