Sådan skrives og implementeres din første smarte kontrakt

Lige siden Ethereum præsenterede kryptorummet med sin tilstedeværelse i midten af ​​2015, har den canadisk-russiske programmør Vitalik Buterins revolutionære opfindelse født mange nye decentrale applikationer (dApps). Sammen med det utal af dApps, der bygges, tilskrives Ethereums succes hovedsagelig til dens implementering af smarte kontrakter.

Det er interessant nok, at opfindelsen af ​​smarte kontrakter går tilbage til 1996. Computerforsker Nick Szabo udarbejdede udtrykket "smarte kontrakter" og forklarer dem som følger:

”Jeg kalder disse nye kontrakter” smarte ”, fordi de er langt mere funktionelle end deres livløse papirbaserede forfædre. Ingen anvendelse af kunstig intelligens er underforstået. En smart kontrakt er et sæt løfter, der er specificeret i digital form, herunder protokoller, inden for hvilke parterne opfylder disse løfter. ”
- Nick Szabo, 1996

Senere fortsatte hans arbejde med at inspirere mange andre forskere og videnskabsfolk, inklusive Vitalik, der skabte Ethereum.

Grundlæggende info

Før vi går nærmere ind i vejledningen, er det vigtigt at forstå to vigtige begreber.

Den første ting, vi er nødt til at forstå, er, hvad Ethereum Virtual Machine (EVM) er. Dets eneste formål er at fungere som et runtime-miljø for smarte kontrakter baseret på Ethereum. Tænk på det som en global supercomputer, der kører alle de smarte kontrakter. Som navnet antyder er EVM virtuel og ikke en fysisk maskine. Du kan læse mere om EVM her.

Det andet koncept, vi skal forstå, er hvad der er gas. I EVM er gas en måleenhed, der bruges til at tildele et gebyr til hver transaktion med en smart kontrakt. Hver beregning, der sker i EVM, kræver gas. Jo mere kompliceret og trættende det er, desto mere gas er der behov for at udføre den smarte kontrakt.

Hver transaktion specificerer den gaspris, den er villig til at betale i ether for hver gasenhed, hvilket gør det muligt for markedet at bestemme forholdet mellem prisen på ether og omkostningerne ved databehandling (som målt i gas). Det er kombinationen af ​​de to anvendte samlede gas ganget med betalt gaspris, der resulterer i det samlede gebyr, der betales ved en transaktion.

Gebyr for transaktion = Samlet benyttet gas * gaspris;

Læs mere om gas her.

Nu hvor du har grundlæggende viden om, hvad en smart kontrakt er, og hvordan den smarte kontrakt løber, kan vi gå direkte ind på, hvordan vi skal lave vores helt egen smarte kontrakt!

Sætte op

Vi vil bruge et værktøj til dette: Pragma. Det er en nem at bruge platform til at oprette og implementere smarte kontrakter. Tilmeld dig her og gå redaktøren:

Log ind på Metamask. Hvis du ikke har installeret MetaMask endnu, kan du starte her.

Skift til Kovan-testnetværket både i Pragma og MetaMask.
Bare for at give dig en kort oversigt over testnet, se denne artikel.

Ethereum-mainnet er det officielle Ethereum-netværk. Det er mere sikkert og bruger Ether, der har reel monetær værdi.

Testnet er legeplads Ethereum-netværk, hvor Ether er aftalt i at ikke have nogen monetær værdi. Udviklere bruger disse legepladser til at teste applikationer, før de implementeres på mainnet for deres brugere.

For at skifte mellem disse netværk skal du klikke på netværksnavnet ved siden af ​​MetaMask-ikonet og vælge netværket. For denne tutorial skal du vælge Kovan.

Skrivning af den smarte kontrakt

