Solidity

這兩個是否相等: web3.eth.getCode(<contract-address>) === type(Contract).creationCode

  • May 21, 2021

這個問題以前曾以各種複雜的方式提出過。我在問一個非常簡單的問題,並且想要一個非常直接的答案(如果可能的話)。呼叫返回的結果是什麼web3.eth.getCode(&lt;contract-address&gt;)

  • type(Contract).creationCode
  • type(Contract).runtimeCode

假設當然contract-address是地址Contract

不,getCode 方法返回儲存在區塊鏈上的執行時程式碼。

你可以在這篇文章中看到:

執行時字節碼:

這是儲存在鏈上的描述智能合約的程式碼。此程式碼不包括合約的建構子邏輯或建構子參數,因為它們與用於實際創建合約的程式碼無關。可以使用組裝塊並呼叫 extcodecopy(a) 在鏈上檢索合約的執行時字節碼。執行時字節碼的雜湊值從 extcodehash(a) 返回。此操作碼是隨 EIP 1052 引入的,並包含在君士坦丁堡硬分叉中。

可以使用type(ContractName).runtimeCode 在鏈上檢索此程式碼。最後,可以通過 JSON RPC 呼叫 getCode 離線檢索此程式碼。

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