Contract-Invocation

使用 eth 初始化後使用 this.balance 呼叫時,Ropsten 合約不發送任何內容

  • July 11, 2018

這是我的程式碼:

contract Oust {
   address kingdom = 0x344d65e66a9c4f8d7911bf7433b509d6daac9bc0;
 function Oust() public payable {

 }    

 function take() public {

     kingdom.call.value(this.balance);
 }

我在 Ropsten 上用 1.5 eth 初始化它,但是當呼叫“take”時,交易是用 0 值進行的}

而不是 1.5:

https://ropsten.etherscan.io/address/0x31ee35d188c3f7ced8c4af85de55392e3946a705

這條線實際上並沒有做任何事情:

kingdom.call.value(this.balance);

它應該是:

kingdom.call.value(this.balance)();

或者更好:

kingdom.transfer(address(this).balance);

this.balance不贊成使用address(this).balance,並且transfer優於 ,call因為revert如果傳輸失敗。

引用自:https://ethereum.stackexchange.com/questions/53106