Solidity

Solidity - 智能合約 - 將 eth 從外部賬戶發送到智能合約

  • November 14, 2018

我閱讀了這個範例http://solidity.readthedocs.io/en/latest/solidity-by-example.html#simple-open-auction 以了解如何讓我的智能合約從外部帳戶接收 eth。看來我需要一個簡單的應付功能。因此,我在 Remix 上編寫了一個帶有簡單支付功能的合約,並使用 MetaMask(Ropsten 網路)對其進行測試,從我的外部賬戶向我的合約發送 1 個 eth。失敗,MetaMask 告訴我合約拋出異常。因此,我在合約中添加了一個備份功能,並再次嘗試發送 eth。有效!但是上面連結的範例並沒有告訴我我需要一個備份函式,而且我不能在備份函式中執行數據儲存(比如將 msg.value 和 msg.sender 儲存到變數中),因為它需要更多的氣體。有!

請幫我。我知道這是一個菜鳥問題,但我無法弄清楚。

極少數合約行: 在此處輸入圖像描述

錯誤: 在此處輸入圖像描述

謝謝大家!

問題是即使你payable的合約中有一個函式,你也沒有呼叫它。您必須直接呼叫該函式。如果您不直接呼叫任何特定函式(如果您只是使用 Metamask 發送 Ether,則會發生這種情況),則將呼叫回退函式(如果存在)。

不幸的是 Metamask 似乎不支持直接呼叫合約函式。您需要一些額外的工具(或不同的工具)。查看Metamask:例如,如何使用 Metamask 訪問/呼叫已部署合約的功能

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