Grunderna i Web3- och DApp-utveckling · Lektion

Lagring, minne och stack

EVM:s datalokationer

Lektion 2 av 413 steg

Lagring, minne och stack är en gratis lektion i Grunderna i Web3- och DApp-utveckling på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Grunderna i Web3- och DApp-utveckling, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Grunderna i Web3- och DApp-utveckling innehåller totalt 4 lektioner.

Var data finns i EVM

EVM har flera separata platser för att lagra data, var och en med olika kostnader och livslängder.

De tre centrala datalokationerna är stacken, minnet och lagringen. Att välja rätt plats är viktigt när du skriver effektiva kontrakt.

Stacken

Stacken är EVM:s arbetsyta för beräkningar. Den rymmer upp till 1024 värden på vardera 256 bitar.

Opkoder lägger till och tar bort värden från stackens topp. Den är extremt billig men liten och tillfällig.

PUSH1 0x02   // [2]
PUSH1 0x04   // [2, 4]
MUL          // [8]
// stack vanishes when the call ends

Minne

Minne är en tillfällig, linjär byte-array som endast finns under ett enda transaktionsanrop.

Det används för sådant som är för stort för stacken, till exempel när du bygger en sträng eller en array. Det återställs till tomt när anropet är klart.

memory[0x00..0x20] = some value
// readable/writable during the call
// erased after execution ends

Lagring

Lagring är kontraktets permanenta tillstånd, som finns kvar på blockkedjan mellan transaktioner.

Det är en nyckel-värde-lagring som mappar 256-bitarsplatser till 256-bitarsvärden. Tillståndsvariabler i ett kontrakt lagras här.

storage slot 0 -> owner address
storage slot 1 -> total supply
storage slot 2 -> paused flag
// persists forever on-chain

Kostnadsjämförelse

Kostnaden ökar kraftigt beroende på plats:

  • Stack – billigast, några få gas per operation
  • Minne – billigt, växer med storleken
  • Lagring – mycket dyrt, särskilt vid första skrivningen

Varför lagring är dyrt

Lagringsskrivningar är dyra eftersom varje nod måste bevara dem för alltid. En ny lagringsskrivning (SSTORE) kan kosta 20000 gas.

Därför minimerar utvecklare lagringsskrivningar och föredrar minne för tillfälligt arbete.

Lagringsplatser och packning

Lagring är organiserad i platser på 32 byte. Mindre variabler kan packas i samma plats för att spara gas.

Två uint128-värden får till exempel plats tillsammans i en enda 256-bitarsplats.

slot 0: [ uint128 a | uint128 b ]
// two values packed into one slot
// saves a storage slot = saves gas

Calldata

En fjärde plats, calldata, innehåller skrivskyddad indata för en transaktion eller ett anrop.

Det är den billigaste platsen att läsa funktionsargument från och den kan inte ändras, vilket gör den idealisk för indata som du endast behöver läsa.

Välja rätt plats

Tumregler:

  • Använd stacken för kortlivade beräkningar
  • Använd minnet för tillfälliga strukturer
  • Använd lagring endast för data som måste bevaras
  • Använd calldata för skrivskyddad indata

Sammanfattning av livslängd

Varje plats har en egen livslängd:

  • Stack och minne – försvinner när anropet avslutas
  • Lagring – bevaras permanent på kedjan
  • Calldata – finns under anropets hela varaktighet och är skrivskyddad

Sammanfattning

EVM delar upp data i stack, minne, lagring och calldata, ungefär ordnade från billigast och kortast livslängd till dyrast och mest permanenta.

Kloka utvecklare håller permanenta lagringsskrivningar till ett minimum.

Snabbtest

Testa dina kunskaper om EVM:s datalokationer.

Repetition: Lagring, minne, stack

Du har lärt dig att:

  • Stacken är billig, liten och tillfällig
  • Minne är tillfällig arbetsyta för ett anrop
  • Lagring är permanent men dyr
  • Calldata är billig, skrivskyddad indata

Nästa steg: opkoder i detalj.

Gratis att börja

Lär dig Grunderna i Web3- och DApp-utveckling med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
29
Lektioner
105

Vanliga frågor

Är lektionen ”Lagring, minne och stack” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i Web3- och DApp-utveckling, inklusive ”Lagring, minne och stack”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Grunderna i Web3- och DApp-utveckling innehåller totalt 4 lektioner.

Vad lär jag mig i ”Lagring, minne och stack”?

EVM:s datalokationer Ni övar på Grunderna i Web3- och DApp-utveckling med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Grunderna i Web3- och DApp-utveckling?

Du behöver inga förkunskaper. Utbildningen i Grunderna i Web3- och DApp-utveckling på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Lagring, minne och stack”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Grunderna i Web3- och DApp-utveckling-lektionen?

Ja. Varje Grunderna i Web3- och DApp-utveckling-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Ethereum Virtual Machine
  2. Lagring, minne och stack
  3. Opcodes
  4. Konton och tillstånd
← Tillbaka till Grunderna i Web3- och DApp-utveckling