Dapp-Development

使用 ethers.js 建構原始合約交易

  • March 24, 2022

在 ethers.js 中找不到關於使用合約數據創建原始交易的任何好的文件。web3 中的等價物是添加encodeABIon 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);

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