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

Boken "Creating Solidity smart contracts for Ethereum blockchain. Praktisk guide"
I mer än ett år har jag arbetat med boken ”Creating Solidity Smart Contracts for the Ethereum Blockchain. Praktisk guide", och nu är detta arbete slutfört, och boken publicerad och tillgänglig i liter.

Jag hoppas att min bok hjälper dig att snabbt börja skapa Solidity smarta kontakter och distribuerade DApps för Ethereum blockchain. Den består av 12 lektioner med praktiska uppgifter. Efter att ha genomfört dem kommer läsaren att kunna skapa sina egna lokala Ethereum-noder, publicera smarta kontrakt och anropa deras metoder, utbyta data mellan den verkliga världen och smarta kontrakt med hjälp av orakel och arbeta med Rinkeby testfelsökningsnätverk.

Boken vänder sig till alla som är intresserade av avancerad teknik inom blockchainområdet och snabbt vill skaffa sig kunskap som gör att de kan ägna sig åt intressant och lovande arbete.

Nedan hittar du innehållsförteckningen och bokens första kapitel (även på Litrese fragment av boken finns). Jag hoppas få feedback, kommentarer och förslag. Jag ska försöka ta hänsyn till allt detta när jag förbereder nästa upplaga av boken.

innehållsförteckningInledningVår bok är avsedd för dem som inte bara vill förstå principerna för Ethereum-blockkedjan, utan också få praktiska färdigheter i att skapa distribuerade DApps i programmeringsspråket Solidity för detta nätverk.

Det är bättre att inte bara läsa den här boken, utan att arbeta med den och utföra praktiska uppgifter som beskrivs i lektionerna. För att fungera behöver du en lokal dator, virtuell eller molnserver med Debian eller Ubuntu OS installerat. Du kan också använda Raspberry Pi för att utföra många uppgifter.

Vid första lektionen Vi kommer att titta på operativa principer för Ethereum blockchain och grundläggande terminologi, och även prata om var denna blockchain kan användas.

Mål andra lektionen — skapa en privat Ethereum blockchain-nod för vidare arbete inom denna kurs på en Ubuntu- och Debian-server. Vi kommer att titta på funktionerna för att installera grundläggande verktyg, såsom geth, som säkerställer driften av vår blockkedjenod, såväl som den svärmdecentraliserade datalagringsdemonen.

Tredje lektionen kommer att lära dig hur du experimenterar med Ethereum på en billig Raspberry Pi mikrodator. Du kommer att installera Rasberian-operativsystemet (OS) på Raspberry Pi, Geth-verktyget som driver blockkedjenoden och Swarms decentraliserade datalagringsdemon.

Lektion fyra är tillägnad konton och kryptovalutaenheter på Ethereum-nätverket, samt sätt att överföra pengar från ett konto till ett annat från Geth-konsolen. Du kommer att lära dig hur du skapar konton, initierar överföringar av pengar och får transaktionsstatus och kvitto.

I den femte lektionen Du kommer att bekanta dig med smarta kontrakt på Ethereum-nätverket och lära dig om deras utförande av den virtuella Ethereum-maskinen.

Du kommer att skapa och publicera ditt första smarta kontrakt på Ethereums privata nätverk och lära dig hur du anropar dess funktioner. För att göra detta använder du Remix Solidity IDE. Du kommer också att lära dig hur du installerar och använder solc-batchkompilatorn.
Vi kommer också att prata om det så kallade Application Binary Interface (ABI) och lära dig hur du använder det.

Sjätte lektionen är dedikerad till att skapa JavaScript-skript som kör Node.js och utföra operationer med Solidity smarta kontrakt.

Du kommer att installera Node.js på Ubuntu, Debian och Rasberian OS, skriva skript för att publicera ett smart kontrakt på Ethereums lokala nätverk och anropa dess funktioner.

Dessutom kommer du att lära dig hur du överför pengar mellan vanliga konton med hjälp av skript, samt krediterar dem till smarta kontraktskonton.

I den sjunde lektionen Du kommer att lära dig hur du installerar och använder Truffle-ramverket, populärt bland utvecklare av smarta kontrakt från Solidity. Du lär dig hur du skapar JavaScript-skript som anropar kontraktsfunktioner med tryffelkontraktsmodulen och testar ditt smarta kontrakt med Truffle.

