簡體   English   中英

使用 web3js 從交易哈希中獲取令牌傳輸詳細信息

[英]Get token transfer detail from transaction hash with web3js

在此處輸入圖片說明

使用 web3js,您如何確定從交易的哈希值中轉移了 40000 個代幣?

我將嘗試展示如何執行此操作的示例:

讓我們采取這個Tx:

0xa543a3a7b6498bc9aec6989d99228be07855cdd23cfbf491489e8d4088b4a94c

這是一個合同,它發送一些令牌來解決來自web3.eth.getTransaction()輸入的接收數據:

0xa9059cbb00000000000000000000000092e707288dc221d864cf4a8c710c143e97225d7d000000000000000000000000000000000000000000000059f37b9220158a8000

現在前34位表示函數簽名的文本(0xa9059cbb)

下一個256位塊表示我們要將令牌發送到的地址:

00000000000000000000000092e707288dc221d864cf4a8c710c143e97225d7d

第二個塊表示發送到地址的令牌數量(以十六進制表示):

000000000000000000000000000000000000000000000059f37b9220158a8000

我們將使用任何轉換函數或使用此網站將十六進制轉換為十進制: https//www.rapidtables.com/convert/number/hex-to-decimal.html

我們將看到轉換后我們得到1659305000000000000000它發送到該地址的令牌數量。

我希望它有所幫助

在此輸入圖像描述

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

(從帖子中竊取):

  1. web3.eth.getTransaction()檢索input數據這將返回事務中發送的函數和參數的十六進制數據。 它看起來像0xa9059cbb0000000000000000000000007adee867ea91533879d083dd47ea81f0eee3a37e000000000000000000000000000000000000000000000000d02ab486cedbffff
  2. 前32位(0xa9059cbb)是函數簽名的sha3編碼文本。
  3. 之后的每個256位塊都是傳入的參數。
  4. 解析出與參數列表中的令牌數對應的塊后,使用web3.utils轉換為十進制。

以太坊智能合約交易輸入數據解碼器使用ethereumjs-abi進行解碼。 https://github.com/miguelmota/ethereum-input-data-decoder

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

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


        

只是不要忘記之前定義您的提供者和您的 web3 對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM