Ethereum dla zaawansowanych. Tworzenie inteligentnych kontraktów i aplikacji zdecentralizowanych - Helion
Tytuł oryginału: Mastering Ethereum: Building Smart Contracts and Dapps
ISBN: 978-83-283-5575-0
Format: ebook
Data wydania: 2019-06-01
Księgarnia: Helion
Cena książki: 47,40 zł (poprzednio: 79,00 zł)
Oszczędzasz: 40% (-31,60 zł)
Osoby które kupowały "Ethereum dla zaawansowanych. Tworzenie inteligentnych kontraktów i aplikacji zdecentralizowanych", wybierały także:
- Cisco CCNA 200-301. Kurs video. Administrowanie bezpieczeństwem sieci. Część 3 665,00 zł, (39,90 zł -94%)
- Cisco CCNA 200-301. Kurs video. Administrowanie urządzeniami Cisco. Część 2 665,00 zł, (39,90 zł -94%)
- Cisco CCNA 200-301. Kurs video. Podstawy sieci komputerowych i konfiguracji. Część 1 665,00 zł, (39,90 zł -94%)
- Impact of P2P and Free Distribution on Book Sales 427,14 zł, (29,90 zł -93%)
- Cisco CCNP Enterprise 350-401 ENCOR. Kurs video. Programowanie i automatyzacja sieci 443,33 zł, (39,90 zł -91%)
Spis treści
Ethereum dla zaawansowanych. Tworzenie inteligentnych kontraktów i aplikacji zdecentralizowanych eBook -- spis treści
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