W tym artykule przedstawiono techniczną implementację szybkiej i silnej spójności w sieci DFINITY. Podstawowe słowa kluczowe to: grupa progowa, przekaźnik progowy, probabilistyczny konsensus gniazda karty i przekaźnik progowy.
Wprowadzenie w tle
DFINITY wykorzystuje mechanizm konsensusu PoS. Uczestnictwo w sieci wymaga określonej kwoty stawki (tj. tokenów DFINITY) jako depozytu. Wszystkie węzły są równe i jedynym sposobem na zwiększenie zysków jest dodanie większej liczby węzłów do sieci. Należy podkreślić, że depozyty dla wszystkich węzłów DFINITY są takie same, a wpłata większej ilości depozytów nie będzie wiązała się z dodatkowymi korzyściami.
Jedną z zalet PoS jest to, że wszystkie węzły są znane platformie, więc platforma może wywoływać węzły w celu wykonania określonych funkcji i oczekiwać, że będą one online. Jeśli wywoływany węzeł jest offline, węzeł może stracić część depozytu.
Ponieważ wiemy, kto uczestniczy w sieci i zakładając, że prawie wszystkie węzły są online, możemy losowo przypisać zadania do węzłów i mieć względną pewność, że zadania te zostaną wykonane. To także podstawa DFINITY.
grupa progowa
Komisja
Grupa progowa jest bardzo ważną koncepcją w całym procesie generowania konsensusu w DFINITY. Grupy progowe pozwalają uniknąć sytuacji posiadania tylko jednego decydenta i stanowią rdzeń DFINITY. W każdej chwili w sieci znajduje się aktywna pula grup progowych. Każda grupa progowa jest losowo próbkowana ze wszystkich węzłów podłączonych do sieci, a węzeł może znajdować się jednocześnie w wielu grupach progowych.
Wszystkie węzły grupy progowej współpracują ze sobą, aby stworzyć losowość; w każdej rundzie z puli grup progowych wybierana jest nowa grupa progowa.

Grupa progowa jest wcześniej wybierana losowo i umieszczana w puli. Jak pokazano na poniższym rysunku, w okresie 1 wybierana jest grupa progowa dla okresu 2. Pod koniec okresu 1 grupa progów tego okresu rozwiązuje się i zaczyna działać grupa progów okresu 2. Ten sam proces powtarza się w nieskończoność.
przekaźnik progowy
Przekaźnik progowy
Losowość DFINITY jest generowana przez sprawdzalną funkcję losową przekaźnika progowego. Wyobraź sobie, że grasz w pokera – musisz być w stanie sprawdzić, czy krupier nie jest w stanie przewidzieć kart wychodzących z talii ani nimi manipulować. To dlatego tasujesz się w oczach opinii publicznej. Tasowanie to sprawdzalna funkcja losowa dla sieci niezaufanych węzłów - graczy w pokera.
Aby utworzyć przekaźniki progowe, używamy szyfrowania progowego. Ale najpierw przyjrzyjmy się szyfrowaniu klucza publicznego. Wyobraź sobie, że masz dwa klucze do swoich drzwi, jeden do zamykania drzwi, a drugi do otwierania drzwi. Możesz oddać klucz do swoich drzwi komukolwiek. Kogo obchodzi, że ktoś inny może zamknąć Twoje drzwi? Ważne jest to, że tylko Ty możesz otworzyć drzwi.
Podpisy cyfrowe w kryptografii klucza publicznego są w zasadzie takie, ale bardziej abstrakcyjne. Masz dwa klucze, jednym możesz podpisać fragment danych, a drugim możesz posłużyć się do weryfikacji podpisu. Dobrze, jeśli inni mogą zweryfikować Twój podpis na kawałku danych, pod warunkiem, że tylko Ty możesz go złożyć. Stąd pochodzi „kryptografia klucza publicznego z kluczem prywatnym”. Klucz podpisujący musi być prywatny.
Szyfrowanie progowe działa w zasadzie na tej samej zasadzie, z jedną różnicą: w szyfrowaniu progowym klucz prywatny lub klucz podpisujący jest podzielony na wiele udziałów (udziałów), a każdy udział można wykorzystać do utworzenia podpisu. Po zagregowaniu progowej proporcji udziałów podpisów tworzą kompletny podpis cyfrowy, który można zweryfikować za pomocą klucza publicznego.
Jeżeli nie ma wystarczającej proporcji udziałów, aby złożyć pełny podpis cyfrowy, nie można go zweryfikować. W rzeczywistej implementacji DFINITY musimy jedynie sprawić, aby współczynnik agregacji osiągnął większość (51%). Tutaj musimy wiedzieć: każda grupa progowa ma klucz publiczny, a każdy członek grupy ma udział w kluczu prywatnym.

