Boken "Creating Solidity smart contracts for Ethereum blockchain. Praktisk veiledning"

Boken "Creating Solidity smart contracts for Ethereum blockchain. Praktisk veiledning"
I mer enn et år har jeg jobbet med boken «Creating Solidity Smart Contracts for the Ethereum Blockchain. Praktisk veiledning", og nå er dette arbeidet fullført, og boken publisert og tilgjengelig i liter.

Jeg håper boken min vil hjelpe deg raskt å begynne å lage Solidity smarte kontakter og distribuerte DApps for Ethereum-blokkjeden. Den består av 12 leksjoner med praktiske oppgaver. Etter å ha fullført dem, vil leseren kunne lage sine egne lokale Ethereum-noder, publisere smarte kontrakter og kalle metodene deres, utveksle data mellom den virkelige verden og smarte kontrakter ved hjelp av orakler, og jobbe med Rinkeby testfeilsøkingsnettverk.

Boken henvender seg til alle som er interessert i avanserte teknologier innen blokkjeder og raskt ønsker å få kunnskap som gjør at de kan gjøre interessant og lovende arbeid.

Nedenfor finner du innholdsfortegnelsen og bokens første kapittel (også på Litrese fragmenter av boken er tilgjengelig). Jeg håper å få tilbakemeldinger, kommentarer og forslag. Alt dette skal jeg prøve å ta med i betraktningen når jeg utarbeider neste utgave av boken.

innholdsfortegnelsenInnledningBoken vår er ment for de som ikke bare ønsker å forstå prinsippene til Ethereum-blokkjeden, men også å få praktiske ferdigheter i å lage distribuerte DApps i Solidity-programmeringsspråket for dette nettverket.

Det er bedre ikke bare å lese denne boken, men å jobbe med den og utføre praktiske oppgaver beskrevet i leksjonene. For å fungere trenger du en lokal datamaskin, virtuell eller skyserver med Debian eller Ubuntu OS installert. Du kan også bruke Raspberry Pi til å utføre mange oppgaver.

Ved første leksjon Vi skal se på driftsprinsippene til Ethereum-blokkjeden og grunnleggende terminologi, og også snakke om hvor denne blokkjeden kan brukes.

target andre leksjon — lag en privat Ethereum blockchain-node for videre arbeid i dette kurset på en Ubuntu- og Debian-server. Vi vil se på funksjonene ved å installere grunnleggende verktøy, som for eksempel geth, som sikrer driften av blockchain-noden vår, samt den svermen desentraliserte datalagringsdemonen.

Tredje leksjon vil lære deg hvordan du eksperimenterer med Ethereum på en rimelig Raspberry Pi-mikrodatamaskin. Du vil installere Rasberian-operativsystemet (OS) på Raspberry Pi, Geth-verktøyet som driver blokkjedenoden, og Swarm desentraliserte datalagringsdemonen.

Leksjon fire er dedikert til kontoer og kryptovalutaenheter på Ethereum-nettverket, samt måter å overføre penger fra en konto til en annen fra Geth-konsollen. Du vil lære hvordan du oppretter kontoer, starter pengeoverføringstransaksjoner og får transaksjonsstatus og kvittering.

I den femte leksjonen Du vil bli kjent med smarte kontrakter på Ethereum-nettverket og lære om deres utførelse av den virtuelle Ethereum-maskinen.

Du vil opprette og publisere din første smarte kontrakt på Ethereums private nettverk og lære hvordan du kaller opp funksjonene. For å gjøre dette, bruker du Remix Solidity IDE. Du vil også lære hvordan du installerer og bruker solc batch-kompilatoren.
Vi skal også snakke om det såkalte Application Binary Interface (ABI) og lære deg hvordan du bruker det.

Sjette leksjon er dedikert til å lage JavaScript-skript som kjører Node.js og utføre operasjoner med Solidity smarte kontrakter.

