Contract-Development
solidity 發送乙太幣不起作用
我正在嘗試測試此範常式式碼:
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。