Het boek “Creating Solidity smart contracts for the Ethereum blockchain. Praktische gids"

Het boek “Creating Solidity smart contracts for the Ethereum blockchain. Praktische gids"
Al ruim een ​​jaar werk ik aan het boek ‘Creating Solidity Smart Contracts for the Ethereum Blockchain. Praktische Gids", en nu is dit werk voltooid, en het boek gepubliceerd en beschikbaar in liters.

Ik hoop dat mijn boek je zal helpen snel te beginnen met het creëren van slimme contacten en gedistribueerde DApps van Solidity voor de Ethereum-blockchain. Het bestaat uit 12 lessen met praktische taken. Nadat hij deze heeft voltooid, kan de lezer zijn eigen lokale Ethereum-knooppunten creëren, slimme contracten publiceren en hun methoden aanroepen, gegevens uitwisselen tussen de echte wereld en slimme contracten met behulp van orakels, en werken met het Rinkeby-testdebugnetwerk.

Het boek is bedoeld voor iedereen die geïnteresseerd is in geavanceerde technologieën op het gebied van blockchain en snel kennis wil opdoen waarmee hij interessant en veelbelovend werk kan doen.

Hieronder vindt u de inhoudsopgave en het eerste hoofdstuk van het boek (ook op Liter fragmenten van het boek zijn beschikbaar). Ik hoop op feedback, opmerkingen en suggesties. Ik zal proberen met dit alles rekening te houden bij het voorbereiden van de volgende editie van het boek.

inhoudsopgaveIntroductieOns boek is bedoeld voor degenen die niet alleen de principes van de Ethereum-blockchain willen begrijpen, maar ook praktische vaardigheden willen verwerven in het maken van gedistribueerde DApps in de programmeertaal Solidity voor dit netwerk.

Het is beter om dit boek niet alleen te lezen, maar er ook mee te werken en praktische taken uit te voeren die in de lessen worden beschreven. Om te kunnen werken heb je een lokale computer, virtuele server of cloudserver nodig waarop Debian of Ubuntu OS is geïnstalleerd. Je kunt Raspberry Pi ook gebruiken om veel taken uit te voeren.

Bij de eerste les We zullen kijken naar de werkingsprincipes van de Ethereum-blockchain en de basisterminologie, en ook praten over waar deze blockchain kan worden gebruikt.

doelwit tweede les — maak een privé Ethereum blockchain-knooppunt voor verder werk binnen deze cursus op een Ubuntu- en Debian-server. We zullen kijken naar de kenmerken van het installeren van basishulpprogramma's, zoals geth, dat de werking van ons blockchain-knooppunt garandeert, evenals de zwerm gedecentraliseerde dataopslag-daemon.

Derde les leert je hoe je met Ethereum kunt experimenteren op een goedkope Raspberry Pi-microcomputer. Je installeert het Rasberian besturingssysteem (OS) op de Raspberry Pi, het Geth-hulpprogramma dat het blockchain-knooppunt aandrijft, en de Swarm gedecentraliseerde dataopslag-daemon.

Les vier is gewijd aan accounts en cryptocurrency-eenheden op het Ethereum-netwerk, evenals manieren om geld van de ene account naar de andere over te dragen vanaf de Geth-console. U leert hoe u rekeningen kunt aanmaken, geldoverboekingstransacties kunt initiëren en de transactiestatus en ontvangst kunt verkrijgen.

In de vijfde les Je maakt kennis met slimme contracten op het Ethereum-netwerk en leert over de uitvoering ervan door de virtuele Ethereum-machine.

U maakt en publiceert uw eerste slimme contract op het particuliere Ethereum-netwerk en leert hoe u de functies ervan kunt aanroepen. Om dit te doen, gebruikt u de Remix Solidity IDE. Ook leert u hoe u de solc batchcompiler installeert en gebruikt.
We zullen ook praten over de zogenaamde Application Binary Interface (ABI) en leren u hoe u deze kunt gebruiken.

Zesde les is toegewijd aan het maken van JavaScript-scripts waarop Node.js draait en het uitvoeren van bewerkingen met slimme contracten van Solidity.

