Książka „Tworzenie smart kontraktów Solidity dla blockchaina Ethereum. Praktyczny przewodnik”

Książka „Tworzenie smart kontraktów Solidity dla blockchaina Ethereum. Praktyczny przewodnik”
Przez ponad rok pracowałem nad książką „Tworzenie smart kontraktów Solidity dla blockchaina Ethereum. Praktyczny przewodnik”, a teraz ta praca jest zakończona, a książka została wydana i jest dostępna na Litresie.

Mam nadzieję, że moja książka pomoże szybko rozpocząć tworzenie smart kontraktów Solidity oraz aplikacji rozproszonych DApp dla blockchaina Ethereum. Składa się z 12 lekcji z praktycznymi zadaniami. Wykonując je, czytelnik będzie w stanie tworzyć własne lokalne węzły Ethereum, publikować smart kontrakty oraz wywoływać ich metody, wymieniać dane między rzeczywistym światem a smart kontraktami za pomocą orakli oraz pracować z testową siecią Rinkeby.

Książka jest przeznaczona dla wszystkich, którzy interesują się nowoczesnymi technologiami w dziedzinie blockchainów i chcą szybko zdobyć wiedzę, która pozwoli im na zajmowanie się interesującą i perspektywiczną pracą.

Poniżej znajdziesz spis treści i pierwszy rozdział książki (także na Litresie dostępne są fragmenty książki). Mam nadzieję na otrzymanie informacji zwrotnej, uwag i propozycji. Wszystko to postaram się uwzględnić przy przygotowaniu następnej edycji książki.

Spis treściWprowadzenieNasza książka jest przeznaczona dla tych, którzy nie tylko chcą zrozumieć zasady działania blockchaina Ethereum, ale także zdobyć praktyczne umiejętności w tworzeniu rozproszonych aplikacji DApp w języku programowania Solidity dla tej sieci.

Tę książkę najlepiej nie tylko czytać, ale pracować z nią, wykonując praktyczne zadania opisane w lekcjach. Aby pracować, potrzebujesz lokalnego komputera, wirtualnego lub chmurowego serwera z zainstalowanym systemem operacyjnym Debian lub Ubuntu. Można również używać Raspberry Pi do wielu zadań.

W pierwszej lekcji rozważymy zasady działania blockchaina Ethereum oraz podstawową terminologię, a także opowiemy o tym, gdzie można używać tego blockchaina.

Cel drugiej lekcji — stworzenie węzła prywatnego blockchaina Ethereum do dalszej pracy w ramach tego kursu na serwerze Ubuntu i Debian. Omówimy szczegóły instalacji podstawowych narzędzi, takich jak geth, które zapewnia działanie węzła naszego blockchaina, a także demona zdecentralizowanego magazynu danych swarm.

Trzecia lekcja nauczy Cię przeprowadzać eksperymenty z Ethereum na niedrogim mikrokomputerze Raspberry Pi. Zainstalujesz system operacyjny (OS) Rasberian na Raspberry Pi, narzędzie Geth, które obsługuje węzeł blockchain, a także demon zdecentralizowanego przechowywania danych Swarm.

Czwarta lekcja jest poświęcona kontom i jednostkom kryptowalutowym w sieci Ethereum, a także sposobom przesyłania środków z jednego konta na drugie za pomocą konsoli Geth. Nauczysz się tworzyć konta, inicjować transakcje transferu środków, uzyskiwać stan transakcji oraz jej potwierdzenie.

Na piątej lekcji poznasz smart kontrakty w sieci Ethereum i dowiesz się o ich realizacji przez wirtualną maszynę Ethereum.

Stworzysz i opublikujesz swój pierwszy smart kontrakt w prywatnej sieci Ethereum oraz nauczysz się wywoływać jego funkcje. W tym celu użyjesz środowiska programistycznego Remix Solidity IDE. Ponadto nauczysz się instalować i używać kompilatora pakietowego solc.
Opowiemy również o tzw. binarnym interfejsie aplikacji Application Binary Interface (ABI) i nauczymy go używać.

Szósta lekcja jest poświęcona tworzeniu skryptów JavaScript działających na Node.js, które wykonują operacje na smart kontraktach Solidity.

