
Více než rok jsem pracoval na knize „Vytváření smart kontraktů v Solidity pro blockchain Ethereum. Praktický průvodce“, a nyní je tato práce dokončena a kniha .
Doufám, že moje kniha pomůže rychle začít s vytvářením smart kontraktů v Solidity a distribuovaných aplikací DApp pro blockchain Ethereum. Skládá se ze 12 lekcí s praktickými úkoly. Po jejich splnění bude čtenář schopen vytvářet své vlastní lokální uzly Ethereum, publikovat smart kontrakty a volat jejich metody, vyměňovat data mezi reálným světem a smart kontrakty pomocí orákul, pracovat s testovací ladící sítí Rinkeby.
Kniha je určena všem, kdo se zajímají o pokročilé technologie v oblasti blockchainu a chtějí rychle získat znalosti, které jim umožní zajímat se o zajímavou a perspektivní práci.
Níže naleznete obsah a první kapitolu knihy (také na jsou dostupné úryvky knihy). Doufám, že získám zpětnou vazbu, poznámky a návrhy. Vše bych se snažil zohlednit při přípravě další edice knihy.
ObsahÚvodNaše kniha je určena těm, kteří chtějí nejen pochopit principy fungování blockchainu Ethereum, ale také získat praktické dovednosti v tvorbě distribuovaných aplikací DApp v programovacím jazyce Solidity pro tuto síť.
Tuto knihu je nejlepší nejen číst, ale také pracovat s ní, plněním praktických úkolů popsaných v lekcích. K práci budete potřebovat lokální počítač, virtuální nebo cloudový server se systémem Debian nebo Ubuntu. Také pro provedení mnoha úkolů lze použít Raspberry Pi.
V první lekci si probereme principy fungování blockchainu Ethereum a základní terminologii, stejně jako si povíme, kde lze tento blockchain využít.
Cíl druhé lekce — vytvořit uzel privátního blockchainu Ethereum pro další práci v rámci tohoto kurzu na serveru Ubuntu a Debian. Probereme zvláštnosti instalace základních utilit, jako je geth, který zajišťuje fungování uzlu našeho blockchainu, a také démona decentralizovaného úložiště dat swarm.
Třetí lekce Naučí vás provádět experimenty s Ethereum na levném mikropočítači Raspberry Pi. Nainstalujete operační systém (OS) Rasberian na Raspberry Pi, utilitu Geth, která zajišťuje chod uzlu blockchainu, a také démon decentralizovaného úložiště dat Swarm.
Čtvrtá lekce se věnuje účtům a měnovým jednotkám v síti Ethereum, stejně jako způsobům převodu prostředků z jednoho účtu na druhý z konzole Geth. Naučíte se vytvářet účty, iniciovat transakce převodu prostředků, získávat stav transakce a její potvrzení.
V páté lekci se seznámíte se smart kontrakty v síti Ethereum a dozvíte se o jejich vykonávání virtuální stroj Ethereum.
Vytvoříte a zveřejníte ve své privátní síti Ethereum svůj první smart kontrakt a naučíte se vyvolávat jeho funkce. K tomu budete používat vývojové prostředí Remix Solidity IDE. Kromě toho se naučíte instalovat a používat balíčkový překladač solc.
Také vás seznámíme s takzvaným binárním rozhraním aplikace Application Binary Interface (ABI) a naučíme ho používat.
Šestá lekce se věnuje vytváření skriptů JavaScript, které běží pod Node.js a vykonávají operace se smart kontrakty Solidity.
Nainstalujete Node.js v OS Ubuntu, Debian a Rasberian, napíšete skripty pro publikaci smart kontraktu v lokální síti Ethereum a vyvolávání jeho funkcí.
Kromě toho se naučíte pomocí skriptů převádět prostředky mezi běžnými účty a také je připisovat na účty smart kontraktů.
V sedmé lekci se naučíte instalovat a používat oblíbené prostředí Truffle mezi vývojáři smart kontraktů Solidity. Naučíte se vytvářet skripty JavaScript, které vyvolávají funkce kontraktů pomocí modulu truffle-contract, a provedete testování svého smart kontraktu pomocí Truffle.
Osma lekce se věnuje typům dat Solidity. Napíšete smart kontrakty, které pracují s takovými typy dat, jako jsou podepsaná a nepodepsaná celá čísla, čísla se znaménkem, řetězce, adresy, proměnné složených typů, pole, výčty, struktury a slovníky.
V deváté lekci Přiblížíte se o krok k vytvoření smart kontraktů pro hlavní síť Ethereum. Naučíte se publikovat kontrakty pomocí Truffle v privátní síti Geth a také v testovací síti Rinkeby. Ladění smart kontraktu v síti Rinkeby je velmi užitečné před jeho publikací v hlavní síti — tam je vše prakticky skutečné, ale zdarma.
V rámci lekce vytvoříte uzel testovací sítě Rinkeby, doplníte ho o prostředky a publikujete smart kontrakt.
Lekce 10 je věnována distribuovaným úložištím dat Ethereum Swarm. Použitím distribuovaných úložišť ušetříte na ukládání objemných dat v blockchainu Ethereum.
V rámci této lekce vytvoříte místní úložiště Swarm, provedete operace zápisu a čtení souborů, stejně jako adresářů se soubory. Dále se naučíte pracovat s veřejnou bránou Swarm, napíšete skripty pro přístup k Swarm z Node.js a také pomocí modulu Perl Net::Ethereum::Swarm.
Cílem lekce 11 je osvojit si práci se smart kontrakty Solidity s použitím populárního programovacího jazyka Python a rámce Web3.py. Nainstalujete tento rámec, napíšete skripty pro kompilaci a publikaci smart kontraktu, stejně jako pro volání jeho funkcí. Přitom bude Web3.py použit jak samostatně, tak ve spolupráci s integrovaným vývojovým prostředím Truffle.
Na 12. lekci se naučíte přenášet data mezi smart kontrakty a reálným světem pomocí orákulí. To vám bude užitečné pro získávání dat z webových stránek, zařízení internetu věcí IoT, různých přístrojů a senzorů a pro odesílání dat ze smart kontraktů na tato zařízení. V praktické části lekce vytvoříte orákulum a smart kontrakt, který získává aktuální směnný kurz USD na rubly z webu ČNB.
Lekce 1. Stručně o blockchainu a síti EthereumCíl lekce: seznámit se s principy fungování blockchainu Ethereum, oblastmi jeho využití a základní terminologií.
Praktické úkoly: v této lekci nejsou plánovány.
Těžko říct, zda dnes existuje vývojář softwaru (SW), který by neslyšel o technologii blockchain, kryptoměnách, bitcoinech, počátečních nabídkách mincí (ICO, Initial coin offering), smart kontraktech a dalších pojmech a termínech souvisejících s blockchainem.
Technologie blockchain otevírá nové trhy a vytváří pracovní místa pro programátory. Pokud ovládnete veškeré nuance kryptoměnových technologií a technologií chytrých kontraktů, nebudete mít žádné problémy s aplikací těchto znalostí v praxi.
Je třeba říci, že kolem kryptoměn a blockchainů vzniká mnoho spekulací. Stranou necháme úvahy o změnách kurzů kryptoměn, o vytváření pyramid, o nuancích kryptoměnové legislativy atd. V našem vzdělávacím kurzu se zaměříme především na technické aspekty aplikace chytrých kontraktů blockchainu Ethereum (ethereum, ether) a vývoj takzvaných decentralizovaných aplikací (Distributed Application, DApp).
Co je blockchain
Blockchain (Blockchain, Block Chain) představuje řetězec datových bloků, které jsou navzájem spojeny určitým způsobem. Na začátku řetězce se nachází první blok, který se nazývá primární blok (genesis block) nebo blok genese. Následuje druhý, poté třetí a tak dále.
Všechny tyto datové bloky se automaticky duplikují na mnoha uzlech sítě blockchainu. Tím se zajišťuje decentralizované ukládání dat blockchainu.
Můžete si představit systém blockchainu jako velké množství uzlů (fyzických nebo virtuálních serverů), které jsou spojeny do sítě a replikuje veškeré změny v řetězci datových bloků. Je to jako obrovský multi-serverový počítač, přičemž uzly tohoto počítače (servery) mohou být roztroušeny po celém světě. A vy také můžete přidat svůj počítač do sítě blockchainu.
Distribuovaná databáze
Blockchain si můžete představit jako distribuovanou databázi, která se replikují na všechny uzly sítě blockchainu. Teoreticky bude blockchain funkční, dokud pracuje alespoň jeden uzel, který uchovává všechny bloky blockchainu.
Distribuovaný registr dat
Blockchain si můžete představit jako tento distribuovaný registr dat a operací (transakcí). Další název takového registru je hlavní kniha.
Do distribuovaného registru lze přidávat data, ale není možné je měnit nebo mazat. Tato nemožnost je dosažena zejména použitím kryptografických algoritmů, speciálních algoritmů pro přidávání bloků do řetězce a decentralizovaným ukládáním dat.
Při přidávání bloků a provádění operací (transakcí) se používají soukromé a veřejné klíče. Omezují uživatele blockchainu, poskytujícím přístup pouze k jejich blokům dat.
Transakce
Blockchain uchovává informace o operacích (transakcích) v blocích. Přitom staré, již provedené transakce není možné vrátit nebo změnit. Nové transakce jsou ukládány v nově přidaných blocích.
Takto může být v blockchainu zaznamenána v nezměněné podobě celá historie transakcí. Proto lze blockchain použít například pro bezpečné uchování bankovních operací, informací o autorských právech, historii změn vlastníků nemovitostí a podobně.
Blockchain Ethereum obsahuje tzv. stavy systému. Během provádění transakcí se stav mění od počátečního po aktuální. Transakce jsou zapisovány do bloků.
Veřejné a soukromé blockchainy
Je třeba poznamenat, že to, co bylo řečeno, platí pouze pro tzv. veřejné sítě blockchain, které nemohou být kontrolovány žádnými jednotlivými fyzickými nebo právními osobami, vládními orgány nebo státy.
Takzvané soukromé sítě blockchain jsou pod plnou kontrolou jejich tvůrců, a tam je možné vše, například úplná výměna všech bloků řetězce.
Praktické aplikace blockchainu
K čemu může být blockchain užitečný?
Stručně řečeno, blockchain umožňuje bezpečně provádět operace (obchody) mezi osobami nebo společnostmi, které si vzájemně nedůvěřují. Zapsaná data v blockchainu (transakce, osobní údaje, dokumenty, osvědčení, smlouvy, dodací listy atd.) nelze po zápisu falšovat ani měnit. Proto je možné na základě blockchainu vytvářet například důvěryhodné distribuované registry různých druhů dokumentů.
Samozřejmě víte, že na bázi blockchainů jsou vytvářeny kryptoměnové systémy, které mají nahradit běžné papírové peníze. Papírové peníze se také nazývají fiatní (z anglického Fiat Money).
Blockchain zajišťuje ukládání a neměnnost transakcí, které jsou zaznamenány v blocích, a proto může být využit k vytvoření kryptoměnových systémů. Obsahuje celou historii převodu kryptoměn mezi různými uživateli (účty), přičemž jakákoli operace může být sledována.
I když mohou být operace uvnitř kryptoměnových systémů anonymní, výběr kryptoměny a její výměna za fiatní peníze obvykle vedou k odhalení identity majitele kryptoměnového aktiva.
Takzvané chytré kontrakty, které představují software pracující v síti Ethereum, umožňují automatizovat proces uzavírání obchodů a kontrolovat jejich plnění. Je to zvlášť efektivní, pokud platba za obchod probíhá kryptoměnou Ether.
Blockchain Ethereum a chytré kontrakty Ethereum, napsané v programovacím jazyce Solidity, mohou být například používány v těchto oblastech:
- alternativa k notářskému ověření dokumentů;
- ukládání registru nemovitostí a informací o operacích s nemovitostmi;
- ukládání informací o autorských právech na objekty duševního vlastnictví (knihy, obrázky, hudební díla atd.);
- vytváření systémů nezávislého hlasování;
- finanční sféra a bankovnictví;
- logistika v mezinárodním měřítku, sledování pohybu zboží;
- ukládání osobních údajů jako analogový systém totožnosti;
- bezpečné transakce v obchodní sféře;
- ukládání výsledků lékařských vyšetření a také historie předepsaných procedur.
Problémy s blockchainem
Ale samozřejmě, ne všechno je tak jednoduché, jak by se mohlo zdát!
Existují problémy s ověřováním dat před jejich přidáním do blockchainu (například, zda nejsou podvržená?), problémy v bezpečnosti systémového a aplikovaného softwaru používaného ke práci s blockchainem, problémy s možností použití metod sociálního inženýrství k útokům na přístupové údaje k peněženkám s kryptoměnou atd.
Opět, pokud se nejedná o veřejný blockchain, jehož uzly jsou rozptýleny po celém světě, ale o soukromý blockchain patřící osobě nebo organizaci, úroveň důvěry zde nebude vyšší než úroveň důvěry k této osobě nebo této organizaci.
Je také třeba mít na paměti, že data zapsaná do blockchainu se stávají dostupnými pro všechny. V tomto smyslu blockchain (zejména veřejný) není vhodný pro uchovávání důvěrných informací. Nicméně skutečnost, že informace v blockchainu nelze změnit, může pomoci předcházet nebo vyšetřovat různé podvodné činnosti.
Decentralizované aplikace Ethereum budou pohodlné, pokud se za jejich používání platí kryptoměnou. Čím více lidí vlastní kryptoměnu nebo je ochotno ji zakoupit, tím větší popularitu získají aplikace DApp a chytré kontrakty.
Mezi obecnými problémy blockchainu, které ztěžují jeho praktické použití, lze zmínit omezenou rychlost přidávání nových bloků a relativně vysoké náklady na transakce. Ale technologie v této oblasti aktivně postupují a existují naděje, že technické problémy budou časem vyřešeny.
Dalším problémem je, že chytré kontrakty blockchainu Ethereum fungují v izolovaném prostředí virtuálních strojů a nemají přístup k datům reálného světa. Zejména program chytrého kontraktu nemůže sám načíst data z webových stránek nebo jakýchkoli fyzických zařízení (senzory, kontakty atd.), a také nemůže posílat data na jakákoliv externí zařízení. Tento problém a způsoby jeho řešení budeme probírat na hodině věnované takzvaným Orákulum — informačním zprostředkovatelům chytrých kontraktů.
Existují také omezení v oblasti legislativy. V některých zemích, např. je zakázáno používat kryptoměnu jako platební prostředek, ale je možné ji vlastnit jako digitální aktivum, podobně jako cenné papíry. Taková aktiva lze nakupovat a prodávat na burze. V každém případě, při vytváření projektu, který pracuje s kryptoměnami, je nutné se seznámit s legislativou země, pod jejíž jurisdikci váš projekt spadá.
Jak se formuje řetězec blockchainu
Jak už bylo řečeno, blockchain je jednoduchý řetěz bloků dat. Nejdříve je vytvořen první blok tohoto řetězce, poté k němu je přidán druhý a tak dále. Předpokládá se, že data transakcí jsou uložena v blocích a přidávají se do posledního bloku.
Na obr. 1.1 jsme ukázali nejjednodušší variantu sekvence bloků, kde první blok odkazuje na následující.