Je installeert Node.js op Ubuntu, Debian en Rasberian OS, schrijft scripts om een ​​slim contract op het lokale Ethereum-netwerk te publiceren en roept de functies ervan op.

Daarnaast leert u hoe u met behulp van scripts geld kunt overboeken tussen reguliere accounts, en hoe u dit kunt crediteren op slimme contractaccounts.

In de zevende les Je leert hoe je het Truffle-framework, populair onder Smart Contract-ontwikkelaars van Solidity, installeert en gebruikt. U leert hoe u JavaScript-scripts kunt maken die contractfuncties aanroepen met behulp van de truffelcontractmodule, en hoe u uw slimme contract kunt testen met Truffle.

Achtste les gewijd aan Solidity-gegevenstypen. Je schrijft slimme contracten die werken met gegevenstypen zoals ondertekende en niet-ondertekende gehele getallen, ondertekende getallen, tekenreeksen, adressen, complexe variabelen, arrays, opsommingen, structuren en woordenboeken.

In de negende les U bent een stap dichter bij het creëren van slimme contracten voor het Ethereum-mainnet. Je leert hoe je contracten kunt publiceren met Truffle op het privénetwerk van Geth, evenals op het Rinkeby-testnet. Het debuggen van een slim contract op het Rinkeby-netwerk is erg handig voordat het op het hoofdnetwerk wordt gepubliceerd - bijna alles is daar echt, maar gratis.

Als onderdeel van de les maakt u een Rinkeby-testnetwerkknooppunt, financiert u dit met geld en publiceert u een slim contract.

les 10 gewijd aan Ethereum Swarm gedistribueerde gegevensopslag. Door gedistribueerde opslag te gebruiken, bespaart u op het opslaan van grote hoeveelheden gegevens op de Ethereum-blockchain.

In deze zelfstudie maakt u een lokale Swarm-opslag, schrijft en leest u bewerkingen op bestanden en bestandsmappen. Vervolgens leert u hoe u met de openbare Swarm-gateway kunt werken, hoe u scripts schrijft om toegang te krijgen tot Swarm vanuit Node.js en hoe u de Perl Net::Ethereum::Swarm-module gebruikt.

Lesdoel 11 – beheers het werken met slimme contracten van Solidity met behulp van de populaire programmeertaal Python en het Web3.py-framework. Je installeert het raamwerk, schrijft scripts om het slimme contract te compileren en publiceren, en roept de functies ervan aan. In dit geval zal Web3.py zowel op zichzelf als in combinatie met de geïntegreerde Truffle-ontwikkelomgeving worden gebruikt.

Bij les 12 je leert gegevens over te dragen tussen slimme contracten en de echte wereld met behulp van orakels. Dit is handig als u gegevens van websites, IoT-apparaten, verschillende apparaten en sensoren wilt ontvangen, en gegevens van slimme contracten naar deze apparaten wilt verzenden. In het praktische deel van de les maak je een orakel en een slim contract dat de huidige wisselkoers tussen USD en roebel ontvangt van de website van de Centrale Bank van de Russische Federatie.

Les 1. Kort over de blockchain en het Ethereum-netwerkHet doel van de les: maak kennis met de werkingsprincipes van de Ethereum-blockchain, de toepassingsgebieden en de basisterminologie.
Praktische taken: niet behandeld in deze les.

Er is tegenwoordig nauwelijks een softwareontwikkelaar die nog niets heeft gehoord over blockchain-technologie (Blockchain), cryptocurrencies (Cryptocurrency of Cryptocurrency), Bitcoin (Bitcoin), het aanbieden van initiële munten (ICO, het aanbieden van initiële munten), slimme contracten (Smart Contract), evenals andere concepten en termen die verband houden met blockchain.

Blockchain-technologie opent nieuwe markten en creëert banen voor programmeurs. Als u alle fijne kneepjes van cryptocurrency-technologieën en slimme contracttechnologieën begrijpt, zou u geen problemen moeten hebben om deze kennis in de praktijk toe te passen.

