Ethereum dla zaawansowanych. Tworzenie inteligentnych kontraktów i aplikacji zdecentralizowanych

47,39

Opis

Ethereum dla zaawansowanych. Tworzenie inteligentnych kontraktów i aplikacji zdecentralizowanych

Ethereum to platforma służąca do obsługi kryptowalut. Została zaprojektowana z zachowaniem wysokich standardów bezpieczeństwa i transparentności. Umożliwia uruchamianie zdecentralizowanych aplikacji (DApp) i inteligentnych kontraktów, które nie mają scentralizowanej kontroli ani pojedynczego punktu podatności na awarie i są zintegrowane z siecią obsługi płatności oraz operują na otwartym łańcuchu bloków. Ethereum cieszy się dużym zainteresowaniem takich organizacji jak IBM, Microsoft, NASDAQ, które coraz bardziej angażują się w korzystanie z tej platformy.Ta książka jest praktycznym poradnikiem i encyklopedycznym źródłem wiedzy o Ethereum przeznaczonym dla programistów, którzy chcą przyswoić praktyczną wiedzę o łańcuchach bloków oraz tworzeniu inteligentnych kontraktów i zdecentralizowanych aplikacji – DApp. Znalazły się tu zarówno podstawowe informacje, jak i szereg zaawansowanych zagadnień związanych z Ethereum. Opisano, w jaki sposób tworzy się w nim transakcje, przedstawiono kwestie związane z kluczem publicznym, skrótami i podpisami cyfrowymi. Poszczególne zagadnienia, a także najlepsze praktyki, wzorce projektowe i antywzorce z obszaru bezpieczeństwa uzupełniono starannie opracowanymi przykładami kodu.W tej książce między innymi:uruchamianie klienta Ethereumkorzystanie z portfeli cyfrowychinterakcje z klientami Ethereum za pomocą wywołań RPCtokeny reprezentujące aktywa, udziały czy głosybudowa zdecentralizowanych aplikacji z użyciem komponentów w modelu P2PEthereum: oto nowy wymiar innowacji w programowaniu!Spis treści:Przedmowa 15Krótki słownik 251. Czym jest Ethereum? 37Porównanie do Bitcoina 37Komponenty łańcucha bloków 38Narodziny Ethereum 39Cztery wersje w rozwoju Ethereum 40Ethereum – łańcuch bloków o ogólnym przeznaczeniu 41Komponenty Ethereum 42Lektura dodatkowa 43Ethereum i kompletność w sensie Turinga 43Kompletność w sensie Turinga jako „pożądana cecha” 44Skutki kompletności w sensie Turinga 44Od łańcuchów bloków ogólnego użytku do aplikacji DApp 45Trzecia era internetu 45Kultura rozwoju Ethereum 46Dlaczego warto poznać Ethereum? 47Czego nauczysz się dzięki tej książce? 472. Podstawy Ethereum 49Jednostki waluty ether 49Wybieranie portfela Ethereum 50Kontrola i odpowiedzialność 51Rozpoczynanie pracy z portfelem MetaMask 52Tworzenie portfela 53Zmienianie sieci 55Zdobywanie testowych etherów 56Wysyłanie etherów z portfela MetaMask 58Przeglądanie historii transakcji dla adresu 59Wprowadzenie do światowego komputera 60Konta EOA i konta kontraktów 61Prosty kontrakt – kran z testowymi etherami 61Kompilowanie kontraktu Faucet 64Tworzenie kontraktu w łańcuchu bloków 66Interakcja z kontraktem 67Wyświetlanie adresu kontraktu w eksploratorze bloków 68Zasilanie kontraktu 68Wycofywanie środków z kontraktu 69Podsumowanie 723. Klienty Ethereum 73Sieci Ethereum 74Czy powinieneś uruchamiać pełny węzeł? 74Wady i zalety pełnych węzłów 75Wady i zalety publicznych sieci testowych 75Wady i zalety lokalnego symulowania pracy łańcuchów bloków 76Uruchamianie klienta Ethereum 77Wymagania sprzętowe związane z pełnym węzłem 77Wymagania programowe dotyczące budowania i uruchamiania klientów (węzłów) 78Klient Parity 79Klient Go-Ethereum (Geth) 80Pierwsza synchronizacja łańcuchów bloków opartych na Ethereum 82Uruchamianie klienta Geth lub Parity 83Interfejs JSON-RPC 83Zdalne klienty Ethereum 85Portfele mobilne (na smartfony) 86Portfele działające w przeglądarkach 86Podsumowanie 884. Kryptografia 89Klucze i adresy 89Kryptografia klucza publicznego a kryptowaluty 90Klucze prywatne 92Generowanie klucza prywatnego na podstawie liczby losowej 92Klucze publiczne 94Kryptografia krzywej eliptycznej 95Operacje arytmetyczne na krzywej eliptycznej 97Generowanie klucza publicznego 98Biblioteki do pracy z krzywą eliptyczną 99Kryptograficzne funkcje skrótu 99Kryptograficzna funkcja skrótu w Ethereum – Keccak-256 101Z której funkcji skrótu korzystasz? 101Adresy Ethereum 102Formaty adresów Ethereum 102Protokół ICAP 103Kodowanie szesnastkowe z sumami kontrolnymi opartymi na wielkości liter (EIP-55) 104Podsumowanie 1065. Portfele 107Przegląd technologii używanych w portfelach 107Portfele niedeterministyczne (losowe) 108Portfele deterministyczne (z ziarnem) 110Portfele HD (BIP-32 i BIP-44) 110Ziarna i kody mnemoniczne (BIP-39) 110Zalecane praktyki dotyczące portfeli 112Kody mnemoniczne (BIP-39) 112Tworzenie portfela HD na podstawie ziarna 118Portfele HD (BIP-32) i ścieżki (BIP-43/44) 119Podsumowanie 1236. Transakcje 125Struktura transakcji 125Wartość nonce w transakcji 126Śledzenie wartości nonce 127Luki w wartościach nonce, powtarzające się wartości nonce i zatwierdzanie 129Współbieżność, źródło transakcji i wartości nonce 130Paliwo dla transakcji 131Odbiorca transakcji 132Wartość i dane transakcji 133Przekazywanie środków do kont EOA i kontraktów 135Przekazywanie danych do kont EOA lub kontraktów 135Specjalne transakcje – tworzenie kontraktu 137Podpisy cyfrowe 139Algorytm ECDSA 139Jak działają podpisy cyfrowe? 140Sprawdzanie poprawności podpisu 140Obliczenia w algorytmie ECDSA 141Podpisywanie transakcji w praktyce 142Tworzenie i podpisywanie nieprzetworzonych transakcji 143Tworzenie nieprzetworzonych transakcji zgodnych z EIP-155 143Przedrostek w podpisie (v) i odzyskiwanie klucza publicznego 144Oddzielanie podpisywania od przesyłania (podpisywanie w trybie offline) 145Rozsyłanie transakcji 147Rejestrowanie danych w łańcuchu bloków 147Transakcje z wieloma podpisami 148Podsumowanie 1487. Inteligentne kontrakty i język Solidity 149Czym jest inteligentny kontrakt? 149Cykl życia inteligentnego kontraktu 150Wprowadzenie do wysokopoziomowych języków w Ethereum 151Tworzenie inteligentnego kontraktu za pomocą Solidity 153Wybieranie wersji języka Solidity 153Pobieranie i instalowanie Solidity 154Środowisko programistyczne 154Pisanie prostego programu w języku Solidity 155Kompilowanie przy użyciu kompilatora Solidity (solc) 155Interfejs ABI kontraktów w Ethereum 155Wybieranie kompilatora Solidity i wersji języka 156Programowanie w języku Solidity 157Typy danych 157Wbudowane zmienne globalne i funkcje 159Definicja kontraktu 161Funkcje 162Konstruktor kontraktu i polecenie selfdestruct 163Dodawanie konstruktora i polecenia selfdestruct do kontraktu Faucet 164Modyfikatory funkcji 165Dziedziczenie kontraktów 166Obsługa błędów (assert, require i revert) 168Zdarzenia 169Wywoływanie innych kontraktów (polecenia send, call, callcode i delegatecall) 172Kwestie związane z paliwem 176Unikanie tablic o dynamicznie określanej wielkości 177Unikanie wywołań innych kontraktów 177Szacowanie kosztów paliwa 177Podsumowanie 1788. Inteligentne kontrakty i język Vyper 179Luki a Vyper 179Porównanie z Solidity 180Modyfikatory 180Dziedziczenie klas 181Wewnątrzwierszowe stosowanie asemblera 181Przeciążanie funkcji 182Rzutowanie typów zmiennych 182Warunki wstępne i końcowe 183Dekoratory 184Kolejność funkcji i zmiennych 184Kompilacja 185Ochrona przed błędami przepełnienia na poziomie kompilatora 186Odczyt i zapis danych 186Podsumowanie 1879. Bezpieczeństwo inteligentnych kontraktów 189Zalecane praktyki z zakresu bezpieczeństwa 189Zagrożenia z obszaru bezpieczeństwa i antywzorce 190Wielobieżność 190Praktyczny przykład – The DAO 194Przepełnienie i niedopełnienie arytmetyczne 194Przykłady praktyczne – PoWHC i przepełnienie przy transferze zbiorczym (CVE-2018-10299) 198Nieoczekiwane ethery 198Więcej przykładów 202DELEGATECALL 202Praktyczny przykład – portfel Parity z wielopodpisem (drugi atak) 206Domyślne poziomy widoczności 207Praktyczny przykład – portfel Parity z wielopodpisem (pierwszy atak) 208Złudzenie losowości 209Praktyczny przykład – kontrakty z generatorami liczb pseudolosowych 210Korzystanie z zewnętrznych kontraktów 210Praktyczny przykład – przynęta i wielobieżność 214Atak związany z krótkimi adresami i parametrami 215Niesprawdzanie wartości zwracanych przez funkcję call 217Przykład praktyczny – kontrakty Etherpot i King of the Ether 218Sytuacje wyścigu i front running 219Praktyczne przykłady – ERC20 i Bancor 221Ataki DoS 221Praktyczny przykład – GovernMental 223Manipulowanie znacznikiem czasu bloku 224Praktyczny przykład – GovernMental 225Ostrożnie z konstruktorami 225Praktyczny przykład – Rubixi 226Niezainicjowane wskaźniki do pamięci trwałej 226Praktyczne przykłady – przynęty OpenAddressLottery i CryptoRoulette 228Liczby zmiennoprzecinkowe i precyzja 229Praktyczny przykład – Ethstick 230Uwierzytelnianie z użyciem zmiennej tx.origin 230Kontrakty bibliotek 232Podsumowanie 23310. Tokeny 235W jaki sposób tokeny są używane? 235Tokeny i wymienność 237Ryzyko związane z drugą stroną transakcji 237Tokeny i nieodłączność (wewnętrzność) 237Używanie tokenów – narzędzia czy aktywa 238To kaczka! 239Tokeny narzędziowe – komu są potrzebne? 239Tokeny w Ethereum 240Standard ERC20 241Tworzenie własnego tokenu ERC20 244Problemy z tokenami ERC20 254ERC223 – proponowany standard interfejsu kontraktów tokenów 255ERC777 – proponowany standard interfejsu kontraktów tokenów 256ERC721 – standard niewymiennych tokenów 258Stosowanie standardów związanych z tokenami 260Czym są standardy dotyczące tokenów? Do czego służą? 260Czy powinieneś stosować opisane standardy? 260Bezpieczeństwo dzięki dojrzałości 261Rozszerzenia standardów dotyczących interfejsów tokenów 261Tokeny i emisje ICO 262Podsumowanie 26311. Wyrocznie 265Dlaczego potrzebne są wyrocznie? 265Przypadki użycia wyroczni i przykłady 266Wzorce projektowe dotyczące wyroczni 267Uwierzytelnianie danych 270Wyrocznie obliczeniowe 271Zdecentralizowane wyrocznie 272Interfejsy klientów wyroczni w języku Solidity 273Podsumowanie 27712. Zdecentralizowane aplikacje (DApp) 279Czym jest aplikacja DApp? 280Back-end (inteligentny kontrakt) 281Front-end (internetowy interfejs użytkownika) 281Przechowywanie danych 282Zdecentralizowane protokoły przekazywania komunikatów 282Prosta przykładowa aplikacja DApp – Auction 283Aplikacja Auction – inteligentne kontrakty back-endu 284Aplikacja Auction – front-endowy interfejs użytkownika 287Dalsze decentralizowanie aplikacji Auction 288Zapisywanie aplikacji Auction w systemie Swarm 289Przygotowywanie systemu Swarm 289Przesyłanie plików do systemu Swarm 290Usługa Ethereum Name Service (ENS) 292Historia usługi ENS 292Specyfikacja usługi ENS 292Dolna warstwa – właściciele nazw i resolwery 293Warstwa pośrednia – węzły .eth 295Najwyższa warstwa – tokeny deed 296Rejestrowanie nazwy 297Zarządzanie nazwą w usłudze ENS 300Resolwery w usłudze ENS 301Tłumaczenie nazwy na skrót w systemie Swarm (treść) 302Od tradycyjnych aplikacji do aplikacji DApp 303Podsumowanie 30413. Maszyna wirtualna Ethereum 305Czym jest maszyna EVM? 305Porównanie z istniejącymi technologiami 307Zbiór instrukcji maszyny EVM (operacje w kodzie bajtowym) 307Stan w Ethereum 310Kompilowanie kodu w języku Solidity do kodu bajtowego maszyny EVM 311Kod do instalowania kontraktu 314Dezasemblacja kodu bajtowego 315Kompletność w sensie Turinga a paliwo 319Paliwo 320Obliczanie zużycia paliwa w trakcie wykonywania kodu 320Uwagi związane z obliczaniem zużycia paliwa 321Zużycie paliwa a cena paliwa 321Limit paliwa dla bloku 322Podsumowanie 32314. Konsensus 325Konsensus oparty na dowodach pracy 326Osiąganie konsensusu na podstawie dowodów stawki 326Ethash – algorytm dowodów pracy w Ethereum 327Casper – algorytm dowodów stawki dla Ethereum 328Reguły osiągania konsensusu 329Kontrowersje i konkurencja 329Podsumowanie 330A. Historia forków w Ethereum 331B. Standardy używane w Ethereum 339C. Kody operacji i zużycie paliwa w maszynie EVM w Ethereum 347D. Narzędzia programistyczne, platformy i biblioteki 355E. Biblioteka web3.js – samouczek 373F. Krótkie odsyłacze 377Skorowidz 379

: Podręczniki szkolne

budynek h wsb wrocław, jak otworzyć firmę, tymek jezyk tekst, posrednictwo finansowe, iwanowice, ux studia, godzina filozofów chomikuj, światowy tydzień przedsiębiorczości 2019, sex korepetycje, tworzenie stron www gorzów, chęć współpracy wzór, olimpiada fizyczna 2018, kursy psychologiczne z certyfikatem, logomed opole, teb piotrków, czachówek, zabrze kino roma, napisze czy napiszę, praca serbski, apple dla studentów

yyyyy