使用web3时,调用contract对象获得代币名称,精度问题

carvin carvin 提出于 2021-10-25 16:12 7011 浏览

使用web3时,用contract对象调用name方法有的时候无法获得代币名称,精度,大多情况下可以获取,代码如下:

anacontract = new web3.eth.Contract(myqueryABI, contractana)
var anatokenname = await anacontract.methods.name().call()
.....
```(ABI获取是正常的,contract对象也正常实例化,但是有时执行下一句显示出错,说没有name函数)

而根据论坛里的帖子,经过测试,调用eth对象就可以获得调用contract对象无法获得的代币名称,代码如下:

await web3.eth.call({
    to: contractana,
    data: "0x06fdde03"
}).then(res => {
    var anatokenname1 = "0x"+res.substring(res.length, 64)
    console.log(anatokenname1 )
    anatokenname = web3.utils.hexToUtf8(anatokenname1)
    console.log(anatokenname)
})

请问这是是什么原因造成的 还有就是如果我用第二种方法,请求数据的这个16进制码对照表在哪里有呢

data: **"0x06fdde03"**
0 条评论 15 学分

最佳答案

2021-10-26 08:39

abi需要含有name的方法。

data是经过abi编码出来的

i am duck
i am duck 划水

采纳率 25% · 回答于 2021-10-25 16:26

其它 1 个回答

Tiny熊 2021-10-26 08:40

擅长:智能合约,以太坊

写回答

你需要登录后才可以回答问题,登录