Du vil installere Node.js på Ubuntu, Debian og Rasberian OS, skrive skript for å publisere en smart kontrakt på Ethereums lokale nettverk og kalle opp funksjonene.

I tillegg vil du lære hvordan du overfører midler mellom vanlige kontoer ved hjelp av skript, samt krediterer dem til smarte kontraktskontoer.

I den syvende leksjonen Du vil lære hvordan du installerer og bruker Truffle-rammeverket, populært blant utviklere av smarte Solidity-kontrakter. Du lærer hvordan du lager JavaScript-skript som kaller opp kontraktsfunksjoner ved å bruke trøffelkontraktmodulen, og tester smartkontrakten din ved å bruke Truffle.

Åttende leksjon dedikert til Solidity-datatyper. Du vil skrive smarte kontrakter som fungerer med datatyper som signerte og usignerte heltall, signerte tall, strenger, adresser, komplekse variabler, matriser, oppregninger, strukturer og ordbøker.

I den niende leksjonen Du vil være et skritt nærmere å lage smarte kontrakter for Ethereum-nettverket. Du vil lære hvordan du publiserer kontrakter med Truffle på Geths private nettverk, samt på Rinkeby testnett. Å feilsøke en smart kontrakt på Rinkeby-nettverket er veldig nyttig før du publiserer den på hovednettet - nesten alt er ekte der, men gratis.

Som en del av leksjonen vil du opprette en Rinkeby testnettverksnode, finansiere den med midler og publisere en smart kontrakt.

Leksjon 10 dedikert til Ethereum Swarm distribuert datalagring. Ved å bruke distribuert lagring sparer du på å lagre store mengder data på Ethereum-blokkjeden.

I denne opplæringen vil du opprette en lokal Swarm-lagring, skrive- og leseoperasjoner på filer og filkataloger. Deretter vil du lære hvordan du jobber med den offentlige Swarm-gatewayen, skriver skript for å få tilgang til Swarm fra Node.js, i tillegg til å bruke Perl Net::Ethereum::Swarm-modulen.

Leksjonsmål 11 — mestre å jobbe med Solidity smarte kontrakter ved å bruke det populære Python-programmeringsspråket og Web3.py-rammeverket. Du skal installere rammeverket, skrive skript for å kompilere og publisere den smarte kontrakten, og kalle opp funksjonene. I dette tilfellet vil Web3.py brukes både alene og sammen med det integrerte utviklingsmiljøet Truffle.

I leksjon 12 du vil lære å overføre data mellom smarte kontrakter og den virkelige verden ved hjelp av orakler. Dette vil være nyttig for deg å motta data fra nettsider, IoT-enheter, ulike enheter og sensorer, og sende data fra smarte kontrakter til disse enhetene. I den praktiske delen av leksjonen vil du lage et orakel og en smart kontrakt som mottar gjeldende valutakurs mellom USD og rubler fra nettstedet til sentralbanken i Den russiske føderasjonen.

Leksjon 1. Kort om blokkjeden og Ethereum-nettverketHensikten med leksjonen: bli kjent med driftsprinsippene til Ethereum-blokkjeden, dens bruksområder og grunnleggende terminologi.
Praktiske oppgaver: ikke dekket i denne leksjonen.

Det finnes knapt en programvareutvikler i dag som ikke har hørt noe om blockchain-teknologi (Blockchain), kryptovalutaer (Cryptocurrency eller Crypto Currency), Bitcoin (Bitcoin), initial coin offering (ICO, Initial coin offering), smarte kontrakter (Smart Contract), samt andre konsepter og termer knyttet til blokkjede.

Blokkjedeteknologi åpner opp nye markeder og skaper arbeidsplasser for programmerere. Hvis du forstår alle forviklingene med kryptovalutateknologier og smarte kontraktsteknologier, bør du ikke ha problemer med å bruke denne kunnskapen i praksis.

