Contract-Invocation
如何解碼對 Songbird 網路的呼叫?
例如:我是一個多重簽名者。我想解碼用於呼叫特定智能合約的呼叫數據。
智能合約範例:0x02f0826ef6aD107Cfc861152B32B52fD11BaB9ED (WNat) 我想解碼此通話數據:0x2e1a7d4d00000000000000000000000000000000000000000000000000158e4609
有沒有辦法解碼此呼叫以查看交易詳細資訊。
另一個例子:如果我想解碼一個預簽名的交易。以確保它具有正確的值。
要解碼 Songbird 網路上的呼叫,您可以使用此工具:https ://decoder.aflabs.si/ 。
它使用songbird explorer從合約地址獲取合約ABI,然後解碼函式呼叫及其參數。在您的範例中,它按預期工作:
只是添加到前面的答案來幫助人們理解如何解釋編碼。
通話數據由兩部分組成:
- 函式選擇器(前 4 個字節)
- 參數(前 4 個字節之後的所有內容)
函式選擇器是函式簽名雜湊的 keccack-256 的前 4 個字節:
功能:
withdraw(uint256 _amount)
簽名是withdraw(uint256)
:keccack256
withdraw(uint256)
是:2e1a7d4d13322e7b96f9a57413e1525c250fb7a9021cf91d1540d5b69f16a49f
前 4 個字節是:
2e1a7d4d
匹配您的呼叫數據的前 4 個字節。接下來,我們從簽名中知道該函式接受一個 uint256 類型的參數(即 32 個字節)。
此參數在呼叫數據中編碼為:
000000000000000000000000000000000000000000000001158e460913d00000
將此十六進製表示形式轉換為小數,我們得到:
20000000000000000000
因此我們可以得出結論,calldata 以
20000000000000000000
作為參數的數量為目標的withdraw 函式。