Obr. 1.1. Jednoduchá sekvence bloků
V této variantě je však velmi snadné falšovat obsah jakéhokoli bloku řetězce, protože bloky neobsahují žádné informace na ochranu proti změnám. Vzhledem k tomu, že je blockchain určen pro použití mezi lidmi a společnostmi, mezi kterými není důvěra, lze usoudit, že tento způsob uchovávání dat pro blockchain není vhodný.
Pojďme se věnovat ochraně bloků před falšováním. V první fázi se pokusíme chránit každý blok kontrolním součtem (obr. 1.2).

Obr. 1.2. Přidání ochrany dat bloků kontrolním součtem
Nyní útočník nemůže jen tak změnit blok, protože v něm je kontrolní součet dat bloku. Kontrola kontrolního součtu ukáže, že byla data změněna.
Pro výpočet kontrolního součtu lze použít jednu z hashovacích funkcí, jako je MD-5, SHA-1, SHA-256 atd. Hashovací funkce vypočítávají určitou hodnotu (například ve formě textového řetězce stálé délky) v důsledku nevratných operací nad blokem dat. Operace závisí na typu hashovací funkce.
I při malých změnách obsahu bloku dat se hodnota hashovací funkce také změní. Analyzováním hodnoty hashovací funkce nelze obnovit blok dat, pro který byla vypočtena.
Bude taková ochrana dostatečná? Bohužel, ne.
V tomto schématu chrání kontrolní součet (hashovací funkce) pouze jednotlivé bloky, ale ne celý řetězec bloků. Znaje algoritmus výpočtu hashovací funkce, útočník může snadno zaměnit obsah bloku. Také nic mu nezabrání v tom, aby odstranil bloky z řetězce nebo přidal nové.
Abychom chránili celý řetězec jako celek, můžeme ukládat v každém bloku kromě dat také hash dat předchozího bloku (obr. 1.3).

