试试批量转帐合约 / 学习智能合约#17

in STEEM CN/中文6 years ago

onetomany.jpg

当你同时需要向不同的用户转帐时,批量转帐合约就有了它的应用场景。批量化在不少语言中就是一个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才能调用合约。

如果是批量转帐代币也是并不多思路,只是调用的方法不太一样而已,大家可以自行尝试。

Coin Marketplace

STEEM 0.05
TRX 0.32
JST 0.079
BTC 66499.01
ETH 1815.08
USDT 1.00
SBD 0.42