Web3j

如何使用 web3j 獲取合約創建者?

  • August 1, 2018

如何使用 web3j 獲取合約創建者的地址?是否有可能獲得合約的第一筆交易並假設“from”欄位是合約創建者?如果是這樣,我怎樣才能獲得第一筆交易?

是否有可能獲得合約的第一筆交易並假設“from”欄位是合約創建者

這個假設是錯誤的。事實上,契約是通過契約創建(即通過交易或內部交易)創建的。

合約的地址是通過取keccak256(rlp(creator_address, nonce of the creator)).

在這裡您可以看到一個範例,說明您的假設是錯誤的

方法 1

我認為一種可能性可能是遍歷事務並使用等效的eth_getTransactionReceipt並檢查獲得的對像是否包含該contractAddress欄位並檢查是否contractAddress對應於搜尋的對象。然後你必須檢查哪個地址創建了交易。所以你可以(可能)檢測到創建者的地址(我認為你應該知道你必須在哪個塊範圍內搜尋)。問題在於它僅適用於由交易引起的契約創建,並且可能不適用於內部交易,即在執行消息呼叫/契約創建期間創建契約時。

方法 2

如果合約儲存了所有者(例如,它在建構子中包含類似的東西owner=msg.sender並且所有者是一個公共變數),您可以直接讀取所有者的地址

方法 3 - 沒有 web3j

使用 etherscan 檢查合約的創建者

也許還有很多其他的可能性,我沒有弄清楚..

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