Contract-Development

無法使用 Remix 環境將 eth 發送到契約

  • September 3, 2017

我已按照solidity文件的步驟來執行備份功能的工作。我的程式碼如下。

pragma solidity ^0.4.0;

contract Test {
   uint x;

   function () payable {
   }
}

contract Send {
   function sendtest() returns(bool ) {
       Test t = new Test();
       bool res = t.send(100 ether);
       return res;
   }
}

t.send() 的結果是假的,不知道有什麼問題。我是用合約實例代替合約地址嗎?

這對我來說是混音,你只需要添加應付功能。在“100 ether”標籤上,使用 wei 被認為是最佳實踐(或 msg.value)

   pragma solidity ^0.4.0;

contract Test {
   uint x;

   function () payable {
   }
}

contract Send {

   function sendtest() payable returns(bool ) {
       Test t = new Test();
       require(msg.value>0);
       bool res = t.send(msg.value);
       return res;

   }

}

如果我沒聽錯的話,你想向你的合約發送乙太幣,對吧?試試這個程式碼。

pragma solidity ^0.4.0;
contract Test {
   function () payable {}
}
contract Send {
   function sendtest() payable(returns bool){
       bool res = this.address.send(msg.value);
       return res
   }
}

當您呼叫sendTest某個值時,該值將轉移到合約中。this指合約,因此this.address代表合約地址。

該行將this.address.send(msg.value)msg.value 傳輸到合約,並且該行function () payable {}允許合約接收乙太幣。

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