Używamy cookies, aby ułatwić korzystanie z Portalu. Możesz określić warunki przechowywania, dostępu do plików cookies w Twojej przeglądarce. Dowiedz się więcej.
strona główna Strona główna | Nowości | Promocje | Zapowiedzi Twoje konto | Zarejestruj | Schowek | Kontakt | Pomoc
mapa działów
Szukaj: szukanie zaawansowane
Koszyk
Książki

Ethereum dla zaawansowanych. Tworzenie inteligentnych kontraktów i aplikacji zdecentralizowanych Język: 1

978-83-283-5574-3

Cena Brutto: 79.00

Cena netto: 75.24

Ilość:
Wersja: Drukowana
Autor Andreas M. Antonopoulos, Gavin Wood
Liczba_stron 392
Wydawnictwo Helion
Oprawa miękka
Data_Wydania 2019-09-17

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 Ethereum
  • korzystanie z portfeli cyfrowych
  • interakcje z klientami Ethereum za pomocą wywołań RPC
  • tokeny reprezentujące aktywa, udziały czy głosy
  • budowa zdecentralizowanych aplikacji z użyciem komponentów w modelu P2P


Przedmowa 15

Krótki słownik 25

1. Czym jest Ethereum? 37

  • Porównanie do Bitcoina 37
  • Komponenty łańcucha bloków 38
  • Narodziny Ethereum 39
  • Cztery wersje w rozwoju Ethereum 40
  • Ethereum - łańcuch bloków o ogólnym przeznaczeniu 41
  • Komponenty Ethereum 42
    • Lektura dodatkowa 43
  • Ethereum i kompletność w sensie Turinga 43
    • Kompletność w sensie Turinga jako "pożądana cecha" 44
    • Skutki kompletności w sensie Turinga 44
  • Od łańcuchów bloków ogólnego użytku do aplikacji DApp 45
  • Trzecia era internetu 45
  • Kultura rozwoju Ethereum 46
  • Dlaczego warto poznać Ethereum? 47
  • Czego nauczysz się dzięki tej książce? 47

2. Podstawy Ethereum 49

  • Jednostki waluty ether 49
  • Wybieranie portfela Ethereum 50
  • Kontrola i odpowiedzialność 51
  • Rozpoczynanie pracy z portfelem MetaMask 52
    • Tworzenie portfela 53
    • Zmienianie sieci 55
    • Zdobywanie testowych etherów 56
    • Wysyłanie etherów z portfela MetaMask 58
    • Przeglądanie historii transakcji dla adresu 59
  • Wprowadzenie do światowego komputera 60
  • Konta EOA i konta kontraktów 61
  • Prosty kontrakt - kran z testowymi etherami 61
  • Kompilowanie kontraktu Faucet 64
  • Tworzenie kontraktu w łańcuchu bloków 66
  • Interakcja z kontraktem 67
    • Wyświetlanie adresu kontraktu w eksploratorze bloków 68
    • Zasilanie kontraktu 68
    • Wycofywanie środków z kontraktu 69
  • Podsumowanie 72

3. Klienty Ethereum 73

  • Sieci Ethereum 74
    • Czy powinieneś uruchamiać pełny węzeł? 74
    • Wady i zalety pełnych węzłów 75
    • Wady i zalety publicznych sieci testowych 75
    • Wady i zalety lokalnego symulowania pracy łańcuchów bloków 76
  • Uruchamianie klienta Ethereum 77
    • Wymagania sprzętowe związane z pełnym węzłem 77
    • Wymagania programowe dotyczące budowania i uruchamiania klientów (węzłów) 78
    • Klient Parity 79
    • Klient Go-Ethereum (Geth) 80
  • Pierwsza synchronizacja łańcuchów bloków opartych na Ethereum 82
    • Uruchamianie klienta Geth lub Parity 83
    • Interfejs JSON-RPC 83
  • Zdalne klienty Ethereum 85
    • Portfele mobilne (na smartfony) 86
    • Portfele działające w przeglądarkach 86
  • Podsumowanie 88

