
Több mint egy éve dolgozom a „Okos szerződések Solidity készítése az Ethereum blokkláncra. Gyakorlati útmutató” című könyvön, és most már befejeztem ezt a munkát, a könyv .
Remélem, hogy a könyvem segít gyorsan elkezdeni az Ethereum blokklánc Solidity okos szerződéseinek és decentralizált alkalmazásainak DApp létrehozását. 12 leckéből áll, gyakorlati feladatokkal. Ezek elvégzésével az olvasó saját helyi Ethereum csomópontokat hozhat létre, okos szerződéseket publikálhat és azok metódusait hívhatja, adatokat cserélhet a való világ és az okos szerződések között orákulumokon keresztül, és dolgozhat a Rinkeby tesztelési és hibakereső hálózatával.
A könyv mindenkihez szól, aki érdeklődik a blokkláncok élvonalbeli technológiái iránt, és gyorsan szeretne tudást szerezni, amely lehetővé teszi számára, hogy érdekes és ígéretes munkát végezzen.
Az alábbiakban megtalálja a könyv tartalomjegyzékét és az első fejezetet (szintén a elérhetők a könyv részletei). Várom a visszajelzéseket, megjegyzéseket és javaslatokat. Mindezeket figyelembe fogom venni a könyv következő kiadása során.
TartalomjegyzékBevezetésKönyvünk azok számára készült, akik nemcsak az Ethereum blokklánc működésének alapelveit szeretnék megérteni, hanem gyakorlati készségeket is szeretnének szerezni a Solidity programozási nyelv használatával decentralizált alkalmazások DApp létrehozásában e hálózaton.
Ezt a könyvet nem csupán olvasni kell, hanem dolgozni vele, elvégezve a leckékben leírt gyakorlati feladatokat. A munkához szüksége lesz egy helyi számítógépre, virtuális vagy felhőszerverre Debian vagy Ubuntu operációs rendszerrel. Emellett sok feladat elvégzéséhez használható Raspberry Pi is.
Az első leckében megértjük az Ethereum blokklánc működési elveit és a főbb terminológiát, valamint beszélünk arról, hol lehet ezt a blokkláncot használni.
Cél a második leckében — létrehozzuk az Ethereum privát blokklánc egy csomópontját a kurzus további folytatásához egy Ubuntu és Debian szerveren. Megvizsgáljuk a fő segédeszközök telepítési sajátosságait, mint például a geth, amely a blokklánc csomópontunk működését biztosítja, és a decentralizált adat tároló swarm démonját.
A harmadik lecke megtanítja az Ethereum kísérletek lebonyolítására, egy olcsó Raspberry Pi mikroszámítógépen. Telepíteni fogja a Raspberry Pi-ra a Rasberian operációs rendszert (OS), a Geth eszközt, amely biztosítja a blokklánc csomópont működését, valamint a decentralizált adattároló Swarm démonját.
Negyedik lecke az Ethereum hálózatain belüli fiókokkal és kriptovaluta egységekkel foglalkozik, valamint a pénz átutalásának módjairól fiókok között a Geth konzol segítségével. Megtanulja, hogyan kell fiókokat létrehozni, kezdeményezni a pénzátutalási tranzakciókat, és megkapni a tranzakció állapotát és bizonylatát.
Az ötödik leckében megismeri az Ethereum hálózaton található intelligens szerződéseket, és többet megtud a végrehajtásukról az Ethereum virtuális gépe által.
Létrehozta és közzétette az első intelligens szerződését a magánhálózaton Ethereum, és megtanulja, hogyan hívja meg annak funkcióit. Ehhez a Remix Solidity IDE fejlesztői környezetet fogja használni. Emellett megtanulja telepíteni és használni a solc csomag fordítót.
Ezenkívül beszélünk a kérdéses alkalmazás bináris interfészéről (Application Binary Interface, ABI), és megtanítjuk annak használatát.
A hatodik lecke a JavaScript szkriptek létrehozására összpontosít, amelyek Node.js alatt futnak, és műveleteket hajtanak végre a Solidity intelligens szerződésekkel.
Telepíti a Node.js-t Ubuntu, Debian és Rasberian rendszerre, szkripteket ír, amelyek közzéteszik az intelligens szerződéseket a helyi Ethereum hálózaton és hívják meg annak funkcióit.
Ezenkívül megtanulja, hogyan lehet pénzt átutalni normál fiókok között a szkriptek segítségével, valamint hogyan lehet pénzt jóváírni az intelligens szerződések fiókjaira.
A hetedik lecke megtanítja, hogyan kell telepíteni és használni a Solidity intelligens szerződések fejlesztésére népszerű Truffle integrált fejlesztői környezetet. Megtanulja, hogyan kell JavaScript szkripteket írni, amelyek a truffle-contract modul segítségével hívják meg a szerződések funkcióit, valamint tesztelni fogja az intelligens szerződését Truffle eszközeivel.
A nyolcadik lecke a Solidity adatok típusainak szentelt. Olyan intelligens szerződéseket fog írni, amelyek olyan adat típusokkal dolgoznak, mint a jelölt és jelöletlen egész számok, jelölttel rendelkező számok, karakterláncok, címek, bonyolult típusú változók, tömbök, felsorolások, struktúrák és szótárak.
A kilencedik lecke Egy lépéssel közelebb kerül a smart contractok létrehozásához az Ethereum főhálózatán. Megtudja, hogyan lehet Truffle segítségével szerződéseket publikálni a Geth privátnetén, valamint a Rinkeby teszthálózaton. A smart contractok hibakeresése a Rinkeby hálózaton rendkívül hasznos, mielőtt publikálná őket a főhálózaton — valós körülmények között, de ingyenesen.
A leckében létrehoz egy Rinkeby teszthálózati csomópontot, feltölti az eszközöket, és publikál egy smart contractot.
10. lecke az Ethereum Swarm elosztott adattárait célozza meg. Az elosztott tárolók használatával pénzt takaríthat meg az Ethereum blokkláncán nagymennyiségű adat tárolásán.
A lecke során létrehoz egy helyi Swarm tárolót, fájlok írási és olvasási műveleteit hajtja végre, valamint fájltárakat kezel. Ezt követően megtanulja, hogyan dolgozhat a nyilvános Swarm átjáróval, szkripteket ír a Swarm elérésére Node.js-ből, valamint a Perl Net::Ethereum::Swarm modul segítségével.
A 11. lecke célja a Solidity smart contractokkal való munka elsajátítása a népszerű Python programozási nyelven és a Web3.py keretrendszeren keresztül. Telepíteni fogja ezt a keretrendszert, szkripteket ír a smart contractok fordításához és publikálásához, valamint azok funkcióinak meghívásához. A Web3.py-t önállóan és a Truffle integrált fejlesztői környezetével együtt is használja.
A 12. leckén megtanulja, hogyan közvetíthet adatokat a smart contractok és a valós világ között oracle-ok segítségével. Ez hasznos lesz az adatok megszerzéséhez weboldalakról, IoT eszközökről, különféle mérőeszközökről és érzékelőkről, valamint az adatok smart contractok általi küldéséhez ezekre az eszközökre. A lecke gyakorlati részében létrehoz egy oracle-t és egy smart contractot, amely a USD és rubel aktuális árfolyamát szerzi be az Oroszországi Központi Bank weboldaláról.
1. lecke. Röviden a blokkláncról és az Ethereum hálózatrólA lecke célja: megismerkedni az Ethereum blokklánc működési elvével, alkalmazási területeivel és alapvető terminológiájával.
Gyakorlati feladatok: ebben a leckében nincsenek előirányozva.
Valószínűleg ma már nincs olyan szoftverfejlesztő, aki ne hallott volna a blokklánc (Blockchain) technológiáról, kriptovalutákról (Cryptocurrency vagy Crypto Currency), bitcoinekről (Bitcoin), a kezdeti érmék kínálatáról (ICO, Initial Coin Offering), smart contractokról (Smart Contract) és más, a blokklánc témájához kapcsolódó fogalmakról és kifejezésekről.
A blokklánc technológia új piacokat nyit meg és munkahelyeket teremt a programozók számára. Ha elsajátítod a kriptovaluta technológiák és az okos szerződések minden részletét, akkor nem lesznek problémáid a tudás gyakorlati alkalmazásával.
Fontos megjegyezni, hogy a kriptovaluták és blokkláncok körül sok spekuláció folyik. Hagyjuk figyelmen kívül a kriptovaluták árfolyamának ingadozásairól, piramisjátékokról, és a kriptovaluta jogszabályok finomságairól folytatott értekezéseket. Oktatási tanfolyamunkban főként az Ethereum blokklánc okos szerződéseinek (smart contracts) technikai aspektusaira és a decentralizált alkalmazások (Distributed Application, DApp) fejlesztésére összpontosítunk.
Mi az a blokklánc
A blokklánc (Blockchain, Block Chain) egy adatokból álló blokkok láncolata, amelyek bizonyos módon kapcsolódnak egymáshoz. A lánc elején található az első blokk, amelyet az elsődleges blokknak (genesis block) vagy génesis blokknak neveznek. Ezt követi a második, majd a harmadik és így tovább.
Mindezek a adatblokkok automatikusan megkettőződnek a blokklánc hálózat számos csomópontján. Ez biztosítja a blokklánc adatok decentralizált tárolását.
A blokkláncot úgy képzelhetjük el, mint a hálózat sok csomópontját (fizikai vagy virtuális szerverek), amelyek egyesítve reprodukálják az adatblokk láncban történt változásokat. Ez tulajdonképpen egy óriási több szerverből álló számítógép, ahol ennek a számítógépnek a csomópontjai (szerverei) világszerte szétszórtan helyezkednek el. Te is csatlakozhatsz a blokklánc hálózathoz a komputereddel.
Elosztott adatbázis
A blokklánc egy elosztott adatbázisként is elképzelhető, amely minden csomóponton megkettőződik a blokklánc hálózatban. Elméletileg a blokklánc működőképes lesz, amíg legalább egy csomópont aktív, amely tárolja az összes blokkját.
Elosztott adatnyilvántartás
A blokklánc egy elosztott adatnyilvántartásként és tranzakciók (műveletek) nyilvántartásaként is felfogható. Ennek a nyilvántartásnak egy másik neve a főkönyv.
A decentralizált nyilvántartásba adatokat lehet hozzáadni, de azokat nem lehet módosítani vagy törölni. Ezt a lehetetlenséget többek között kriptográfiai algoritmusok, speciális blokkok láncba való hozzáadására vonatkozó algoritmusok és decentralizált adatbázisok alkalmazásával érik el.
Blokkok hozzáadása és műveletek (tranzakciók) végrehajtása során privát és publikus kulcsokat használnak. Ezek korlátozzák a blokklánc felhasználóit, biztosítva számukra a hozzáférést csak a saját adataikhoz.
Tranzakciók
A blokklánc tárolja az információkat az operációkról (tranzakciókról) a blokkokban. A régi, már végrehajtott tranzakciók visszavonása vagy módosítása lehetetlen. Az új tranzakciók újonnan hozzáadott blokkokban tárolódnak.
Így a blokkláncban változatlan formában rögzíthető az összes tranzakció története. Ezért a blokkláncot például megbízható banki tranzakciók tárolására, szerzői jogi információk rögzítésére, ingatlanok tulajdonosainak változásainak nyomon követésére stb. lehet használni.
Az Ethereum blokklánc tartalmazza a rendszer úgynevezett állapotait. A tranzakciók végrehajtásával az állapot a kezdetitől a jelenlegire változik. A tranzakciók blokkokba kerülnek rögzítésre.
Publikus és privát blokkláncok
Fontos megjegyezni, hogy mindaz, amit eddig mondtunk, csak a úgynevezett publikus blokklánc hálózatokra vonatkozik, amelyeket nem lehet egyes fizikai vagy jogi személyek, állami hatóságok vagy kormányok által ellenőrizni.
A úgynevezett privát blokklánc hálózatok teljes mértékben az alkotóik irányítása alatt állnak, és ott bármi lehetséges, például az összes blokk teljes cseréje a láncban.
A blokklánc gyakorlati alkalmazásai
Mire lehet hasznos a blokklánc?
Röviden, a blokklánc biztonságos módon teszi lehetővé az üzleti tranzakciók lebonyolítását olyan személyek vagy cégek között, akik nem bíznak egymásban. A blokkláncba rögzített adatok (tranzakciók, személyes adatok, dokumentumok, tanúsítványok, szerződések, szállítólevelek stb.) nem hamisíthatók vagy módosíthatók a rögzítés után. Ezért a blokklánc alapjain például megbízható, elosztott nyilvántartásokat lehet létrehozni különféle dokumentumokhoz.
Természetesen tudja, hogy blockchain-alapú kriptovaluta rendszerek jönnek létre, amelyek célja a hagyományos papírpénz helyettesítése. A papírpénzt fiat pénznek is nevezik (Fiat Money).
A blockchain biztosítja a tranzakciók tárolását és változatlanságát, amelyeket blokkokba rögzítenek, ezért használható kriptovaluta rendszerek létrehozására. Tartalmazza a kriptoeszközök különböző felhasználók (fiókok) közötti átutalásának teljes történetét, és bármely tranzakció nyomon követhető.
Bár a kriptovaluta rendszereken belüli tranzakciók anonimak lehetnek, a kriptovaluta kivezetése és fiat pénzre való váltása általában a kriptovaluta tulajdonosának személyazonosságának nyilvánosságra kerüléséhez vezet.
Az úgynevezett okos szerződések, amelyek szoftverként működnek az Ethereum hálózaton, lehetővé teszik a megállapodások létrejötte és végrehajtásuk automatikus kezelését. Ez különösen hatékony, ha a megállapodás szerint a kifizetés Ether kriptovalutával történik.
Az Ethereum blockchain és az Ethereum okos szerződések, amelyeket Solidity programozási nyelven írtak, például az alábbi területeken használhatók:
- alternatívája a dokumentumok közjegyzői hitelesítésének;
- ingatlanok és ingatlan tranzakciók nyilvántartása;
- szellemi tulajdonjogokkal kapcsolatos információk tárolása (könyvek, képek, zenei művek stb.);
- független szavazási rendszerek létrehozása;
- pénzügyi szektor és banki tevékenységek;
- logisztika nemzetközi szinten, a szállítmányok nyomon követése;
- személyes adatok tárolása, mint az azonosító rendszerek analógja;
- biztonságos tranzakciók kereskedelmi területen;
- orvosi vizsgálatok eredményeinek és a végzett eljárások történetének tárolása.
Problémák a blockchain-nel
De természetesen nem minden olyan egyszerű, mint amilyennek látszik!
Adatok hitelesítésével kapcsolatos problémák merülnek fel, mielőtt azok hozzáadódnának a blockchain-hez (például nem hamisak-e?), a blockchain kezelése során használt rendszer- és alkalmazásprogramok biztonságával kapcsolatos problémák, valamint a kriptovaluta pénztárcákhoz való hozzáférés eltulajdonítását célzó social engineering módszerek használatának lehetőségével kapcsolatos problémák.
Ha ismét ügyezik a nyilvános blokkláncról, amelynek csomópontjai világszerte elérhetők, és nem egy magán blokkláncról, amely egy személyhez vagy intézményhez tartozik, akkor a bizalom szintje nem magasabb, mint az adott személy vagy intézmény iránti bizalom.
Figyelembe kell venni azt is, hogy a blokkláncra rögzített adatok mindenkinek elérhetők. Ebben az értelemben a blokklánc (különösen a nyilvános) nem alkalmas bizalmas információk tárolására. Ugyanakkor az, hogy az információt a blokkláncon lehetetlen megváltoztatni, segíthet megelőzni vagy felderíteni különféle csalásokkal kapcsolatos cselekedeteket.
Az Ethereum decentralizált alkalmazásai kényelmesek lesznek, ha a használatukért kriptovalutával fizetnek. Minél többen birtokolják a kriptovalutát, vagy készségesek a vásárlására, annál nagyobb népszerűségnek örvendenek majd a DApp alkalmazások és az okos szerződések.
A blokklánccal kapcsolatos gyakori problémák közé tartozik az új blokkok hozzáadásának korlátozott sebessége és a viszonylag magas tranzakciós költségek. Azonban ezen a területen a technológiák aktívan fejlődnek, és reméljük, hogy az idő múlásával a technikai problémák megoldódnak.
További probléma, hogy az Ethereum blokklánc okos szerződései elszigetelt virtuális gépek környezetében működnek, és nem rendelkeznek hozzáféréssel a valós világ adataihoz. Különösen az okos szerződéseket futtató program nem olvashat adatokat webhelyekről vagy valamilyen fizikai eszközökről (érzékelők, kapcsolók stb.), és nem tud adatokat küldeni külső eszközökre. Ezt a problémát és a megoldási módjait az úgynevezett Oracle-okkal, az okos szerződések információs közvetítőivel fogjuk megvitatni az órán.
Jogi vonatkozások is korlátozásokba ütköznek. Egyes országokban például tiltanak a kriptovaluta mint fizetőeszköz használata, de birtokolni lehet, mint digitális eszközt, például értékpapírokhoz hasonlóan. Az ilyen eszközöket tőzsdén lehet vásárolni és eladni. Minden esetben, amikor kriptovalutával működő projektet hozunk létre, fontos megismerkedni annak az országnak a jogszabályaival, amelynek joghatósága alá tartozik a projekt.
Hogyan alakul a blokklánc láncolata
Ahogy már említettük, a blokklánc lényegében egy egyszerű adatblokkokból álló lánc. Először létrejön a lánc első blokkja, majd hozzáadjuk a második blokkot és így tovább. Feltételezzük, hogy a tranzakciók adatai a blokkokban tárolódnak, és csak az utolsó blokkba kerülnek.
Az 1.1. ábrán bemutattuk a blokkok legegyszerűbb sorrendjét, ahol az első blokk a következőre hivatkozik.

