Transactions

如何獲得交易的價值?

  • October 6, 2021

我正在使用 web3.py,但我需要幫助才能了解所發送交易的價值。我知道資訊儲存在輸入中,但是如何解析字元串。我對ABI一無所知。這是tx_hash = 0xb6a594e6e9579d76870d54618b8df25e6662a200f1d2f3c9e27f506e851fa092 輸入:0xa9059cbb000000000000000000000000453a0961ed6badd98fc396b01ab9b5939d9e27f1000000000000000000000000000000000000000000000000000000000000000a

如何以簡單的價值獲得交易的價值?

新答案(基於評論)

要獲取正在轉移的 ERC20 代幣的價值,您需要解析交易的輸入數據。

根據標準transfer函式如下所示:

function transfer(address _to, uint256 _value) public returns (bool success)

這意味著您必須在輸入數據中查找最終參數。可以在這裡看到一個範例交易。在本例中,輸入數據如下:

0xa9059cbb00000000000000000000000000dfbc84ccac430f2c0455c437adf417095d7ad68e00000000000000000000000000000000000000000000000158b5ff8fb42b9

0xa9059cbb

這是方法簽名的雜湊。

000000000000000000000000dfbc84ccac430f2c0455c437adf417095d7ad68e

這是發送令牌的地址。

0000000000000000000000000000000000000000000000158b5ff8fb42b95000

**這是金額(十六進制),也是您要查找的值。**在此範例中,這會產生 397.424645 個令牌。


原始答案

事務value的實際並不在input數據中,而是在自己的value欄位中。如果你知道雜湊值,你就可以得到值。

>>> tx_data = web3.eth.getTransactionReceipt(tx_hash)
>>> print(tx_data["value"])
1000000000000000000

如果您獲得交易收據,該value欄位將包含在輸出中。那就是在交易中發送的 Wei 數量。

引用自:https://ethereum.stackexchange.com/questions/68601