Bogen “Creating Solidity smart contracts for Ethereum blockchain. Praktisk vejledning"

Bogen “Creating Solidity smart contracts for Ethereum blockchain. Praktisk vejledning"
I mere end et år har jeg arbejdet på bogen “Creating Solidity Smart Contracts for the Ethereum Blockchain. Praktisk vejledning", og nu er dette arbejde afsluttet, og bogen udgivet og tilgængelig i liter.

Jeg håber, at min bog vil hjælpe dig med hurtigt at komme i gang med at skabe Solidity smarte kontakter og distribuerede DApps til Ethereum blockchain. Den består af 12 lektioner med praktiske opgaver. Efter at have gennemført dem, vil læseren være i stand til at oprette deres egne lokale Ethereum-noder, udgive smarte kontrakter og kalde deres metoder, udveksle data mellem den virkelige verden og smarte kontrakter ved hjælp af orakler og arbejde med Rinkeby test-debug-netværk.

Bogen henvender sig til alle, der interesserer sig for avancerede teknologier inden for blockchains og hurtigt ønsker at få viden, der giver dem mulighed for at udføre et interessant og lovende arbejde.

Nedenfor finder du indholdsfortegnelsen og bogens første kapitel (også på Litrese fragmenter af bogen er tilgængelige). Jeg håber at modtage feedback, kommentarer og forslag. Alt dette vil jeg forsøge at tage højde for, når jeg forbereder næste udgave af bogen.

indholdsfortegnelseIndledningVores bog er beregnet til dem, der ikke kun ønsker at forstå principperne for Ethereum blockchain, men også at få praktiske færdigheder i at skabe distribuerede DApps i Solidity-programmeringssproget til dette netværk.

Det er bedre ikke bare at læse denne bog, men at arbejde med den og udføre praktiske opgaver beskrevet i lektionerne. For at fungere skal du bruge en lokal computer, virtuel eller cloud-server med Debian eller Ubuntu OS installeret. Du kan også bruge Raspberry Pi til at udføre mange opgaver.

Ved den første lektion Vi vil se på driftsprincipperne for Ethereum blockchain og grundlæggende terminologi, og også tale om, hvor denne blockchain kan bruges.

mål anden lektion — opret en privat Ethereum blockchain-knude til yderligere arbejde inden for dette kursus på en Ubuntu- og Debian-server. Vi vil se på funktionerne ved at installere grundlæggende hjælpeprogrammer, såsom geth, som sikrer driften af ​​vores blockchain-knude, såvel som den sværm decentraliserede datalagringsdæmon.

Tredje lektion vil lære dig, hvordan du eksperimenterer med Ethereum på en billig Raspberry Pi-mikrocomputer. Du vil installere Rasberian-operativsystemet (OS) på Raspberry Pi, Geth-værktøjet, der driver blockchain-knuden, og Swarm decentraliserede datalagringsdæmon.

Lektion fire er dedikeret til konti og cryptocurrency-enheder på Ethereum-netværket, samt måder at overføre penge fra en konto til en anden fra Geth-konsollen. Du lærer, hvordan du opretter konti, starter pengeoverførselstransaktioner og får transaktionsstatus og kvittering.

I den femte lektion Du vil stifte bekendtskab med smarte kontrakter på Ethereum-netværket og lære om deres eksekvering af den virtuelle Ethereum-maskine.

Du vil oprette og udgive din første smarte kontrakt på Ethereums private netværk og lære, hvordan du kalder dens funktioner. For at gøre dette skal du bruge Remix Solidity IDE. Du vil også lære, hvordan du installerer og bruger solc batch-kompileren.
Vi vil også tale om det såkaldte Application Binary Interface (ABI) og lære dig, hvordan du bruger det.

Sjette lektion er dedikeret til at skabe JavaScript-scripts, der kører Node.js og udføre operationer med Solidity smarte kontrakter.

