What is the difference between bytecode, init code, deployed bytedcode, creation bytecode, and runtime bytecode?Why do `throw` and `revert()` create different bytecodes?Difference between bytecode and runtime bytecodeFirst instructions in bytecode (606060405)How to get smart contract run time bytecode from network without compiling anything?What is the “clone-bin” output in solc?Opcodes PUSH, DUP and SWAP?Understanding how a simple contract breaks into bytecodeDifference between Binary of the Contracts in Hex and contract bytecode?How to construct deployable bytecode from runtime bytecode?
What is the difference between bytecode, init code, deployed bytedcode, creation bytecode, and runtime bytecode?
How is the speed of nucleons in the nucleus measured?
How to catch creatures that can predict the next few minutes?
Does the Flixbus N770 from Antwerp to Copenhagen go by ferry to Denmark
As a girl, how can I voice male characters effectively?
How to be productive while waiting for meetings to start, when managers are casual about being late
In what sense is SL(2,q) "very far from abelian"?
What are the most important factors in determining how fast technology progresses?
Meaning/Translation of title "The Light Fantastic" By Terry Pratchet
Can I voluntarily exit from the US after a 20 year overstay, or could I be detained at the airport?
Minimum perfect squares needed to sum up to a target
The locus of polynomials with specified root multiplicities
Should I be able to see patterns in a HS256 encoded JWT?
How to prove (A v B), (A → C), (B → D) therefore (C v D)
What kind of nut is this
What are the limits on an impeached and not convicted president?
Is there any problem with students seeing faculty naked in university gym?
Spectrometer vs Spectrometry vs Spectroscopy
Remove one or more fields, delimited by a "-", at end of line
Are there any conflicts with casting Fire Wings while Wild Shaped?
Is there a difference between historical fiction and creative non-fiction?
How much money should I save in order to generate $1000/month for the rest of my life?
How to accompany with piano in latin music when given only chords?
How come the Russian cognate for the Czech word "čerstvý" (fresh) means entirely the opposite thing (stale)?
What is the difference between bytecode, init code, deployed bytedcode, creation bytecode, and runtime bytecode?
Why do `throw` and `revert()` create different bytecodes?Difference between bytecode and runtime bytecodeFirst instructions in bytecode (606060405)How to get smart contract run time bytecode from network without compiling anything?What is the “clone-bin” output in solc?Opcodes PUSH, DUP and SWAP?Understanding how a simple contract breaks into bytecodeDifference between Binary of the Contracts in Hex and contract bytecode?How to construct deployable bytecode from runtime bytecode?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty
margin-bottom:0;
I constantly see different types of bytecode and do not know what each of them are. What are the differences between bytecode, init code, deployed bytedcode, creation bytecode, and runtime bytecode?
bytecode initcode creationcode runtimecode deployed-bytecode
add a comment
|
I constantly see different types of bytecode and do not know what each of them are. What are the differences between bytecode, init code, deployed bytedcode, creation bytecode, and runtime bytecode?
bytecode initcode creationcode runtimecode deployed-bytecode
add a comment
|
I constantly see different types of bytecode and do not know what each of them are. What are the differences between bytecode, init code, deployed bytedcode, creation bytecode, and runtime bytecode?
bytecode initcode creationcode runtimecode deployed-bytecode
I constantly see different types of bytecode and do not know what each of them are. What are the differences between bytecode, init code, deployed bytedcode, creation bytecode, and runtime bytecode?
bytecode initcode creationcode runtimecode deployed-bytecode
bytecode initcode creationcode runtimecode deployed-bytecode
asked 9 hours ago
shaneshane
3,8714 gold badges12 silver badges35 bronze badges
3,8714 gold badges12 silver badges35 bronze badges
add a comment
|
add a comment
|
1 Answer
1
active
oldest
votes
I wrote an article that goes over this information in depth. I will summarize it here.
tl;dr - There are only two types of bytecode on Ethereum but five different names to describe them.
Creation Bytecode
This is the code that most people are referring to when they say bytecode. This is the code that generates the runtime bytecode—it includes constructor logic and constructor parameters of a smart contract. The creation bytecode is equivalent to the input data of the transaction the creates a contract, provided the sole purpose of the transaction is to create the contract.
When you compile a contract, the creation bytecode is generated for you. A truffle-generated ABI refers to the creation bytecode as bytecode. This is also the bytecode that is shown when clicking "compilation details" for a contract on Remix.
This code can be retrieved on-chain using type(ContractName).creationCode
.
Creation bytecode can be retrieved off-chain by the getTransactionByHash
JSON RPC call.
Runtime Bytecode
This is the code that is stored on-chain that describes a smart contract. This code does not include the constructor logic or constructor parameters of a contract, as they are not relevant to the code that was used to actually create the contract.
The runtime bytecode for a contract can be retrieved on-chain by using an assembly block and calling extcodecopy(a)
. The hash of the runtime bytecode is returned from extcodehash(a)
. This opcode was introduced with EIP 1052 and included in the Constantinople hard fork.
The runtime bytecode can also be retrieved on-chain by using Solidity's type information. The Solidity code to retrieve the bytecode is type(ContractName).runtimeCode
.
Finally, this code is returned by the JSON RPC call, getCode
.
Bytecode
This should be used as the umbrella term that encompasses both runtime bytecode and creation bytecode, but it is more commonly used to describe the runtime bytecode.
Deployed Bytecode
This term is used exclusively by truffle-generated ABIs and refers to a contract's runtime bytecode. I have not seen it used outside of these files.
Init Code
This code is the same as the creation bytecode. It is the code that creates the bytecode that is stored on-chain.
This term is commonly used in articles referring the the bytecode needed when using the create2
opcode.
Conclusion
It is my opinion that the only terms that should be used are runtime bytecode and creation bytecode, as they are explicitly describing what the code is. I believe bytecode should be an umbrella term that includes both of these aforementioned term.
add a comment
|
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "642"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fethereum.stackexchange.com%2fquestions%2f76334%2fwhat-is-the-difference-between-bytecode-init-code-deployed-bytedcode-creation%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
I wrote an article that goes over this information in depth. I will summarize it here.
tl;dr - There are only two types of bytecode on Ethereum but five different names to describe them.
Creation Bytecode
This is the code that most people are referring to when they say bytecode. This is the code that generates the runtime bytecode—it includes constructor logic and constructor parameters of a smart contract. The creation bytecode is equivalent to the input data of the transaction the creates a contract, provided the sole purpose of the transaction is to create the contract.
When you compile a contract, the creation bytecode is generated for you. A truffle-generated ABI refers to the creation bytecode as bytecode. This is also the bytecode that is shown when clicking "compilation details" for a contract on Remix.
This code can be retrieved on-chain using type(ContractName).creationCode
.
Creation bytecode can be retrieved off-chain by the getTransactionByHash
JSON RPC call.
Runtime Bytecode
This is the code that is stored on-chain that describes a smart contract. This code does not include the constructor logic or constructor parameters of a contract, as they are not relevant to the code that was used to actually create the contract.
The runtime bytecode for a contract can be retrieved on-chain by using an assembly block and calling extcodecopy(a)
. The hash of the runtime bytecode is returned from extcodehash(a)
. This opcode was introduced with EIP 1052 and included in the Constantinople hard fork.
The runtime bytecode can also be retrieved on-chain by using Solidity's type information. The Solidity code to retrieve the bytecode is type(ContractName).runtimeCode
.
Finally, this code is returned by the JSON RPC call, getCode
.
Bytecode
This should be used as the umbrella term that encompasses both runtime bytecode and creation bytecode, but it is more commonly used to describe the runtime bytecode.
Deployed Bytecode
This term is used exclusively by truffle-generated ABIs and refers to a contract's runtime bytecode. I have not seen it used outside of these files.
Init Code
This code is the same as the creation bytecode. It is the code that creates the bytecode that is stored on-chain.
This term is commonly used in articles referring the the bytecode needed when using the create2
opcode.
Conclusion
It is my opinion that the only terms that should be used are runtime bytecode and creation bytecode, as they are explicitly describing what the code is. I believe bytecode should be an umbrella term that includes both of these aforementioned term.
add a comment
|
I wrote an article that goes over this information in depth. I will summarize it here.
tl;dr - There are only two types of bytecode on Ethereum but five different names to describe them.
Creation Bytecode
This is the code that most people are referring to when they say bytecode. This is the code that generates the runtime bytecode—it includes constructor logic and constructor parameters of a smart contract. The creation bytecode is equivalent to the input data of the transaction the creates a contract, provided the sole purpose of the transaction is to create the contract.
When you compile a contract, the creation bytecode is generated for you. A truffle-generated ABI refers to the creation bytecode as bytecode. This is also the bytecode that is shown when clicking "compilation details" for a contract on Remix.
This code can be retrieved on-chain using type(ContractName).creationCode
.
Creation bytecode can be retrieved off-chain by the getTransactionByHash
JSON RPC call.
Runtime Bytecode
This is the code that is stored on-chain that describes a smart contract. This code does not include the constructor logic or constructor parameters of a contract, as they are not relevant to the code that was used to actually create the contract.
The runtime bytecode for a contract can be retrieved on-chain by using an assembly block and calling extcodecopy(a)
. The hash of the runtime bytecode is returned from extcodehash(a)
. This opcode was introduced with EIP 1052 and included in the Constantinople hard fork.
The runtime bytecode can also be retrieved on-chain by using Solidity's type information. The Solidity code to retrieve the bytecode is type(ContractName).runtimeCode
.
Finally, this code is returned by the JSON RPC call, getCode
.
Bytecode
This should be used as the umbrella term that encompasses both runtime bytecode and creation bytecode, but it is more commonly used to describe the runtime bytecode.
Deployed Bytecode
This term is used exclusively by truffle-generated ABIs and refers to a contract's runtime bytecode. I have not seen it used outside of these files.
Init Code
This code is the same as the creation bytecode. It is the code that creates the bytecode that is stored on-chain.
This term is commonly used in articles referring the the bytecode needed when using the create2
opcode.
Conclusion
It is my opinion that the only terms that should be used are runtime bytecode and creation bytecode, as they are explicitly describing what the code is. I believe bytecode should be an umbrella term that includes both of these aforementioned term.
add a comment
|
I wrote an article that goes over this information in depth. I will summarize it here.
tl;dr - There are only two types of bytecode on Ethereum but five different names to describe them.
Creation Bytecode
This is the code that most people are referring to when they say bytecode. This is the code that generates the runtime bytecode—it includes constructor logic and constructor parameters of a smart contract. The creation bytecode is equivalent to the input data of the transaction the creates a contract, provided the sole purpose of the transaction is to create the contract.
When you compile a contract, the creation bytecode is generated for you. A truffle-generated ABI refers to the creation bytecode as bytecode. This is also the bytecode that is shown when clicking "compilation details" for a contract on Remix.
This code can be retrieved on-chain using type(ContractName).creationCode
.
Creation bytecode can be retrieved off-chain by the getTransactionByHash
JSON RPC call.
Runtime Bytecode
This is the code that is stored on-chain that describes a smart contract. This code does not include the constructor logic or constructor parameters of a contract, as they are not relevant to the code that was used to actually create the contract.
The runtime bytecode for a contract can be retrieved on-chain by using an assembly block and calling extcodecopy(a)
. The hash of the runtime bytecode is returned from extcodehash(a)
. This opcode was introduced with EIP 1052 and included in the Constantinople hard fork.
The runtime bytecode can also be retrieved on-chain by using Solidity's type information. The Solidity code to retrieve the bytecode is type(ContractName).runtimeCode
.
Finally, this code is returned by the JSON RPC call, getCode
.
Bytecode
This should be used as the umbrella term that encompasses both runtime bytecode and creation bytecode, but it is more commonly used to describe the runtime bytecode.
Deployed Bytecode
This term is used exclusively by truffle-generated ABIs and refers to a contract's runtime bytecode. I have not seen it used outside of these files.
Init Code
This code is the same as the creation bytecode. It is the code that creates the bytecode that is stored on-chain.
This term is commonly used in articles referring the the bytecode needed when using the create2
opcode.
Conclusion
It is my opinion that the only terms that should be used are runtime bytecode and creation bytecode, as they are explicitly describing what the code is. I believe bytecode should be an umbrella term that includes both of these aforementioned term.
I wrote an article that goes over this information in depth. I will summarize it here.
tl;dr - There are only two types of bytecode on Ethereum but five different names to describe them.
Creation Bytecode
This is the code that most people are referring to when they say bytecode. This is the code that generates the runtime bytecode—it includes constructor logic and constructor parameters of a smart contract. The creation bytecode is equivalent to the input data of the transaction the creates a contract, provided the sole purpose of the transaction is to create the contract.
When you compile a contract, the creation bytecode is generated for you. A truffle-generated ABI refers to the creation bytecode as bytecode. This is also the bytecode that is shown when clicking "compilation details" for a contract on Remix.
This code can be retrieved on-chain using type(ContractName).creationCode
.
Creation bytecode can be retrieved off-chain by the getTransactionByHash
JSON RPC call.
Runtime Bytecode
This is the code that is stored on-chain that describes a smart contract. This code does not include the constructor logic or constructor parameters of a contract, as they are not relevant to the code that was used to actually create the contract.
The runtime bytecode for a contract can be retrieved on-chain by using an assembly block and calling extcodecopy(a)
. The hash of the runtime bytecode is returned from extcodehash(a)
. This opcode was introduced with EIP 1052 and included in the Constantinople hard fork.
The runtime bytecode can also be retrieved on-chain by using Solidity's type information. The Solidity code to retrieve the bytecode is type(ContractName).runtimeCode
.
Finally, this code is returned by the JSON RPC call, getCode
.
Bytecode
This should be used as the umbrella term that encompasses both runtime bytecode and creation bytecode, but it is more commonly used to describe the runtime bytecode.
Deployed Bytecode
This term is used exclusively by truffle-generated ABIs and refers to a contract's runtime bytecode. I have not seen it used outside of these files.
Init Code
This code is the same as the creation bytecode. It is the code that creates the bytecode that is stored on-chain.
This term is commonly used in articles referring the the bytecode needed when using the create2
opcode.
Conclusion
It is my opinion that the only terms that should be used are runtime bytecode and creation bytecode, as they are explicitly describing what the code is. I believe bytecode should be an umbrella term that includes both of these aforementioned term.
edited 8 hours ago
answered 9 hours ago
shaneshane
3,8714 gold badges12 silver badges35 bronze badges
3,8714 gold badges12 silver badges35 bronze badges
add a comment
|
add a comment
|
Thanks for contributing an answer to Ethereum Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fethereum.stackexchange.com%2fquestions%2f76334%2fwhat-is-the-difference-between-bytecode-init-code-deployed-bytedcode-creation%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown