Web3j
web3j 和 rinkeby 的 nonce 錯誤太低
由於低隨機數錯誤,我在測試網上的應用程序突然停止工作。原始碼沒有變化。我的應用程序通過 infura 連接到網路。任何想法這裡可能有什麼問題。
java.lang.RuntimeException: Error processing transaction request: nonce too low 57879 at org.web3j.tx.TransactionManager.processResponse(TransactionManager.java:67) ~[core-3.3.1.jar!/:na] 57880 at org.web3j.tx.TransactionManager.executeTransaction(TransactionManager.java:51) ~[core-3.3.1.jar!/:na] 57881 at org.web3j.tx.ManagedTransaction.send(ManagedTransaction.java:83) ~[core-3.3.1.jar!/:na] 57882 at org.web3j.tx.Transfer.send(Transfer.java:65) ~[core-3.3.1.jar!/:na] 57883 at org.web3j.tx.Transfer.lambda$sendFunds$2(Transfer.java:97) ~[core-3.3.1.jar!/:na] 57884 at org.web3j.protocol.core.RemoteCall.send(RemoteCall.java:30) ~[core-3.3.1.jar!/:na] 57885 at bitmovio.service.blockchain.manager.WalletManager.makeExternalPaymentForRecurringWithdrawl(WalletManager.java:1331) [classes!/:1.0-SNAPSHOT] 57886 at bitmovio.service.blockchain.manager.WalletManager.settleMonthlyRecurringWithdrawl(WalletManager.java:1162) [classes!/:1.0-SNAPSHOT] 57887 at bitmovio.service.blockchain.manager.WalletManager$$FastClassBySpringCGLIB$$76b35353.invoke(<generated>) [classes!/:1.0-SNAPSHOT] 57888 at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) [spring-core-5.0.7.RELEASE.jar!/:5.0.7.RELEASE] 57889 at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746) [spring-aop-5.0.7.RELEASE.jar!/:5.0.7.RELEASE] 57890 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) [spring-aop-5.0.7.RELEASE.jar!/:5.0.7.RELEASE] 57891 at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport
您在交易中提供的隨機數已經在區塊鏈上用於該地址。
每個乙太坊地址都有一個從零開始的隨機數,每次新交易增加一。
當您在建構交易時給出隨機數時,它與乙太坊區塊鏈本身的地址不匹配。
解決方案是從區塊鏈同步隨機數,並在創建交易時始終使用下一個免費隨機數。
這對你來說是如何發生的還不清楚,因為這個問題沒有任何原始碼給出你試圖做的事情的上下文。
FastRawTransactionManager將初始化為最新確認的 nonce。並且只會在該實例發送新事務時增加隨機數。
如果另一個實例發送一個新事務,nonce 將不會被更新。您必須明確呼叫
resetNonce
orsetNonce
。也可能是您的應用程序正在重新啟動並且有待處理的事務。並且隨機數初始化不正確。