Moim poprzednim artykułem otworzyłem serię na temat Algorand, więc jeśli ta platforma jest Ci nowa, to polecam zacząć od lektury Algorand 1.0 – Wprowadzenie. Natomiast w tym artykule rozwijam dalej temat, przechodząc do nowych funkcjonalności, które zespół Algorand wprowadził do protokołu pod koniec 2019r.
Aktualizacja głównej platformy Algorand była dla mnie dość dużym zaskoczeniem. Z dwóch powodów:
- Jestem pod wrażeniem tempa rozwoju Algorand: w maju 2019 została uruchomiona ich główna sieć (mainnet), natomiast już w listopadzie 2019 dostarczyli 3 nowe, duże funkcjonalności, wypuszczając Algorand 2.0. Zespołowi Algorand zajęło to mniej niż 6 miesięcy.
- Poziom technicznego zaawansowania i innowacji, które wprowadza Algorand 2.0 w mojej opinii jest bardzo znaczący vs. Algorand 1.0.
Spróbujmy więc to przetrawić, krok po kroku.
Algorand 2.0 dodaje trzy nowe, kluczowe funkcjonalności:
- Standardowe Aktywa Algorand (Algorand Standard Assets), będące standardem, umożliwiającym tworzenie i wydawanie nowych tokenów, na bazie platformy Algorand. Nic nowego? Nie całkiem, są one wbudowane w Warstwę-1. Implikacje są znaczące.
- Inteligentne kontrakty na Warstwie-1 (oraz niekompletny w sensie Turinga język skryptowy TEAL). Czyż nie zaskakujące jest to, że zdobywca nagrody Turing’a decyduje się zbudować język nie kompletny w ujęciu Turinga? W rzeczy samej.
- Transfery atomowe (Atomic Transfers), bezpieczny transfer aktywów, wbudowany również w warstwę-1. Nie należy jednak mylić ich z Atomic Swaps, znanymi z innych platform, tu również mówimy o implementacji na najniższej warstwie protokołu.
Nowa wersja Algorand robi duży krok na przód vs poprzednik, adresując niektóre z moich wcześniejszych obaw opisanych w moich innych analizach tej platformy.W tym artykule omówię niuanse Algorand 2.0 i postaram się odpowiedzieć na pytanie: czy uważam, że to duża zmiana.
Algorand Standard Assets (ASA)
ASA zapewnia ustandaryzowany mechanizm, aby na Warstwie-1 można było zapisywać i przechowywać dowolny rodzaj cyfrowych zasobów.
Przykłady:
- Fungible Assets: takie jak waluty, tokeny użytkowe, czy też stablecoiny,
- Non-Fungible Assets: takie jak nieruchomości, artefakty w grach komputerowych, bilety, dzieła sztuki,
- Papiery wartościowe, akcje, certyfikaty, itp.
Implementacja tego typu podejścia na warstwie-1, to moim zdaniem unikalne i innowacyjne podejście, które gwarantuje, że wszelkie operacje dokonywane na tych assetach są:
- Szybkie i Bezpieczne, zachowując ten sam poziom bezpieczeństwa co natywne Algos, będąc tak bezpieczne jak podstawowy protokół konsensusu i tak szybkie, jak transakcje w warstwie 1.
- Kompatybilne, jeśli dana aplikacja wspiera określony zasób Algorand, to będzie automatycznie obsługiwać wszystkie zasoby Algorand ASA, dzięki swojej uniwersalnej interoperacyjności.
- Gwarantują łatwość użycia, są w stanie stworzyć zasób za pomocą jednej transakcji!
Standard tokenów ERC-20 w Ethereum zmienił całą branżę kilka lat temu, ale minęło już trochę czasu 🙂 Uważam, że ASA mogą mieć podobny wpływ na sposób myślenia o konstrukcji rozwiązań, jeśli nie większy, kiedy zaczną być szeroko stosowane.
Smart Kontrakty na Warsawie-1 (ASC1)
Naturalnie myślimy, że inteligentne kontrakty są rozwiązaniami Warstwy-2, bo inne platformy nas do takiego myślenia przyzwyczaiły, ale Algorand łamie tą zasadę, poprzez wprowadzenie smart kontraktów na bazowej warstwie i zapewnienia, że możemy się tam posługiwać prostym językiem TEAL.
Algorand wierzy, że języki kompletne w sensie Turinga nie są konieczne dla większości przypadków użycia blockchaina. Kompletne języki Turinga wprowadzają dodatkową warstwę dla potencjalnych ataków i dodatkowo eskalują problemy z wydajnością. Rzućmy okiem na liczby:
- Ostatnio Naukowcy z Uniwersytetu w Niemczech przeglądnęli ponad 53 000 obecnie wdrożonych inteligentnych kontraktów, pod kątem ich bezpieczeństwa.
- Odkryli, że większość obecnie wdrożonych inteligentnych kontraktów NIE potrzebuje kompletnych języków Turinga, a często może być napisana w oparciu o prostsze reguły.
- Spośród 53 tys. przeanalizowanych inteligentnych kontraktów tylko 7% z nich wykorzystało mechanizm kontroli przepływu (pętla „while”), który zwykle wymaga pełnego języka programowania (w rozumieniu Turinga).
- Dodatkowo jest wysoce prawdopodobne, że niektóre z tych „7 procent” inteligentnych kontraktów mogłoby być zaprogramowane bez pętli WHILE i mogłyby być zastąpione funkcjami UTXO.
- Przeczytaj więcej tutaj => Do Smart Contract Languages Need to be Turing Complete?
Zespół Algorand dostarcza zestaw szablonów dla inteligentnych kontraktów, co czyni programowanie ASC1 płynnym i łatwym, ponadto możesz również zbudować własne inteligentne kontrakty od podstaw.
Wraz z ASC1 Algorand stworzył swój własny język programowania, nazwany TEAL (Transaction Execution Approval Language), który właśnie jest nie kompletny w ujęciu Turinga. Zważywszy, że Silvio Micali jest laureatem nagrody Turinga, można było by się zastanawiać, czy taka konstrukcja języka jest świadoma, oraz czy jest to zaleta czy wada?
Przyjrzyjmy się więc tematowi bliżej.
Istnieje 16 udokumentowanych wektorów ataku, które są bezpośrednio związane z Turing’owo kompletnymi smart kontraktami. Wymieńmy kilka:
- sławny DAO Hack, był możliwy właśnie dzięki furtce, którą zostawiał kompletny Turing’owo język Solidity.
- Constantinopole upgarde, również stanowił zagrożenie ze względu na swoje turing-complete funkcje, które posiada Solidity (w rezultacie został opóźniony).
- Solidity, nie daje możliwości aby dokładnie oszacować koszty transakcji ani czas zatrzymania procesu i wykonania, co czasami jest wykorzystywane przez złych aktorów.
Mając to na uwadze, język TEAL autorstwa Algorand może być niezłym wyborem, bo zapewnia większą przewidywalność i bezpieczeństwo, jednocześnie prostotę (łatwość pisania i debugowania). Dodatkowo poprawia czas wykonania programów, czyni je bardziej determinicznymi, zapobiegając logice rekurencyjnej (maksymalizując bezpieczeństwo i wydajność).
Możliwe przypadki użycia?
- Rachunki powiernicze,
- Crowd-funding,
- Giełdy scentralizowane i zdecentralizowane.
Algorand obecnie pracuje nad pełnym wsparciem dla wszystkich SDKs i buduje szablony dla typowych przypadków użycia w oparciu o TEAL, które pomogą deweloperom zacząć szybko programować. Już spora część tej pracy jest gotowa (Java, Java Script, Go, Python, .NET niebawem).
Oczywiście istnieją przypadki użycia, które będą wymagały bardziej złożonej logiki w porównaniu z tym, co może zapewnić ASC1, więc na roadmapie dla Algorand są również zaplanowane prace nad smart contracts w warstwie-2, które będą dawać funkcjonalność kompletną w sensie Turinga, a zatem szersze możliwości wykorzystania.
Atomic Transfers
Atomic transfers są trzecią funkcjonalnością dostępną wraz z Algorand 2.0. Są one bezpiecznym sposobem na przesyłanie wielu zasobów pomiędzy stronami (nie należy mylić ich z innymi znanymi rozwiązaniami Atomic Swap). Jaka jest różnica?
Atomic Transfers pozwalają na to aby grupy transakcji były zatwierdzane w tym samym czasie – bądź wcale.
Jak to działa?
1. Poszczególne transakcje są tworzone.
2. Następnie transakcje są grupowane w paczkę.
3. Każdy transfer jest podpisywany indywidualnie przez inicjatora transferu.
4. Paczka jest zgłaszana do sieci blockchain, a węzły zatwierdzają wszystkie transakcje z danej paczki za jednym zamachem.
5. Jeśli jedna z tych transakcji nie uda się, to wszystkie transakcje są automatycznie odrzucane – więc wszystkie transakcję zostają zatwierdzone albo żadna z nich.
To eliminuje potrzebę dla użycia hashed time-locks (blokady czasowe) jak to ma miejsce w wypadku atomic swaps, na innych platformach typu blockchain, jak również ogranicza opóźnienia związane z hashed time-locks.
Nie ma tutaj potrzeby aby polegać na czasowym blokowaniu kontraktów. Oznacza to płynne i szybkie podejście do Atomic Trasnfers.
Dodatkowa korzyść: ponieważ te operacje są wykonywane na Warstwie-1, to są one bezpieczniejsze, niż gdyby były wykonane na Warstwie-2.
Atomic Transfers pozwalają na aplikacje takie jak:
– Transakcje zależne: A płaci B, jeśli B płaci C, a B zapłaci C jeśli C płaci A.
– Płatności grupowe: albo wszyscy płacą, albo nikt.
– Wymianę bez zaufanych pośredników.
– Płatności do wielu adresatów równocześnie.
Prosty przykład użycia: Można sobie wyobrazić, że w ten sposób realizujemy sprzedaż stokenizowanej nieruchomości, gdzie w jednej paczce przesyłane są dokumenty potwierdzające własność, opłata za nieruchomość, oraz na przykład opłaty urzędowe.
Refleksja..
Obserwując szybkość rozwoju głównego protokołu Algorand oraz dodatkowych funkcjonalności, które pojawiają się na ich blockchainie, wydaje się, że Algorand podąża w innym kierunku niż większość projektów naśladujących Ethereum. To chyba dobrze. Wciąż uważam, że Ethereum jest głównym graczem w tej przestrzeni (efekt sieci), a nowe projekty muszą wyjść z propozycją jakiejś unikalnej wartości, aby móc konkurować z Ethereum. Zwiększenie przepustowości sieci poprzez poświęcenie decentralizacji (co czyni wielu graczy) jest krótkowzroczne i większość z takich rozwiązań naśladujących Ethereum, z dużą pewnością przestanie się liczyć za kilka lat (albo skończy jako droga baza danych, albo wyczerpie środki na stymulację ekosystemu), dlatego wierzę, że platformy, które nie idą na skróty, mają szansę zbudować solidny fundament i przetrwać kilka następnych dekad.
Niniejszym cieszę się, że Algorand wnosi do gry nowe podejście i nie idzie na kompromisy, jeśli chodzi o adresowanie trylematu blockchaina (decentralizacja / szybkość / bezpieczeństwo). Myślę, że to w długiej perspektywie okaże się właściwa droga.
Tym bardziej optymistycznie patrzę w przyszłość, że na roadmapie Algorand jest jeszcze sporo innowacji. W kolejnym wpisie omówię ich podejście do interoperacyjności i łańcuchów prywatnych (co-chains). Poniżej zamieszczam również zwiastun, tego nad czym zespół ciągle jeszcze pracuje – wspominam o tym w zalinkowanym materiale video.
Zapnijcie pasy, będzie się działo 🙂