我创建了一个虚拟实体合同(https://learn.aion.network/docs/deploy-a-smart-contract-using-web3)并将其部署。当我尝试使用aion-web3进行呼叫时,会出现此问题。
const contract = require('aion-web3-eth-contract');
contract.setProvider("https://aion.api.nodesmith.io/v1/mastery/jsonrpc?apiKey=*");
const Web3 = require('aion-web3');
const web3 = new Web3(new Web3.providers.HttpProvider("https://aion.api.nodesmith.io/v1/mastery/jsonrpc?apiKey=*"));
const account = web3.eth.accounts.privateKeyToAccount("****");
let myContract = new contract([...], "0xa0e1166A455a0d75CFC2bfa32D7f76f0e1852c106b981Acf59EDE327CFD36811");
// console.log("C a",myContract.options.address);
myContract.methods.getCount().call({from: account.address}, function (error, result) {
if (error){
console.log("err=>", error)
} else {
console.log("res=>", result)
}
});
我期望0,因为它是第一个调用,但会引发以下错误:
TypeError: myContract.methods.getCount is not a function
答案 0 :(得分:0)
您尝试调用该函数的方式似乎不太正确。与其创建#coffee_cake
对象,不如尝试仅将合同地址放入交易对象中,然后调用该对象:
myContract
此外,请确保您的帐户中有硬币。您可以在这里使用一个水龙头:https://faucets.blockxlabs.com/aion
此外,欢迎使用StackOverflow!
答案 1 :(得分:0)
尝试使用以下命令创建合同实例:
let myContract = new web3.eth.Contract(["compile contract abi info"])
然后
web3.eth.call({to:YourContractAddress, data:myContract.methods.getCount().encodeABI()}).then((res) => console.log(web3.utils.hexToNumber(res)));