Solidity
如何使用 web3 和 infura 呼叫合約的函式
想像一下有以下程式碼:
pragma solidity ^0.8.9; contract Message { address myMessage; function setMessage() public { myMessage = msg.sender; } }
現在我知道 infura 不支持 eth_sendTransaction。我知道如何簽署交易並使用 web3 庫發送。
但是我唯一的困惑是,如何在交易本身中進行合約呼叫?我不想發送任何價值只是撥打契約電話。
請指教
使用ethers,您需要使用合約地址 + abi 和簽名者創建合約。
import <Your contract deployment address>; import <Your contract abi>; const connection = await new Web3Modal().connect(); const provider = new ethers.providers.Web3Provider(connection); const signer = provider.getSigner(); const contract = new Contract(contractAddress, contractAbi, signer);
然後,您可以通過以下方式呼叫契約:
await contract.setMessage();
注意我在這裡使用了https://github.com/web3modal/web3modal,但是另一種獲取簽名者的方法可以在 ethers 文件中找到。