如何处理 RSK 中的"transaction nonce too high"错误?



我在RSK上部署了一个分散的应用程序,并且已经工作了几个月。使用公共节点,一切都能正常工作,然而,很少会出现完全随机的错误:

Unknown Error: { 
"jsonrpc": "2.0", 
"id": 2978041344968143, 
"error": { 
"code": -32010, 
"message": "transaction nonce too high" 
} 
}

没有关于"太高"的信息,但有很多关于"太慢"的线程。我用的是web3.Contract.method.send()

在Metamask中,确保您在开发/测试帐户上:

1点击头像右上角的圆圈2在菜单中,选择"设置"3单击"高级"。4向下滚动一点,再次确保你是在你的测试网帐户,点击重置帐户

同一地址在事务池中的事务数是有限制的。

这个限制是4RSK,在TxValidatorNonceRangeValidator中定义rskj代码库:

BigInteger maxNumberOfTxsPerAddress = BigInteger.valueOf(4);

请注意,以太坊有类似的限制,而是中配置的限制geth10是.因此,如果我们已经发送了4笔尚未被挖掘的交易,并在下一个区块被挖掘之前发送了第5笔交易,它将得到一个错误,即nonce过高。如果一个区块被挖掘,并且它有所有4个交易,那么我们将能够为下一个区块添加最多4个交易。

工作区

(1)从一个地址发送不超过4笔交易,直到出现一个新的区块。

(2)聚合所有调用,然后使用一个合约一次性执行它们。这方面的一个例子见于RNS Batch ClientExecuteRegistrations.

对于我来说,它发生在我重新启动节点时,下面的指令修复了它:

打开MetaMask窗口,点击右上角的图标显示账户。点击设置,然后点击高级,点击重置帐户。

相关内容

最新更新