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

Książka „Tworzenie inteligentnych kontraktów Solidity dla blockchainu Ethereum. Praktyczny przewodnik”
Od ponad roku pracuję nad książką „Creating Solidity Smart Contracts for the Ethereum Blockchain. Praktyczny przewodnik”, a teraz ta praca jest ukończona, a książka opublikowane i dostępne w Literach.

Mam nadzieję, że moja książka pomoże Ci szybko rozpocząć tworzenie inteligentnych kontaktów Solidity i rozproszonych aplikacji DApps dla blockchainu Ethereum. Składa się z 12 lekcji z zadaniami praktycznymi. Po ich ukończeniu czytelnik będzie mógł tworzyć własne lokalne węzły Ethereum, publikować inteligentne kontrakty i wywoływać ich metody, wymieniać dane pomiędzy światem rzeczywistym a inteligentnymi kontraktami za pomocą wyroczni, a także współpracować z testową siecią debugującą Rinkeby.

Książka skierowana jest do wszystkich, którzy interesują się zaawansowanymi technologiami z zakresu blockchain i chcą szybko zdobyć wiedzę, która pozwoli im podjąć ciekawą i obiecującą pracę.

Poniżej znajdziecie spis treści oraz pierwszy rozdział książki (również na Litres dostępne są fragmenty książki). Liczę na opinie, komentarze i sugestie. Postaram się to wszystko uwzględnić przygotowując kolejne wydanie książki.

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

Lepiej nie tylko przeczytać tę książkę, ale z nią pracować, wykonując praktyczne zadania opisane na lekcjach. Do pracy potrzebny będzie komputer lokalny, serwer wirtualny lub chmurowy z zainstalowanym systemem operacyjnym Debian lub Ubuntu. Możesz także używać Raspberry Pi do wykonywania wielu zadań.

Na pierwszej lekcji Przyjrzymy się zasadom działania blockchainu Ethereum i podstawowej terminologii, a także porozmawiamy o tym, gdzie można zastosować ten blockchain.

cel druga lekcja — utwórz prywatny węzeł blockchain Ethereum do dalszej pracy w ramach tego kursu na serwerze Ubuntu i Debian. Przyjrzymy się funkcjom instalacji podstawowych narzędzi, takich jak geth, który zapewnia działanie naszego węzła blockchain, a także demon zdecentralizowanego przechowywania danych roju.

Trzecia lekcja nauczy Cię jak eksperymentować z Ethereum na niedrogim mikrokomputerze Raspberry Pi. Zainstalujesz system operacyjny Rasberian na Raspberry Pi, narzędzie Geth obsługujące węzeł blockchain oraz demona zdecentralizowanego przechowywania danych Swarm.

Lekcja czwarta dedykowany jest rachunkom i jednostkom kryptowalut w sieci Ethereum, a także sposobom przesyłania środków z jednego konta na drugie z konsoli Geth. Dowiesz się, jak tworzyć konta, inicjować transakcje transferu środków oraz uzyskiwać status transakcji i potwierdzenie.

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

Stworzysz i opublikujesz swój pierwszy inteligentny kontrakt w sieci prywatnej Ethereum oraz nauczysz się wywoływać jego funkcje. Aby to zrobić, użyjesz Remix Solidity IDE. Dowiesz się także jak zainstalować i używać kompilatora wsadowego Solc.
Porozmawiamy także o tzw. Application Binary Interface (ABI) i nauczymy Cię jak z niego korzystać.

Szósta lekcja zajmuje się tworzeniem skryptów JavaScript uruchamiających Node.js i wykonywaniem operacji na inteligentnych kontraktach Solidity.

Zainstalujesz Node.js na systemach Ubuntu, Debian i Rasberian, napiszesz skrypty w celu opublikowania inteligentnej umowy w sieci lokalnej Ethereum i wywołasz jej funkcje.

Dodatkowo dowiesz się jak przesyłać środki pomiędzy zwykłymi kontami za pomocą skryptów, a także zasilać je kontami smart kontraktowymi.

