
Meer dan een jaar heb ik gewerkt aan het boek 'Smart Contracts Solidity voor de Ethereum Blockchain. Praktische Gids', en nu is dit project voltooid, en het boek .
Ik hoop dat mijn boek helpt om snel aan de slag te gaan met het creëren van smart contracts in Solidity en gedistribueerde applicaties (DApp) voor de Ethereum blockchain. Het bestaat uit 12 lessen met praktische opdrachten. Door deze uit te voeren, kan de lezer zijn eigen lokale Ethereum-nodes opzetten, smart contracts publiceren en hun methoden aanroepen, gegevens uit de echte wereld communiceren met smart contracts via orakels, en werken met het testnetwerk Rinkeby.
Het boek is gericht aan iedereen die geïnteresseerd is in baanbrekende technologieën op het gebied van blockchains en snel kennis wil opdoen om interessante en veelbelovende werkzaamheden uit te voeren.
Hieronder vindt u de inhoudsopgave en het eerste hoofdstuk van het boek (ook op beschikbaar zijn fragmenten van het boek). Ik hoop op feedback, opmerkingen en suggesties. Al deze input zal ik trachten mee te nemen in de voorbereiding van de volgende editie van het boek.
InhoudsopgaveInleidingOns boek is bedoeld voor degenen die niet alleen de principes van de werking van de Ethereum blockchain willen begrijpen, maar ook praktische vaardigheden willen opdoen in het ontwikkelen van gedistribueerde applicaties (DApp) in de programmeertaal Solidity voor dit netwerk.
Dit boek kun je beter niet alleen lezen, maar ermee werken door de praktische opdrachten in de lessen uit te voeren. Voor deze opdrachten heb je een lokale computer, virtuele of cloudserver nodig met een geïnstalleerd besturingssysteem Debian of Ubuntu. Ook voor veel opdrachten kan een Raspberry Pi worden gebruikt.
In de eerste les zullen we de principes van de werking van de Ethereum blockchain en de belangrijkste terminologie bespreken, evenals waar deze blockchain kan worden gebruikt.
Doel In de tweede les gaan we een node van een private Ethereum blockchain creëren voor verdere werkzaamheden in deze cursus op een Ubuntu- of Debian-server. We zullen de specifieke installatie van belangrijke tools, zoals geth, die onze blockchain-node operationeel maakt, en de daemon van de gedecentraliseerde datakluis swarm bespreken.
In de derde les leert u experimenten uit te voeren met Ethereum op een goedkope microcomputer, de Raspberry Pi. U installeert het besturingssysteem (OS) Rasberian op de Raspberry Pi, de Geth-tool die blockchain-knooppunten onderhoudt, en de gedecentraliseerde gegevensopslag daemon Swarm.
Les vier is gewijd aan accounts en cryptovaluta-eenheden in het Ethereum-netwerk, evenals aan methoden om geld over te maken van het ene account naar het andere vanuit de Geth-console. U leert accounts te creëren, transacties te initiëren om geld over te maken, de status van een transactie en de bijbehorende kwitantie te verkrijgen.
In les vijf maakt u kennis met smart contracts in het Ethereum-netwerk en leert u over hun uitvoering door de Ethereum Virtual Machine.
U zult uw eerste smart contract creëren en publiceren in een privé Ethereum-netwerk en leren hoe u de functies ervan kunt aanroepen. Hiervoor gebruikt u de Remix Solidity IDE-ontwikkelomgeving. Daarnaast leert u de solc-batchcompiler te installeren en gebruiken.
Ook zullen we het zogenaamde Application Binary Interface (ABI) uitleggen en leren hoe dit te gebruiken.
Les zes is gewijd aan het maken van JavaScript-scripts die draaien onder Node.js en operaties uitvoeren met Solidity smart contracts.
U installeert Node.js op de besturingssystemen Ubuntu, Debian en Rasberian, en schrijft scripts voor het publiceren van een smart contract in een lokaal Ethereum-netwerk en het aanroepen van zijn functies.
Bovendien leert u met scripts geld over te maken tussen gewone accounts en dit bij te schrijven op smart contract-accounts.
In les zeven leert u de populaire ontwikkelomgeving Truffle voor smart contracts in Solidity te installeren en gebruiken. U leert JavaScript-scripts te maken die functies van contracts aanroepen met behulp van de truffle-contractmodule, en u voert tests uit op uw smart contract met Truffle.
Les acht is gewijd aan de datatypes in Solidity. U zult smart contracts schrijven die werken met datatypes zoals signed en unsigned integers, signed numbers, strings, addresses, variabelen van complexe types, arrays, enumeraties, structuren en dictionaries.
In les negen U bent een stap dichterbij het creëren van slimme contracten voor het Ethereum-hoofdnetsysteem. U leert hoe u contracten kunt publiceren met Truffle op een Geth-privénetwerk en op de Rinkeby-testnet. Het debuggen van een slim contract op het Rinkeby-netwerk is zeer nuttig voordat u het publiceert op het hoofdnetsysteem — bijna alles is echt daar, maar gratis.
In deze les maakt u een Rinkeby-testnetknoop, stelt u deze in met middelen, en publiceert u een slim contract.
Les 10 is gewijd aan gedistribueerde gegevensopslag van Ethereum Swarm. Met gedistribueerde opslag bespaart u op de opslag van grote hoeveelheden gegevens in de Ethereum-blockchain.
In deze les maakt u een lokale Swarm-opslag, voert u schrijf- en leesbewerkingen uit op bestanden en mappen met bestanden. Vervolgens leert u hoe u werkt met de openbare Swarm-gateway, schrijft u scripts voor toegang tot Swarm vanuit Node.js en gebruikt u de Perl-module Net::Ethereum::Swarm.
Het doel van les 11 is om te leren werken met slimme contracten in Solidity met behulp van de populaire programmeertaal Python en het Web3.py-framework. U installeert dit framework, schrijft scripts voor het compileren en publiceren van een slim contract en voor het aanroepen van zijn functies. Web3.py zal zowel op zichzelf als samen met de geïntegreerde ontwikkelomgeving Truffle worden gebruikt.
In les 12 leert u gegevens over te dragen tussen slimme contracten en de echte wereld met behulp van orakels. Dit komt van pas om gegevens van websites, IoT-apparaten, verschillende instrumenten en sensoren te verkrijgen, en om gegevens uit slimme contracten naar deze apparaten te verzenden. In het praktische deel van de les maakt u een orakel en een slim contract die de actuele wisselkoers van USD naar roebels van de centrale bank van Rusland verkrijgt.
Les 1. Een kort overzicht van blockchain en het Ethereum-netwerkDoel van de les: kennis maken met de principes van de werking van de Ethereum-blockchain, de toepassingsgebieden en de belangrijkste terminologie.
Praktische opgaven: in deze les zijn geen opgaven voorzien.
Zelden is er vandaag de dag een softwareontwikkelaar die nog nooit heeft gehoord van de blockchain-technologie, cryptocurrencies, bitcoins, Initial Coin Offerings (ICO), slimme contracten, en andere begrippen en termen die verband houden met blockchain.
De blockchain-technologie opent nieuwe markten en creëert banen voor programmeurs. Als je alle fijne kneepjes van cryptocurrency-technologieën en smart contracts onder de knie krijgt, zou je geen problemen moeten hebben met het toepassen van deze kennis in de praktijk.
Het is vermeldenswaard dat er veel speculaties rondom cryptocurrencies en blockchains ontstaan. We laten de overpeinzingen over de fluctuaties van cryptocurrency-prijzen, het creëren van piramides, de nuances van cryptocurrency-wetgeving, enzovoort, buiten beschouwing. In onze cursus zullen we ons voornamelijk richten op de technische aspecten van de toepassing van smart contracts op de Ethereum-blockchain (Ethereum) en de ontwikkeling van zogenaamde gedecentraliseerde applicaties (Distributed Application, DApp).
Wat is blockchain?
Blockchain is een keten van datablocks die op een bepaalde manier met elkaar zijn verbonden. Aan het begin van de keten bevindt zich het eerste block, dat de genesis block of het genesis block wordt genoemd. Daarna volgt het tweede, dan het derde, enzovoort.
Al deze datablocks worden automatisch gedupliceerd op talloze knooppunten in het blockchain-netwerk. Zo wordt een gedecentraliseerde opslag van blockchain-gegevens gegarandeerd.
Je kunt het blockchain-systeem zien als een groot aantal knooppunten (fysieke of virtuele servers) die zijn verbonden in een netwerk en alle wijzigingen in de keten van datablocks repliceren. Het is als een gigantische multi-servercomputer, waarbij de knooppunten van deze computer (servers) over de hele wereld verspreid kunnen zijn. En jij kunt ook je computer aan het blockchain-netwerk toevoegen.
Gedecentraliseerde database
Blockchain kan worden gezien als een gedecentraliseerde database die op alle knooppunten in het blockchain-netwerk wordt gerepliceerd. In theorie zal de blockchain blijven functioneren zolang er minstens één knooppunt actief is dat alle blokken van de blockchain opslaat.
Gedecentraliseerd gegevensregister
Blockchain kan worden gezien als een gedecentraliseerd gegevens- en transactie-register. Een andere naam voor zo'n register is een grootboek.
In een gedistribueerd register kunnen gegevens worden toegevoegd, maar kunnen ze niet worden gewijzigd of verwijderd. Deze onmogelijkheid wordt onder andere bereikt door het gebruik van cryptografische algoritmen, speciale algoritmen voor het toevoegen van blokken aan de keten en gedecentraliseerde opslag van gegevens.
Bij het toevoegen van blokken en het uitvoeren van transacties worden privé- en publieke sleutels gebruikt. Deze beperken de gebruikers van de blockchain, door hen alleen toegang te geven tot hun eigen datablocks.
Transacties
De blockchain slaat informatie over transacties op in blokken. Oude, al uitgevoerde transacties kunnen niet worden teruggedraaid of gewijzigd. Nieuwe transacties worden opgeslagen in nieuwe, toegevoegde blokken.
Zo kan in de blockchain de volledige geschiedenis van transacties onveranderd worden vastgelegd. Daarom kan de blockchain bijvoorbeeld worden gebruikt voor de veilige opslag van banktransacties, gegevens over auteursrechten, de geschiedenis van eigenaars van onroerend goed, enzovoort.
De Ethereum blockchain bevat de zogenaamde systeemstatussen. Naarmate transacties worden uitgevoerd, verandert de status van de initiële naar de huidige. Transacties worden vastgelegd in blokken.
Publieke en private blockchains
Het moet opgemerkt worden dat alles wat gezegd is alleen geldt voor de zogenaamde publieke blockchain-netwerken, die niet kunnen worden gecontroleerd door enige afzonderlijke natuurlijke of rechtspersoon, overheidsinstellingen of regeringen.
De zogenaamde private blockchain-netwerken staan onder volledig toezicht van hun makers, en daar is alles mogelijk, bijvoorbeeld het volledig vervangen van alle blokken in de keten.
Praktische toepassingen van blockchain
Waar is blockchain nuttig voor?
Kort gezegd, blockchain maakt het mogelijk om veilig transacties uit te voeren tussen partijen of bedrijven die elkaar niet vertrouwen. Gegevens (transacties, persoonlijke gegevens, documenten, certificaten, contracten, vrachtbrieven, enz.) die in de blockchain zijn vastgelegd, kunnen niet worden vervalst of vervangen na registratie. Daarom kunnen op basis van blockchain bijvoorbeeld betrouwbare gedistribueerde registers voor verschillende soorten documenten worden gemaakt.
Natuurlijk weet je dat cryptocurrency-systemen op blockchain-technologie zijn gebaseerd, die bedoeld zijn om gewone papieren valuta te vervangen. Papieren geld wordt ook wel fiatgeld genoemd (van Fiat Money).
Blockchain zorgt voor de opslag en onveranderlijkheid van transacties die in blokken zijn vastgelegd, daarom kan het worden gebruikt voor het creëren van cryptocurrency-systemen. Het bevat de volledige geschiedenis van de overdracht van crypto-activa tussen verschillende gebruikers (accounts), waarbij elke transactie traceerbaar is.
Hoewel transacties binnen cryptocurrency-systemen anoniem kunnen zijn, leidt het opnemen van cryptocurrency en de uitwisseling ervan voor fiatgeld meestal tot de onthulling van de identiteit van de eigenaar van de cryptocurrency-activa.
De zogenaamde smart contracts, die software zijn die werkt op het Ethereum-netwerk, maken het mogelijk om het proces van het sluiten van deals te automatiseren en de uitvoering ervan te controleren. Dit is vooral effectief als de betaling voor de deal wordt gedaan met de cryptocurrency Ether.
De Ethereum blockchain en Ethereum smart contracts, geschreven in de programmeertaal Solidity, kunnen worden gebruikt in gebieden zoals:
- een alternatief voor notariële bevestiging van documenten;
- het bijhouden van het register van onroerend goed en informatie over transacties met onroerend goed;
- het opslaan van informatie over auteursrechten op intellectuele eigendom (boeken, afbeeldingen, muziekwerken, enz.);
- het opzetten van systemen voor onafhankelijke stemprocedures;
- de financiële sector en bankactiviteiten;
- logistiek op internationaal niveau, traceerbaarheid van vrachtbewegingen;
- opslag van persoonlijke gegevens als een alternatief voor identificatiesystemen;
- veilige transacties in het commerciële domein;
- opslag van resultaten van medische onderzoeken, evenals historie van voorgeschreven procedures
Problemen met blockchain
Maar het is natuurlijk niet zo eenvoudig als het lijkt!
Er zijn problemen met de verificatie van gegevens voordat ze aan de blockchain worden toegevoegd (bijvoorbeeld, zijn ze niet vervalst?), problemen met de veiligheid van het systeem- en toepassingssoftware die wordt gebruikt voor blockchain, en problemen met de mogelijkheid om sociale-engineeringmethoden te gebruiken om toegang tot cryptocurrency-portemonnees te stelen, enz.
Nogmaals, als we het hebben over een privaat blockchain dat eigendom is van een persoon of organisatie, in plaats van een publiek blockchain waarvan de knooppunten over de hele wereld verspreid zijn, is het betrouwbaarheidsniveau hier niet hoger dan het niveau van vertrouwen in die persoon of organisatie.
Daarnaast moet worden opgemerkt dat gegevens die in de blockchain zijn geregistreerd, toegankelijk worden voor iedereen. In die zin is blockchain (vooral publiek) niet geschikt voor het opslaan van gevoelige informatie. Echter, het feit dat informatie in de blockchain niet kan worden gewijzigd, kan helpen bij het voorkomen of onderzoeken van verschillende soorten frauduleuze activiteiten.
Decentrale applicaties van Ethereum zijn handiger als hun gebruik met cryptocurrency wordt betaald. Hoe meer mensen cryptocurrency bezitten of bereid zijn deze aan te schaffen, hoe populairder DApp-toepassingen en smart contracts worden.
Onder de algemene problemen van blockchain die de praktische toepassing ervan bemoeilijken, kunnen de beperkte snelheid van het toevoegen van nieuwe blokken en de relatief hoge kosten van transacties worden genoemd. Maar technologieën op dit gebied ontwikkelen zich actief en er zijn hoop dat technische problemen in de toekomst zullen worden opgelost.
Een ander probleem is dat smart contracts van de Ethereum-blockchain werken in een geïsoleerde omgeving van virtuele machines, en geen toegang hebben tot gegevens uit de echte wereld. In het bijzonder kan het smart contractprogramma zelf geen gegevens van websites of fysieke apparaten (sensoren, contacten, enz.) lezen, noch kan het gegevens naar externe apparaten verzenden. Dit probleem en de manieren om het op te lossen, zullen we bespreken in de les die gewijd is aan zogenaamde Orakels — informatie-intermediairs van smart contracts.
Daarnaast zijn er beperkingen op het gebied van wetgeving. In sommige landen is het bijvoorbeeld verboden om cryptocurrency als betaalmiddel te gebruiken, maar het is toegestaan om het te bezitten als een soort digitale activa, vergelijkbaar met effecten. Dergelijke activa kunnen op de beurs worden gekocht en verkocht. In ieder geval is het noodzakelijk om bij het opzetten van een project dat met cryptocurrency werkt, de wetgeving van het land te raadplegen waaronder uw project valt.
Hoe de blockchain-keten wordt gevormd
Zoals we al hebben gezegd, is blockchain een eenvoudige keten van blokken met gegevens. Eerst wordt het eerste blok van deze keten gemaakt, daarna wordt het tweede eraan toegevoegd, enzovoort. Het wordt verondersteld dat transactiegegevens in de blokken worden opgeslagen en aan het laatste blok worden toegevoegd.
In fig. 1.1 hebben we de eenvoudigste optie van een blokvolgorde getoond, waarbij het eerste blok naar het volgende verwijst.

