AnarchicCluster
New member
Zamykanie transakcji oraz tworzenie konsensusu masternodów:
Mechanizm zapobiegania wydawaniu tych samych środków dwukrotnie.
Data publikacji: 22 września 2014
Oryginał: PDF Tłumaczenie: PDF
Wersja dokumentu: 2
Evan Duffield – [email protected]
Holger Schinzel – [email protected]
Fernando Gutierrez – [email protected]
Mechanizm zapobiegania wydawaniu tych samych środków dwukrotnie.
Data publikacji: 22 września 2014
Oryginał: PDF Tłumaczenie: PDF
Wersja dokumentu: 2
Evan Duffield – [email protected]
Holger Schinzel – [email protected]
Fernando Gutierrez – [email protected]
Abstract. Bitcoin oraz inne kryptowaluty używają rozproszonego systemu zwanego blockchain do osiągnięcia konsensusu całej sieci [Nielsen13]. Sprzedawcy i handlarze zazwyczaj czekają, aż transakcja zostanie potwierdzona przez sieć aby upewnić się, że jest ona autentyczna i nie paść ofiarą ataku wydania tych samych środków dwa razy (double spending attack). Podwójne wydanie tych samych funduszy może nastąpić gdy oszust wyśle dwie sprzeczne ze sobą transakcje, jedną do sprzedawcy (lub kogokolwiek innego) a drugą do samego siebie.
W Bitcoinie, zwykłe potwierdzenie średnio zajmuję 10 minut. W zależności od tego jak bezpieczny chce być sprzedawca, może on zażądać wielu potwierdzeń tej samej transakcji co może wydłużyć ten czas nawet do 60 minut.
W tym artykule omawiamy rozwiązanie tego problemu trapiącego Bitcoin i inne kryptowaluty. Jak zagwarantować autentyczność transakcji bez czekania na potwierdzenia z blockchain?
1. Wprowadzenie
Stworzony przez Satoshi Nakomoto w 2009 r. Bitcoin [Nakamoto09] jest rozproszonym systemem płatności peer-to-peer. Od samego początku Bitcoin powoli zyskiwał na popularności i wiele przedsiębiorstw zaczęło akceptować Bitcoin jako zapłatę za swoje towary i usługi [Reuters14]. Chociaż Bitcoin okazał się być sukcesem, to w porównaniu do swoich większych konkurentów – kart płatniczych - posiada on jedną poważną wadę. Podczas robienia zakupów, karty płatnicze mają prawie natychmiastową autoryzację płatności, podczas gdy w przypadku Bitciona, trzeba czekać na potwierdzenie transakcji przez sieć. W przypadku dokonywania płatności za pomocą kart płatniczych, informacja zostaje wysłana do firmy która wydała tę kartę i pieniądze są trzymane przez tę firmę dopóki transakcja nie zostaje później potwierdzona, a pieniądze przelane na konto sprzedawcy. W przeciwieństwie do kart płatniczych, klient Bitcoina wysyła wiadomość na ślepo, wierząc że jest ona prawdziwa bez otrzymania żadnych informacji z sieci.
Darkcoin jest kryptowalutą której najważniejszym celem jest dodanie anonimowości do transakcji online. Bazuje on na pracy Satoshi Nakamoto i zawiera wiele różnych usprawnień technologii która została użyta w kliencie Bitcoina. Do wspomnianych usprawnień zaliczają się, funkcje anonimizujące oraz sieć z wbudowanymi zachętami finansowymi do świadczenia usług [Duffield14].
W artykule tym, mamy zamiar przedstawić; sieć węzłów tzw. masternodów jako sieć nadzorująca, używająca; rozproszonego konsensusu oraz algorytmu zamknięcia transakcji ‘’TX locking” do zabezpieczenia niepotwierdzonych transakcji. Sieć nadzorująca obserwuje każdą transakcję dając im status jako sfinalizowane zaraz po nadaniu ich do sieci. Później, omówimy również różne możliwości ataku na sieć oraz jak sieć masternodów może im zapobiec.
2. Sieć masternodów
Pierwotnie, masternody zostały wprowadzone do Darkcoin jako wsparcie dla procesu mieszania używanego w implementacji DarkSend. Oryginalne wymagania zostały opisane przez Evan Duffield w kwietniu 2014 roku:
„Węzły te, są fundamentem DarkSend. Wszystkie transakcję będą przez nie przesyłane. Każdy z nich wymaga aby 1000DRK było trzymanych pod ich adresami i za każdym razem kiedy węzeł zostanie wybrany, sieć przeznaczy 10% [podczas gdy pisałem ten artykuł, wynagrodzenie zostało zmienione do 20%] danego bloku dla tego węzła. Jeśli chcesz uruchomić masternoda, musisz być w miarę obeznany z zarządzaniem siecią oraz zabezpieczaniem hosta.” [Masternodes]
Użytkownicy zarządzający masternodami muszą trzymać 1000DRK jako coś w rodzaju zabezpieczenia. W sieci Darkcoin, zabezpieczenie to, nigdy nie przestaje być w posiadaniu użytkownika oraz jest nie do podrobienia. Może ono zostać wydane, lub przeniesione do innego portfela. Gdy tak się staje masternode zostaje usunięty z listy wszystkich masternodów i nie może otrzymywać prowizji za retransmisje transakcji.
Jądro Darkcoina zostało zmienione w taki sposób aby wspierało drugą sieć P2P, której zadaniem jest rozpowszechnienie wiadomości i synchronizacja wszystkich znanych masternodów w sieci. Dzięki temu dodatkowi, każdy podłączony do sieci klient Darkcoina wie ile jest dostępnych masternodów i może z nich skorzystać dokonując transakcji.
Masternody, - w przeciwieństwie do sieci Gnutella, - która używa hierarchicznej struktury sieci, gdzie węzeł klienta łączy się z tylko jednym węzłem nadrzędnym - są traktowane przez sieć w taki sam sposób oraz są praktycznie identyczne z innymi węzłami, dzięki czemu tworzą one klasyczną sieć P2P.