Na siódmej lekcji Dowiesz się, jak zainstalować i używać frameworku Truffle, popularnego wśród twórców inteligentnych kontraktów Solidity. Dowiesz się, jak tworzyć skrypty JavaScript wywołujące funkcje kontraktu za pomocą modułu trufle-contract i testować inteligentny kontrakt za pomocą Truffle.

Ósma lekcja dedykowane typom danych Solidity. Napiszesz inteligentne kontrakty współpracujące z typami danych, takimi jak liczby całkowite ze znakiem i bez znaku, liczby ze znakiem, ciągi znaków, adresy, zmienne zespolone, tablice, wyliczenia, struktury i słowniki.

Na dziewiątej lekcji Będziesz o krok bliżej do stworzenia inteligentnych kontraktów dla sieci głównej Ethereum. Dowiesz się jak publikować umowy za pomocą Truffle w sieci prywatnej Geth, a także w sieci testowej Rinkeby. Debugowanie inteligentnej umowy w sieci Rinkeby jest bardzo przydatne przed opublikowaniem jej w sieci głównej - tam prawie wszystko jest prawdziwe, ale za darmo.

W ramach lekcji utworzysz testowy węzeł sieci Rinkeby, sfinansujesz go środkami i opublikujesz inteligentny kontrakt.

lekcja 10 dedykowany do rozproszonego przechowywania danych Ethereum Swarm. Korzystając z rozproszonej pamięci masowej, oszczędzasz na przechowywaniu dużych ilości danych w blockchainie Ethereum.

W tym samouczku utworzysz lokalną pamięć Swarm, wykonasz operacje zapisu i odczytu na plikach oraz katalogach plików. Następnie dowiesz się, jak pracować z publiczną bramą Swarm, pisać skrypty umożliwiające dostęp do Swarm z poziomu Node.js, a także korzystać z modułu Perl Net::Ethereum::Swarm.

Cel lekcji 11 — opanuj pracę z inteligentnymi kontraktami Solidity przy użyciu popularnego języka programowania Python i frameworku Web3.py. Zainstalujesz framework, napiszesz skrypty w celu skompilowania i opublikowania inteligentnej umowy oraz wywołasz jej funkcje. W takim przypadku Web3.py będzie używany zarówno samodzielnie, jak i w połączeniu ze zintegrowanym środowiskiem programistycznym Truffle.

Na lekcji 12 nauczysz się przesyłać dane pomiędzy inteligentnymi kontraktami a światem rzeczywistym za pomocą wyroczni. Przyda się to do odbierania danych ze stron internetowych, urządzeń IoT, różnych urządzeń i czujników oraz wysyłania danych z inteligentnych kontraktów do tych urządzeń. W praktycznej części lekcji utworzysz wyrocznię i inteligentny kontrakt, który będzie pobierał aktualny kurs wymiany USD na ruble ze strony internetowej Banku Centralnego Federacji Rosyjskiej.

Lekcja 1. Krótko o blockchainie i sieci EthereumCel lekcji: zapoznaj się z zasadami działania blockchainu Ethereum, jego obszarami zastosowań oraz podstawową terminologią.
Zadania praktyczne: nieujęte w tej lekcji.

Nie ma dziś twórcy oprogramowania, który nie słyszałby nic o technologii blockchain (Blockchain), kryptowalutach (Kryptowaluta lub Crypto Currency), Bitcoinie (Bitcoin), początkowej ofercie monet (ICO, Wstępna oferta monet), inteligentnych kontraktach (Smart Contract), a także inne koncepcje i terminy związane z blockchainem.

Technologia Blockchain otwiera nowe rynki i tworzy miejsca pracy dla programistów. Jeśli rozumiesz wszystkie zawiłości technologii kryptowalut i technologii inteligentnych kontraktów, nie powinieneś mieć problemów z zastosowaniem tej wiedzy w praktyce.

Trzeba powiedzieć, że wokół kryptowalut i blockchainów narosło wiele spekulacji. Pomińmy dyskusje na temat zmian kursów kryptowalut, tworzenia piramid, zawiłości legislacyjnych dotyczących kryptowalut itp. Na naszym szkoleniu skupimy się głównie na technicznych aspektach zastosowania inteligentnych kontraktów blockchainu Ethereum (Ethereum, Ether) oraz rozwoju tzw. aplikacji zdecentralizowanych (Distributed Application, DApp).