Du vil installere Node.js på Ubuntu, Debian og Rasberian OS, skrive scripts for at udgive en smart kontrakt på Ethereums lokale netværk og kalde dets funktioner.

Derudover vil du lære, hvordan du overfører penge mellem almindelige konti ved hjælp af scripts, samt krediterer dem til smarte kontraktkonti.

I den syvende lektion Du lærer, hvordan du installerer og bruger Truffle-rammeværket, som er populært blandt udviklere af smarte Solidity-kontrakter. Du lærer, hvordan du opretter JavaScript-scripts, der kalder kontraktfunktioner ved hjælp af trøffelkontraktmodulet, og tester din smarte kontrakt ved hjælp af Truffle.

Ottende lektion dedikeret til Solidity-datatyper. Du vil skrive smarte kontrakter, der arbejder med datatyper såsom signerede og usignerede heltal, signerede tal, strenge, adresser, komplekse variable, arrays, opregninger, strukturer og ordbøger.

I den niende lektion Du vil være et skridt tættere på at skabe smarte kontrakter for Ethereum-netværket. Du vil lære, hvordan du udgiver kontrakter ved hjælp af Truffle på Geths private netværk, samt på Rinkeby testnet. Fejlretning af en smart kontrakt på Rinkeby-netværket er meget nyttigt, før du udgiver den på hovednetværket - næsten alt er ægte der, men gratis.

Som en del af lektionen vil du oprette en Rinkeby-testnetværksknude, finansiere den med midler og udgive en smart kontrakt.

Lektion 10 dedikeret til Ethereum Swarm distribueret datalagring. Ved at bruge distribueret lagring sparer du på at gemme store mængder data på Ethereum blockchain.

I denne vejledning vil du oprette et lokalt Swarm-lager, skrive- og læsehandlinger på filer og filmapper. Dernæst vil du lære, hvordan du arbejder med den offentlige Swarm-gateway, skriver scripts for at få adgang til Swarm fra Node.js, samt bruger Perl Net::Ethereum::Swarm-modulet.

Lektionsmål 11 — mestre at arbejde med Solidity smarte kontrakter ved hjælp af det populære Python-programmeringssprog og Web3.py-rammeværket. Du installerer rammen, skriver scripts til at kompilere og udgive den smarte kontrakt og kalder dens funktioner. I dette tilfælde vil Web3.py blive brugt både alene og i forbindelse med Truffle integrerede udviklingsmiljø.

Ved lektion 12 du lærer at overføre data mellem smarte kontrakter og den virkelige verden ved hjælp af orakler. Dette vil være nyttigt for dig at modtage data fra websteder, IoT-enheder, forskellige enheder og sensorer og sende data fra smarte kontrakter til disse enheder. I den praktiske del af lektionen vil du oprette et orakel og en smart kontrakt, der modtager den aktuelle valutakurs mellem USD og rubler fra webstedet for Den Russiske Føderations centralbank.

Lektion 1. Kort om blockchain og Ethereum-netværketFormålet med lektionen: gøre dig bekendt med driftsprincipperne for Ethereum blockchain, dens anvendelsesområder og grundlæggende terminologi.
Praktiske opgaver: ikke dækket i denne lektion.

Der er næppe en softwareudvikler i dag, der ikke har hørt noget om blockchain-teknologi (Blockchain), kryptovalutaer (Cryptocurrency eller Crypto Currency), Bitcoin (Bitcoin), initial coin offering (ICO, Initial coin offering), smarte kontrakter (Smart Contract), samt andre begreber og termer relateret til blockchain.

Blockchain-teknologi åbner nye markeder og skaber job til programmører. Hvis du forstår alle forviklingerne ved cryptocurrency-teknologier og smarte kontraktteknologier, så bør du ikke have problemer med at anvende denne viden i praksis.

