大家都知道使用web3j实现以太坊的功能。
查询了很多文章,对于全自动发送交易的文章少之又少,尤其是一个账户同时发送多笔交易的方式。(容易 nonce to low 的错误)
这里我简单说说我的思路。
基本知识:
- 以太坊发送交易需要带上nonce
- 如果nonce 小于已经成功发送交易的nonce那么就会交易失败
- 每次交易成功后,获得的nonce就会相比之前的交易nonce多1 (其实交易就是自增的)
- 如果nonce大于现有交易,那么当前nonce的交易会等待前面的交易完成
单钱包实现多笔交易同时发送:
- 如果是内部账户,可以使用自己维护nonce自增的方式
- 使用 DefaultBlockParameterName.PENDING方式 ,一般来说这种方式能获取pending 交易的nonce.从而实现交易nonce自增
String address = /* 发送交易的地址 */;
BigInteger nonce = web3j.ethGetTransactionCount(address , DefaultBlockParameterName.PENDING).send().getTransactionCount();
如果使用web3j封装的方法进行交易,你根本就不知道TxHash,而且很容易出现网络超时的错误。而且当你发送多笔交易后,你根本就不知道自己有没有给那个地址打过币。
所