Het moet gezegd dat er veel gespeculeerd wordt rond cryptocurrencies en blockchains. We laten discussies over veranderingen in de koersen van cryptocurrency, de creatie van piramides, de fijne kneepjes van de wetgeving inzake cryptocurrency, enz. buiten beschouwing. In onze training zullen we ons vooral richten op de technische aspecten van de toepassing van smart contracts van de Ethereum blockchain (Ethereum, Ether) en de ontwikkeling van zogenaamde decentrale applicaties (Distributed Application, DApp).

Wat is blockchain

Blockchain (Block Chain) is een keten van datablokken die op een bepaalde manier met elkaar verbonden zijn. Aan het begin van de keten bevindt zich het eerste blok, dat het primaire blok (genesisblok) of genesisblok wordt genoemd. Het wordt gevolgd door de tweede, dan de derde, enzovoort.

Al deze datablokken worden automatisch gedupliceerd op talrijke knooppunten van het blockchain-netwerk. Dit zorgt voor decentrale opslag van blockchain-gegevens.
Je kunt een blockchain-systeem zien als een groot aantal knooppunten (fysieke of virtuele servers) die in een netwerk zijn verbonden en alle veranderingen in de keten van datablokken repliceren. Dit is als een gigantische computer met meerdere servers, en de knooppunten van zo'n computer (servers) kunnen over de hele wereld verspreid zijn. En ook u kunt uw computer toevoegen aan het blockchain-netwerk.

Gedistribueerde database

Een blockchain kan worden gezien als een gedistribueerde database die wordt gerepliceerd over alle knooppunten van het blockchain-netwerk. In theorie zal de blockchain operationeel zijn zolang ten minste één knooppunt werkt en alle blokken van de blockchain opslaat.

Gedistribueerd gegevensregister

Blockchain kan worden gezien als een gedistribueerd grootboek van gegevens en bewerkingen (transacties). Een andere naam voor zo’n register is een grootboek.

Gegevens kunnen worden toegevoegd aan een gedistribueerd grootboek, maar kunnen niet worden gewijzigd of verwijderd. Deze onmogelijkheid wordt met name bereikt door het gebruik van cryptografische algoritmen, speciale algoritmen voor het toevoegen van blokken aan de keten en decentrale dataopslag.

Bij het toevoegen van blokken en het uitvoeren van bewerkingen (transacties) wordt gebruik gemaakt van private en publieke sleutels. Ze beperken blockchain-gebruikers door hen alleen toegang te geven tot hun eigen gegevensblokken.

Transactie

Blockchain slaat informatie over handelingen (transacties) op in blokken. Tegelijkertijd kunnen oude, reeds voltooide transacties niet worden teruggedraaid of gewijzigd. Nieuwe transacties worden opgeslagen in nieuwe, toegevoegde blokken.

Op deze manier kan de gehele transactiegeschiedenis ongewijzigd op de blockchain worden vastgelegd. Daarom kan blockchain bijvoorbeeld worden gebruikt om banktransacties, copyrightinformatie, geschiedenis van veranderingen in vastgoedeigenaren, enz. veilig op te slaan.

De Ethereum-blockchain bevat zogenaamde systeemtoestanden. Terwijl transacties worden uitgevoerd, verandert de toestand van de oorspronkelijke toestand naar de huidige toestand. Transacties worden in blokken vastgelegd.

Publieke en private blockchains

Hierbij moet worden opgemerkt dat alles wat gezegd wordt alleen waar is voor de zogenaamde openbare blockchain-netwerken, die niet kunnen worden gecontroleerd door een individu of rechtspersoon, overheidsinstantie of overheid.
Zogenaamde private blockchain-netwerken staan ​​onder de volledige controle van hun makers, en daar is alles mogelijk, bijvoorbeeld een volledige vervanging van alle blokken van de keten.

Praktische toepassingen van blockchain

Waar kan blockchain nuttig voor zijn?

Kortom, met blockchain kun je veilig transacties (transacties) uitvoeren tussen mensen of bedrijven die elkaar niet vertrouwen. Gegevens die in de blockchain zijn vastgelegd (transacties, persoonsgegevens, documenten, certificaten, contracten, facturen etc.) kunnen na registratie niet worden vervalst of vervangen. Daarom is het op basis van de blockchain mogelijk om bijvoorbeeld vertrouwde gedistribueerde registers van verschillende soorten documenten te creëren.

