This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
dido:public:ra:xapend:xapend.a_glossary:e:evm_bytecode [2022/05/26 23:16] nick created |
dido:public:ra:xapend:xapend.a_glossary:e:evm_bytecode [2022/06/01 12:54] (current) nick |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Evm_bytecode ====== | + | ====== Ethereum Virtual Machine (EVM) Bytecode ====== |
| [[dido:public:ra:xapend:xapend.a_glossary:start| Return to Glossary ]] | [[dido:public:ra:xapend:xapend.a_glossary:start| Return to Glossary ]] | ||
| - | **Evm_bytecode** is ... | + | **[[dido:public:ra:xapend:xapend.a_glossary:e:evm]] Bytecode** is a low-level programming language that is compiled from a high-level programming language such as solidity. EVM is a [[dido:public:ra:xapend:xapend.a_glossary:v:vm]] residing between the OSI [[dido:public:ra:xapend:xapend.a_glossary:o:os]] and [[dido:public:ra:xapend:xapend.a_glossary:a:applayer]] layers to mitigate OS dependency. Thankfully to EVM, Ethereum smart contract can be run on almost any computer. If you are a [[dido:public:ra:xapend:xapend.a_glossary:j:java]] developer, you can think of [[dido:public:ra:xapend:xapend.a_glossary:j:jvm]] as the same mechanism. EVM [[dido:public:ra:xapend:xapend.a_glossary:b:bytecode]] looks like the code below. It is not human-readable but readable for the machine. |
| <Code solidity linenums:1| Example of a EVM ByteCode> | <Code solidity linenums:1| Example of a EVM ByteCode> | ||
| - | 00000d8b PUSH1 #2 {var_el_25} {var_co_53} | + | 6080604052348015600f57600080fd5b5060878061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063037a417c14602d575b600080fd5b60336049565b6040518082815260200191505060405180910390f35b6000600190509056fea265627a7a7230582050d33093e20eb388eec760ca84ba30ec42dadbdeb8edf5cd8b261e89b8d4279264736f6c634300050a0032 |
| - | 00000d8d EXP {var_co_53} | + | |
| - | 00000d8e SUB {var_c0_53} {var_a0_34} | + | |
| - | 00000d8f DUP4 {var_40_4} {var_co_54} | + | |
| - | 00000d90 AND {var_a0_35} {var_a@_34} {var_co_54} | + | |
| - | 00000d91 PUSH1 #0 {var_co_55} | + | |
| - | 00000d93 SWAP1 {var_a@_35} {var_a0_36} {var_co_56} | + | |
| - | 00000d94 DUP2 {var_e0_26} | + | |
| </Code> | </Code> | ||
| - | Source: [[URI ]] | + | Source: [[https://medium.com/@eiki1212/explaining-ethereum-contract-abi-evm-bytecode-6afa6e917c3b ]] |