Sieci Peer-to-Peer
Strona Główna
Artykuły
Sieci Peer-to-Peer

Sieci Peer-to-Peer

Średnio zaawansowany
Opublikowane Sep 30, 2019Zaktualizowane Nov 16, 2022
7m

Czym są sieci Peer-to-Peer?

W informatyce siecią peer-to-peer (P2P) określa się grupę powiązanych urządzeń, wspólnie przechowujących i udostępniających między sobą dane. Każdy uczestnik sieci działa jako indywidualny węzeł. Zazwyczaj wszystkie węzły posiadają taką samą moc oraz wykonują te same zadania.

W terminologii technologii finansowej termin peer-to-peer odnosi się, zazwyczaj, do wymiany kryptowalut lub zasobów cyfrowych za pośrednictwem rozproszonej sieci. Platforma operująca w stylu P2P umożliwia nabywcom i sprzedawcom wykonywanie transakcji bez potrzeby korzystania z pośredników. W niektórych przypadkach strony internetowe mogą również zapewniać otoczenie P2P łączące pożyczkodawców i kredytobiorców.

Architektura P2P znajduje swoje zastosowanie w wielu przypadkach, jednak czasy jej faktycznej świetności przypadają głównie na lata 90 zeszłego stulecia, kiedy to na popularności zyskały programy wymiany plików. Dziś sieci P2P przeżywają swój ponowny rozkwit wraz z zastosowaniem ich u podstaw wszystkich kryptowalut. Stosuje się je również w aplikacjach rozproszonego przetwarzania danych, wyszukiwarkach internetowych, strumieniowaniu danych, serwisach handlowych oraz w protokole IPFS.


Jak dokładnie działają sieci P2P?

Zasadniczo systemy P2P utrzymywane są przez rozproszoną sieć korzystających z nich użytkowników. Zazwyczaj programy te nie posiadają żadnego centralnego administratora, ani jednego serwera, ponieważ każdy pojedynczy węzeł (z ang. node) posiada kopię przesyłanych plików - działa zarówno jako użytkownik jak i serwer dla innych węzłów. Powoduje to, że każdy node jest w stanie pobierać pliki z innych węzłów oraz przesyłać do nich pliki. W tym właśnie zawiera się esencja funkcjonowania sieci Peer-to-Peer.

W sieciach P2P podłączone urządzenia dzielą pliki, przechowywane na ich dyskach twardych. Korzystając ze specjalnie przygotowanych aplikacji do udostępniania danych, użytkownicy, poprzez własny węzeł, mogą wysyłać zapytania do innych node'ów w celu pobrania lub wysłania konkretnych plików. Gdy dany węzeł już raz pobierze określony plik, może go później przekazywać dalej.

Kiedy węzeł działa jako klient - pobiera pliki od innych uczestników sieci. Lecz, gdy zachowuje się jako serwer, to z jego zasobów inny mogą pobierać dostępne dane. W praktyce, obie z tych funkcji mogą być wykonywane w tym samym czasie (na przykład pobieranie pliku A z jednego węzła i przesyłanie pliku B do drugiego).

Z uwagi na to, że każdy węzeł przechowuje, przesyła oraz odbiera pliki, sieci P2P zwykle stają się szybsze i wydajniejsze wraz z rosnącą bazą użytkowników. Dodatkowo, ich rozproszona architektura sprawia, że systemy P2P są niezwykle odporne na ataki cybernetyczne. Dzieje się tak, gdyż fizycznie nie istnieje jeden konkretny serwer, który można zaatakować.

Możliwe jest kategoryzowanie sieci peer-to-peer z uwagi na ich budowę. Trzy główne typy to: niezorganizowana, zorganizowana i hybrydowa.


Niezorganizowana sieć P2P

Niezorganizowane sieci P2P nie posiadają żadnej konkretnej struktury węzłów. Komunikacja między użytkownikami odbywa się w sposób losowy. Ten typ systemów P2P uznaje się za odporny na wysoki "churn rate" (tj. kilka węzłów często łączących się z siecią, po czym opuszczających nią).

Chociaż łatwiej jest budować, niezorganizowane sieci P2P mogą wymagać większego użycia procesora i pamięci, ponieważ zapytania o pliki są wysyłane do jak największej liczby węzłów. Takie działanie często powoduje zapychanie się sieci, zwłaszcza w sytuacji, gdy tylko niewielka liczba node'ów posiada określony plik.


Zorganizowana sieć P2P

Dla kontrastu, jak sama nazwa mówi, zorganizowane sieci P2P posiadają jasno ustrukturyzowaną architekturę, pozwalającą węzłom na skuteczne wyszukiwanie plików, nawet jeśli nie są one powszechnie dostępne. Najczęściej dokonuje się tego poprzez zastosowanie funkcji haszującej, ułatwiającej przeszukiwanie baz danych.

O ile zorganizowane sieci mogą być bardziej efektywne, o tyle charakteryzują się wyższym poziomem centralizacji, a z korzystaniem z nich wiążą się większe koszty. Poza tym zorganizowane sieci są mniej odporne w obliczu rosnącego "churn rate".


Hybrydowe sieci P2P

Hybrydowe sieci P2P łączą tradycyjny model serwer-klient z niektórymi aspektami architektury peer-to-peer. Na przykład możliwe jest zaprojektowanie centralnego serwera ułatwiającego nawiązywanie połączeń między innymi równorzędnymi serwerami.

Porównując model hybrydowy z dwoma poprzednimi, zazwyczaj wykazuje się on większą wydajnością. Mieszane P2P łączą niektóre z głównych zalet zorganizowanych i niezorganizowanych sieci P2P, osiągając jednocześnie znaczną decentralizację przy wysokiej wydajności.


Rozproszona a zdecentralizowana

Choć architektura P2P pozostaje z natury rozproszona, należy zauważyć, że możemy mieć do czynienia z różnymi stopniami decentralizacji. Nie wszystkie sieci P2P są więc zdecentralizowane. 

W rzeczywistości wiele systemów P2P opiera się na centralnym organie kierującym działalnością sieciową, dzięki czemu są one w pewnym stopniu scentralizowane. Dla przykładu, niektóre systemy udostępniania plików P2P umożliwiają użytkownikom samo wyszukiwanie i pobieranie plików z węzłów, ale nie mogą oni uczestniczyć w innych procesach, takich jak zarządzanie zapytaniami wyszukiwań.

Ponadto, niewielkie sieci kontrolowane przez ograniczoną bazę użytkowników o wspólnych celach i interesach także charakteryzują się wysokim stopniem centralizacji na poziomie "ludzkim", pomimo braku scentralizowanej infrastruktury sieciowej.


Rola P2P w blockchainach

Satoshi Nakamoto zdefiniował Bitcoina jako“Elektroniczną Gotówkę Peer-to-Peer”. Bitcoin powstał jako cyfrowa forma pieniądza. Może być przesyłany od użytkownika do użytkownika przy pomocy sieci P2P, zarządzającą rozproszoną księgą rozrachunkową, zwaną jako blockchain.
W tym kontekście architektura P2P, będąca nieodłączną częścią technologii blockchain, pozwala na przekazywanie Bitcoin i innych kryptowalut po całym świecie, bez potrzeby korzystania z pośredników ani żadnego centralnego serwera. Każdy jest w stanie skonfigurować węzeł Bitcoin, jeśli chciałby uczestniczyć w procesie weryfikacji bloków.

Zatem nie ma w Bitcoinie żadnych banków lub instytucji przetwarzających i rejestrujących transakcje. Blockchain działa jak cyfrowa księga, w której zapisywane są wszystkie aktywności sieciowe, a wgląd do niej posiada każdy chętny. Wszystkie z pełnych węzłów przechowują kopię całego łańcucha bloków i nieustannie porównują go z kopiami posiadanymi przez inne node'y, aby upewnić się, że wszystkie zapisy w księdze (dane) są prawidłowe. Jeśli pojawi się jakakolwiek nieprawidłowa transakcja, zostaje ona momentalnie odrzucona przez sieć.

Węzły w sieciach kryptowalut mogą przyjmować wiele różnych ról. Węzły posiadające kopię całego blockchaina (nazywane "pełnymi węzłami" - z ang. full nodes) są strażnikami bezpieczeństwa całej sieci, co czynią poprzez weryfikację transakcji i sprawdzanie czy są zgodne z panującymi zasadami konsensusu.
Każdy pełen węzeł utrzymuje kompletną, na bieżąco aktualizowaną kopię łańcucha bloków - umożliwia im to wspólną pracę nad weryfikacją prawdziwego stanu rozproszonego księgi. Warto jednak zaznaczyć, że nie wszystkie węzły należą do górników kryptowalut.


Zalety

Architektura P2P stojąca u podstaw kryptowalut przynosi wiele korzyści. Wśród najważniejszych możemy wymienić bardzo wysoki poziom bezpieczeństwa sieci P2P, w stosunku do tradycyjnych rozwiązań serwerowych. Ciągła dystrybucja łańcucha bloków pośród dużej liczby węzłów sprawia, że są one praktycznie odporne na klasyczne ataki  DoS, będące plagą wielu systemów.
Ponieważ większość węzłów musi osiągnąć bezwzględny konsensus przed dodaniem jakichkolwiek danych do blockchaina, jest prawie niemożliwe, aby potencjalni atakujący skutecznie doprowadzili do ich zmiany. Dotyczy to w szczególności dużych sieci, takich jak sieć Bitcoin. Mniejsze łańcuchy bloków są bardziej podatne na ataki, ponieważ jedna osoba lub grupa mogą ostatecznie uzyskać kontrolę nad większością węzłów i w efekcie przeprowadzić  atak 51%.
W rezultacie rozproszona sieć peer-to-peer, z wymogiem konsensusu większościowego, daje blockchainom stosunkowo wysoki stopień odporności na złośliwe aktywności. Model P2P jest jednym z powodów, dla których Bitcoin (i inne kryptowaluty) był w stanie osiągnąć Tolerancję bizantyjską.

Poza kwestiami związanymi z bezpieczeństwem, zastosowanie architektury P2P w sieciach kryptowalut sprawia, że są one wysoce odporne na cenzurę ze strony władz centralnych. W przeciwieństwie do standardowych kont bankowych, portfele kryptowalutowe nie mogą zostać zamrożone lub "wyczyszczone" przez organy rządowe. Wytrzymałość ta rozciąga się na próby cenzurowania podejmowane przez prywatne firmy płatnicze oraz platformy udostępniania treści cyfrowych. Niektóre niezależne serwisy, a także sklepy internetowe, już dziś dodają do swoich stron możliwość dokonywania płatności za pomocą kryptowalut, w celu uniknięcia możliwych blokad.


Ograniczenia

Pomimo wielu zalet, wykorzystanie sieci P2P w blockchainach wiąże się z pewnymi ograniczeniami.

Ponieważ każdy pojedynczy węzeł w obrębie łańcucha bloków wymaga ciągłej aktualizacji, dodawanie nowych transakcji wiąże się z potrzebą wykorzystania dużej zasobów mocy obliczeniowej. Co prawda zwiększa to bezpieczeństwo sieci, niemniej znacząco redukuje wydajność, stając się głównym problemem inżynieryjnym dla programistów pracujących nad skalowaniem sieci kryptowalut. Badane są alternatywy, mogące być w przyszłości wykorzystane jako rozwiązania problemu skalowalności. Do takich przykładów zaliczamy Lightning NetworkEthereum Plasma i protokół Mimblewimble.
Innym potencjalnym ograniczeniem są ataki, mogące pojawiać się w czasie hard fork’ów. Większość blockchainów jest otwarto-źródłowa i zdecentralizowana, grupy węzłów mogą swobodnie kopiować i modyfikować kod, po czym oddzielić się od łańcucha głównego, w celu utworzenia nowej, równoległej sieci. Hard forki są całkowicie normalne i nie stanowią zagrożenia same w sobie. Jeśli jednak nie zostaną zachowane odpowiednie standardy bezpieczeństwa, w trakcie hard forka, obydwa łańcuchy mogą stać się podatnymi na ataki typu replay.

Ponadto rozproszony charakter sieci P2P sprawia, że są one stosunkowo trudne do kontrolowania i regulacji, nie tylko w niszy blockchain. Kilka aplikacji P2P i przedsiębiorstw zaangażowało się w nielegalne działania, naruszając prawa autorskie twórców.


Wnioski końcowe

Architektura Peer-to-Peer może być rozwijana i stosowana na liczne sposoby. Sieci P2P kryją się u podstaw każdej kryptowaluty. Poprzez dokładne rozproszenie ksiąg transakcyjnych na wiele węzłów, architektura P2P zapewnia bezpieczeństwo, decentralizację i odporność na cenzurę.

Oprócz ich użyteczności w technologii blockchain, systemy P2P mogą również służyć innym rozproszonym aplikacjom komputerowym: od sieci udostępniania plików po, na przykład, platformy handlu nadwyżkami energetycznymi.