Je weet natuurlijk dat er cryptocurrency-systemen worden gecreëerd op basis van blockchains, ontworpen om gewoon papiergeld te vervangen. Papiergeld wordt ook wel fiat genoemd (van Fiat Money).
Blockchain zorgt voor de opslag en onveranderlijkheid van transacties die in blokken zijn vastgelegd, en daarom kan het worden gebruikt om cryptocurrency-systemen te creëren. Het bevat de volledige geschiedenis van de overdracht van cryptogeld tussen verschillende gebruikers (accounts) en elke bewerking kan worden gevolgd.

Hoewel transacties binnen cryptocurrency-systemen anoniem kunnen zijn, resulteert het opnemen van cryptocurrency en het inwisselen ervan voor fiatgeld meestal in het onthullen van de identiteit van de eigenaar van het cryptocurrency-activum.

Met zogenaamde slimme contracten, software die op het Ethereum-netwerk draait, kunt u het proces van het afsluiten van transacties en het monitoren van de implementatie ervan automatiseren. Dit is vooral effectief als de betaling voor de transactie wordt uitgevoerd met behulp van de cryptocurrency Ether.

De Ethereum blockchain en Ethereum smart contracts geschreven in de programmeertaal Solidity kunnen bijvoorbeeld op de volgende gebieden worden gebruikt:

  • een alternatief voor notariële bekrachtiging van documenten;
  • het bijhouden van een register van onroerende goederen en informatie over transacties met onroerende goederen;
  • opslag van copyrightinformatie over intellectueel eigendom (boeken, afbeeldingen, muziekwerken, enz.);
  • creatie van onafhankelijke stemsystemen;
  • financieren en bankieren;
  • logistiek op internationale schaal, waarbij de goederenbeweging wordt gevolgd;
  • opslag van persoonsgegevens als analoog aan een identiteitskaartsysteem;
  • beveiligde transacties op commercieel gebied;
  • het opslaan van de resultaten van medische onderzoeken, evenals de geschiedenis van voorgeschreven procedures

Problemen met blockchain

Maar natuurlijk is niet alles zo eenvoudig als het lijkt!

Er zijn problemen met het verifiëren van gegevens voordat ze aan de blockchain worden toegevoegd (zijn ze bijvoorbeeld nep?), problemen met de beveiliging van systeem- en applicatiesoftware die wordt gebruikt om met de blockchain te werken, problemen met de mogelijkheid om social engineering-methoden te gebruiken om de toegang te stelen naar cryptocurrency-portefeuilles, enz. .P.

Nogmaals, als we het niet hebben over een publieke blockchain, waarvan de knooppunten over de hele wereld verspreid zijn, maar over een private blockchain die toebehoort aan een persoon of organisatie, dan zal het niveau van vertrouwen hier niet hoger zijn dan het niveau van vertrouwen. in deze persoon of deze organisatie.

Ook moet er rekening mee worden gehouden dat de gegevens die in de blockchain zijn vastgelegd voor iedereen beschikbaar komen. In die zin is blockchain (vooral openbaar) niet geschikt voor het opslaan van vertrouwelijke informatie. Het feit dat informatie op de blockchain niet kan worden gewijzigd, kan echter verschillende soorten frauduleuze activiteiten helpen voorkomen of onderzoeken.

Gedecentraliseerde Ethereum-applicaties zijn handig als u voor het gebruik ervan betaalt met cryptocurrency. Hoe meer mensen cryptocurrency bezitten of bereid zijn deze te kopen, hoe populairder DApps en slimme contracten zullen worden.

Veelvoorkomende problemen met blockchain die de praktische toepassing ervan belemmeren, zijn onder meer de beperkte snelheid waarmee nieuwe blokken kunnen worden toegevoegd en de relatief hoge transactiekosten. Maar de technologie op dit gebied ontwikkelt zich actief en er bestaat hoop dat technische problemen in de loop van de tijd zullen worden opgelost.