Zainstalujesz Node.js w systemach operacyjnych Ubuntu, Debian i Rasberian, napiszesz skrypty do publikacji smart kontraktu w lokalnej sieci Ethereum oraz wywoływania jego funkcji.

Ponadto nauczysz się przesyłać środki między zwykłymi kontami za pomocą skryptów, a także wpłacać je na konta smart kontraktów.

Na siódmej lekcji nauczysz się instalować i używać popularnego wśród programistów smart kontraktów środowiska Truffle. Nauczysz się tworzyć skrypty JavaScript, które wywołują funkcje kontraktów za pomocą modułu truffle-contract, a także przeprowadzisz testowanie swojego smart kontraktu za pomocą Truffle.

Ósma lekcja jest poświęcona typom danych Solidity. Napiszesz smart kontrakty, które pracują z takimi typami danych jak liczby całkowite ze znakiem i bez znaku, liczby zmiennoprzecinkowe, ciągi, adresy, zmienne złożonych typów, tablice, wyliczenia, struktury i słowniki.

Na dziewiątej lekcji Zbliżysz się o krok do tworzenia smart kontraktów dla głównej sieci Ethereum. Nauczysz się publikować kontrakty za pomocą Truffle w prywatnej sieci Geth oraz w sieci testowej Rinkeby. Debugowanie smart kontraktu w sieci Rinkeby jest bardzo pomocne przed jego publikacją w głównej sieci – tam wszystko działa naprawdę, ale jest darmowe.

W ramach lekcji stworzysz węzeł sieci testowej Rinkeby, zasilisz go funduszami i opublikujesz smart kontrakt.

Lekcja 10 poświęcona jest rozproszonym magazynom danych Ethereum Swarm. Korzystając z rozproszonych magazynów, oszczędzasz na przechowywaniu dużych ilości danych w blockchainie Ethereum.

W ramach tej lekcji stworzysz lokalne magazynowanie Swarm, przeprowadzisz operacje zapisu i odczytu plików oraz katalogów z plikami. Następnie nauczysz się korzystać z publicznej bramy Swarm, napiszesz skrypty do komunikacji z Swarm z Node.js oraz za pomocą modułu Perl Net::Ethereum::Swarm.

Celem lekcji 11 jest opanowanie pracy ze smart kontraktami Solidity z wykorzystaniem popularnego języka programowania Python i frameworka Web3.py. Zainstalujesz ten framework, napiszesz skrypty do kompilacji i publikacji smart kontraktu, a także do wywoływania jego funkcji. Web3.py będzie używany zarówno samodzielnie, jak i w tandemie z zintegrowanym środowiskiem programistycznym Truffle.

W lekcji 12 nauczysz się przekazywać dane między smart kontraktami a rzeczywistym światem za pomocą orakli. Przyda się to do pozyskiwania danych z witryn internetowych, urządzeń Internetu Rzeczy (IoT), różnych instrumentów i czujników, oraz wysyłania danych z smart kontraktów do tych urządzeń. W części praktycznej lekcji stworzysz orakl i smart kontrakt, który otrzyma aktualny kurs wymiany USD na ruble z strony internetowej Narodowego Banku Rosji.

Lekcja 1. Krótkie wprowadzenie do blockchaina i sieci EthereumCel lekcji: zapoznać się z zasadami działania blockchaina Ethereum, jego obszarami zastosowań oraz podstawową terminologią.
Zadania praktyczne: w tej lekcji nie są przewidziane.

Trudno dziś znaleźć programistę, który nie słyszałby o technologii blockchain, kryptowalutach, bitcoinie, pierwotnym oferowaniu monet (ICO), smart kontraktach oraz innych pojęciach i terminach związanych z blockchainem.

Technologia blockchain otwiera nowe rynki i tworzy miejsca pracy dla programistów. Jeśli zgłębisz wszystkie tajniki technologii kryptowalut oraz smart kontraktów, nie powinieneś mieć problemów z ich praktycznym zastosowaniem.

Należy zauważyć, że wokół kryptowalut i blockchainów powstaje wiele spekulacji. Odłożymy na bok rozważania na temat zmian kursów kryptowalut, tworzenia piramid, niuansów regulacji kryptowalutowych itp. W naszym kursie edukacyjnym skupimy się głównie na aspektach technicznych zastosowania smart kontraktów na blockchainie Ethereum oraz rozwijaniu tzw. zdecentralizowanych aplikacji (Distributed Application, DApp).

Co to jest blockchain

Blockchain (Blockchain, Block Chain) to łańcuch bloków danych, które są ze sobą połączone w określony sposób. Na początku łańcucha znajduje się pierwszy blok, zwany blokiem początkowym (genesis block) lub blokiem genzysu. Następnie znajduje się drugi, potem trzeci i tak dalej.

Wszystkie te bloki danych są automatycznie dublowane na licznych węzłach sieci blockchain. Dzięki temu zapewnione jest zdecentralizowane przechowywanie danych blockchaina.
Możesz wyobrazić sobie system blockchain jako dużą liczbę węzłów (fizycznych lub wirtualnych serwerów), połączonych w sieć i replikujących wszystkie zmiany w łańcuchu bloków danych. To jakby gigantyczny komputer wieloserwerowy, przy czym węzły tego komputera (serwery) mogą być rozproszone po całym świecie. Ty również możesz dodać swój komputer do sieci blockchain.

Zdecentralizowana baza danych

Blockchain można przedstawić jako zdecentralizowaną bazę danych, replikowaną na wszystkie węzły sieci blockchain. W teorii blockchain będzie działać, dopóki działa przynajmniej jeden węzeł, przechowujący wszystkie bloki blockchaina.

Zdecentralizowany rejestr danych

Blockchain można przedstawić jako zdecentralizowany rejestr danych i operacji (transakcji). Inną nazwą takiego rejestru jest księgowość.

Do rozproszonego rejestru można dodawać dane, ale nie można ich modyfikować ani usuwać. Taka niemożliwość osiągana jest m.in. poprzez zastosowanie algorytmów kryptograficznych, specjalnych algorytmów dodawania bloków do łańcucha oraz zdecentralizowanego przechowywania danych.

Podczas dodawania bloków i wykonywania operacji (transakcji) używane są klucze prywatne i publiczne. Ograniczają one użytkowników blockchaina, dając im dostęp tylko do swoich bloków danych.

Transakcje

Blockchain przechowuje informacje o operacjach (transakcjach) w blokach. Przy tym stare, już wykonane transakcje nie mogą być cofnięte ani zmienione. Nowe transakcje są przechowywane w nowych, dodanych blokach.

W ten sposób w blockchainie można zapisać w niezmienionej formie całą historię transakcji. Dlatego blockchain może być używany np. do bezpiecznego przechowywania operacji bankowych, informacji o prawach autorskich, historii zmian właścicieli nieruchomości itp.

Blockchain Ethereum zawiera tzw. stany systemu. W miarę wykonywania transakcji stan zmienia się od początkowego do obecnego. Transakcje są zapisywane w blokach.

Publiczne i prywatne blockchainy

Należy zauważyć, że to, co powiedziano, dotyczy tylko tzw. publicznych sieci blockchain, które nie mogą być kontrolowane przez żadne pojedyncze osoby fizyczne lub prawne, władze państwowe ani rządy.
Tzw. prywatne sieci blockchain są pod całkowitą kontrolą ich twórców i tam możliwe jest wszystko, na przykład całkowita wymiana wszystkich bloków łańcucha.

Praktyczne zastosowania blockchaina

Do czego przydatny jest blockchain?

Krótko mówiąc, blockchain umożliwia bezpieczne przeprowadzanie operacji (transakcji) pomiędzy osobami lub firmami, które sobie nie ufają. Dane zapisane w blockchainie (transakcje, dane osobowe, dokumenty, zaświadczenia, umowy, faktury itp.) nie mogą być podrobione ani zastąpione po zapisaniu. Dlatego na bazie blockchaina można tworzyć np. zaufane rozproszone rejestry różnego rodzaju dokumentów.

Oczywiście, wiesz, że na bazie blockchainów powstają systemy kryptowalutowe, mające na celu zastąpienie tradycyjnych papierowych pieniędzy. Papierowe pieniądze nazywane są także fiatowymi (od Fiat Money).
Blockchain zapewnia przechowywanie i niezmienność transakcji zapisanych w blokach, dlatego można go wykorzystać do tworzenia systemów kryptowalutowych. Zawiera całą historię transferu kryptowalut między różnymi użytkownikami (rachunkami), a każda operacja jest możliwa do śledzenia.

