Web3j
如何使用 web3j 獲取合約創建者?
如何使用 web3j 獲取合約創建者的地址?是否有可能獲得合約的第一筆交易並假設“from”欄位是合約創建者?如果是這樣,我怎樣才能獲得第一筆交易?
是否有可能獲得合約的第一筆交易並假設“from”欄位是合約創建者
這個假設是錯誤的。事實上,契約是通過契約創建(即通過交易或內部交易)創建的。
合約的地址是通過取
keccak256(rlp(creator_address, nonce of the creator))
.方法 1
我認為一種可能性可能是遍歷事務並使用等效的eth_getTransactionReceipt並檢查獲得的對像是否包含該
contractAddress
欄位並檢查是否contractAddress
對應於搜尋的對象。然後你必須檢查哪個地址創建了交易。所以你可以(可能)檢測到創建者的地址(我認為你應該知道你必須在哪個塊範圍內搜尋)。問題在於它僅適用於由交易引起的契約創建,並且可能不適用於內部交易,即在執行消息呼叫/契約創建期間創建契約時。方法 2
如果合約儲存了所有者(例如,它在建構子中包含類似的東西
owner=msg.sender
並且所有者是一個公共變數),您可以直接讀取所有者的地址方法 3 - 沒有 web3j
使用 etherscan 檢查合約的創建者
也許還有很多其他的可能性,我沒有弄清楚..