Obr. 1.3. Přidání hash předchozího bloku do datového bloku
V této schémě, abychom změnili nějaký blok, je potřeba přepočítat hash funkce všech následujících bloků. Zdálo by se, že jaký je problém?
V reálných blockchainech jsou navíc vytvořeny umělé obtíže pro přidávání nových bloků – používají se algoritmy, které vyžadují velké množství výpočetních zdrojů. S ohledem na to, že pro provedení změn v bloku je třeba přepočítat nejen tento blok, ale také všechny následující, bude to velmi obtížné.
Také si připomeňme, že data blockchainu jsou uchovávána (duplikována) na nesčetném množství uzlů v síti, tzn. používá se decentralizované ukládání. To mnohem více zkomplikuje padělání bloku, protože změny musí být provedeny na všech uzlech v síti.
Protože bloky uchovávají informace o předchozím bloku, lze zkontrolovat obsah všech bloků v řetězci.
Blockchain Ethereum
Blockchain Ethereum představuje platformu, na které lze vytvářet distribuované aplikace DApp. Na rozdíl od jiných platforem, Ethereum umožňuje používat takzvané chytré smlouvy (smart contracts), napsané v programovacím jazyce Solidity.
Tato platforma byla vytvořena v roce 2013 Vitalikem Buterinem, zakladatelem časopisu Bitcoin Magazine, a spuštěna v roce 2015. Vše, co budeme studovat nebo dělat v našem vzdělávacím kurzu, se týká právě blockchainu Ethereum a chytrých smluv Solidity.
Těžba nebo jak se vytvářejí bloky
Těžba (mining) představuje poměrně složitý a náročný proces přidávání nových bloků do blockchainové sítě, a rozhodně to není „těžba kryptoměn“. Těžba zajišťuje funkčnost blockchainu, protože právě tento proces odpovídá za přidávání transakcí do blockchainu Ethereum.
Lidé a organizace, kteří se zabývají přidáváním bloků, se nazývají těžaři (miners).
Software (SW), který funguje na uzlech těžařů, se snaží nalézt pro poslední blok parametr hashování nazvaný Nonce, aby získal určitou hodnotu hash funkce zadanou sítí. Hashovací algoritmus Ethash používaný v Ethereu umožňuje získat hodnotu Nonce pouze sekvenčním zkoušením.
Pokud miner node najde správnou hodnotu Nonce, je to takzvaný důkaz práce (PoW, Proof-of-work). V tomto případě, pokud bude blok přidán do sítě Ethereum, miner získává určitou odměnu v měně sítě — Ether. V době přípravy naší knihy činí odměna 5 Ether, avšak v průběhu času bude snížena.
Tímto způsobem minery Ethereum zajišťují provoz sítě přidáváním bloků a za to obdrží kryptoměnovou odměnu. Na internetu najdete spoustu informací o minech a těžbě, my se však zaměříme na vytváření smluv Solidity a decentralizovaných aplikací DApp v síti Ethereum.
Shrnutí lekce
V první lekci jste se seznámili s blockchainem a zjistili, že se jedná o zvláštním způsobem sestavenou posloupnost bloků. Obsah dříve zapsaných bloků nelze změnit, protože by bylo potřeba přepočítat všechny následující bloky na mnoha uzlech sítě, což si vyžaduje obrovské množství zdrojů a času.
Blockchain může být použit k uchovaní výsledků transakcí. Jeho hlavním účelem je zabezpečit provádění transakcí mezi stranami (osobami a organizacemi), mezi nimiž není důvěra. Zjistili jste, v jakých konkrétních oblastech podnikání a v jakých odvětvích lze využít blockchain Ethereum a smart contracts Solidity. Jsou to například bankovní sektor, registrace vlastnických práv, dokumentů atd.
Také jste se dozvěděli, že při použití blockchainu mohou vznikat různé problémy. Jsou to problémy s ověřováním informací přidávaných do blockchainu, rychlostí práce blockchainu, náklady na transakce, problém výměny dat mezi smart contracts a skutečným světem, stejně jako potenciální možné útoky útočníků zaměřených na krádež kryptoměnových prostředků z uživatelských účtů.
Také jsme stručně probrali těžbu jako proces přidávání nových bloků do blockchainu. Těžba je nezbytná pro provádění transakcí. Ti, kdo se těžbou zabývají, zajišťují funkčnost blockchainu a za to dostávají odměnu v kryptoměně.
Lekce 2. Příprava pracovního prostředí v OS Ubuntu a DebianVýběr operačního systému
Instalace nezbytných utilit
Instalace Geth a Swarm v Ubuntu
Instalace Geth a Swarm v Debianu
Server DBMS Firebird 3.0 dynamicky alokuje a uvolňuje systémovou paměť, což může vést k její fragmentaci. Například po jednorázovém odpojení velkého počtu uživatelů od superserveru mohou vznikat chyby při nových připojeních.
Stahování distribuce Go
Nastavení proměnných prostředí
Kontrola verze Go
Instalace Geth a Swarm
Vytváříme soukromý blockchain
Готовим файл genesis.json
Vytváříme pracovní adresář
Vytváříme účet
Spouštíme inicializaci uzlu
Parametry spuštění uzlu
Připojujeme se k našemu uzlu
Správa těžby a kontrola zůstatku
Ukončení konzole Geth
Shrnutí lekce
Lekce 3. Příprava pracovního prostředí na Raspberry Pi 3Příprava Raspberry Pi 3 k práci
Instalace Rasberian
Instalace aktualizací
Povolení přístupu SSH
Nastavení statické IP adresy
Instalace nezbytných utilit
Instalace Go
Stahování distribuce Go
Nastavení proměnných prostředí
Kontrola verze Go
Instalace Geth a Swarm
Vytváříme soukromý blockchain
Kontrola účtu a zůstatku
Shrnutí lekce
Lekce 4. Účty a převod prostředků mezi účtyZobrazit a přidat účty
Zobrazit seznam účtů
Přidání účtu
Parametry příkazu geth account
Hesla účtů
Kryptoměna v Ethereum
Měnové jednotky Ethereum
Stanovení aktuálního zůstatku našich účtů
Převod prostředků z jednoho účtu na jiný
Metoda eth.sendTransaction
Zobrazit stav transakce
Příjemce transakce
Shrnutí lekce
Lekce 5. Publikace první smlouvyChytré smlouvy v Ethereum
Provádění chytré smlouvy
Virtuální stroj Ethereum
Integrované vývojové prostředí Remix Solidity IDE
Spuštění kompilace
Vyvolání funkcí smlouvy
Publikace smlouvy v soukromé síti
Získání definice ABI a binárního kódu smlouvy
Publikace smlouvy
Kontrola stavu publikace smlouvy
Vyvolání funkcí smlouvy
Skládací kompilátor solc
Instalace solc na Ubuntu
Instalace solc na Debian
Kompilace smlouvy HelloSol
Publikace smlouvy
Instalace solc na Rasberian
Shrnutí lekce
Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Instalace na Ubuntu
Instalace na Debian
Instalace a spuštění Ganache-cli
Instalace Web3
Instalace solc
Instalace Node.js na Rasberian
Skript pro získání seznamu účtů v konzole
Skript pro publikaci chytré smlouvy
Spuštění a získání parametrů
Získání parametrů spuštění
Kompilace smlouvy
Odemknutí účtu
Stahování ABI a binárního kódu smlouvy
Ocenění potřebného množství plynu
Vytvoření objektu a spuštění publikace smlouvy
Spuštění skriptu publikace smlouvy
Vyvolání funkcí chytré smlouvy
Je možné aktualizovat publikovanou chytrou smlouvu
Práce s Web3 verze 1.0.x
Získání seznamu účtů
Publikace smlouvy
Vyvolání funkcí smlouvy
Převod prostředků z jednoho účtu na jiný
Převod prostředků na účet smlouvy
Aktualizace chytré smlouvy HelloSol
Vytvoření skriptu pro zobrazení zůstatku účtu
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Doplňujeme účet chytré smlouvy
Shrnutí lekce
Lekce 7. Úvod do TruffleInstalace Truffle
Vytváříme projekt HelloSol
Vytvoření adresáře a souborů projektu
Adresář contracts
Katalog migrations
Katalog test
Файл truffle-config.js
Kompilace smlouvy HelloSol
Spuštění publikace smlouvy
Volání funkcí smlouvy HelloSol v pozvánce Truffle
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Instalace modulu truffle-contract
Volání funkcí smlouvy getValue a getString
Volání funkcí smlouvy setValue a setString
Úprava smlouvy a opětovné zveřejnění
Práce s Web3 verze 1.0.x
Provádíme změny ve smart kontraktu HelloSol
Skripty pro volání metod smlouvy
Testování v Truffle
Test na Solidity
Test na JavaScript
Shrnutí lekce
Lekce 8. Datové typy SoliditySmlouva pro studium datových typů
Logické datové typy
Bezpodpisová celá čísla a celá čísla se znaménkem
Čísla s pevnou desetinnou čárkou
Adresa
Proměnné složených typů
Pole pevné velikosti
Dynamická pole
Seznam
Struktury
Slovníky mapping
Shrnutí lekce
Lekce 9. Migrace smluv do soukromé sítě a do sítě RinkebyPublikace smlouvy z Truffle do soukromé sítě Geth
Příprava uzlu soukromé sítě
Příprava smlouvy k provozu
Kompilace a migrace smlouvy do sítě Truffle
Spuštění migrace do místní sítě geth
Získání artefaktů Truffle
Publikace smlouvy z Truffle v testovací síti Rinkeby
Příprava uzlu Geth k práci s Rinkeby
Synchronizace uzlu
Přidání účtů
Doplnění účtu Rinkeby etherem
Spuštění migrace smlouvy do sítě Rinkeby
Zobrazení informací o smlouvě v síti Rinkeby
Konzole Truffle pro síť Rinkeby
Jednodušší způsob volání funkcí smlouvy
Вызов методов контракта при помощи Node.js
Převod prostředků mezi účty v konzole Truffle pro Rinkeby
Shrnutí lekce
Lekce 10. Decentralizované úložiště dat Ethereum SwarmJak funguje Ethereum Swarm
Instalace a spuštění Swarm
Operace se soubory a adresáři
Nahrání souboru do Ethereum Swarm
Čtení souboru z Ethereum Swarm
Zobrazení manifestu nahraného souboru
Nahrání adresářů s podadresáři
Čtení souboru z nahraného adresáře
Použití veřejné brány Swarm
Обращение к Swarm из скриптов Node.js
Modul Perl Net::Ethereum::Swarm
Instalace modulu Net::Ethereum::Swarm
Zápis a čtení dat
Shrnutí lekce
Lekce 11. Framework Web3.py pro práci s Ethereum v PythonuInstalace Web3.py
Aktualizace a instalace potřebných balíčků
Instalace modulu easysolc
Publikace smlouvy pomocí Web3.py
Kompilace smlouvy
Připojení k poskytovateli
Provádění publikace smlouvy
Uložení adresy smlouvy a abi do souboru
Spuštění skriptu publikace smlouvy
Volání metod smlouvy
Čtení adresy a abi smlouvy ze souboru JSON
Připojení k poskytovateli
Vytvoření objektu smlouvy
Volání metod smlouvy
Truffle a Web3.py
Shrnutí lekce
Lekce 12. OrákulaMůže smart kontrakt důvěřovat údajům z vnějšího světa
Orákula jako informační zprostředkovatelé blockchainu
Datový zdroj
Kód pro zobrazení dat ze zdroje
Oracle pro zapisování směnného kurzu do blockchainu
Smlouva USDRateOracle
Aktualizace směnného kurzu ve smart kontraktu
Použití poskytovatele Web Socket
Čekání na událost RateUpdate
Zpracování události RateUpdate
Iniciace aktualizace dat ve smart kontraktu
Shrnutí lekce
Zdroj: habr.com