Åttonde lektionen tillägnad Solidity-datatyper. Du kommer att skriva smarta kontrakt som fungerar med datatyper som signerade och osignerade heltal, signerade tal, strängar, adresser, komplexa variabler, arrayer, uppräkningar, strukturer och ordböcker.

I den nionde lektionen Du kommer ett steg närmare att skapa smarta kontrakt för Ethereums huvudnät. Du kommer att lära dig hur du publicerar kontrakt med Truffle på Geths privata nätverk, såväl som på Rinkebys testnät. Att felsöka ett smart kontrakt på Rinkeby-nätverket är mycket användbart innan du publicerar det på huvudnätverket - nästan allt är på riktigt där, men gratis.

Som en del av lektionen kommer du att skapa en Rinkeby testnätverksnod, finansiera den med medel och publicera ett smart kontrakt.

Lektion 10 tillägnad Ethereum Swarm distribuerad datalagring. Genom att använda distribuerad lagring sparar du på att lagra stora mängder data på Ethereum blockchain.

I den här handledningen kommer du att skapa en lokal Swarm-lagring, skriv- och läsoperationer på filer och filkataloger. Därefter kommer du att lära dig hur du arbetar med den offentliga Swarm-gatewayen, skriver skript för att komma åt Swarm från Node.js, samt använder Perl Net::Ethereum::Swarm-modulen.

Lektionsmål 11 — behärska att arbeta med Solidity smarta kontrakt med det populära programmeringsspråket Python och ramverket Web3.py. Du kommer att installera ramverket, skriva skript för att kompilera och publicera det smarta kontraktet och anropa dess funktioner. I det här fallet kommer Web3.py att användas både på egen hand och i samband med den integrerade utvecklingsmiljön Truffle.

På lektion 12 du lär dig att överföra data mellan smarta kontrakt och den verkliga världen med hjälp av orakel. Detta kommer att vara användbart för dig att ta emot data från webbplatser, IoT-enheter, olika enheter och sensorer, och skicka data från smarta kontrakt till dessa enheter. I den praktiska delen av lektionen kommer du att skapa ett orakel och ett smart kontrakt som tar emot den aktuella växelkursen mellan USD och rubel från Ryska federationens centralbanks webbplats.

Lektion 1. Kort om blockkedjan och Ethereum-nätverketSyftet med lektionen: bekanta dig med driftsprinciperna för Ethereum blockchain, dess användningsområden och grundläggande terminologi.
Praktiska uppgifter: tas inte upp i den här lektionen.

Det finns knappast en mjukvaruutvecklare idag som inte har hört något om blockchain-teknik (Blockchain), kryptovalutor (Cryptocurrency eller Crypto Currency), Bitcoin (Bitcoin), initial coin offering (ICO, Initial coin offering), smarta kontrakt (Smart Contract), samt andra begrepp och termer relaterade till blockchain.

Blockchain-teknik öppnar upp nya marknader och skapar jobb för programmerare. Om du förstår alla krångligheterna med kryptovalutateknologier och smarta kontraktsteknologier, bör du inte ha problem med att tillämpa denna kunskap i praktiken.

Det ska sägas att det spekuleras mycket kring kryptovalutor och blockkedjor. Vi kommer att lämna åt sidan diskussioner om förändringar i kryptovalutakurser, skapandet av pyramider, krångligheterna i kryptovalutalagstiftningen etc. I vår utbildning kommer vi främst att fokusera på de tekniska aspekterna av tillämpningen av smarta kontrakt av Ethereum blockchain (Ethereum, Ether) och utvecklingen av så kallade decentraliserade applikationer (Distributed Application, DApp).

Vad är blockchain

Blockchain (Block Chain) är en kedja av datablock kopplade till varandra på ett visst sätt. I början av kedjan finns det första blocket, som kallas det primära blocket (genesis block) eller genesis block. Den följs av den andra, sedan den tredje och så vidare.

Alla dessa datablock dupliceras automatiskt på flera noder i blockkedjenätverket. Detta säkerställer decentraliserad lagring av blockchain-data.
Du kan tänka på ett blockchain-system som ett stort antal noder (fysiska eller virtuella servrar) anslutna i ett nätverk och replikerar alla förändringar i kedjan av datablock. Det här är som en gigantisk dator med flera servrar, och noderna på en sådan dator (servrar) kan vara utspridda över hela världen. Och du kan också lägga till din dator i blockchain-nätverket.

