如何在 web3js 中进行多笔交易

Posted

技术标签:

【中文标题】如何在 web3js 中进行多笔交易【英文标题】:How to make multiple transaction in web3js 【发布时间】:2018-09-12 10:04:05 【问题描述】:

我知道 web3js 的 web3.eth.sendSignedTransaction() 用于发送交易并作为回报给我们交易哈希。但是当我想在一个循环中进行多个事务时。它给了我这样的错误

1 - Transaction known
2 - duplicate transaction
3 - error

那么我怎样才能进行多笔交易以发送可以循环运行的令牌。导致此问题的主要问题是 nounce(最后挖掘交易的交易计数)。交易没有被挖掘,我们给他们多个交易,因此我们得到相同的通知结果,导致所有这些错误。但是有一些方法可以发送多个交易。因为当我在 myetherwallet 或 metamask 中执行相同的任务时,它可以发送多个交易。

【问题讨论】:

增加nonce效果很好,但你需要使用web3.eth.accounts.signTransaction而不是web3.eth.sendSignedTransaction 【参考方案1】:

只需在您发送的每笔交易中增加随机数。

【讨论】:

如果中间有任何交易失败怎么办。表示 5 工作 6 没有工作 7 再次工作 随机数仍然需要增加,如果这就是你的要求。 增加 nounce 不起作用。该交易未添加到区块链中。在 etherscan 中,我收到消息,因为找不到交易。虽然我在 web3js 中收到了事务哈希。 您需要在问题中提供更多信息(例如您的代码)。 参考此链接ethereum.stackexchange.com/questions/24828/… 在 Web3js 中,我正在运行要处理的地址和值的 forEach 循环。 web3.eth.getTransactionCount().then((lastTransactionCount)=> object.forEach(function(obj,index) var a = obj.address; var b = obj.value; newCount = lastTransactionCOunt + index web3.eth。 sendSignedTransaction() ) 我希望上述代码的逻辑有所帮助。

以上是关于如何在 web3js 中进行多笔交易的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 web3js 交易设置 Eth 价格

Web3j如何获得交易状态

Web3j:获取使用交易哈希传输的交易令牌的价值

如何通过 web3js 在solidity 中建立一个大的字符串数组

web3j - 从签名交易中获取交易详情(金额、gas 价格、gas 限制)

如何使用 web3 js 通过地址获取令牌交易列表