Een ander probleem is dat slimme contracten op de Ethereum-blockchain in een geïsoleerde omgeving van virtuele machines werken en geen toegang hebben tot gegevens uit de echte wereld. In het bijzonder kan het slimme contractprogramma zelf geen gegevens lezen van locaties of fysieke apparaten (sensoren, contacten, enz.), en kan het ook geen gegevens uitvoeren naar externe apparaten. We zullen dit probleem en manieren om het op te lossen bespreken in een les gewijd aan de zogenaamde Oracles - informatiebemiddelaars van slimme contracten.

Er zijn ook wettelijke beperkingen. In sommige landen is het bijvoorbeeld verboden om cryptocurrency als betaalmiddel te gebruiken, maar je kunt het wel bezitten als een soort digitaal bezit, zoals effecten. Dergelijke activa kunnen op de beurs worden gekocht en verkocht. Wanneer u een project maakt dat met cryptocurrencies werkt, moet u in ieder geval vertrouwd raken met de wetgeving van het land onder wiens jurisdictie uw project valt.

Hoe een blockchain-keten wordt gevormd

Zoals we al hebben gezegd, is blockchain een eenvoudige keten van datablokken. Eerst wordt het eerste blok van deze keten gevormd, vervolgens wordt het tweede eraan toegevoegd, enzovoort. Er wordt aangenomen dat transactiegegevens in blokken zijn opgeslagen en aan het meest recente blok worden toegevoegd.

In afb. 1.1 lieten we de eenvoudigste versie zien van een reeks blokken, waarbij het eerste blok verwijst naar het volgende.

Het boek “Creating Solidity smart contracts for the Ethereum blockchain. Praktische gids"
Rijst. 1.1. Eenvoudige opeenvolging van blokken

Met deze optie is het echter heel gemakkelijk om met de inhoud van elk blok in de keten te knoeien, omdat de blokken geen informatie bevatten die bescherming biedt tegen wijzigingen. Gezien het feit dat de blockchain bedoeld is om gebruikt te worden door mensen en bedrijven waartussen geen vertrouwen bestaat, kunnen we concluderen dat deze manier van data opslaan niet geschikt is voor de blockchain.

Laten we beginnen met het beschermen van blokken tegen namaak. In de eerste fase zullen we proberen elk blok te beschermen met een controlesom (Fig. 1.2).

Het boek “Creating Solidity smart contracts for the Ethereum blockchain. Praktische gids"
Rijst. 1.2. Bescherming voor deze blokken toevoegen met een checksum

Nu kan een aanvaller het blok niet zomaar wijzigen, omdat het de controlesom van de blokgegevens bevat. Als u de controlesom controleert, ziet u dat de gegevens zijn gewijzigd.

Om de controlesom te berekenen, kunt u een van de hashfuncties gebruiken, zoals MD-5, SHA-1, SHA-256, enz. Hash-functies berekenen een waarde (bijvoorbeeld een tekstreeks met een constante lengte) door onomkeerbare bewerkingen uit te voeren op een gegevensblok. De bewerkingen zijn afhankelijk van het type hashfunctie.

Zelfs als de inhoud van het datablok enigszins verandert, zal de hashwaarde ook veranderen. Door de hashfunctiewaarde te analyseren, is het onmogelijk om het datablok waarvoor deze is berekend te reconstrueren.

Zal een dergelijke bescherming voldoende zijn? Helaas niet.

In dit schema beschermt de checksum (hash-functie) alleen individuele blokken, maar niet de hele blockchain. Als een aanvaller het algoritme voor het berekenen van de hashfunctie kent, kan hij eenvoudig de inhoud van een blok vervangen. Bovendien zal niets hem ervan weerhouden blokken uit de keten te verwijderen of nieuwe toe te voegen.

Om de hele keten als geheel te beschermen, kun je in elk blok ook, samen met de data, een hash opslaan van de data uit het vorige blok (Fig. 1.3).

Het boek “Creating Solidity smart contracts for the Ethereum blockchain. Praktische gids"
Rijst. 1.3. Voeg de hash van het vorige blok toe aan het datablok

In dit schema moet je, om een ​​blok te wijzigen, de hashfuncties van alle volgende blokken opnieuw berekenen. Het lijkt erop: wat is het probleem?