Det skal siges, at der spekuleres en del omkring kryptovalutaer og blockchains. Vi vil tilsidesætte diskussioner om ændringer i kryptovalutakurser, skabelsen af ​​pyramider, forviklingerne i kryptovalutalovgivningen osv. I vores træningsforløb vil vi hovedsageligt fokusere på de tekniske aspekter af anvendelsen af ​​smarte kontrakter af Ethereum blockchain (Ethereum, Ether) og udviklingen af ​​såkaldte decentrale applikationer (Distributed Application, DApp).

Hvad er blockchain

Blockchain (Block Chain) er en kæde af datablokke forbundet med hinanden på en bestemt måde. I begyndelsen af ​​kæden er der den første blok, som kaldes den primære blok (genesis blok) eller genesis blok. Den efterfølges af den anden, så den tredje og så videre.

Alle disse datablokke duplikeres automatisk på adskillige knudepunkter i blockchain-netværket. Dette sikrer decentral lagring af blockchain-data.
Du kan tænke på et blockchain-system som et stort antal noder (fysiske eller virtuelle servere), der er forbundet i et netværk og replikerer alle ændringer i kæden af ​​datablokke. Dette er ligesom en kæmpe multi-server computer, og noderne på en sådan computer (servere) kan være spredt over hele verden. Og du kan også tilføje din computer til blockchain-netværket.

Distribueret database

En blockchain kan opfattes som en distribueret database, der replikeres på tværs af alle noder i blockchain-netværket. I teorien vil blockchain være operationel, så længe mindst én node fungerer, og gemmer alle blokkene i blockchain.

Distribueret dataregister

Blockchain kan opfattes som en distribueret hovedbog af data og operationer (transaktioner). Et andet navn for et sådant register er en hovedbog.

Data kan tilføjes til en distribueret hovedbog, men de kan ikke ændres eller slettes. Denne umulighed opnås især ved brug af kryptografiske algoritmer, specielle algoritmer til at tilføje blokke til kæden og decentraliseret datalagring.

Når der tilføjes blokke og udføres operationer (transaktioner), bruges private og offentlige nøgler. De begrænser blockchain-brugere ved kun at give dem adgang til deres egne datablokke.

Transaktion

Blockchain gemmer information om operationer (transaktioner) i blokke. Samtidig kan gamle, allerede gennemførte transaktioner ikke rulles tilbage eller ændres. Nye transaktioner gemmes i nye tilføjede blokke.

På denne måde kan hele transaktionshistorikken registreres uændret på blockchain. Derfor kan blockchain fx bruges til sikker opbevaring af banktransaktioner, copyright-oplysninger, historik for ændringer hos ejendomsejere mv.

Ethereum blockchain indeholder såkaldte systemtilstande. Efterhånden som transaktioner udføres, ændres tilstanden fra den oprindelige tilstand til den nuværende tilstand. Transaktioner registreres i blokke.

Offentlige og private blockchains

Det skal bemærkes her, at alt, der er sagt, kun er sandt for de såkaldte offentlige blockchain-netværk, som ikke kan kontrolleres af nogen enkeltperson eller juridisk enhed, regeringsorgan eller regering.
Såkaldte private blockchain-netværk er under fuld kontrol af deres skabere, og alt er muligt der, for eksempel en fuldstændig udskiftning af alle blokke i kæden.

Praktiske anvendelser af blockchain

Hvad kan blockchain være nyttigt til?

Kort sagt giver blockchain dig mulighed for sikkert at udføre transaktioner (transaktioner) mellem personer eller virksomheder, der ikke har tillid til hinanden. Data registreret i blockchain (transaktioner, persondata, dokumenter, certifikater, kontrakter, fakturaer osv.) kan ikke forfalskes eller erstattes efter registrering. Derfor er det med udgangspunkt i blockchainen muligt at oprette for eksempel betroede distribuerede registre af forskellige slags dokumenter.

Selvfølgelig ved du, at kryptovalutasystemer bliver skabt på basis af blockchains, designet til at erstatte almindelige papirpenge. Papirpenge kaldes også fiat (fra Fiat Money).
Blockchain sikrer opbevaring og uforanderlighed af transaktioner registreret i blokke, hvorfor det kan bruges til at skabe kryptovalutasystemer. Den indeholder hele historien om overførslen af ​​kryptomidler mellem forskellige brugere (konti), og enhver operation kan spores.

Selvom transaktioner inden for kryptovalutasystemer kan være anonyme, resulterer tilbagetrækning af kryptovaluta og udveksling af den med fiat-penge normalt i at afsløre identiteten på ejeren af ​​kryptovalutaaktivet.

Såkaldte smarte kontrakter, som er software, der kører på Ethereum-netværket, giver dig mulighed for at automatisere processen med at afslutte transaktioner og overvåge deres implementering. Dette er især effektivt, hvis betalingen for transaktionen udføres ved hjælp af Ether-cryptocurrency.

Ethereum blockchain og Ethereum smarte kontrakter skrevet i programmeringssproget Solidity kan for eksempel bruges på følgende områder:

  • et alternativ til notarisering af dokumenter;
  • opbevaring af et register over ejendomsobjekter og oplysninger om transaktioner med ejendomsobjekter;
  • opbevaring af ophavsretlige oplysninger om intellektuel ejendom (bøger, billeder, musikværker osv.);
  • oprettelse af uafhængige stemmesystemer;
  • finans og bankvirksomhed;
  • logistik i international målestok, sporing af varebevægelser;
  • opbevaring af personlige data som en analog til et identitetskortsystem;
  • sikre transaktioner på det kommercielle område;
  • lagring af resultaterne af medicinske undersøgelser samt historien om ordinerede procedurer

Problemer med blockchain

Men selvfølgelig er alt ikke så simpelt, som det kan se ud!

Der er problemer med at verificere data, før de tilføjes til blockchain (er de f.eks. falske?), problemer med sikkerheden af ​​system og applikationssoftware, der bruges til at arbejde med blockchain, problemer med muligheden for at bruge social engineering metoder til at stjæle adgang til cryptocurrency tegnebøger osv. .P.

Igen, hvis vi ikke taler om en offentlig blockchain, hvis noder er spredt over hele verden, men om en privat blockchain, der tilhører en person eller organisation, så vil tillidsniveauet her ikke være højere end tillidsniveauet i denne person eller denne organisation.

Det skal også tages i betragtning, at de data, der registreres i blockchain, bliver tilgængelige for alle. I denne forstand er blockchain (især offentlig) ikke egnet til lagring af fortrolige oplysninger. Men det faktum, at information om blockchain ikke kan ændres, kan være med til at forhindre eller efterforske forskellige former for svigagtige aktiviteter.

Ethereum decentraliserede applikationer vil være praktiske, hvis du betaler for deres brug med cryptocurrency. Jo flere mennesker, der ejer cryptocurrency eller er villige til at købe det, jo mere populære DApps og smarte kontrakter bliver.

Almindelige problemer med blockchain, der hindrer dens praktiske anvendelse, omfatter den begrænsede hastighed, hvormed nye blokke kan tilføjes, og de relativt høje omkostninger ved transaktioner. Men teknologien på dette område udvikler sig aktivt, og der er håb om, at tekniske problemer vil blive løst med tiden.

Et andet problem er, at smarte kontrakter på Ethereum blockchain fungerer i et isoleret miljø af virtuelle maskiner og ikke har adgang til virkelige data. Det smarte kontraktprogram kan især ikke selv læse data fra websteder eller fysiske enheder (sensorer, kontakter osv.), og kan heller ikke udsende data til eksterne enheder. Vi vil diskutere dette problem og måder at løse det på i en lektion, der er viet til de såkaldte Oracles - informationsformidlere af smarte kontrakter.