Rycina 1: Sieć P2P węzłów nadrzędnych

Rycina 2: Sieć masternodów Darkcoin
Jeśli portfel jest uruchomiony i wszystkie warunki są spełnione (statyczne IP, 1000 DRK) to praktycznie każdy węzeł (peer) może stać się masternodem.
Chociaż, w pierwotnym zamierzeniu masternody miały służyć do anonimizowania monet to posiadanie sieci peerów, stwarza możliwość wykorzystania ich w do innych zadań.
3. Zamykanie transakcji
Częstym problemem dużych rozproszonych systemów jest upewnienie się, że tylko jeden węzeł - spośród całej ich puli - przetwarza daną transakcję. Rozwiązanie tego wyzwania potrzebuje działania różnego rodzaju algorytmów konsensusu np. takich jak Paxos [Chandra07]
Bitcoin na przykład, używa dowodu pracy (proof of work) aby osiągnąć konsensus wśród wszystkich węzłów sieci. Jednakże, z powodu swoich parametrów technicznych, sposób ten ogranicza prędkość z jaką transakcja może zostać uznana za potwierdzoną i zabezpieczoną przed atakiem podwójnego wydania tych samych środków.
Aby zmniejszyć czas jaki transakcja potrzebuje do uzyskania potwierdzenia, możliwym jest przyśpieszenie generacji bloków. Jednak rozwiązanie to, powoduje szybszy rozrost blockchainu oraz z powodu opóźnień w przesyłaniu sygnału przez sieć ograniczony jest do mniej więcej 1 bloku co 30 sekund.
Proponujemy aby połączyć algorytm dowodu pracy z implementacją rozproszonego menadżera zamykania transakcji (distributed lock manager DLM), korzystającego z sieci masternodów.
W przeciwieństwie do Chubby [Burrows06], który potrafi zamknąć (lock) zasoby plików, my mamy zamiar zaimplementować system zamykania transakcji wejściowych.
Klient Darkcoina potrafi lokalnie zamknąć transakcje wejściowe aby nie były one użyte nigdzie indziej. W większości wypadków odbywa się to w specjalnych implementacjach, które używają RPC API klienta, aby ręcznie stworzyć transakcję.
Koncept zamykania transakcji może zostać rozszerzony do zamykania transakcji w całej sieci, zamiast robienia tego tylko na poziomie lokalnym jak to ma miejsce w przypadku wielu inny kryptowalut. Aby skutecznie ochronić się przed atakiem podwójnego wydatku, rozwiązanie to musi poradzić sobie z problemem konsensusu sieci oraz problemem tworzenia wyścigu zamkniętych transakcji.
Last edited by a moderator: