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

Chr*_*eng 8 ethereum web3js

在此处输入图片说明

使用 web3js,您如何确定从交易的哈希值中转移了 40000 个代币?

Ada*_*nis 7

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

(从帖子中窃取):

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


小智 6

我将尝试展示您如何执行此操作的示例:

让我们来看看这个 Tx:

0xa543a3a7b6498bc9aec6989d99228be07855cdd23cfbf491489e8d4088b4a94c
Run Code Online (Sandbox Code Playgroud)

这是发送一些令牌以解决从web3.eth.getTransaction()输入接收到的数据的合约的 Tx :

0xa9059cbb00000000000000000000000092e707288dc221d864cf4a8c710c143e97225d7d000000000000000000000000000000000000000000000059f37b9220158a8000
Run Code Online (Sandbox Code Playgroud)

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

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

00000000000000000000000092e707288dc221d864cf4a8c710c143e97225d7d

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

000000000000000000000000000000000000000000000059f37b9220158a8000
Run Code Online (Sandbox Code Playgroud)

我们将使用任何转换函数或此网站将十六进制转换为十进制:https : //www.rapidtables.com/convert/number/hex-to-decimal.html

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

我希望它有帮助

在此处输入图片说明