4. Kryptografia 89

  • Klucze i adresy 89
  • Kryptografia klucza publicznego a kryptowaluty 90
  • Klucze prywatne 92
    • Generowanie klucza prywatnego na podstawie liczby losowej 92
  • Klucze publiczne 94
    • Kryptografia krzywej eliptycznej 95
    • Operacje arytmetyczne na krzywej eliptycznej 97
    • Generowanie klucza publicznego 98
    • Biblioteki do pracy z krzywą eliptyczną 99
  • Kryptograficzne funkcje skrótu 99
    • Kryptograficzna funkcja skrótu w Ethereum - Keccak-256 101
    • Z której funkcji skrótu korzystasz? 101
  • Adresy Ethereum 102
    • Formaty adresów Ethereum 102
    • Protokół ICAP 103
    • Kodowanie szesnastkowe z sumami kontrolnymi opartymi na wielkości liter (EIP-55) 104
  • Podsumowanie 106

5. Portfele 107

  • Przegląd technologii używanych w portfelach 107
    • Portfele niedeterministyczne (losowe) 108
    • Portfele deterministyczne (z ziarnem) 110
    • Portfele HD (BIP-32 i BIP-44) 110
    • Ziarna i kody mnemoniczne (BIP-39) 110
  • Zalecane praktyki dotyczące portfeli 112
    • Kody mnemoniczne (BIP-39) 112
    • Tworzenie portfela HD na podstawie ziarna 118
    • Portfele HD (BIP-32) i ścieżki (BIP-43/44) 119
  • Podsumowanie 123

6. Transakcje 125

  • Struktura transakcji 125
  • Wartość nonce w transakcji 126
    • Śledzenie wartości nonce 127
    • Luki w wartościach nonce, powtarzające się wartości nonce i zatwierdzanie 129
    • Współbieżność, źródło transakcji i wartości nonce 130
  • Paliwo dla transakcji 131
  • Odbiorca transakcji 132
  • Wartość i dane transakcji 133
    • Przekazywanie środków do kont EOA i kontraktów 135
    • Przekazywanie danych do kont EOA lub kontraktów 135
  • Specjalne transakcje - tworzenie kontraktu 137
  • Podpisy cyfrowe 139
    • Algorytm ECDSA 139
    • Jak działają podpisy cyfrowe? 140
    • Sprawdzanie poprawności podpisu 140
    • Obliczenia w algorytmie ECDSA 141
    • Podpisywanie transakcji w praktyce 142
    • Tworzenie i podpisywanie nieprzetworzonych transakcji 143
    • Tworzenie nieprzetworzonych transakcji zgodnych z EIP-155 143
  • Przedrostek w podpisie (v) i odzyskiwanie klucza publicznego 144
  • Oddzielanie podpisywania od przesyłania (podpisywanie w trybie offline) 145
  • Rozsyłanie transakcji 147
  • Rejestrowanie danych w łańcuchu bloków 147
  • Transakcje z wieloma podpisami 148
  • Podsumowanie 148

7. Inteligentne kontrakty i język Solidity 149

  • Czym jest inteligentny kontrakt? 149
  • Cykl życia inteligentnego kontraktu 150
  • Wprowadzenie do wysokopoziomowych języków w Ethereum 151
  • Tworzenie inteligentnego kontraktu za pomocą Solidity 153
    • Wybieranie wersji języka Solidity 153
    • Pobieranie i instalowanie Solidity 154
    • Środowisko programistyczne 154
    • Pisanie prostego programu w języku Solidity 155
    • Kompilowanie przy użyciu kompilatora Solidity (solc) 155
  • Interfejs ABI kontraktów w Ethereum 155
    • Wybieranie kompilatora Solidity i wersji języka 156
  • Programowanie w języku Solidity 157
    • Typy danych 157
    • Wbudowane zmienne globalne i funkcje 159
    • Definicja kontraktu 161
    • Funkcje 162
    • Konstruktor kontraktu i polecenie selfdestruct 163
    • Dodawanie konstruktora i polecenia selfdestruct do kontraktu Faucet 164
    • Modyfikatory funkcji 165
    • Dziedziczenie kontraktów 166
    • Obsługa błędów (assert, require i revert) 168
    • Zdarzenia 169
    • Wywoływanie innych kontraktów (polecenia send, call, callcode i delegatecall) 172
  • Kwestie związane z paliwem 176
    • Unikanie tablic o dynamicznie określanej wielkości 177
    • Unikanie wywołań innych kontraktów 177
    • Szacowanie kosztów paliwa 177
  • Podsumowanie 178

