[英]Get token transfer detail from transaction hash with web3js
我將嘗試展示如何執行此操作的示例:
讓我們采取這個Tx:
0xa543a3a7b6498bc9aec6989d99228be07855cdd23cfbf491489e8d4088b4a94c
這是一個合同,它發送一些令牌來解決來自web3.eth.getTransaction()
輸入的接收數據:
0xa9059cbb00000000000000000000000092e707288dc221d864cf4a8c710c143e97225d7d000000000000000000000000000000000000000000000059f37b9220158a8000
現在前34位表示函數簽名的文本(0xa9059cbb)
下一個256位塊表示我們要將令牌發送到的地址:
00000000000000000000000092e707288dc221d864cf4a8c710c143e97225d7d
第二個塊表示發送到地址的令牌數量(以十六進制表示):
000000000000000000000000000000000000000000000059f37b9220158a8000
我們將使用任何轉換函數或使用此網站將十六進制轉換為十進制: https : //www.rapidtables.com/convert/number/hex-to-decimal.html
我們將看到轉換后我們得到1659305000000000000000它發送到該地址的令牌數量。
我希望它有所幫助
使用您感興趣的確切方法在Medium上有一篇非常好的博客文章。
(從帖子中竊取):
web3.eth.getTransaction()
檢索input
數據這將返回事務中發送的函數和參數的十六進制數據。 它看起來像0xa9059cbb0000000000000000000000007adee867ea91533879d083dd47ea81f0eee3a37e000000000000000000000000000000000000000000000000d02ab486cedbffff
。 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.