Co to jest blockchain

Blockchain (Block Chain) to łańcuch bloków danych połączonych ze sobą w określony sposób. Na początku łańcucha znajduje się pierwszy blok, który nazywany jest blokiem pierwotnym (blokiem genezy) lub blokiem genezy. Po nim następuje drugi, potem trzeci i tak dalej.

Wszystkie te bloki danych są automatycznie duplikowane w wielu węzłach sieci blockchain. Zapewnia to zdecentralizowane przechowywanie danych blockchain.
Można myśleć o systemie blockchain jako o dużej liczbie węzłów (serwerów fizycznych lub wirtualnych) połączonych w sieć i replikujących wszystkie zmiany w łańcuchu bloków danych. To jest jak gigantyczny komputer wieloserwerowy, a węzły takiego komputera (serwery) mogą być rozproszone po całym świecie. Ty też możesz dodać swój komputer do sieci blockchain.

Rozproszona baza danych

Blockchain można traktować jako rozproszoną bazę danych, która jest replikowana we wszystkich węzłach sieci blockchain. Teoretycznie blockchain będzie działał tak długo, jak będzie działał co najmniej jeden węzeł, przechowujący wszystkie bloki blockchainu.

Rozproszony rejestr danych

Blockchain można traktować jako rozproszoną księgę danych i operacji (transakcji). Inna nazwa takiego rejestru to księga rachunkowa.

Dane można dodawać do rozproszonej księgi głównej, ale nie można ich zmieniać ani usuwać. Niemożność tę osiąga się w szczególności 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) wykorzystywane są klucze prywatne i publiczne. Ograniczają użytkowników blockchaina, dając im dostęp jedynie do ich własnych bloków danych.

Transakcje

Blockchain przechowuje informacje o operacjach (transakcjach) w blokach. Jednocześnie nie można cofnąć ani zmienić starych, już zrealizowanych transakcji. Nowe transakcje zapisywane są w nowych, dodanych blokach.

W ten sposób cała historia transakcji może zostać zapisana w niezmienionej formie na blockchainie. Dlatego blockchain można wykorzystać np. do bezpiecznego przechowywania transakcji bankowych, informacji o prawach autorskich, historii zmian właścicieli nieruchomości itp.

Blockchain Ethereum zawiera tak zwane stany systemowe. W miarę wykonywania transakcji stan zmienia się ze stanu początkowego na stan bieżący. Transakcje rejestrowane są blokowo.

Publiczne i prywatne blockchainy

Należy tutaj zauważyć, że wszystko, co zostało powiedziane, dotyczy tylko tak zwanych publicznych sieci blockchain, których nie może kontrolować żadna osoba fizyczna ani prawna, agencja rządowa ani rząd.
Tak zwane prywatne sieci blockchain znajdują się pod pełną kontrolą swoich twórców i w nich wszystko jest możliwe, np. całkowita wymiana wszystkich bloków łańcucha.

Praktyczne zastosowania blockchainu

Do czego może przydać się blockchain?

Krótko mówiąc, blockchain pozwala na bezpieczne przeprowadzanie transakcji (transakcji) pomiędzy osobami lub firmami, które nie mają do siebie zaufania. Dane zapisane w blockchain (transakcje, dane osobowe, dokumenty, certyfikaty, umowy, faktury itp.) nie mogą zostać sfałszowane ani zastąpione po ich zapisaniu. Dlatego w oparciu o blockchain możliwe jest tworzenie np. zaufanych rozproszonych rejestrów różnego rodzaju dokumentów.

Wiadomo oczywiście, że w oparciu o blockchainy powstają systemy kryptowalut, które mają zastąpić zwykłe papierowe pieniądze. Pieniądz papierowy nazywany jest także fiat (od Fiat Money).
Blockchain zapewnia przechowywanie i niezmienność transakcji rejestrowanych w blokach, dlatego można go wykorzystać do tworzenia systemów kryptowalutowych. Zawiera całą historię transferu środków kryptograficznych pomiędzy różnymi użytkownikami (kontami), a każdą operację można śledzić.