Mimo że operacje wewnątrz systemów kryptowalutowych mogą być anonimowe, wypłata kryptowaluty i wymiana jej na pieniądze fiatowe zazwyczaj prowadzą do ujawnienia tożsamości właściciela aktywów kryptowalutowych.

Tak zwane smart kontrakty, będące oprogramowaniem działającym w sieci Ethereum, pozwalają zautomatyzować proces zawierania umów oraz kontrolować ich realizację. Szczególnie efektywne jest to, gdy płatność za umowę realizowana jest w kryptowalucie Ether.

Blockchain Ethereum i smart kontrakty Ethereum, napisane w języku programowania Solidity, mogą być wykorzystywane w takich obszarach jak:

  • alternatywa dla notarialnego poświadczenia dokumentów;
  • przechowywanie rejestru nieruchomości oraz informacji o transakcjach z nimi związanych;
  • przechowywanie informacji o prawach autorskich do obiektów własności intelektualnej (książki, obrazy, utwory muzyczne itp.);
  • tworzenie systemów niezależnego głosowania;
  • sfera finansów i działalność bankowa;
  • logistyka w skali międzynarodowej, śledzenie przemieszczenia towarów;
  • przechowywanie danych osobowych jako odpowiednik systemu identyfikacji;
  • bezpieczne transakcje w obszarze komercyjnych;
  • przechowywanie wyników badań medycznych oraz historii zalecanych procedur.

Problemy z blockchainem

Jednak, oczywiście, nie wszystko jest tak proste, jak mogłoby się wydawać!

Są problemy z weryfikacją danych przed ich dodaniem do blockchaina (na przykład, czy nie są fałszywe?), problemy z bezpieczeństwem systemowego i aplikacyjnego oprogramowania stosowanego do pracy z blockchainem, a także problemy z możliwością wykorzystania metod inżynierii społecznej do kradzieży dostępu do portfeli z kryptowalutami itp.

Z kolei jeśli mówimy o prywatnym blockchainie, który należy do osoby lub organizacji, poziom zaufania w tym przypadku nie przekroczy poziomu zaufania do tej osoby lub organizacji.

Należy również pamiętać, że dane zapisane w blockchainie stają się dostępne dla wszystkich. W tym sensie blockchain (szczególnie publiczny) nie nadaje się do przechowywania poufnych informacji. Jednak fakt, że informacji w blockchainie nie można zmienić, może pomóc w zapobieganiu lub badaniu różnych rodzajów oszustw.

Zdecentralizowane aplikacje Ethereum będą wygodne, jeśli opłatami za ich użycie będzie kryptowaluta. Im więcej osób posiada kryptowalutę lub jest gotowych ją nabyć, tym większą popularność zdobędą aplikacje DApp i smart kontrakty.

Wśród ogólnych problemów blockchaina, które utrudniają jego praktyczne zastosowanie, można wymienić ograniczoną szybkość dodawania nowych bloków i stosunkowo wysokie koszty transakcji. Jednak technologie w tej dziedzinie rozwijają się dynamicznie i istnieją nadzieje, że problemy techniczne z biegiem czasu zostaną rozwiązane.

Kolejnym problemem jest to, że smart kontrakty blockchaina Ethereum działają w izolowanym środowisku maszyn wirtualnych i nie mają dostępu do danych ze świata rzeczywistego. W szczególności program smart kontraktu nie może samodzielnie odczytać danych ze stron internetowych lub jakichkolwiek urządzeń fizycznych (czujników, kontaktów itp.), a także nie może wyprowadzić danych na jakiekolwiek zewnętrzne urządzenia. Ten problem oraz sposoby jego rozwiązania omówimy na lekcji poświęconej tzw. Orakulom — informacyjnym pośrednikom smart kontraktów.