Det skal sies at det spekuleres mye rundt kryptovalutaer og blokkjeder. Vi vil legge til side diskusjoner om endringer i kryptovalutakurser, opprettelse av pyramider, forviklingene med kryptovalutalovgivning, etc. I kurset vårt vil vi fokusere hovedsakelig på de tekniske aspektene ved anvendelsen av smarte kontrakter av Ethereum-blokkjeden (Ethereum, Ether) og utviklingen av såkalte desentraliserte applikasjoner (Distributed Application, DApp).

Hva er blockchain

Blockchain (Block Chain) er en kjede av datablokker knyttet til hverandre på en bestemt måte. I begynnelsen av kjeden er det den første blokken, som kalles primærblokken (geneseblokken) eller geneseblokken. Den blir fulgt av den andre, deretter den tredje og så videre.

Alle disse datablokkene dupliseres automatisk på en rekke noder i blokkjedenettverket. Dette sikrer desentralisert lagring av blokkjededata.
Du kan tenke på et blokkjedesystem som et stort antall noder (fysiske eller virtuelle servere) koblet i et nettverk og replikerer alle endringer i kjeden av datablokker. Dette er som en gigantisk multi-server datamaskin, og nodene til en slik datamaskin (servere) kan være spredt over hele verden. Og du kan også legge til datamaskinen din i blockchain-nettverket.

Distribuert database

En blokkjede kan betraktes som en distribuert database som er replikert på tvers av alle noder i blokkjedenettverket. I teorien vil blokkjeden være operativ så lenge minst én node fungerer, og lagre alle blokkene i blokkjeden.

Distribuert dataregister

Blockchain kan betraktes som en distribuert hovedbok over data og operasjoner (transaksjoner). Et annet navn på et slikt register er en hovedbok.

Data kan legges til en distribuert reskontro, men de kan ikke endres eller slettes. Denne umuligheten oppnås, spesielt ved bruk av kryptografiske algoritmer, spesielle algoritmer for å legge til blokker i kjeden og desentralisert datalagring.

Når du legger til blokker og utfører operasjoner (transaksjoner), brukes private og offentlige nøkler. De begrenser blokkjedebrukere ved kun å gi dem tilgang til sine egne datablokker.

Transaksjonen

Blockchain lagrer informasjon om operasjoner (transaksjoner) i blokker. Samtidig kan gamle, allerede gjennomførte transaksjoner ikke rulles tilbake eller endres. Nye transaksjoner lagres i nye, tilføyde blokker.

På denne måten kan hele transaksjonshistorikken registreres uendret på blokkjeden. Derfor kan blokkjede for eksempel brukes til å sikkert lagre banktransaksjoner, opphavsrettsinformasjon, historikk for endringer hos eiendomseiere, etc.

Ethereum-blokkjeden inneholder såkalte systemtilstander. Når transaksjoner utføres, endres tilstanden fra den opprinnelige tilstanden til den nåværende tilstanden. Transaksjoner registreres i blokker.

Offentlige og private blokkjeder

Det skal bemerkes her at alt som er sagt kun er sant for de såkalte offentlige blokkjedenettverkene, som ikke kan kontrolleres av noen individuelle eller juridiske enheter, offentlige organer eller myndigheter.
Såkalte private blokkjedenettverk er under full kontroll av skaperne deres, og alt er mulig der, for eksempel en fullstendig utskifting av alle blokkene i kjeden.

Praktiske anvendelser av blockchain

Hva kan blockchain være nyttig for?

Kort fortalt lar blockchain deg trygt gjennomføre transaksjoner (transaksjoner) mellom personer eller selskaper som ikke stoler på hverandre. Data registrert i blokkjeden (transaksjoner, personopplysninger, dokumenter, sertifikater, kontrakter, fakturaer osv.) kan ikke forfalskes eller erstattes etter registrering. Derfor er det, basert på blokkjeden, mulig å lage for eksempel pålitelige distribuerte registre av ulike typer dokumenter.