Distribuerad databas

En blockchain kan ses som en distribuerad databas som replikeras över alla noder i blockchain-nätverket. I teorin kommer blockkedjan att vara i drift så länge som minst en nod fungerar och lagrar alla block i blockkedjan.

Distribuerat dataregister

Blockchain kan ses som en distribuerad huvudbok av data och operationer (transaktioner). Ett annat namn för ett sådant register är en reskontra.

Data kan läggas till i en distribuerad reskontra, men den kan inte ändras eller raderas. Denna omöjlighet uppnås i synnerhet genom användningen av kryptografiska algoritmer, speciella algoritmer för att lägga till block i kedjan och decentraliserad datalagring.

När man lägger till block och utför operationer (transaktioner) används privata och publika nycklar. De begränsar blockchain-användare genom att endast ge dem tillgång till sina egna datablock.

Transaktioner

Blockchain lagrar information om operationer (transaktioner) i block. Samtidigt kan gamla, redan genomförda transaktioner inte återställas eller ändras. Nya transaktioner lagras i nya, tillagda block.

På så sätt kan hela transaktionshistoriken registreras oförändrad på blockkedjan. Därför kan blockchain användas för att till exempel säkert lagra banktransaktioner, upphovsrättsinformation, historik över förändringar hos fastighetsägare m.m.

Ethereum blockchain innehåller så kallade systemtillstånd. När transaktioner utförs ändras tillståndet från det ursprungliga tillståndet till det aktuella tillståndet. Transaktioner registreras i block.

Offentliga och privata blockkedjor

Det bör noteras här att allt som sägs endast är sant för de så kallade offentliga blockchain-nätverken, som inte kan kontrolleras av någon individ eller juridisk person, statlig myndighet eller regering.
Så kallade privata blockkedjenätverk är under full kontroll av sina skapare, och allt är möjligt där, till exempel en fullständig ersättning av alla block i kedjan.

Praktiska tillämpningar av blockchain

Vad kan blockchain vara användbart för?

Kort sagt låter blockchain dig på ett säkert sätt utföra transaktioner (transaktioner) mellan personer eller företag som inte litar på varandra. Data som registreras i blockkedjan (transaktioner, personuppgifter, dokument, certifikat, kontrakt, fakturor etc.) kan inte förfalskas eller ersättas efter inspelning. Därför är det, baserat på blockkedjan, möjligt att skapa till exempel betrodda distribuerade register av olika sorters dokument.

Naturligtvis vet du att kryptovalutasystem skapas på basis av blockkedjor, designade för att ersätta vanliga papperspengar. Papperspengar kallas också för fiat (från Fiat Money).
Blockchain säkerställer lagring och oföränderlighet av transaktioner registrerade i block, vilket är anledningen till att den kan användas för att skapa kryptovalutasystem. Den innehåller hela historien om överföringen av kryptomedel mellan olika användare (konton), och alla operationer kan spåras.

Även om transaktioner inom kryptovalutasystem kan vara anonyma, resulterar uttag av kryptovaluta och byte av den mot fiat-pengar vanligtvis i att identiteten på ägaren av kryptovalutatillgången avslöjas.

Så kallade smarta kontrakt, som är programvara som körs på Ethereum-nätverket, låter dig automatisera processen för att slutföra transaktioner och övervaka deras implementering. Detta är särskilt effektivt om betalningen för transaktionen utförs med Ether-kryptovalutan.

Ethereum blockchain och Ethereum smarta kontrakt skrivna i programmeringsspråket Solidity kan användas till exempel inom följande områden:

  • ett alternativ till attestering av dokument;
  • lagring av ett register över fastighetsobjekt och information om transaktioner med fastighetsobjekt;
  • lagring av upphovsrättsinformation om immateriell egendom (böcker, bilder, musikverk, etc.);
  • skapande av oberoende röstningssystem;
  • Bank och finans;
  • logistik i internationell skala, spårning av varurörelser;
  • lagring av personuppgifter som en analog till ett identitetskortsystem;
  • säkra transaktioner inom det kommersiella området;
  • lagra resultaten av medicinska undersökningar, såväl som historien om föreskrivna procedurer

