Solidity

如何在已部署的智能合約上呼叫方法?

  • April 16, 2022

我部署了一個 ERC20 代幣智能合約和一個允許用乙太幣購買代幣的交易所智能合約。

我使用 Infura 和 Hardhat 將它們部署到主網,並且能夠購買代幣並使用 MetaMask 查看它們。

如何呼叫智能合約上的公共方法?

您必須使用 abi 初始化您的合約,並使用 web3 初始化合約地址,然後呼叫該函式

const mycontract = new web3.eth.Contract(abi , contractAddress)
mycontract.methods.withDraw("arguments").send({
fom:fromAddress, gas:3000000})
.on('confirmation', (confirmations, receipt) => {
       console.log('CONFIRMATION');
       console.log(confirmations);
       console.log(receipt);
}

在您的網站上,您可以安裝 web3 以允許您與合約進行互動。您需要聲明為常量:

  • 智能合約地址
  • 智能合約 ABI

然後使用 web3 你可以呼叫任何方法。您可以將私鑰添加到您的 web3 變數中以簽署交易,但您也可以只要求一個帳戶,以便您使用元遮罩或其他錢包簽署交易。web3.js 方法的範例:

 async function getCurrentAccount() {
       const accounts = await ethereum.request({ method: 'eth_requestAccounts' });
       return accounts[0];
   }

 async function withdraw() {
       const account = await getCurrentAccount();
       const doMethod = await MyContract.methods.withdraw().send({ from: account })
   }

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