ethers.js 调用合约函数
在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); // 处理错误
});