Są również ograniczenia w obszarze legislacji. W niektórych krajach, na przykład, zabrania się używania kryptowaluty jako środka płatniczego, ale można ją posiadać jako pewnego rodzaju aktyw cyfrowy, podobnie jak papiery wartościowe. Takie aktywa można kupować i sprzedawać na giełdzie. W każdym przypadku, projektując projekt związany z kryptowalutami, konieczne jest zapoznanie się z ustawodawstwem kraju, w którego jurysdykcji znajduje się twój projekt.

Jak formuje się łańcuch blockchaina

Jak już wspomnieliśmy, blockchain to prosta sekwencja bloków danych. Najpierw tworzy się pierwszy blok w tej sekwencji, następnie dodaje się do niego drugi i tak dalej. Zakłada się, że dane transakcji są przechowywane w blokach i dodawane do ostatniego bloku.

Na rys. 1.1 przedstawiliśmy najprostszy wariant sekwencji bloków, w którym pierwszy blok odnosi się do następnego.

Książka „Tworzenie smart kontraktów Solidity dla blockchaina Ethereum. Praktyczny przewodnik”
Rys. 1.1. Prosta sekwencja bloków

W takim wariancie jednak można bardzo łatwo podrobić zawartość dowolnego bloku w łańcuchu, ponieważ bloki nie zawierają żadnych informacji chroniących przed zmianami. Biorąc pod uwagę, że blockchain jest przeznaczony do użytku przez ludzi i firmy, między którymi nie ma zaufania, można stwierdzić, że taki sposób przechowywania danych nie nadaje się do blockchaina.

Zajmijmy się zabezpieczeniem bloków przed podróbkami. Na pierwszym etapie spróbujemy zabezpieczyć każdy blok sumą kontrolną (rys. 1.2).

Książka „Tworzenie smart kontraktów Solidity dla blockchaina Ethereum. Praktyczny przewodnik”
Rys. 1.2. Dodajemy zabezpieczenie danych bloków sumą kontrolną

Teraz intruz nie może po prostu zmienić bloku, ponieważ zawiera on sumę kontrolną danych bloku. Weryfikacja sumy kontrolnej pokaże, że dane zostały zmienione.

Do obliczenia sumy kontrolnej można użyć jednej z funkcji hashujących, takich jak MD-5, SHA-1, SHA-256 itp. Funkcje hashujące obliczają pewną wartość (na przykład w postaci stałej długości ciągu tekstowego) w wyniku wykonywania nieodwracalnych operacji na bloku danych. Operacje te zależą od rodzaju funkcji hashującej.

Nawet przy niewielkiej zmianie zawartości bloku danych wartość funkcji hashującej również się zmieni. Analizując wartość funkcji hashującej, nie można odtworzyć bloku danych, dla którego została obliczona.

Czy taka ochrona będzie wystarczająca? Niestety, nie.

W tym schemacie suma kontrolna (funkcja hashująca) chroni tylko poszczególne bloki, ale nie cały łańcuch bloków. Znając algorytm obliczania funkcji hashującej, intruz może łatwo podmienić zawartość bloku. Nic również nie powstrzyma go przed usunięciem bloków z łańcucha lub dodaniem nowych.

Aby chronić cały łańcuch jako całość, można przechowywać w każdym bloku razem z danymi również hash danych poprzedniego bloku (rys. 1.3).

Książka „Tworzenie smart kontraktów Solidity dla blockchaina Ethereum. Praktyczny przewodnik”
Rys. 1.3. Dodajemy do bloku danych hash poprzedniego bloku

W tym schemacie, aby zmienić jakiś blok, należy przeliczyć funkcje haszujące wszystkich kolejnych bloków. Wydaje się, że w czym tkwi problem?

W rzeczywistych blockchainach dodatkowo stworzono sztuczne trudności dla dodawania nowych bloków — wykorzystuje się algorytmy wymagające dużych zasobów obliczeniowych. Biorąc pod uwagę, że dla wprowadzenia zmian w bloku należy przeliczyć nie tylko ten blok, ale wszystkie kolejne, zrealizowanie tego będzie niezwykle trudne.

Przypomnijmy również, że dane blockchaina są przechowywane (duplikowane) na licznych węzłach sieci, tzn. wykorzystuje się zdecentralizowane przechowywanie. To wielokrotnie komplikuje fałszowanie bloku, ponieważ zmiany należy wprowadzić we wszystkich węzłach sieci.

