注:本文来自@gm365 Twitter,MarsBit整理如下:
半开源契约的Web3调用
如果不在etherscan中验证源代码,一些智能合约无法轻松获得它们的ABI。
但是“奇怪”的是,调用一些契约函数,完全可以在网页上显示被调用的函数名、参数名以及具体的参数值。
对于这样的“半开源”契约,有一些简单的方法可以实现Web3调用。
前言之前写了一本书,关于“开源智能合约的调用”。主要方法是在网站前端拉代码,定位ABI码,然后实现调用。
https://twitter.com/gm365/status/1521058983838380032
当然这种方法可以用来实现“半开源”的契约调用,但是这种方法真的很反人类,疯狂拉代码也很惹眼。暂时跳过吧。
以太扫描显示机制没有开源合约。为什么详细的通话参数信息可以在etherscan显示(连Fox钱包都可以显示)?
事实上,秘密都在这个4字节的签名上。
如果其他开源合同有相同的“签名”,etherscan和Fox会直接确定相同的函数,并尝试在一个开源合同面前分析一个具有相同签名的函数。
解决办法
对于这种可以正常显示的功能,其实有一个比较简单的方法:
通过函数信息逆向生成ABI码
15行代码,代码来自人类的好帮手:chatGPT 4。
经过测试对比,和原来的ABI一模一样(当然输出可能会有差异,但不影响使用)
签名库
如果没有出现在etherscan上,可以先在这个签名库中碰碰运气。
https://4byte.directory/signatures/
注意:这个四段签名可能会改名!一些狐狸钓鱼合同就是利用了这个“漏洞”。
同一个签名可能对应多个功能,你得判断是否正常使用。
本网站声明:网站内容来源于网络。如有侵权,请联系我们,我们会及时处理。
温馨提示:注:内容来源均采集于互联网,不要轻信任何,后果自负,本站不承担任何责任。若本站收录的信息无意侵犯了贵司版权,请给我们来信(j7hr0a@163.com),我们会及时处理和回复。
原文地址"半开源代码,长推:半开源合约的 Web3 调用":http://www.guoyinggangguan.com/qkl/160270.html。

微信扫描二维码关注官方微信
▲长按图片识别二维码