查看验证以太坊智能合约(ABI二进制接口)科学家技术撸毛 空投 抢购IDO@卖鱼的

内容来源群友:卖鱼的,现已自由退群了。

没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省事了。