Selvfølgelig vet du at kryptovalutasystemer lages på grunnlag av blokkjeder, designet for å erstatte vanlige papirpenger. Papirpenger kalles også fiat (fra Fiat Money).
Blockchain sikrer lagring og uforanderlighet av transaksjoner registrert i blokker, og det er derfor den kan brukes til å lage kryptovalutasystemer. Den inneholder hele historien om overføring av kryptomidler mellom forskjellige brukere (kontoer), og enhver operasjon kan spores.

Selv om transaksjoner innenfor kryptovalutasystemer kan være anonyme, resulterer uttak av kryptovaluta og utveksling av den mot fiat-penger vanligvis i å avsløre identiteten til eieren av kryptovaluta-eiendelen.

Såkalte smarte kontrakter, som er programvare som kjører på Ethereum-nettverket, lar deg automatisere prosessen med å inngå transaksjoner og overvåke implementeringen av dem. Dette er spesielt effektivt hvis betalingen for transaksjonen utføres ved hjelp av Ether-kryptovalutaen.

Ethereum blockchain og Ethereum smarte kontrakter skrevet i programmeringsspråket Solidity kan for eksempel brukes på følgende områder:

  • et alternativ til notarization av dokumenter;
  • lagring av et register over eiendomsobjekter og informasjon om transaksjoner med eiendomsobjekter;
  • lagring av opphavsrettsinformasjon om åndsverk (bøker, bilder, musikkverk, etc.);
  • opprettelse av uavhengige stemmesystemer;
  • finans og bank;
  • logistikk i internasjonal skala, sporing av varebevegelser;
  • lagring av personopplysninger som en analog til et identitetskortsystem;
  • sikre transaksjoner i det kommersielle feltet;
  • lagring av resultatene av medisinske undersøkelser, samt historien til foreskrevne prosedyrer

Problemer med blockchain

Men selvfølgelig er ikke alt så enkelt som det kan virke!

Det er problemer med å verifisere data før de legges til blokkjeden (er de for eksempel falske?), problemer med sikkerheten til system og applikasjonsprogramvare som brukes til å jobbe med blokkjeden, problemer med muligheten for å bruke sosiale ingeniørmetoder for å stjele tilgang til kryptovaluta-lommebøker osv. .P.

Igjen, hvis vi ikke snakker om en offentlig blokkjede, hvis noder er spredt over hele verden, men om en privat blokkjede som tilhører en person eller organisasjon, vil tillitsnivået her ikke være høyere enn tillitsnivået i denne personen eller denne organisasjonen.

Det bør også tas i betraktning at dataene som er registrert i blokkjeden blir tilgjengelig for alle. Slik sett er blokkjede (spesielt offentlig) ikke egnet for lagring av konfidensiell informasjon. Det faktum at informasjon om blokkjeden ikke kan endres kan imidlertid bidra til å forhindre eller etterforske ulike typer svindelaktiviteter.

Ethereum desentraliserte applikasjoner vil være praktiske hvis du betaler for bruken av dem med kryptovaluta. Jo flere som eier kryptovaluta eller er villige til å kjøpe den, jo mer populære DApps og smarte kontrakter vil bli.

Vanlige problemer med blokkjede som hindrer dens praktiske anvendelse inkluderer den begrensede hastigheten som nye blokker kan legges til og de relativt høye transaksjonskostnadene. Men teknologien på dette området utvikler seg aktivt, og det er håp om at tekniske problemer skal løses over tid.

Et annet problem er at smarte kontrakter på Ethereum-blokkjeden opererer i et isolert miljø av virtuelle maskiner, og ikke har tilgang til virkelige data. Spesielt kan ikke smartkontraktsprogrammet selv lese data fra nettsteder eller fysiske enheter (sensorer, kontakter osv.), og kan heller ikke sende ut data til eksterne enheter. Vi vil diskutere dette problemet og måter å løse det på i en leksjon viet til de såkalte Oracles - informasjonsformidlere av smarte kontrakter.

