strona główna - giełda wymiany bitcoin - btcduke · web viewz drugiej strony, algorytm wyboru...

35
Tangle (Splot) Serguei Popov*, dla Jinn Labs 3 kwietnia, 2016r., wersja 0.6 Streszczenie W niniejszym opracowaniu dokonujemy analizy technologii stanowiące szkielet systemu iota (kryptowaluty dla sektora Internet-of-Things). Technologia ta w sposób naturalny zastępuje technologię blockchaina stanowiąc jego kolejny krok ewolucyjny wraz z cechami niezbędnymi do realizacji mikropłatności realizowanych na skalę globalną. 1 Wprowadzenie i opis systemu Powstanie i sukces Bitcoina na przestrzeni ostatnich sześciu lat dowiódł wartości technologii blockchainowej. Nie mniej jednak, technologia ta ma kilka słabości, które uniemożliwiają wykorzystanie jej jako jedynej, globalnej platformy kryptowalutowej. Wśród tych słabych punktów na szczególną uwagę zasługuje brak możliwości realizowania mikropłatności, co przyczyniło się do wzrostu znaczenia szybko rozwijającego się sektora Internet-of-Things. W obecnie dostępnych systemach, opłaty są wymagane za każdą zawartą transakcję; a zatem, transfer niewielkich kwot nie ma większego sensu, ponieważ opłata za przekazanie środków jest w tym przypadku wielokrotnością przesyłanej sumy. Z drugiej strony, nie jest łatwo zrezygnować z opłat, ponieważ stanowią one bodziec dla twórców bloków. Należy także zauważyć, że istniejące kryptowaluty są systemami heterogenicznymi, w których występuje wyraźny podział ról (wystawcy transakcji, osoby zatwierdzające transakcję). Systemy te przyczyniają się do nieuniknionej dyskryminacji niektórych elementów, co z kolei powoduje konflikty i sprawia, że wszystkie

Upload: others

Post on 30-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

Tangle (Splot)Serguei Popov*, dla Jinn Labs3 kwietnia, 2016r., wersja 0.6

Streszczenie

W niniejszym opracowaniu dokonujemy analizy technologii stanowiące szkielet systemu iota (kryptowaluty dla sektora Internet-of-Things). Technologia ta w sposób naturalny zastępuje technologię blockchaina stanowiąc jego kolejny krok ewolucyjny wraz z cechami niezbędnymi do realizacji mikropłatności realizowanych na skalę globalną.

1 Wprowadzenie i opis systemu

Powstanie i sukces Bitcoina na przestrzeni ostatnich sześciu lat dowiódł wartości technologii blockchainowej. Nie mniej jednak, technologia ta ma kilka słabości, które uniemożliwiają wykorzystanie jej jako jedynej, globalnej platformy kryptowalutowej. Wśród tych słabych punktów na szczególną uwagę zasługuje brak możliwości realizowania mikropłatności, co przyczyniło się do wzrostu znaczenia szybko rozwijającego się sektora Internet-of-Things. W obecnie dostępnych systemach, opłaty są wymagane za każdą zawartą transakcję; a zatem, transfer niewielkich kwot nie ma większego sensu, ponieważ opłata za przekazanie środków jest w tym przypadku wielokrotnością przesyłanej sumy. Z drugiej strony, nie jest łatwo zrezygnować z opłat, ponieważ stanowią one bodziec dla twórców bloków. Należy także zauważyć, że istniejące kryptowaluty są systemami heterogenicznymi, w których występuje wyraźny podział ról (wystawcy transakcji, osoby zatwierdzające transakcję). Systemy te przyczyniają się do nieuniknionej dyskryminacji niektórych elementów, co z kolei powoduje konflikty i sprawia, że wszystkie elementy systemu przeznaczają środki na jego rozwiązanie. Wszystko to uzasadnia poszukiwanie rozwiązań zasadniczo różniących się od technologii blockchainowej stanowiącej jego podstawę, a także możliwości stworzenia wielu innych kryptowalut.

*a.k.a. mthcl; dane kontaktowe autora: [email protected]

Page 2: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

W niniejszym dokumencie omawiamy podejście niewymagające użycia blockchainów, które jest obecnie implementowane w systemie iota [1] – nowym narzędziu zaprojektowanym, jako kryptowaluta dla sektora Internet-of-Things. Oczywiście, każda analiza teoretyczna będzie niekompletna bez informacji zwrotnych z roboczej wersji systemu; mamy nadzieję, że będą one wkrótce dostępne.

Ogólnie rzecz biorąc, iota działa w następujący sposób. Zamiast globalnego blockchaina mamy tutaj skierowany graf cykliczny DAG (= directed acyclic graph), który w skrócie nazywamy splotem (tangle). Transakcje wysyłane przez węzły tworzą zbiór tangle (tzn. graf tangle stanowi księgę rachunkową, w której przechowywane są transakcje). Zbiór krawędzi określany jest w następujący sposób: kiedy pojawia się nowa transakcja, musi ona zatwierdzać dwie1 wcześniej zawarte transakcje; akceptacje te są reprezentowane za pośrednictwem kierowanych krawędzi zgodnie z Rys. 1 oraz innymi (na ilustracji, czas zawsze biegnie od strony lewej do prawej). Jeżeli pomiędzy transakcjami A i B nie występuje krawędź kierowana, ale istnieje ukierunkowana ścieżka o długości co najmniej od A do B, wtedy mówimy, że A pośrednio akceptuje B. Istniej także transakcja oryginalna („genesis"), która jest zatwierdzana (bezpośrednio lub pośrednio) przez pozostałe transakcje – patrz: Rys. 2. Transakcja genesis jest opisana w sposób następujący. Na początku mieliśmy adres, którego saldo zawierało wszystkie tokeny. Następnie, transakcje oryginalne wysłały te tokeny na kilka innych adresów „założycielskich". Należy jednak podkreślić, że wszystkie tokeny zostały utworzone w ramach transakcji pierwotnej genesis (tzn. nie zostaną utworzone żadne inne tokeny) i żadna kopalnia - w sensie górnicy - nie otrzyma nagród pieniężnych".

Krótka nota terminologiczna: strony/miejsca to transakcje przedstawione na grafie tangle. Sieć składa się z węzłów; tzn. węzły są jednostkami, które wysyłają transakcje.

Teraz zasadniczo należy wykonać następujące zadanie: aby wysłać transakcję, użytkownicy muszą podjąć starania w celu zaakceptowania (zatwierdzenia) innych transakcji i tym samym przyczynić się do podniesienia bezpieczeństwa sieci. Zakłada się, że węzły mają możliwość weryfikacji, czy zatwierdzone transakcje nie są ze sobą sprzeczne oraz odmowy akceptacji (bezpośrednio lub pośrednio) jeżeli są2. W miarę jak transakcja uzyskuje coraz więcej akceptacji (bezpośrednich lub pośrednich), staje się ona jednocześnie coraz powszechniej akceptowana w systemie; innymi słowy: akceptowanie przez nie podwójnie wydatkowanych transakcji staje się coraz trudniejsze (a nawet praktycznie niemożliwe). Trzeba jednak pamiętać, że nie narzucamy żadnych reguł w zakresie wyboru transakcji podlegający akceptacji; zamiast tego, dowodzimy, że jeżeli duża liczba węzłów będzie stosować się do zasady “referencyjnej" (co wydaje się uzasadnionym założeniem, w szczególności w kontekście systemu IoT, w którym węzły stanowią

1 Jest to najprostsze z możliwych podejście; można także rozważać podobnie działające systemy, w których transakcje muszą zatwierdzić k innych transakcji dla ogólnej liczby k ≥ 2, lub stworzyć bardziej złożone zasady 2 Jeżeli dany węzeł wysyła nową transakcję, która zatwierdza transakcje sprzeczne ze sobą, to rodzi się ryzyko, że pozostali użytkownicy nie zatwierdzą tej nowej transakcji i ulegnie ona zapomnieniu

Page 3: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

wyspecjalizowane czipy zawierające pre-instalowany firmware), to najlepszym rozwiązaniem jest, aby każdy stały węzeł przestrzegał reguły tego samego rodzaju3.W szczególności zaś, aby wysłać transakcję, węzeł przeprowadza następujące operacje:

Najpierw dokonuje wyboru dwóch innych transakcji do akceptacji (generalnie, obie transakcje mogą pokrywać się) zgodnie z pewnym algorytmem.

Następnie sprawdza, czy obie transakcje nie są ze sobą sprzeczne, a jeżeli tak, to odmawia ich akceptacji.

Aby transakcja została uznana za ważną, węzeł musi najpierw rozwiązać zagadkę kryptograficzną (która może okazać się bardzo wymagająca obliczeniowo) zbliżoną do tych, które są rozwiązywane w kopalniach bitcoinowych (np. musi odnaleźć wartość jednorazową (nonce) taką, że jej wartość haszująca wraz z pewnymi danymi z transakcji zatwierdzonych będzie mieć pewną postać, np. będzie mieć co najmniej pewną stałą liczbę zer na początku).

