如何獲得交易的價值?
我正在使用 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 數量。