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;









2















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?










share|improve this question






























    2















    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?










    share|improve this question


























      2












      2








      2


      1






      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?










      share|improve this question














      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






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 9 hours ago









      shaneshane

      3,8714 gold badges12 silver badges35 bronze badges




      3,8714 gold badges12 silver badges35 bronze badges























          1 Answer
          1






          active

          oldest

          votes


















          3
















          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.






          share|improve this answer




























            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
            );



            );














            draft saved

            draft discarded
















            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









            3
















            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.






            share|improve this answer































              3
















              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.






              share|improve this answer





























                3














                3










                3









                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.






                share|improve this answer















                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.







                share|improve this answer














                share|improve this answer



                share|improve this answer








                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































                    draft saved

                    draft discarded















































                    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.




                    draft saved


                    draft discarded














                    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





















































                    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







                    Popular posts from this blog

                    Invision Community Contents History See also References External links Navigation menuProprietaryinvisioncommunity.comIPS Community ForumsIPS Community Forumsthis blog entry"License Changes, IP.Board 3.4, and the Future""Interview -- Matt Mecham of Ibforums""CEO Invision Power Board, Matt Mecham Is a Liar, Thief!"IPB License Explanation 1.3, 1.3.1, 2.0, and 2.1ArchivedSecurity Fixes, Updates And Enhancements For IPB 1.3.1Archived"New Demo Accounts - Invision Power Services"the original"New Default Skin"the original"Invision Power Board 3.0.0 and Applications Released"the original"Archived copy"the original"Perpetual licenses being done away with""Release Notes - Invision Power Services""Introducing: IPS Community Suite 4!"Invision Community Release Notes

                    Canceling a color specificationRandomly assigning color to Graphics3D objects?Default color for Filling in Mathematica 9Coloring specific elements of sets with a prime modified order in an array plotHow to pick a color differing significantly from the colors already in a given color list?Detection of the text colorColor numbers based on their valueCan color schemes for use with ColorData include opacity specification?My dynamic color schemes

                    Ласкавець круглолистий Зміст Опис | Поширення | Галерея | Примітки | Посилання | Навігаційне меню58171138361-22960890446Bupleurum rotundifoliumEuro+Med PlantbasePlants of the World Online — Kew ScienceGermplasm Resources Information Network (GRIN)Ласкавецькн. VI : Літери Ком — Левиправивши або дописавши її