Der er også lovmæssige begrænsninger. I nogle lande er det for eksempel forbudt at bruge kryptovaluta som betalingsmiddel, men du kan eje det som en slags digitalt aktiv, som værdipapirer. Sådanne aktiver kan købes og sælges på børsen. Under alle omstændigheder skal du, når du opretter et projekt, der arbejder med kryptovalutaer, sætte dig ind i lovgivningen i det land, under hvis jurisdiktion dit projekt hører.

Hvordan en blockchain-kæde dannes

Som vi allerede har sagt, er blockchain en simpel kæde af datablokke. Først dannes den første blok af denne kæde, derefter føjes den anden til den, og så videre. Transaktionsdata antages at være lagret i blokke og tilføjes til den seneste blok.

I fig. 1.1 viste vi den enkleste version af en sekvens af blokke, hvor den første blok refererer til den næste.

Bogen “Creating Solidity smart contracts for Ethereum blockchain. Praktisk vejledning"
Ris. 1.1. Simpel rækkefølge af blokke

Med denne mulighed er det dog meget nemt at manipulere med indholdet af enhver blok i kæden, da blokkene ikke indeholder nogen information til beskyttelse mod ændringer. I betragtning af, at blockchain er beregnet til at blive brugt af mennesker og virksomheder, mellem hvem der ikke er tillid, kan vi konkludere, at denne metode til lagring af data ikke er egnet til blockchain.

Lad os begynde at beskytte blokke mod forfalskning. I det første trin vil vi forsøge at beskytte hver blok med en kontrolsum (fig. 1.2).

Bogen “Creating Solidity smart contracts for Ethereum blockchain. Praktisk vejledning"
Ris. 1.2. Tilføjelse af beskyttelse for disse blokke med en kontrolsum

Nu kan en angriber ikke bare ændre blokeringen, da den indeholder kontrolsummen af ​​blokdataene. Kontrol af kontrolsummen vil vise, at dataene er blevet ændret.

For at beregne kontrolsummen kan du bruge en af ​​hashing-funktionerne såsom MD-5, SHA-1, SHA-256 osv. Hash-funktioner beregner en værdi (for eksempel en tekststreng med konstant længde) ved at udføre irreversible operationer på en datablok. Operationerne afhænger af typen af ​​hash-funktion.

Selvom indholdet af datablokken ændrer sig lidt, vil hashværdien også ændre sig. Ved at analysere hash-funktionsværdien er det umuligt at rekonstruere den datablok, som den blev beregnet for.

Vil en sådan beskyttelse være tilstrækkelig? Desværre ikke.

I dette skema beskytter checksummen (hash-funktionen) kun individuelle blokke, men ikke hele blockchain. Ved at kende algoritmen til beregning af hash-funktionen kan en angriber nemt erstatte indholdet af en blok. Intet vil også forhindre ham i at fjerne blokke fra kæden eller tilføje nye.

For at beskytte hele kæden som helhed kan du også i hver blok, sammen med dataene, gemme en hash af dataene fra den foregående blok (fig. 1.3).

Bogen “Creating Solidity smart contracts for Ethereum blockchain. Praktisk vejledning"
Ris. 1.3. Tilføj hashen fra den forrige blok til datablokken

I dette skema, for at ændre en blok, skal du genberegne hash-funktionerne for alle efterfølgende blokke. Det ser ud til, hvad er problemet?

I rigtige blockchains skabes der desuden kunstige vanskeligheder for at tilføje nye blokke - der bruges algoritmer, der kræver mange computerressourcer. I betragtning af, at for at foretage ændringer i en blok, skal du genberegne ikke kun denne ene blok, men alle efterfølgende, vil dette være ekstremt svært at gøre.

Lad os også huske, at blockchain-data gemmes (duplikeres) på adskillige netværksknuder, dvs. Der anvendes decentral lagring. Og det gør det meget sværere at fake en blok, fordi ændringer skal foretages på alle netværksknuder.

