Web3调用的亮点:半开源合约实现

WEB 合约 开源 2024-01-29 80
半开源合同的Web3呼叫:一些智能合同不能在etherscan中验证源代码,因此不能轻易获得其ABI。但“奇怪”的是,呼叫一些合同函数可以完全显示在网页上呼叫的函数名、参数名和具体参数值。对于这样的“半开源”合同,可以有一些简单的方法来实现Web3呼叫。

我之前写过一个关于“未开源智能合同调用”的方法,主要是在网站前端拉JS代码,定位到ABI代码,然后实现调用。当然,这种方法可以用来实现“半开源”合同调用,但这种方法确实有些反人类,疯狂拉JS代码也很费力,我们暂时绕过。

没有开源合同,为什么可以在etherscan显示详细的调用参数信息(小狐狸钱夹也可以显示)?事实上,秘密在这4个 bytes 在signature上。如果其他开源合同有相同的“签名”,etherscan和小狐狸将直接判断为同一函数,并尝试分析未开源合同但签名相同的函数。

解决方案:对于这种可以正常显示的函数,有一个相对简单的方法:通过函数信息反向生成ABI代码。15行代码,代码来自人类的好助手:chatGPT 4.经过测试和比较,与原来的ABI一字不差(当然,output可能有差异,但不影响使用)。

签名库:如果etherscan没有显示,也可以先去这个签名库碰运气:https:///4byte.directory/signatures/。请注意,这44个部分的签名可能是同名的!一些小狐狸钓鱼合同使用这个“漏洞”。同一签名可能对应多个函数,正常使用必须自行判断。

相关推荐