Chociaż transakcje w ramach systemów kryptowalut mogą być anonimowe, wycofanie kryptowaluty i wymiana jej na pieniądz fiducjarny zwykle skutkuje ujawnieniem tożsamości właściciela aktywa kryptowalutowego.

Tak zwane inteligentne kontrakty, czyli oprogramowanie działające w sieci Ethereum, pozwalają na automatyzację procesu zawierania transakcji i monitorowania ich realizacji. Jest to szczególnie skuteczne, jeśli płatność za transakcję odbywa się przy użyciu kryptowaluty Ether.

Blockchain Ethereum oraz inteligentne kontrakty Ethereum napisane w języku programowania Solidity można wykorzystać m.in. w następujących obszarach:

  • alternatywa dla notarialnego poświadczenia dokumentów;
  • prowadzenie rejestru przedmiotów nieruchomości oraz informacji o transakcjach na przedmiotach nieruchomości;
  • przechowywanie informacji o prawach autorskich do własności intelektualnej (książki, obrazy, dzieła muzyczne itp.);
  • tworzenie niezależnych systemów głosowania;
  • Finanse i Bankowość;
  • logistyka w skali międzynarodowej, śledzenie przepływu towarów;
  • przechowywanie danych osobowych w sposób analogiczny do systemu dowodów osobistych;
  • bezpieczne transakcje w obszarze handlowym;
  • przechowywanie wyników badań lekarskich, a także historii przepisanych zabiegów

Problemy z blockchainem

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

Występują problemy z weryfikacją danych przed dodaniem ich do blockchaina (np. czy są fałszywe?), problemy z bezpieczeństwem oprogramowania systemowego i aplikacyjnego służącego do współpracy z blockchainem, problemy z możliwością wykorzystania metod socjotechniki do kradzieży dostępu do portfeli kryptowalutowych itp. .P.

Ponownie, jeśli nie mówimy o blockchainie publicznym, którego węzły są rozproszone po całym świecie, ale o blockchainie prywatnym należącym do osoby lub organizacji, to poziom zaufania tutaj nie będzie wyższy niż poziom zaufania w tej osobie lub tej organizacji.

Należy także wziąć pod uwagę, że dane zapisane w blockchainie stają się dostępne dla każdego. W tym sensie blockchain (zwłaszcza publiczny) nie nadaje się do przechowywania poufnych informacji. Jednakże fakt, że informacji znajdujących się na blockchainie nie można zmienić, może pomóc w zapobieganiu różnym rodzajom nieuczciwych działań lub prowadzeniu dochodzeń w ich sprawie.

Zdecentralizowane aplikacje Ethereum będą wygodne, jeśli za korzystanie z nich zapłacisz kryptowalutą. Im więcej osób posiada kryptowalutę lub jest skłonnych ją kupić, tym popularniejsze staną się DApps i inteligentne kontrakty.

Typowymi problemami związanymi z blockchainem, które utrudniają jego praktyczne zastosowanie, są ograniczona prędkość, z jaką można dodawać nowe bloki oraz stosunkowo wysoki koszt transakcji. Ale technologia w tej dziedzinie aktywnie się rozwija i istnieją nadzieje, że problemy techniczne zostaną z czasem rozwiązane.

Kolejnym problemem jest to, że inteligentne kontrakty na blockchainie Ethereum działają w izolowanym środowisku maszyn wirtualnych i nie mają dostępu do danych ze świata rzeczywistego. W szczególności program inteligentnych kontraktów nie może sam odczytywać danych z witryn ani żadnych urządzeń fizycznych (czujników, styków itp.), A także nie może wysyłać danych do żadnych urządzeń zewnętrznych. Ten problem i sposoby jego rozwiązania omówimy na lekcji poświęconej tzw. Wyroczniom – pośrednikom informacyjnym inteligentnych kontraktów.

