返回介绍

2.7. 批量转账遇到的问题与解决方案

发布于 2023-06-19 14:14:33 字数 1196 浏览 0 评论 0 收藏 0

2.7. 批量转账遇到的问题与解决方案

有时我们需要将Token发送到多个地址上去。通常的做法就是使用web.js写一个循环程序,但是实际使用过程中发现这种做法存在很多问题,常会发生转账失败情况。

经过分析造成发送失败原因是,频率太高,因为web.js 是异步操作,当前程序还未完成交易,交易尚未确认的情况下第二笔交易发送出去,这时就会出错。

		
web3.eth.getTransactionCount(from).then(function(nonce){
	// 问题就出在 nonce , nonce 如同数据库中的序列主键,如果上一个交易没有完成,下一个交易取得 nonce + 1 后与上一个 pending 的交易相同,产生冲突
}		
		
		

最好的解方案是在合约中实现批量转账功能,这样需要一个交易 txhash 完成多比交易。

如果你的Token已经在使用了,且没有批量转账的功能怎么解决呢?我们可以在写一个Token 继承原来的Token,在新的 Token 中实现批量转账功能

		
Function: batchTransfer(address[] _to, uint256[] _value)

MethodID: 0x88d695b2
[0]:  0000000000000000000000000000000000000000000000000000000000000040
[1]:  00000000000000000000000000000000000000000000000000000000000000a0
[2]:  0000000000000000000000000000000000000000000000000000000000000002
[3]:  000000000000000000000000372967130b1a7cd386348bc59de905e628e36f3a
[4]:  000000000000000000000000372967130b1a7cd386348bc59de905e628e36f3b
[5]:  0000000000000000000000000000000000000000000000000000000000000002
[6]:  000000000000000000000000000000000000000000000000000000000000000c
[7]:  0000000000000000000000000000000000000000000000000000000000000022		
		
		
		
		
		
		

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文