内容来源群友:卖鱼的,现已自由退群了。
没abi也就不知道合约接口和参数列表了,怎么能解析出来啊。
比如这样一段的data:0xa9059cbb000000000000000000000000b8790157b2e27f2a81d3ca72752fd1a46b87c9940000000000000000000000000000000000000000000000000000000000000001
拆分,前面4字节是方法,后面32字节,32字节这样拆。
拆开就是:
0xa9059cbb(MethodID)
[0]:000000000000000000000000b8790157b2e27f2a81d3ca72752fd1a46b87c994
[1]:0000000000000000000000000000000000000000000000000000000000000001
群友:哦这样啊 解密就能还原出abi对吧
0xa9059cbb(MethodID)这个方法是什么鬼,可以无视,能直接复用就行,直接看后边猜猜是什么。
[0]:000000000000000000000000b8790157b2e27f2a81d3ca72752fd1a46b87c994
这个一看就知道,是个地址。
[1]:0000000000000000000000000000000000000000000000000000000000000001
这个靠经验看,就是16进制的数量了。
也可以搜索一下类似的,现在几乎没原创合约,都是fork。
你随便用比较通用的ABI编译一下,就能找到这个0xa9059cbb(MethodID)方法是什么鬼。
当然不找也没关系,直接用,这个可以直接丢google搜索一下,通常都能直接找到。
比如上面那段我google搜索一下,就找出来了
Function: transfer(address,uint256)
MethodID: 0xa9059cbb
就是一个最常见的转账,现在合约原创性真没多少,看多了,一眼都知道是啥,实在找不到就拆了自己拼一下,也没多难,比如之前那啥投票的。
我到现在也不知道他们合约是啥
但是我直接拆了data,一样调用了投票,而且很多时候,小狐狸点的时候有提示啊。
你看,小狐狸这啥方法都写明白了,直接用就是。
群友:可以,常用的接口keccak256值都一样。只要是从小狐狸发送的 网页的js里面都有abi的。扒下网站的源码就有了。
这个没啥意外就是:withdraw(uint256),没小狐狸的就监控一下pending,自己解析一下data。不过不看合约源代码,直接去抢购IDO啥的,有时候会掉坑就是。
现在的区块链浏览器,一些常用的方法,都直接给你解析好了,看下区块链浏览器也能解决70%的问题。
比如这种,原创度高,又长又复杂,就不知道是什么鬼了。这是一个游戏的,里面有几个是道具的哈希。所以看起来乱乱的,不知道什么东西,不过试多几次,也能试出是什么鬼。有几个量是不变的。
群友:请教下这个数据输入的是什么?
0xdf86aa6b,这就只写了一个方法,你要复用直接这样写就完事了,后面啥数据都没。
群友:怎么复用?myContract.methods.transfer
群友b:这种你就要自己构造tx data,没办法用abi生成data。只要有网站 都能拿到abi的,没网站就要直接写脚本 大部分都是需要front run的时候才用得上了。
群友:一个个试?
群友b:你在发送转账的时候metamask调用的是哪个函数
卖鱼的:这个要复用,直接data写:0xdf86aa6b,就完事了。
没事多喵喵一下常用的swap合约,看多了一眼就知道是什么鬼,参考资料:
https://learnblockchain.cn/2018/08/09/understand-abi。
如何理解以太坊ABI - 应用程序二进制接口
群友:卖鱼哥,为什么这个没有显示方法名和参数。
就别管他是啥了,直接写:0xdf86aa6b,可能作者觉得这个没必要写方法名了,直接就写0xdf86aa6b省事了。
小狐狸 怎么下载?
metamask官网下载