识别太高的随机数



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

web3j.ethSendRawTransaction(rawMessageWithNonce102).send();

有什么方法可以检测问题吗?

web3j 当然不会在这里通过错误,因为最初 tx 会进入 tx 池。但一段时间后,它从那里删除了。

如何在我的 Java 应用程序中检测"太高随机数问题"?有什么想法吗?

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

最新更新