Programming Bitcoin to książka techniczna Jimmy’ego Songa z 2019 roku. Wyjaśnia Bitcoin za pomocą biblioteki w Pythonie: części programu przeznaczonych do wielokrotnego użytku, które czytelnik stopniowo tworzy sam. To podręcznik dla osób znających podstawy programowania, nie gotowy portfel.
Korzystanie z aplikacji i rozumienie jej działania to różne umiejętności. Song chce przeprowadzić czytelnika od pierwszej do drugiej: zamiast jedynie opisywać Bitcoin, każe pisać i sprawdzać jego elementy. Celem jest zrozumienie, jak zdobyć potrzebne dane, utworzyć transakcję i przekazać ją sieci. Kwestie monetarne i społeczne pozostawia na boku. [3]
Książka ma 14 rozdziałów, które rozwijają wcześniejsze zagadnienia. Zaczyna od matematyki potrzebnej do pracy z kluczami i podpisami. Następnie wprowadza serializację, czyli przekształcanie danych do ściśle określonego formatu przechowywania i przesyłania, a potem transakcje, bloki i komunikację sieciową. Kolejność ma sens: trudniejsze zadania wykorzystują już napisane elementy. [3]
Rozdziały 1–12 zawierają ćwiczenia. Czytelnik modyfikuje pliki Pythona i za pomocą gotowych testów sprawdza, czy rozwiązanie spełnia wymagania zadania. Notebook Jupyter nie oznacza tu laptopa, lecz dokument roboczy, w którym można uruchamiać kod i od razu zobaczyć wynik. Rozwiązania są w dodatku i repozytorium; chodzi o zrozumienie własnego błędu, nie przepisanie poprawnej odpowiedzi. [3]
Ostatnie ćwiczenie programistyczne łączy wcześniejszą pracę: połączyć się z innym węzłem, ustalić dostępne środki, zbudować i podpisać transakcję, a następnie ją rozesłać. Odbywa się to w testnet, oddzielnej sieci do eksperymentów. Plan nauki autora nie oznacza, że sami wykonaliśmy zadanie lub sprawdziliśmy jego działanie w dzisiejszym środowisku. [3]
Biblioteka używa Python 3. Song zaleca średnio zaawansowaną znajomość języka, ale uważa, że wiele pojęć zrozumie również początkujący programista. W matematyce powinny wystarczyć podstawy algebry; nowe narzędzia pojawiają się stopniowo. Jeśli nigdy nie programowałeś, łatwiej zacząć od podstaw Pythona niż jednocześnie poznawać język i protokół Bitcoin. [3]
W końcowym rozdziale Song podkreśla trudność ochrony kluczy prywatnych. Portfel potrzebuje także zrozumiałej obsługi, kopii zapasowych i historii transakcji. Poprawny wynik testu jednej funkcji nie potwierdza zatem bezpieczeństwa całego programu. Biblioteka służy nauce, nie jest pełną ani zoptymalizowaną implementacją; nie można automatycznie uznać jej za rozwiązanie dla prawdziwych środków. [3] [4]
Autor proponuje własny portfel testowy, eksplorator bloków, sklep internetowy albo bibliotekę pomocniczą. W przypadku sklepu radzi zacząć w testnet i używać bezpiecznych bibliotek kryptograficznych. Inną drogą jest udział w otwartych projektach. To pomysły na dalszą naukę, nie aktualnie zweryfikowana lista usług ani obietnica pracy. [4]
O’Reilly podaje luty 2019 roku, README repozytorium autora — marzec 2019 roku. Zachowujemy rozróżnienie między tymi zapisami. Opis opiera się na danych wydawniczych, całej przedmowie i końcowym rozdziale Advanced Topics and Next Steps. Nie jest recenzją całej książki ani testem dołączonego kodu. Tekst internetowy może się zmieniać; przed użyciem dawnych instrukcji instalacji trzeba porównać je z aktualną dokumentacją. [1] [2] [3] [4]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Private Key, Transakcja, Bitcoin Script, Full Node.
01Czy to książka dla zupełnego początkującego?+
Dla początkującego w programowaniu dla Bitcoina — tak, o ile zna już podstawy programowania. Przedmowa zakłada przede wszystkim znajomość Pythona i matematyki mniej więcej na poziomie algebry. Osoba chcąca najpierw zrozumieć korzystanie z Bitcoina bez pisania kodu znajdzie prostszą drogę w poradnikach wprowadzających.
02Czy po ćwiczeniach mogę powierzyć bibliotece swoje bitcoiny?+
Samo ukończenie ćwiczeń nie wystarcza do takiego wniosku. Autor wyraźnie traktuje bibliotekę jako narzędzie edukacyjne. Bezpieczne operowanie prawdziwymi środkami wymaga znacznie szerszej weryfikacji, w tym ochrony kluczy i odtwarzania z kopii zapasowych; ten opis jej nie zapewnia.