Det er også juridiske begrensninger. I noen land er det for eksempel forbudt å bruke kryptovaluta som betalingsmiddel, men du kan eie den som en slags digital eiendel, som verdipapirer. Slike eiendeler kan kjøpes og selges på børsen. I alle fall, når du oppretter et prosjekt som fungerer med kryptovalutaer, må du gjøre deg kjent med lovgivningen i landet hvis jurisdiksjon prosjektet ditt faller under.

Hvordan en blokkjede-kjede dannes

Som vi allerede har sagt, er blockchain en enkel kjede av datablokker. Først dannes den første blokken i denne kjeden, deretter legges den andre til den, og så videre. Transaksjonsdata antas å være lagret i blokker, og legges til den siste blokken.

I fig. 1.1 viste vi den enkleste versjonen av en blokksekvens, der den første blokken refererer til den neste.

Boken "Creating Solidity smart contracts for Ethereum blockchain. Praktisk veiledning"
Ris. 1.1. Enkel rekkefølge av blokker

Med dette alternativet er det imidlertid veldig enkelt å tukle med innholdet i en hvilken som helst blokk i kjeden, siden blokkene ikke inneholder informasjon for å beskytte mot endringer. Tatt i betraktning at blokkjeden er ment å brukes av mennesker og selskaper som det ikke er tillit mellom, kan vi konkludere med at denne metoden for lagring av data ikke er egnet for blokkjeden.

La oss begynne å beskytte blokker mot forfalskning. I det første trinnet vil vi prøve å beskytte hver blokk med en kontrollsum (fig. 1.2).

Boken "Creating Solidity smart contracts for Ethereum blockchain. Praktisk veiledning"
Ris. 1.2. Legger til beskyttelse for disse blokkene med en kontrollsum

Nå kan ikke en angriper bare endre blokkeringen, siden den inneholder kontrollsummen til blokkdataene. Kontroll av sjekksummen vil vise at dataene er endret.

For å beregne kontrollsummen kan du bruke en av hashing-funksjonene som MD-5, SHA-1, SHA-256, etc. Hash-funksjoner beregner en verdi (for eksempel en tekststreng med konstant lengde) ved å utføre irreversible operasjoner på en datablokk. Operasjonene avhenger av typen hash-funksjon.

Selv om innholdet i datablokken endres litt, vil også hash-verdien endres. Ved å analysere hashfunksjonsverdien er det umulig å rekonstruere datablokken den ble beregnet for.

Vil slik beskyttelse være tilstrekkelig? Dessverre ikke.

I dette opplegget beskytter sjekksummen (hash-funksjonen) kun individuelle blokker, men ikke hele blokkjeden. Ved å kjenne til algoritmen for å beregne hash-funksjonen, kan en angriper enkelt erstatte innholdet i en blokk. Dessuten vil ingenting hindre ham i å fjerne blokker fra kjeden eller legge til nye.

For å beskytte hele kjeden som helhet, kan du også lagre i hver blokk, sammen med dataene, en hash av dataene fra forrige blokk (fig. 1.3).

Boken "Creating Solidity smart contracts for Ethereum blockchain. Praktisk veiledning"
Ris. 1.3. Legg til hashen fra forrige blokk til datablokken

I denne ordningen, for å endre en blokk, må du beregne hash-funksjonene til alle påfølgende blokker på nytt. Det ser ut til, hva er problemet?

I ekte blokkjeder skapes det i tillegg kunstige vanskeligheter for å legge til nye blokker – algoritmer som krever mye dataressurser brukes. Med tanke på at for å gjøre endringer i en blokk, må du ikke bare beregne denne ene blokken på nytt, men alle påfølgende, vil dette være ekstremt vanskelig å gjøre.

La oss også huske at blokkjededata er lagret (duplisert) på en rekke nettverksnoder, dvs. Desentralisert lagring benyttes. Og dette gjør det mye vanskeligere å forfalske en blokk, fordi endringer må gjøres på alle nettverksnoder.