1.1. ábra. Egyszerű blokksorrend
Ebben a verzióban azonban nagyon könnyen hamisítható bármely blokk tartalma, mivel a blokkok nem tartalmaznak semmilyen információt a módosítások védelme érdekében. Figyelembe véve, hogy a blokkláncot olyan emberek és cégek használják, akik között nincs bizalom, levonható a következtetés, hogy ez a módszer nem alkalmas a blokklánc adatainak tárolására.
Most foglalkozzunk a blokkok hamisítástól való védelmével. Az első lépésben megpróbáljuk védelmezni minden blokkot egy ellenőrző összeggel (1.2. ábra).

1.2. ábra. Adatblokkok védelme ellenőrző összeggel
Most a támadó nem tudja csak úgy megváltoztatni a blokkot, mivel az a blokk adatainak ellenőrző összegét tartalmazza. Az ellenőrző összeg ellenőrzése megmutatja, hogy az adatok megváltoztak.
Az ellenőrző összeg kiszámításához használhatunk egy hash-függvényt, például MD-5, SHA-1, SHA-256 stb. A hash-függvények egy bizonyos értéket (például állandó hosszúságú szöveges sorozatot) számítanak ki irreverzibilis műveletek végrehajtásával az adatblokkon. A műveletek a hash-függvény típusától függenek.
Még egy kis adatváltoztatás esetén is megváltozik a hash-függvény értéke. A hash-függvény értékének elemzése során lehetetlen visszaállítani azt az adatblokkot, amelyre kiszámították.
Elégséges lesz ez a védelem? Sajnos nem.
Ebben a rendszerben az ellenőrző összeg (hash-függvény) csak az egyes blokkokat védi, de nem az egész blokk láncot. Ha a támadó ismeri a hash-függvény kiszámításának algoritmusát, könnyen hamisíthatja a blokk tartalmát. Semmi nem akadályozza meg abban sem, hogy blokkokat távolítson el a láncból, vagy újakat adjon hozzá.
Ahhoz, hogy az egész láncot védjük, érdemes minden blokkban az adatok mellett a korábbi blokk hash-ét is tárolni (1.3. ábra).

