Algorytm konsensusu Leased Proof of Stake i protokół Waves-NG
Sieć Waves funkcjonuje na bazie algorytmu konsensusu, który w przetłumaczyć można jako Dzierżawiony Dowód Stawki (ang. Leased Proof of Stake). W połączeniu z protokołem Waves-NG sieć Waves jest w stanie osiągnąć wysoki stopień skalowalności i przepustowości.
Wprowadzenie
Sieć blockchain
Waves została uruchomiona w 2016 r. po rundzie ICO w której zebranych zostało 30 000 BTC - około 61 mln PLN licząc po kursie na tamtą chwilę. Projekt skupiony jest na opracowaniu kompleksowego ekosystemu blockchain, który służyć będzie w wielu procesach biznesowych i jednocześnie umożliwiać dostęp do szerokiego zestawu narzędzi na różne potrzeby - wliczając w to łatwe tworzenie niestandardowych tokenów (kryptowalut); prostych
smart kontraktów; handel peer-to-peer na wbudowanej w sieć zdecentralizowanej giełdzie (DEX); bezpieczny i wygodny sposób interakcji z
dAppsami i usługami internetowymi przy użyciu wtyczki Waves Keeper do najpopularniejszych przeglądarek internetowych.
Skalowalność
Od samego początku zespół stojący za Waves zdawał sobie sprawę z tego, że skalowalność jest niezbędna do masowej adopcji technologii
blockchain i tym samym priorytetowo potraktował rozwiązanie problemu w postaci ograniczeń występujących w innych sieciach blockchain. Dla przykładu sieć Bitcoin jest bardzo bezpieczna, ale stosunkowo wolna i może obsługiwać tylko około 7 transakcji na sekundę (TPS). W związku z tym
Bitcoin nie jest wystarczająco wydajny, aby mógł być wykorzystywany jako waluta na co dzień dla wszystkich na całym świecie. Aby móc sprostać takim wyzwaniom wymagane jest stworzenie rozwiązań (czyt. aplikacji) tzw. drugiego poziomu, takich jak np.
Lightning Network. Zespół Waves podjął się jednak tego ambitnego zadania z innej strony, najpierw skupiając się na osiągnięciu wysokiej skalowalności w samym łańcuchu (czyt. sieci), aby dopiero później rozważać wdrożenie aplikacji drugiego rzędu.
Dzierżawa (leasing) środków
Na samym początku
algorytm konsensusu Waves był prostą implementacją
Proof of Stake. Wszystkie 100 milionów tokenów WAVES zostało rozdystrybuowanych zaraz po zakończeniu ICO. Podaż WAVES jest stała: nie występuje inflacja, jak ma to miejsce w przypadku kryptowalut wydobywanych w ramach algorytmu
PoW. Opierając się na algorytmie PoS, walidatorzy bloków (ang. block validator; forgers - chociaż są oni zwykle nazywani po prostu „górnikami” - miners) otrzymują opłaty transakcyjne za bloki, które przetworzyli, nie wliczając w to nagrody za blok (jak ma to miejsce np. w przypadku Bitcoina)..
Algorytm LPoS Waves został w pełni uruchomiony już w
maju 2017 r. Dzięki temu użytkownicy korzystający z klienta Waves lite - a więc ci, którzy nie uruchomili pełnego
węzła - zyskali możliwość dzierżawienia swoich tokenów WAVES węzłom górniczym. W momencie wydzierżawienia swoich tokenów WAVES przez użytkownika, zostają one zablokowane na jego koncie i od tego momentu nie ma możliwości handlu nimi ani ich transferu dalej. Mimo to tokeny te dalej pozostają pod pełną kontrolą właściciela konta, a umowę najmu można w każdej chwili anulować. Biorąc pod uwagę techniczne koszty związane z uruchomieniem węzła górniczego i konieczność utrzymywania nieprzerwanego dostępu do sieci Internetu (w trybie 24/7) jedynie stosunkowo niewielka część społeczności Waves decyduje się na uruchomienie węzła (listę generatorów bloków znajdziesz na stronie
https://dev.pywaves.org/generators).
Wydzierżawione tokeny WAVES służą do zwiększenia tzw. Stawki (ang. stake) górników, co z kolei zwiększa ich szanse na znalezienie następnego bloku w sieci. System dzierżawy zwiększa bezpieczeństwo sieci na co najmniej dwa sposoby. Po pierwsze, im więcej WAVES jest wykorzystywanych do zabezpieczenia sieci, tym lepiej, ponieważ atakującemu trudniej będzie zgromadzić tokeny niezbędne do przeprowadzenia
ataku typu 51%. Po drugie, WAVES można wydzierżawić do węzła z tzw. zimnego portfela (a więc portfela pozostającego w trybie offline - bez dostępu do Internetu), przez co węzeł, do którego skierowane są te środki, fizycznie ich nie przechowuje. Znacząco zmniejsza to ryzyko kradzieży tokenów WAVES od górników, ponieważ dzierżawione środki nie są do nich przekazywane.
Nowe podejście do konsensusu: Waves-NG
Jedna z większych aktualizacji w sieci blockchain WAVES miała miejsce w Grudniu 2017 roku, kiedy uruchomiony został protokół Waves-NG. Był to nowy protokół oparty na
propozycji Bitcoin-NG autorstwa profesora IT Cornella
Emina Gün Sirera.
Oryginalnie, protokół Bitcoina w sposób chronologiczny wybiera górników do wykopania następnego bloku. Po dodaniu bloku do łańcucha bloków
górnicy rywalizują ze sobą o znalezienie prawidłowego skrótu (hashu) tego bloku, w oparciu o bieżący stan łańcucha bloków. Tymczasem nowo wygenerowane transakcje trafiają do puli pamięci (mempool), gdzie pozostaną w oczekiwaniu, do momentu aż górnicy się nimi zajmą i je zweryfikują.
Oba protokoły Bitcoin i Bitcoin-NG są uznawane są jako odporne na tzw.
Bizantyjskie Wady (ang. Byzantine Fault Tolerance). Bitcoin-NG został
zaproponowany w 2015 r. jako. alternatywne (i bardziej skalowalne) podejście do tradycyjnego protokołu. W systemie Bitcoin-NG górnik, który zajmie się kolejnym blokiem wybierany jest z wyprzedzeniem. W momencie jego wyboru górnik tworzy również pusty tzw. „key block” - który jest blokiem, który zostanie ostatecznie dodany do łańcucha bloków. Następnie, do tego bloku dodawane są małe bloki zwane „mikroblokami” (składające się z kilku transakcji każdy). Wypełnianie key block transakcjami z microblocks odbywa się w czasie zbliżonym do rzeczywistego. Aby lepiej zrozumieć ten mechanizm posłużmy się przykładem: to tak, jakby stale wkładać torby z zakupami (mikrobloków) do wózka (keyblock), a w momencie kiedy wózek zostanie wypełniony, pojechać z nim do kasy (dodać jego zawartość do łańcucha bloków). Dzięki temu transakcje są transmitowane do sieci blockchain w ciągu zaledwie kilku sekund, a jedynym rzeczywistym opóźnieniem jest opóźnienie samej sieci. Zespół Waves dostosował ten pomysł do swoich potrzeb tworząc protokół Waves-NG - pierwsze wdrożenie Bitcoin-NG w otwartej i publicznej sieci blockchain.
Kolejnym dodatkiem do ekosystemu były tzw.
MassTransfers. Umożliwiają one pakowanie do 100 transferów w ramach jednej transakcji, przy obniżonych opłatach za całość. Limit 100 transakcji na jeden MassTransfer został wybrany jako kompromis między dodaniem znaczącej pojemności takich transakcji oraz wygody, a ograniczeniem możliwości jednoczesnego wysyłania bardzo dużych partii tanich transakcji.
Innymi słowy, MassTransfery stanowią dodatek do tradycyjnych transferów środków, a dzięki nim użytkownicy zyskują możliwość włączenia maksymalnie do 100 odbiorców środków w jednej transakcji. Ponadto adresy odbiorców mogą być dostarczane w formacie JSON lub CSV, dzięki czemu wykonanie dużych Airdropów lub cotygodniowych wypłat staje się proste. Wprowadzenie Waves-NG i funkcjonalności MassTransfer umożliwiło sieci WAVES osiągniecie bardzo wysokiej przepustowości swojej własnej sieci.
Do dnia dzisiejszego w sieci Waves przeprowadzono już szereg tzw. stress testów, aby ocenić potencjał przepustowości nowego protokołu. W październiku 2018 r. przeprowadzony został jeden z
największych stress testów sieci mainnet Waves. W wyniku testu okazało się, że sieć blockchain Waves jest w stanie obsłużyć ponad
6,1 miliona transakcji w ciągu 24 godzin - średnio 4200 transakcji na minutę lub 71 txs na sekundę - przy maksymalnej przepustowości sięgającej setek transakcji na sekundę.
Zakończenie
Algorytm LPOS umożliwia każdemu użytkownikowy sieci Waves pomoc w zabezpieczaniu sieć poprzez wydzierżawienie swoich WAVES do pełnych węzłów bez utraty kontroli nad nimi. W międzyczasie wprowadzenie Waves-NG umożliwiło sieci osiągnąć przepustowość rzędu 100 TPS (transakcji na sekundę - ang. transactions per second), czyli o rząd wielkości większą niż wiele znanych sieci blockchain. Opłaty w sieci WAVES dzięki temu są niskie, ponieważ nie ma potrzeby wypłacania górnikom nagród blokowych, aby zrekompensować im wysokie koszty energii elektrycznej i utrzymanie jak i rozbudowę sprzętu.
Skalowalność łańcucha bloków jest priorytetem dla zespołu Waves, ale istnieją pewne ograniczenia w zakresie, w jakim każda z sieci blockchain może się skalować. Największy wpływ mają na to zasoby pamięci i przepustowość sieci Internet. Zespół Waves uważa, że obecne podejście może zostać zoptymalizowane do obsługi maksymalnie 1000 TPS, zanim potrzebne będzie podjęcie się prac nad rozwojem nowych rozwiązań skalujących. Zespół bada obecnie rozwiązania pozwalające na osiągnięcie jeszcze większej przepustowości sieci w ramach tzw. aplikacji drugiego rzędu - m.in wykorzystując do tego celu łańcuchy boczne, umożliwiając tym samym przetwarzanie dużej liczby transakcji w łańcuchu równoległym, ale ostatecznie zabezpieczonych na głównym łańcuchu bloków sieci Waves.