Problem med blockchain

Men allt är förstås inte så enkelt som det kan verka!

Det finns problem med att verifiera data innan de läggs till i blockkedjan (är de till exempel falska?), problem med säkerheten för system och applikationsprogram som används för att arbeta med blockkedjan, problem med möjligheten att använda sociala ingenjörsmetoder för att stjäla åtkomst till kryptovaluta plånböcker etc. .P.

Återigen, om vi inte talar om en offentlig blockkedja, vars noder är utspridda över hela världen, utan om en privat blockkedja som tillhör en person eller organisation, så kommer nivån av förtroende här inte att vara högre än nivån av förtroende i denna person eller denna organisation.

Man bör också ta hänsyn till att data som registreras i blockkedjan blir tillgänglig för alla. I denna mening är blockchain (särskilt offentlig) inte lämplig för att lagra konfidentiell information. Det faktum att information om blockkedjan inte kan ändras kan dock bidra till att förhindra eller utreda olika typer av bedrägliga aktiviteter.

Ethereums decentraliserade applikationer kommer att vara bekväma om du betalar för deras användning med kryptovaluta. Ju fler som äger kryptovaluta eller är villiga att köpa den, desto mer populära kommer DApps och smarta kontrakt att bli.

Vanliga problem med blockchain som hindrar dess praktiska tillämpning inkluderar den begränsade hastigheten med vilken nya block kan läggas till och den relativt höga kostnaden för transaktioner. Men tekniken inom detta område utvecklas aktivt och det finns förhoppningar om att tekniska problem ska lösas med tiden.

Ett annat problem är att smarta kontrakt på Ethereum blockchain fungerar i en isolerad miljö av virtuella maskiner och inte har tillgång till verklig data. I synnerhet kan det smarta kontraktsprogrammet inte själv läsa data från webbplatser eller några fysiska enheter (sensorer, kontakter, etc.), och kan inte heller mata ut data till några externa enheter. Vi kommer att diskutera detta problem och sätt att lösa det i en lektion som ägnas åt de så kallade Oracles - informationsförmedlare av smarta kontrakt.

Det finns också lagliga begränsningar. I vissa länder är det till exempel förbjudet att använda kryptovaluta som betalningsmedel, men du kan äga den som en slags digital tillgång, som värdepapper. Sådana tillgångar kan köpas och säljas på börsen. I vilket fall som helst, när du skapar ett projekt som fungerar med kryptovalutor, måste du bekanta dig med lagstiftningen i det land under vars jurisdiktion ditt projekt faller.

Hur en blockchain-kedja bildas

Som vi redan har sagt är blockchain en enkel kedja av datablock. Först bildas det första blocket i denna kedja, sedan läggs det andra till det och så vidare. Transaktionsdata antas lagras i block och läggs till det senaste blocket.

I fig. 1.1 visade vi den enklaste versionen av en sekvens av block, där det första blocket refererar till nästa.

Boken "Creating Solidity smart contracts for Ethereum blockchain. Praktisk guide"
Ris. 1.1. Enkel sekvens av block

Med det här alternativet är det dock mycket enkelt att manipulera innehållet i valfritt block i kedjan, eftersom blocken inte innehåller någon information som skyddar mot förändringar. Med tanke på att blockkedjan är avsedd att användas av människor och företag mellan vilka det inte finns något förtroende kan vi dra slutsatsen att denna metod att lagra data inte är lämplig för blockkedjan.

Låt oss börja skydda block från förfalskning. I det första skedet kommer vi att försöka skydda varje block med en kontrollsumma (Fig. 1.2).

Boken "Creating Solidity smart contracts for Ethereum blockchain. Praktisk guide"
Ris. 1.2. Lägger till skydd för dessa block med en kontrollsumma

Nu kan en angripare inte bara ändra blocket, eftersom det innehåller kontrollsumman för blockdata. Att kontrollera kontrollsumman visar att data har ändrats.

För att beräkna checksumman kan du använda en av hashfunktionerna som MD-5, SHA-1, SHA-256, etc. Hash-funktioner beräknar ett värde (till exempel en textsträng med konstant längd) genom att utföra irreversibla operationer på ett datablock. Operationerna beror på typen av hashfunktion.

