Solidity
這兩個是否相等: web3.eth.getCode(<contract-address>) === type(Contract).creationCode
這個問題以前曾以各種複雜的方式提出過。我在問一個非常簡單的問題,並且想要一個非常直接的答案(如果可能的話)。呼叫返回的結果是什麼
web3.eth.getCode(<contract-address>)
:
type(Contract).creationCode
type(Contract).runtimeCode
假設當然
contract-address
是地址Contract
不,getCode 方法返回儲存在區塊鏈上的執行時程式碼。
你可以在這篇文章中看到:
執行時字節碼:
這是儲存在鏈上的描述智能合約的程式碼。此程式碼不包括合約的建構子邏輯或建構子參數,因為它們與用於實際創建合約的程式碼無關。可以使用組裝塊並呼叫 extcodecopy(a) 在鏈上檢索合約的執行時字節碼。執行時字節碼的雜湊值從 extcodehash(a) 返回。此操作碼是隨 EIP 1052 引入的,並包含在君士坦丁堡硬分叉中。
可以使用type(ContractName).runtimeCode 在鏈上檢索此程式碼。最後,可以通過 JSON RPC 呼叫 getCode 離線檢索此程式碼。