Figuur 1.1. Eenvoudige volgorde van blokken
In dit geval kan echter de inhoud van elk blok in de keten heel eenvoudig worden vervalst, aangezien de blokken geen enkele informatie bevatten ter bescherming tegen wijzigingen. Aangezien blockchain bedoeld is voor gebruik door mensen en bedrijven die elkaar niet vertrouwen, kan worden geconcludeerd dat deze manier van gegevensopslag niet geschikt is voor blockchain.
Laten we ons richten op het beschermen van blokken tegen vervalsing. In de eerste fase zullen we proberen elk blok te beveiligen met een controlegetal (fig. 1.2).

Figuur 1.2. We voegen een gegevensbescherming voor blokken toe met controlegetal
Nu kan een aanvaller niet zomaar een blok wijzigen, omdat dit blok een controlegetal van de gegevens bevat. Controle van het controlegetal zal aantonen dat de gegevens zijn gewijzigd.
Voor het berekenen van het controlegetal kan een van de hashingfuncties worden gebruikt, zoals MD-5, SHA-1, SHA-256, enzovoort. Hash-functies berekenen een bepaalde waarde (bijvoorbeeld in de vorm van een tekststring van constante lengte) als resultaat van onomkeerbare bewerkingen op een blok gegevens. De bewerkingen zijn afhankelijk van het type hash-functie.
Zelfs bij een kleine wijziging in de inhoud van het blok gegevens zal de waarde van de hash-functie ook veranderen. Door de waarde van de hash-functie te analyseren, is het onmogelijk om het gegevensblok te herstellen waarvoor deze is berekend.
Zal deze bescherming voldoende zijn? Helaas niet.
In dit schema beschermt het controlegetal (hash-functie) alleen individuele blokken, maar niet de hele keten van blokken. Wetende hoe de hash-functie wordt berekend, kan een aanvaller gemakkelijk de inhoud van een blok vervangen. Ook staat niets hem toe om blokken uit de keten te verwijderen of nieuwe toe te voegen.
Om de hele keten als geheel te beschermen, kan in elk blok samen met de gegevens ook de hash van het eerdere blok worden opgeslagen (fig. 1.3).

