Dapp-Development
使用 ethers.js 建構原始合約交易
在 ethers.js 中找不到關於使用合約數據創建原始交易的任何好的文件。web3 中的等價物是添加
encodeABI
on data 屬性。對此有何指導?這不起作用:
data = myContract.interface.functions.myFunction(value); const tx = { ... data ... }
它似乎沒有認識到這是一個函式(即使我在那裡看到了 data 屬性)。
您可以使用此處記錄的 populateTransaction 機制:https ://docs.ethers.io/v5/api/contract/contract/
所以具體來說,那就是:
const data = await myContract.populateTransaction.myFunction(value);
在 Ether.js 中使用 populateTransaction 的方式是:
const contract = new Contract(CONTRACT_ADDRESS, CONTRACT_ABI, Wallet); const params = [value]; const action = 'myFunction'; const unsignedTx = await contract.populateTransaction[action](...params);
然後您可以簡單地簽署並發送您的交易,例如:
await Wallet.sendTransaction(unsignedTx);