0

问题:

我们有一个运行服务的服务器集群。该服务将交易从一个地址广播到许多不同的地址。现在的问题是,它们是并行工作的。这意味着,他们总是需要知道下一个有效的随机数。有时,服务会尝试使用过高的 nonce 广播交易。例如,假设地址“0xabc...”的最后一笔交易的随机数为 100。现在一个服务尝试广播一个随机数为 102 的原始交易,而不是像这样的有效 101:

web3j.ethSendRawTransaction(rawMessageWithNonce102).send();

问题:

有什么方法可以检测到问题吗?web3j 当然不会在这里出错,因为最初 tx 进入了 tx 池。但一段时间后,它从那里删除。如何在我的 java 应用程序中检测到“nonce 太高问题”?有任何想法吗?提前致谢!

4

1 回答 1

0

不确定如何检测到它,但您可以缓存当前的随机数,即。在 Redis 中,然后在发送交易时检查该值。发送事务后,更新随机数,每个服务器将共享相同的缓存实例。

于 2019-02-04T09:23:10.930 回答