Warto zauważyć, że generalnie mamy do dyspozycji sieć asynchroniczną, w której węzły niekoniecznie widzą ten sam zestaw transakcji. Należy podkreślić także, że tangle może zawierać transakcje sprzeczne (będące ze sobą w konflikcie). Węzły nie zawsze muszą osiągać konsensus, w którym ważne4 transakcje będą uprawnione do rejestracji w księdze (wszystkie transakcje mogą się w niej znaleźć); ale w przypadku transakcji sprzecznych, węzły muszą podjąć decyzję, które zostaną osierocone (tzn. te które nie będą pośrednio zatwierdzane przez nadchodzące transakcje). Główna zasada wykorzystywana przez węzły w celu podjęcia decyzji o uznaniu jednej z dwóch transakcji pozostających w konflikcie jest następująca: węzeł uruchamia wielokrotnie algorytm wyboru wierzchołka (tip selection algorithm)5 (patrz: Rozdział 4.1) i sprawdza, która z dwóch transakcji wykazuje większe prawdopodobieństwo (pośredniej) akceptacji przez wybranych wierzchołek. Dla zilustrowania: jeżeli po 100 uruchomieniach algorytmu wyboru wierzchołka, dana transakcja została wytypowana 97 razy, to możemy przyjąć, że została potwierdzona z pewnością na poziomie 97%.

Zajmijmy się teraz następującą kwestią (patrz: [4]): co stanowi zachętę dla węzłów do upowszechniania transakcji? W zasadzie w naszej konfiguracji, węzły nie mają żądnego uzasadnienia, aby transakcji nie upowszechniać. Każdy węzeł oblicza pewne dane statystyczne, pewne elementy, których zawierają informacje na temat liczby nowych transakcji przekazanych przez sąsiada. Jeżeli wybrany węzeł okaże się „zbyt leniwy", zostanie on wykluczony przez swoich sąsiadów. A zatem nawet jeżeli dany węzeł nie wystawia transakcji (tym samym nie posiada bezpośredniego bodźca do dzielenia się nowymi transakcjami, które będą zatwierdzać jego własne), to w dalszym ciągu ma motywacje do dalszej, ciężkiej pracy.

3 Szersze omówienie tej kwestii przedstawiono w rozdziale 4.14 tzn. transakcje wystawione zgodnie z protokołem5 Zgodnie z powyższym, istnieją uzasadnione podstawy do założenia, że pozostałe węzły zastosują (niemal) identyczny algorytm wyboru wierzchołka

Page 4: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

W kolejnych Rozdziałach, po przedstawieniu wybranych systemów notacji w Rozdziale 2, omawiamy algorytmy umożliwiające wybór nowych transakcji podlegających akceptacji, zasady pomiaru ogólnej liczby akceptacji transakcji (Rozdział 3, w szczególności Rozdział 3.1) oraz potencjalne scenariusze ataków (Rozdział 4). Jednocześnie, w mało prawdopodobnym przypadku odstraszenia czytelnika przedstawianymi wzorami, można przejść od razu do części „Wnioski" znajdującej się na końcu.

Warto zauważyć, że koncepcje wykorzystania DAG w kontekście kryptowalut pojawiły się już jakiś czas temu, patrz: [3, 5, 6, 7, 10]. Szczególnie chcemy tu zwrócić uwagę na pracę [6], która przedstawia tzw. GHOST protocol i proponuje wprowadzenie modyfikacji do protokołu bitcoinowego w postaci zmiany struktury księgi głównej z łańcucha blockchainowego na drzewko; w pracy tej wykazano, że tego typu zmiana umożliwia zredukowanie liczby potwierdzeń oraz pozwala podnieść ogólne bezpieczeństwo sieci. W pracy [7], autorzy rozważają model kryptowalut oparty na DAG; w odróżnieniu od naszego modelu, strony DAG stanowią bloki (a nie poszczególne transakcje), górnicy konkurują tu ze sobą, aby zdobyć prawo do opłat i można (podobnie jak Bitcoinie) tworzyć nowe tokeny. Warto także odnotować, że w pracy [5], przedstawiono rozwiązanie trochę zbliżone do proponowanego przez nas, chociaż nie zawiera ono żadnych szczególnych strategii akceptacji wierzchołków. Chcemy także wspomnieć o innym podejściu [2, 8], które zmierza do umożliwienia w ramach Bitcoina dokonywania mikropłatności poprzez utworzenie kanałów płatniczych typu peer-to-peer.

2 Wagi i inne narzędzia

W tym rozdziale przedstawiamy (własną) definicję wagi transakcji oraz związane koncepcje. Waga transakcji jest proporcjonalna do ilości pracy włożonej przez węzeł wysyłający; w praktyce, waga może przyjmować jedynie trzy wartości 3n, gdzie n jest liczbą dodatnią i zawiera się w pewnym niepustym interwale akceptowalnych wartości6.

Jednym z terminów, które musimy zdefiniować jest skumulowana waga transakcji: jest ona zdefiniowana jako waga własna transakcji plus suma własnych wag wszystkich transakcji zatwierdzających naszą transakcję, bezpośrednio lub pośrednio. Ten algorytm skumulowanych wag został przedstawiony na Rys. 1. Okna przedstawiają transakcje; nieduże liczby w narożniku SE oznaczają wagi własne transakcji, a (większe) wytłuszczone liczby stanowią wagi skumulowane. Na przykład, transakcje F są akceptowane bezpośrednio lub pośrednio przez transakcje A, B, C i E. Skumulowana waga F wynosi 9 = 3 + 1 + 3 + 1 + 1, czyli sumę wag F oraz A, B, C i E.

Na rysunku górnym, jedyne transakcje niezaakceptowane (“wierzchołki") to transakcje A i C. Kiedy nowa transakcja X pojawia się i akceptuje A oraz C, staje się jednocześnie jedynym wierzchołkiem; skumulowana waga wszystkich pozostałych transakcji wzrasta o 3 (co stanowi wagę X).

6 Interwał ten powinien być także skończony – patrz: “Atak dużej skali/wagi" w Rozdziale 4

Page 5: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

Rys. 1: (Re)kalkulacja wag

Rys. 2: Kalkulacja punktacji/wyników (w kółku)

W celu omówienia algorytmów akceptacji, musimy wprowadzić pewne inne zmienne. Przede wszystkim dla samej lokalizacji (tzn. transakcji) tangleu, wprowadzamy dane dotyczące jego

wysokości, stanowiącej długość najdłuższej zorientowanej ścieżki prowadzącej do genesis;

głębokości, stanowiącej długość ścieżki skierowanej w przeciwnym kierunku prowadzącej do danego wierzchołka.

Page 6: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

Na przykład, na Rys. 2, G ma wysokość 1 i głębokość 3 (z uwagi na ścieżkę biegnąca w kierunku przeciwnym F, B, A), podczas gdy D ma wysokość 2 oraz głębokość 2. Przedstawmy również koncepcję punktacji (score). Z definicji, punktacja transakcji stanowi sumę wag własnych zatwierdzonych przez te transakcje plus waga własna transakcji: Rys. 2. I znowu, jedynymi wierzchołkami są wierzchołki oznaczone jako A i C. Transakcja A zatwierdza (bezpośrednio lub pośrednio) transakcje B, D, F i G, a zatem punktacja A wynosi: 1 + 3 + 1 + 3 + 1 = 9. Analogicznie, punktacja C wynosi 1 + 1 + 1 + 3 + 1 = 7.

Zauważmy także, że wśród powyższych obliczeń, waga skumulowana stanowi dla nas najważniejszy wynik (chociaż wysokości, głębokości oraz wyniki obliczeń pojawia się także na krótko w naszych omówieniach).

3 Stabilność systemu oraz pułapy (limity)

Niech L(t) stanowi ogólną liczbę wierzchołków (tzn. niezatwierdzonych transakcji) w systemie w czasie t. Można oczywiście spodziewać się, że proces stochastyczny L(t) zachowa stabilność7 (mówiąc nieco bardziej precyzyjnie: zachowa dodatnią powtarzalność, patrz: Rozdział 4.4 oraz 6.5 pracy [9] w celu zapoznania się z definicjami formalnymi; w szczególności, dodatnia powtarzalność oznacza, że granica P│L(t) = k] podobnie jak t →∞ powinna istnieć i mieć wartość dodatnią dla wszystkich k ≥ 1). Intuicyjnie wyczuwamy, że L(t) powinno oscylować wokół wartości stałej i nie odbiegać w nieskończoność (pozostawiając za sobą wiele niezatwierdzonych transakcji).