8. Inteligentne kontrakty i język Vyper 179

  • Luki a Vyper 179
  • Porównanie z Solidity 180
    • Modyfikatory 180
    • Dziedziczenie klas 181
    • Wewnątrzwierszowe stosowanie asemblera 181
    • Przeciążanie funkcji 182
    • Rzutowanie typów zmiennych 182
    • Warunki wstępne i końcowe 183
  • Dekoratory 184
  • Kolejność funkcji i zmiennych 184
  • Kompilacja 185
  • Ochrona przed błędami przepełnienia na poziomie kompilatora 186
  • Odczyt i zapis danych 186
  • Podsumowanie 187

9. Bezpieczeństwo inteligentnych kontraktów 189

  • Zalecane praktyki z zakresu bezpieczeństwa 189
  • Zagrożenia z obszaru bezpieczeństwa i antywzorce 190
  • Wielobieżność 190
    • Praktyczny przykład - The DAO 194
  • Przepełnienie i niedopełnienie arytmetyczne 194
    • Przykłady praktyczne - PoWHC i przepełnienie przy transferze zbiorczym (CVE-2018-10299) 198
  • Nieoczekiwane ethery 198
    • Więcej przykładów 202
  • DELEGATECALL 202
    • Praktyczny przykład - portfel Parity z wielopodpisem (drugi atak) 206
  • Domyślne poziomy widoczności 207
    • Praktyczny przykład - portfel Parity z wielopodpisem (pierwszy atak) 208
  • Złudzenie losowości 209
    • Praktyczny przykład - kontrakty z generatorami liczb pseudolosowych 210
  • Korzystanie z zewnętrznych kontraktów 210
    • Praktyczny przykład - przynęta i wielobieżność 214
  • Atak związany z krótkimi adresami i parametrami 215
  • Niesprawdzanie wartości zwracanych przez funkcję call 217
    • Przykład praktyczny - kontrakty Etherpot i King of the Ether 218
  • Sytuacje wyścigu i front running 219
    • Praktyczne przykłady - ERC20 i Bancor 221
  • Ataki DoS 221
    • Praktyczny przykład - GovernMental 223
  • Manipulowanie znacznikiem czasu bloku 224
    • Praktyczny przykład - GovernMental 225
  • Ostrożnie z konstruktorami 225
    • Praktyczny przykład - Rubixi 226
  • Niezainicjowane wskaźniki do pamięci trwałej 226
    • Praktyczne przykłady - przynęty OpenAddressLottery i CryptoRoulette 228
  • Liczby zmiennoprzecinkowe i precyzja 229
    • Praktyczny przykład - Ethstick 230
  • Uwierzytelnianie z użyciem zmiennej tx.origin 230
  • Kontrakty bibliotek 232
  • Podsumowanie 233

10. Tokeny 235

  • W jaki sposób tokeny są używane? 235
  • Tokeny i wymienność 237
  • Ryzyko związane z drugą stroną transakcji 237
  • Tokeny i nieodłączność (wewnętrzność) 237
  • Używanie tokenów - narzędzia czy aktywa 238
    • To kaczka! 239
    • Tokeny narzędziowe - komu są potrzebne? 239
  • Tokeny w Ethereum 240
    • Standard ERC20 241
    • Tworzenie własnego tokenu ERC20 244
    • Problemy z tokenami ERC20 254
    • ERC223 - proponowany standard interfejsu kontraktów tokenów 255
    • ERC777 - proponowany standard interfejsu kontraktów tokenów 256
    • ERC721 - standard niewymiennych tokenów 258
  • Stosowanie standardów związanych z tokenami 260
    • Czym są standardy dotyczące tokenów? Do czego służą? 260
    • Czy powinieneś stosować opisane standardy? 260
    • Bezpieczeństwo dzięki dojrzałości 261
  • Rozszerzenia standardów dotyczących interfejsów tokenów 261
  • Tokeny i emisje ICO 262
  • Podsumowanie 263

