图片

Internet Computer Blockchain opiera się na protokole peer-to-peer (P2P), który dystrybuuje wiadomości (artefakty) pomiędzy węzłami w każdej podsieci.Protokół to zestaw protokołów obsługujących Internet Computer Blockchain, w tym Internet Computer Consensus Protocol, Protokół DKG (generowanie klucza rozproszonego) lub protokół synchronizacji stanu.

Każdy taki protokół generuje artefakty i wymaga, aby warstwa P2P rozesłała te artefakty do urządzeń równorzędnych w podsieci. Każdy z tych protokołów reprezentujemy jako klienci P2P, którzy służą jako aktualizacje powyżej warstwy P2P. Implementowane przez komponenty wysokiego poziomu.

图片
Rysunek 1: Ogólna architektura komputerów internetowych

Po wprowadzeniu oddzielnej warstwy P2P do synchronizacji stanu, dla wszystkich pozostałych klientów P2P w stosie protokołów komputerów internetowych wprowadzono nową warstwę P2P. Ta nowa warstwa P2P zapewnia lepszą wydajność sieci, zapewniając wymagany gwarantowany i łatwiejszy do wykrycia węzeł sprawka.

Nowo zaproponowana warstwa P2P wykorzystuje niedawno uruchomioną nową warstwę transportową opartą na QUIC. Dlatego wraz z migracją do tej nowej warstwy warstwa P2P komputerów internetowych całkowicie przestanie korzystać z protokołu TCP. Przejście na QUIC oznacza również całkowicie asynchroniczne przejście do Warstwa P2P zrealizowana transformacja.

Każde żądanie jest wysyłane jako nowy strumień QUIC i przetwarzane niezależnie od innych żądań, co zapobiega potencjalnym problemom z blokowaniem nagłówka linii, które przynajmniej w teorii mogłyby powodować problemy z żywotnością.

W nowej warstwie P2P zastosowano nową abstrakcyjną strukturę danych zwaną tabelą gniazd, która ułatwia kontrolowanie dystrybucji artefaktów do urządzeń równorzędnych, przy jednoczesnym zapewnieniu wystarczającego dostarczania każdemu urządzeniu równorzędnemu w oparciu o jakość połączenia bez wpływu na inne urządzenia równorzędne ułatwia także wykrywanie niewłaściwego postępowania rówieśników.

W związku z przyjęciem proponowanej nowej warstwy P2P, każdy klient będzie korzystał z osobnej instancji protokołu P2P, gdzie synchronizacja stanu będzie korzystała ze specjalnie zaprojektowanej dla niego instancji, a pozostali klienci będą korzystać z osobnej instancji nowej warstwy P2P, która zostaną omówione szczegółowo w tym artykule.

Wdrażanie nowo proponowanej warstwy P2P rozpoczyna się od przyjęcia szeregu propozycji NNS, które przenoszą dystrybucję artefaktów wywołań HTTPS do korzystania z nowej warstwy P2P, po czym wszyscy pozostali klienci zostaną przeniesieni, łącznie z protokołem konsensusu, ostatecznie przy użyciu starej Warstwa P2P jest przestarzała.

Wstęp: Warstwa P2P komputerów internetowych

Na bardzo wysokim poziomie protokół P2P jest odpowiedzialny za dystrybucję wszelkich artefaktów znajdujących się w puli zweryfikowanych artefaktów każdego klienta do elementów równorzędnych w tej samej podsieci, względem których klient przesyła te artefakty do swoich elementów równorzędnych.

图片
Rysunek 2: Interfejs pomiędzy warstwą P2P a jej klientami

Rysunek 2 przedstawia interfejs pomiędzy siecią P2P a znajdującymi się na niej klientami, który może dowolnie zmieniać pulę artefaktów za każdym razem, gdy wywoływana jest metoda on_state_change().

Każde takie wywołanie ostatecznie zwraca zestaw ChangeActions, który odpowiada dodawaniu i usuwaniu artefaktów z puli zweryfikowanych artefaktów tego klienta, a warstwa P2P powinna wykorzystać te informacje do propagowania zawartości zweryfikowanej puli do równorzędnych elementów.

Istniejące protokoły P2P dla komputerów internetowych opierają się na przepływie artefaktów z każdego węzła do jego węzłów równorzędnych. Za każdym razem, gdy artefakt jest dodawany do zweryfikowanej puli, do wszystkich komputerów równorzędnych jest wysyłane ogłoszenie. Jest to krótki opis informacji o artefakcie .

