9

在此处输入图像描述

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

4

4 回答 4

8

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

让我们来看看这个 Tx:

0xa543a3a7b6498bc9aec6989d99228be07855cdd23cfbf491489e8d4088b4a94c

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

0xa9059cbb00000000000000000000000092e707288dc221d864cf4a8c710c143e97225d7d000000000000000000000000000000000000000000000059f37b9220158a8000

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

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

00000000000000000000000092e707288dc221d864cf4a8c710c143e97225d7d

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

000000000000000000000000000000000000000000000059f37b9220158a8000

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

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

我希望它有帮助

在此处输入图像描述

于 2018-08-23T09:09:11.503 回答
8

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

(从帖子中窃取):

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

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

于 2018-04-26T09:46:34.490 回答
-2

只需使用web3.eth.getTransaction(transaction_address)

let transaction= await web3.eth.getTransaction("0X....")
console.log(JSOM.stringlify(transaction))         

只是不要忘记之前定义您的提供者和您的 web3 对象。

于 2021-12-08T18:12:35.427 回答