Ethereum Virtual Machine (EVM)
Ocuco-landskapet Ethereum virtuell maskin (EVM) är en decentraliserad virtuell miljö som kör kod konsekvent och säkert över alla Ethereum-noder. Noder kör EVM:n för att köra smarta kontrakt med hjälp av "gasen”för att mäta den beräkningskraft som krävs för driften, vilket säkerställer effektiv resursallokering och nätverkssäkerhet.
Förutsättningar
Grundläggande kunskaper om vanlig datavetenskaplig terminologi, såsom byte, minne och stackar, är nödvändiga för att förstå EVM. Det är också bra att vara bekväm med kryptografi och blockkedjekoncept som hashfunktioner och Merkle-träd.
Från huvudbok till tillståndsmaskin
Blockkedjor som Bitcoin beskrivs ofta som "distribuerade liggare", som upprätthåller en aktivitetsregister som följer en uppsättning regler som styr modifieringar. Till exempel kan en Bitcoin-adress inte spendera mer Bitcoin än den har mottagit. Dessa regler ligger till grund för alla transaktioner på Bitcoin och många andra blockkedjor.
Även om Ethereum har sin egen kryptovaluta (Ether) med liknande regler, stöder den också en kraftfullare funktion: smarta kontraktFör att förstå detta kan Ethereum bättre beskrivas som en distribuerad tillståndsmaskin. Ethereums tillstånd är en stor datastruktur som inte bara innehåller alla konton och saldon utan också ett maskintillstånd som kan ändras från block till block enligt fördefinierade regler och exekvera godtycklig maskinkod. EVM definierar reglerna för dessa tillståndsändringar.
Vad är skillnaden mellan EVM och Ethereum?
Ethereum är en plattform som låter människor skapa och köra applikationer på ett decentraliserat nätverk av datorer. Den har sin egen digitala valuta som heter Ether (ETH), som används för att betala för saker på nätverket. Tänk på Ethereum som en gigantisk, delad dator som alla kan använda för att bygga och köra sina appar utan en central myndighet som kontrollerar den.
Ocuco-landskapet Ethereum virtuell maskin är som motorn inuti den här gigantiska datorn. Den ser till att alla applikationer och smarta kontrakt (automatiserade avtal) körs på samma sätt på varje dator i nätverket. För att hålla saker rättvisa och effektiva använder EVM:n ett system som kallas "gas" för att mäta hur mycket datorkraft som behövs för varje uppgift, vilket säkerställer att resurser inte slösas bort.
Enkelt uttryckt är Ethereum hela plattformen som låter dig bygga och använda decentraliserade appar och kontrakt, medan Ethereum virtuell maskin är en del av plattformen som kör dessa appar och kontrakt, och ser till att allt fungerar smidigt och konsekvent över alla datorer i nätverket. Det här är skillnaden mellan EVM och Ethereum.
Ethereums tillståndsövergångsfunktion
EVM:n beter sig som en matematisk funktion: givet en ingång producerar den en deterministisk utdata. Detta kan formellt beskrivas som en tillståndsövergångsfunktion:
\[ Y(S, T) = S' \]
Givet ett gammalt giltigt tillstånd \(S \) och en ny uppsättning giltiga transaktioner \(T \), producerar Ethereums tillståndsövergångsfunktion \(Y(S, T) \) ett nytt giltigt utdatatillstånd \(S' \).
Ange
I Ethereum är tillståndet en enorm datastruktur som kallas en modifierad Merkle Patricia Trie, som länkar alla konton med hashkoder och reducerar dem till en enda rot-hash lagrad på blockkedjan.
Transaktioner
Transaktioner är kryptografiskt signerade instruktioner från konton, klassificerade i två typer: de som resulterar i meddelandeanrop och de som resulterar i kontraktsskapande. Kontraktsskapandet genererar ett nytt kontraktskonto som innehåller den kompilerade smarta kontraktets bytekod. När ett annat konto gör ett meddelandeanrop till detta kontrakt, exekverar det dess bytekod.
EVM-instruktioner
EVM:n fungerar som en stackmaskin med ett djup på 1024 objekt, vart och ett ett 256-bitars ord, valt för kompatibilitet med 256-bitars kryptografi (som Keccak-256-hashar eller secp256k1-signaturer). Under exekveringen bibehåller EVM:n ett transient minne (en ordadresserad byte-matris) som inte sparas mellan transaktioner. Kontrakt har en Merkle Patricia-lagringstrie (en ordadresserbar ordmatris) associerad med kontot och en del av det globala tillståndet.
Kompilerad smart kontrakts bytekod körs som Ethereum virtuell maskin opkoder, som utför standardstackoperationer som XOR, AND, ADD, SUB, etc., och blockkedjespecifika operationer som ADDRESS, BALANCE och BLOCKHASH.
EVM-implementeringar
Alla EVM-implementeringar måste följa Ethereums Yellow Paper-specifikationer. Under Ethereums historia har EVM genomgått flera revideringar, vilket resulterat i flera implementeringar i olika programmeringsspråk, inklusive:
- Py-EVM (Python)
- evmone (C++)
- ethereumjs-vm (JavaScript)
- eEVM (C++)
- varvtal (rost)
Dessa implementeringar säkerställer att EVM:n förblir konsekvent och säker på olika plattformar.