Siden blokker lagrer informasjon om forrige blokk, er det mulig å sjekke innholdet i alle blokkene i kjeden.

Ethereum blokkjede

Ethereum blockchain er en plattform der distribuerte DApps kan opprettes. I motsetning til andre plattformer tillater Ethereum bruk av såkalte smarte kontrakter (smarte kontrakter), skrevet i programmeringsspråket Solidity.

Denne plattformen ble opprettet i 2013 av Vitalik Buterin, grunnlegger av Bitcoin Magazine, og ble lansert i 2015. Alt vi skal studere eller gjøre i kurset vårt er spesifikt knyttet til Ethereum blockchain og Solidity smarte kontrakter.

Gruvedrift eller hvordan blokker lages

Gruvedrift er en ganske kompleks og ressurskrevende prosess for å legge til nye blokker til blokkjedekjeden, og slett ikke "kryptovalutautvinning." Gruvedrift sikrer funksjonaliteten til blokkjeden, fordi det er denne prosessen som er ansvarlig for å legge til transaksjoner til Ethereum-blokkjeden.

Mennesker og organisasjoner som er involvert i å legge til blokker kalles gruvearbeidere.
Programvaren som kjører på miner-nodene prøver å finne en hashing-parameter kalt Nonce for den siste blokken for å få en spesifikk hash-verdi spesifisert av nettverket. Ethash-hash-algoritmen som brukes i Ethereum lar deg få Nonce-verdien kun gjennom sekvensielt søk.

Hvis miner-noden finner den riktige Nonce-verdien, er dette den såkalte proof of work (PoW, Proof-of-work). I dette tilfellet, hvis en blokk legges til Ethereum-nettverket, mottar gruvearbeideren en viss belønning i nettverksvalutaen - Ether. I skrivende stund er belønningen 5 Ether, men dette vil reduseres over tid.

Dermed sikrer Ethereum-gruvearbeidere driften av nettverket ved å legge til blokker, og mottar kryptovalutapenger for dette. Det er mye informasjon på internett om gruvearbeidere og gruvedrift, men vi vil fokusere på å lage Solidity-kontrakter og DApps på Ethereum-nettverket.

Oppsummering av leksjonen

I den første leksjonen ble du kjent med blokkjeden og lærte at det er en spesialkomponert sekvens av blokker. Innholdet i tidligere registrerte blokker kan ikke endres, siden dette vil kreve omberegning av alle påfølgende blokker på mange nettverksnoder, noe som krever mye ressurser og tid.

Blockchain kan brukes til å lagre resultatene av transaksjoner. Hovedformålet er å organisere sikre transaksjoner mellom parter (personer og organisasjoner) som det ikke er tillit mellom. Du lærte i hvilke spesifikke forretningsområder og på hvilke områder Ethereum blockchain og Solidity smarte kontrakter kan brukes. Dette er banksektoren, registrering av eiendomsrettigheter, dokumenter mv.

Du lærte også at det kan oppstå ulike problemer ved bruk av blokkjede. Dette er problemer med å verifisere informasjon lagt til blokkjeden, hastigheten til blokkjeden, kostnadene for transaksjoner, problemet med datautveksling mellom smarte kontrakter og den virkelige verden, samt potensielle angrep fra angripere med sikte på å stjele kryptovalutamidler fra brukerkontoer .

Vi snakket også kort om gruvedrift som prosessen med å legge til nye blokker til blokkjeden. Gruvedrift er nødvendig for å fullføre transaksjoner. De som er involvert i gruvedrift sikrer funksjonen til blokkjeden og mottar en belønning i kryptovaluta for dette.

