31

web3与合约交互必须要abi才可以? | 登链社区 | 技术问答

 3 years ago
source link: https://learnblockchain.cn/question/2458
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

100 web3与合约交互必须要abi才可以?

我在尝试用web3与bsc的一个合约交互,调用一个函数
现在用的是web3.py,与web3.js类似吧
但是查遍了全网都说要交互必须要abi文件才可以

有abi的情况下,我已经知道怎么处理了。
但是这个合约没有开源,bscscan查不到abi怎么办呢?

相关的交易参考这个:0xa84110f40ec48585b91a4d8a099c9f003879f0e839c15a8058e3442921cedf22
bscscan上面查到发送给合约的二进制信息是0x89aee3d6

难道我不能直接发送这个二进制信息吗?
metamask与合约交互也没有 abi信息呢,为什么metamask可以直接交互呢?

image.png

最佳答案 3天前

实际上使用 ABI 时, 最终也会编码为 二进制信息。看一下 \如何理解以太坊ABI - 应用程序二进制接口 你就理解了。

你只需要直接向合约发起交易, 附加 data 字段就可以。

我平时不用 web3.py, 如果使用 web.js 就是这个接口,data 数据就是0x89aee3d6 .

简单几句话就直指核心,非常感谢。补充一下,如果是要用私钥对交易进行签名的话,应该使用sendSignedTransaction这个函数,web3.py里面对应的是send_raw_transaction。这个问题是真的困扰了我一周了,因为比较懒,不想从头看文档,尝试搜过ineteract with smart contract without abi file,尝试过在stackexchange上面提问,也尝试过问过懂区块链开发的群友,但都没给我讲明白。我也一直猜到了,对于懂的人来说,就是几句话的事情,但是没想到沟通成本这么高,包括谷歌搜索都没有找到答案。

Tiny熊 - 布道者
擅长:智能合约,以太坊 | 采纳率 39% | 回答于 3天前

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK