Przejdź do głównej zawartości

Peer-to-peer w przeglądarce

Aplikacja internetowa Bitsocial nie musi być klientem czyjegoś serwera. Może uruchomić węzeł Helia wewnątrz karty przeglądarki, dołączyć do tej samej sieci peer-to-peer, w której działają węzły desktopowe i CLI, pobierać treści społeczności od innych peerów i publikować przez pubsub.

Ta strona wyjaśnia, co to faktycznie oznacza, z jakich transportów korzysta, czego nadal nie potrafi i dlaczego publikowanie z karty przeglądarki zaczęło działać dopiero w 2026 roku.

Szersze omówienie architektury sieci znajdziesz na stronie Protokół peer-to-peer.

Co działa w karcie przeglądarki

Gdy P2P w przeglądarce jest aktywne, strona utrzymuje prawdziwy węzeł libp2p:

  • nawiązuje połączenia z innymi peerami przez bezpieczne WebSockets
  • pobiera i weryfikuje treści społeczności od tych peerów, a nie z bramy IPFS
  • uczestniczy w gossipsub, więc opublikowanie posta nie wymaga hostowanego dostawcy pubsub
  • korzysta z tego samego stosu klienta protokołu (pkc-js) co każda inna aplikacja Bitsocial

W praktyce oznacza to, że między czytelnikiem w przeglądarce a społecznością nie stoi żaden operator bramy. Nie ma jednego punktu końcowego HTTPS, który dałoby się nakłonić do odcięcia społeczności wszystkim użytkownikom przeglądarek naraz.

Jak łączą się węzły w przeglądarce

pkc-js łączy się z peerami przez bezpieczne WebSockets. Połączenia WebRTC i WebTransport są domyślnie odrzucane przez connection gater, ponieważ w przeglądarce wprowadzają długie i często zawodne ścieżki zestawiania połączenia — negocjację STUN/ICE, rotację certhash — które spowalniają ładowanie strony, podczas gdy WebSocket daje bezpośredni i niezawodny transport. Kod, który świadomie chce użyć WebRTC lub WebTransport, może nadpisać gater przez libp2pJsClientsOptions[].libp2pOptions.connectionGater.

W praktyce peer w przeglądarce łączy się z węzłami udostępniającymi punkt końcowy WSS, co oznacza, że takie węzły potrzebują domeny i certyfikatu podpisanego przez CA. Peery działające na łączach konsumenckich bez takiego zaplecza są osiągane pośrednio, a nie przez bezpośrednie połączenie z karty.

Dlaczego publikowanie z przeglądarki zaczęło działać dopiero w 2026 roku

Peer-to-peer w przeglądarce nie jest nowym pomysłem. W 2026 roku zmieniło się to, że posty węzła działającego w przeglądarce zaczęły docierać do reszty sieci.

Specyfikacja pubsub w libp2p wymaga, aby seqno wiadomości było liniowo rosnącą 64-bitową liczbą całkowitą w porządku big-endian. js-libp2p-gossipsub generował zamiast tego 8 losowych bajtów, podczas gdy go-libp2p-pubsub i rust-libp2p używały licznika. Kubo 0.40+ domyślnie włącza BasicSeqnoValidator, który odrzuca każdą wiadomość o seqno nie większym niż najwyższe już odnotowane od danego peera.

Skutek był taki, że większość wiadomości publikowanych przez węzeł JavaScript — w tym węzeł w przeglądarce — była po cichu odrzucana przez peery Kubo. W przykładzie odtwarzającym problem docierały od 2 do 8 z 30 wiadomości.

Zdiagnozowano to w js-libp2p-gossipsub#545 i naprawiono w @libp2p/gossipsub 15.0.21 w maju 2026 roku. Zanim poprawka trafiła do wydania, węzeł w przeglądarce mógł się połączyć i czytać, ale jego posty w większości ginęły w drodze do peerów Go. pkc-js dostarcza @libp2p/gossipsub w wersji 16.0.4, czyli już po tej poprawce.

Czego węzeł w przeglądarce nadal nie potrafi

Węzeł w przeglądarce jest prawdziwym peerem, ale nie serwerem. Ma inne ograniczenia niż węzeł desktopowy czy węzeł działający bez przerwy:

  • zwykle nie może przyjmować dowolnych połączeń przychodzących z publicznego internetu
  • działa tylko dopóki karta jest otwarta, więc nie jest trwałym hostem danych społeczności
  • nie może dołączyć do DHT libp2p, dlatego odkrywanie odbywa się przez routery HTTP
  • słabo nadaje się do seedowania na dużą skalę

Pełny hosting społeczności nadal najlepiej powierzyć aplikacji desktopowej, bitsocial-cli albo innemu stale dostępnemu węzłowi. P2P w przeglądarce zmienia to, kto może czytać i publikować bez bramy; nie znosi potrzeby istnienia peerów, które pozostają online.

Routery HTTP to nie bramy

Klienci w przeglądarce nadal odpytują routery HTTP, aby ustalić, które peery udostępniają obecnie adres danej społeczności. To uczciwy przypis do hasła „czysty peer-to-peer w przeglądarce” i warto opisać go precyzyjnie:

  • router przechowuje wyłącznie adresy peerów przypisane do adresu treści
  • nie przechowuje ani nie serwuje treści społeczności, a nawet jej nie zna
  • klienci odpytują kilka routerów równolegle i łączą wyniki
  • każdy może uruchomić własny, a zmiana routera to zmiana konfiguracji bez migracji danych

Po etapie odkrywania transfer treści i ruch pubsub odbywają się peer-to-peer. Zniknięcie routera kosztuje cię ścieżkę wyszukiwania, a nie dane. Brama IPFS leży natomiast na ścieżce samej treści.

Gdzie działa to dzisiaj

  • 5chan domyślnie działa w trybie czystego P2P w przeglądarce w aplikacji internetowej pod adresem 5chan.app.

Awaryjne przejście na bramę

Dostęp przez bramę nadal istnieje jako ścieżka zgodności dla przeglądarek i sieci, które nie mogą dołączyć bezpośrednio. Zobacz Awaryjne przejście na bramę. Docelowa architektura to przede wszystkim P2P w przeglądarce, z bramami jako opcjonalnym rozwiązaniem awaryjnym, a nie domyślnym wąskim gardłem.