Ponieważ bloki zawierają informacje o poprzednim bloku, można zweryfikować zawartość wszystkich bloków w łańcuchu.

Blockchain Ethereum

Blockchain Ethereum jest platformą, na której można tworzyć rozproszone aplikacje DApp. W przeciwieństwie do innych platform, Ethereum umożliwia korzystanie z tzw. inteligentnych kontraktów (smart contracts), napisanych w języku programowania Solidity.

Platforma ta została stworzona w 2013 roku przez Vitalika Buterina, założyciela czasopisma Bitcoin Magazine, i uruchomiona w 2015 roku. Wszystko, co będziemy studiować lub robić w naszym kursie, ma związek właśnie z blockchainem Ethereum i inteligentnymi kontraktami Solidity.

Mining, czyli jak powstają bloki

Mining (kopanie) to stosunkowo skomplikowany i zasobochłonny proces dodawania nowych bloków do łańcucha blockchaina, a nie „wydobywanie kryptowalut”. Mining zapewnia działanie blockchaina, ponieważ to właśnie ten proces odpowiada za dodawanie transakcji do blockchaina Ethereum.

Osoby i organizacje zajmujące się dodawaniem bloków nazywane są minerami.
Oprogramowanie (SO), działające na węzłach minerów, próbuje dobrać dla ostatniego bloku parametr haszowania nazwany Nonce, aby uzyskać określoną wartość funkcji haszującej, zdefiniowanej przez sieć. Algorytm haszowania Ethash, stosowany w Ethereum, pozwala na uzyskanie wartości Nonce tylko w drodze sekwencyjnego przeszukiwania.

Jeśli węzeł górnika znalazł poprawną wartość Nonce, to jest to tzw. dowód pracy (PoW, Proof-of-work). W takim przypadku, jeśli blok zostanie dodany do sieci Ethereum, górnik otrzymuje określoną nagrodę w walucie sieci — Ether. W momencie pisania naszej książki nagroda wynosi 5 Ether, jednak z czasem zostanie zmniejszona.

W ten sposób górnicy Ethereum zapewniają działanie sieci, dodając bloki i otrzymując za to kryptowaluty. W Internecie znajdziesz mnóstwo informacji na temat górników i wydobywania, a my skoncentrujemy się na tworzeniu kontraktów Solidity i zdecentralizowanych aplikacji DApp w sieci Ethereum.

Podsumowanie lekcji

Na pierwszej lekcji zapoznałeś się z blockchainem i dowiedziałeś się, że jest to szczególnie ułożona sekwencja bloków. Zawartości wcześniej zapisanych bloków nie można zmienić, ponieważ konieczne byłoby przeliczenie wszystkich kolejnych bloków na wielu węzłach sieci, co wymaga wielu zasobów i czasu.

Blockchain może być stosowany do przechowywania wyników realizacji transakcji. Jego głównym celem jest organizacja bezpiecznego przeprowadzania transakcji między stronami (osobami i organizacjami), między którymi nie ma zaufania. Dowiedziałeś się, w jakich konkretnie dziedzinach biznesu i w jakich obszarach można wykorzystać blockchain Ethereum i smart kontrakty Solidity. Należy do nich sektor bankowy, rejestracja praw własności, dokumentów itp.

Dowiedziałeś się również, że podczas korzystania z blockchaina mogą wystąpić różne problemy. Są to problemy weryfikacji informacji dodawanych do blockchaina, szybkość działania blockchaina, koszt transakcji, problem wymiany danych między smart kontraktami a rzeczywistym światem, a także potencjalne ataki hakerów mające na celu kradzież środków kryptowalutowych z kont użytkowników.

Krótko omówiliśmy także wydobywanie jako proces dodawania nowych bloków do blockchaina. Wydobywanie jest niezbędne do realizacji transakcji. Ci, którzy zajmują się wydobywaniem, zapewniają działanie blockchaina i otrzymują za to nagrodę w kryptowalucie.

