Grunnleggende om Web3- og DApp-utvikling · leksjon

Kompilere smartkontrakter

Lær å bruke Solidity-kompilatoren i Remix til å kontrollere om det finnes feil og generere bytekode og ABI for kontraktene.

Leksjon 2 av 312 trinn

Kompilere smartkontrakter er en gratis leksjon i Grunnleggende om Web3- og DApp-utvikling på CoddyKit. Dette er leksjon 2 av 3. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Grunnleggende om Web3- og DApp-utvikling, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende om Web3- og DApp-utvikling inneholder totalt 3 leksjoner.

Hvorfor kompilere smartkontrakter?

Smartkontrakter som er skrevet i Solidity, er menneskelesbar kode. Men blokkjeder forstår ikke Solidity direkte! De trenger et maskinvennlig format.

Det er her kompilering kommer inn. Den oversetter Solidity-koden din til «bytekode», som Ethereum Virtual Machine (EVM) kan kjøre. Den genererer også et Application Binary Interface (ABI) for samhandling.

Hva er bytekode?

Bytecode er koden på lavt nivå som kan leses av maskiner, og som smartkontrakter kompileres til. Tenk på den som det kjørbare programmet for Ethereum Virtual Machine (EVM).

Når du distribuerer en kontrakt, distribuerer du i praksis bytekoden til blokkjeden. Det er denne bytekoden EVM behandler når noen samhandler med kontrakten din.

Introduksjon til ABI

Application Binary Interface (ABI) er en JSON-tabell som beskriver funksjonene i smartkontrakten, parameterne de tar inn, og typene data de returnerer.

Den fungerer som en oppskrift som forteller andre programmer, for eksempel en DApp-frontend, hvordan de skal «snakke» med den distribuerte kontrakten din. Uten ABI-en ville en frontend ikke vite hvordan den skulle kalle en bestemt funksjon eller tolke dataene fra den.

Remix-fanen for kompilering

Remix IDE har en egen fane kalt «Solidity Compiler», vanligvis representert av et kompilatorikon i sidemenyen til venstre. Her administrerer du alle innstillinger og handlinger knyttet til kompilering.

Når du åpner denne fanen, prøver Remix automatisk å finne og kompilere den aktive Solidity-filen, slik at du raskt får tilbakemelding.

Angi kompilatorversjonen

Det første viktige steget er å velge riktig Solidity-kompilatorversjon. Kontrakten angir vanligvis dette med en linje som pragma solidity ^0.8.0;.

Remix foreslår ofte en versjon. Det er viktig at kompilatorversjonen du velger i Remix, samsvarer med eller er kompatibel med pragma-direktivet i kontraktfilen. Uoverensstemmelser kan føre til feil!

EVM-versjon og optimalisering

Du kan også velge EVM-versjon. Dette gjelder de spesifikke funksjonene og opkodene som er tilgjengelige i ulike Ethereum-hardforker. For de fleste nye kontrakter er den nyeste stabile versjonen et godt valg.

Enable optimization er en annen innstilling. Når den er aktivert, prøver kompilatoren å redusere størrelsen på bytekoden og gaskostnadene for kontrakten. Dette er som regel nyttig, men kan noen ganger gjøre feilsøking vanskeligere.

Kompilere en enkel kontrakt

Åpne fanen «Solidity Compiler» i Remix. Kontroller at filen er valgt, og at kompilatorversjonen samsvarer med pragma. Klikk deretter på knappen «Compile [contract_name].sol».

Hvis kompileringen lykkes, vises et grønt hakemerke ved siden av kompilatorikonet! Hvis ikke, viser Remix feil eller advarsler i konsollen.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleStorage {
    uint public myNumber;

    function setNumber(uint _newNumber) public {
        myNumber = _newNumber;
    }

    function getNumber() public view returns (uint) {
        return myNumber;
    }
}

Undersøke resultatet: Bytecode

Etter en vellykket kompilering blar du nedover i kompilatorfanen. Der finner du delen «Bytecode». Denne lange strengen med heksadesimale tegn er kontraktens kompilerte kode.

Det er denne bytekoden som distribueres til blokkjeden. Den er kompakt og effektiv for EVM å behandle, men ikke lett å lese for mennesker.

Undersøke resultatet: ABI

Under bytekoden finner du også en del kalt «ABI». Klikk for å kopiere den. Dette er en JSON-tabell som beskriver alle offentlige og eksterne funksjoner, hendelser og tilstandsvariabler i kontrakten.

Denne JSON-en er avgjørende for at eksterne applikasjoner, for eksempel en web-DApp, skal vite nøyaktig hvordan de skal samhandle med kontrakten din på blokkjeden.

Vanlige kompileringsfeil

Ikke bekymre deg hvis kontrakten ikke kompileres på første forsøk! Remix viser nyttige feilmeldinger i konsollen og direkte i kodeeditoren.

  • Syntaksfeil: Manglende semikolon eller parenteser som ikke passer sammen.
  • Versjonsuoverensstemmelse: pragma samsvarer ikke med den valgte kompilatoren.
  • Udefinerte variabler/funksjoner: En skrivefeil i navnet, eller navnet er ikke deklarert.

Les feilmeldingene nøye. De peker ofte direkte på linjenummeret og forklarer problemet.

Kjapp sjekk

Du har lært om kompilering, bytecode og ABI. Hva er hovedformålet med ABI-en til en smartkontrakt?

Oppsummering og neste steg

Godt jobbet! Du har lært at kompilering av Solidity-kode gjør den om til bytecode (for EVM) og genererer en ABI (for ekstern samhandling).

Du har også utforsket kompilatoren i Remix IDE, forstått kompilatorinnstillingene og sett hvor du finner den genererte bytekoden og ABI-en.

Deretter skal du bruke denne kunnskapen i praksis ved å distribuere de kompilerte smartkontraktene dine til et simulert blokkjede-miljø!

Gratis å komme i gang

Lær deg Grunnleggende om Web3- og DApp-utvikling med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
29
Leksjoner
105

Ofte stilte spørsmål

Er leksjonen «Kompilere smartkontrakter» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende om Web3- og DApp-utvikling, inkludert «Kompilere smartkontrakter», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Grunnleggende om Web3- og DApp-utvikling inneholder totalt 3 leksjoner.

Hva lærer jeg i «Kompilere smartkontrakter»?

Lær å bruke Solidity-kompilatoren i Remix til å kontrollere om det finnes feil og generere bytekode og ABI for kontraktene. Du øver på Grunnleggende om Web3- og DApp-utvikling med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Grunnleggende om Web3- og DApp-utvikling?

Ingen tidligere erfaring er nødvendig. Grunnleggende om Web3- og DApp-utvikling på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 3.

Hvor lang tid tar leksjonen «Kompilere smartkontrakter»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Grunnleggende om Web3- og DApp-utvikling-leksjonen?

Ja. Alle Grunnleggende om Web3- og DApp-utvikling-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Oversikt over Remix IDE
  2. Kompilere smartkontrakter
  3. Distribuere og samhandle
← Tilbake til Grunnleggende om Web3- og DApp-utvikling