当你同时需要向不同的用户转帐时,批量转帐合约就有了它的应用场景。批量化在不少语言中就是一个for循环,但在智能合约中使用for循环可能就会有不少的大坑了。所以,在设计时要多参考,多测试。
先看看代码:
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才能调用合约。
如果是批量转帐代币也是并不多思路,只是调用的方法不太一样而已,大家可以自行尝试。