我正在尝试使用 Etherscan API 获取合约 ABI,然后创建一个合约实例并调用一个方法。我能够从 Etherscan 获取 ABI,但是在创建合约对象时出现此错误:“您必须在实例化合约对象时提供合约的 json 接口。” 这就是我的代码的样子
let url = 'https://api.etherscan.io/api?module=contract&action=getabi&address=0x672C1f1C978b8FD1E9AE18e25D0E55176824989c&apikey=<api-key>';
request(url, (err, res, body) => {
if (err) {
console.log(err);
}
let data = JSON.parse(body);
let contract_abi = data.result;
console.log(contract_abi)
let contract_address = '0x672C1f1C978b8FD1E9AE18e25D0E55176824989';
const contract = new web3.eth.Contract(contract_abi);
const contract_instance = contract.at(contract_address);
// Call contract method
})
当我控制台记录 contract_abi 时,我看到了 ABI 数据。我也尝试过创建合同
const contract = new web3.eth.Contract(contract_abi, contract_address)
谢谢!