Blockchain

Przewodnik blockchain development – języki programowania i sieci

Blockchain to technologia, o której dużo się teraz mówi, ale wchodząc w nią głębiej, szybko odkryjemy, że nie wystarczy po prostu “robić blockchain”. Istnieje tu bowiem mnóstwo ekosystemów, rodzajów tech stacków i języków programowania, które przydają się na konkretnych sieciach. Jeśli zastanawiacie się, jak wejść w ten świat, przybliżamy.

Mateusz Raczyński

Choć blockchainy coraz częściej komunikują się ze sobą, technicznie to osobne wyspy, na których panują inne zasady i które programuje się innymi językami. Są więc takie, które mają niższy próg wejścia dla programisty, jak i te stworzone z użyciem nowych języków, które miały służyć konkretnym potrzebom, ale wymagają też co najmniej paru miesięcy nauki.

Blockchain to dla programistów nowe, ciekawe wyzwania, które nie są trywialne do zrozumienia, ale mając trochę czasu i chęci, spokojnie można zacząć pisać własny kod. Praca z blockchainem to też nie zawsze smart kontrakty, a częściej tworzenie aplikacji, które korzystają z API konkretnych łańcuchów i kryptowalut. 

Jeśli czujesz, że w tematach, którymi zajmujesz się na co dzień, nie uczysz się już tak dużo, jak kiedyś, blockchain jest na pewno dobrym wyborem, żeby dalej się rozwijać. Liczba programistów blockchainowych stale przybywa, ale nadal jest to bardzo niszowa specjalizacja. W 2021 roku na całym świecie było około 26 milionów programistów. Blockchainem zajmuje się aktualnie zaledwie 18 tysięcy z nich – tyle osób każdego miesiąca jest aktywnych w repozytoriach projektów blockchainowych – a więc sporo poniżej 1 proc.

Spójrzmy więc na sieci, które są obecnie najpopularniejsze wśród developerów i języki, których wymagają. 

ZOBACZ TEŻ:  Blockchain Security Researcher to taki uczciwy haker, który znajduje dziury w systemie, nim zrobią to atakujący. Wywiad z Pawłem Rejkowiczem

Jakich języków używa się w blockchainach?

Wykres - blockchainŹródło: Electric Capital

Ethereum – Solidity

ok. 4000 programistów

Ojcem kryptowalut jest Bitcoin, ale matką wszystkich zdecentralizowanych aplikacji jest raczej stworzone w 2015 roku Ethereum. To Ethereum jest najpopularniejszą platformą do smart contractów, DeFi i większości zastosowań blockchainu.

5 lat w technologii to sporo  i Ethereum słabo zniosło próbę czasu pod względem skalowalności samej technologii, a koszty transakcji sprawiają, że używanie ETH ma sens tylko przy większych kwotach. Twórcy pracują nad wdrożeniem nowych mechanizmów, które mają je znacznie usprawnić, choć termin tzw. Merge, po którym Ethereum przejdzie z konsensusu PoW na PoS (Proof of Stake) wciąż się opóźnia. Ethereum jest jednak ogromnie popularne wśród twórców aplikacji i programistów, ma dużą społeczność, jest mocno zdecentralizowane, dzięki czemu bezpieczne, a dostęp do materiałów do nauki jest naprawdę spory.

Ethereum programuje się z wykorzystaniem Solidity, czyli języka stworzonego specjalnie do obsługi EVM (Ethereum Virtual Machine). Solidity bywa całkiem słusznie krytykowane za poziom skomplikowania przy audytach. Nie jest trudno się go nauczyć, ale z uwagi na kompletność Turinga, ciężko dotrzeć do wszystkich potencjalnych i oczywistych błędów.

Solidity będzie dość znajome dla obecnych web developerów, ale z uwagi na wspomniane problemy, trzeba być naprawdę doświadczonym programistą, żeby działać na odpowiednio wysokim poziomie. Wiele osób, które twierdzą, że znają Solidity, niestety sobie z nim nie radzi, a w świecie crypto kwestie związane z bezpieczeństwem są ogromnie ważne, ponieważ działamy na aktywach, które mają swoją–często niemałą wartość finansową.

Polygon – Solidity

ok. 350 programistów

Polygon to tzw. layer 2 w kontekście Ethereum. Cały koncept L2 polega na tym, by korzystać z głównej sieci (L1, w tym przypadku Ethereum) tylko w razie konieczności. Polygon jest znacznie szybszy od Ethereum i ma znacznie tańsze transakcje. Jednocześnie korzysta z EVM i “wpina się” w Ethereum, korzystając z jego zdecentralizowania. Polygon korzysta też z zupełnie innego protokołu konsensusu – nie trzeba go “kopać”, jak w Bitcoinie i Ethereum z Proof of Work, a zamiast tego sieć operuje na Proof of Stake (PoS), który jest utrzymywany przez walidatorów i osoby, które wykonują tzw. staking – przekazują swoje tokeny walidatorom. W systemach PoS tworzenie nowych bloków zależne jest od ilości tokenów kontrolowanych przez walidatorów, a nie mocy obliczeniowej/energii jak w PoW.

