Solidity

從交易資訊中獲取合約資訊?

  • September 26, 2018

這可能是一個簡單的問題。假設我有交易雜湊:

{
 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

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