当你同时需要向不同的用户转帐时,批量转帐合约就有了它的应用场景。批量化在不少语言中就是一个for循环,但在智能合约中使用for循环可能就会有不少的大坑了。所以,在设计时要多参考,多测试。
先看看代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| pragma solidity >=0.4.22 <0.7.0;
contract TransferMany { constructor() payable public { } receive() external payable { } fallback () external payable { } function transferEths(address payable[] memory _tos) payable public returns (bool) { require(_tos.length > 0); // require(msg.sender == owner); for(uint32 i=0;i<_tos.length;i++){ _tos[i].transfer(1 ether); } return true; } }
|
总体来讲,先将以太币传入合约,再调用合约批量转帐。新版的Solidity是使用receive
接收以太币,业务逻辑中同样是使用for来完成批量业务。在生成合约时最好加上权限,只有owner才能调用合约。
如果是批量转帐代币也是并不多思路,只是调用的方法不太一样而已,大家可以自行尝试。
This page is synchronized from the post: ‘试试批量转帐合约 / 学习智能合约#17’