In echte blockchains worden bovendien kunstmatige moeilijkheden gecreëerd bij het toevoegen van nieuwe blokken; er worden algoritmen gebruikt die veel computerbronnen vereisen. Aangezien u, om wijzigingen in een blok aan te brengen, niet alleen dit ene blok, maar alle daaropvolgende blokken opnieuw moet berekenen, zal dit uiterst moeilijk zijn om te doen.

Laten we ook niet vergeten dat blockchain-gegevens worden opgeslagen (gedupliceerd) op talrijke netwerkknooppunten, d.w.z. Er wordt gebruik gemaakt van gedecentraliseerde opslag. En dit maakt het veel moeilijker om een ​​blok te vervalsen, omdat er moeten wijzigingen worden aangebracht aan alle netwerkknooppunten.

Omdat blokken informatie over het vorige blok opslaan, is het mogelijk om de inhoud van alle blokken in de keten te controleren.

Ethereum-blockchain

De Ethereum-blockchain is een platform waarop gedistribueerde DApps kunnen worden gemaakt. In tegenstelling tot andere platforms staat Ethereum het gebruik toe van zogenaamde smart contracts (smart contracts), geschreven in de programmeertaal Solidity.

Dit platform is in 2013 gecreëerd door Vitalik Buterin, oprichter van Bitcoin Magazine, en gelanceerd in 2015. Alles wat we in onze training gaan bestuderen of doen heeft specifiek betrekking op de Ethereum blockchain en Solidity smart contracts.

Mijnbouw of hoe blokken worden gemaakt

Mijnbouw is een nogal complex en arbeidsintensief proces waarbij nieuwe blokken aan de blockchain-keten worden toegevoegd, en helemaal niet ‘cryptocurrency mining’. Mining garandeert de functionaliteit van de blockchain, omdat het is dit proces dat verantwoordelijk is voor het toevoegen van transacties aan de Ethereum-blockchain.

Mensen en organisaties die betrokken zijn bij het toevoegen van blokken worden mijnwerkers genoemd.
De software die op de miner-knooppunten draait, probeert een hash-parameter genaamd Nonce te vinden voor het laatste blok om een ​​specifieke hash-waarde te verkrijgen die door het netwerk is gespecificeerd. Met het Ethash-hashing-algoritme dat in Ethereum wordt gebruikt, kunt u de Nonce-waarde alleen verkrijgen via sequentieel zoeken.

Als het minerknooppunt de juiste Nonce-waarde vindt, dan is dit het zogenaamde proof of work (PoW, Proof-of-work). In dit geval ontvangt de mijnwerker, als een blok wordt toegevoegd aan het Ethereum-netwerk, een bepaalde beloning in de netwerkvaluta: Ether. Op het moment van schrijven is de beloning 5 Ether, maar dit zal in de loop van de tijd worden verlaagd.

Zo zorgen Ethereum-miners voor de werking van het netwerk door blokken toe te voegen, en ontvangen hiervoor cryptocurrency-geld. Er is veel informatie op internet over miners en mining, maar we zullen ons concentreren op het creëren van Solidity-contracten en DApps op het Ethereum-netwerk.

Samenvatting van de les

In de eerste les maakte je kennis met de blockchain en leerde je dat het een speciaal samengestelde reeks blokken is. De inhoud van eerder opgenomen blokken kan niet worden gewijzigd, omdat hiervoor alle volgende blokken op veel netwerkknooppunten opnieuw moeten worden berekend, wat veel middelen en tijd vergt.

Blockchain kan worden gebruikt om de resultaten van transacties op te slaan. Het voornaamste doel ervan is het organiseren van veilige transacties tussen partijen (personen en organisaties) waartussen geen vertrouwen bestaat. Je hebt geleerd op welke specifieke gebieden van het bedrijfsleven en op welke gebieden de Ethereum blockchain en Solidity smart contracts kunnen worden gebruikt. Dit is de banksector, registratie van eigendomsrechten, documenten, enz.

Je hebt ook geleerd dat er verschillende problemen kunnen optreden bij het gebruik van blockchain. Dit zijn problemen bij het verifiëren van informatie die aan de blockchain is toegevoegd, de snelheid van de blockchain, de kosten van transacties, het probleem van gegevensuitwisseling tussen slimme contracten en de echte wereld, evenals potentiële aanvallen door aanvallers gericht op het stelen van cryptocurrency-fondsen van gebruikersaccounts. .

