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

使用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"**
请先 登录 后评论

最佳答案 2021-10-26 08:39

abi需要含有name的方法。

data是经过abi编码出来的

请先 登录 后评论

其它 1 个回答

Tiny熊
  擅长:智能合约,以太坊
请先 登录 后评论
  • 2 关注
  • 1 收藏,4288 浏览
  • carvin 提出于 2021-10-25 16:12