Istnieją również ograniczenia prawne. Na przykład w niektórych krajach zabronione jest używanie kryptowaluty jako środka płatniczego, ale można ją posiadać jako rodzaj aktywów cyfrowych, takich jak papiery wartościowe. Takie aktywa można kupować i sprzedawać na giełdzie. W każdym razie, tworząc projekt współpracujący z kryptowalutami, musisz zapoznać się z ustawodawstwem kraju, któremu podlega Twój projekt.

Jak powstaje łańcuch blockchain

Jak już powiedzieliśmy, blockchain to prosty łańcuch bloków danych. Najpierw powstaje pierwszy blok tego łańcucha, następnie dodaje się do niego drugi i tak dalej. Zakłada się, że dane transakcyjne są przechowywane w blokach i są dodawane do najnowszego bloku.

Na ryc. 1.1 pokazaliśmy najprostszą wersję ciągu bloków, gdzie pierwszy blok odnosi się do następnego.

Książka „Tworzenie inteligentnych kontraktów Solidity dla blockchainu Ethereum. Praktyczny przewodnik”
Ryż. 1.1. Prosta sekwencja bloków

Jednakże przy tej opcji bardzo łatwo jest manipulować zawartością dowolnego bloku w łańcuchu, ponieważ bloki nie zawierają żadnych informacji zabezpieczających przed zmianami. Biorąc pod uwagę, że blockchain jest przeznaczony do użytku przez osoby i firmy, pomiędzy którymi nie istnieje zaufanie, możemy stwierdzić, że ten sposób przechowywania danych nie jest odpowiedni dla blockchainu.

Zacznijmy chronić klocki przed podrabianiem. W pierwszym etapie postaramy się zabezpieczyć każdy blok sumą kontrolną (ryc. 1.2).

Książka „Tworzenie inteligentnych kontraktów Solidity dla blockchainu Ethereum. Praktyczny przewodnik”
Ryż. 1.2. Dodanie ochrony tych bloków za pomocą sumy kontrolnej

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

Aby obliczyć sumę kontrolną, możesz użyć jednej z funkcji skrótu, takich jak MD-5, SHA-1, SHA-256 itp. Funkcje mieszające obliczają wartość (na przykład ciąg tekstowy o stałej długości), wykonując nieodwracalne operacje na bloku danych. Operacje zależą od typu funkcji skrótu.

Nawet jeśli zawartość bloku danych nieznacznie się zmieni, wartość skrótu również ulegnie zmianie. Analizując wartość funkcji skrótu nie da się zrekonstruować bloku danych, dla którego została ona obliczona.

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

W tym schemacie suma kontrolna (funkcja skrótu) chroni tylko pojedyncze bloki, ale nie cały łańcuch bloków. Znając algorytm obliczania funkcji skrótu, atakujący może łatwo podmienić zawartość bloku. Nic też nie stoi na przeszkodzie, aby usunąć bloki z łańcucha lub dodać nowe.

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

Książka „Tworzenie inteligentnych kontraktów Solidity dla blockchainu Ethereum. Praktyczny przewodnik”
Ryż. 1.3. Dodaj skrót poprzedniego bloku do bloku danych

W tym schemacie, aby zmienić blok, należy ponownie obliczyć funkcje mieszające wszystkich kolejnych bloków. Wydawałoby się, w czym jest problem?

W prawdziwych blockchainach powstają dodatkowo sztuczne trudności przy dodawaniu nowych bloków – stosowane są algorytmy wymagające dużych zasobów obliczeniowych. Biorąc pod uwagę, że aby wprowadzić zmiany w bloku, trzeba przeliczyć nie tylko ten jeden blok, ale wszystkie kolejne, będzie to niezwykle trudne.

Pamiętajmy też, że dane blockchain są przechowywane (duplikowane) w wielu węzłach sieci, tj. Stosowane jest zdecentralizowane przechowywanie. A to znacznie utrudnia podrobienie bloku, ponieważ zmiany należy wprowadzić we wszystkich węzłach sieci.

Ponieważ bloki przechowują informacje o poprzednim bloku, możliwe jest sprawdzenie zawartości wszystkich bloków w łańcuchu.

Blockchain Ethereum

Blockchain Ethereum to platforma, na której można tworzyć rozproszone aplikacje DApps. W odróżnieniu od innych platform, Ethereum umożliwia stosowanie tzw. inteligentnych kontraktów (smart kontraktów), napisanych w języku programowania Solidity.

