
I har arbejdet mere end et år på bogen "Oprettelse af smarte kontrakter i Solidity for Ethereum blockchain. En praktisk vejledning", og nu er dette arbejde fuldført, og bogen .
Jeg håber, min bog hjælper med hurtigt at komme i gang med at skabe smarte kontrakter i Solidity og distribuerede applikationer DApp til Ethereum blockchain. Den består af 12 lektioner med praktiske opgaver. Ved at udføre dem vil læseren være i stand til at oprette sine egne lokale Ethereum-noder, offentliggøre smarte kontrakter og kalde deres metoder, samt udveksle data mellem den virkelige verden og smarte kontrakter ved hjælp af orakler, og arbejde med testnetværket Rinkeby.
Bogen henvender sig til alle, der er interesseret i avancerede teknologier inden for blockchain og ønsker hurtigt at få den viden, der gør det muligt at arbejde med spændende og lovende opgaver.
Nedenfor finder du indholdsfortegnelsen og det første kapitel af bogen (også på er der tilgængelige uddrag af bogen). Jeg ser frem til at modtage feedback, kommentarer og forslag. Alt dette vil jeg forsøge at tage i betragtning ved forberedelsen af næste udgave af bogen.
IndholdsfortegnelseIntroduktionVores bog er beregnet til dem, der ikke blot ønsker at forstå, hvordan Ethereum blockchain fungerer, men også ønsker at få praktiske færdigheder i oprettelse af distribuerede applikationer DApp ved hjælp af programmeringssproget Solidity til dette netværk.
Det er bedre at arbejde med denne bog end blot at læse den og udføre de praktiske opgaver, der er beskrevet i lektionerne. For at arbejde med den vil du have brug for en lokal computer, en virtuel eller cloud-server med installeret Debian eller Ubuntu. Mange opgaver kan også udføres på en Raspberry Pi.
I den første lektion vil vi se på, hvordan Ethereum blockchain fungerer, og den grundlæggende terminologi, samt fortælle om, hvor dette blockchain kan anvendes.
Formålet Den anden lektion er at oprette en privat Ethereum blockchain-node til videre brug i dette kursus på en Ubuntu- og Debian-server. Vi vil gennemgå installationen af de grundlæggende værktøjer, såsom geth, der muliggør driften af vores blockchain-node, samt dæmonen for det decentraliserede datalager swarm.
Den tredje lektion vil lære dig at eksperimentere med Ethereum på en billig Raspberry Pi-mikrocomputer. Du vil installere operativsystemet (OS) Rasberian på Raspberry Pi, værktøjet Geth, som muliggør driften af blockchain-noden, samt den decentrale datalagerdaemon Swarm.
Fjerde lektion er dedikeret til konti og kryptovalutaer i Ethereum-netværket samt metoder til at overføre midler fra en konto til en anden via Geth-konsollen. Du vil lære at oprette konti, initiere transaktioner til overførsel af midler, få transaktionens status og modtage en kvittering.
I den femte lektion bliver du introduceret til smart contracts i Ethereum-netværket, og du vil lære om deres udførelse af Ethereum Virtual Machine.
Du vil oprette og offentliggøre din første smart contract i Ethereum's private netværk og lære at kalde dens funktioner. Til dette vil du bruge udviklingsmiljøet Remix Solidity IDE. Derudover vil du lære at installere og bruge batchkompilatoren solc.
Vi vil også fortælle om den såkaldte Application Binary Interface (ABI) og lære dig at bruge den.
Sjette lektion er dedikeret til oprettelse af JavaScript-scripts, der kører under Node.js og udfører operationer med Solidity smart contracts.
Du vil installere Node.js på Ubuntu, Debian og Rasberian, og skrive scripts til at offentliggøre din smart contract i det lokale Ethereum-netværk og kalde dens funktioner.
Derudover vil du lære at overføre midler mellem almindelige konti ved hjælp af scripts samt indbetale dem på smart contract-konti.
I den syvende lektion vil du lære at installere og bruge den populære Truffle-integrerede udviklingsmiljø blandt udviklere af smart contracts. Du vil lære at skrive JavaScript-scripts, der kalder kontraktfunktioner ved hjælp af truffle-contract-modulet, samt udføre testning af din smart contract med Truffle.
Ottende lektion er dedikeret til datatyper i Solidity. Du vil skrive smart contracts, der arbejder med datatyper som signerede og usignerede heltal, signede tal, strenge, adresser, variabler af komplekse typer, arrays, enumerationer, strukturer og ordbøger.
I den niende lektion Du vil komme et skridt nærmere på at skabe smart contracts til hovednetværket Ethereum. Du vil lære at publicere kontrakter ved hjælp af Truffle i et privat Geth-netværk samt i testnetværket Rinkeby. Fejlretning af smart contracts på Rinkeby-netværket er meget nyttigt, inden de publiceres på hovednetværket — det er næsten alt reelt, men gratis.
I denne lektion vil du oprette en node i testnetværket Rinkeby, fylde den med midler og offentliggøre en smart contract.
Lektion 10 handler om distribuerede datalagre Ethereum Swarm. Ved at bruge distribuerede lagre sparer du penge på lagring af store mængder data i Ethereum blockchain.
I denne lektion vil du oprette et lokalt Swarm-lager, udføre skrive- og læseoperationer med filer samt kataloger med filer. Derefter vil du lære at arbejde med den offentlige Swarm-gateway, skrive scripts til at få adgang til Swarm fra Node.js og med Perl-modulet Net::Ethereum::Swarm.
Målet med lektion 11 er at mestre arbejdet med smart contracts i Solidity ved hjælp af det populære programmeringssprog Python og rammeværket Web3.py. Du vil installere dette rammeværk, skrive scripts til at kompilere og publicere smart contracts samt til at kalde deres funktioner. I denne forbindelse vil Web3.py blive brugt både alene og sammen med den integrerede udviklingsmiljø Truffle.
I lektion 12 vil du lære at overføre data mellem smart contracts og den virkelige verden ved hjælp af orakler. Dette vil være nyttigt for at hente data fra websteder, IoT-enheder, forskellige instrumenter og sensorer, samt at sende data fra smart contracts til disse enheder. I den praktiske del af lektionen vil du oprette et orakel og en smart contract, der får den aktuelle valutakurs for USD til rubler fra den russiske centralbank.
Lektion 1. Kort om blockchain og Ethereum-netværketMålet med lektionen: at blive bekendt med principperne for, hvordan Ethereum-blockchain fungerer, dens anvendelsesområder og hovedterminologi.
Praktiske opgaver: der er ikke planlagt nogle i denne lektion.
Sandsynligvis findes der i dag ikke en softwareudvikler (SO), der ikke har hørt om blockchain-teknologi, kryptovalutaer, bitcoins, initial coin offerings (ICO), smart contracts samt andre begreber og termer relateret til blockchain.
Blockchain-teknologi åbner nye markeder og skaber arbejdspladser for programmører. Hvis du mestrer alle nuancer af kryptovalutateknologier og smart contracts, bør du ikke have problemer med at anvende denne viden i praksis.
Det skal siges, at der opstår mange spekulationer omkring kryptovalutaer og blockchains. Vi vil lægge diskussioner om ændringer i kryptovalutakurser, pyramideopbygning og nuancerne af kryptovaluta-lovgivning til side. I vores kursus fokuserer vi primært på de tekniske aspekter ved anvendelsen af smart contracts på Ethereum blockchain (Ethereum, ether) og udviklingen af de såkaldte decentrale applikationer (Distributed Application, DApp).
Hvad er blockchain
Blockchain (Blockchain, Block Chain) er en kæde af datablokke, der er forbundet på en bestemt måde. I begyndelsen af kæden ligger den første blok, som kaldes genesis-blokken (genesis block). Derefter følger den anden, den tredje og så videre.
Alle disse datablokke kopieres automatisk på de mange noder i blockchain-netværket. Dette sikrer decentraliseret datalagring for blockchain.
Du kan forestille dig et blockchain-system som et stort antal noder (fysiske eller virtuelle servere) forbundet i et netværk, der replikerer alle ændringer i kæden af datablokke. Det er som en kæmpe multi-server computer, hvor noderne af denne computer (servere) kan være spredt over hele verden. Og du kan også tilføje din computer til blockchain-netværket.
Fordelt database
Blockchain kan betragtes som en distribueret database, der replikeres på alle noder i blockchain-netværket. Teoretisk vil blockchain fungere, så længe der er mindst én node, der opbevarer alle blokke i blockchain.
Fordelt dataliste
Blockchain kan betragtes som en distribueret liste over data og transaktioner. Et andet navn for denne liste er hovedbogen.
I et distribueret register kan der tilføjes data, men de kan ikke ændres eller slettes. Denne umulighed opnås blandt andet ved brug af kryptografiske algoritmer, særlige algoritmer til tilføjelse af blokke til kæden og decentral lagring af data.
Ved tilføjelse af blokke og udførelse af operationer (transaktioner) anvendes private og offentlige nøgler. De begrænser brugerne af blockchain og giver dem adgang kun til deres egne datablokke.
Transaktioner
Blockchain gemmer information om operationer (transaktioner) i blokke. Gamle, allerede udførte transaktioner kan ikke rulles tilbage eller ændres. Nye transaktioner gemmes i nye, tilføjede blokke.
Dermed kan hele transaktionshistorien registreres uændret i blockchain. Derfor kan blockchain bruges, for eksempel til sikker opbevaring af banktransaktioner, oplysninger om ophavsret, ejendomshistorik og lignende.
Ethereum blockchain indeholder de såkaldte systemstatusser. Efterhånden som transaktioner udføres, ændres status fra den oprindelige til den nuværende. Transaktioner registreres i blokke.
Offentlige og private blockchains
Det skal bemærkes, at alt dette kun gælder for de såkaldte offentlige blockchain-netværk, som ikke kan kontrolleres af nogen enkeltpersoner, juridiske personer, statslige organer eller regeringer.
De såkaldte private blockchain-netværk er under fuld kontrol af deres skabere, og her er alt muligt, for eksempel en total udskiftning af alle blokke i kæden.
Praktiske anvendelser af blockchain
Hvad kan blockchain bruges til?
Kort sagt muliggør blockchain sikre transaktioner mellem parter eller virksomheder, der ikke har tillid til hinanden. Data, der er registreret i blockchain (transaktioner, personoplysninger, dokumenter, attester, kontrakter, fraktbreve osv.), kan ikke forfalskes eller ændres efter registrering. Derfor kan der på baggrund af blockchain oprettes, for eksempel, pålidelige distribuerede registre af forskellige dokumenttyper.
Selvfølgelig ved du, at kryptovaluta-systemer skabes på basis af blockchain-teknologi, som har til formål at erstatte almindelige papirpenger. Papirpenger kaldes også fiat penge (fra Fiat Money).
Blockchain sikrer opbevaring og uforanderlighed af transaktioner, der er indskrevet i blokke, derfor kan det bruges til at skabe kryptovaluta-systemer. Det indeholder hele historien om overførsel af kryptovaluta mellem forskellige brugere (konti), hvor enhver transaktion kan spores.
Selvom transaktioner inden for kryptovaluta-systemer kan være anonyme, fører udbetaling af kryptovaluta og omveksling til fiat penge normalt til afsløringen af ejerens identitet for den kryptovaluta aktiv.
De såkaldte smart contracts, som er software, der kører på Ethereum-netværket, muliggør automatisering af processen med at indgå aftaler og overvåge deres gennemførelse. Dette er særligt effektivt, hvis betalingen for aftalen sker med kryptovalutaen Ether.
Ethereum blockchain og Ethereum smart contracts, der er skrevet i programmeringssproget Solidity, kan anvendes i eksempelvis følgende områder:
- alternativ til notarisk bekræftelse af dokumenter;
- opbevaring af register for ejendom og information om ejendomshandler;
- opbevaring af oplysninger om ophavsret til intellektuelle ejendomme (bøger, billeder, musikværker osv.);
- oprettelse af systemer for uafhængig afstemning;
- finans- og bankvirksomhed;
- logistik på internationalt plan, sporing af godstransport;
- opbevaring af personlige data som en analog til identifikationssystemer;
- sikre transaktioner inden for kommercielle områder;
- opbevaring af resultater fra medicinske undersøgelser samt historikken for de tildelte procedurer.
Problemer med blockchain
Men selvfølgelig er det ikke alt så enkelt, som det kunne synes!
Der er problemer med verifikation af data før de tilføjes til blockchain (for eksempel, om de er ægte?), problemer med sikkerheden af system- og applikationssoftware, der anvendes til at arbejde med blockchain, problemer med muligheden for at anvende metoder til social engineering for at stjæle adgang til wallets med kryptovaluta osv.
Igen, hvis det drejer sig om en privat blockchain, der tilhører en person eller organisation, vil niveauet af tillid ikke være højere end det niveau af tillid, der er givet til denne person eller organisation.
Det er også vigtigt at tage i betragtning, at de data, der er skrevet til blockchain, bliver tilgængelige for alle. I den forstand er blockchain (især offentlig) ikke egnet til opbevaring af fortrolige oplysninger. Dog kan det faktum, at informationen i blockchain ikke kan ændres, hjælpe med at forhindre eller undersøge forskellige former for svig.
Decentraliserede applikationer på Ethereum vil være mere praktiske, hvis der betales for deres brug med kryptovaluta. Jo flere mennesker, der ejer kryptovaluta eller er villige til at købe det, desto mere populært bliver DApp applikationerne og smart contracts.
Blandt de generelle problemer med blockchain, der vanskeliggør dets praktiske anvendelse, kan man nævne den begrænsede hastighed af tilføjelsen af nye blokke og de relativt høje transaktionsomkostninger. Men teknologier inden for dette område udvikler sig aktivt, og der er håb om, at de tekniske problemer vil blive løst med tiden.
En anden udfordring er, at smart contracts på Ethereum blockchain fungerer i et isoleret miljø af virtuelle maskiner og ikke har adgang til data fra den virkelige verden. Specifikt kan smart contract-programmet ikke selv læse data fra websteder eller andre fysiske enheder (sensorer, kontakter osv.) og kan heller ikke levere data til eksterne enheder. Denne udfordring og måder at løse den på vil vi diskutere i lektionen om såkaldte Oracle - informationsformidlere for smart contracts.
Der er også juridiske begrænsninger. I nogle lande, for eksempel, er det forbudt at bruge kryptovaluta som betalingsmiddel, men det er muligt at eje det som en form for digital aktiv ligesom værdipapirer. Sådanne aktiver kan købes og sælges på børsen. Uanset hvad, når man opretter et projekt, der arbejder med kryptovaluta, er det vigtigt at sætte sig ind i lovgivningen i det land, som dit projekt er underlagt.
Hvordan en blockchain kæde dannes
Som vi allerede har nævnt, er blockchain en simpel kæde af datablokke. Først dannes den første blok i kæden, derefter tilføjes den anden og så videre. Det antages, at transaktionsdata opbevares i blokkene og tilføjes til den seneste blok.
I fig. 1.1 har vi vist den enkleste version af blokrækkefølgen, hvor den første blok henviser til den næste.

