Bytecode
合約創建合約時,合約字節碼儲存在哪裡?
當合約創建合約時,新合約的字節碼儲存在哪裡?
例如:這個 Maker 合約是由他們的部署合約創建的:https ://etherscan.io/address/0x448a5065aebb8e423f0896e6c5d525c040f59af3 這是內部交易:https ://etherscan.io/txsInternal?block=4752011
Etherscan 說
0x448a5065aebb8e423f0896e6c5d525c040f59af3
是在交易中創建的0xa066bef4d74ad5433cc89ea21799d7df3e2f37ec0879f9ca74c419e861064fbf
,通常,當外部交易創建合約時,該字節碼位於input
.在這種情況下,數據被發送到部署(現有)合約以告訴它部署新合約,但新合約的字節碼不在區塊鏈數據中。字節碼會在事件日誌中嗎?或者別的地方?
這是儲存合約字節碼的一個實現細節:Geth 節點可以以不同於 Parity 節點的方式儲存它。重要的是所有節點的 API 是一致的。
web3.eth.getCode(someAddress)
將在 處給出合約的字節碼someAddress
。通常,當外部交易創建合約時,該字節碼位於
input
.不完全是。可能常見的誤解
input
是創建合約的 is 程式碼,但實際上input
是返回合約程式碼的 is 程式碼。請參閱 與部署時使用的不同的區塊鏈上的字節碼