Även om innehållet i datablocket ändras något, kommer även hashvärdet att ändras. Genom att analysera hashfunktionsvärdet är det omöjligt att rekonstruera datablocket för vilket det beräknades.

Kommer ett sådant skydd att vara tillräckligt? Tyvärr inte.

I detta schema skyddar checksumman (hash-funktionen) bara enskilda block, men inte hela blockkedjan. Genom att känna till algoritmen för att beräkna hashfunktionen kan en angripare enkelt ersätta innehållet i ett block. Dessutom kommer ingenting att hindra honom från att ta bort block från kedjan eller lägga till nya.

För att skydda hela kedjan som helhet kan du också lagra i varje block, tillsammans med data, en hash av data från föregående block (Fig. 1.3).

Boken "Creating Solidity smart contracts for Ethereum blockchain. Praktisk guide"
Ris. 1.3. Lägg till hashen från föregående block till datablocket

I det här schemat, för att ändra ett block, måste du räkna om hashfunktionerna för alla efterföljande block. Det verkar, vad är problemet?

I riktiga blockkedjor skapas dessutom konstgjorda svårigheter för att lägga till nya block – algoritmer som kräver mycket datorresurser används. Med tanke på att för att göra ändringar i ett block måste du räkna om inte bara det här blocket, utan alla efterföljande, kommer detta att vara extremt svårt att göra.

Låt oss också komma ihåg att blockchain-data lagras (dupliceras) på många nätverksnoder, d.v.s. Decentraliserad lagring används. Och detta gör det mycket svårare att fejka ett block, eftersom ändringar måste göras på alla nätverksnoder.

Eftersom block lagrar information om föregående block är det möjligt att kontrollera innehållet i alla block i kedjan.

Ethereum blockchain

Ethereum blockchain är en plattform på vilken distribuerade DApps kan skapas. Till skillnad från andra plattformar tillåter Ethereum användning av så kallade smarta kontrakt (smarta kontrakt), skrivna i programmeringsspråket Solidity.

Denna plattform skapades 2013 av Vitalik Buterin, grundare av Bitcoin Magazine, och lanserades 2015. Allt vi kommer att studera eller göra i vår utbildning relaterar specifikt till Ethereum blockchain och Solidity smarta kontrakt.

Gruvdrift eller hur block skapas

Gruvdrift är en ganska komplex och resurskrävande process för att lägga till nya block till blockkedjan, och inte alls "krypteringsutvinning." Gruvdrift säkerställer blockkedjans funktionalitet, eftersom det är denna process som är ansvarig för att lägga till transaktioner till Ethereum blockchain.

Människor och organisationer som är involverade i att lägga till block kallas gruvarbetare.
Mjukvaran som körs på gruvarnoderna försöker hitta en hashparameter som heter Nonce för det sista blocket för att få ett specifikt hashvärde specificerat av nätverket. Ethash-hash-algoritmen som används i Ethereum låter dig erhålla Nonce-värdet endast genom sekventiell sökning.

Om miner-noden hittar rätt Nonce-värde är detta det så kallade proof of work (PoW, Proof-of-work). I det här fallet, om ett block läggs till i Ethereum-nätverket, får gruvarbetaren en viss belöning i nätverkets valuta - Ether. I skrivande stund är belöningen 5 Ether, men denna kommer att minska med tiden.

Således säkerställer Ethereum-gruvarbetare driften av nätverket genom att lägga till block och får kryptovalutapengar för detta. Det finns mycket information på internet om gruvarbetare och gruvdrift, men vi kommer att fokusera på att skapa Solidity-kontrakt och DApps på Ethereum-nätverket.

Lektionens sammanfattning

I den första lektionen bekantade du dig med blockkedjan och lärde dig att det är en speciellt sammansatt sekvens av block. Innehållet i tidigare inspelade block kan inte ändras, eftersom detta skulle kräva omräkning av alla efterföljande block på många nätverksnoder, vilket kräver mycket resurser och tid.

Blockchain kan användas för att lagra resultaten av transaktioner. Dess huvudsakliga syfte är att organisera säkra transaktioner mellan parter (personer och organisationer) mellan vilka det inte finns något förtroende. Du lärde dig inom vilka specifika affärsområden och inom vilka områden Ethereum blockchain och Solidity smarta kontrakt kan användas. Detta är banksektorn, registrering av äganderätter, dokument, etc.