Platforma ta została stworzona w 2013 roku przez Vitalika Buterina, założyciela magazynu Bitcoin i uruchomiona w 2015 roku. Wszystko, czego będziemy się uczyć lub co będziemy robić podczas naszego szkolenia, dotyczy konkretnie blockchainu Ethereum i inteligentnych kontraktów Solidity.

Górnictwo, czyli jak powstają bloki

Wydobywanie to dość złożony i wymagający dużych zasobów proces dodawania nowych bloków do łańcucha blockchain, a nie „wydobywanie kryptowalut”. Wydobywanie zapewnia funkcjonalność blockchainu, ponieważ to właśnie ten proces odpowiada za dodawanie transakcji do blockchainu Ethereum.

Osoby i organizacje zajmujące się dodawaniem bloków nazywane są górnikami.
Oprogramowanie działające na węzłach górnika próbuje znaleźć parametr mieszający o nazwie Nonce dla ostatniego bloku, aby uzyskać określoną wartość skrótu określoną przez sieć. Algorytm mieszający Ethash zastosowany w Ethereum pozwala uzyskać wartość Nonce jedynie poprzez wyszukiwanie sekwencyjne.

Jeżeli węzeł górniczy znajdzie poprawną wartość Nonce, wówczas jest to tzw. dowód pracy (PoW, Proof-of-work). W takim przypadku, jeśli do sieci Ethereum zostanie dodany blok, górnik otrzymuje określoną nagrodę w walucie sieciowej – Ether. W chwili pisania tego tekstu nagroda wynosi 5 Eteru, ale z czasem będzie ona zmniejszana.

W ten sposób górnicy Ethereum zapewniają działanie sieci, dodając bloki i otrzymują za to pieniądze w kryptowalutach. W internecie znajdziesz mnóstwo informacji o górnikach i górnictwie, my jednak skupimy się na tworzeniu kontraktów Solidity i DApps w sieci Ethereum.

Podsumowanie lekcji

Na pierwszej lekcji zapoznałeś się z blockchainem i dowiedziałeś się, że jest to specjalnie skomponowany ciąg bloków. Zawartość wcześniej zarejestrowanych bloków nie może zostać zmieniona, ponieważ wymagałoby to przeliczenia wszystkich kolejnych bloków na wielu węzłach sieci, co wymaga dużych zasobów i czasu.

Blockchain może służyć do przechowywania wyników transakcji. Jego głównym celem jest organizowanie bezpiecznych transakcji pomiędzy stronami (osobami i organizacjami), pomiędzy którymi nie istnieje zaufanie. Dowiedziałeś się, w jakich konkretnych obszarach biznesu i w jakich obszarach można zastosować blockchain Ethereum i inteligentne kontrakty Solidity. Jest to sektor bankowy, rejestracja praw majątkowych, dokumentów itp.

Dowiedziałeś się również, że podczas korzystania z blockchain mogą pojawić się różne problemy. Są to problemy związane z weryfikacją informacji dodanych do blockchainu, szybkością blockchaina, kosztem transakcji, problemem wymiany danych pomiędzy inteligentnymi kontraktami a światem rzeczywistym, a także potencjalnymi atakami atakujących, których celem jest kradzież środków w kryptowalutach z kont użytkowników .

Krótko rozmawialiśmy także o wydobyciu jako procesie dodawania nowych bloków do blockchainu. Wydobywanie jest niezbędne do sfinalizowania transakcji. Osoby zajmujące się wydobyciem zapewniają funkcjonowanie blockchainu i otrzymują za to nagrodę w kryptowalutie.

Lekcja 2. Przygotowanie środowiska pracy w systemie Ubuntu i DebianWybór systemu operacyjnego
Instalacja niezbędnych mediów
Instalowanie Getha i Swarma na Ubuntu
Instalowanie Getha i Swarma na Debianie
Wstępne przygotowanie
Pobieranie dystrybucji Go
Ustawianie zmiennych środowiskowych
Sprawdzam wersję Go
Instalowanie Getha i Roju
Tworzenie prywatnego blockchainu
Przygotowanie pliku genesis.json
Utwórz katalog do pracy
Utwórz konto
Rozpoczęcie inicjalizacji węzła
Opcje uruchamiania węzła
Połącz się z naszym węzłem
Zarządzanie wydobyciem i kontrola równowagi
Wyłączanie konsoli Geth
Podsumowanie lekcji