Fig. 1.1. Enkel blokrækkefølge
I denne variant kan indholdet af enhver blok i kæden dog let forfalskes, da blokkene ikke indeholder nogen information til beskyttelse mod ændringer. I betragtning af at blockchain er beregnet til brug af mennesker og virksomheder, som ikke har tillid til hinanden, kan man konkludere, at en sådan måde at gemme data på ikke er egnet til blockchain.
Lad os beskytte blokkene mod forfalskninger. I det første skridt vil vi forsøge at beskytte hver blok med en kontrolsum (fig. 1.2).

Fig. 1.2. Tilføjelse af databeskyttelse til blokkene med kontrolsum
Nu kan en angriber ikke blot ændre en blok, da den indeholder en kontrolsum for blokdataene. Kontrolsumkontrollen vil vise, at dataene er blevet ændret.
Til beregning af kontrolsummen kan man anvende en af hashfunktionerne, såsom MD-5, SHA-1, SHA-256 osv. Hashfunktioner beregner en bestemt værdi (f.eks. som en tekststreng med konstant længde) som resultat af irreversible operationer på datablokken. Operationerne afhænger af typen af hashfunktion.
Selv en lille ændring i indholdet af datablokken vil ændre hashfunktionen. Ved at analysere værdien af hashfunktionen er det umuligt at genskabe datablokken, for hvilken den blev beregnet.
Vil en sådan beskyttelse være tilstrækkelig? Desværre nej.
I dette skema beskytter kontrolsummen (hashfunktionen) kun de enkelte blokke, men ikke selve kæden af blokke. Ved at kende algoritmen for hashfunktionen kan en angriber nemt ændre indholdet af en blok. Der er heller ikke noget, der forhindrer dem i at slette blokke fra kæden eller tilføje nye.
For at beskytte hele kæden kan man opbevare hash af dataene fra den foregående blok i hver blok sammen med dataene (fig. 1.3).

