Dagger-hashimoto to prawdopodobnie algorytm, który ma najbardziej heroiczną nazwę w świecie kryptowalut. Jednak czym tak właściwie jest? Powszechnie wiadomo, że ethereum korzysta z konsensusu Proof of Work. Algorytm dagger-hashimoto jest pierwotną wersją konsensusu kryptowaluty ethereum, który istniał na samym początku działania tej kryptowaluty.
Vitalik Buterin wraz ze swoim zespołem deweloperów odpowiedzialnych za ethereum opracowali ten algorytm, łącząc w sobie cechy (ku zaskoczeniu) dwóch różnych algorytmów o nazwach dagger i hashimoto. Algorytm ten był odporny na działanie sprzętów typu ASIC. Zarówno algorytm dagger-hashimoto, jak i obecny ethash zostały jednak kilkukrotnie
zaktualizowane od momentu powstania kryptowaluty. Dlatego dziś działają w zupełnie inny sposób. Pomimo tego, że algorytm nie jest już używany i został wielokrotnie zmieniony, nadal wiele osób w świecie kryptowalut o nim pamięta.
Działanie algorytmu hashimoto
Thaddeus Dryj jest osobą odpowiedzialną za stworzenie algorytmu hashimoto. Wykorzystuje ASIC jako źródło danych niezbędne do podtrzymywania prawidłowej pracy blockchain. Ich moc została jednak ograniczona jedynie do odczytu danych pamięci. Sprzęty ASIC w algorytmie hashimoto mają ograniczoną moc wydobywczą. Nie są najlepszym źródłem do górnictwa. Thaddeus opracował algorytm po to, aby utrzymać w działaniu zdecentralizowaną sieć blockchain. Ponieważ jego zdaniem monopolizacja wydobycia bitcoina groziła tym, że górnicy obsługujący największą liczbę sprzętu ASIC scentralizują wykopywanie kryptowalut. Centralizacja mogłaby nastąpić, gdyby ograniczenie udziału przeciętnych jednostek wydobywczych w systemie coraz częściej malało. Algorytm hashimoto zgodnie z pierwotnym zamysłem dobrze przeciwstawiał się takiej ewentualności.
Algorytm hashimoto jest systemem nieco innym od typowego Proof of Work. Różni się od niego w wielu aspektach. W dużym skrócie możemy uznać, że hashimoto monitoruje dane i uchwala na ich podstawie dowód wejścia i wyjścia kolejnych bloków w sieci. Algorytm hashimoto polega na wybraniu kilku losowych elementów z dużego zbioru danych. Po wybraniu tych danych służą one w systemie za generator wskaźników do obsługi blockchaina. Nie działają jednak w takim sam sposób jak dowód pracy znany w PoW.
Główny problem outsourcingu w konsensusie polega na tym, że firmy odpowiedzialne za największe pule wydobywcze nie informują na bieżąco górników o tym, które z transakcji zostały zatwierdzone, a które nie. W ten sposób dochodzi do pewnego rodzaju centralizacji przeczącej pierwotnemu założeniu kryptowalut. Ponieważ kryptoaktywa miały opierać się na sieci, która nie podlega władzy żadnej dużej firmy. Aby mówić o zdecentralizowanej sieci, musimy mieć do czynienia z systemami, które nie są przez nikogo zarządzane. Stworzenia blockchaina wymaga autonomicznej sieci
zdolnej do nieprzerwanego, solidnego działania. Tylko w taki sposób możemy mieć pewność, że kryptowaluta jest godna zaufania.
Algorytm dagger
Dagger jest tak naprawdę alternatywnym skryptem zapewniającym szybką weryfikację opartą o obliczenia odporne na sprzęty typu ASIC. Możemy zatem uznać, że dagger jest algorytmem, który odpowiednio wykorzystywany dopełnia działanie hashimoto, ponieważ podobnie, jak i on pomaga w tworzeniu sieci odpornej na działanie sprzętu ASIC. Niemożliwe jest przemierzenie DAG, zaczynając od jednej krawędzi. Jak podaje whitepaper dagger, potrzebuje 512 MB na ocenę danych, 112 KB na pamięć i 4078 haszy do weryfikacji, co przesuwa główny wyznacznik trudności wydobycia w kierunku pamięci, a nie obliczeń.
Z tego powodu nawet najlepszy dedykowany sprzęt górniczy ASIC uzyskuje tylko niewielką przewagę w wydobyciu, gdy porównamy go z pojedynczymi koparkami kryptowalut. Powoduje to brak opłacalności w wydobyciu bloków za pośrednictwem ASICów. Z tego względu algorytm uniemożliwia najbogatszym i największym korporacjom górniczym przejęcie kontroli nad siecią. W ten sposób mamy pewność, że pozostanie ona zdecentralizowana.
Algorytm dagger opiera się na wykorzystaniu pamięci RAM znajdującej się w sprzęcie górnika. Dagger’s proof-of-work opiera się na tworzeniu pseudolosowego zestawu danych w celu wypełnienia pamięci RAM. Niestety sam algorytm dagger miał wady, które pozwalały na współdzielenie pamięci między urządzeniami wydobywającymi bloki. Współdzielenie danych umożliwiało generowanie nowych zbiorów danych dla układów ASIC, jednak nie dla zwykłych komputerów. Z tego powodu więksi górnicy mogli znaleźć sposób na obejście ograniczenia i wydobycie większej ilości danych. Kiedy górnicy odkryli taką wadę, samodzielna funkcja haszująca algorytmu dagger przestała spełniać swoje główne zadanie.
Dagger-hashimoto
Połączenie algorytmu dagger i hashimoto udowadnia limity przepustowości danych I/O, jednak nie wykorzystuje blockchaina jako zestawu informacji. Zamiast tego dagger generuje niestandardowy zestaw danych o objętości jednego gigabajta. Dane te są generowane w pewnych odstępach czasowych, aby uniemożliwić specjalizowanym układom scalonym uzyskanie przewagi nad sprzętem GPU i CPU pojedynczych górników. W ten sposób połączenie algorytmów skutecznie odcięło przewagę sprzętów typu ASIC. Co więcej, algorytm ułatwił również generowanie zbioru danych niezbędnych do obsługi blockchaina.
Algorytm dagger-hashimoto był w przeszłości prawdziwym przełomem wśród każdego konsensusu kryptowalutowego, ponieważ nie tylko zapewniał odporność na sprzęt typu ASIC, ale także wpływał na przyspieszenie prędkości obsługi systemu blockchain. Był jednym z najszybszych algorytmów. Mimo wszystko w dzisiejszych czasach niewiele monet w systemach kryptowalutowych używa teraz algorytmu dagger-hashimoto.
Wiele monet zaczynających od dagger-hashimoto szybko przeniosło się na ethash. Oto najpopularniejsze projekty, które w przeszłości działały na podstawie dagger-hashimoto, a następnie przeszły na algorytm ethash:
- Ethereum (ETH);
- Ethereum Classic (ETC);
- Expanse (EXP).
Oto monety, które korzystają z dagger-hashimoto do tej pory:
- DubaiCoin (DBIX);
- Ubiq (UBQ).
Dlaczego dagger-hashimoto sprawdził się w etherum?
Dowód pracy, na którym opiera się cały niezmienny konsensus bitcoina, stworzył potrzebę zużycia ogromnych mocy obliczeniowych. Doprowadziło to do powstania wspomnianych wyżej wyspecjalizowanych układów scalonych (maszyn typu ASIC). Układy scalone różnią się od procesorów i pojedynczych komputerów tym, że są zaawansowanymi maszynami, które zostały zaprojektowane tylko w jednym celu. W tym przypadku ASIC zaprojektowany z myślą o wydobyciu bitcoina nadaje się do wykopywania waluty opartej na podstawie klasycznego algorytmu Proof of Work.
Specjalne maszyny górnicze typu ASIC zostały zaprojektowane w taki sposób, aby robiły tylko jedną rzecz. Czyli obliczały z zawrotną prędkością wyniki oparte na skrypcie hash256. Ze względu na to, że trudność wydobycia w blockchainie bitcoina zależy od tego, jak wiele mocy obliczeniowej znajduje się aktualnie w systemie, konkurowanie z ASICami stało się niemożliwe za pośrednictwem zwykłych komputerów. Doprowadziło to do większej centralizacji górniczej wokół grup ludzi, którzy mają dostęp do największej ilości wyspecjalizowanych układów scalonych.
W ethereum deweloperzy wraz z Vitalikiem chcieli zaradzić takiej sytuacji, więc stworzyli algorytm, który miał za zadanie uniemożliwić zdobywanie przewagi w wydobyciu
kryptowaluty za pośrednictwem ASICa. Chociaż ethereum również opiera się na dowodzie pracy (PoW), tak jak bitcoin, ich algorytm jest zaktualizowany w taki sposób, aby nie faworyzować ASICów nad komputerami osobistymi.
Twórcy sieci chcieli, aby każdy użytkownik mógł uczestniczyć w wydobyciu i partycypować za pośrednictwem swojego sprzętu w działaniu blockchaina ethereum. Dlatego też niezbędne było ograniczenie prędkości wnoszonej przez maszyny typu ASIC do sieci. Aby wygenerować poprawny hash w ethereum, potrzeba dużo pamięci. Z kolei maszyny typu ASIC są zazwyczaj układami wielu procesorów z rozłożoną ilością pamięci na każdy z podzespołów. Dlatego dzieląc tę samą pamięć, nie są one w stanie poradzić sobie z operacjami wymagającymi dużej ilości pamięci, których wymaga ethereum.
Brak możliwości wykorzystania zalet maszyn typu ASIC podczas wydobywania ethereum, umożliwił kopanie monet cyfrowych zwykłym użytkownikom. Robią to za pomocą kart graficznych
Ze względu na algorytm ethash, który wywodzi się z dagger-hashimoto, maszyny typu ASIC są niemal bezużyteczne podczas wydobywania ethereum. O wiele bardziej opłaca się zaangażować sprzęty wyposażone w dużą ilość solidnych kart graficznych. Oczywiście nie oznacza to, że maszyny typu ASIC nie mogą partycypować w sieci. Deweloperzy po prostu zadbali o to, aby skrypt skutecznie obniżał opłacalność ich użycia. Ze względu na to zarobek w sieci ethereum za pośrednictwem ASICa byłby znacznie obniżony w porównaniu do kopania bitcoina.
Ponieważ maszyny typu ASIC wykonują obliczanie skryptu hash256 w bardzo dynamiczny i efektywny sposób, Thaddeus stanął przed nie lada wyzwaniem, gdy opracowywał algorytm obniżający wpływ ASICów na sieć. Algorytm dagger-hashimoto połączył najlepsze aspekty z obu systemów. Zamiast blockchaina używanego w hashimoto, dagger-hashimoto używa niestandardowego generowanego zbioru danych o wielkości 1 GB, który jest aktualizowany co określoną odgórnie liczbę bloków. Ze względu na to algorytm jest nastawiony bardziej na działanie pamięci w urządzeniu, a nie na same obliczenia.
Pamiętajmy jednak o tym, że obecnie prawie żadna moneta cyfrowa nie opiera się już na algorytmie dagger-hashimoto, ponieważ metoda obliczeń w blockchainie ethereum i innych altcoinach ewoluowała. Obecne ethereum i pochodne od niego projekty opierają się na algorytmie obliczeniowym o nazwie ethash. Chociaż dagger-hashimoto powoli odchodzi w zapomnienie, nie należy zapominać o tym, że bez niego nigdy nie doszłoby do ewolucji, która pozwoliła zdecentralizować wydobycie kryptowalut.