Wysyłając go zamiast samego artefaktu jako środek oszczędzający przepustowość, aby odbiorca mógł zdecydować, czy pobrać (potencjalnie duży) artefakt, węzeł wysyłający utrzymuje strumień TCP do każdego partnera równorzędnego, do którego wysyłane są reklamy (a później na podstawie żądanego artefakt).

Warstwa P2P powinna gwarantować dostarczanie artefaktów między uczciwymi węzłami a węzłami operacyjnymi i być odporna na złośliwe zachowania potencjalnie złośliwych węzłów.

Wszyscy klienci powiązani z konsensusem w warstwie P2P mają dwie ważne właściwości:

  • P1 — ograniczona liczba aktywnych artefaktów: pula zweryfikowanych artefaktów ma skończoną wielkość w dowolnym momencie, a protokół konsensusu wykorzystuje punkty kontrolne do okresowego usuwania artefaktów, więc maksymalny rozmiar puli C może zostać użyty jako odstęp między punktami kontrolnymi ( mierzona w blokach)) i rozmiar podsieci.

  • P2 – Wyraźne wygaśnięcie artefaktów: Jeśli artefakt zostanie usunięty z puli (zostanie usunięty), nie będzie już musiał być propagowany do równorzędnych elementów lub, z punktu widzenia odbiorcy, jeśli żaden z równorzędnych nie jest właścicielem artefaktu, gwarantowane jest artefakt nie jest wymagany przez odbiorca, nawet jeśli nie udało mu się go odebrać, gdy został usunięty przez wszystkie inne urządzenia równorzędne.

Te dwie właściwości zostały tutaj podkreślone, ponieważ wspierają ważne decyzje projektowe, które zostaną wkrótce wyjaśnione.

Przeciwciśnienie sieci

W tradycyjnych aplikacjach klient-serwer szeroko stosowana jest koncepcja przeciwciśnienia: jeśli odbiorca zwalnia w odbieraniu wiadomości, bufor nadawcy się zapełnia, a wtedy warstwa sieciowa nadawcy musi przyjąć trzy następujące ścieżki:

  • Propaguj przeciwciśnienie do warstwy aplikacji, powodując spowolnienie wytwarzania danych przez aplikację

  • Wiadomości buforowe (prawdopodobnie na czas nieokreślony)

  • odrzuć wiadomości o wyjściu

W przypadku blockchainu staje się to bardziej skomplikowane, wyobraź sobie, że nadawca doświadcza presji ze strony partnera, który może być uczciwy lub nie, przyjęcie któregokolwiek z powyższych podejść może prowadzić do poważnych problemów:

  • Spowolnienie wytwarzania danych oznacza spowolnienie łańcucha bloków, a zezwolenie na takie zachowanie byłoby wektorem ataku typu „odmowa usługi” (DoS);

  • Bufory (być może nieokreślone) również staną się wektorem ataku;

  • Porzucanie wiadomości wychodzących może oznaczać, że nie można zagwarantować dostarczenia wiadomości do uczciwych, ale wolnych węzłów.

Ze względu na ryzyko bezpieczeństwa opcji 1 i 2 większość blockchainów wybiera opcję 3, jednakże opcja 3 niesie ze sobą ryzyko żywotności blockchainu (tzn. jeśli zostanie upuszczona wystarczająca liczba wiadomości, może się on zablokować), zapewniając Internetowi nową warstwę P2P zaproponowane przez Computer pokonuje ryzyko bez utraty wiadomości.

Nowa warstwa P2P

Nowa warstwa P2P działa zupełnie inaczej niż dotychczasowa, po pierwsze, nie zawsze korzysta z reklam, jeśli artefakty są wystarczająco małe, zostaną wysłane natychmiast bez reklam; po drugie, nie korzysta z pojedynczego strumienia, ale przez te same połączenia QUIC korzystają z wielu strumieni; po trzecie, ponieważ nie wykorzystuje jednego strumienia, w bardzo różny sposób zarządza wysyłaniem artefaktów; po czwarte, wprowadza nieco inny protokół komunikacji pomiędzy urządzeniami równorzędnymi.

Cofnijmy się o krok i przyjrzyjmy celowi warstwy P2P podczas obsługi protokołów konsensusu i innych klientów o podobnych potrzebach (tj. synchronizacji niestanowej). Celem jest, dla każdego uczciwego węzła, zapewnienie, że równorzędni użytkownicy będą mogli otrzymać wszystko, co jest wymagane node ma oczywiście w swojej puli zweryfikowanych artefaktów, zachowując jednocześnie bezpieczeństwo, skalowalność i wydajność.

