前言
前段时间,Poly Network 被盗事件的一个小插曲,一地址向黑客地址转账在 input data 中告知其 USDT 已被冻结,不要使用 USDT,黑客知晓后向该地址转账 13.37 ETH。
事后很多人便通过 input Data 在区块链上“聊天”向黑客“索要”虚拟货币,那么我们经常在区块链浏览器中看到的 input Data 到底是什么?知道创宇区块链安全实验室 为您解答。
Input data
在以太坊协议中,当交易(transaction)为合约创建时,input data 是账户初始化程序的 EVM 代码;
而当交易(transaction)为消息调用时,input data 是合约函数调用数据。
正常情况下简单的消息调用如调用转账函数时需要填写你要转账的地址 _to 和你要转账的数量 _amount,这些基本信息都包含在 input data 里面。
我们通过一个调用合约的转账交易具体分析,来理解消息调用时 input data 的结构。
解析形式:
原始形式:
我们将原始的 input data 分为三个部分进行分析:
- 0xa9059cbb:函数标识