Solidity
如何在已部署的智能合約上呼叫方法?
我部署了一個 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 }) }