Nowa warstwa P2P osiąga to poprzez wprowadzenie nowatorskiej abstrakcyjnej struktury danych zwanej tabelą gniazd, która służy do śledzenia zawartości zweryfikowanej puli artefaktów i procesu aktualizacji elementów równorzędnych w zakresie tej zawartości. Struktura danych tabeli gniazd jest bardzo prosta, ale zapewnia dokładnie to, co jest potrzebne do spełnienia wymagań.

Struktura danych tabeli slotów

Tabela gniazd to abstrakcyjna struktura danych obsługiwana przez każdy węzeł po stronie wysyłającej i wywnioskowana przez każdy węzeł po stronie odbierającej. Rozmiar tabeli gniazd po stronie wysyłającej odpowiada dokładnie liczbie aktywnych artefaktów w puli walidacyjnej , jeśli pamiętasz powyższą właściwość P1, oznacza to, że tabela slotów jest ograniczona do pewnej stałej C.

Za każdym razem, gdy artefakt jest dodawany do puli walidacyjnej, jest on dodawany do pustego miejsca w tabeli gniazd po stronie wysyłającej. Do wszystkich urządzeń równorzędnych wysyłany jest komunikat o aktualizacji gniazda, informujący ich, że zawartość gniazda uległa zmianie side, każdy Każdy element równorzędny śledzi stan każdej ze swoich tabel slotów na podstawie nadejścia nowych komunikatów aktualizacji slotów.

Należy jednak pamiętać, że przeciążenie sieci i przeciwciśnienie mogą powodować opóźnienia w tych aktualizacjach, więc widok odbiorcy ostatecznie zgadza się z tabelą przedziałów nadawcy.

Oprócz informacji o artefaktach każde gniazdo ma również numer wersji, który jest globalnie zwiększany przy każdej aktualizacji puli walidacyjnej, dzięki czemu odbiorcy mogą otrzymywać komunikaty o aktualizacjach, akceptując tylko numery wersji aktualizacji wyższe niż ich, aby dowiedzieć się, czy tak jest nową lub starą aktualizację.

图片
Rysunek 3: Przykład abstrakcyjnej struktury danych tabeli slotów

Rysunek 3 pokazuje przykład tego procesu: nadawca generuje artefakty od A do F, niektóre z nich również usuwa w trakcie procesu, a ponieważ usunięcia niekoniecznie są propagowane do równorzędnych elementów, są one umieszczane w tabeli gniazd swoich równorzędnych elementów. Być może nadal masz usunięte artefakty w widoku i jest to prawidłowe, ponieważ zawartość gniazda zostanie ostatecznie zaktualizowana i rozpowszechniona.

Dla każdego slotu po stronie nadawcy generowany jest nowy zestaw zadań asynchronicznych (tj. zielonych wątków) - po jednym zadaniu na slot na peera, a ponieważ zadania są bardzo lekkie, można je również skalować dla większych podsieci. Każde zadanie jest odpowiedzialne do niezawodnego przesyłania aktualizacji slotu, komunikatów do odpowiedniego slotu i odpowiedniego partnera.

Oznacza to, że zadanie będzie ponawiać próbę przesłania aktualizacji do czasu otrzymania potwierdzenia, a za każdym razem, gdy zawartość miejsca ulegnie zmianie, zadanie przestanie próbować wypchnąć starą zawartość i zacznie próbować wypchnąć nową zawartość, którą powolne elementy równorzędne mogą powoli pobierać Aktualizuje, ale nie koliduje z szybszymi urządzeniami równorzędnymi.

To podejście przypomina nieco kombinację podejść 2 i 3 z powyższej dyskusji na temat przeciwciśnienia (buforowanie komunikatów w warstwie sieci i odrzucanie komunikatów) i rozwiązuje problem przeciwciśnienia bez utraty odporności i żywotności.

Poprawność takiego podejścia wynika ze wspomnianej wcześniej właściwości P1 klienta, czyli ograniczonej liczby aktywnych artefaktów, która gwarantuje, że sloty C są w każdym przypadku wystarczające i dzięki temu sloty mogą być ponownie wykorzystane.

Powyższy protokół nie tylko umożliwia elementom równorzędnym synchronizację zawartości ich zweryfikowanych pul artefaktów, ale także umożliwia węzłom zapewnienie, że ich elementy równorzędne nie będą ogłaszać więcej niż artefaktów C na raz. Jeśli numer szczeliny komunikatu aktualizacji jest większy niż C, odbiorca może natychmiast wywnioskować niewłaściwe zachowanie nadawcy.