Da blokke gemmer information om den forrige blok, er det muligt at kontrollere indholdet af alle blokke i kæden.

Ethereum blockchain

Ethereum blockchain er en platform, hvorpå distribuerede DApps kan oprettes. I modsætning til andre platforme tillader Ethereum brugen af ​​såkaldte smarte kontrakter (smarte kontrakter), skrevet i programmeringssproget Solidity.

Denne platform blev skabt i 2013 af Vitalik Buterin, grundlægger af Bitcoin Magazine, og lanceret i 2015. Alt, hvad vi vil studere eller gøre i vores træningskursus, vedrører specifikt Ethereum blockchain og Solidity smarte kontrakter.

Minedrift eller hvordan blokke skabes

Minedrift er en ret kompleks og ressourcekrævende proces med at tilføje nye blokke til blockchain-kæden, og slet ikke "cryptocurrency mining." Minedrift sikrer funktionaliteten af ​​blockchain, fordi det er denne proces, der er ansvarlig for at tilføje transaktioner til Ethereum blockchain.

Mennesker og organisationer, der er involveret i at tilføje blokke, kaldes minearbejdere.
Softwaren, der kører på miner-noderne, forsøger at finde en hashing-parameter kaldet Nonce for den sidste blok for at få en specifik hash-værdi specificeret af netværket. Ethash-hash-algoritmen, der bruges i Ethereum, giver dig mulighed for kun at opnå Nonce-værdien gennem sekventiel søgning.

Hvis miner-noden finder den korrekte Nonce-værdi, så er dette det såkaldte proof of work (PoW, Proof-of-work). I dette tilfælde, hvis en blok tilføjes til Ethereum-netværket, modtager minearbejderen en vis belønning i netværkets valuta - Ether. I skrivende stund er belønningen 5 Ether, men denne vil blive reduceret over tid.

Således sikrer Ethereum-minearbejdere driften af ​​netværket ved at tilføje blokke, og modtager kryptovaluta-penge for dette. Der er meget information på internettet om minearbejdere og minedrift, men vi vil fokusere på at skabe Solidity-kontrakter og DApps på Ethereum-netværket.

Lektionsopsummering

I den første lektion stiftede du bekendtskab med blockchain og lærte, at det er en specielt sammensat sekvens af blokke. Indholdet af tidligere registrerede blokke kan ikke ændres, da dette ville kræve genberegning af alle efterfølgende blokke på mange netværksknuder, hvilket kræver mange ressourcer og tid.

Blockchain kan bruges til at gemme resultaterne af transaktioner. Dens hovedformål er at organisere sikre transaktioner mellem parter (personer og organisationer), mellem hvem der ikke er tillid. Du lærte i hvilke specifikke forretningsområder og på hvilke områder Ethereum blockchain og Solidity smarte kontrakter kan bruges. Dette er banksektoren, registrering af ejendomsrettigheder, dokumenter mv.

Du lærte også, at der kan opstå forskellige problemer, når du bruger blockchain. Disse er problemer med at verificere information tilføjet til blockchain, hastigheden af ​​blockchain, omkostningerne ved transaktioner, problemet med dataudveksling mellem smarte kontrakter og den virkelige verden samt potentielle angreb fra angribere med det formål at stjæle cryptocurrency-midler fra brugerkonti .

Vi talte også kort om minedrift som processen med at tilføje nye blokke til blockchain. Minedrift er nødvendig for at gennemføre transaktioner. De involverede i minedrift sikrer blockchainens funktion og modtager en belønning i kryptovaluta for dette.

