Solidity
從交易資訊中獲取合約資訊?
這可能是一個簡單的問題。假設我有交易雜湊:
{ blockNumber: "6214286", timeStamp: "1535248365", hash: "0x144018f7327b3990124762d1aefececff3897755ce15313e662f2c5699aaaca1", nonce: "5", blockHash: "0x6bd409190b38364611b96006ead9f2281262e8d4b71cd712e528c7459d56962f", transactionIndex: "135", from: "0x446252b54d626cf4192e5c74545761dfaf7e5a50", to: "0xb1690c08e213a35ed9bab7b318de14420fb57d8c", value: "2000000000000000", gas: "148770", gasPrice: "1400000000", isError: "1", txreceipt_status: "0", input: "0x454a2ab300000000000000000000000000000000000000000000000000000000000d1596", contractAddress: "", cumulativeGasUsed: "4423724", gasUsed: "22540", confirmations: "189517" }
有沒有辦法獲取使用哪些參數呼叫了哪個合約函式?
我確實有契約 ABI 和地址。
更多資訊:
我試圖從上述交易中獲取 CryptoKitty tokenId。我通過使用我的帳戶查詢 Etherscan 並過濾映射到 CryptoKitty 拍賣契約 (CryptoKittiesSalesAuction) 的“to”目的地來進行此交易。
是的你可以。
您需要的資訊在這裡:
input: "0x454a2ab300000000000000000000000000000000000000000000000000000000000d1596",
前 4 個字節是您需要找到被呼叫的函式的內容。它稱為方法 ID。你有一個例子here
這是作為簽名的 ASCII 形式的 Keccak 散列的前 4 個字節導出的
參數是
00000000000000000000000000000000000000000000000000000000000d1596
在您的智能合約中,您可以使用**.selector找到方法 id**
例如,對於這個 setup() 函式,
function setup() external onlyOwner
您可以通過以下方式獲取方法 ID:this.setup.selector