本篇内容主要讲解“怎么用一个交易给多个地址转以太币或ERC20代币”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用一个交易给多个地址转以太币或ERC20代币”吧!
基本的思路是使用一个智能合约,把目标地址作为参数传入智能合约的方法,让合约来帮我们执行交易:由于我们只需要调用一次合约的方法,因此只需要支付一次交易gas费用,智能合约的内部交易则不需要支付手续费。
整个交易流程看起来是这样:
| |---transfer---> address 1# |---transfer---> address 2# DApp --multiTransfer--> Contract --|.... |.... |---transfer---> address N# |
下面是以太币一对多交易的合约实现代码:
pragma solidity ^0.4.18; contract WizSendContract{ //一对多以太币转账事件 event MultiTransfer( address indexed _from, uint indexed _value, address _to, uint _amount ); //一对多以太币转账方法 function multiTransfer( address[] _addresses, uint[] _amounts ) payable public{ uint toReturn = msg.value; for (uint i = 0; i < _addresses.length; i++) { _addresses[i].transfer(_amounts[i]); toReturn = toReturn - _amounts[i]; MultiTransfer(msg.sender, msg.value, _addresses[i], _amounts[i]); } _safeTransfer(msg.sender, toReturn); } }
注意:这是一个教学目的的概念验证/PoC代码,请勿直接应用于生产环境。
下面是以太坊ERC20代币一对多交易的合约实现代码:
pragma solidity ^0.4.18; //引入ERC20定义 import "erc20.sol"; contract WizSendContract{ //一对多代币转账事件 event MultiERC20Transfer( address indexed _from, uint indexed _value, address _to, uint _amount, ERC20 _token ); //一对多代币转账方法 function multiERC20Transfer( ERC20 _token, address[] _addresses, uint[] _amounts ) public { for (uint i = 0; i < _addresses.length; i++) { _token.transferFrom(msg.sender, _addresses[i], _amounts[i]); MultiERC20Transfer( msg.sender, msg.value, _addresses[i], _amounts[i], _token ); } } }
注意:这是一个教学目的的概念验证/PoC代码,请勿直接应用于生产环境。
到此,相信大家对“怎么用一个交易给多个地址转以太币或ERC20代币”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。