Kiedy węzeł zauważy po stronie odbiorczej, że artefaktu już nie ma w tabelach gniazd któregokolwiek z jego węzłów równorzędnych, węzeł może bezpiecznie usunąć artefakt z niezweryfikowanej puli artefaktów (jeśli nadal istnieje) lub przerwać wszelkie próby jego odzyskania artefakt, jeśli nie został jeszcze odzyskany.

Właściwość P2: Wyraźne wygaśnięcie wcześniej wspomnianych artefaktów gwarantuje, że takie artefakty nie będą już potrzebne żadnemu peerowi, więc tabela gniazd nakłada również ukryte ograniczenie rozmiaru niezweryfikowanej puli artefaktów: niezweryfikowana pula może zawierać co najwyżej artefakty C z uczciwych peery (ponieważ powinny mieć mniej więcej tę samą zawartość w uwierzytelnionej puli) i co najwyżej C artefakty od każdego szkodliwego peera, ponieważ może on używać C Całkowicie inny artefakt spamuje IC.

Mniej niż 1/3 węzłów jest potencjalnie złośliwa, więc całkowity rozmiar niezweryfikowanej puli nie może przekroczyć artefaktów C*4*n/3.

Być może zauważyłeś, że powyższy opis projektu odnosi się tylko do artefaktów i nie wspomina o reklamach. Powodem jest to, że reklama jest jedynie optymalizacją mającą na celu poprawę wykorzystania przepustowości, a nowa warstwa P2P wykorzystuje reklamy tylko w przypadku dużych artefaktów (obecny próg jest ustawiony na ). 1KB).

Artefakty mniejsze niż próg są wysyłane w komunikacie aktualizacji szczeliny i dlatego odbiorca nie musi ich później wyraźnie żądać. W przypadku artefaktów większych niż próg generowane jest ogłoszenie i wysyłane w komunikacie aktualizacji, klient odbierający może następnie zdecydować, czy chce tego zażądać i od którego partnera jest to wymagane.

Polepsz wykonanie

Asynchroniczna implementacja przy użyciu QUIC i bezpośrednie przesyłanie mniejszych artefaktów poprawia wydajność sieci, a tym samym wydajność konsensusu.

图片图片
Rysunek 4: (Góra, istniejąca warstwa P2P / dół, nowa warstwa P2P) Współczynnik blokowania w czasie w podsieci składającej się z 60 węzłów, z dużym obciążeniem podsieci i bez niego oraz ze sztucznie zwiększonym opóźnieniem łącza, linia pionowa wskazuje koniec dużego obciążenia.


Rysunek 4 przedstawia wyniki eksperymentu, który przeprowadziliśmy w celu porównania wydajności istniejącej warstwy P2P i nowej warstwy P2P. W tym eksperymencie uruchomiliśmy obciążenie żądań 200 x 100 KB na sekundę w podsieci centrum danych składającej się z 60 węzłów. i zmierzono współczynnik blokowania konsensusu.

Wykres przedstawia szybkość blokowania w czasie z linią dla każdego węzła. W obu eksperymentach ręcznie dodaliśmy opóźnienie łącza wynoszące 80 ms w obie strony do wszystkich łączy sieciowych, aby symulować sieć rozproszoną geograficznie.

Powyższy wykres pokazuje współczynnik blokowania istniejącej warstwy P2P. Chociaż podsieć pomyślnie poczyniła postępy, współczynnik blokowania był bardzo niestabilny, gdy obciążenie było wysokie. Po zakończeniu obciążenia wróciło do normy, ale przy dużym obciążeniu, to znaczy współczynnik blokowania w całej podsieci jest niższy, a zatem opóźnienie odczuwane przez użytkownika jest większe.

Poniższy rysunek przedstawia solidność szybkości blokowania nowo proponowanej warstwy P2P, przy czym podsieć działa z bardzo stabilną szybkością blokowania nawet przy dużym obciążeniu.

podsumowując

Nowa warstwa P2P dla klientów konsensusowych i podobnych zwiększa wydajność komputerów internetowych, umożliwia lepszą skalowalność, zmniejsza złożoność kodu i poprawia zachowanie w niedoskonałych warunkach sieciowych.

Jest już włączona w niektórych podsieciach tylko dla artefaktów związanych z wywołaniami HTTPS, a Fundacja DFINITY wkrótce złoży propozycję włączenia jej dla innych klientów.

Jeśli zostanie to zaakceptowane i wdrożone, cała warstwa P2P komputerów internetowych zacznie korzystać z QUIC zamiast protokołu TCP, dzięki czemu warstwa sieciowa komputerów internetowych będzie solidniejsza, skalowalna i wydajniejsza.

Dowiedz się więcej o komputerach internetowych:

图片图片

#内容挖矿 #P2P #ICP

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