Leksjon 2. Forberede et arbeidsmiljø i Ubuntu og Debian OSVelge et operativsystem
Installere nødvendige verktøy
Installere Geth and Swarm på Ubuntu
Installerer Geth og Swarm på Debian
Foreløpig forberedelse
Laster ned Go-distribusjonen
Stille inn miljøvariabler
Sjekker Go-versjonen
Installerer Geth og Swarm
Opprette en privat blokkjede
Klargjør genesis.json-filen
Lag en katalog for arbeid
Opprett en konto
Starter nodeinitialiseringen
Alternativer for nodestart
Koble til noden vår
Gruvestyring og balansesjekk
Slår av Geth-konsollen
Oppsummering av leksjonen

Leksjon 3. Forberede arbeidsmiljøet på Raspberry Pi 3Forbereder Raspberry Pi 3 for arbeid
Installerer Rasberian
Installerer oppdateringer
Aktiverer SSH-tilgang
Angi en statisk IP-adresse
Installere nødvendige verktøy
Installerer Go
Laster ned Go-distribusjonen
Stille inn miljøvariabler
Sjekker Go-versjonen
Installerer Geth og Swarm
Opprette en privat blokkjede
Sjekker kontoen og saldoen din
Oppsummering av leksjonen

Leksjon 4. Kontoer og overføring av midler mellom kontoerSe og legg til kontoer
Se en liste over kontoer
Legger til en konto
får kontokommandoalternativer
Kontopassord
Kryptovaluta i Ethereum
Ethereum valutaenheter
Vi bestemmer gjeldende saldo på våre kontoer
Overfør penger fra en konto til en annen
eth.sendTransaksjonsmetode
Se transaksjonsstatus
Transaksjonskvittering
Oppsummering av leksjonen

Leksjon 5. Publiser din første kontraktSmarte kontrakter i Ethereum
Smart kontraktsutførelse
Ethereum virtuell maskin
Integrert utviklingsmiljø Remix Solidity IDE
Kjører kompilering
Ringe kontraktsfunksjoner
Publisering av en kontrakt på et privat nettverk
Henter ABI-definisjonen og kontraktens binære kode
Offentliggjøring av kontrakten
Sjekker kontraktens publiseringstransaksjonsstatus
Ringe kontraktsfunksjoner
Batch kompilator solc
Installerer solc på Ubuntu
Installerer solc på Debian
Sammenstilling av HelloSol-kontrakten
Offentliggjøring av kontrakten
Installerer solc på Rasberian
Oppsummering av leksjonen

Leksjon 6. Smarte kontrakter og Node.jsInstallerer Node.js
Installasjon på Ubuntu
Installasjon på Debian
Installere og kjøre Ganache-cli
Web3 installasjon
Installerer solc
Installerer Node.js på Rasberian
Skript for å få en liste over kontoer i konsollen
Skript for å publisere en smart kontrakt
Start og få parametere
Får lanseringsalternativer
Kontraktsammenstilling
Opphever blokkeringen av kontoen din
Laster ABI og kontrakt binær kode
Estimerer nødvendig mengde gass
Lag et objekt og begynn å publisere en kontrakt
Kjøre manuset for kontraktspublisering
Ringer smarte kontraktsfunksjoner
Er det mulig å oppdatere en publisert smart kontrakt?
Arbeider med Web3 versjon 1.0.x
Få en liste over kontoer
Offentliggjøring av kontrakten
Ringe kontraktsfunksjoner
Overfør penger fra en konto til en annen
Overfør midler til kontraktskonto
Oppdaterer HelloSol smart kontrakt
Lag et skript for å se kontosaldoen din
Legg til et kall til getBalance-funksjonen til call_contract_get_promise.js-skriptet
Vi fyller på smartkontraktskontoen
Oppsummering av leksjonen

