我已经对智能合约的功能进行了编码,该功能具有方法ID和参数,即0xf7ea7a3d4000000000000000000015000000000000000000ff7f0000b200000000f7ea7a..............
。假设在此编码函数中,还有两个参数,一个是uint,另一个是字符串。这个编码的函数实际上是我的合约的获取者(未更改状态)(在ABI中,其stateMutability = view),并且还返回一个值,即totalSupply
。现在,我想通过web3js / nodejs调用此函数,如下所示。如预期的那样,该代码为我提供了交易收据/哈希,但是我有兴趣检索getter函数的返回值,即totalSupply
;
try {
await web3.eth.sendTransaction(
{
from: account1,
to: myContAddr,
data: myFunc
}).then(function (res) {
console.log("Normal Getter", res);
});
} catch (error) {
console.log(" Normal Getters: ERROR !");
}
一种可能的解决方案是从给定的编码函数及其参数(但我不知道如何解码参数)中提取函数Signature / methodID(对我来说很简单),然后调用该函数像这样..即
try {
res = await myContractInstance.methods[myFuncID](????).call({ from: account1 }) // without parameters
console.log("Getter output", res);
} catch (error) {
console.log("Getter output: ERROR !", error);
}
所以,我的问题是