使用web3js从事务哈希中获取令牌传输详细信息

时间:2017-12-28 08:49:45

标签: ethereum web3js

enter image description here

使用web3js,你怎么知道从事务的哈希中有40000个令牌传输?

3 个答案:

答案 0 :(得分:4)

我将尝试举例说明您如何执行此操作:

让这个Tx:

0xa543a3a7b6498bc9aec6989d99228be07855cdd23cfbf491489e8d4088b4a94c

这是合约的Tx,合约发送一定数量的代币到地址 从web3.eth.getTransaction()输入接收的数据:

0xa9059cbb00000000000000000000000092e707288dc221d864cf4a8c710c143e97225d7d000000000000000000000000000000000000000000000059f37b9220158a8000

现在前34位代表函数签名(0xa9059cbb)的文本

下一个256位块代表我们要将令牌发送到的地址:

00000000000000000000000092e707288dc221d864cf4a8c710c143e97225d7d

第二个块代表发送到该地址的令牌数量(以十六进制表示):

000000000000000000000000000000000000000000000059f37b9220158a8000

我们将使用任何转换函数或通过以下网站将十六进制转换为十进制: official example

我们将看到转换后我们得到1659305000000000000000 它是发送到该地址的令牌的数量。

希望对您有帮助

https://www.rapidtables.com/convert/number/hex-to-decimal.html

答案 1 :(得分:3)

Medium上有一篇非常好的博客文章,使用您感兴趣的确切方法。

(从帖子中窃取):

  1. input检索web3.eth.getTransaction()数据这将返回事务中发送的函数和参数的十六进制数据。它看起来像0xa9059cbb0000000000000000000000007adee867ea91533879d083dd47ea81f0eee3a37e000000000000000000000000000000000000000000000000d02ab486cedbffff
  2. 前32位(0xa9059cbb)是函数签名的sha3编码文本。
  3. 之后的每个256位块都是传入的参数。
  4. 解析出与参数列表中的令牌数对应的块后,使用web3.utils转换为十进制。

答案 2 :(得分:0)

以太坊智能合约交易输入数据解码器 使用ethereumjs-abi进行解码。 https://github.com/miguelmota/ethereum-input-data-decoder