问题是:
我们有一个运行服务的服务器集群。该服务将事务从一个地址广播到多个不同的地址。现在的问题是,它们是并行工作的。这意味着,他们总是需要知道下一个有效的nonce。有时会发生这样的情况,一个服务试图用nonce广播一个事务,这个值太高了。例如,假设地址为"0xabc...“的最后一个事务。有现时值100。现在,一个服务尝试广播一个原始事务,其nonce为102,而不是有效的101,如下所示:
web3j.ethSendRawTransaction(rawMessageWithNonce102).send();问题是:
有什么方法可以检测到这个问题吗?web3j当然不会通过这里的错误,因为最初tx进入tx池。但过了一段时间,它从那里被删除了。如何在我的java应用程序中检测到“过高的随机数问题”?有什么想法吗?提前感谢!
发布于 2019-02-04 17:23:11
不确定你如何检测它,但你可以缓存当前的nonce,即。在Redis中,然后在发送事务时检查该值。发送事务后,更新nonce,每个服务器将共享相同的缓存实例。
https://stackoverflow.com/questions/54494730
复制相似问题