Fig. 1.3. Tilføjelse af hash af den forrige blok til blokdataene
I denne ordning, for at ændre en blok, skal man genberegne hash-funktionerne for alle efterfølgende blokke. Det virker som om, der ikke er noget problem.
I virkelige blockchains er der desuden skabt kunstige vanskeligheder for at tilføje nye blokke - man bruger algoritmer, der kræver mange beregningsressourcer. Da det kræver at genberegne ikke kun denne blok, men alle efterfølgende for at foretage ændringer, vil det være ekstremt svært.
Lad os også huske, at data i blockchainen gemmes (dupliceres) på mange knudepunkter i netværket, dvs. der anvendes decentraliseret lagring. Dette gør det også meget vanskeligere at forfalske en blok, da ændringer skal foretages på alle knudepunkter i netværket.
Da blokke indeholder information om den foregående blok, kan man kontrollere indholdet af alle blokke i kæden.
Ethereum Blockchain
Ethereum blockchain er en platform, hvorpå man kan oprette distribuerede applikationer (DApp). I modsætning til andre platforme tillader Ethereum brugen af såkaldte smarte kontrakter (smart contracts), der er skrevet i programmeringssproget Solidity.
Denne platform blev skabt i 2013 af Vitalik Buterin, grundlæggeren af Bitcoin Magazine, og blev lanceret i 2015. Alt, hvad vi vil lære eller gøre i vores kursus, relaterer sig netop til Ethereum blockchain og Solidity smart contracts.
Mining eller hvordan blokke bliver skabt
Mining (mining) er en ret kompleks og ressourcekrævende proces til at tilføje nye blokke til blockchainen, og ikke bare 'udvinding af kryptovaluta'. Mining sikrer blockchainens funktionalitet, da det netop er denne proces, der står for tilføjelsen af transaktioner i Ethereum blockchain.
Mennesker og organisationer, der beskæftiger sig med at tilføje blokke, kaldes minearbejdere (miner).
Software (SP), der kører på minerknudepunkterne, forsøger at finde en hash-parameter for den sidste blok, kaldet Nonce, for at få en bestemt værdi af hash-funktionen, som er angivet af netværket. Hash-algoritmen Ethash, der anvendes i Ethereum, tillader, at man kun får Nonce-værdien ved sekventiel brute force.
Hvis minerens node finder den korrekte værdi af Nonce, er dette såkaldt et bevis på arbejde (PoW, Proof-of-work). I dette tilfælde, hvis blokken tilføjes til Ethereum-netværket, modtager minerens en bestemt belønning i netværkets valuta — Ether. På tidspunktet for forberedelsen af vores bog er belønningen 5 Ether, men den vil blive reduceret over tid.
Dermed sikrer Ethereum-minere netværkets funktion ved at tilføje blokke og modtager kryptovaluta som betaling. På internettet kan du finde en masse information om minere og mining, men vi vil fokusere på at skabe Solidity-kontrakter og decentraliserede applikationer (DApp) på Ethereum-netværket.
Lesson Summary
I den første lektion blev du introduceret til blockchain og lærte, at det er en særligt sammensat sekvens af blokke. Indholdet af tidligere indspillede blokke kan ikke ændres, da det ville kræve, at alle efterfølgende blokke bliver omregnet på mange noder i netværket, hvilket kræver mange ressourcer og tid.
Blockchain kan anvendes til at gemme resultaterne af udførelsen af transaktioner. Dets hovedformål er at organisere sikker udførelse af transaktioner mellem parter (personer og organisationer), mellem hvilke der ikke er tillid. Du har lært, i hvilke specifikke erhvervsområder og inden for hvilke sektorer Blockchain Ethereum og Solidity smart contracts kan anvendes. Dette inkluderer banksektoren, ejendomregistrering, dokumenter osv.
Du har også lært, at der kan opstå forskellige problemer ved brug af blockchain. Dette inkluderer verifikation af information, der tilføjes til blockchain, hastigheden af blockchain, omkostningerne ved transaktioner, problemet med dataudveksling mellem smart contracts og den virkelige verden samt potentielle angreb fra kriminelle, der har til hensigt at stjæle kryptovaluta fra brugernes konti.
Vi har også kort omtalt mining som processen med at tilføje nye blokke til blockchain. Mining er nødvendig for at udføre transaktioner. Dem, der deltager i mining, sikrer blockchainens funktionalitet og modtager kryptovaluta som belønning.
Lektion 2. Forberedelse af arbejdsområde i Ubuntu og DebianValg af operativsystem
Installation af nødvendige værktøjer
Installation af Geth og Swarm i Ubuntu
Installation af Geth og Swarm i Debian
Forberedelse.
Download of the Go distribution
Opsætning af miljøvariabler
Checking the Go version
Installing Geth and Swarm
Creating a private blockchain
Готовим файл genesis.json
Creating a directory for work
Creating an account
Starting node initialization
Node launch parameters
Connecting to our node
Managing mining and checking balance
Closing the Geth console
Lesson Summary
Lesson 3. Preparing the working environment on Raspberry Pi 3Preparing Raspberry Pi 3 for work
Installing Raspbian
Installing updates
Enabling SSH access
Setting a static IP address
Installation af nødvendige værktøjer
Installation af Go
Download of the Go distribution
Opsætning af miljøvariabler
Checking the Go version
Installing Geth and Swarm
Creating a private blockchain
Checking the account and balance
Lesson Summary
Lesson 4. Accounts and transferring funds between accountsViewing and adding accounts
Viewing the list of accounts
Adding an account
geth account command parameters
Account passwords
Cryptocurrency in Ethereum
Ethereum currency units
Determining the current balance of our accounts
Transferring funds from one account to another
The eth.sendTransaction method
Viewing transaction status
Transaction receipt
Lesson Summary
Lesson 5. Publishing the first contractSmart contracts in Ethereum
Executing a smart contract
Ethereum Virtual Machine
Integrated Development Environment Remix Solidity IDE
Starting compilation
Calling contract functions
Publishing the contract in a private network
Obtaining the ABI definition and binary code of the contract
Publishing the contract
Checking the status of the contract publication transaction
Calling contract functions
Batch compiler solc
Installing solc on Ubuntu
Installing solc on Debian
Compiling the HelloSol contract
Publishing the contract
Installing solc on Raspbian
Lesson Summary
Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Installation on Ubuntu
Installation on Debian
Installing and running Ganache-cli
Installing Web3
Installing solc
Installing Node.js on Raspbian
Script for retrieving the list of accounts in the console
Script for publishing a smart contract
Starting and obtaining parameters
Getting launch parameters
Compiling the contract
Unlocking the account
Loading ABI and binary code of the contract
Estimating the required gas amount
Creating an object and launching contract publication
Running the contract publication script
Calling functions of the smart contract
Is it possible to update the published smart contract
Working with Web3 version 1.0.x
Retrieving the list of accounts
Publishing the contract
Calling contract functions
Transferring funds from one account to another
Transferring funds to the contract account
Updating the HelloSol smart contract
Creating a script to check the account balance
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Refilling the smart contract account
Lesson Summary
Lesson 7. Introduction to TruffleInstalling Truffle
Creating the HelloSol project
Creating the project directory and files
Katalog over kontrakter
Katalog over migrationer
Katalog over test
Файл truffle-config.js
Compiling the HelloSol contract
Start af offentliggørelse af kontrakt
Kald af funktionerne i kontrakten HelloSol i Truffle-indsættelse
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Installation af truffle-contract modulet
Kald af funktionerne getValue og getString i kontrakten
Kald af funktionerne setValue og setString i kontrakten
Ændring af kontrakt og genoffentliggørelse
Working with Web3 version 1.0.x
Vi foretager ændringer i smart-kontrakten HelloSol
Scripts til at kalde metode i kontrakten
Testning i Truffle
Test i Solidity
Test i JavaScript
Lesson Summary
Lektion 8. Datatyper i SolidityKontrakt til studiet af datatyper
Logiske datatyper
Usignerede heltal og signede heltal
Tal med fast decimal
Adresse
Variabler af komplekse typer
Arrays med fast størrelse
Dynamiske arrays
Oplistning
Strukturer
Mapping-diktionærer
Lesson Summary
Lektion 9. Migration af kontrakter til et privat netværk og netværket RinkebyOffentliggørelse af kontrakt fra Truffle til privat Geth-netværk
Forberedelse af knuden til privat netværk
Forberedelse af kontrakt til drift
Kompilering og migration af kontrakt til Truffle-netværket
Kørsel af migration i lokal geth-netværk
Vi udvinder artefakter fra Truffle
Offentliggørelse af kontrakt fra Truffle til testnetværket Rinkeby
Forberedelse af Geth-knuden til at arbejde med Rinkeby
Synkronisering af knude
Tilføjelse af konti
Påfyldning af Rinkeby-konto med ether
Kørsel af kontraktsmigration til Rinkeby-netværket
Visning af information om kontrakt i Rinkeby-netværket
Truffle-konsol til Rinkeby-netværket
En enklere måde at kalde funktionerne i kontrakten
Вызов методов контракта при помощи Node.js
Overførsel af midler mellem konti i Truffle-konsollen for Rinkeby
Lesson Summary
Lektion 10. Decentraliseret datalagring med Ethereum SwarmHvordan Ethereum Swarm fungerer
Installation og opstart af Swarm
Operationer med filer og mapper
Upload af fil til Ethereum Swarm
Læsning af fil fra Ethereum Swarm
Visning af manifestet for den uploadede fil
Upload af mapper med undermapper
Læsning af fil fra den uploadede mappe
Brug af offentlig gateway til Swarm
Обращение к Swarm из скриптов Node.js
Perl-modulet Net::Ethereum::Swarm
Installation af modulet Net::Ethereum::Swarm
Skrivning og læsning af data
Lesson Summary
Lektion 11. Web3.py-ramme til arbejde med Ethereum på PythonInstallation af Web3.py
Opdatering og installation af nødvendige pakker
Installation af modulet easysolc
Offentliggørelse af kontrakt ved hjælp af Web3.py
Compiling the contract
Forbindelse til udbyderen
Udførelse af offentliggørelse af kontrakt
Gem adresse og abi for kontrakt i fil
Running the contract publication script
Kald af metoder i kontrakten
Læsning af adressen og abi for kontrakt fra JSON-fil
Forbindelse til udbyderen
Oprettelse af kontraktobjekt
Kald af metoder i kontrakten
Truffle og Web3.py
Lesson Summary
Lektion 12. OraklerKan smart-kontrakten stole på data fra den eksterne verden
Orakler som informationsformidlere i blockchain
Datakilde
Kode til at repræsentere data fra kilden
Orakel til at registrere valutakurser i blockchain
Kontrakt USDRateOracle
Opdatering af valutakurs i smart kontrakten
Brug af Web Socket-udbyder
Vent på RateUpdate-begivenhed
Behandling af RateUpdate-begivenhed
Initiering af opdatering af data i smart kontrakten
Lesson Summary
Kilde: habr.com