Følgende kontrakt implementerer den enkleste form for et cryptocurrency. Det er muligt at generere mønter ud af luften, men kun den person, der oprettede kontrakten, er i stand til at gøre det (det er trivielt at implementere en anden udstedelsesordning). Desuden kan hvem som helst sende mønter til hinanden uden at skulle registrere et brugernavn og adgangskode. Alt hvad du behøver er et Ethereum-tastatur.

Denne kode giver dig dybest set mulighed for at præge og sende tokens til andre konti.

Lad os gennemgå det linje for linje:

pragma-soliditet ^ 0,4,21;

Dette indikerer, at kildekoden er skrevet til Solidity version 0.4.21 eller noget nyt, der ikke bryder funktionaliteten. Dette er for at sikre, at koden ikke opfører sig anderledes med de nye compiler-versioner.

kontrakt din token

Alt, der er relateret til din token, er inde i denne kontrakt. I det væsentlige er en kontrakt i soliditet indsamling af funktioner og tilstand (kode og data), der sidder på en adresse på Ethereum blockchain.

adressere offentlig minter;

Dette er minterens adresse. Nøgleordet "offentligt" gør disse variabler læsbare udefra.

begivenhed sendt (adresse fra, adresse til, uint beløb);

Begivenheder giver lette klienter (UI) mulighed for at reagere effektivt på ændringerne.

funktion yourToken () offentlig {
minter = msg.sender;
}

Lad os indstille din Ethereum-adresse som aftager af kontrakten. Du skal have adgang til kontrakten gennem din MetaMask for at være i stand til at prale. Vi gennemgår dette igen, når vi har installeret kontrakten.

funktion mint (adressemodtager, uint beløb) offentlig {
hvis (msg.sender! = minter) vender tilbage;
saldi [modtager] + = mængde;
}

Denne funktion giver dig mulighed for at præcisere den mængde mønter, du vil. Du kan mynte så mange tokens, som du vil. If-betingelsen siger, at systemet skal stoppe eksekveringen, hvis du ikke er minteren, som er indstillet i din Token-funktion.

Hvis du faktisk er minteren, giver det dig muligheden for at printe symbolerne.

funktion send (adressemodtager, uint beløb) offentlig {
hvis (balancerer [msg.sender] 
saldi [msg.sender] - = beløb;
saldi [modtager] + = mængde;
udsende sendt (msg.sender, modtager, beløb);
}

Dette er en funktion, der lader en adresse sende tokenerne til en anden adresse. Det tager to parametre: modtager og beløb. Det reducerer beløbet fra afsenderens adresse og tilføjer det samme beløb til modtagerens adresse. Begivenhed sendt, som vi erklærede tidligere, bruges nu til at udføre overførslen. I øjeblikket har vi opbevaret afsenderen som msg.sender, som er minteren, da vi ikke ønsker at komplicere kontrakten.

Det er det. Din kontrakt er nu klar, så lad os sammenstille den.

Udarbejdelse og implementering af den smarte kontrakt

Når kontrakten er udarbejdet, lad os implementere den på blockchain. Som nævnt tidligere bruger vi Kovan testnet til at implementere kontrakten.

Kontroller, om den smarte kontrakt er installeret.

For den kontrakt, jeg implementerede til denne tutorial, er dette transaktionen. Du kan også se det i Pragma under dine kontrakter.

Interagere med den smarte kontrakt i Pragma

Lad os være 1000000 mønter!Undertegnelse af transaktionenYay!

Der har du det. Din første smarte kontrakt, implementeret på blockchain. :)

En masse nye koncepter blev introduceret sammen med et par utroligt nyttige værktøjer. Det kan være lidt overvældende, og det er okay! Bare prøv at få dit hoved rundt om koncepterne og løb derefter med det.

Har du oprettet nogen enkle, men interessante smarte kontrakter? Skriv dem i kommentarerne, og jeg tilføjer dem i indlægget til reference.

Har du spørgsmål? Tilføj dem i kommentarerne, eller deltag i vores telegramgruppe, og tal direkte med os.