Polygona można więc wykorzystać do tworzenia dokładnie tych samych aplikacji, co Ethereum, ale skorzystamy z bardziej nowoczesnego zaplecza. Podam przykład–na Ethereum, wykonanie 100 płatności po $100 kosztowałoby $3000. To 30% samych kosztów transakcji, które traci na znaczeniu, dopiero kiedy operujemy na dużych kwotach. Tę samą transakcję możemy przeprowadzić, konwertując całą kwotę z ETH na token Polygona, MATIC, wykonać wszystkie 100 operacji na Polygonie, a następnie wrócić do ETH. W ten sposób zapłacimy zwykłe transaction fee tylko za wykonanie smart kontraktu konwertującego ETH na MATIC i znowu na ETH, czyli 2x około $30 (zależy od ruchu na sieci). Koszty na MATIC to $0.01 za transakcję. Widzicie różnicę?

Za popularność Polygona odpowiada też dostępność technologii dla programistów Solidity. W końcu oba blockchainy korzystają z tego samego języka i są kompatybilne z EVM.

Algorand – TEAL, Python

ok. 200 programistów

Algorand powstał w odpowiedzi na wszystkie wspomniane problemy Ethereum. Ma znacznie większą przepustowość, ok. 1000 transakcji na sekundę (TPS) kontra ok. 15 TPS na Ethereum; koszty wykonania operacji są znikome, kosztują 0.001 ALGO, czyli obecnie około $0.0007.

Algorand zasłynął z unikalnej architektury stworzonej przez Silvio Micaliego z MIT – jednego z ojców nowoczesnej kryptografii, który zdobył prestiżową nagrodę Turinga. Wspomnieliśmy już czym są systemy PoS, ale Algorand korzysta z wariacji zwanej Pure Proof of Stake. Cała różnica polega na tym, że w PoS, jeśli walidatorzy są stali i nie jest ich wystarczająco dużo, pojawia się zagrożenie współpracy czy przekupienia większości walidatorów w celu weryfikowania niepoprawnych transakcji (51% attack). W ten sposób można by np. dodać do bloku transakcję, która wyczyści Twoje konto, zanim prawidłowa operacja zostanie wykonana lub sprawić, że transakcja zostanie wykonana podwójnie (Double Spend Attack). Algorand jest zabezpieczony przed takimi atakami poprzez–wbudowane w konsensus–niejawne i losowe wybieranie walidatorów, którzy wezmą udział w tworzeniu nowego bloku.

Algorand rozwiązał też problem Solidity, wprowadzając język TEAL, który obsługuje Algorand Virtual Machine (AVM), alternatywę EVM. TEAL nie jest zupełny w sensie Turinga i jest przez to łatwo audytowalny. Programista może łatwo prześledzić kod i zrozumieć jego wynik.

TEAL jest językiem niskopoziomowym podobnym do asemblera. Dzięki temu kod wykonywany na Algorandzie jest bardzo szybki, ale próg wejścia może być wysoki. Na szczęście istnieje też biblioteka PyTEAL, która pozwala obsługiwać AVM za pomocą Pythona – a tego nikomu przedstawiać nie trzeba 🙂

Ulam Labs zostało w zasadzie zbudowane na Pythonie, więc wdrożenie w Algoranda i PyTEAL było dla większości z nas bardzo naturalne. Nadal trzeba zrozumieć specyfikę tego blockchainu, ale dla dobrego Pythonowca nie jest to duża przeszkoda. Być może też dlatego w 2021 roku liczba developerów aktywnych na Algorandzie potroiła się.

Solana – Rust

ok. 900 programistów

Solana jest obecnie jednym z najgorętszych blockchainów, który przyciąga rzesze firm i programistów. Za sukcesem Solany stoi marketing na światowym poziomie i technologia – Solana jest aktualnie najszybszym blockchainem. Jeśli Ethereum obsługuje 15 TPS, a Algorand 1,000 TPS, Solana może osiągać nawet 50,000 TPS. Transakcje potwierdzane są w zaledwie kilka sekund.

Unikalnym elementem Solany jest–a jakże–konsensus. Solana korzysta z czegoś, co przypomina Proof of Stake, ale nazywa się Proof of History. PoH korzysta ze zmiennej czasu i wpisuje w bloki dowód, że od poprzedniego bloku upłynęła określona ilość czasu. W przeciwieństwie do innych blockchainów, PoH sprawia, że komputery utrzymujące sieć (walidatorzy) nie muszą się ciągle komunikować, żeby ustalić wspólny przebieg czasu. Prędkość Solany wynika też więc z możliwości uruchamiania smart kontraktów przez walidatorów równolegle, w tym samym czasie, ponieważ ostatecznie czas i kolejność będą znane. 

Jak twierdzą jej twórcy, prędkość tej sieci jest ograniczona tylko przez dostępny hardware, więc jeśli na rynku pojawią się np. jeszcze szybsze karty graficzne, Solana jeszcze przyspieszy. Oczywiście, żadna technologia nie jest idealna – Solana miewa problemy z nadmiernym obciążeniem i przestaje w tym czasie działać. Na razie zdarzyło się to raptem kilka razy, ale problem nie został jeszcze rozwiązany.

Solana ma też specyficzne smart kontrakty, których nie tworzy się do obsługi wirtualnej maszyny, a które pisze się bezpośrednio w łańcuchu w niskopoziomowym Rust. To znaczy, że każdy program trzeba pisać od podstaw i wymaga więcej pracy. Rust jest jednak dobrze znany wielu programistom, więc oni będą mieć ułatwione zadanie.

Dalsza część artykułu znajduje się na kolejnej stronie.

Zapraszamy do dyskusji

Patronujemy

 
 
More Stories
Lista filmów o programowaniu. Prasówka Technologiczna: 23.11.2019 r.