使用 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? @wyxto
节点包含 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票据横向移动)