ethers.js 调用合约函数

推特@Hita_DAO   DiscordHitaDAO

在Ethers.js中,创建一个智能合约对象通常需要使用提供者(Provider)、合约地址和ABI。以下是一个创建智能合约对象的例子

  // 引入ethers
  const { ethers } = require("ethers");
     
    // 合约ABI
  const contractAbi = [
      // 这里是合约的ABI数组,包含了函数、事件等定义
    ];
     
  // 合约地址
  const contractAddress = "0x1234567890123456789012345678901234567890";
     
  // 创建提供者(使用Infura或者Alchemy等)
  const provider = new ethers.providers.JsonRpcProvider("https://mainnet.infura.io/YOUR_INFURA_API_KEY");
     
  // 创建智能合约对象
  const contract = new ethers.Contract(contractAddress, contractAbi, provider);
     
  // 现在可以使用contract对象来调用合约的函数了
在这个例子中,contractAbi是一个包含了合约所有函数和事件的定义的数组,contractAddress是合约在区块链上的地址,provider是一个提供者实例,用于与区块链网络进行通信。 通过ethers.Contract构造函数创建的contract对象可以用来调用合约的函数。例如,如果你想要调用名为myFunction的合约函数,你可以这样做:

        // 调用合约的myFunction函数
        contract.myFunction().then((result) => {
          console.log(result); // 处理结果
        }).catch((error) => {
          console.error(error); // 处理错误
        });