W celu przeprowadzenia analizy właściwości stabilności L(t), musimy dokonać kilku założeń. Niech λ jest wartością oznaczającą wielkość przepływu danych wejściowych (Poissona) transakcji; dla uproszczenia, załóżmy, że na chwilę obecną, wartość ta jest stała. Przyjmijmy, że wszystkie urządzenia mają do dyspozycji mniej więcej tę samą moc obliczeniową oraz niech h (L, N) oznacza średni czas niezbędny urządzeniu do wykonania obliczeń koniecznych do wysłania transakcji w sytuacji, gdy istnieje L wierzchołków, a łączna liczba transakcji równa jest N. Najpierw rozważamy strategię, w której w celu wysłania transakcji, węzeł dokonuje po prostu losowego wyboru dwóch wierzchołków i akceptuje je. W takim przypadku, można założyć, że rozkład Poissona w odniesieniu do akceptacji różnych wierzchołków jest niezależny i ma wielkość λ/L (co jest zgodne z tezą 5.2 przedstawiona w pracy [9]).

Dlatego też

P[nikt nie akceptuje danego wierzchołka w czasie h(L;N)] = exp (1)

oznacza to, że oczekiwane przyrosty łącznej liczby wierzchołków w momencie wysyłania transakcji przez nasze urządzenie będą równe

7 Przy dodatkowym założeniu, że proces zachowuje homogeniczność w czasie

Page 7: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

(2)(w powyższym wzorze „1" odpowiada nowemu wierzchołkowi utworzonemu przez transakcję, a drugie wyrażenie informuje nas o przewidywanej liczbie „wymazanych" wierzchołków). Teraz L(t) stanowi tak naprawdę losowe, nieprzerwane przejście przez ciąg N = {1, 2, 3, …}, wraz z sąsiednimi transakcjami. Istotnie, jeżeli dwie wybrane transakcje zostały wcześniej zaakceptowane przez inne, to proces przeskakuje o jedną jednostkę w lewo; jeżeli obydwie wybrane transakcje nie zostały zatwierdzone, to proces przeskakuje o jedną jednostkę w prawo, w ostatnim możliwym przypadku pozostanie w tym samym miejscu.

Teraz, aby zrozumieć typowe zachowanie procesu należy zauważyć, że przesunięcie w (2) ma wartość dodatnią dla niedużych wartości L oraz ujemną (przynajmniej w sytuacji, gdzie h(L, N) = o(L) występuje jako as L →∞ lub po prostu przyjmując założenie, że główny wkład w czas obliczania/upowszechniania nie wynika z obsługi wierzchołków) w przypadku L o dużej wartości. „Typowe" wartości L pojawić się mogą w miejscach, w których (2) zanika, tzn. L0 ma wartość

(3)Jest oczywiste, że w ten sposób zdefiniowana L0 jest jednocześnie typowym rozmiarem zbioru wierzchołków. Jednocześnie, przewidywany czas konieczny na zatwierdzenie transakcji po raz pierwszy oscyluje wokół wartości L0/λ.

Warto także zauważyć, że (przynajmniej w sytuacji, gdy węzły podejmują próbę akceptacji wierzchołków) w dowolnym ustalonym czasie zbiór transakcji, które były wierzchołkami w pewnym momencie s ∊ [t, t+h (L0, N)] z reguły stanowi zbiór odcięty w tym sensie, że dowolna ścieżka z transakcji wysłanej w czasie t’ > t do genesis musi przejść przez ten właśnie zbiór. Trzeba pamiętać, że rozmiar zbiorów odciętych staje się od czasu do czasu mniejszy; można wykorzystywać te małe zbiory jako punkty kontroli dla potencjalnych nowych drzew DAG oraz innych zadań.

Niestety opisana powyżej, “czysto losowa" strategia nie jest bardzo dobra w praktyce, ponieważ nie zachęca do akceptacji wierzchołków: “leniwy" użytkownik może zawsze zatwierdzić stałą parę starych transakcji (i nie przyczyniać się do akceptacji nowszych) bez kary za takie zachowania. Aby uniemożliwiać tego typu procedury, należy przyjąć strategię, która w jakimś sensie jest uprzedzona wobec wierzchołków o wyższej punktacji.

Przykład takiej strategii jest przedstawiony poniżej. Określić parametr α ⋲ (0, 1); następnie wybrać dwie transakcje, które mają być zaakceptowane pomiędzy wierzchołkiem αL (w odniesieniu do ich wyników). Te same względy, co określone powyżej mogą implikować, że typowy rozmiar zbioru wierzchołków będzie wyglądać w sposób następujący:

(4)Jeżeli chodzi o przewidywany czas akceptacji transakcji po raz pierwszy sytuacja jest nieco bardziej skomplikowana. Przed przystąpieniem do omówienia przewidywanego czasu akceptacji

Page 8: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

transakcji po raz pierwszy należy zauważyć, że rozróżniamy zasadniczo dwa reżimy (patrz: Rys. 3).

Niskie obciążenie: typowa liczba wierzchołków nie jest duża, a często wynosi 1. Sytuacja ta może wystąpić przy wystarczająco niskim przepływie, kiedy to nie występuje prawdopodobieństwo, że kilka różnych transakcji akceptuje ten sam wierzchołek; jednocześnie, jeżeli opóźnienie jest bardzo niskie i urządzenia obliczają żądane wartości szybko, to nawet w sytuacji, gdy ich przepływ jest dość duży, prawdopodobieństwo wystąpienia wielu wierzchołków jest dość niskie. Dodatkowo, musimy założyć, że nie ma żadnych atakujących, którzy podjęliby próbę sztucznego „rozdmuchania” liczby wierzchołków.

Duże obciążenie: typowa liczba wierzchołków jest dość duża. Sytuacja to może mieć miejsce, kiedy przepływ transakcji jest dostatecznie duży, a opóźnienia w obliczeniach w połączeniu z opóźnieniami sieci, czynią akceptację prawdopodobnym, że kilka różnych transakcji zaakceptuje ten sam wierzchołek.8

Rys. 3: Tangle i typowe dla niego zbiory wierzchołków (zacienione) przy niskim i wysokim obciążeniu. Warto podkreślić, że w tym ostatnim przypadku, niektóre transakcje mogą być umieszczone w długiej w kolejce zanim zostaną zaakceptowane po raz pierwszy.

Oczywiście podział ten jest dość nieformalny i nie ma ostrej granicy pomiędzy tymi dwoma reżimami; nie mniej jednak, stwierdzamy, że omówienie tych dwóch zasadniczo różnych sytuacji stanowi cenną lekcję.

W przypadku reżimu o niskim obciążeniu, sytuacja ta jest względnie prosta: pierwsza akceptacja ma miejsce w średnim czasie w kolejności λ-1, ponieważ pierwsza (lub jedna z pierwszych) przychodzących transakcji zatwierdzi naszą transakcję.

8 W tym miejscu chcemy czytelnikowi przypomnieć, że nie podejmujemy próby narzucenia żadnej szczególnej strategii wyboru, a atakujący może wybierać wierzchołki w dowolnie wybrany przez siebie sposób, jaki uzna za wygodny

Page 9: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

Zajmijmy się obecnie reżimem dużego obciążenia. Przede wszystkim, jeżeli transakcja nie dotarła do wierzchołka αL, to czas oczekiwania może być dość długi w porządku exp(cL0

(α)) (ponieważ następuje zniesienie w kierunku L0

(α), ponieważ mniejsze wartości L oraz wielkość zbioru wierzchołków musi przybrać wartość znacznie mniejszą niżL0

(α), aby transakcja ta została uwzględniona, jako potencjalny kandydat do akceptacji). Dlatego dobrą strategią dla właściciela takiej transakcji będzie wysłanie dodatkowej, pustej transakcji nawiązującej do pierwszej, w nadziei, że ta nowa transakcja znajdzie się na szczycie αL. Podobnie, jak w przykładzie powyżej, jeżeli transakcja jest jedną z transakcji znajdujących się na szczycie jako jedna z transakcji αL, to przy stałym prawdopodobieństwie czas oczekiwania wyniesie ok. L0/λ jednostek zanim zostanie zaakceptowana po raz pierwszy (zauważmy, że αL0

(α)= L0). Jeżeli jednak takie zdarzenie nie miało miejsca, to transakcja może spaść poniżej wierzchołka αL i wtedy właściwą strategią będzie jej upowszechnianie za pośrednictwem dodatkowej, pustej transakcji.

Inną prostą strategią będzie wybranie losowe powiedzmy pięciu wierzchołków (spośród wszystkich) i akceptacja dwóch najwyższych z tych pięciu. I znowu, jeżeli Wasza transakcja nie

została zaakceptowana w czasie , warto podjąć próbę wypromowania jej za pomocą dodatkowej, pustej transakcji.

Zauważamy także, że strategia akceptacji może być jeszcze bardziej zmodyfikowana, aby uniemożliwiać przepuszczanie spamów. Na przykład, węzły mogą preferować wierzchołki o większej wadze utrudniając spamerom uzyskanie akceptacji ich transakcji