Leksjon 7: Introduksjon til trøffelInstallere trøffel
Lag et HelloSol-prosjekt
Opprette prosjektkatalogen og filene
Kontrakter katalog
Katalogoverføringer
Katalogtest
truffle-config.js fil
Sammenstilling av HelloSol-kontrakten
Begynn å publisere en kontrakt
Ringe til HelloSol kontraktsfunksjoner i en trøffelmelding
Kalle opp HelloSol-kontraktfunksjoner fra et JavaScript-skript som kjører Node.js
Montering av trøffel-kontraktmodulen
Kalle opp kontraktsfunksjonene getValue og getString
Kaller opp kontraktsfunksjonene setValue og setString
Kontraktendring og ny publisering
Arbeider med Web3 versjon 1.0.x
Gjør endringer i HelloSol smartkontrakten
Skript for å ringe kontraktsmetoder
Testing i trøffel
Soliditetstest
JavaScript-test
Oppsummering av leksjonen

Leksjon 8. SoliditetsdatatyperKontrakt for læring av datatyper
Boolske datatyper
Usignerte heltall og signerte heltall
Faste punktnummer
adresse
Variabler av komplekse typer
Arrays med fast størrelse
Dynamiske arrays
Oppregning
Strukturer
Ordbøker kartlegging
Oppsummering av leksjonen

Leksjon 9. Migrering av kontrakter til privatnettet og til RinkebynettetPubliserer en kontrakt fra Truffle til det private Geth-nettverket
Forbereder en privat nettverksnode
Utarbeidelse av kontrakt for arbeid
Kompilere og migrere en kontrakt til Truffle-nettverket
Starter migrering av lokalt nettverk get
Får trøffelgjenstander
Publiserer kontrakt fra Truffle til Rinkeby testnett
Forbereder en Geth-node for å jobbe med Rinkeby
Nodesynkronisering
Legger til kontoer
Fyller opp Rinkeby-kontoen din med eter
Lanserer kontraktsmigrering til Rinkeby-nettverket
Viser kontraktsinformasjon på Rinkeby-nettverket
Trøffelkonsoll for Rinkeby Network
Enklere måte å ringe kontraktsfunksjoner på
Ringe kontraktsmetoder ved å bruke Node.js
Overfør penger mellom kontoer i Truffle-konsollen for Rinkby
Oppsummering av leksjonen

Leksjon 10. Ethereum Swarm desentralisert datalagringHvordan fungerer Ethereum Swarm?
Installere og starte Swarm
Operasjoner med filer og kataloger
Laster opp en fil til Ethereum Swarm
Leser en fil fra Ethereum Swarm
Se manifestet til en opplastet fil
Laster kataloger med underkataloger
Lese en fil fra en nedlastet katalog
Bruke en offentlig Swarm-gateway
Tilgang til Swarm fra Node.js-skript
Perl Net::Ethereum::Swarm-modul
Installere Net::Ethereum::Swarm-modulen
Skrive og lese data
Oppsummering av leksjonen

Leksjon 11. Web3.py-rammeverk for å jobbe med Ethereum i PythonInstallerer Web3.py
Oppdatere og installere nødvendige pakker
Installere easysolc-modulen
Publisere en kontrakt ved å bruke Web3.py
Kontraktsammenstilling
Kobler til en leverandør
Utfør kontraktpublisering
Lagre kontraktsadressen og abi i en fil
Kjøre manuset for kontraktspublisering
Ringekontraktmetoder
Leser adressen og abi til en kontrakt fra en JSON-fil
Kobler til en leverandør
Opprette et kontraktsobjekt
Ringekontraktmetoder
Trøffel og Web3.py
Oppsummering av leksjonen

Leksjon 12. OraklerKan en smart kontrakt stole på data fra omverdenen?
Orakler som blokkjedeinformasjonsformidlere
Datakilde
Kode for å representere data fra kilden
Oracle for registrering av valutakursen i blokkjeden
USDRateOracle-kontrakt
Oppdatering av valutakursen i en smart kontrakt
Bruke en Web Socket-leverandør
Venter på RateUpdate-hendelse
Håndtering av RateUpdate-hendelsen
Starte en dataoppdatering i en smart kontrakt
Oppsummering av leksjonen

Kilde: www.habr.com

Legg til en kommentar