Lektion 2. Forberedelse af et arbejdsmiljø i Ubuntu og Debian OSValg af operativsystem
Installation af de nødvendige hjælpeprogrammer
Installation af Geth and Swarm på Ubuntu
Installation af Geth og Swarm på Debian
Forberedende forberedelse
Downloader Go-distributionen
Indstilling af miljøvariabler
Tjek Go-versionen
Installation af Geth og Swarm
Oprettelse af en privat blockchain
Forbereder filen genesis.json
Opret en mappe til arbejde
Opret en konto
Starter nodeinitialiseringen
Indstillinger for knudestart
Opret forbindelse til vores node
Minedrift og balancekontrol
Lukker Geth-konsollen ned
Lektionsopsummering

Lektion 3. Forberedelse af arbejdsmiljøet på Raspberry Pi 3Klargøring af Raspberry Pi 3 til arbejde
Installation af Rasberian
Installerer opdateringer
Aktivering af SSH-adgang
Indstilling af en statisk IP-adresse
Installation af de nødvendige hjælpeprogrammer
Installerer Go
Downloader Go-distributionen
Indstilling af miljøvariabler
Tjek Go-versionen
Installation af Geth og Swarm
Oprettelse af en privat blockchain
Tjek din konto og saldo
Lektionsopsummering

Lektion 4. Konti og overførsel af midler mellem kontiSe og tilføj konti
Se en liste over konti
Tilføjelse af en konto
geth konto kommando muligheder
Kontoadgangskoder
Kryptovaluta i Ethereum
Ethereum valutaenheder
Vi bestemmer den aktuelle saldo på vores konti
Overfør penge fra en konto til en anden
eth.sendTransaktionsmetode
Se transaktionsstatus
Transaktionskvittering
Lektionsopsummering

Lektion 5. Offentliggørelse af din første kontraktSmarte kontrakter i Ethereum
Smart kontraktudførelse
Ethereum virtuel maskine
Integreret udviklingsmiljø Remix Solidity IDE
Kører kompilering
Opkald af kontraktfunktioner
Udgivelse af en kontrakt på et privat netværk
Hent ABI-definitionen og kontraktens binære kode
Offentliggørelse af kontrakten
Kontrol af kontraktens publiceringstransaktionsstatus
Opkald af kontraktfunktioner
Batch compiler solc
Installation af solc på Ubuntu
Installerer solc på Debian
Kompilering af HelloSol-kontrakten
Offentliggørelse af kontrakten
Installerer solc på Rasberian
Lektionsopsummering

Lektion 6. Smarte kontrakter og Node.jsInstallerer Node.js
Installation på Ubuntu
Installation på Debian
Installation og kørsel af Ganache-cli
Web3 installation
Installation af solc
Installation af Node.js på Rasberian
Script for at få en liste over konti i konsollen
Script til udgivelse af en smart kontrakt
Start og få parametre
Få lanceringsmuligheder
Kontraktsammenstilling
Fjerner blokeringen af ​​din konto
Indlæser ABI og kontrakt binær kode
Estimering af den nødvendige mængde gas
Opret et objekt og begynd at udgive en kontrakt
Kørsel af kontraktudgivelsesmanuskriptet
Opkald til smarte kontraktfunktioner
Er det muligt at opdatere en offentliggjort smart kontrakt?
Arbejder med Web3 version 1.0.x
Få en liste over konti
Offentliggørelse af kontrakten
Opkald af kontraktfunktioner
Overfør penge fra en konto til en anden
Overfør penge til kontraktkonto
Opdatering af HelloSol smart kontrakt
Opret et script for at se din kontosaldo
Tilføj et opkald til getBalance-funktionen til call_contract_get_promise.js-scriptet
Vi fylder den smarte kontraktkonto op
Lektionsopsummering