Teraz okazuje się, że strategie akceptacji w oparciu o wysokości i punktację mogą być podatne na pewne typy ataków – patrz: Rozdział 4.1. Będziemy omawiać nieco szerzej strategie9 obrony przed takimi atakami w tym właśnie Rozdziale. Nie mniej jednak warto w dalszym ciągu rozważyć najprostszą strategię wyboru wierzchołka (“akceptacja dwóch, losowo wybranych wierzchołków"), ponieważ jej analiza jest dość łatwa i może nam dostarczyć informacji na temat ilościowego i jakościowego zachowania się systemu.

Wnioski:1. Rozróżniamy dwa reżimy – o niskim obciążeniu i wysokim obciążeniu zgodnie z Rys. 3.2. W reżimie niskiego obciążenia, z reguły nie ma zbyt wielu wierzchołków (jeden, może dwa) i wierzchołek jest zatwierdzany po raz pierwszy w czasie , gdzie λ stanowi prędkość przepływu transakcji wejściowych.3. W reżimie dużego obciążenia, typowa liczba wierzchołków jest uwarunkowana przyjętą strategią akceptacji (tzn. od sposobu w jaki nowa transakcja wybierze dwie pozostałe transakcje w celu akceptacji).4. W przypadku strategii “akceptuj dwa losowo wybrane wierzchołki", typowa liczba wierzchołków jest podana w (3). Można wykazać, że strategia ta jest optymalna w odniesieniu

9 W zasadzie, autor przeczuwa, że strategia akceptacji wierzchołków stanowi jeden z najważniejszych składników umożliwiających zbudowanie kryptowaluty opartej na tangle. To właśnie tutaj ukrytych jest wiele wektorów ataków. Ponadto, ponieważ z reguły nie ma możliwości narzucenia szczególnej strategii akceptacji wierzchołka, węzły muszą mieć możliwość swobodnego jej wyboru wiedząc, że duża liczba pozostałych węzłów ją posiada.

Page 10: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

do typowej liczby wierzchołków; nie mniej jednak, nie jest praktycznym rozwiązaniem przyjmowanie jej, ponieważ nie sprzyja ona akceptacji wierzchołków.5. W przypadku strategii “akceptuj dwa losowo wybrane wierzchołki spośród αL(t)" (która pozbawiona jest zalet, o których mowa powyżej), typowa liczba wierzchołków jest podana w (4).6. Nie mniej jednak konieczne jest stosowanie bardziej rozbudowanych strategii; opis rodziny takich strategii jest przedstawiony w Rozdziale 4.1.7. W reżimie dużych obciążeń, typowy czas akceptacji wynosi Φ(h), gdzie h jest średnim czasem obliczania/upowszechniania w węźle. Nie mniej jednak, jeżeli pierwsza akceptacja nie wystąpiła w tym przedziale czasowym (interwał), warto (aby wystawca/odbiorca) podjął próbę upowszechnienia transakcji za pomocą pustej transakcji.

3.1 Jak szybko z reguły przyrasta waga skumulowana?

W reżimie o niskim obciążeniu, po kilkukrotnym zaakceptowaniu naszej transakcji, jej skumulowana waga wzrośnie z prędkością λw, gdzie w oznacza średnią wagę transakcji ogólnej, ponieważ zasadniczo wszystkie nowe transakcje będę pośrednio odnosić się do naszej transakcji.

Jeżeli idzie o reżim o dużym obciążeniu, jak zauważyliśmy we wcześniejszych częściach tego Rozdziału, jeżeli transakcja jest dość „dojrzała” wiekowo i ma duża masę skumulowaną, przyrost wagi następuje z prędkością λw z tych samych powodów. Przekonaliśmy się również, że na początku transakcja może wymagać czasu, aby została zaakceptowana i jest oczywiste, że jej waga skumulowana zachowuje się w sposób losowy w tym czasie. Aby przekonać się jak szybko waga ta wzrośnie po uzyskaniu przez transakcję kilku akceptacji określmy (dla ułatwienia zaczynamy liczyć czas w momencie, kiedy transakcja została utworzona) jako H(t) przewidywaną skumulowaną wagę w czasie t i jako K(t) przewidywaną liczbę wierzchołków akceptujących naszą transakcję w czasie t (lub prościej: „nasze wierzchołki"). Skróćmy także h := h(L0,N). Musimy także przyjąć uproszczone założenie, że ogólna liczba wierzchołków pozostaje w przybliżeniu stała (równa L0) w czasie. Działania prowadzimy w oparciu o strategię “zatwierdź dwa losowo wybrane wierzchołki"; oczekuje się, że wynik będzie w przybliżeniu taki sam jak w przypadku strategii „zatwierdź dwa losowo wybrane wierzchołki na wierzchołku αL(t)".

Należy podkreślić, że transakcje wpływające do system w czasie t z reguły wybierają dwie transakcje do akceptacji w oparciu o stan systemu w czasie t - h. Niue ma większych trudności z obliczeniem, że prawdopodobieństwo, że zaakceptuje ona co najmniej jeden z „naszych”

wierzchołków wynosi . Analogicznie, np. do Przykładu 6.4 z opracowania [9], możemy zapisać

i tym samym wywnioskować następujące równanie

Page 11: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

(5)Aby móc wykorzystać (5), musimy najpierw obliczyć K(t). Nie jest od razu oczywiste w jaki

sposóbtego dokonać, ponieważ wierzchołek w czasie t - h może nie być wierzchołkiem w czasie t, a w sytuacji, gdy nowa transakcja zatwierdzi taki wierzchołek łączna liczba wierzchołkówakceptujących pierwotną transakcję wzrośnie o 1. Teraz należy zaobserwować, czyprawdopodobieństwo, że wierzchołek w czasie t - h pozostanie wierzchołkiem w czasie t wynosiok. 1/2, przypomnijmy sobie wzory (1) oraz (3). A zatem, w czasie t zasadniczo połowa K(t-h)“poprzednich" wierzchołków pozostanie wierzchołkami, podczas gdy pozostała połowa będzie zaakceptowana co najmniej jednokrotnie. Niech A oznacza zbiór tych wierzchołków (w przybliżeniu) K(t - h)=2 w czasie t – h, które pozostały wierzchołkami w czasie t, oraz zbiór innych wierzchołków K(t - h)=2 (które już zostały zaakceptowane) nie jest oznaczony jako B. Niech p1

będzie prawdopodobieństwem, że nowe transakcje zatwierdzą co najmniej 1 transakcję z B i niezatwierdzą żadnej transakcji z A. Ponadto, niech p2 będzie oznaczać prawdopodobieństwo, że

obie zaakceptowane transakcje należą do A. jest oczywiste, że p1 oraz p2 są odpowiednio prawdopodobieństwami, że bieżąca liczba „naszych" wierzchołków wzrasta lub zmniejsza się o 1 w chwili pojawienia się nowej transakcji. Mamy zatem

(aby obliczyć pierwsze wyrażenie, należy zauważyć, że p1 równe jest prawdopodobieństwu, że obydwa zaakceptowane wierzchołki należą do B plus dwukrotność prawdopodobieństwa, że pierwszy wierzchołek będzie należeć do B, a drugi nie będzie należeć do . Analogicznie do (5), odmienne dla K(t) równanie ma postać:

(6)Trudno jest rozwiązać (6) dokładnie, więc dokonujemy dalszego uproszczenia. Po pierwsze, zauważamy, że po czasie, kiedy K(t) osiąga poziom "L0 dla stałej wartości , przyrasta ona bardzo szybko niemal do L0. Teraz, kiedy K(t) jest niewielkie w porównaniu z L0, możemy pominąć ostatni czynnik po prawej stornie (6). Jednocześnie podstawiając do K(t - h) K(t)

, uzyskujemy uproszczoną wersję (6) (przypomnijmy sobie, że ):

(7)Przy warunku granicznym K(0) = 1. To równanie znajduje swoje rozwiązanie w taki sposób

Page 12: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

(8)

A zatem wykorzystując logarytmy z (8), widzimy, że czas, w którym K(t) osiągnie wynosi w przybliżeniu

(9)

Wracając do (5) (i podobnie jak w wcześniej, usuwając ostatnie wyrażenie z prawej strony) wyliczamy, że w okresie „adaptacji" (tzn. t ≤ t0 z t0 jak w (9)), prawdziwe jest równanie

A zatem

(10)

Należy w tym miejscu przypomnieć czytelnikowi, zgodnie z powyższym, że po okresie adaptacyjnym, skumulowana waga H(t) zasadniczo przyrasta w sposób liniowy z prędkością λw. Chcemy podkreślić, że “przyrost wykładniczy" (podobnie jak w równaniu (10)) nie oznacza, że skumulowana waga rośnie “bardzo szybko" w okresie adaptacyjnym; jej przebieg jest bardziej zgodny z przykładem przedstawionym na Rys. 4.

Chcemy także zwrócić uwagę, że obliczenia przedstawione w niniejszym rozdziale można w prosty sposób zaadaptować do sytuacji, w której węzeł odnosi się średnio do s > 1 transakcji. Z tego względu, należy zastąpić 2 wartością s w (2) (ale nie w (5)!) oraz ln 2 przez ln s w przykładach (3) - (4) w tym (7)-(10).

Wnioski:1. W reżimie o niskim obciążeniu, po uzyskaniu przez nasze transakcje kilkukrotnych akceptacji, ich skumulowana waga wzrośnie z prędkością λw, gdzie w oznacza średnią wagę transakcji generycznej (ogólnej).2. W reżimie o dużym obciążeniu, ponownie, po uzyskaniu przez nasze transakcje kilkukrotnych akceptacji, ich skumulowana waga H(t) najpierw będzie coraz szybciej wzrastać w tzw. okresie adaptacyjnym zgodnie z wzorem (10), a po jego zakończeniu, prędkość przyrostu wagi będzie wynosić λw, patrz: Rys. 4. W rzeczywistości, w odniesieniu do dowolnej strategii, skumulowana

Page 13: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

waga będzie wrastać z tą prędkością po upływie okresu adaptacyjnego, ponieważ zasadniczo wszystkie nowe transakcje będą pośrednio akceptować naszą transakcję.

Skumulowana waga

Okres adaptacji czas

Rys. 4: Wzrost wagi skumulowanej

3. Można przyjąć, że okres adaptacyjny jest to czas upływający do chwili zaakceptowania naszej transakcji przez większość wierzchołków (w sposób pośredni). Typowa długość okresu adaptacji jest podana w (9).

4 Potencjalne scenariusze ataków

Przyjmijmy następujący scenariusz ataków:1. atakujący płaci handlującemu i otrzymuje towary po tym jak ten ostatni uzna, że transakcja uzyskała wystarczająco dużą wagę skumulowaną;2. atakujący wysyła transakcję podwójnego wydatkowania środków;3. atakujący wysyła dużą liczbę drobnych transakcji (bardzo agresywnie wykorzystując całą swoją moc obliczeniową), które nie akceptują oryginalnej transakcji, ani bezpośrednio, ani pośrednio, ale akceptują transakcję podwójną;4. należy pamiętać, że atakujący może posiadać dużą liczbę tożsamości Sybil i nie musi akceptować wierzchołków;

Page 14: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

Transakcja legalna

Double spending – podwójnie wydatkowana

Rys. 5: Atak “dużej skali”

5. jako alternatywę dla p. 3, atakujący może wykorzystać całą swoją moc obliczeniową w celu wysłania “dużej” transakcji podwójnego wydatkowania (tzn. o bardzo dużej wadze własnej), która zaakceptuje kilka transakcji zanim zatwierdzi tę, która jest legalna (tę, w której dokonuje płatności na rzecz kupca);

6. ma on nadzieję, że jego “sub-DAG" uzyska przestrzeń znacznie większą niż DAG główny oraz że DAG będzie kontynuować wzrost w oparciu o transakcje podwójnego wydatkowania, podczas gdy legalna transakcja zostanie odrzucona (patrz: Rys. 5).

Tak naprawdę, jak zobaczymy na przykładzie poniżej, strategia jednej duże transakcji podwójnego wydatkowania zwiększa szanse atakującego na sukces. Co więcej, w “idealnej" sytuacji, w tym modelu matematycznym atak ten zawsze jest skuteczny.

Niech zatem W(n) oznacza czas niezbędny do uzyskania wartości jednorazowej, która daje transakcji podwójnego wydatkowania wagę o wartości co najmniej 3 n. Można założyć, że W(n)

jest wykładniczo dystrybuowaną losową wartością o parametrze (tzn. z oczekiwaniem ), gdzie μ jest miarą mocy obliczeniowej atakującego.

Należy założyć, że kupiec akceptuje legalną transakcję, kiedy jej skumulowana waga wynosi co najmniej w0 (co następuje t0 razy po transakcji oryginalnej); po tym czasie możemy się zasadnie spodziewać, że skumulowana waga wzrośnie z prędkością liniową λw, gdzie λ stanowi ogólną prędkość transakcji przychodzących do systemu (wystawionych przez uczciwych użytkowników) a w stanowi średnią wagę ogólnej (generycznej) transakcji. Niech w1 = λwt0, oznacza typową wagę legalnej gałęzi w tym czasie.

Jeżeli [x] oznacza najmniejszą liczbę całkowitą większą niż lub równą x, niech n0 = , w taki sposób, że 3n0

≥ w1 (w rzeczywistości jeżeli w1 ma duża wartość). Jeżeli w okresie czasu o długości t0 atakujący zdołał obliczyć wartość jednorazową, która daje wagę co najmniej 3n0

, to atak jest skuteczny. Prawdopodobieństwo tego zdarzenia wynosi

Page 15: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

(przynajmniej w sytuacji, gdy ma niską wartość, co jest uzasadnionym założeniem). Następnie, jeżeli ten “bezpośredni" atak nie powiódł się, atakujący może kontynuować poszukiwania wartości, która pozwoli mu uzyskać wagę 3n dla n > n0 w nadziei, że kiedy ją uzyska, łączna waga legalnej gałęzi będzie mniejsza niż 3n. Teraz prawdopodobieństwo tej sytuacji wynosi

Oznacza to, że chociaż powinna mieć niską wartość, na każdym „poziomie" n, atak jest skuteczny ze stałym prawdopodobieństwem. Dlatego, w ostatecznym efekcie atak odniesie

sukces a.s. Właściwie, typowy czas do chwili skutecznego ataku wynosi w przybliżeniu . Chociaż wielkość ta może być bardzo duża, to w dalszym ciągu prawdopodobieństwo, że „pierwszy” atak (tzn. w czasie t0) powiedzie się wcale nie jest takie małe. Dlatego też dochodzimy do następującego wniosku: potrzebne nam są działania prewencyjno-obronne. Na przykład, odgórne ograniczenie wagi własnej, lub ustawienie jej stałej wartości (zgodnie z treścią Rozdziału 3, to ostatnie może nie być najlepszym rozwiązaniem, ponieważ nie oferuje ono dostatecznej ochrony przed spamem).

Omówmy teraz sytuację, w której maksymalna waga jest ograniczona pewnym pułapem wynoszącym m i obliczmy prawdopodobieństwo skutecznego ataku.

W świetle powyższej dyskusji (oraz wykorzystując intuicję ogólną wynikającą z teorii dużych odchyleń (Theory of Large Deviations) [11]), w sytuacji, gdy atakujący zechce podłączyć się do głównego łańcucha, powinien wygenerować tylko transakcje o maksymalnej dopuszczalnej wadze. Załóżmy, że dana transakcja uzyskała skumulowaną wagę w0 w czasie t0 od chwili wysłania. Załóżmy także, że okres adaptacji dla tej transakcji już upłynął, a zatem jej skumulowana waga wzrasta liniowo z prędkością λw. Teraz, atakujący chce podwójnie wydatkować tę samą transakcję; w tym celu, w czasie10 kiedy pierwsza transakcja została wysłana, przygotowuje on sekretnie transakcje podwójnie wydatkowaną i zaczyna generować także inne transakcje o wadze m które akceptują podwójną. Jeżeli jednocześnie (kupiec podejmie decyzję o akceptacji legalnej transakcji) wplecione transakcje atakującego przeważą legalny podtangle, to atak podwójnego wydatkowania okaże się skuteczny. Jeżeli tak się jednak nie stanie, to podwójnie wydatkowane transakcje nie zostaną zatwierdzone przez inne (ponieważ legalne transakcje uzyskają wyższą skumulowaną wagę i zasadniczo wszystkie nowe wierzchołki pośrednio zatwierdzą je) w związku z czym transakcja ta zostanie osierocona.

Podobnie jak we wcześniejszym przykładzie, niech μ oznacza moc obliczeniową atakującego. Niech G1, G2, G3, … oznaczają i.i.d. Losowe zmienne wykładnicze mają parametr μ/m (tzn. o przewidywanej wartości μ/m); oznaczmy również . Jest oczywiste, że V1, V2,

V3 … równe są i.i.d. Wartości wykładniczych zmiennych losowych mają parametr 1.

10 A nawet wcześniej; przykład ten omówimy nieco później

Page 16: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

Załóżmy, że w czasie t0 kupiec podjął decyzje o zaakceptowaniu transakcji (przypomnijmy sobie, że posiada ona wagę skumulowana w0 w tym czasie). Oceńmy teraz prawdopodobieństwo, że atakujący skutecznie wykona transakcje podwójnego wydatkowania. Niech M(θ) = (1-θ)_1 będzie momentem generującym funkcję (patrz: Rozdział 7.7 pozycji [12]) rozkładu wykładniczego o parametrze 1. Wiadomo, że (poza materiałem ogólnym w pozycji [11], warto zapoznać się z tezą 5.2 w Rozdziale 8.5 pozycji [12], nawet jeśli nie do końca wyjaśnia on fakt istnienia nierówności a tylko przybliżonej równości), która mówi, że

(11)

Gdzie jest transformacją Legendre’a 1nM(-θ). Zauważmy, że generalnie prawdziwe jest, że φ(α) > 0 dla α∊(0, 1) (pamiętajmy, że przewidywana zmienna losowa Exp(1) równa jest 1).

Załóżmy także, że <1 (w przeciwnym razie prawdopodobieństwo, że tangle atakujący rzeczywiście wyprzedzi tangle legalny będzie bliski 1). Teraz, aby przeważyć w0 w czasie t0, atakujący musi być w stanie wystawić co najmniej w0/m (dla uproszczenia pomijamy części całkowite) transakcji o maksymalnej wadze m w czasie t0. Dlatego, używając (11), obliczamy, że prawdopodobieństwo transakcji podwójnego wydatkowania ma nieco bardzie skumulowaną wagę w czasie t0 wynosi w przybliżeniu

(12)

To znaczy, że aby powyższe prawdopodobieństwo było małe potrzebujemy dużej proporcji

oraz niezbyt dużej wartości .

Warto podkreślić, że w czasie t ≥ t0, skumulowana masa legalnych transakcji wynosi w przybliżeniu w0+λw(t - t0) (pamiętajmy, że założyliśmy, iż okres adaptacji upłynął, a zatem waga skumulowana przyrasta z prędkością λw). Analogicznie do (12), można wyliczyć, że prawdopodobieństwo, że transakcja podwójnego wydatkowania będzie mieć większą wagę skumulowaną w czasie t ≥ t0 wynosi w przybliżeniu

Page 17: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

Exp (13)

Warto także zauważyć, że z reguły mamy (ponieważ w okresie adaptacyjnym, skumulowana waga wzrasta z prędkością mniejszą niż λw). W każdym razie, można wykazać, że prawdopodobieństwo osiągnięcia sukcesu przez transakcje podwójnego wydatkowania jest rzędu

Exp (14)

Gdzie a∨ b:= max(a, b). Dla przykładu, niech m = w = 1, μ = 2, λ = 3 (w taki sposób, że moc atakującego jest tylko trochę mniejsza niż pozostałej części sieci). Załóżmy, że transakcja ma

skumulowaną wagę 32 w czasie 12. Wtedy a (14) daje nam górny limit wynoszący ok. 0,29. Jeżeli jednak założymy, że μ = 1 (I zachowamy wartości

pozostałych parametrów), to wtedy , a (14) daje w przybliżeniu 0:00001135, czyli dość znaczącą zmianę.

W powyższej dyskusji warto zauważyć, e, aby system był bezpieczny musi być prawdą, że λw > μ (w przeciwnym razie (14) będzie całkowicie bezużyteczny); tzn. strumień danych wejściowych „uczciwych" transakcji powinien być dostatecznie duży w porównaniu z mocą obliczeniową atakującego. To oznacza konieczność wdrożenia dodatkowych środków zabezpieczających (tzn. punktów kontrolnych) na wczesnym etapie iota.

Jeżeli chodzi o strategie w zakresie podejmowania decyzji, która z dwóch sprzecznych transakcji jest ważna trzeba zachować ostrożność opierając się wyłącznie na skumulowanej wadze. Dzieje się tak dlatego, że może ona być przedmiotem ataku podobnego charakterem do tego, który został opisanych w Rozdziale 4.1 (atakujący może przygotować transakcje podwójnego wydatkowania z góry, zbudować sekretny subchain/subtangle, nazwać go, a następnie upowszechnić go po zaakceptowaniu legalnej transakcji przez kupca). Zamiast tego lepszą metodą rozstrzygania, która z transakcji jest legalna jest metoda opisana w kolejnym Rozdziale: uruchomić algorytm wyboru wierzchołka i przekonać się, która z dwóch transakcji jest (pośrednio) zatwierdzona przez wybrany wierzchołek.

4.1 Atak “parasite chain” (łańcucha pasożytującego) i algorytm wyboru nowego wierzchołka

Rozważmy teraz następujący rodzaj ataku (Rys. 6): atakujący potajemnie konstruuje łańcuch /subtangle, od czasu do czasu nawiązujący do tangleu głównego, w celu uzyskania wyższej punktacji (warto zauważyć, że liczba dobrych wierzchołków jest w przybliżeniu sumą wszystkich wag w tangle głównym, podczas gdy punktacja wierzchołków atakującego zawiera sumę

Page 18: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

wszystkich wag własnych w łańcuchu pasożytów). Jednocześnie, ponieważ opóźnienie sieci nie stanowi problemu dla posiadacza komputera o odpowiednio dużej mocy, który samodzielnie buduje swój łańcuch11, atakujący może być w stanie nadać wyższą wagę wierzchołkom pasożytującym. Na koniec, liczba wierzchołków atakującego może być w sposób sztuczny zwiększona w chwili ataku (poprzez wysłanie dużej liczby transakcji, z których każda będzie akceptować te same transakcje atakującego, patrz: Rys. 6 poniżej), na wypadek, gdyby uczciwe wierzchołki stosowały nieznana strategię prostego wyboru pomiędzy dostępnymi wierzchołkami.

Aby zabezpieczyć się przed tym atakiem, wykorzystamy fakt, że główny tangle musi posiadać większą (aktywną) moc haszującą i tym samym potrafi nadawać wyższą wagę skumulowaną większej liczbie transakcji niż atakujący. Pomysł polega na tym, aby wykorzystać algorytm MCMC (Markov Chain Monte Carlo) w celu wyboru dwóch wierzchołków wzorcowych (referencyjnych).

Niech Hx będzie skumulowana wagą strony (tzn. transakcja reprezentowana na grafie tangleu). Pamiętajmy, że założyliśmy, iż wszystkie wagi są równe 1; zatem skumulowana waga wierzchołka zawsze wynosi 1, a skumulowana waga pozostałych stron wynosi co najmniej 2.

Należy umieścić niektóre cząsteczki (losowo błądzące wartości a.k.a.) na stronie tangleu i pozwolić im przemieszczać się w stronę wierzchołków w losowy12 sposób. Wierzchołki “wybrane" w drodze błądzenia są kandydatami do akceptacji. Algorytm ten można opisać w następujący sposób:

1. uwzględnić wszystkie transakcje o wadze skumulowanej od W do (powiedzmy) 2W (gdzie W jest liczbą dostatecznie dużą, aby została wybrana13);2. umieścić N cząsteczek niezależnie w tym miejscu (N nie jest zbyt dużą liczbą, np. 10 lub zbliżoną14); 3. cząsteczki te będą wykonywać niezależne zauważalne w czasie przemieszczenia “w kierunku wierzchołków" (tzn. przejście od x do y jest możliwe wtedy i tylko wtedy, gdy y zaakceptuje x);4. te dwa losowe błądzenia, które docierają do zbioru wierzchołka jako pierwsze wskażą nasze dwa wierzchołki jako wierzchołki do zaakceptowania;

11 Dzieje się tak, ponieważ atakujący potrafi zawsze zatwierdzić swoją własną transakcję, bez konieczności korzystania z informacji z pozostałej części sieci12 Nie istnieje jedno “kanoniczne" źródło losowości; węzły wykorzystują swoje własne (pseudo) losowe generatory liczb, aby stymulować losowe przejścia13 Chodzi o to, aby umieścić cząsteczkę “głęboko" w tangle (w takim sposób, aby nie znajdowała się na wierzchołku od razu), ale nie zbyt „głęboko " (aby umożliwić jej znalezienie wierzchołka w rozsądnym okresie czasu). Ponadto, odległość [W; 2W] jest dowolna; można wybrać [W; 3W] lub każdy inny interwał.14 I znowu wybór ten jest w dużej mierze dowolny; wykorzystujemy kilka cząsteczek zamiast tylko dwóch w celu zapewnienia dodatkowego bezpieczeństwa. Chodzi o to, że cząsteczka przypadkowo przeskakuje do łańcucha atakującego (który ma być długi), a następnie pozostaje tam przez długi czas, podczas gdy inne wierzchołki będą wybierane jako pierwsze.

Page 19: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

main tangle – tangle głównyparasite chain – łańcuch pasożytujący good tips – uczciwe wierzchołkilazy tips - leniwe wierzchołki

Rys. 6: Algorytm wyboru wierzchołka. Dwa czerwone kółka wskazują próbę podwójnego wydatkowania transakcji.

5. prawdopodobieństwa przejścia liczb błądzących są zdefiniowane w sposób następujący: jeżeli y akceptuje x (oznaczamy to jako y x), to prawdopodobieństwo przejścia Pxy jest

proporcjonalne do exp , to znaczy

(15)gdzie α> 0 jest parametrem, który ma być wybrany (można zacząć od α= 1).

W szczególności, należy zauważyć, że algorytm ten jest “lokalny" – nie trzeba dochodzić do genesis, aby wykonać obliczenia.

Aby sprawdzić, czy algorytm działa zgodnie z zamierzeniami, należy najpierw przyjrzeć się „leniwym wierzchołkom" (tym, które celowo akceptują pewne stare transakcje, aby uniknąć weryfikacji), patrz: Rys. 6. Warto zauważyć, że nawet jeśli cząsteczka znajduje się na stronie zaakceptowanej przez taki wierzchołek, jest mało prawdopodobne, że leniwy wierzchołek zostanie wybrany, ponieważ różnica pomiędzy wagami skumulowanymi będzie bardzo duża, przyjrzymy się teraz wzorowi (15).

Rozważmy teraz taki atak: atakujący sekretnie buduje łańcuch (“łańcuch pasożytujący") zawierający transakcje, która opróżnia jego konto przekazując zawartość na inne transakcje pozostające pod jego kontrolą (na Rys. 6 jest to kółko najbardziej wysunięte w lewą stronę). W pewnym momencie atakujący wysyła transakcję do głównego tangleu (kolejne czerwone kółko na rysunku) i czeka aż, kupiec ją zaakceptuje. Łańcuch pasożytujący związany jest z głównym tangleem (stąd nazwa) w związku z tym jego strony mają dobrą wysokość/punktację (nawet lepszą niż, te które są w tangle głównym), chociaż waga skumulowana nie jest tak duża w łańcuchu. Trzeba także pamiętać, że nie może on nawiązać do głównego tangleu po transakcji kupca. Jednocześnie atakujący może podjąć próbę sztucznego rozdmuchania liczby swoich

Page 20: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

wierzchołków w chwili ataku zgodnie z rysunkiem. Atakującemu chodzi o to, aby węzły nawiązywały do łańcucha pasożytującego, w taki sposób, aby “dobry" tangle został osierocony.

Teraz łatwo zobaczyć, dlaczego algorytm wyboru MCMC o wysokim prawdopodobieństwie nie wybierze jednego z wierzchołków atakującego. Zasadniczo, przyczyna, dla której algorytm nie wybiera leniwych wierzchołków jest taka sama: strony łańcucha pasożytującego będą mieć znacznie mniejszą wagę skumulowaną niż strony tangleu głównego, do którego się odnoszą. Dlatego, jest mało prawdopodobne, że losowe błądzenie kiedykolwiek przeskoczy do łańcucha pasożytującego (chyba, że ma tu swój początek, ale to nie jest także prawdopodobne, ponieważ główny tangle zawiera więcej stron).

Następnie zajmijmy się przyczyną, dla której węzły podążą (przynajmniej w przybliżeniu) za tym algorytmem. Pamiętajmy, że jak wspomniano w Rozdziale 1, założenie, że przynajmniej “dobra” część węzłów podąży za algorytmem referencyjnym jest uzasadnione. Również z uwagi na opóźnienia obliczeniowe i sieciowe algorytm wyboru wierzchołków będzie pracować na migawkowym obrazie tangleu z przeszłości (w odniesieniu do momentu wysłania transakcji). Teraz, może dobrym pomysłem okazać się celowe przeniesienie tej migawki do przeszłości 15 za pomocą algorytmu referencyjnego z przyczyn, które wyjaśniamy w kolejnej części. Wyobraźmy sobie, że istnieje “samoloubny” węzeł, który chce zmaksymalizować szanse na to, aby jego transakcja została szybko zaakceptowana. Algorytm MCMC w tym Rozdziale (przyjęty przez znaczną część pozostałych węzłów) definiuje prawdopodobieństwo rozkładu w ramach zbioru wierzchołków; oczywiście pierwszym naturalnym wyborem dla tego węzła będą wierzchołki, w których został osiągnięty rozkład maksymalny. Jeżeli jednak liczne pozostałe węzły zaczną zachowywać się w sposób samolubny (a takie założenie wydaje się także być całkiem uzasadnione) i stosować tę samą strategię, to wszyscy na tym stracą: wiele nowych transakcji zatwierdzi te same dwa wierzchołki w (mniej więcej) tym samym czasie, a zatem będzie występować między nimi zbyt duża rywalizacji o uzyskanie kolejnej akceptacji (ponieważ węzły wykorzystują migawkowy obraz z przeszłości, to nie „odczują" wzrostu skumulowanej wagi spowodowanego takim masowym zatwierdzaniem tych dwóch wierzchołków). A zatem nawet samolubny węzeł będzie musiał wykorzystać algorytm losowej akceptacji wierzchołka a prawdopodobieństwo rozkładu wybranych wierzchołków będzie w pewnym sensie” niezbyt dalekie” od rozkładu wyboru wierzchołka referencyjnego). Nie twierdzimy, że ten “zagregowany” rozkład prawdopodobieństwa (w obecności węzłów samolubnych) będzie równy domyślnemu rozkładowi, ale przytoczony powyżej argument pokazuje, że może być do niego bardzo zbliżony. Oznacza to, że prawdopodobieństwo wyboru “złego" wierzchołka pozostaje niewielkie. W każdym razie (odmiennie niż w Bitcoinie), nie ma zbyt wielkich zachęt do samolubnego zachowania się węzłów, ponieważ potencjalne zyski polegają na niewielkim skróceniu czasu niezbędnego na potwierdzenia transakcji.

Nie jest także powiedziane, że prawdopodobieństwo przejścia musi być zdefiniowane w sposób określony w (15). Zamiast wykładnika, można wybrać szybko zmniejszającą się funkcję, np. f(s) =

15 To znaczy pierwsza losowo błądzącą liczba znajduje wierzchołek (z przeszłości) dotyczący tej migawki, a następnie kontynuuje błądzenie dalej w kierunku „rzeczywistych" wierzchołków w bieżącym tangle

Page 21: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

s-3. Mamy także dość dużą swobodę wyboru w zakresie W oraz N. Tak naprawdę, uczucia autora są takie, że główny wkład w niniejszy Rozdział to pomysł wykorzystania MCMC do wyboru wierzchołka; nie jest jasne, czy istnieje „teoretyczny" argument, który wskazałby dokładnie, które parametry należy wybrać.

4.2 Atak podziału (splitting atak)

Atak, o którym za chwilę skierowany przeciwko algorytmowi MCMC został zaproponowany przez Aviv Zohar. W reżimie o dużym obciążeniu, atakujący może podjąć próbę podzielenia tangleu na dwie gałęzie zachowując równowagę między nimi w taki sposób, że obydwie będą rozrastać się. Aby uniknąć sytuacji, w której uczciwy węzeł odnosi się do dwóch gałęzi jednocześnie (łącząc się z nimi skutecznie), atakujący musi umieścić co najmniej dwie sprzeczne transakcje na początku rozwidlenia. Następnie musi mieć nadzieję, że w przybliżeniu połowa sieci będzie mieć wkład w każdą gałąź w taki sposób, że będzie w stanie „zrekompensować" losowe wahania nawet mając do dyspozycji względnie niewielką moc obliczeniową. Następnie, atakujący będzie w stanie wydatkować te same fundusze w dwóch gałęziach.

Aby chronić się przed takim atakiem, należy wykorzystać zasadę “ostrego progu" (np. wybierz/polub najdłuższy łańcuch" w Bitcoinie), który utrudni utrzymanie równowagi pomiędzy dwiema gałęziami. Dla ilustracji, załóżmy, że jedna z gałęzi ma łączną wagę (lub inna miarę) 537, a całkowita waga drugiej gałęzi jest zbliżona, np. 528. Jeżeli w takiej sytuacji, uczciwy węzeł wybierze pierwszą gałąź z prawdopodobieństwem bardzo bliskim do 1/2, to prawdopodobnie, atakujący będzie w stanie utrzymać równowagę pomiędzy gałęziami. Jeżeli jednak, uczciwy węzeł wybierze pierwszą gałąź z prawdopodobieństwem znacznie wyższym niż 1/2, to atakujący prawdopodobnie nie zdoła utrzymać równowagi, ponieważ po nieuniknionej losowej fluktuacji sieć bardzo szybko dokona wyboru jednej z gałęzi i porzuci drugą. Oczywiście, aby algorytm MCMC zachowywał się w ten sposób, należy wybrać bardzo szybko umierającą funkcję f i uruchomić losowe błądzenie w węźle o (względnie) dużej głębokości (w taki sposób, że będzie możliwe, iż zaczął się zanim podział został dokonany). W takim przypadku losowe błądzenie dokona wyboru “cięższej" gałęzi o większym prawdopodobieństwie nawet, jeżeli łączna różnica wag pomiędzy gałęziami jest niewielka.

Warto podkreślić, że zadanie atakującego jest bardzo trudne, z uwagi na kwestie synchronizacji sieci: może on nie mieć informacji na temat dużej liczby najnowszych transakcji16. Innym skutecznym sposobem ograniczania takiego ataku będzie opublikowanie przez dość silną jednostkę dużej liczby transakcji jednocześnie (w jednej gałęzi), tym samym szybko zmieniając równowagę sił oraz utrudniając atakującemu rozwiązanie problemu tej zmiany. Warto zauważyć, że atakujący potrafi utrzymać podział, a najnowsze transakcje będą miały ok. 50% potwierdzeń pewnych (patrz: Rozdział 1), a liczba ta nie wzrośnie; zatem “uczciwe" węzły mogą podjąć decyzję o akceptacji tylko tych transakcji, które miały miejsce przed podziałem (w szczególności nie będą zatwierdzać żadnej z dwóch sprzecznych transakcji).

16 zatem “rzeczywiste" wagi skumulowane mogą znacznie się różnić od tego, o czym jest przekonany

Page 22: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

Można rozważyć możliwość wprowadzenia innych modyfikacji do algorytmu wybory wierzchołka. Na przykład, jeżeli węzeł widzi dwa duże subtangley, to najpierw wybiera ten o większej sumie wagi własnej, a potem dokonuje wyboru wierzchołka tylko w tym miejscu korzystając wyżej wymienionego algorytmu MCMC.

Także ten pomysł może okazać się godny rozważenia: niech prawdopodobieństwa transakcji w (15) nie są uwarunkowane Hx - Hy, ale także Hx, w taki sposób, że kolejny krok w łańcuchu Markova będzie niemal deterministyczny, kiedy wartość błądząca znajdzie się w głębokim tangle (aby uniknąć wejścia do słabszej gałęzi), stanie się za to szerszy, w okolicy wierzchołków (w taki sposób, że zapewni wystarczający poziom losowości w wyborze transakcji do zatwierdzenia).

Wnioski:

1.Rozważyliśmy niektóre strategie ataków, w których atakujący podejmuje próbę podwójnego wydatkowania “wyprzedzając" system.2. Atak “dużej skali" oznacza, że, aby podwójnie wydatkować transakcję, atakujący podejmuje próbę nadania bardzo dużej wagi podwójnie wydatkowanym transakcjom w taki sposób, że przeważy ona legalny subtangle. Strategia ta mogłaby naprawdę stanowić zagrożenie dla sieci w przypadku braku ograniczenia dopuszczalnej wagi własnej. Jako rozwiązanie dla tego problemu możemy ograniczyć wagę własną powyższej transakcji a nawet nadać jej wartość stałą.3. W sytuacji, gdy maksymalna waga własna transakcji wynosi m, najlepsza strategią atakującego jest wygenerowanie transakcji o maksymalnej wadze odnoszących się do transakcji podwójnego wydatkowania. Kiedy strumień danych wejściowych „uczciwych” transakcji jest dość duży, w porównaniu z mocą obliczeniową atakującego, prawdopodobieństwo, że transakcja podwójnego wydatkowania będzie mieć większa wagę skumulowaną może być oszacowane na podstawie wzoru (14) (patrz: przykłady poniżej (14)).4. Atak oparty na budowie “łańcucha pasożytującego” sprawia, że strategie akceptacji są oparte na wysokości lub nieważnej punktacji, ponieważ atakujący uzyska wyższe wartości niż legalny tangle. Z drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed tego typu atakiem.5. Jako bonus, oferuje on także ochronę przed “leniwymi węzłami", tzn. tymi, które akceptują starsze transakcje, aby uniknąć obliczeń niezbędnych w e celu zweryfikowania tangleu.

4.3 Odporność na kwantowe przetwarzanie informacji (quantum computations)

Jest wiadomym, że (obecnie w dalszym ciągu hipotetycznie) dostatecznie duży komputer kwantowy może być bardzo wydajny w przypadku rozwiązywania problemów, w których jedynym sposobem rozwiązania jest nieustanne odgadywania odpowiedzi i ich weryfikacja. Proces znajdowania wartości jednorazowych w celu wygenerowania bloku Bitcoinowego jest dobrym przykładem takiego problemu. Obecnie, średnio trzeba sprawdzić ok. 268 wartości jednorazowych, aby znaleźć odpowiednią wartość haszującą, która umożliwi wygenerowanie

Page 23: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

bloku. Wiadomym jest (patrz: np. [13]), że obliczenia kwantowe będą wymagać przeprowadzenia operacji, aby znaleźć rozwiązanie dla problem jak wyże, które z kolei wymaga przeprowadzenia operacji na klasycznym komputerze. Dlatego komputer kwantowy będzie ok. miliardów razy bardziej wydajny w górnictwie bitcoinowym niż klasyczny. Warto także podkreślić, że jeżeli blockchain nie podniesie poziomu trudności w odpowiedzi na zwiększoną wartość haszującą, będzie to prowadzić do zwiększenia prędkości przepływu osieroconych bloków.

Należy zauważyć, że z tej samej przyczyny, atak “dużej skali" opisany powyżej będzie o wiele bardziej skuteczny, jeżeli przeprowadzony na komputerze kwantowym. Nie mniej jednak, ograniczenie wagi od góry – wyznaczenie górnego limitu (zgodnie z sugestią w Rozdziale 4) efektywnie ograniczy możliwość przeprowadzenia ataku obliczeń kwantowych quantum również z następujących przyczyn. W iota, liczba wartości jednorazowych, które trzeba sprawdzić, aby znaleźć odpowiednia wartość haszujacą, aby wysłać transakcję nie jest zbyt wielka i oscyluje wokół 38. Wzrost wydajności “idealnego" komputera kwantowego będzie w związku z tym rzędu 34 = 81, co jest wartością całkiem akceptowalną (trzeba także pamiętać, że może równie dobrze oznaczać lub zbliżoną wartość). Algorytm jest taki, że czas konieczny, aby znaleźć wartość jednostkową nie jest dużo większy niż czas niezbędny na wykonanie innych zadań koniecznych do wystawienia transakcji, a ta ostatnia staje się bardziej odporna na obliczenia kwantowe.Dlatego też, powyższe omówienie sugeruje, że tangle zapewnia o wiele lepszą ochronę wobec adwersarza w przypadku komputera kwantowego w porównaniu z łańcuchem blokowym Bitcoina.

Bibliografia[1] Iota: a cryptocurrency for Internet-of-Things [IOTA: kryptowlauta dla Internet-of-Things]. Patrz: http://www. iota token.com/ , oraz https://bitcointalk.org/index.php?topic=1216479.0[2] bitcoinj. Working with micropayment channels [Pracując z kanałami mikropłatności]https://bitcoinj.github.io/working-with-micropayments[3] people on nxtforum.org (2014) DAG, a generalized blockchain [Ludzie na nxtforum.org (2014) DAG), generalizacja blockchaina] .https://nxtforum.org/proof-of-stake-algorithm/dag-a-generalized-blockchain/(wymagana rejestracja na nxtforum.org)[4] Moshe Babaioff, Shahar Dobzinski, Sigal Oren, Aviv Zohar (2012) On Bitcoin and red balloons. Proc. 13th ACM Conf. Electronic Commerce, [Bitocin i czerwone balony. Materiały z 13 Konferencji dot. Handlu elektronicznego] 56-73.[5] Sergio Demian Lerner (2015) DagCoin: a cryptocurrency without blocks [DagCoin: kryptowaluta bez bloków]. https://bitslog.wordpress.com/2015/09/11/dagcoin/[6] Yonatan Sompolinsky, Aviv Zohar (2013) Accelerating Bitcoin'sTransaction Processing. Fast Money Grows on Trees, Not Chains [Przyśpieszanie przetwarzania transakcji w bitcoinie. Szybkie pieniądze rosną na drzewach, a nie w łańcuchach].https://eprint.iacr.org/2013/881.pdf[7] Yoad Lewenberg, Yonatan Sompolinsky, Aviv Zohar (2015) Inclusive

Page 24: Strona główna - Giełda wymiany Bitcoin - BTCDuke · Web viewZ drugiej strony, algorytm wyboru wierzchołka MCMC opisany w Rozdziale 4.1 wydaje się być dobrze zabezpieczony przed

Block Chain Protocols [Włączenie protokołów blockchainowych].http://www.cs.huji.ac.il/~avivz/pubs/15/inclusive btc.pdf[8] Joseph Poon, Thaddeus Dryja (2016) The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments [Bitcoinowa Lightning Network: Skalowalne pozałańcuchowe szybkie płatności] https://lightning.network/lightning-network-paper.pdf[9] Sheldon M. Ross (2012) Introduction to Probability Models [Wprowadzenie do modeli probabilistycznych]. 10 ed.[10] David Vorick (2015) Getting rid of blocks [Rezygnując z bloków]. slides.com/davidvorick/braids[11] Amir Dembo, Ofer Zeitouni (2010) Large Deviations Techniques and Applications [Techniki i aplikacje dużych odchyleń]. Springer.[12] Sheldon M. Ross (2009) A First Course in Probability [Pierwszy kurs prawdopodobieństwa]. 8 ed.[13] Gilles Brassard, Peter Hyer, Alain Tapp (1998) Quantum cryptanalysis of hash and claw-free functions. Lecture Notes in Computer Science [Kryptoanaliza kwantowa funkcji haszujących claw-free. Notatki z wykładów z informatyki] 1380, 163-169.