We hebben ook kort gesproken over mining als het proces van het toevoegen van nieuwe blokken aan de blockchain. Mining is nodig om transacties te voltooien. Degenen die betrokken zijn bij mining zorgen voor het functioneren van de blockchain en ontvangen hiervoor een beloning in cryptocurrency.

Les 2. Een werkomgeving voorbereiden in Ubuntu en Debian OSEen besturingssysteem selecteren
Het installeren van de benodigde hulpprogramma's
Geth en Swarm installeren op Ubuntu
Geth en Swarm installeren op Debian
Voorbereidende voorbereiding
De Go-distributie downloaden
Omgevingsvariabelen instellen
De Go-versie controleren
Geth en Swarm installeren
Het creëren van een privé-blockchain
Het genesis.json-bestand voorbereiden
Maak een directory voor werk
Account aanmaken
Het starten van de knooppuntinitialisatie
Opties voor het starten van knooppunten
Maak verbinding met ons knooppunt
Mijnbouwbeheer en balanscontrole
De Geth-console afsluiten
Samenvatting van de les

Les 3. De werkomgeving voorbereiden op Raspberry Pi 3De Raspberry Pi 3 voorbereiden op het werk
Rasberian installeren
Updates installeren
SSH-toegang inschakelen
Een statisch IP-adres instellen
Het installeren van de benodigde hulpprogramma's
Go installeren
De Go-distributie downloaden
Omgevingsvariabelen instellen
De Go-versie controleren
Geth en Swarm installeren
Het creëren van een privé-blockchain
Controle van uw rekening en saldo
Samenvatting van de les

Les 4. Rekeningen en geld overboeken tussen accountsAccounts bekijken en toevoegen
Bekijk een lijst met accounts
Een account toevoegen
geth-accountopdrachtopties
Accountwachtwoorden
Cryptogeld in Ethereum
Ethereum-valuta-eenheden
Wij bepalen het actuele saldo van onze rekeningen
Geld overboeken van de ene rekening naar de andere
eth.sendTransaction-methode
Bekijk de transactiestatus
Transactieontvangst
Samenvatting van de les

Les 5. Je eerste contract publicerenSlimme contracten in Ethereum
Slimme contractuitvoering
Ethereum virtuele machine
Geïntegreerde ontwikkelomgeving Remix Solidity IDE
Compilatie uitvoeren
Contractfuncties oproepen
Een contract publiceren op een particulier netwerk
De ABI-definitie en de binaire contractcode verkrijgen
Publicatie van het contract
Controle van de contractpublicatietransactiestatus
Contractfuncties oproepen
Batchcompiler sol
Solc installeren op Ubuntu
Solc installeren op Debian
Opstellen van het HelloSol-contract
Publicatie van het contract
Solc installeren op Rasberian
Samenvatting van de les

Les 6. Slimme contracten en Node.jsNode.js installeren
Installatie op Ubuntu
Installatie op Debian
Ganache-cli installeren en uitvoeren
Web3-installatie
Solc installeren
Node.js installeren op Rasberian
Script om een ​​lijst met accounts in de console op te halen
Script voor het publiceren van een slim contract
Start en haal parameters op
Opstartopties verkrijgen
Contractcompilatie
Deblokkeer uw account
ABI en binaire contractcode laden
Het inschatten van de benodigde hoeveelheid gas
Maak een object en begin met het publiceren van een contract
Het contractpublicatiescript uitvoeren
Slimme contractfuncties oproepen
Is het mogelijk om een ​​gepubliceerd slim contract bij te werken?
Werken met Web3 versie 1.0.x
Een lijst met accounts ophalen
Publicatie van het contract
Contractfuncties oproepen
Geld overboeken van de ene rekening naar de andere
Geld overmaken naar contractrekening
Het HelloSol slimme contract bijwerken
Maak een script om uw accountsaldo te bekijken
Voeg een aanroep van de getBalance-functie toe aan het call_contract_get_promise.js-script
We vullen het slimme contractaccount aan
Samenvatting van de les