Lekcja 3. Przygotowanie środowiska pracy na Raspberry Pi 3Przygotowanie Raspberry Pi 3 do pracy
Instalacja Rasberiana
Instalacja aktualizacji
Włączanie dostępu SSH
Ustawianie statycznego adresu IP
Instalacja niezbędnych mediów
Instalowanie Go
Pobieranie dystrybucji Go
Ustawianie zmiennych środowiskowych
Sprawdzam wersję Go
Instalowanie Getha i Roju
Tworzenie prywatnego blockchainu
Sprawdzanie konta i salda
Podsumowanie lekcji

Lekcja 4. Rachunki i przesyłanie środków pomiędzy rachunkamiPrzeglądaj i dodawaj konta
Zobacz listę kont
Dodanie konta
opcje poleceń konta geth
Hasła do kont
Kryptowaluta w Ethereum
Jednostki walutowe Ethereum
Ustalamy aktualne saldo naszych rachunków
Przenieś środki z jednego konta na drugie
Metoda transakcji eth.send
Zobacz status transakcji
Potwierdzenie transakcji
Podsumowanie lekcji

Lekcja 5. Publikacja pierwszej umowyInteligentne kontrakty w Ethereum
Inteligentna realizacja kontraktu
Maszyna wirtualna Ethereum
Zintegrowane środowisko programistyczne Remix Solidity IDE
Działająca kompilacja
Wywoływanie funkcji kontraktowych
Publikacja umowy w sieci prywatnej
Uzyskiwanie definicji ABI i kodu binarnego kontraktu
Publikacja umowy
Sprawdzanie statusu transakcji publikacji umowy
Wywoływanie funkcji kontraktowych
Kompilator wsadowy solc
Instalowanie Solca na Ubuntu
Instalowanie Solca na Debianie
Kompilowanie kontraktu HelloSol
Publikacja umowy
Instalowanie Solca na Rasberianie
Podsumowanie lekcji

Lekcja 6. Inteligentne kontrakty i Node.jsInstalowanie Node.js
Instalacja na Ubuntu
Instalacja na Debianie
Instalowanie i uruchamianie Ganache-cli
Instalacja Web3
Instalowanie Solc
Instalowanie Node.js na Rasberianie
Skrypt pobierający listę kont w konsoli
Skrypt do publikacji inteligentnej umowy
Uruchom i pobierz parametry
Uzyskiwanie opcji uruchamiania
Kompilacja kontraktu
Odblokowanie konta
Ładowanie kodu binarnego ABI i kontraktu
Oszacowanie wymaganej ilości gazu
Utwórz obiekt i rozpocznij publikację umowy
Uruchomienie skryptu publikacji kontraktu
Wywoływanie funkcji inteligentnych kontraktów
Czy można zaktualizować opublikowaną inteligentną umowę?
Praca z wersją Web3 1.0.x
Uzyskanie listy kont
Publikacja umowy
Wywoływanie funkcji kontraktowych
Przenieś środki z jednego konta na drugie
Przelej środki na konto kontraktowe
Aktualizacja inteligentnej umowy HelloSol
Utwórz skrypt, aby wyświetlić saldo konta
Dodaj wywołanie funkcji getBalance do skryptu call_contract_get_promise.js
Doładowujemy konto smart kontraktu
Podsumowanie lekcji