Du lärde dig också att olika problem kan uppstå när du använder blockchain. Dessa är problem med att verifiera information som lagts till i blockkedjan, blockkedjans hastighet, kostnaden för transaktioner, problemet med datautbyte mellan smarta kontrakt och den verkliga världen, samt potentiella attacker från angripare som syftar till att stjäla kryptovalutamedel från användarkonton .

Vi pratade också kort om gruvdrift som processen att lägga till nya block till blockkedjan. Mining är nödvändigt för att slutföra transaktioner. De som är involverade i gruvdrift säkerställer blockkedjans funktion och får en belöning i kryptovaluta för detta.

Lektion 2. Förbereda en arbetsmiljö i Ubuntu och Debian OSVälja ett operativsystem
Installera nödvändiga verktyg
Installera Geth and Swarm på Ubuntu
Installerar Geth och Swarm på Debian
Preliminär förberedelse
Ladda ner Go-distributionen
Ställa in miljövariabler
Kontrollerar Go-versionen
Installerar Geth och Swarm
Skapa en privat blockchain
Förbereder filen genesis.json
Skapa en katalog för arbetet
Skapa ett konto
Startar nodinitieringen
Nodstartalternativ
Anslut till vår nod
Gruvhantering och balanskontroll
Stänger av Geth-konsolen
Lektionens sammanfattning

Lektion 3. Förbereda arbetsmiljön på Raspberry Pi 3Förbereder Raspberry Pi 3 för arbete
Installerar Rasberian
Installerar uppdateringar
Aktiverar SSH-åtkomst
Ställa in en statisk IP-adress
Installera nödvändiga verktyg
Installerar Go
Ladda ner Go-distributionen
Ställa in miljövariabler
Kontrollerar Go-versionen
Installerar Geth och Swarm
Skapa en privat blockchain
Kontrollerar ditt konto och saldo
Lektionens sammanfattning

Lektion 4. Konton och överföring av pengar mellan kontonVisa och lägg till konton
Visa en lista över konton
Lägger till ett konto
geth kontokommandoalternativ
Kontolösenord
Kryptovaluta i Ethereum
Ethereum Valutaenheter
Vi bestämmer det aktuella saldot på våra konton
Överför pengar från ett konto till ett annat
Metod eth.sendTransaction
Visa transaktionsstatus
Transaktionskvitto
Lektionens sammanfattning

Lektion 5. Publicera ditt första kontraktSmarta kontrakt i Ethereum
Smart kontraktsutförande
Ethereum virtuell maskin
Integrerad utvecklingsmiljö Remix Solidity IDE
Kör kompilering
Ringa kontraktsfunktioner
Publicera ett kontrakt på ett privat nätverk
Hämta ABI-definitionen och kontraktets binära kod
Offentliggörande av kontraktet
Kontrollerar kontraktets publiceringstransaktionsstatus
Ringa kontraktsfunktioner
Batchkompilator solc
Installerar solc på Ubuntu
Installerar solc på Debian
Sammanställer HelloSol-kontraktet
Offentliggörande av kontraktet
Installerar solc på Rasberian
Lektionens sammanfattning

Lektion 6. Smarta kontrakt och Node.jsInstallerar Node.js
Installation på Ubuntu
Installation på Debian
Installera och köra Ganache-cli
Web3 installation
Installerar solc
Installerar Node.js på Rasberian
Skript för att få en lista över konton i konsolen
Skript för att publicera ett smart kontrakt
Starta och hämta parametrar
Få startalternativ
Kontraktssammanställning
Avblockerar ditt konto
Laddar ABI och kontrakt binär kod
Uppskattning av den nödvändiga mängden gas
Skapa ett objekt och börja publicera ett kontrakt
Kör manuset för kontraktspublicering
Ringer smarta avtalsfunktioner
Är det möjligt att uppdatera ett publicerat smart kontrakt?
Arbeta med Web3 version 1.0.x
Få en lista över konton
Offentliggörande av kontraktet
Ringa kontraktsfunktioner
Överför pengar från ett konto till ett annat
Överför pengar till kontraktskonto
Uppdaterar HelloSol smarta kontrakt
Skapa ett skript för att se ditt kontosaldo
Lägg till ett anrop till getBalance-funktionen i skriptet call_contract_get_promise.js
Vi fyller på det smarta kontraktskontot
Lektionens sammanfattning