Lekcja 2. Przygotowanie środowiska roboczego w systemach Ubuntu i DebianWybór systemu operacyjnego
Instalacja niezbędnych narzędzi
Instalacja Geth i Swarm w Ubuntu
Instalacja Geth i Swarm w Debianie
Serwer bazy danych Firebird 3.0 dynamicznie alokuje i zwalnia pamięć systemową, co może prowadzić do jej fragmentacji. Na przykład, po jednoczesnym odłączeniu dużej liczby użytkowników od superserwera, mogą pojawić się błędy przy nowych połączeniach.
Ładowanie dystrybucji Go
Ustawianie zmiennych środowiskowych
Sprawdzanie wersji Go
Instalacja Geth i Swarm
Tworzenie prywatnego blockchaina
Готовим файл genesis.json
Tworzenie katalogu do pracy
Tworzenie konta
Rozpoczynamy inicjalizację węzła
Parametry uruchamiania węzła
Łączenie z naszym węzłem
Zarządzanie wydobywaniem i sprawdzanie salda
Zakończenie pracy konsoli Geth
Podsumowanie lekcji

Lekcja 3. Przygotowanie środowiska roboczego na Raspberry Pi 3Przygotowanie Raspberry Pi 3 do pracy
Instalacja Raspbian
Instalacja aktualizacji
Włączenie dostępu SSH
Ustawienie statycznego adresu IP
Instalacja niezbędnych narzędzi
Instalacja Go
Ładowanie dystrybucji Go
Ustawianie zmiennych środowiskowych
Sprawdzanie wersji Go
Instalacja Geth i Swarm
Tworzenie prywatnego blockchaina
Sprawdzanie konta i salda
Podsumowanie lekcji

Lekcja 4. Konta i transfery środków między kontamiPrzeglądanie i dodawanie kont
Przeglądanie listy kont
Dodawanie konta
Parametry komendy geth account
Hasła kont
Kryptowaluta w Ethereum
Jednostki monetarne Ethereum
Określanie bieżącego salda naszych kont
Transfer środków z jednego konta na drugie
Metoda eth.sendTransaction
Sprawdzanie stanu transakcji
Kwita transakcji
Podsumowanie lekcji

Lekcja 5. Publikacja pierwszego kontraktuSmart kontrakty w Ethereum
Wykonywanie smart kontraktu
Wirtualna maszyna Ethereum
Zintegrowane środowisko programistyczne Remix Solidity IDE
Uruchomienie kompilacji
Wywoływanie funkcji kontraktu
Publikacja kontraktu w prywatnej sieci
Uzyskanie definicji ABI i kodu binarnego kontraktu
Publikacja kontraktu
Sprawdzanie stanu transakcji publikacji kontraktu
Wywoływanie funkcji kontraktu
Kompilator pakietów solc
Instalacja solc w Ubuntu
Instalacja solc w Debianie
Kompilacja kontraktu HelloSol
Publikacja kontraktu
Instalacja solc na Raspbianie
Podsumowanie lekcji

Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Instalacja w Ubuntu
Instalacja w Debianie
Instalacja i uruchamianie Ganache-cli
Instalacja Web3
Instalacja solc
Instalacja Node.js na Raspbianie
Skrypt do uzyskiwania listy kont w konsoli
Skrypt do publikacji smart kontraktu
Uruchamianie i uzyskiwanie parametrów
Uzyskiwanie parametrów uruchamiania
Kompilacja kontraktu
Odblokowanie konta
Ładowanie ABI i kodu binarnego kontraktu
Ocena wymaganego poziomu gazu
Tworzenie obiektu i uruchamianie publikacji kontraktu
Uruchamianie skryptu publikacji kontraktu
Wywoływanie funkcji smart kontraktu
Czy możliwe jest zaktualizowanie opublikowanego smart kontraktu
Praca z Web3 wersji 1.0.x
Uzyskiwanie listy kont
Publikacja kontraktu
Wywoływanie funkcji kontraktu
Transfer środków z jednego konta na drugie
Transfer środków na konto kontraktu
Aktualizujemy smart kontrakt HelloSol
Tworzenie skryptu do przeglądania salda konta
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Zasilanie konta smart kontraktu
Podsumowanie lekcji

