Bitcoin - dla jednych finansowe marzenie, dla innych niebezpieczny półświatek cyberprzestępców. Dla nas, programistów, nowy segment do zagospodarowania. Przecież w czymś te krypto-waluty muszą być napisane. Czym są? Czym jest blockchain? Jak można nad nim pracować i przede wszystkim zarabiać?
Wszystko zaczęło się pod koniec lat 90-tych. W 1998 roku developer Wei Dai opisał koncepcję krypto-waluty. Trzy lata wcześniej chiński programista stworzył Crypto++. Były to open-source'owe biblioteki C++ kryptograficznych algorytmów i schematów. Jego biblioteki były popularne szczególnie na uczelniach, projektach studenckich. Takie były początki, ale prawdziwy przełom nastąpił w 10 lat później.
W 2008 roku powstała koncepcja bitcoina w obecnej formie. 31 października tamtego roku autor skrywający się pod pseudonimem Satoshi Nakamoto opublikował swój własny manifest, w którym wyjaśnił zasady działania tej krypto-waluty. Pod koniec 2010 roku Nakamoto odszedł z projektu informując społeczność, że ma inne priorytety. Nigdy nie ujawnił swoje tożsamości.
Na początku następnego roku powstał blockchain z pierwszym blokiem nazwanym "genesis". 9. stycznia powstał pierwsza wersja klienta (0.1). Trzy dni później przeprowadzono dziewiczą transakcję. W tym samym roku pierwszy raz ustalono kurs wymiany BTC na USD. Jeden amerykański dolar kosztował 1309 bitcoinów. Za 10 tysięcy można było kupić pizzę. Dopiero na początku 2011 roku BTC dorównał wartością dolarowi. Od tamtego czasu rozwój tej waluty wystrzelił. W 2013 roku wartość jednego bitcoina osiągnęła poziom 1000 dolarów. Dzisiaj najbardziej znana krypto-waluta jest warta już około 6500 dolarów za jeden BTC. Kto zdołał zainwestować kilka lat temu w tę walutę, dziś powinien być znacznie bogatszy.
Jak działa blockchain
Technologia blockchain, czyli łańcuch bloków służy do przechowywania i przesyłania informacji o transakcjach zawartych w internecie. Łańcuch ułożony jest w postaci następujących po sobie bloków danych. Wygląda to nieco podobnie do zasady naczyń połączonych. Jeśli zapełnisz jedno naczynie, wylewający się z niego płyn zacznie napełniać inny. Tak też jest z blockchainem: pojedynczy blok zawiera określoną liczbę transakcji, po jego zapełnieniu informacjami tworzy się następny, a za nim kolejny, i jeszcze jeden, itd.
Blockchain działa jak kreatywna księgowa. Esencją tej technologii jest utrzymanie wspólnej i zbiorowej księgi rachunkowej rozproszonej po całej sieci w takich samych kopiach. Technologia ta używa sieci peer-to-peer bez centralnych komputerów, systemów zarządzających i weryfikujących transakcje. Księga jest otwarta dla wszystkich hostów, ale w pełni zabezpieczona narzędziami kryptograficznymi. Każdy użytkownik ma wgląd jedynie w swoje transakcje.
Blockchain może być stosowany w wielu relacjach. Począwszy od handlu, przez waluty, akcje, aż po rynek energii elektrycznej. Obecnie trwają prace nad wykorzystaniem tej technologii do obsługi bankowości, systemu uwierzytelniania dokumentów, zapisu notarialnego i cyfrowego podpisu.
Łańcuchy bloków są bezpieczne przez swoją wielkość. Transakcje w łańcuchu raz zapisane nie są odwracalne. Próbując złamać jeden blok, trzeba złamać następny i następny i następny... Szacuje się, że do złamania technologii potrzeba mocy obliczeniowej równej co najmniej połowie urządzeń podłączonych do internetu. Technologia jest też odporna na fałszerstwa. Łańcuchy odkrywają nieprawidłowość i nie uwzględniają ich w zapisie. Przyszłość stoi więc otworem przed blockchain.
Blockchain dla programistów
Technologia ta od kilku lat budzi duże zainteresowanie w świecie IT. Pojawiają się nowe oferty pracy dla blockchain developer, czy blockchain engineer. Więc praca dla programisty jest.
Tak naprawdę bitcoin to w gruncie rzeczy protokół, do którego aplikacje możesz napisać w dowolnym języku. Satoshi napisał oryginalnego klienta, zwanego "Bitcoin Core" w C++. Zdarzają się implementacje innych walut pisane w Ruby, Javascript i Go.
Nic więc dziwnego, ze wielu developerów chciałoby spróbować programowania zdecentralizowanych aplikacji (dApps). Przemawiają za tym pieniądze obecne w technologii, rynek ciągle w niewielkim stopniu zagospodarowany, oferty pracy IT, zwyczajna ciekawość i możliwość rozszerzenia swoich programistycznych horyzontów. No i hasło: "blockchain" stało się zwyczajnie modne.
Najpopularniejszym językiem do próbowania swoich sił w dApps jest JavaScript z biblioteką web3.js (zbiór bibliotek pozwalających na interakcję z ethereum node). To rozwiązanie ma też największe wsparcie i można znaleźć w sieci wiele tutoriali, informacji i pomocy innych developerów. Ponadto JavaScripts są interpretowane po stronie klienta, co jest kluczowe przy bezpieczeństwie technologii łańcuchów blokowych. Jako programista, powinieneś dbać o zapewnienie niezbędnej ochrony.
Tak naprawdę samo tworzenie aplikacji przez developerów niewiele się różni od pisania webowych. W dużym uproszczeniu jedyną różnicą jest fakt posiadania bezpiecznej bazy danych, która przetrzyma wszystkie informacje w nieskończoność.
Programowanie w blockchain ma też jednak wady. Przede wszystkim w webdevelopmencie jako programista możesz popełniać błędy i je naprawiać podczas funkcjonowania aplikacji. W łańcuchach blokowych nie jest to możliwe. Podobnie jak saper, mylisz się tylko raz. Jeśli popełnisz błąd, cała aplikacja będzie do wyrzucenia. Podstawą są przede wszystkim testy. Przydaje się wtedy znajomość Ethereum i Truffle'a. Narzędzia te pozwalają na testowanie technologii blokowych bez konieczności płacenia za transakcje realnymi pieniędzmi.
W webowych aplikacjach migracja danych zwykle jest płynna i dość łatwa. W przypadku blockchain nie jest to takie proste. Raz zapisanych danych nie można zmienić, aktualizować, czy nadpisać. Jako developer nie masz na to wpływu. Można jedynie zmienić je na nowe. Twoje informacje są więc rozsiane po całej sieci, dzięki czemu nie musisz gromadzić baz danych w jednym centralnym miejscu. Przez to też nie będziesz w stanie przenieść danych w inną lokalizację, bo nie zdołasz ich wszystkich zgromadzić. Decentralizacja ma więc swoje ogromne zalety, ale też wady.
Blockchain (nie) dla wszystkich
Jeśli więc chcesz zajmować się technologią łańcuchów blokowych, świat stoi przed tobą otworem. Pamiętaj jednak, że nie zawsze aplikacje bez zcentralizowanej bazy danych są lepsze od "zwykłych" aplikacji webowych. Ponadto w tym środowisku tak naprawdę nie ma ekspertów, których wiedzą i doświadczeniem możesz się kierować. Nie ma takich ludzi, bo środowisko jest jeszcze młode. Jeśli chciałbyś zostać jednym z pionierów w nowej dziedzinie IT, blockchain może być dla ciebie. Technologia ta ma przed sobą obiecującą przyszłość i może przynieść korzyści również ludziom, których nie stać na bitcoiny. Łańcuchy blokowe mogą na przykład ulepszyć i naprawić pomoc humanitarną dla krajów trzeciego świata. Prawdopodobnie nie dostaniesz za to Nobla, ale może warto się nad tym zastanowić. Niezależnie od tego, jakie są twoje pobudki: praca dla programisty, pieniądze, czy chęć wpływu na zmiany na świecie, warto dać szansę technologii blockchain.