Solidity 合约转账的三种方式

参考

http://blog.51cto.com/13784902/2321573

原理

address.transfer()
address.send()
address.call.value(转账的金额).gas(转账最大允许支付的gas)(调用的ABI编码参数)

  1. transfer 没有返回值,出错抛出异常,send、call出错不抛出异常,返回true或false

  2. tansfer相对send更安全,发生错误会回滚状态(比如执行 匿名函数的时候),但是send只会返回false,另外这2个函数都需要花费2300gas

function transfer(address _address) public payable{
     _address.transfer(msg.value);
 }

function transfer4(address _address) public payable {
       _address.send(10 ether);
 }

function transfer5(address _address) public payable returns(bool){
    return  _address.call.value(10 ether)();
}

你可能感兴趣的:(Solidity 合约转账的三种方式)