eth交易记录input解析

image.png
如何解析input的参数呢?

请先 登录 后评论

最佳答案 2020-04-22 20:46

首先我不太清楚你需要解析的目的? 因为反向解析是非常不稳定的,类似于混淆后的JS代码,反向恢复后灵活多变的。一个 byte32的数据,可以代表一个地址,也可能是一个 byte256 的数据。

除非你知道所调研的合约的ABI接口。

我猜测你是需要解析Token的转账交易。如果是需要解析Token的转账,应该使用使用读取事件日志的方式进行。

只有成功转账,才会生成事件日志。如果仅仅是解析交易的Input则是不完整的。如:

  1. 交易失败。
  2. To是A合约,但A内部实现了自动转账给TokenB。

怎么使用事件日志解析Token转账记录呢 给你罗列几个资料:

  1. https://learnblockchain.cn/2018/12/19/8be8047936d2
  2. https://learnblockchain.cn/article/776
  3. https://learnblockchain.cn/question/29
请先 登录 后评论

其它 3 个回答

罗鹏
请先 登录 后评论
嘉文 - CTO

0xa9059cbb是transfer ()的函数签名

Transfer函数的格式如下:
function transfer(address _to,uint256 _value) public returns (bool)

由于都是32字节对齐的,所以,应该很容易分拆
1d6e....应该是地址
2623... 应该是数量

请先 登录 后评论
Tiny熊
  擅长:智能合约,以太坊

这个是调用函数的ABI 的编码数据,站内有一篇文章介绍 input 如何生成的:如何理解以太坊ABI - 应用程序二进制接口

因此,解码这个数据需要知道函数的 ABI 描述。

ABI的详细编码规则可以查看这个文档:Solidity 文档- 应用二进制接口说明

请先 登录 后评论
  • 4 关注
  • 0 收藏,14068 浏览
  • 渣渣 提出于 2020-04-13 17:12