1.3. ábra. Korábbi blokk hash-ének hozzáadása az adatblokkhoz
Ebben a rendszerben, ha meg akarunk változtatni egy blokkot, újra kell számolni az összes későbbi blokk hash-funkcióját. Úgy tűnik, mi a probléma?
A valós blokkláncokban további mesterséges nehézségeket alkalmaznak az új blokkok hozzáadására — olyan algoritmusok használatosak, amelyek sok számítási erőforrást igényelnek. Figyelembe véve, hogy a blokk módosításához nemcsak azt a blokkot, hanem az összes következő blokkot újra kell számolni, ezt rendkívül nehéz lesz végrehajtani.
Emlékezzünk arra is, hogy a blokklánc adatai számos hálózati csomóponton tárolódnak (másolódnak), azaz decentralizált tárolást használnak. Ez sokszorosan megnehezíti a blokk hamisítását, mivel a változtatásokat az összes hálózati csomópontban el kell végezni.
Mivel a blokkok tartalmazzák az előző blokkra vonatkozó információkat, így ellenőrizni lehet a lánc minden blokkjának tartalmát.
Ethereum blokklánc
Az Ethereum blokklánc egy platform, amely lehetővé teszi, hogy elosztott DApp-alkalmazásokat hozzunk létre. Más platformokkal ellentétben az Ethereum lehetővé teszi az úgynevezett okos szerződések (smart contracts) használatát, amelyeket a Solidity programozási nyelven írnak.
Ezt a platformot 2013-ban Vitalik Buterin, a Bitcoin Magazine alapítója alkotta meg, és 2015-ben indították el. Minden, amit a tanfolyamunk során tanulmányozni vagy végrehajtani fogunk, kifejezetten az Ethereum blokklánccal és a Solidity okos szerződésekkel kapcsolatos.
Bányászat vagy hogyan készülnek a blokkok
A bányászat (mining) egy meglehetősen bonyolult és erőforrás-igényes folyamat, amely új blokkok hozzáadását jelenti a blokklánc láncához, nem pedig "kriptovaluták bányászatát". A bányászat biztosítja a blokklánc működését, mivel ez a folyamat felelős a tranzakciók hozzáadásáért az Ethereum blokklánchoz.
A blokkok hozzáadásával foglalkozó embereket és szervezeteket bányászoknak (miner) nevezik.
Azok a szoftverek (SW), amelyek a bányászok csomópontjain működnek, megpróbálják megtalálni az utolsó blokk hash-elés paraméterét, amelyet Nonce néven hívnak, hogy meghatározott hash-funkciós értéket kapjanak, amelyet a hálózat ad meg. Az Ethereum által alkalmazott Ethash hash-elési algoritmus lehetővé teszi a Nonce értékének előállítását csakis fokozatos próbálkozásokkal.
Ha a bányász csomópont megtalálta a helyes Nonce értéket, akkor ez a munka bizonyítékának (PoW, Proof-of-work) nevezhető. Ebben az esetben, ha a blokk hozzáadódik az Ethereum hálózathoz, a bányász bizonyos jutalmat kap a hálózat valutájában — Etherben. Könyvünk írásának időpontjában a jutalom 5 Ether, azonban idővel ez csökkenni fog.
Így az Ethereum bányászai biztosítják a hálózat működését, új blokkok hozzáadásával, és ezért kriptovaluta pénzt kapnak. Az interneten rengeteg információt találhat a bányászokról és a bányászatról, mi pedig a Solidity szerződések és a decentralizált alkalmazások (DApp) Ethereum hálózaton való létrehozására összpontosítunk.
A lecke összefoglalása
Az első leckében megismerkedett a blokklánccal, és megtudta, hogy az speciális módon összeállított blokkok sorozataként működik. A korábban rögzített blokkok tartalmát nem lehet megváltoztatni, mivel ehhez újra kellene számolni az összes következő blokkot a hálózat sok csomópontján, ami rengeteg erőforrást és időt igényel.
A blokklánc alkalmazható a tranzakciók végrehajtásának nyilvántartására. Fő célja a tranzakciók biztonságos lebonyolítása olyan felek (személyek és szervezetek) között, akik között nincs bizalom. Megtudta, hogy a blokklánc Ethereum és a Solidity okos szerződések konkrétan mely üzleti területeken és szektorokban alkalmazhatók. Ezek közé tartozik a banki szektor, a tulajdonjogok, dokumentumok stb. nyilvántartása.
Azt is megtudta, hogy a blokklánc használata során különféle problémák merülhetnek fel. Ezek közé tartozik az információk ellenőrzésének problémája, a blokklánc működési sebessége, a tranzakciók költsége, az okos szerződések és a valós világ közötti adatok cseréjének problémája, valamint a potenciálisan lehetséges támadások, amelyek a felhasználók kriptovalutás eszközeinek ellopására irányulnak.
Röviden említettük a bányászatot is, mint új blokkok hozzáadásának folyamatát a blokkláncban. A bányászat szükséges a tranzakciók végrehajtásához. Azok, akik bányászattal foglalkoznak, biztosítják a blokklánc működését, és ezért kriptovaluta jutalmat kapnak.
2. Lecke. Munkakörnyezet előkészítése Ubuntu és Debian operációs rendszerekenOperációs rendszer választása
Szükséges eszközök telepítése
Geth és Swarm telepítése Ubuntu-ra
Geth és Swarm telepítése Debian-ra
Előzetes előkészítés
A Go disztribúció betöltése
Állítsa be az alábbi környezeti változókat a szkript indítása előtt:
A Go verzió ellenőrzése
A Geth és Swarm telepítése
Privát blokklánc létrehozása
Готовим файл genesis.json
Munkakönyvtár létrehozása
Fiók létrehozása
A csomópont inicializálása
A csomópont indítási paraméterei
Csatlakozás a saját csomópontunkhoz
Bányászat kezelése és egyenleg ellenőrzése
A Geth konzol leállítása
A lecke összefoglalása
3. lecke. A munkakörnyezet előkészítése Raspberry Pi 3-hozA Raspberry Pi 3 előkészítése a munkához
Rasberian telepítése
Frissítések telepítése
SSH hozzáférés engedélyezése
Statikus IP cím beállítása
Szükséges eszközök telepítése
A Go telepítése
A Go disztribúció betöltése
Állítsa be az alábbi környezeti változókat a szkript indítása előtt:
A Go verzió ellenőrzése
A Geth és Swarm telepítése
Privát blokklánc létrehozása
Fiók és egyenleg ellenőrzése
A lecke összefoglalása
4. lecke. Fiókok és eszközök közötti átutalásFiókok megtekintése és hozzáadása
A fiókok listájának megtekintése
Fiók hozzáadása
A geth account parancs paraméterei
Fiók jelszavak
Kriptovaluta az Ethereumon
Ethereum valutái
A fiókok aktuális egyenlegének meghatározása
Eszközök átutalása egyik fiókról a másikra
Az eth.sendTransaction metódus
A tranzakció állapotának megtekintése
A tranzakció bizonylata
A lecke összefoglalása
5. lecke. Az első okos szerződés közzétételeOkos szerződések az Ethereumon
Okos szerződés végrehajtása
Ethereum virtuális gép
Integrált fejlesztői környezet Remix Solidity IDE
A fordítás elindítása
Szerződés funkcióinak hívása
A szerződés közzététele privát hálózaton
Az ABI és a szerződés bináris kódjának meghatározása
Szerződés közzététele
A szerződés közzétételi tranzakció állapotának ellenőrzése
Szerződés funkcióinak hívása
Csomagoló fordító solc
A solc telepítése Ubuntu-ra
A solc telepítése Debian-ra
A HelloSol szerződés fordítása
Szerződés közzététele
A solc telepítése Rasberian-ra
A lecke összefoglalása
Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Telepítés Ubuntu-ra
Telepítés Debian-ra
A Ganache-cli telepítése és indítása
A Web3 telepítése
A solc telepítése
Node.js telepítése Rasberian-ra
Fióklistát lekérdező script a konzolban
Okos szerződés közzétételi script
Futtatás és paraméterek lekérdezése
Indítási paraméterek lekérdezése
A szerződés fordítása
Fiók feloldása
Az ABI és a szerződés bináris kódjának betöltése
A szükséges gáz mennyiségének becslése
Objektum létrehozása és a szerződés közzétételének indítása
A szerződés közzétételi script futtatása
Okos szerződés funkcióinak hívása
Lehetséges-e egy közzétett okos szerződés frissítése
A Web3 1.0.x verziójával való munka
A fiókok listájának lekérdezése
Szerződés közzététele
Szerződés funkcióinak hívása
Eszközök átutalása egyik fiókról a másikra
Eszközök átutalása a szerződés fiókjába
A HelloSol okos szerződés frissítése
Script készítése a fiók egyenlegének ellenőrzésére
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
A szerződés egyenlegének feltöltése
A lecke összefoglalása
7. lecke. Bevezetés a Truffle-beTruffle telepítése
HelloSol projekt létrehozása
A projekt könyvtárának és fájljainak létrehozása
contracts könyvtár
migrations könyvtár
test könyvtár
Файл truffle-config.js
A HelloSol szerződés fordítása
A szerződés publikálásának elindítása
A HelloSol szerződés funkcióinak meghívása a Truffle meghívásakor
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
truffle-contract modul telepítése
A getValue és getString funkciók meghívása
A setValue és setString funkciók meghívása
A szerződés módosítása és újrapublikálás
A Web3 1.0.x verziójával való munka
Módosításokat hajtunk végre a HelloSol okosszerződésen
Scriptek a szerződés metódusainak meghívására
Tesztelés Truffle-ban
Teszt Solidity-ban
Teszt JavaScriptben
A lecke összefoglalása
8. lecke. Solidity adatszerkezetekSzerződés az adatszerkezetek tanulmányozásához
Logikai adatszerkezetek
Előjel nélküli és előjeles egész számok
Rögzített pontú számok
Cím
Összetett típusú változók
Fix méretű tömbök
Dinamikus tömbök
Felsorolás
Struktúrák
mapping szótárak
A lecke összefoglalása
9. lecke. Szerződések migrációja magán hálózatra és Rinkeby hálózatraA Truffle-ból a Geth magán hálózatra való szerződés publikálása
A magán hálózat csomópontjának előkészítése
A szerződés előkészítése a működéshez
A szerződés fordítása és migrálása a Truffle hálózatra
Migráció indítása a lokális geth hálózaton
Truffle artefaktumok beszerzése
A Truffle-ból való szerződés publikálása a Rinkeby teszthálózaton
A Geth csomópont előkészítése a Rinkeby-hoz
Csomópont szinkronizálása
Fiókok hozzáadása
Rinkeby fiók feltöltése éterrel
A szerződés migrációjának indítása a Rinkeby hálózaton
A szerződés információinak megtekintése a Rinkeby hálózaton
Truffle konzol a Rinkeby hálózaton
Egyszerűbb mód a szerződés funkcióinak meghívására
Вызов методов контракта при помощи Node.js
Pénz átutalása fiókok között a Truffle konzolon Rinkby számára
A lecke összefoglalása
10. lecke. Decentralizált adathordozó Ethereum SwarmHogyan működik az Ethereum Swarm
Swarm telepítése és indítása
Fájlokkal és könyvtárakkal végzett műveletek
Fájl feltöltése az Ethereum Swarm-ba
Fájl olvasása az Ethereum Swarm-ból
A feltöltött fájl manifesztjének megtekintése
Könyvtárak feltöltése almappákkal
Fájl olvasása a feltöltött könyvtárból
Nyilvános Swarm átjáró használata
Обращение к Swarm из скриптов Node.js
Perl Net::Ethereum::Swarm modul
Net::Ethereum::Swarm modul telepítése
Adatok írása és olvasása
A lecke összefoglalása
11. lecke. Web3.py keretrendszer az Ethereum munkához PythonbanWeb3.py telepítése
Szükséges csomagok frissítése és telepítése
easysolc modul telepítése
A Web3.py segítségével történő szerződés publikálása
A szerződés fordítása
Csatlakozás a szolgáltatóhoz
A szerződés publikálásának végrehajtása
A szerződés címének és abi-nak mentése fájlba
A szerződés közzétételi script futtatása
A szerződés metódusainak meghívása
A szerződés címének és abi-jának olvasása JSON fájlból
Csatlakozás a szolgáltatóhoz
Szerződés objektum létrehozása
A szerződés metódusainak meghívása
Truffle és Web3.py
A lecke összefoglalása
12. lecke. OracleokHogyan bízhat a smart contract a külső világ adataiban
Oracleok mint információs közvetítők a blokkláncon
Adatforrás
Kód az adatforrásból származó adatok megjelenítésére
Oracle a valutaárfolyam blokkláncra történő rögzítésére
USDRateOracle szerződés
Valutaárfolyam frissítése a smart contractban
Web Socket szolgáltató használata
RateUpdate eseményre várakozás
RateUpdate esemény feldolgozása
Adatok frissítésének kezdeményezése a smart contractban
A lecke összefoglalása
Forrás: habr.com