Lektion 7. Introduktion till tryffelInstallera tryffel
Skapa ett HelloSol-projekt
Skapa projektkatalog och filer
Avtalskatalog
Katalogmigreringar
Katalogtest
filen truffle-config.js
Sammanställer HelloSol-kontraktet
Börja publicera ett kontrakt
Ringer HelloSol kontraktsfunktioner i en tryffelprompt
Anropa HelloSol-kontraktsfunktioner från ett JavaScript-skript som kör Node.js
Installation av tryffelkontraktsmodulen
Anropa kontraktsfunktionerna getValue och getString
Anropar kontraktsfunktionerna setValue och setString
Kontraktsändring och återpublicering
Arbeta med Web3 version 1.0.x
Göra ändringar i HelloSol smarta kontrakt
Skript för att anropa kontraktsmetoder
Testar i tryffel
Soliditetstest
JavaScript-test
Lektionens sammanfattning

Lektion 8. SoliditetsdatatyperKontrakt för inlärning av datatyper
booleska datatyper
Osignerade heltal och signerade heltal
Fasta punktnummer
adress
Variabler av komplexa typer
Arrayer med fast storlek
Dynamiska arrayer
Uppräkning
Struktur
Ordböcker kartläggning
Lektionens sammanfattning

Lektion 9. Migrering av kontrakt till det privata nätet och till RinkebynätetPublicerar ett kontrakt från Truffle till det privata Geth-nätverket
Förbereder en privat nätverksnod
Förbereder ett kontrakt för arbete
Sammanställa och migrera ett kontrakt till Truffle-nätverket
Startar migrering av lokalt nätverk get
Få tryffelartefakter
Publicerar kontrakt från Truffle till Rinkeby testnät
Förbereder en Geth-nod för att arbeta med Rinkeby
Nodsynkronisering
Lägger till konton
Fyller på ditt Rinkeby-konto med eter
Startar kontraktsmigrering till Rinkebynätverket
Visa avtalsinformation på Rinkebynätverket
Tryffelkonsol för Rinkeby Network
Enklare sätt att anropa kontraktsfunktioner
Ringa kontraktsmetoder med Node.js
Överför pengar mellan konton i Truffle-konsolen för Rinkby
Lektionens sammanfattning

Lektion 10. Ethereum Swarm decentraliserad datalagringHur fungerar Ethereum Swarm?
Installerar och startar Swarm
Operationer med filer och kataloger
Ladda upp en fil till Ethereum Swarm
Läser en fil från Ethereum Swarm
Visa manifestet för en uppladdad fil
Laddar kataloger med underkataloger
Läser en fil från en nedladdad katalog
Använda en offentlig Swarm-gateway
Åtkomst till Swarm från Node.js-skript
Perl Net::Ethereum::Svärmmodul
Installera Net::Ethereum::Swarm-modulen
Skriva och läsa data
Lektionens sammanfattning

Lektion 11. Web3.py-ramverk för att arbeta med Ethereum i PythonInstallerar Web3.py
Uppdatera och installera nödvändiga paket
Installation av easysolc-modulen
Publicera ett kontrakt med Web3.py
Kontraktssammanställning
Ansluter till en leverantör
Utför kontraktspublicering
Spara kontraktsadress och abi i en fil
Kör manuset för kontraktspublicering
Metoder för att ringa kontrakt
Läsa adressen och abi för ett kontrakt från en JSON-fil
Ansluter till en leverantör
Skapa ett kontraktsobjekt
Metoder för att ringa kontrakt
Truffle och Web3.py
Lektionens sammanfattning

Lektion 12. OrakelKan ett smart kontrakt lita på data från omvärlden?
Oracles som blockchain-informationsförmedlare
Datakälla
Kod för att representera data från källan
Oracle för att registrera växelkursen i blockkedjan
USDRateOracle-kontrakt
Uppdatering av växelkursen i ett smart kontrakt
Använda en Web Socket Provider
Väntar på RateUpdate-händelse
Hantera RateUpdate-händelsen
Initierar en datauppdatering i ett smart kontrakt
Lektionens sammanfattning

Källa: will.com

Lägg en kommentar