Bitcoin. Wszystko, co musisz wiedzieć o programowaniu z użyciem otwartego łańcucha bloków - ebook
Bitcoin. Wszystko, co musisz wiedzieć o programowaniu z użyciem otwartego łańcucha bloków - ebook
W świecie finansów nic nie wywołało takiego poruszenia jak pojawienie się bitcoina. Wprowadzony w 2009 roku, stał się pierwszą zdecentralizowaną cyfrową walutą, co położyło podwaliny pod rynek wart miliardy dolarów. Dodatkowo ujawnił potencjał technologii blockchain, która stanowi fundament kryptowalut. Ogrom możliwości, jakie oferuje bitcoin, sprawia, że znajduje on zastosowanie w licznych branżach. Aby móc w pełni korzystać z jego zalet, należy dokładnie zrozumieć zasady, na których się opiera.
To podstawowe źródło technicznej wiedzy o bitcoinie. Żadna inna pozycja nie jest tak wyczerpująca ani aktualna!
Olaoluwa Osuntokun, Lightning Labs
To trzecie, uzupełnione i zaktualizowane wydanie cenionego przewodnika dla każdego, kto chce dołączyć do świata bitcoina, zwanego "internetem pieniędzy". Znajdziesz tu wszelkie kluczowe informacje, podane w jasny, zrozumiały sposób i poparte rzeczywistymi przykładami. Dołączone fragmenty kodu świetnie ilustrują kluczowe koncepcje. To wydanie zawiera mnóstwo najnowszych informacji, w tym opis struktury transakcji, MAST, P2C, wielopodpisów bezskryptowych, a także mechanizmów Taproot i Tapscript. Dzięki lekturze zrozumiesz też tematykę bloków kompaktowych, łańcucha bloków signet, BIP8 i szybkich rozpraw.
W książce:
- solidne podstawy bitcoina i łańcucha bloków
- techniczne aspekty bitcoina i waluty kryptograficznej
- sieć bitcoina, architektura P2P, cykl życia transakcji i kwestie bezpieczeństwa
- najnowsze rozwiązania, w tym Taproot, Tapscript, podpisy Schnorra
- opis nowych, zaawansowanych zastosowań bitcoina
Zrozum, co się dzieje "pod maską" bitcoina i jak współdziałają poszczególne elementy tej technologii!
Mark "Murch" Erhardt, Chaincode Labs
Spis treści
Przedmowa
1. Wprowadzenie
- Historia bitcoina
- Pierwsze kroki
- Wybór portfela bitcoina
- Szybkie wprowadzenie
- Kody odzyskiwania
- Adresy bitcoin
- Otrzymywanie bitcoinów
- Pozyskiwanie pierwszego bitcoina
- Określanie aktualnej ceny bitcoinów
- Przesyłanie i otrzymywanie bitcoinów
- Potwierdzenia
2. Jak działają bitcoiny?
- Omówienie bitcoinów
- Zakup w sklepie internetowym
- Transakcje w bitcoinach
- Wejścia i wyjścia w transakcjach
- Łańcuchy transakcji
- Wydawanie reszty
- Wybór monet
- Typowe formy transakcji
- Tworzenie transakcji
- Wybór odpowiednich wejść
- Generowanie wyjść
- Dodawanie transakcji do łańcucha bloków
- Kopanie bitcoinów
- Wydawanie środków z transakcji
3. Bitcoin Core - implementacja wzorcowa
- Od bitcoina do Bitcoin Core
- Środowisko programistyczne związane z bitcoinami
- Budowanie implementacji Bitcoin Core z użyciem kodu źródłowego
- Wybór wersji implementacji Bitcoin Core
- Konfigurowanie budowania implementacji Bitcoin Core
- Budowanie plików wykonywalnych implementacji Bitcoin Core
- Uruchamianie węzła z implementacją Bitcoin Core
- Konfigurowanie węzła z implementacją Bitcoin Core
- Interfejs API oprogramowania Bitcoin Core
- Pobieranie informacji na temat stanu Bitcoin Core
- Sprawdzanie i dekodowanie transakcji
- Badanie bloków
- Używanie programowego interfejsu oprogramowania Bitcoin Core
- Inne klienty, biblioteki i pakiety narzędzi
- C i C++
- JavaScript
- Java
- Python
- Go
- Rust
- Scala
- C#
4. Klucze i adresy
- Kryptografia z użyciem klucza publicznego
- Klucze prywatne
- Objaśnienie kryptografii z użyciem krzywej eliptycznej
- Klucze publiczne
- Skrypty wyjściowe i wejściowe
- Adresy IP: pierwotne adresy bitcoin (P2PK)
- Tradycyjne adresy na użytek P2PKH
- Kodowanie Base58Check
- Skompresowane klucze publiczne
- Tradycyjne adresy P2SH
- Adresy Bech32
- Problemy z adresami bech32
- Bech32m
- Formaty kluczy prywatnych
- Skompresowane klucze prywatne
- Zaawansowane postacie kluczy i adresów
- Adresy vanity
- Portfele papierowe
5. Odzyskiwanie portfela
- Niezależne generowanie kluczy
- Deterministyczne generowanie kluczy
- Generowanie publicznego klucza podrzędnego
- Hierarchiczne detereministyczne (HD) generowanie kluczy (BIP32)
- Ziarna i kody odzyskiwania
- Kopie zapasowe danych innych niż klucze
- Kopie zapasowe ścieżek generowania kluczy
- Technologie obsługi portfeli
- Kody odzyskiwania BIP39
- Tworzenie portfela HD na podstawie ziarna
- Używanie rozszerzonego klucza publicznego w sklepie internetowym
6. Transakcje
- Zserializowana transakcja bitcoina
- Wersja
- Rozszerzony znacznik i flaga
- Wejścia
- Długość listy wejść transakcji
- Punkt wyjścia
- Skrypt wejściowy
- Sekwencja
- Wyjścia
- Liczba wyjść
- Kwota
- Skrypty wyjściowe
- Struktura poświadczeń
- Okrężne zależności
- Plastyczność transakcji powodowana przez strony trzecie
- Plastyczność transakcji powodowana przez stronę drugą
- Segregated Witness
- Serializacja struktury poświadczenia
- Czas blokady
- Transakcje coinbase
- Waga i jednostka vbyte
- Serializacja tradycyjna
7. Autoryzacja i uwierzytelnianie
- Skrypty transakcji i język Script
- Niekompletność w sensie Turinga
- Weryfikacja bezstanowa
- Tworzenie skryptów
- Skrypt P2PKH
- Wielopodpisy skryptowe
- Transakcje P2SH
- Adresy P2SH
- Zalety stosowania P2SH
- Skrypt wypłaty i sprawdzanie poprawności
- Wyjścia rejestrujące dane (z operatorem OP_RETURN)
- Ograniczenia czasu blokady transakcji
- Weryfikacja blokady czasowej (OP_CLTV)
- Względne blokady czasowe
- Względne blokady czasowe z operatorem OP_CLV
- Skrypty z przepływem sterowania (klauzule warunkowe)
- Klauzule warunkowe z kodami operacji VERIFY
- Przepływ sterowania w skryptach
- Przykładowy złożony skrypt
- Przykładowe wyjścia i transakcje Segregated Witness
- Przejście na Segregated Witness
- MAST (Merklized Alternative Script Tree)
- Transakcje P2C (pay to contract)
- Wielopodpisy bezskryptowe i podpisy progowe
- Taproot
- Tapscript
8. Podpisy cyfrowe
- Jak działają podpisy cyfrowe?
- Tworzenie podpisu cyfrowego
- Sprawdzanie poprawności podpisu
- Typy skrótów podpisów (SIGHASH)
- Podpisy Schnorra
- Serializowanie podpisów Schnorra
- Wielopodpisy bezskryptowe oparte na algorytmie Schnorra
- Bezskryptowe podpisy progowe oparte na algorytmie Schnorra
- Podpisy ECDSA
- Algorytm ECDSA
- Serializowanie podpisów ECDSA (do formatu DER)
- Znaczenie losowości w podpisach
- Nowy algorytm podpisywania w Segregated Witness
9. Opłaty transakcyjne
- Kto uiszcza opłaty transakcyjne?
- Opłaty i stawki opłat
- Szacowanie odpowiednich stawek opłat
- Podwyższanie opłat metodą RBF (Replace By Fee)
- Podwyższanie opłat metodą CPFP (Child Pays for Parent)
- Sztafeta pakietów
- Przygniatanie transakcji
- Wykrawanie CPFP i wyjścia kotwiczne
- Dodawanie opłat do transakcji
- Blokada czasowa jako obrona przed celowaniem w opłaty
10. Sieć bitcoina
- Typy i role węzłów
- Sieć
- Przekazywanie bloków kompaktowych
- Prywatne sieci przekazywania bloków
- Wykrywanie sieci
- Kompletne węzły
- Przesyłanie "zawartości magazynu"
- Klienty lekkie
- Filtry Blooma
- Jak działają filtry Blooma?
- W jaki sposób klienty lekkie używają filtrów Blooma?
- Kompaktowe filtry bloków
- Kodowane zbiory Golomba-Rice'a (GCS)
- Jakie dane dołącza się do filtra bloków?
- Pobieranie filtrów bloków od wielu węzłów
- Ograniczanie zużycia pasma przez kodowanie stratne
- Używanie kompaktowych filtrów bloków
- Klienty lekkie a prywatność
- Połączenia szyfrowane i uwierzytelniane
- Pule pamięciowe i pule transakcji osieroconych
11. Łańcuch bloków
- Struktura bloku
- Nagłówek bloku
- Identyfikatory bloku - skrót nagłówka bloku i wysokość bloku
- Blok początkowy
- Łączenie bloków w łańcuchu
- Drzewa skrótów
- Drzewa skrótów i klienty lekkie
- Testowe łańcuchy bloków bitcoina
- Testnet - poligon doświadczalny bitcoina
- Signet - testnet z dowodem autorytetu
- Regtest - lokalny łańcuch bloków
- Używanie testowych łańcuchów bloków w trakcie prac programistycznych
12. Kopanie i konsensus
- Ekonomia i podaż pieniądza w systemie bitcoina
- Zdecentralizowane osiąganie konsensusu
- Niezależne sprawdzanie poprawności transakcji
- Węzły służące do kopania
- Transakcja coinbase
- Nagrody i opłaty w transakcji coinbase
- Struktura transakcji coinbase
- Dane coinbase
- Tworzenie nagłówka bloku
- Wykopywanie bloku
- Algorytm Proof-of-Work
- Reprezentacja celu
- Dostosowywanie trudności przez zmianę celu
- Mediana przeszłego czasu (MTP)
- Udane wykopanie bloku
- Sprawdzanie poprawności nowego bloku
- Łączenie bloków i wybieranie łańcuchów
- Kopanie i loteria haszowania
- Rozwiązanie z użyciem dodatkowej wartości nonce
- Kopalnie
- Ataki związane z tempem haszowania
- Zmienianie reguł osiągania konsensusu
- Twarde rozgałęzienia
- Miękkie rozgałęzienia
- Krytyka miękkich rozgałęzień
- Rozwój oprogramowania zgodnie z konsensusem
13. Bezpieczeństwo bitcoina
- Zasady bezpieczeństwa
- Bezpieczny rozwój systemów bitcoina
- Źródło zaufania
- Dobre praktyki z obszaru zabezpieczeń dla użytkowników
- Fizyczne przechowywanie bitcoinów
- Urządzenia podpisujące
- Gwarantowanie dostępu
- Dywersyfikacja ryzyka
- Wielopodpis i zarządzanie
- Zachowanie dostępu
14. Rozwiązania warstwy drugiej
- Cegiełki (podstawowe mechanizmy)
- Rozwiązania oparte na cegiełkach
- Colored coins
- Pieczęcie jednokrotnego użytku
- Płatności na kontrakt (P2C)
- Sprawdzanie poprawności po stronie klienta
- RGB
- Taproot Assets
- Kanały płatności i kanały stanowe
- Kanały stanowe - podstawowe zagadnienia i terminologia
- Prosty przykładowy kanał płatności
- Tworzenie kanałów niewymagających zaufania
- Asymetryczne odwoływalne zobowiązania
- Kontrakty HTLC
- Kanały płatności z trasowaniem (Lightning Network)
- Prosty przykład działania sieci Lightning Network
- Przesył i trasowanie w sieci Lightning Network
- Korzyści ze stosowania sieci Lightning Network
A. Artykuł Satoshiego Nakamoto na temat bitcoina
B. Errata do artykułu na temat bitcoina
C. Dokumenty BIP
Kategoria: | Bankowość i Finanse |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-289-1565-7 |
Rozmiar pliku: | 6,4 MB |