1. 程式人生 > >solidity智慧合約[25]-轉賬的3種方式與比較

solidity智慧合約[25]-轉賬的3種方式與比較

轉賬的3種方式

1
2
3
address.transfer()
address.send()
address.call.value().gas()()

轉賬transfer

1
2
3
4
5
6
7
8
9
10
function transfer(address _address) public payable{

    _address.transfer(msg.value);

}

 function transfer2(address _address) public payable{
    _address.transfer(10
* 10**18);


}

轉賬send

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

轉賬call

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

}

對比總結

1
2
3
4
5
6
transfer與send相似,都為轉賬操作
transfer出錯丟擲異常
send、call出錯不丟擲異常,返回true或false
tansfer相對send更安全
send、call即便轉賬失敗也會執行其後的程式碼
慎用call函式轉賬,容易發生重入***。

image.png