-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Whitepaper_pl
Evan Duffield - evan@dash.org Daniel Diaz - daniel@dash.org
Abstrakt. Kryptowaluta stworzona na bazie Bitcoina Satoshiego Nakamoto, wprowadzająca wiele różnych ulepszeń takich jak: sieć drugiego rzędu zwana również jako sieć Masternodów, zwiększający poziom zammienności środków PrivateSend, oraz InstantSend, który pozwala na natychmiastowe potwierdzenia transakcji bez potrzeby odnoszenia się do stron trzecich.
Bitcoin [1] jest kryptowalutą, która okazała się popularnym środkiem wymiany, oraz jest pierwszą cyfrową walutą, której udało się przyciągnąć do siebie znaczną liczbę użytkowników [2]. Od samego początku swoich narodzin w 2009 roku, popularność Bitcoina gwałtownie rosnła i zaczął on być akceptowany przez coraz większą liczbę przedsiębiorstw[3]. Niestety główną przeszkodą w popularyzacji Bitcoina jako środka płatności w fizycznych punktach sprzedaży jest długi czas oczekiwania na potwierdzenie transakcji jako ważnej. Niektóre firmy rozliczeniowe stworzyły możliwość akceptowania przez sprzedawców transakcji bez żadnych potwierdzeń, jednakże takie rozwiązanie wymaga zaufanej trzeciej strony, która dokonałaby transakcji poza protokołem.
Bitcoin oferuje pseudo anonimowe transakcję zapisywane w publicznym rejestrze, tworząc związek pomiędzy wysyłającym a otrzymującym. Taki system tworzy stałe publiczne archiwum wszystkich transakcji jakie miały miejsce w sieci Bitcoina [5]. W kręgach akademickich Bitcoin jest powszechnie znany jako słabe narzędzie do zachowania prywatności, a pomimo tego wiele osób dalej powierza blockchainowi Bitcoina swoją historię finansową.
Dash jest pierwszą kryptowalutą opartą na pracy Satoshiego Nakamoto oraz zarazem zaprojektowaną w taki sposób aby chronić prywatność swoich użytkowników. W rozprawie tej proponujemy szereg usprawnień Bitcoina, których wynikiem jest; zdecentralizowana, mocno anonimowa kryptowaluta, z możliwością dokonywania bezpiecznych i natychmiastowych transakcji, oraz dwustopniowa sieć peer-to-peer zmotywowana finansowo do dostarczania usług dla całej sieci Dash.
Pełne węzły są serwerami działającymi na sieci p2p, umożliwiającymi innym węzłom używanie ich do otrzymywania informacji na temat tego co się dzieje w sieci. Węzły te wymagają dość sporej przepustowości i innych zasobów co zarazem niesie ze sobą poważne koszty. Wynikiem tego jest obserwowany od pewnego czasu [7] stały spadek liczby pełnych węzłów sieci Bitcoina, co z kolei pociągnęło za sobą wydłużenia czasu potrzebnego do rozgłoszenia odkrycia nowego bloku o 40 sekund [14]. Zaproponowanych zostało wiele rozwiązań tego problemu np. program motywacyjny dla Bitnodów [6], albo zasugerowany przez Microsoft Research, nowy plan wynagrodzeń [4].
Grafika 1: Liczba pełnych węzłów Bitcoina wiosną 2014
Węzły te, są niezmiernie ważne do prawidłowego funkcjonowania całej sieci. Dają one klientom Bitcoina możliwość synchronizacji oraz szybkiego rozsyłania wiadomości przez całą sieć. Proponujemy dodanie drugiej sieci, znanej jako sieć Masternodów. Węzły te, będą dostępne prawie non-stop oraz powinny oferować sieci wymagany poziom usług w zamian za udział w programie wypłat dla Masternodów.
Jednym z głównych powodów spadku liczby węzłów Bitcoina jest brak jakichkolwiek korzyści z ich utrzymywania. W miarę upływu czasu koszt utrzymania pełnego węzła staje się coraz większy z powodu obsługi coraz większego ruchu sieciowego. W miarę rosnących kosztów, operatorzy konsolidują swoje usługi aby obniżyć koszty lub zaczynają używać samego portfela bez blockchainu, a to w żaden sposób nie pomaga sieci.
Masternody są pełnymi węzłami takimi samymi jak węzły w sieci Bitcoin. Wyjątkiem jest to, że muszą one dostarczać pewien poziom usług oraz dać bond pod zastaw aby móc działać w sieci. Zastaw jest zawsze bezpieczny i nigdy nie przestaje być pod kontrolą operatora Masternoda. Pozwala to inwestorom na dostarczanie sieci usług, zarabianie odsetek na swojej inwestycji oraz zwiększenie stabilności waluty.
Aby posiadać Masternoda, węzeł musi mieć na swoim koncie 1000 DASH. Jeśli nic nie zakłuca działania tych węzłów to dostarczają one pewne usługi innym klientom sieci, a w zamian otrzymują one coś w rodzaju dywidend. Pozwala to użytkownikom na uiszczenie opłaty za usługi, i zarazem zarobienie na inwestycji. Masternody są wynagradzane z tej samej puli pieniędzy, która stanowi około 45% [footnote] nagrody za wykopany blok.
Ponieważ liczba Masternodów może się zmieniać, a wypłaty dla nich stanowią stały procent nagrody za wykopanie bloku, to oznacza, że oczekiwane wypłaty dla pojedyńczego Masternoda również będą się wahać w zależności od całkowitej liczby wszystkich aktywnych Masternodów. Dzienne wynagrodzenie za utrzymywanie Masternoda, może zostać obliczone według tego oto wzoru:
Gdzie: _n_jest liczbą Masternodów pod kontrolą operatora _t_jest całkowitą liczbą Masternodów r jest obecną nagrodą za wykopanie bloku (na chwilę obecną wynosi ona 5 DASH) _b_jest średnią liczbą bloków wykopanych w ciągu jednego dnia. Dla sieci Dash liczba ta wynosi 576. _a_jest średnią wypłatą dla Masternoda (45% średniej nagrody za wykopanie bloku)
Zwrot inwestycji może zostać obliczony w następujący sposób
Gdzie zmienne są takie same jak powyżej.
Koszt związany z operowaniem Masternoda tworzy twarde oraz miękkie ograniczenie ilośći aktywnych węzłów w sieci. Obecnie w obiegu istnieje około 5.3 miliona DASH, oznacza to, iż może operować maksymalnie 5300 węzłów. Miękkie ograniczenie jest spowodowane ceną jaką trzeba zapłacić za uruchomienie węzła oraz załamaniem płynności na giełdach z powodu używcia DASH jako inwestycji a nie jako środka płatności.
Aby móc pseudolosowo szeregować masternody, użyty został specjalny deterministyczny algorytm. Ponieważ użyty hasz pochodzi z dowodu wykonanej pracy (proof-of-work) za każdy blok, bezpieczeństwo tej funkcji gwarantowane jest przez całą sieć kopaczy.
Pseudo kod wybierania Masternoda:
For(masternode in masternodes)(
n = masternode.CalculateScore();
if(n > best_score){
best_score = n; winning_node = masternode; } }
CMasterNode::CalculateScore(){
n1 = GetProofOfWorkHash(nBlockHeight); // get the hash of this block n2 = Hash(n1); //hash the POW has to increase the entropy n3 = abs(n2 - masternode_vin);
return n3; }
Ten przykładowy kod może zostać poszerzony o możliwość dostarczenia rankingu Masternodów aby "drugi", "trzeci", "czwarty" Masternod na liście też mógł zostać wybrany.
Obecnie sieć Dash posiada około 2400 aktywnych Masternodów[8]. Przez wymóg zastawienia 1000 DASH aby zostać Masternodem tworzymy system w którym nikt nie może kontrolować całej sieci Masternodów. Na przykład, jeśli ktoś chciałby kontrolować 50% wszystkich Masternodów musiałby nabyć 2,300,000 DASH. Gdyby tak się stało, cena DASH wzrosłaby tak bardzo, że niemożliwym byłoby nabycie wymaganej ilości DASH.
Wraz z dodaniem sieci Masternodów i wymogu kaucji w wysokości 1000 DASH, możemy zacząć używać tej drugiej sieci do wykonywania bardzo wrażliwych operacji. Proces ten nie wymagałby zaufania do osób postronnych i co więcej, żadna pojedyncza osoba nie jest w stanie go kontrolować.
Jednym z przykładów implementacji takiego kwora jest InstantSend[9], który używa kworum do zatwierdzenia transakcjii zamknięcia funduszy. Drugim przykładem jest implementacja dowodu dostarczenia usługi (proof-of-service)[10].
Innym przykładem zastosowania kworum jest użycie sieci masternodów jako rozproszonej wyroczni dla rynków finansowych umożliwiając bezpieczne i zdecentralizowane zawieranie kontraktów. Na przykład; jeśli 31 Grudnia 2016 akcje Apple (AAPL) są wyceniane powyżej $300 fundusze transferowane są do klucza publicznego A, w przeciwnym przypadku fundusze dostaje klucz publiczny B.
Masternody mogą dostarczyć sieci wiele dodatkowych usług. Dowodem tego są nasze implmentacje: PrivateSend oraz InstantSend. Przez zastsowanie dowodu wykonania usługi, możemy wymagać aby węzły te, były online, odpowiadały na wezwania a nawet tego aby były na prawidłowej wysokości bloku.
Osoby o złych zamiarach również mogłyby utrzymywać Masternody ale nie dostarczać żadnych z usług wymaganych przez resztę sieci. Aby zredukować możliwość wykorzystania systemu dla swojej korzyści, węzły muszą "sondować" (ping) resztę sieci aby upewnić się że pozostają one aktywne. Jest to dokonywane przez sieć Masternodów wybierając dwa kwora na blok. Kworum A Sprawdza usługi kworum B co blok. Kworum A składa się z węzłów znajdujących się najbliżej obecnego hasza bloku, podczas gdy kworum B składa się z węzłów znajdujących się najdalej od wspomnianego hasza.
Masternode A (1) sprawdza Masternode B (numer 2300) Masternode A (2) sprawdza Masternode B (numer 2299) Masternode A (3) sprawdza Masternode B (numer 2298)
Cała praca sprawdzania sieci aby udowodnić, że węzły są aktywne, jest wykonywana przez samą sieć Masternodów. W przybliżeniu około 1% całej sieci będzie sprawdzane co blok. Oznacza to, że cała sieć jest sprawdzana około sześć razy dziennie. Aby utrzymać cały ten system bez potrzeby odwoływania się do stron trzecich, wymagamy również sześcu potwierdzeń zanim węzeł zostanie zdeaktywowany..
Aby ktoś mógł oszukać system, atakujący musiałby zostać wybrany sześć razy z rzędu. W przeciwnym wypadku, wykroczenia będą anulowane przez system i inne węzły zostaną wybrane przez system kwor.
Masternody pod kontrolą atakującego / Całkowita liczba Masternodów | Ile razy musi zostać wybrany pod rząd | Prawdopodobieństwo sukcesu | Wymagana ilość DASH |
---|---|---|---|
1/2300 | 6 | 6.75e-21 | 1000DASH |
10/2300 | 6 | 6.75e-15 | 10,000DASH |
100/2300 | 6 | 6.75e-09 | 100,000DASH |
500/2300 | 6 | 0.01055% | 500,000DASH |
1000/2300 | 6 | 0.6755% | 1,000,000DASH |
Tabela 1. Prawdopodobieństwo wprowadzenia systemu w błąd reprezentujące jednego Masternoda, który nie dostarcza dowodu wykonania usługi (proof-of-serice).
Gdzie: _n_jest całkowitą liczbą wszystkich węzłów kontrolowanych przez atakującego t jest całkowitą liczbą wszystkich Masternodów w sieci r jest długością łańcucha
Selekcja Masternoda jest pseudolosowa i oparta na systmie kwory.
Masternody ogłaszają swoją obecność w sieci używając serii rozszerzeń protokołu takich jak: Masternode ogłasza wiadomość oraz Masternode 'sonduje' (ping) wiadomość. Te dwie wiadomości są wszystkim czego potrzeba aby węzeł był aktywny w sieci. Po za tymi dwoma istnieją inne wiadomości do egzekwowania dowodu wykonania usługi (PoS) PrivateSend i InstantSend.
Masternody tworzone są przez wysłanie 1000 DASH pod wybrany adres w portfelu, który z kolei "aktywuje" węzeł, czyniąc go zdolnym do nadawania wiadomości do całej sieci. Tworzony jest wtedy drugi prywatny klucz, który służy do podpisywania dalszych wiadomości. Klucz ten pozwala portfelowi na pozostanie całkowicie zamkniętym gdy ten pracuje w trybie pojedynczym.
Poprzez używanie drugiego prywatnego klucza na dwóch osobnych maszynach, 1000 DASH wymaganych pod zastaw może znajdować się w trybie offline. Główny klient znajdujący się online, podpisuje wpłatę 1000 DASH razem z drugim prywatnym kluczem i aktywuje się jako Masternode. Pozwala to "gorącemu" klientowi na zostanie zdeaktywowanym (zamknięcie klienta) i nie pozostawia hakerowi żadnej możliwości otrzymania dostępu do tych funduszy, nawet jeśli ten przejmię kontrolę nad Masternodem już po jego aktywacji.
Podczas startu, Masternode wysyła do sieci wiadomość "Masternode Announce" zawierającą:
Wiadomość: (wkład 1K DASH, Adres IP pod którym jest osiągalny, Podpis, Czas Podpisu, 1K Dash klucz publiczny, Drugi Klucz Publiczny, Klucz Publiczny Dotacji, Procent Dotacji)
Od tego momentu, co 15 minut zostaje wysłana wiadomość sondująca (ping) potwierdzająca, że węzeł jest wciąż aktywny.
Wiadomość: (Wkład 1K DASH, Podpis (używając drugiego klucza), Czas Podpisu, Stop)
Po tym jak czas aktywności upłynie, sieć usunie nieaktywny węzeł z sieci, co oznacza, iż węzeł ten ani nie będzie używany do świadczenia żadnych usług ani nie będzie otrzymywał żadnychwypłat. Węzły mogą łatwo dawać sieci znać, o tym że są wciąż aktywne, ale jeśli nie mają oni otwartych portów, to zostaną oznaczone jako nieaktywne i nie będą otrzymywać wypłat.
Nowi klienci dołączający do sieci Dash, muszą zapoznać się z aktywnymi Masternodami aby móc utylizować ich usługi. Jak tylko dołączają oni do sieci mesh, wysłana zostaje komenda do innych węzłów z zapytaniem o listę dostępnych Masternodów. Pewien ukryty plik jest używany przez klientów do zapisywania Masternodów i ich obecnego statusu, więc kiedy klient zostanie zrestartowany, to wczyta on ten plik zamiast wysyłania ponownego zapytania o listę.
Aby mieć pewność, że każdy Masternode dostaje swoją porcje nagrody za wykopanie bloku, sieć musi wyegzekwować od bloku aby ten płacił odpowiednim Masternodom. Jeśli kopacz się nie dostosuje to ich bloki zostają odrzucone przez sieć. W przeciwnym wypadku, kopacze mogą dojść do wniosku, że oszukiwanie może być dla nich korzystne.
W proponowanej przez nas strategi Masternody tworzą kwora, wybierają zwycięzkiego Masternoda i nadają swoją wiadomość do sieci. Po tym jak N wiadomości zostanie nadanych do tego samego beneficjenta, zostanie stworzony konsensus i wspomniany wcześniej blok będzie musiał nagrodzić tego Masternoda.
Podczas kopania DASH na sieci, oprogramowanie poola (strona internetowa, która łączy wysiłki wielu pojedyńczych kopaczy) używa RPC API aby otrzymać informacje o tym jak stworzyć blok. Aby płacić Masternodom, oprogramowanie to musi zostać rozszerzone przez dodanie drugiego beneficjenta do szablonu GetBlock. Poole rozsyłają wtedy wykopane bloki razem z funduszami podzielonymi między sobą i Masternodem.
Uważamy, że jest to niezmiernie ważne, aby mieć standardową implementację dla podniesienia poziomu prywatności użytkowników w kliencie referencyjnym, który z kolei jest jest źródłem wysokiego poziomu anonimowości, oraz nie polega na zaufaniu do stron trzecich. Inne klienty takie jak Electrum, Android i iPhone również będą miały taką samą warstwę bezpieczeństwa utylizującą zaimplementowane rozszerzenia protokołu.
PrivateSend jest rozszerzoną oraz ulepszoną wersją CoinJoin. W dodatku do podstawowej zasady działania CoinJoin stosujemy wiele innych ulepszeń, takich jak: decentralizacja, koncept mocnej anonimowości przez tworzenie transakcji łańcuchowych, denominacje oraz pasywne mieszanie zawczasu.
Największym wyzwaniem udoskonalania anonimowości kryptowalut jest osiągnięcie tego bez potrzeby maskowania całego blockchainu. W walutach opartych na Bitcoinie, każdy może zobaczyć, które środki są już wydane a które jeszcze nie, co potocznie nazywane jest UTXO (unspent, transaction output). Wynikiem tego jest pełny zapis transakcjii, który pozwala każdemu użytkownikowi działać jako gwarant integralności transakcji. Protokół Bitcoina jest zaprojektowany w taki sposób aby mógł działać bez potrzeby odnoszenia się do wymagających zaufania stron trzecich. W wyniku braku zaufanej trzeciej strony, jest to niezmiernie ważne aby blockchain dawał cały czas możliwości audytu dostępne dla wszystkich użytkowników. Naszym celem jest udoskonalenie anonimowści i zamienności monet aby nie zostały zatracone te kluczowe elementy, które według nas muszą wchodzić w skład waluty, która chce osiągnąć sukces.
Dzięki wbudowanej usłudze mieszania monet, wszyskie tokeny tej waluty sa jednakowe i zamienne. Wymienialność jest cechą pieniądza, która mówi, iż wszystkie jednostki pieniądza są identyczne. Gdy otrzymasz gotówkę w jakiejś walucie, pieniądze te nie powinny być skażone historią ich wcześniejszego użytku. Ewentualnie, użytkownik powinien mieć możliwość odcięcia się od 'przeszłości' tych piniędzy. W tym samym czasie, każdy użytkownik powinien działać jako audytor aby gwarantować finansową integralność publicznego zapisu transakcji, bez potrzeby poświęcania anonimowości.
Aby poprawić wymienialność i utrzymać integralność rejerstru transakcji, proponujemy używanie zdecentralizowanego nie wymagającego zaufania, wcześniejszego mieszania monet. Aby bardziej efektownie utrzmać wmienialność, usługa ta jest wbudowana w walutę, łatwa w użyciu i bezpieczna dla przeciętnego użytkownika.
Powszechną srategią wykorzystywaną w implmentacjach CoinJoin w Bitcoinie jest poprostu, łączenie transakcji ze sobą. Strategia ta pozostawia wiele różnych możliwości śledzenia monet użytkownika nawet przez łączone transakcje.
Grafika 2: Przykład transakcji CoinJoin pomiędzy dwoma użytkownikami [11][12]
W tej transakcji, 0.05BTC zostało wysłane przez mikser. Aby zidentyfikować źródło pieniędzy, ktoś poprost może dodać liczby z prawej i zobaczyć czy pasują one do którejś z liczb po lewej.
Rozpisując transakcję:
- 0.05 + 0.0499 + 0.0001(opłata) = 0.10BTC.
- 0.0499 + 0.05940182 + 0.0001(opłata) = 0.10940182BTC.
Trudność przeprowadzenia takiej analizy rośnie wykładniczo wraz z dodniem kolejnych użytkowników do miksera. Jednakże, sesje te mogą być retroaktywnie zdeanonimizowane w przyszłości.
W innej zaproponowanej implementacji CoinJoin, możliwe jest aby użytkownik wymieszał monety i przesłał resztę do giełdy lub innego serwisu który zna dane personalne użytkownika. W tej chwili anonimowość przestaje istnieć i pozwala wspomnianemu serwisowi na śedzenie transakcji użytkownika wstecz. Ten typ ataku jest nazywany przez nas "Kojarzenie w przód"(Forward Linking)
Grafika 3: Kojarzenie reszty w przód
W powyższym przykładzie, Alicja anonimizuje 1.2BTC, które jest wysyłane do dwóch adresów wyjściowych jako 1BTC oroaz 0.2BTC. Potem wydaje ona 0.7BTC z adresu który zawiera 1BTC, po czym dostaje 0.3BTC reszty. Te 0.3BTC wysyłane jest na adres, który można zidentyfikować jako należący do Alicji, co automatycznie jest potwierdzeniem, że w poprzedniej transakcji wydała ona 0.7BTC.
Aby zidentyfikować osobę dokonującą anonimowej transakcji, należy zacząć od transakcji z ‘giełdy’ i podążać wstecz przyglądając się każdej poprzedniej transakcji, aż dojdzie się do transakcji: ‘’Alicja anonimowo wysłała 0.7BTC’’. Jeśli w tym wypadku jesteś 'giełdą', to wiesz, że to właśnie twój klient kupował coś przy czym chciał pozostać anonimowy. Ten typ atku jest przez nas nazwany "Atakiem przez kojarzenie reszty".
Grafika 4: Przez kojarzenie reszty
W drugim przykładzie, Alicja kupuje 1.2BTC z Coinbase, po czym anonimizuje 1BTC przez wysłanie go na adres wyjściowy. Następnie wydaje ona 1BTC otrzymując 0.3BTC reszty. Ta z kolei zostaje wysłana do tego samego adresu, który zawiera wcześniejsze 0.2BTC.
Przez połączenie reszty z anonimowej transakcji (0.3BTC) razem z resztą jaką otrzymała z transakcji CoinJoin, powstaje możliwość odtworzenia całej historii transakcji przed i po próbie anonimizacji.
PrivateSend korzysta z faktu, iż transakcje mogą być wysłane przez wielu nadawców do wielu odbiorców aby łączyć środki ze sobą w taki sposób aby później nie można było ich rozróżnić. Biorąc pod uwagę fakt, że transakcje PrivateSend są zaprojektowane w taki sposób aby użytkownicy płacili sami sobie, cały system jest bardzo dobrze zabezpieczony przed kradzieżami, a fundusze użytkownków zawsze pozostają bezpieczne. Obecnie do mieszania monet przez PrivateSend wymaganych jest trzech uczestników.
Grafika 5: Trzej użytkownicy przesyłają denominowane fundusze we wspólnej transakcji. Użytkownicy płacą sami sobie w postaci nowych wartości wyjściowych, które z kolei są poszeregowane w sposób całkowicie losowy.
Aby zwiększyć anonimowość systemu jako całości, proponujemy używanie powszechnych denominacji 0.1DASH, 1DASH, 10DASH oraz 100DASH. W każdej sesji mieszania, wszyscy użytkownicy powinni wysłać te same denominacje jako wartości wejściowe oraz wyjściowe. Co więcej, opłaty powinny być usunięte z transakcji i potrącone hurtowo w osobnej nie mającej nic wspólnego z resztą, transakcji.
Aby oprzeć się możliwym atakom DoS, proponujemy aby wszyscy użytkownicy wysyłali do puli pewną transakcję pod zastaw. Transakcja ta jest wysłana do samego siebie oraz niesie ze sobą sporą opłatę dla kopaczy. W przypadku gdy użytkownik wysyła żądanie do puli mieszanych monet, musi on najpierw dać pewną kwoę pod zasaw. Jeśli w jakimś momencie, któryś z użytkowników nie będzie współpracował np. przez odmowę podpisu transakcji, straci on kwotę daną pod zastaw. Mechanizm ten sprawi, żę ciągły atak na sieć będzie bardzo drogo kosztować.
PrivateSend jest ograniczony do 1000 DASH na sesję i wymaga wielu sesji aby dokładnie zanonimizować duże sumy pieniędzy. Aby ułatwić użytkownikowi obsługę oraz utrudnić przeprowadzenie ataków wykorzystujących różnice czasowe, PrivateSend działa w trybie pasywnym. W pewnych odsępach czasu, klient użytkownika wyśle zapytanie o połączenie się z innymi klienami przez Masternoda. Przy połączeniu się z Masternodem, nadana zostaje wiadomość z informacją o nominałach dany użytkownik stara się zanonimizować. Podczas wysyłania tej wiadomości nie udzielane są żadne informacje mogące pozwolić na identyfikację użytkownika.
Każda sesja PrivateSend może być rozważana jako niezależne wydarzenie, zwiększając anonimowość środków użytkownika. Każda sesja jest ograniczona do trzech klientów, więc obserwator ma jeden na trzy szansę na bycie w stanie wyśledzenia transakcji. Aby zwiększyć jakość anonimowości, zastosowane zostało podejście tworzenia transakcji łańcuchowych, które polegają na tym, że fundusze wysyłane są prez wiele Masternodów, jeden po drugim.
Długość łańcucha | Możliwi użytkownicy |
---|---|
2 | 9 |
4 | 81 |
8 | 6561 |
Tabela 2. Ilu użytkowników może być zatrudnionych przy N sesjach mieszania. |
Podczas łączenia ze sobą transakcji, Masternody teoretycznie mogłyby podglądać fundusze użytkowników gdy te przechodzą przez ich węzły. Z powodu wymogu trzymania przez Masternode 1000 DASH oraz losowego wyboru Masternoda do mieszania funduszy, nie jest to uważane za poważne zagrożenie. Prawdopodobieństwo śledzenia transakcji może zostać wyliczone w ten oto sposób:
Liczba Masernodów pod kontrolą atakującego / Całkowita liczba Masternodów | Długość łańcucha | Prawdopodobieńswo powodzenia | Wymagana ilość DASH |
---|---|---|---|
10/1010 | 2 | 9.80e-05 | 10,000DASH |
10/1010 | 4 | 9.60e-09 | 10,000DASH |
10/1010 | 8 | 9.51e-11 | 10,000DASH |
100/1100 | 2 | 8.26e-03 | 100,000DASH |
100/1100 | 4 | 6.83e-05 | 100,000DASH |
100/1100 | 8 | 4.66e-09 | 100,000DASH |
1000/2000 | 2 | 25% | 1,000,000DASH |
1000/2000 | 4 | 6.25% | 1,000,000DASH |
1000/2000 | 8 | 0.39% | 1,000,000DASH |
2000/3000 | 2 | 44.4% | 2,000,000DASH |
2000/3000 | 4 | 19.75% | 2,000,000DASH |
2000/3000 | 8 | 3.90% | 2,000,000DASH |
Tabela 3. Prawdopodobieństwo wyśledzenia transakcji PrivateSend przy założeniu, że atakujący kontroluje N węzłów.
Gdzie: _n_jest całkowitą liczbą wszystkich węzłów kontrolowanych przez atakującego t jest całkowitą liczbą wszystkich Masternodów w sieci r jest długością łańcucha
Wybór Masternodów jest losowy.
Biorąc pod uwagę ograniczoną liczbę DASH w obiegu (w czasie pisania tego artykułu w Kwietniu 2015 istniało około 5.3 miliona) oraz małą płynność rynku, zdobycie wystarczającej ilości Masternodów do przeprowadzenia ataku jest niemożliwe.
Rozszerzając system przez oślepianie Masternodów aby nie widziały jakie transakcję mają miejsce na ich węźle znacząco podnosi poziom bezpieczeństwa całego systemu.
W sekcji 3.4 omawiamy prawdopodobieństwo wyśledzenia jednej transakcji przechodzącej przez wiele sesji mieszania za pomocą PrivateSend. Może to być udoskonalone jeszcze bardziej, przez oślepianie Masternodów aby te nie widziały które transakcje wejściowe i wyjściowe należą do kórego użytkownika. Aby to uczynić, proponujemy prosty system retransmisji, który może zostać użyty przez użytkowników do ochrony swojej tożsamości.
Zamiast wymagać od użytkowników aby ci wysyłali transakcję wejściowe i wyjściowe bezpośrednio do puli, wybiorą oni losowego Masternoda z sieci i zarządają aby ten retransmitował transakcję wejścia, wyjścia oraz podpisy do docelowego Masternoda. Oznacza to, że Masternode otrzyma N zestawów wartości wyjścia i wejścia oraz N zestawów podpisów. Każdy zestaw należy do jednego użytkownika, ale Masternode nie będzie wiedział, który zestaw należy do kogo.
Dzięki zaprzęgnięciu Masternodów do tworzenia kwory, użytkownicy są w stanie wysyłać natychmiastowe i nieodwracalne transakcje. Jeśli kworum zostanie stworzone, wartości wejściowe transakcji zostają zamknięte, tak aby można było je wydać tylko i wyłącznie w jednej konkretnej transakcji. Zamknięcie transakcji zajmuje obecnie około 4 sekund. Jeśli sieć Masternodów osiąga konsensus, wszystkie transakcje lub bloki kóre nie pasują do danego identyfikatora zamku, zostaną odrzucone.
Pozwoli to sprzedawcom na używanie urządzeń przenośnych w tradycyjnych punktach sprzedaży. Użytkownicy będą mogli również dokonywać płatności niekomercyjnych w transakcjach doknoywanych twarzą w twarz, tak samo jak w tej chwili używana jest gotówka. Cały proces odbywa się, bez żadnego centralnego nadzoru. Znacznie szersze omówienie tej fukncji można znaleźć w publikacji InstantSend[9].
x11 jest dość popularnym algorytmem haszowania, który używa innego podejścia do haszowania zwanego jako algorytm łańcuchowy. x11 składa się z wszystkich jedenastu konkurencyjnych algorytmów SHA3. Każdy hasz jest obliczany i następnie wysyłany do następnego algorytmu w łańcuchu, prawdopodobieństwo stworzenia ASIC (zinegrowany obwód elektroniczny zaprojektowany do wykonywania tylko jednego rodzaju zadania - przypisek tłumacza) dla tej waluty jest dosyć niskie, aż do późnego etapu życia waluty.
W cyklu życiowym Bitcoina, kopanie zostało rozpocęe przez hobbystów, którzy używali procesorów (CPU) aby kopać bitcoiny. Krótko po tym, zostało stworzone oprogramowanie pozwalające na używanie do tego celu kart graficznych (GPU), kóre szybko zastępiły procesory. Pare lat po kartach graficznych stworzone zostały ASIC, które z kolei szbko zajęły miejsce kart graficznych.
Z powodu złożoności i rozmiaru matrycy wymaganej do stworzenia ASIC do kopania x11, oczekujemy, iż zajmie to znacznie więcej czasu niż stało się o w przypadku Bitcoina. Pozwoli to hobbystom na kopanie DASH przez znacznie dłuższy okres czasu. Naszym zaniem jest to bardzo ważne dla dobrej dysrybucji i wzrostu kryptowaluty.
Inną korzyścią z korzystania z haszowania łańcuchowego jest to, że wysokiej klasy procesor będzie miał podobną wydajność do tej oferowanej przez kartę graficzną. W dodatku, kopacze twierdzą, że ich karty graficzne są o 30-50% chłodniejsze oraz zużywają mniej prądu niż algorytm Scrypt stosowany w większości kryptowalut.
Dash stosuje inne podejście do ograniczania inflacji. Podaż monet zmniejsza się co roku o 7%. Jest to rozwiązanie troche inne niż zmniejszanie podaży monet o połowę jak zostało to zaimlementowane w wielu innych kryptowalutach. Co więcej, podaż bloków jest powiązana z liczbą kopaczy w sieci. Oznacza to, że im więcej jest kopaczy tym mniejsze są wynagrodzenia za wydobycie bloku.
Produkcja Dash jest zaplanowana tak aby powoli zwalniając swoje tempo ciągnęła się przez to stulecie aż do następnego. Powinna się ona w końcu zatrzymać całkowicie około roku 2150.
Grafika 6: Plan wynagrodzeń za wydobycie bloku
Publikacja ta przedstawia wiele pomsłów na ulepszenie działania Bitcoina, co zaskutkowałoby wyższym poziomem anonimowości i zamienności monet, zmniejeszeniem wachań kursu oraz szybszym wysyłaniem wiadomości przez sieć. Wszystko to jest osiągalne dzięki użyciu finansowo zmotywowanego modelu dwustopniowej sieci, zamiast pojedyńczej sieci istniejącej w innych kryptowalutach takich jak Bitcoin. Poprzez zastosowanie alternatywnego projektu sieci, otwierają się przed nami możliwości dodania wielu innych usług, takich jak: rozproszone mieszanie monet, natychmiastowe transakcje oraz zdecentralizowane wyrocznie wykorzystujące kwory Masternodów.
- A peer-to-peer electronic cash system (2008)
- http://eprints.qut.edu.au/69169/1/Boyen_accepted_draft.pdf
- https://www.cryptocoinsnews.com/3-solutions-instant-bitcoin-confirmations/
- http://research.microsoft.com/pubs/156072/bitcoin.pdf
- http://www0.cs.ucl.ac.uk/staff/s.meiklejohn/files/imc13.pdf
- https://getaddr.bitnodes.io/nodes/incentive/
- https://medium.com/zapchain-magazine/why-don-t-people-run-bitcoin-nodes-anymore-d4da0b45aae5
- https://dashninja.pl/
- https://dashtalk.org/threads/InstantSend-white-paper.4153/
- https://github.com/dashpay/dash/blob/master/src/Masternode-pos.cpp
- https://blockchain.info/tx/4eb3b2f9fe597d0aef6e43b58bbaa7b8fb727e645fa89f922952f3e57ee6d603
- https://blockchain.info/tx/1694122b34c8543d01ad422ce600d59f8d8fde495ac9ddd894edc7139aed7617
- http://en.wikipedia.org/wiki/NIST_hash_function_competition#Finalists
- http://www.tik.ee.ethz.ch/file/49318d3f56c1d525aabf7fda78b23fc0/P2P2013_041.pdf