Bytecode

合約創建合約時,合約字節碼儲存在哪裡?

  • April 14, 2019

當合約創建合約時,新合約的字節碼儲存在哪裡?

例如:這個 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 程式碼。請參閱 與部署時使用的不同的區塊鏈上的字節碼

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