前几天fcoin的空投把eth堵得不成样,看见好几个竟然是一个个地transfer转账,但是实际上如果用合约实现批量转账,不管是成功率还是效率都会高很多,还省gas。
本文讲解如何用合约实现批量转账
既然是用合约实现,首先先写合约
pragma solidity ^0.4.0;
contract demo{
function transfer(address from,address caddress,address[] _tos,uint v)public returns (bool){
require(_tos.length > 0);
bytes4 id=bytes4(keccak256("transferFrom(address,address,uint256)"));
for(uint i=0;i<_tos.length;i++){
caddress.call(id,from,_tos[i],v);
}
return true;
}
}
合约代码并不复杂,最关键的一点是用到了solidity中对地址的操作(此处有详细解释),在合约中call另一个合约,首先得知道要调用的是哪一个函数,因为是批量转账,这里用transferFrom函数,注意为什么不用transfer呢?因为这里发起交易的主体是合约地址,而不是原来的账户地址,我们可以看看t