Lekcja 7. Wprowadzenie do TruffleInstalacja Truffle
Tworzenie projektu HelloSol
Tworzenie katalogu i plików projektu
Katalog kontraktów
Katalog migracji
Katalog testowy
Файл truffle-config.js
Kompilacja kontraktu HelloSol
Rozpoczęcie publikacji kontraktu
Wywołanie funkcji kontraktu HelloSol w zaproszeniu Truffle
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Instalacja modułu truffle-contract
Wywołanie funkcji kontraktu getValue i getString
Wywołanie funkcji kontraktu setValue i setString
Zmiana kontraktu i ponowna publikacja
Praca z Web3 wersji 1.0.x
Wprowadzanie zmian w inteligentnym kontrakcie HelloSol
Skrypty do wywoływania metod kontraktu
Testowanie w Truffle
Test w Solidity
Test w JavaScript
Podsumowanie lekcji

Lekcja 8. Typy danych w SolidityKontrakt do nauki typów danych
Logiczne typy danych
Liczby całkowite bez znaku i całkowite ze znakiem
Liczby stało-przecinkowe
Adres
Zmienne typów złożonych
Tablice o stałej wielkości
Tablice dynamiczne
Wypisanie
Struktury
Mapowania
Podsumowanie lekcji

Lekcja 9. Migracja kontraktów do prywatnej sieci i sieci RinkebyPublikacja kontraktu z Truffle do prywatnej sieci Geth
Przygotowanie węzła prywatnej sieci
Przygotowanie kontraktu do pracy
Kompilacja i migracja kontraktu do sieci Truffle
Rozpoczęcie migracji w lokalnej sieci geth
Wydobywanie artefaktów Truffle
Publikacja kontraktu z Truffle w testowej sieci Rinkeby
Przygotowanie węzła Geth do pracy z Rinkeby
Synchronizacja węzła
Dodawanie kont
Doładowanie konta Rinkeby eterem
Rozpoczęcie migracji kontraktu do sieci Rinkeby
Wyświetlanie informacji o kontrakcie w sieci Rinkeby
Konsola Truffle dla sieci Rinkeby
Bardziej wydajny sposób wywołania funkcji kontraktu
Вызов методов контракта при помощи Node.js
Przesyłanie środków między kontami w konsoli Truffle dla Rinkeby
Podsumowanie lekcji

Lekcja 10. Zdecentralizowane przechowywanie danych Ethereum SwarmJak działa Ethereum Swarm
Instalacja i uruchomienie Swarm
Operacje z plikami i katalogami
Przesyłanie pliku do Ethereum Swarm
Odczytywanie pliku z Ethereum Swarm
Przeglądanie manifestu przesłanego pliku
Przesyłanie katalogów z podkatalogami
Odczytywanie pliku z przesłanego katalogu
Korzystanie z publicznego bramy Swarm
Обращение к Swarm из скриптов Node.js
Moduł Perl Net::Ethereum::Swarm
Instalacja modułu Net::Ethereum::Swarm
Zapis i odczyt danych
Podsumowanie lekcji

Lekcja 11. Framework Web3.py do pracy z Ethereum w PythonieInstalacja Web3.py
Aktualizacja i instalacja wymaganych pakietów
Instalacja modułu easysolc
Publikacja kontraktu za pomocą Web3.py
Kompilacja kontraktu
Podłączenie do dostawcy
Wykonanie publikacji kontraktu
Zapisanie adresu kontraktu i abi w pliku
Uruchamianie skryptu publikacji kontraktu
Wywołanie metod kontraktu
Odczyt adresu i abi kontraktu z pliku JSON
Podłączenie do dostawcy
Tworzenie obiektu kontraktu
Wywołanie metod kontraktu
Truffle i Web3.py
Podsumowanie lekcji

Lekcja 12. OracleCzy inteligentny kontrakt może ufać danym zewnętrznym?
Orakuly jako pośrednicy informacji w blockchainie
Źródło danych
Kod do reprezentacji danych ze źródła
Orakl do zapisywania kursu wymiany w blockchainie
Kontrakt USDRateOracle
Aktualizacja kursu wymiany w smart kontrakcie
Użycie dostawcy Web Socket
Oczekiwanie na zdarzenie RateUpdate
Przetwarzanie zdarzenia RateUpdate
Inicjowanie aktualizacji danych w smart kontrakcie
Podsumowanie lekcji

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster