Proof of Capacity (PoC) oraz Proof of Space

Polska nazwa: Dowód Miejsca. Jest to rozwiązanie bardzo podobne do PoW, również wykorzystujące zasoby hardwarowe, w tym przypadku przestrzeń dyskową. Altcoiny (kryptowaluty inne niż Bitcoin), które używają tego systemu to: burst, permacoin, storj. Z jednej strony algorytmy te mogłyby służyć do tworzenia backupów ważnych informacji, takich jak cyfrowe biblioteki, czy rejestry, natomiast z drugiej jest to sposób na zabezpieczenie sieci przed problemem podwójnego wydawania. W tym przypadku mamy pewien rodzaj pracy, związany z utrzymywaniem dysków i zasobów (obliczenia CPU do plotowania dysków), ale z drugiej strony praca ta nie jest „bezużyteczna” i nie jest wykonywana tylko po to, by wesprzeć sieć, ale może służyć także wyższym celom.  W metodzie PoC istnieje podobny mechanizm prawdopodobieństwa, co w PoW. W tym przypadku suma zplotowanych (przygotowanych do kopania) zasobów dyskowych stanowi jednostkę prawdopodobieństwa, stąd też osoba z przestrzenią dyskową nawet tak małą jak 1Tb ma probabilistyczne szanse na „wykopanie” bloku. W systemie tym bardzo istotne jest też, podobnie jak w PoW, łączenie się w grupy zwane „poolami”, by zwiększyć swoje prawdopodobieństwo oraz jednocześnie zmniejszyć wariancję szansy wykopania bloku i otrzymania nagrody. Zagrożeniem w tym systemie mogą być gracze o dużych zasobach dyskowych, czy też dostarczyciele usług w chmurze.

 

Proof of Stake (PoS)

Proof of Stake (Dowód Stawki) jest to jeden ze sposobów kopania/zabezpieczania sieci blockchain, który wymaga od użytkownika posiadania określonej liczby tokenów i stałego dostępu do sieci. Załóżmy prostą sieć o 100 tokenach, bez określonych minimalnych zasobów potrzebnych do wzięcia udziału w procesie kopania, czy innych ograniczeń (minimalny czas przetrzymywania monet). Posiadając 10 tokenów, otrzymujemy więc 10% szans na „wykopanie” kolejnego bloku, czy to generycznego, czy związanego z opłatami. Trzeba bowiem zaznaczyć, że większą część nagród może stanowić nagroda od samego systemu, w systemie gdzie w każdym bloku generowana jest pewna stawka przydzielana osobie, która wykopała dany blok. Im większa ilość posiadanych tokenów, tym większe są nasze szanse na sprawdzenie bloku. Często w systemach PoS wszystkie monety są już dostępne (premined, np. w przypadku NEM), a uczestnicy systemu rywalizują między sobą o opłaty transakcyjne. Systemy altcoin używające tej metody zatwierdzania transakcji to np. peercoin lub nxt. W systemie peercoin starsze i większe ilości tokenów mają większą moc nabywczą przy kopaniu. Prowadzi to do problemu monopolizacji sieci – użytkownicy, którzy mają duże zasoby bogacą się szybciej od tych z małymi zasobami i przewaga ta się powiększa. Istnieją więc sposoby, by zapobiegać takiemu procederowi przez wprowadzenie ograniczonego czasu „życia” zasobów. Po każdej udanej weryfikacji bloku użytkownik musi odczekać minimum 30 dni, zanim system poprosi jego zasoby o potwierdzenie kolejnego bloku. Ponadto, mniejsze zasoby otrzymują największy możliwy współczynnik wartości po 90 dniach, automatycznie stając w kolejce do zabezpieczenia kolejnego zbioru transferów. System ten jest bezpieczny, dopóki atakujący nie przejmie 51% zasobów tokenów. Problemem jest tu także możliwość głosowania na kilka alternatywnych rozwiązań przez użytkowników o  małych stawkach, przez co algorytm nie jest rozwiązywalny. Wprowadzono kilka testowych zabezpieczeń, takich jak odgórna kontrola czy połączenie z rozwiązaniem typu proof of burn, w którym środki przelewa się na określone konto związane z miningiem i przez czas weryfikacji użytkownik nie ma do nich dostępu. Można porównać to do posiadania na blockchain rachunku powierniczego (segregated account). W przypadku próby oszustwa użytkownik zostaje ukarany całkowitą utratą środków.

 

Proof of Importance

Jest to pochodna systemu PoS z szeregiem ulepszeń, z których głównym jest dodanie współczynnika ważności do każdego zestawu tokenów. Ponadto, wprowadzono pewne obostrzenia związane z minimalną ilością tokenów wymaganych do otrzymania pierwszego współczynnika wartości oraz czasu po którym środki mogą zostać przeznaczone do miningu. W przypadku tego algorytmu posłużę się przykładem tokena NEM, jako flagowej implementacji tej technologii blockchain. W systemie NEM kopanie nazywane jest harvestingiem (żniwami), gdyż wszystkie monety są już dostępne na rynku, a potwierdzający transakcje harvester, dostaje nagrodę w postaci opłat transakcyjnych.

W systemie PoI, użytkownicy wykonujący transakcje, są nagradzani przez sieć większym współczynnikiem istotności.  Wynikiem matematycznym mnożenia współczynnika ważności, wielkości konta i dodatkowego faktora wynikającego z algorytmicznego przekształcenia ważności wykonanych transakcji (o czym będzie później) jest współczynnik zaufania. Mnożnik ten określa prawdopodobieństwo harvestingu kolejnego bloku transakcji przez danego użytkownika. W sieci NEM istnieje pojęcie vestingu, czyli nabierania ważności tokenów, co dalej będę nazywał tokenami „potwierdzonymi”. Minimalną stawką tokenów, potrzebną do kopania jest 10 000 XEM[1] potwierdzonych. Tokeny nabierają ważności w ilości 10% od ilości niepotwierdzonej każdego dnia. Oznacza to, iż otrzymując 100 000 tokenów XEM, już następnego dnia ma się 10 000 tokenów potwierdzonych i gotowych do harvestingu. W przypadku posiadania kwoty niewiele wyższej od niepotwierdzonych 10 000 XEM, należy czekać nawet 30 dni. Jest to obostrzenie wynikające z zabezpieczenia sieci, przez co nowi użytkownicy będą musieli poczekać dłuższy czas, zanim będą w stanie zaszkodzić systemowi. Dostają przez to niższe współczynniki praktycznie wykluczające ich z przyszłych zapytań o zabezpieczenie/potwierdzanie transakcji. Kolejnym krokiem byłoby przelanie środków na inne konto i wykonanie kolejnego ataku, ale w tym przypadku pojawia się vesting oraz algorytm ważności śledzący tokeny (sieć posiada ogólnodostępny explorer).

Problem monopolu został rozwiązany przez współczynnik ważności. Konta wykonujące transakcje (minimalny próg to 1000 XEM) dostają nagrodę w postaci podwyższonego współczynnika ważności. Tak więc konto z 20 000 XEM może mieć w rezultacie wyższy współczynnik zaufania (a zarazem prawdopodobieństwo) od konta z 100 000 XEM, które nie wykonywało transakcji przez ostatnie 30 dni. Poniższy rysunek przedstawia poglądowy rozkład współczynnika ważności w zależności od czasu, jaki minął od ostatniej transakcji. Tak więc transakcja dokonana ubiegłego dnia jest o wiele ważniejsza od tej dokonanej 25 dni temu.

Picture2

Wyobraźmy sobie użytkownika sieci, który chciałby wykorzystać ten system i tworzy łańcuch transakcji zapętlający się, tak, by sztucznie podwyższyć swój  współczynnik ważności. W tym momencie do gry wchodzi układ zabezpieczający (algorytmiczne przekształcenie ważności), oparty o algorytm NCDawareRank. Działa on podobnie jak algorytm PageRank (stworzony przez wyszukiwarkę Google), przeszukujący liczbę linków i załączników stron internetowych, który tworzy ranking najczęściej występujących witryn. W algorytmie tym łańcuchy linków (w naszym przykładzie transakcji) są odpowiednio procesowane i karane mniejszym współczynnikiem ważności, w przypadku naruszenia zasad. Przykładowo: konto wysyłające 5000 XEM, które nie dostaje w zamian nic, jest ważniejsze od tego, które wysyła 5000 XEM i dostaje w zamian 5000 XEM. Zastosowanie algorytmu NCDawareRank sprawia, że atakującemu mniej opłaca się grać nieczysto ze względu na straty, które poniesie na opłatach transakcyjnych.

 

Autorzy: Bartłomiej Sanak, Tomasz Kurowski

Do kolejnego spotkania z cyklu Crypto@Cracow pozostał niecały tydzień, widzimy się 24 sierpnia 2017 o godzinie 19:00 w biurowcu przy ulicy Szlak 65 w Krakowie.

Bibliografia:

http://kryptopolonia.info/matematyka-kryjaca-sie-za-bitcoin/

https://en.bitcoin.it/wiki/Proof_of_Stake

https://themerkle.com/what-is-proof-of-importance/

https://steemit.com/til/@ontofractal/til-about-nem-cryptotoken-consensus-algorithm-and-blockchain-features

https://blog.nem.io/what-are-poi-and-vesting/

https://blog.nem.io/how-do-i-get-importance-on-the-nem-blockchain/

http://www.coindesk.com/short-guide-blockchain-consensus-protocols/

NEM technical reference: https://nem.io/NEM_techRef.pdf

https://kryptopomocnik.pl/delegated-proof-of-stake-dpos/

 

[1] XEM – waluta (token) na platformie NEM