Lekcja 7. Wprowadzenie do trufliInstalacja Trufli
Utwórz projekt HelloSol
Tworzenie katalogu projektu i plików
Katalog umów
Migracje katalogów
Test katalogu
plik trufle-config.js
Kompilowanie kontraktu HelloSol
Zacznij publikować umowę
Wywoływanie funkcji kontraktu HelloSol w podpowiedzi Trufla
Wywoływanie funkcji kontraktu HelloSol ze skryptu JavaScript działającego w Node.js
Instalowanie modułu kontraktu truflowego
Wywołanie funkcji kontraktu getValue i getString
Wywoływanie funkcji kontraktowych setValue i setString
Modyfikacja umowy i ponowna publikacja
Praca z wersją Web3 1.0.x
Wprowadzanie zmian w inteligentnej umowie HelloSol
Skrypty wywołujące metody kontraktowe
Testowanie w Trufli
Próba solidności
Test JavaScriptu
Podsumowanie lekcji

Lekcja 8. Typy danych solidnościKontrakt na naukę typów danych
Boolowskie typy danych
Liczby całkowite bez znaku i liczby całkowite ze znakiem
Numery punktów stałych
adres
Zmienne typów złożonych
Tablice o stałym rozmiarze
Tablice dynamiczne
Przenosić
Struktury
Mapowanie słowników
Podsumowanie lekcji

Lekcja 9. Migracja kontraktów do sieci prywatnej i do sieci RinkebyPublikacja kontraktu od Truffle do prywatnej sieci Geth
Przygotowanie węzła sieci prywatnej
Przygotowanie umowy o pracę
Kompilacja i migracja umowy do sieci Truffle
Rozpoczęcie migracji sieci lokalnej geth
Zdobywanie artefaktów trufli
Publikacja kontraktu od Truffle w sieci testowej Rinkeby
Przygotowanie węzła Geth do współpracy z Rinkeby
Synchronizacja węzłów
Dodawanie kont
Doładowanie konta Rinkeby za pomocą eteru
Rozpoczęcie migracji kontraktów do sieci Rinkeby
Przeglądanie informacji o umowie w sieci Rinkeby
Konsola Truffle dla sieci Rinkeby
Łatwiejszy sposób wywoływania funkcji kontraktowych
Wywoływanie metod kontraktu przy użyciu Node.js
Przelewaj środki pomiędzy kontami w konsoli Truffle dla Rinkby
Podsumowanie lekcji

Lekcja 10. Zdecentralizowane przechowywanie danych w roju EthereumJak działa Ethereum Swarm?
Instalacja i uruchomienie Swarma
Operacje na plikach i katalogach
Przesyłanie pliku do roju Ethereum
Odczytywanie pliku z roju Ethereum
Wyświetl manifest przesłanego pliku
Ładowanie katalogów z podkatalogami
Odczyt pliku z pobranego katalogu
Korzystanie z publicznej bramy roju
Dostęp do Swarm ze skryptów Node.js
Moduł Perl Net::Ethereum::Swarm
Instalowanie modułu Net::Ethereum::Swarm
Zapis i odczyt danych
Podsumowanie lekcji

Lekcja 11. Framework Web3.py do pracy z Ethereum w PythonieInstalowanie Web3.py
Aktualizacja i instalacja niezbędnych pakietów
Instalowanie modułu easysolc
Publikacja umowy przy użyciu Web3.py
Kompilacja kontraktu
Łączenie się z dostawcą
Wykonaj publikację umowy
Zapisanie adresu umowy i abi w pliku
Uruchomienie skryptu publikacji kontraktu
Wywoływanie metod kontraktowych
Odczyt adresu i abi umowy z pliku JSON
Łączenie się z dostawcą
Tworzenie obiektu umowy
Wywoływanie metod kontraktowych
Trufla i Web3.py
Podsumowanie lekcji

Lekcja 12. WyrocznieCzy inteligentny kontrakt może ufać danym ze świata zewnętrznego?
Wyrocznie jako pośrednicy informacji w technologii blockchain
Źródło danych
Kod reprezentujący dane ze źródła
Oracle do rejestrowania kursu wymiany w blockchainie
Kontrakt USDRateOracle
Aktualizacja kursu waluty w inteligentnym kontrakcie
Korzystanie z dostawcy gniazd internetowych
Oczekiwanie na zdarzenie RateUpdate
Obsługa zdarzenia RateUpdate
Zainicjowanie aktualizacji danych w inteligentnym kontrakcie
Podsumowanie lekcji

Źródło: www.habr.com

Dodaj komentarz