Contract-Development

solidity 發送乙太幣不起作用

  • September 28, 2017

我正在嘗試測試此範常式式碼:

contract MyContract {


function foo(address a) returns (uint) {

   // send ether with default 21,000 gas
   // likely causes OOG in callee
   a.send(1 ether);

   // send ether with all remaining gas
   // but no success check!
   a.call.value(1 ether)();

   // RECOMMENDED
   // send all remaining gas
   // explicitly handle callee throw
   if(a.call.value(1 ether)()) throw;
   return a.balance;
}

非常簡單,只需將 1 個乙太幣發送到特定地址,然後返回地址餘額,但是我總是得到 0 作為輸出,這意味著發送失敗:

在此處輸入圖像描述

怎麼了?

缺少的是應付修飾符。

我測試了這段程式碼:

contract MyContract {

function foo(address a) payable returns (uint) {
  a.call.value(1 ether)();
  return a.balance;
}
}

我部署了它,然後將 Value 設置為 2(即 2 Ether)執行,它可以工作。這是輸出: 在此處輸入圖像描述

輸出為 Wei 中的 1 ETH。

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