Les 7. Inleiding tot truffelTruffel installeren
Maak een HelloSol-project
De projectmap en bestanden maken
Contractenlijst
Catalogusmigraties
Directory-test
truffel-config.js-bestand
Opstellen van het HelloSol-contract
Begin met het publiceren van een contract
HelloSol-contractfuncties aanroepen in een truffelprompt
HelloSol-contractfuncties aanroepen vanuit een JavaScript-script waarop Node.js wordt uitgevoerd
Het installeren van de truffelcontractmodule
Het aanroepen van de contractfuncties getValue en getString
Contractfuncties setValue en setString aanroepen
Contractwijziging en herpublicatie
Werken met Web3 versie 1.0.x
Wijzigingen aanbrengen in het HelloSol slimme contract
Scripts voor het aanroepen van contractmethoden
Testen in Truffel
Soliditeitstest
JavaScript-test
Samenvatting van de les

Les 8. SoliditeitsgegevenstypenContract voor het leren van gegevenstypen
Booleaanse gegevenstypen
Gehele getallen zonder teken en gehele getallen met teken
Vaste puntnummers
adres
Variabelen van complexe typen
Arrays met vaste grootte
Dynamische arrays
Opsomming
structuren
Woordenboeken in kaart brengen
Samenvatting van de les

Les 9. Migratie van contracten naar het particuliere netwerk en naar het Rinkeby-netwerkEen contract van Truffle publiceren op het particuliere Geth-netwerk
Een particulier netwerkknooppunt voorbereiden
Het opstellen van een arbeidsovereenkomst
Opstellen en migreren van een contract naar het Truffle netwerk
Lokale netwerkmigratie starten get
Truffelartefacten verkrijgen
Publicatie van een contract van Truffle op het Rinkeby-testnet
Een Geth-knooppunt voorbereiden om met Rinkeby te werken
Synchronisatie van knooppunten
Accounts toevoegen
Je Rinkeby-account opwaarderen met ether
Lancering van contractmigratie naar het Rinkeby-netwerk
Contractinformatie bekijken op het Rinkeby-netwerk
Truffelconsole voor Rinkeby Network
Gemakkelijkere manier om contractfuncties aan te roepen
Contractmethoden aanroepen met Node.js
Geld overmaken tussen accounts in de Truffle-console voor Rinkby
Samenvatting van de les

Les 10. Ethereum Swarm Gedecentraliseerde gegevensopslagHoe werkt Ethereum Swarm?
Swarm installeren en starten
Bewerkingen met bestanden en mappen
Een bestand uploaden naar Ethereum Swarm
Een bestand lezen van Ethereum Swarm
Bekijk het manifest van een geüpload bestand
Mappen laden met submappen
Een bestand uit een gedownloade map lezen
Een openbare Swarm-gateway gebruiken
Toegang tot Swarm vanuit Node.js-scripts
Perl Net::Ethereum::Swarm-module
De Net::Ethereum::Swarm-module installeren
Gegevens schrijven en lezen
Samenvatting van de les

Les 11. Web3.py-framework voor het werken met Ethereum in PythonWeb3.py installeren
Updaten en installeren van de benodigde pakketten
De easysolc-module installeren
Een contract publiceren met Web3.py
Contractcompilatie
Verbinding maken met een aanbieder
Uitvoeren contractpublicatie
Het contractadres en de abi opslaan in een bestand
Het contractpublicatiescript uitvoeren
Contractmethoden bellen
Het adres en de abi van een contract uitlezen uit een JSON-bestand
Verbinding maken met een aanbieder
Een contractobject maken
Contractmethoden bellen
Truffel en Web3.py
Samenvatting van de les

Les 12. OrakelsKan een slim contract gegevens van de buitenwereld vertrouwen?
Orakels als tussenpersonen voor blockchain-informatie
Databron
Code om gegevens uit de bron weer te geven
Oracle voor het vastleggen van de wisselkoers in de blockchain
USDRateOracle-contract
De wisselkoers bijwerken in een slim contract
Een websocketprovider gebruiken
Wachten op RateUpdate-gebeurtenis
Het afhandelen van de RateUpdate-gebeurtenis
Een gegevensupdate initiëren in een slim contract
Samenvatting van de les

Bron: www.habr.com

Voeg een reactie