Figuur 1.3. We voegen de hash van het vorige blok toe in de blokgegevens
In dit systeem, om een blok te wijzigen, moeten de hashfuncties van alle daaropvolgende blokken opnieuw worden berekend. Lijkt er een probleem te zijn?
In echte blockchains zijn er bovendien kunstmatige moeilijkheden gecreëerd voor het toevoegen van nieuwe blokken - er worden algoritmen gebruikt die veel rekenkracht vereisen. Gezien het feit dat het herberekenen van de wijziging niet alleen voor dat blok, maar voor alle daaropvolgende blokken moet gebeuren, zal het extreem moeilijk zijn om dit te doen.
Laten we ook niet vergeten dat de data van de blockchain (gedupliceerd) worden opgeslagen op talloze nodes in het netwerk, d.w.z. er wordt gebruik gemaakt van gedecentraliseerde opslag. Dit maakt het vervalsen van een blok aanzienlijk moeilijker, omdat de wijzigingen op alle nodes in het netwerk moeten worden doorgevoerd.
Aangezien blokken informatie over het vorige blok bevatten, kan de inhoud van alle blokken in de keten worden gecontroleerd.
Ethereum Blockchain
De Ethereum Blockchain is een platform waarop gedistribueerde applicaties DApp kunnen worden ontwikkeld. In tegenstelling tot andere platforms, stelt Ethereum het gebruik van zogenaamde slimme contracten (smart contracts) mogelijk, geschreven in de programmeertaal Solidity.
Dit platform werd in 2013 opgericht door Vitalik Buterin, de oprichter van het tijdschrift Bitcoin Magazine, en gelanceerd in 2015. Alles wat we in onze cursus zullen bestuderen of doen, heeft betrekking op de Ethereum blockchain en Solidity smart contracts.
Mining of hoe blokken worden gemaakt
Mining (mining) is een vrij complex en resource-intensief proces voor het toevoegen van nieuwe blokken aan de blockchain, en is niet gewoon het 'delven van cryptocurrency'. Mining waarborgt de functionaliteit van de blockchain, omdat dit proces verantwoordelijk is voor het toevoegen van transacties aan de Ethereum blockchain.
Personen en organisaties die zich bezighouden met het toevoegen van blokken worden miners (miner) genoemd.
De software (software) die draait op de miners' nodes probeert voor het laatste blok een hashing-parameter genaamd Nonce te vinden, zodat er een bepaald waarde van de hashfunctie, zoals door het netwerk is opgegeven, wordt verkregen. Het hashing-algoritme Ethash, toegepast in Ethereum, staat alleen het verkrijgen van de waarde van Nonce toe door middel van sequentiële pogingen.
Als de mijnnode de juiste Nonce-waarde heeft gevonden, is dit wat men een bewijs van werk (PoW, Proof-of-work) noemt. In dat geval ontvangt de mijnwerker een bepaalde beloning in de valuta van het netwerk – Ether – wanneer het blok aan het Ethereum-netwerk wordt toegevoegd. Op het moment van het schrijven van dit boek bedraagt de beloning 5 Ether, maar in de loop van de tijd zal dit worden verlaagd.
Daarom waarborgen Ethereum-mijnwerkers de werking van het netwerk door blokken toe te voegen en ontvangen ze hiervoor cryptocurrency-betalingen. Op internet vind je een overvloed aan informatie over mijnwerkers en mining, maar wij zullen ons richten op het creëren van Solidity-contracten en gedecentraliseerde toepassingen (DApp) binnen het Ethereum-netwerk.
Lesoverzicht
In de eerste les heb je kennisgemaakt met blockchain en geleerd dat het een speciaal samengestelde reeks blokken is. De inhoud van eerder opgeslagen blokken kan niet worden gewijzigd, omdat dit zou betekenen dat alle volgende blokken op vele knooppunten in het netwerk opnieuw moeten worden berekend, wat veel middelen en tijd kost.
Blockchain kan worden toegepast voor het bewaren van de resultaten van uitgevoerde transacties. Het belangrijkste doel is het organiseren van veilige transacties tussen partijen (personen en organisaties) die geen vertrouwen in elkaar hebben. Je hebt geleerd in welke specifieke bedrijfsgebieden en sectoren de Ethereum-blockchain en Solidity-smartcontracten kunnen worden gebruikt. Dit omvat de banksector, eigendomsregistratie, documentatie, enzovoort.
Je hebt ook geleerd dat er verschillende problemen kunnen optreden bij het gebruik van blockchain. Dit betreft de verificatie van informatie die aan de blockchain wordt toegevoegd, de snelheid van de blockchain, de kosten van transacties, het probleem van gegevensuitwisseling tussen smart contracts en de echte wereld, alsmede potentiële aanvallen van kwaadwillenden gericht op het stelen van cryptocurrency-fondsen van gebruikersaccounts.
Daarnaast hebben we kort het miningproces besproken als het toevoegen van nieuwe blokken aan de blockchain. Mining is noodzakelijk voor het uitvoeren van transacties. Diegenen die zich bezighouden met mining zorgen voor de functionaliteit van de blockchain en ontvangen hiervoor beloningen in cryptocurrency.
Les 2. Voorbereiden van de werkomgeving in Ubuntu en DebianSelectie van het besturingssysteem
Installatie van de noodzakelijke hulpprogramma's
Installatie van Geth en Swarm in Ubuntu
Installatie van Geth en Swarm in Debian
Voorbereiding
Laden van de Go-distributie
Instelling van omgevingsvariabelen
Controleren van de versie van Go
Installeren van Geth en Swarm
We creëren een privéblockchain
Готовим файл genesis.json
We creëren een map voor het werk
We creëren een account
We starten de initialisatie van de node
Startparameters voor de node
We verbinden met onze node
Beheer van mining en controle van het saldo
Afsluiten van de Geth-console
Lesoverzicht
Les 3. Voorbereiding van de werkomgeving op Raspberry Pi 3Voorbereiding van Raspberry Pi 3 voor gebruik
Installatie van Raspbian
Installeren van updates
SSH-toegang inschakelen
Instellen van een statisch IP-adres
Installatie van de noodzakelijke hulpprogramma's
Installatie van Go
Laden van de Go-distributie
Instelling van omgevingsvariabelen
Controleren van de versie van Go
Installeren van Geth en Swarm
We creëren een privéblockchain
Controleren van account en saldo
Lesoverzicht
Les 4. Accounts en het overdragen van middelen tussen accountsBekijken en toevoegen van accounts
Bekijken van de lijst met accounts
Account toevoegen
Parameters van het commando geth account
Wachtwoorden van accounts
Cryptovaluta in Ethereum
Valuta-eenheden van Ethereum
Bepalen van het huidige saldo van onze accounts
Overdragen van middelen van de ene account naar de andere
Methode eth.sendTransaction
Bekijk de status van de transactie
Ontvangstbewijs van de transactie
Lesoverzicht
Les 5. Publicatie van het eerste contractSlimme contracten in Ethereum
Uitvoeren van een slim contract
Ethereum virtuele machine
Geïntegreerde ontwikkelomgeving Remix Solidity IDE
Starten van de compilatie
Oproepen van contractfuncties
Publiceren van het contract in een privé netwerk
Wij krijgen de definitie van ABI en de binaire code van het contract
Publiceren van het contract
Controleren van de status van de publicatietransactie van het contract
Oproepen van contractfuncties
Batchcompiler solc
Installeren van solc in Ubuntu
Installeren van solc in Debian
Compileren van het HelloSol-contract
Publiceren van het contract
Installeren van solc op Raspbian
Lesoverzicht
Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Installeren in Ubuntu
Installeren in Debian
Installeren en starten van Ganache-cli
Installeren van Web3
Installeren van solc
Installeren van Node.js op Raspbian
Script voor het ophalen van de lijst met accounts in de console
Script voor het publiceren van een slim contract
Starten en verkrijgen van parameters
Verkrijgen van startparameters
Compileren van het contract
Account ontgrendelen
Laden van ABI en binaire code van het contract
Beoordeling van de benodigde hoeveelheid gas
Creëren van een object en starten van de publicatie van het contract
Starten van het script voor de publicatie van het contract
Oproepen van functies van het slimme contract
Is het mogelijk om het gepubliceerde slimme contract bij te werken
Werken met Web3 versie 1.0.x
Wij krijgen de lijst met accounts
Publiceren van het contract
Oproepen van contractfuncties
Overdragen van middelen van de ene account naar de andere
Overdragen van middelen naar het contractaccount
Bijwerken van het slimme contract HelloSol
We creëren een script voor het bekijken van het saldo van een account
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Vullen van het saldo van het slimme contract
Lesoverzicht
Les 7. Inleiding tot TruffleInstalleren van Truffle
We creëren het HelloSol-project
Creëren van de map en bestanden van het project
Map contracts
Catalogus migrations
Catalogus test
Файл truffle-config.js
Compileren van het HelloSol-contract
Publicatie van het contract starten
Contractfuncties HelloSol aanroepen in Truffle-uitnodiging
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Truffle-contractmodule installeren
Contractfuncties getValue en getString aanroepen
Contractfuncties setValue en setString aanroepen
Contract wijzigen en opnieuw publiceren
Werken met Web3 versie 1.0.x
Wijzigingen aanbrengen in de smart contract HelloSol
Scripts voor het aanroepen van contractmethoden
Testen in Truffle
Testen in Solidity
Testen in JavaScript
Lesoverzicht
Les 8. Gegevens Types in SolidityContract voor het bestuderen van gegevens types
Logische gegevenstypen
Niet-teken en teken getallen
Vastkomma getallen
Adres
Variabelen van complexe types
Arrays met vaste grootte
Dynamische arrays
Opsomming
Structuren
Mapping woordenboeken
Lesoverzicht
Les 9. Contract migratie naar een privé net en het Rinkeby netwerkContract publiceren vanuit Truffle naar een privé Geth-netwerk
Voorbereiding van een privé net node
Contract voorbereiden voor gebruik
Compileren en migreren van het contract naar het Truffle-netwerk
Migratie starten naar het lokale geth-netwerk
Truffle artefacten verzamelen
Contract publiceren vanuit Truffle naar het Rinkeby testnet
Voorbereiding van Geth-node voor Rinkeby
Synchroniseren van de node
Accounts toevoegen
Rinkeby-account opwaarderen met Ether
Contract migratie starten naar het Rinkeby-netwerk
Informatie over het contract bekijken in het Rinkeby-netwerk
Truffle console voor het Rinkeby netwerk
eenvoudigere manier om contractfuncties aan te roepen
Вызов методов контракта при помощи Node.js
Overdracht van middelen tussen accounts in de Truffle-console voor Rinkeby
Lesoverzicht
Les 10. Gedecentraliseerde dataopslag Ethereum SwarmHoe werkt Ethereum Swarm
Swarm installeren en starten
Bestands- en directorybewerkingen
Bestand uploaden naar Ethereum Swarm
Bestand lezen uit Ethereum Swarm
Weergave van het manifest van het geüploade bestand
Mappen met submappen uploaden
Bestand lezen uit de geüploade map
Publieke Swarm-gateway gebruiken
Обращение к Swarm из скриптов Node.js
Perl-module Net::Ethereum::Swarm
Module Net::Ethereum::Swarm installeren
Gegevens schrijven en lezen
Lesoverzicht
Les 11. Web3.py framework voor Ethereum-werking op PythonWeb3.py installeren
Bijwerken en installeren van benodigde pakketten
Easysolc-module installeren
Contract publiceren met behulp van Web3.py
Compileren van het contract
Verbinden met de provider
Publicatie van het contract uitvoeren
Contractadres en abi opslaan in een bestand
Starten van het script voor de publicatie van het contract
Contractmethoden aanroepen
Contractadres en abi lezen uit een JSON-bestand
Verbinden met de provider
Contractobject maken
Contractmethoden aanroepen
Truffle en Web3.py
Lesoverzicht
Les 12. OrakelsKan een smart contract vertrouwen op gegevens uit de echte wereld
Orakels als informatieve tussenpersonen van de blockchain
Gegevensbron
Code voor het presenteren van gegevens uit de bron
Oracle voor het opslaan van de wisselkoers in de blockchain
Contract USDRateOracle
Bijwerken van de wisselkoers in het slimme contract
Gebruik van de Web Socket-provider
Wachten op het evenement RateUpdate
Verwerken van het evenement RateUpdate
Initialiseren van de gegevensupdate in het slimme contract
Lesoverzicht
Bron: habr.com