Poniżej przedstawiono proces podpisania progu. Wspaniałą cechą podpisów progowych jest to, że niezależnie od tego, które podpisy zostaną zagregowane w celu utworzenia pełnego podpisu, wynikowy podpis będzie taki sam.
Następnie otrzymujemy kilka podpisów cyfrowych, co jest doskonałym źródłem losowości, jeśli nikt wcześniej nie wie, co się w nich znajduje. Później użyjemy tego podpisu jako losowego sygnału nawigacyjnego.

W jaki sposób generowane są losowe sygnały nawigacyjne? Zaczynamy od źródła losowości, używamy go do wybrania grupy progowej, a członkowie grupy progowej podpisują losowość (używaną do wyboru grupy progowej).
Ta sygnatura progowa (pamiętaj, że potrzebujemy tylko progu 51% i żaden członek grupy progowej nie ma tutaj żadnego wpływu na sygnaturę) jest używana do wyboru następnej grupy progowej. Proces ten trwa w nieskończoność.

Sortowanie losowe — probabilistyczny konsensus dotyczący gniazd kart
Probabilistyczny konsensus dotyczący slotów
Ponieważ protokół zawiera listę wszystkich węzłów podłączonych do sieci, może przyjąć tę listę i losowy sygnał nawigacyjny jako dane wejściowe i wyjściowe w postaci losowo uporządkowanej listy. To losowe sortowanie należy przeprowadzić na podstawie probabilistycznego konsensusu dotyczącego miejsca na kartę.
Uważa się, że najwyższy węzeł ma wyższy priorytet (rangę). Priorytet wpływa na prawdopodobieństwo dodania przez węzeł bloku do łańcucha. Im wyższy priorytet, tym większe prawdopodobieństwo.

Węzły mogą to zrobić samodzielnie i nadać priorytet blokom przed ich utworzeniem i rozsyłaniem. Oszczędza to zasoby obliczeniowe i sieciowe, ponieważ w praktyce tylko kilka (np. pięć) węzłów może być zmuszonych do tworzenia i rozgłaszania bloków.
Blokuj podpisywanie
W sieci DFINITY tworzenie losowych grup progowych odgrywa również rolę w podpisywaniu bloków.
Każdy członek grupy progowej kieruje się tymi samymi zasadami: otrzymuje blokadę, a jeżeli jest ona nieważna, zostaje odrzucona. Jeśli jest poprawny, sprawdzany jest jego priorytet.
Jeśli priorytet jest niższy niż blok, który otrzymali wcześniej, odrzucają go. Jeśli priorytet jest wyższy, podpisują go przy użyciu udziału klucza prywatnego, a następnie transmitują udział bloku i podpisu.

Gdy blok zgromadzi niezbędną liczbę udziałów podpisu w celu wygenerowania kompletnego, weryfikowalnego podpisu, uważa się go za „poświadczony notarialnie” i blok zostaje dodany do łańcucha.
Poniżej przedstawiono cały proces generowania bloku:

Skuteczne potwierdzenie bloku DFINITY
W oparciu o wykorzystanie sprawdzalnych losowych funkcji przekaźnika progowego, czas potwierdzenia bloku w sieci DFINITY wynosi tylko dwa bloki, czas potwierdzenia może wynosić zaledwie 2,5 sekundy, a wielkość przetwarzania transakcji na sekundę wynosi około 50. Ogólnie rzecz biorąc, szybkość potwierdzania bloku jest rzeczywiście bardzo duża i musimy także zobaczyć ogromną rolę, jaką odgrywa w tym VRF.
Jak utworzyć grupę progową
1) Nowi klienci dołączający do sieci są losowo przydzielani do różnych grup za pomocą algorytmu VRF.
2) Zainicjuj parametry grupy progowej (w tym wielkość grupy, próg itp.).
3) Po zakończeniu inicjalizacji klucz publiczny pomyślnie utworzonej grupy zostaje zarejestrowany w sieci.
4) Tworzenie grup progowych jest oddzielone od procesu biznesowego blockchain, dzięki czemu może być realizowane równolegle. Jak pokazano na rysunku, tworzymy jednocześnie grupy czerwoną i zieloną.
5) Nowo dodane grupy progowe i klienci (lub górnicy) muszą poczekać 2 cykle EPOCH, zanim będą mogli zostać aktywowani.
Jak wybrać odpowiednią długość epoki: Aby zapewnić poprawność, epoka musi zawierać więcej bloków niż rozwidlenie łańcucha. Ponieważ jednak lekki klient zapisuje tylko informacje z nagłówka bloku klatek kluczowych, ze względu na wydajność epokę należy definiować tak długo, jak to możliwe, na przykład jeden tydzień.
Probabilistyczne generowanie bloków z gwarancją protokołu szczelinowego i unikanie forków
Wprowadzenie probabilistycznego protokołu szczelinowego do struktury przekaźnika sygnatury progowej gwarantuje, że górnicy w sieci zawsze produkują bloki na optymalnym łańcuchu głównym, jednocześnie w połączeniu z algorytmem VRF osiąga wysoką spójność i efektywny czas potwierdzania bloku.
Proces generowania bloku dla każdej wysokości h wygląda następująco:
1) Posortuj procesy aktualnej grupy progów wysokości za pomocą algorytmu VRF.
2) Podziel posortowane procesy na różne przedziały i oznacz je w systemie jako zlecenia priorytetowe.
3) Oceń procesy w różnych slotach i zaznacz wagi.
4) DFINITY wprowadza również mechanizm oparty na przekroczeniu limitu czasu, czyli czasie oczekiwania na pierwszy wybrany proces. Jeśli blok nie zostanie wyprodukowany, następny proces wykona produkcję bloku.
Jak pokazano na rysunku, kompletny proces produkcji bloku: ① Sortowanie losowe; ② Grupowanie (slot); ③ Punktacja; ④ Wybierz proces z najwyższym wynikiem, aby spakować blok i go rozesłać; ⑤ Przekaźnik grupy progowej, kontynuuj wyszukiwanie najwyższy wynik w kółko łańcucha.
zostawił pytania
Dzięki strukturze przekaźnika progowego i probabilistycznemu protokołowi szczeliny można osiągnąć wydajną produkcję bloków i zdarzenia rozwidlenia łańcucha o wyjątkowo niskim prawdopodobieństwie. Jednak w dalszym ciągu będziemy spotykać się z próbami ataków w sieci przez złośliwych aktorów, na przykład w dwóch następujących sytuacjach:
1) Samolubny atak wydobywczy: Złośliwi przeciwnicy będą selektywnie zatrzymywać wydobyte bloki i stopniowo je uwalniać, uzyskując przewagę w zakresie kontrolowania transakcji w porównaniu z uczciwymi węzłami, jednocześnie samolubne ataki wydobywcze zwiększają potwierdzenie wymagane do osiągnięcia ostatecznego poziomu spójności.
2) Brak stawek: złośliwy przeciwnik musi mieć tylko szczęście i zostać wybrany jako seria 0 miejsc (tj. najwyższy priorytet), a następnie może w dowolnym momencie głosować na wszystkie forki i tworzyć forki od wysokości h wzwyż wdrożyć ataki polegające na powtórzeniu.
DFINITY Network proponuje obejście:
Główną ideą jest wprowadzenie notariusza, a podpis notariusza musi znajdować się na aktualnej wysokości. Dzięki temu w przypadku opóźnienia zwolnienia blokady podpis notariusza nie zostanie uzyskany, a blokada zostanie uznana za nieważną.
Proces generowania bloku w trybie notarialnym
Aby zaradzić dwóm potencjalnym zagrożeniom, wprowadziliśmy notariuszy do składania podpisów na blokach oraz przeanalizowaliśmy zasadę generowania bloków:
1) Po tym jak aktualna wysokość h otrzyma sygnaturę progową poprzedniej grupy, członkowie grupy uruchamiają własne liczniki czasu i zbierają informacje o transakcjach w ciągu BLOCK_TIME (nie jest wykonywane żadne przetwarzanie. Uwaga: DFINITY nie opiera się na ścisłej synchronizacji zegarów).
2) Podczas oczekiwania na BLOCK_TIME probabilistyczny protokół szczeliny ocenia proces i wybiera proces spakowany.
3) BLOCK_TIME, czyli po upływie 5s czasu oczekiwania, po drugiej ocenie: ① Czy łańcuch z najwyższym wynikiem został oceniony; ② Sprawdź, czy blok jest ważny i czy slot jest wybrany jako proces odpowiedzialny opakowanie; ③ Notariusz weryfikuje blok, proces transmituje fragment podpisany przez grupę progową bloku.
Kiedy podpisywanie zostanie zakończone? Po osiągnięciu progu i połączeniu podpisu grupowego aktualnej wysokości fragment podpisu aktualnej wysokości nie będzie już podpisywany.
Kilka punktów podsumowujących:
1) Podczas normalnej pracy sieci, jeśli BLOCK_TIME jest ustawiony wystarczająco długo, biorąc pod uwagę synchronizację sieci, każdy członek grupy będzie priorytetyzował tylko łańcuch z najwyższym wynikiem.
2) Grupa notarialna będzie certyfikowała wyłącznie bloki reprezentujące sieć, która uzyskała najwyższą liczbę punktów.
3) Ta metoda może zapobiec rozwidleniom i szybko osiągnąć ostateczną konsystencję.
Rozwiąż ten sam problem z punktacją
Proces w gnieździe 0 kontrolowany przez złośliwego przeciwnika może rozgłaszać do DOS-u dużą liczbę różnych wersji swoich bloków. Chociaż ten złośliwy proces zostanie szybko usunięty z sieci ze względu na zachowanie Bizancjum, jak temu zapobiec, zanim to nastąpi?
Rozwiązanie: Jeśli proces znajdzie blok z tym samym najwyższym wynikiem, przekaż go tylko do węzłów, które jeszcze nie odkryły tego samego wyniku. Jeśli członek grupy znajdzie blok z tym samym najwyższym wynikiem, podpisywanie nie jest wykonywane, ale rozpoczyna podpisywanie kolejnego bloku z najwyższą liczbą punktów z innego miejsca.
streszczenie
Poprzez ogólny projekt architektoniczny sieć DFINITY zapewnia możliwość wydajnej produkcji bloków. Wszelkie złe zachowanie zostanie zignorowane przez sieć i ukarane przez notariusza.
W idealnym świecie sieć DFINITY wymaga jedynie 2 bloków i przekaźnika grupy progowej, aby osiągnąć ostateczną spójność, co jest ogromną zaletą dla konkurencyjnych platform blockchain. Gdy BLOCK_TIME jest ustawiony na 5 sekund, średni czas potwierdzenia wynosi tylko 7,5 sekundy.
Miedziana wersja DFINITY ma oczywistą przewagę wydajnościową w porównaniu z technologiami blockchain pierwszej generacji (Bitcoin) i drugiej generacji (Ethereum) pod względem czasu generowania bloku, czasu potwierdzania transakcji i zużycia paliwa.
pytanie
Pytanie: Grupa progowa w okresie 2 jest wybierana w okresie 1. Czy w tym przypadku członkowie grupy progowej w okresie 2 będą podatni na ataki DDOS?
Odpowiedź: Odpowiedź brzmi: nie. Ponieważ w DFINITY ci członkowie są ukryci. Platforma wybrała tych członków, ale nikt nie wie, kim oni są.
Problem: Problemy z komunikacją stanowią wąskie gardło podczas tworzenia kluczy BLS. DFINITYIle węzłów znajduje się w grupie progowej? Jak poprawić ten problem?
Odpowiedź: W grupie progowej znajduje się 400 węzłów. Komunikacja jest kosztowna, ale nie na tyle, aby stanowić problem, który musimy rozwiązać.
Pytanie: Co powinienem zrobić, jeśli członek grupy progowej ujawni swój klucz prywatny?
Odpowiedź: Ponieważ do osiągnięcia konsensusu potrzebujemy określonego progu (51%) udziałów klucza prywatnego, wyciek jednego udziału nie ma znaczenia.
Pytanie: Ile węzłów zostało wybranych do zainicjowania bloków?
Odpowiedź: Odpowiedź brzmi 0. Każdy węzeł może zostać wybrany do zainicjowania bloku. Konkretne prawdopodobieństwo jest określane przez poprzedni algorytm sortowania losowego. Im wyższy priorytet, tym większe prawdopodobieństwo. Jeśli blok zostanie zainicjowany, faktycznie zaimplementowanych zostanie około 5 węzłów.

Treści IC, na których Ci zależy
Postęp technologiczny |. Informacje o projekcie |. Wydarzenia globalne

Zbieraj i śledź kanał IC Binance
Bądź na bieżąco z najświeższymi informacjami