Lektion 7. Introduktion til trøffelInstallation af trøffel
Opret et HelloSol-projekt
Oprettelse af projektkatalog og filer
Fortegnelse over kontrakter
Katalog migrationer
Directory test
truffle-config.js fil
Kompilering af HelloSol-kontrakten
Begynd at offentliggøre en kontrakt
Ringer til HelloSol kontraktfunktioner i en trøffelprompt
Kaldning af HelloSol-kontraktfunktioner fra et JavaScript-script, der kører Node.js
Installation af trøffel-kontraktmodulet
Kaldning af kontraktfunktionerne getValue og getString
Kalder kontraktfunktionerne setValue og setString
Kontraktændring og genudgivelse
Arbejder med Web3 version 1.0.x
Ændringer i HelloSol smart kontrakten
Scripts til at kalde kontraktmetoder
Test i trøffel
Soliditetstest
JavaScript test
Lektionsopsummering

Lektion 8. SoliditetsdatatyperKontrakt om indlæring af datatyper
booleske datatyper
Heltal uden fortegn og heltal med fortegn
Faste punktnumre
adresse
Variabler af komplekse typer
Arrays med fast størrelse
Dynamiske arrays
Optælling
Strukturer
Ordbøger kortlægning
Lektionsopsummering

Lektion 9. Migrering af kontrakter til det private netværk og til Rinkeby-netværketUdgivelse af en kontrakt fra Truffle til det private Geth-netværk
Forberedelse af en privat netværksknude
Udarbejdelse af arbejdskontrakt
Kompilering og migrering af en kontrakt til Truffle-netværket
Starter migrering af lokalt netværk get
Få trøffel artefakter
Udgivelse af kontrakt fra Truffle til Rinkeby testnet
Forberedelse af en Geth-node til at arbejde med Rinkeby
Nodesynkronisering
Tilføjelse af konti
Fylder din Rinkeby-konto op med ether
Lancering af kontraktmigrering til Rinkeby-netværket
Se kontraktoplysninger på Rinkeby-netværket
Trøffelkonsol til Rinkeby Network
Nemmere måde at kalde kontraktfunktioner på
Opkaldskontraktmetoder ved hjælp af Node.js
Overfør penge mellem konti i Truffle-konsollen til Rinkby
Lektionsopsummering

Lektion 10. Ethereum Swarm decentraliseret datalagringHvordan virker Ethereum Swarm?
Installation og lancering af Swarm
Operationer med filer og mapper
Upload af en fil til Ethereum Swarm
Læser en fil fra Ethereum Swarm
Se manifestet af en uploadet fil
Indlæser mapper med undermapper
Læsning af en fil fra en downloadet mappe
Brug af en offentlig Swarm-gateway
Adgang til Swarm fra Node.js-scripts
Perl Net::Ethereum::Sværm-modul
Installation af Net::Ethereum::Swarm-modulet
At skrive og læse data
Lektionsopsummering

Lektion 11. Web3.py-ramme til at arbejde med Ethereum i PythonInstallerer Web3.py
Opdatering og installation af nødvendige pakker
Installation af easysolc-modulet
Udgivelse af en kontrakt ved hjælp af Web3.py
Kontraktsammenstilling
Opretter forbindelse til en udbyder
Udfør kontraktudgivelse
Gemmer kontraktadressen og abi i en fil
Kørsel af kontraktudgivelsesmanuskriptet
Opkaldskontraktmetoder
Læsning af en kontrakts adresse og abi fra en JSON-fil
Opretter forbindelse til en udbyder
Oprettelse af et kontraktobjekt
Opkaldskontraktmetoder
Trøffel og Web3.py
Lektionsopsummering

Lektion 12. OraklerKan en smart kontrakt stole på data fra omverdenen?
Orakler som blockchain-informationsformidlere
Datakilde
Kode til at repræsentere data fra kilden
Oracle til registrering af valutakursen i blockchain
USDRateOracle-kontrakt
Opdatering af valutakursen i en smart kontrakt
Brug af en Web Socket Provider
Venter på RateUpdate-begivenhed
Håndtering af RateUpdate-begivenheden
Igangsættelse af en dataopdatering i en smart kontrakt
Lektionsopsummering

Kilde: www.habr.com

Tilføj en kommentar