Metamask

Metamask 中的應付函式

  • January 28, 2022

請分享您使用 Metamask/ether.js 互動的經驗。我創建了一個支付函式,並且像往常一樣在 Remix 或 Etherscan 中我們可以直接與合約互動(我們有輸入將值放入其中)。當我在安全帽上部署相同的契約時,什麼也沒有發生。我無法理解要採取的步驟。假設我有一個功能:

function setGreeting(string memory _greeting) public payable {
   greeting = _greeting;
   require(msg.value == 5, "Need more money");
   }
}

部署後,Metamask 沒有要任何錢,我知道我錯過了一些重要的事情。我已經附加了部署部分並在反應模板中呼叫了該函式。

在此處輸入圖像描述

在此處輸入圖像描述

謝謝!

我看到你正在使用 React,我也使用 Metamask 做了一個類似的項目,我使用了eth_requestAccounts,正如你在我的程式碼中看到的那樣,基本上你呼叫簽名者並等到你有一個:

       await window.ethereum.request({ method: 'eth_requestAccounts' });
       const signer = provider.getSigner();
       await signer;

然後你需要呼叫與那個簽名者的契約,在我的例子中,我使用了connect,像這樣:

await contract.connect(signer).deposit(/*arguments*/, {value: ethdeposit});

這就是要提示 Metamask 的內容,您可以在我發送的連結上查看完整的實現。您可以在此處查看有關如何使用 Metamask 提供程序的更多資訊。

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