Ethers.js:"NONCE EXPIRED";替换事务时



当我试图用相同的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

最新更新