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

Posted

技术标签:

【中文标题】使用 web3js 从事务哈希中获取令牌传输详细信息【英文标题】:Get token transfer detail from transaction hash with web3js 【发布时间】:2018-06-08 19:37:03 【问题描述】:

使用 web3js,你怎么知道有 40000 个令牌从交易的哈希中转移?

【问题讨论】:

【参考方案1】:

我将尝试举例说明你是如何做到这一点的:

让我们接受这个 Tx:

0xa543a3a7b6498bc9aec6989d99228be07855cdd23cfbf491489e8d4088b4a94c

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

0xa9059cbb00000000000000000000000092e707288dc221d864cf4a8c710c143e97225d7d000000000000000000000000000000000000000000000059f37b9220158a8000

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

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

00000000000000000000000092e707288dc221d864cf4a8c710c143e97225d7d

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

000000000000000000000000000000000000000000000059f37b9220158a8000

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

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

希望对你有帮助

【讨论】:

如何知道哪个rec20 token? @wyx to 节点包含 token contract address @Tomer 你能确定使用的货币吗?我在 OpenSea 上订阅 NFT 销售,允许使用各种货币(DAI、WETH、USDC、ETH)。对于 ETH txs,我可以只使用 value 字段。但对于其他人,我想知道代币的数量和代币的类型。有什么建议吗?【参考方案2】:

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

(从帖子中窃取):

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

【讨论】:

函数签名的第一个编码文本 (0xa9059cbb...) 是 34 位而不是 32 位。 web3.utils 中的哪个函数用于将000000000000000000000000000000000000000000000000d02ab486cedbffff 值转换为数字? @Sallu web3js.readthedocs.io/en/1.0/web3-utils.html#hextonumber【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review

以上是关于使用 web3js 从事务哈希中获取令牌传输详细信息的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 web3js solana 工具关闭关联的令牌帐户

如何在 SOLANA 上使用 web3 js 从令牌地址获取元数据

CobaltStrike使用-第七篇(获取信任凭证哈希认证Kerberos票据横向移动)

CobaltStrike使用-第七篇(获取信任凭证哈希认证Kerberos票据横向移动)

如何使用 web3 js 通过地址获取令牌交易列表

如何在 web3js 中进行多笔交易