11. Wyrocznie 265

  • Dlaczego potrzebne są wyrocznie? 265
  • Przypadki użycia wyroczni i przykłady 266
  • Wzorce projektowe dotyczące wyroczni 267
  • Uwierzytelnianie danych 270
  • Wyrocznie obliczeniowe 271
  • Zdecentralizowane wyrocznie 272
  • Interfejsy klientów wyroczni w języku Solidity 273
  • Podsumowanie 277

12. Zdecentralizowane aplikacje (DApp) 279

  • Czym jest aplikacja DApp? 280
    • Back-end (inteligentny kontrakt) 281
    • Front-end (internetowy interfejs użytkownika) 281
    • Przechowywanie danych 282
    • Zdecentralizowane protokoły przekazywania komunikatów 282
  • Prosta przykładowa aplikacja DApp - Auction 283
    • Aplikacja Auction - inteligentne kontrakty back-endu 284
    • Aplikacja Auction - front-endowy interfejs użytkownika 287
  • Dalsze decentralizowanie aplikacji Auction 288
  • Zapisywanie aplikacji Auction w systemie Swarm 289
    • Przygotowywanie systemu Swarm 289
    • Przesyłanie plików do systemu Swarm 290
  • Usługa Ethereum Name Service (ENS) 292
    • Historia usługi ENS 292
    • Specyfikacja usługi ENS 292
    • Dolna warstwa - właściciele nazw i resolwery 293
    • Warstwa pośrednia - węzły .eth 295
    • Najwyższa warstwa - tokeny deed 296
    • Rejestrowanie nazwy 297
    • Zarządzanie nazwą w usłudze ENS 300
    • Resolwery w usłudze ENS 301
    • Tłumaczenie nazwy na skrót w systemie Swarm (treść) 302
  • Od tradycyjnych aplikacji do aplikacji DApp 303
  • Podsumowanie 304

13. Maszyna wirtualna Ethereum 305

  • Czym jest maszyna EVM? 305
    • Porównanie z istniejącymi technologiami 307
    • Zbiór instrukcji maszyny EVM (operacje w kodzie bajtowym) 307
    • Stan w Ethereum 310
    • Kompilowanie kodu w języku Solidity do kodu bajtowego maszyny EVM 311
    • Kod do instalowania kontraktu 314
    • Dezasemblacja kodu bajtowego 315
  • Kompletność w sensie Turinga a paliwo 319
  • Paliwo 320
    • Obliczanie zużycia paliwa w trakcie wykonywania kodu 320
    • Uwagi związane z obliczaniem zużycia paliwa 321
    • Zużycie paliwa a cena paliwa 321
    • Limit paliwa dla bloku 322
  • Podsumowanie 323

14. Konsensus 325

  • Konsensus oparty na dowodach pracy 326
  • Osiąganie konsensusu na podstawie dowodów stawki 326
  • Ethash - algorytm dowodów pracy w Ethereum 327
  • Casper - algorytm dowodów stawki dla Ethereum 328
  • Reguły osiągania konsensusu 329
  • Kontrowersje i konkurencja 329
  • Podsumowanie 330

A. Historia forków w Ethereum 331

B. Standardy używane w Ethereum 339

C. Kody operacji i zużycie paliwa w maszynie EVM w Ethereum 347

D. Narzędzia programistyczne, platformy i biblioteki 355

E. Biblioteka web3.js - samouczek 373

F. Krótkie odsyłacze 377

Skorowidz 379

powrót
 
Produkty Podobne
The Definitive Guide to Supply Management and Procurement
Certified Ethical Hacker (CEH) Version 10 Cert Guide, 3rd Edition
Exam Ref MD-101 Managing Modern Desktops
Programowanie w języku Kotlin. The Big Nerd Ranch Guide
Algorytmy Data Science. Siedmiodniowy przewodnik. Wydanie II
UXUI. Design Zoptymalizowany. Manual Book
UXUI. Design Zoptymalizowany. Workshop Book
Vue.js 2. Wprowadzenie dla profesjonalistów
VBA dla Excela 2019 PL. 234 praktyczne przykłady
Ciągłe dostarczanie oprogramowania w języku Java. Najlepsze narzędzia i praktyki wdrażania kodu
Więcej produktów