Solidity

退還儲存在合約中的乙太幣

  • December 9, 2018

我正在嘗試將 Ether 儲存在契約中並在呼叫函式 paypackEther() 時將其退還。在帶有 JavaScript VM 的 Remix IDE 內部,它執行良好,但是當我使用 Mist 在 Rinkeby 上執行它時,我無法獲得儲存的乙太幣。這讓我瘋了…

我的錯誤是什麼?

pragma solidity ^0.4.24;

contract SimpleContract {


function () public payable  {
}

constructor() payable  public {
}

function paybackEther() public  {
   selfdestruct(msg.sender);
}

}

合約地址為:0x0b5933fd3D33F7d79C0e19e12A070fafA053Df57 https://rinkeby.etherscan.io/address/0x0b5933fd3d33f7d79c0e19e12a070fafa053df57

提前致謝 :)

我剛剛查看了您的交易,發現您根本沒有呼叫該paybackEther()函式:

所有這些交易都會向合約發送 0 個乙太幣和 0 個字節的數據。呼叫paybackEther()將向合約發送 4 個字節的數據。

嘗試在 Mist 中呼叫該函式時,您很可能做錯了什麼。我不知道是什麼,因為我無法在您的螢幕上查看您正在按下哪些按鈕 :)

我找到了一個答案,但它不是很“乾淨”:似乎 Mist 在函式 paybackEther 中需要一個輸入參數……

pragma solidity ^0.4.24;

contract SimpleContract {

bool public finished;

function () public payable  {
}

constructor() payable  public {
}

function paybackEther(bool newfinished) public  {

finished = newfinished;        
selfdestruct(msg.sender);
}

}

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