Peer-to-Peer στο πρόγραμμα περιήγησης
Μια εφαρμογή ιστού Bitsocial δεν είναι υποχρεωμένη να λειτουργεί ως πελάτης του διακομιστή κάποιου άλλου. Μπορεί να εκτελεί έναν κόμβο Helia μέσα στην καρτέλα του προγράμματος περιήγησης, να συμμετέχει στο ίδιο peer-to-peer δίκτυο με τους κόμβους επιτραπέζιων εφαρμογών και CLI, να ανακτά περιεχόμενο κοινοτήτων από ομότιμους κόμβους και να δημοσιεύει μέσω pubsub.
Αυτή η σελίδα εξηγεί τι σημαίνει αυτό στην πράξη, ποιες μεταφορές χρησιμοποιεί, τι εξακολουθεί να μην μπορεί να κάνει και γιατί η δημοσίευση από μια καρτέλα άρχισε να λειτουργεί μόλις το 2026.
Για τον ευρύτερο σχεδιασμό του δικτύου, δείτε το Πρωτόκολλο Peer-to-Peer.
Τι εκτελείται μέσα στην καρτέλα
Όταν το P2P του προγράμματος περιήγησης είναι ενεργό, η σελίδα φιλοξενεί έναν πραγματικό κόμβο libp2p:
- συνδέεται με άλλους ομότιμους κόμβους μέσω ασφαλών WebSockets
- ανακτά και επαληθεύει περιεχόμενο κοινοτήτων από αυτούς τους ομότιμους κόμβους, όχι από πύλη IPFS
- συμμετέχει στο gossipsub, οπότε η δημοσίευση μιας ανάρτησης δεν χρειάζεται φιλοξενούμενο πάροχο pubsub
- χρησιμοποιεί την ίδια στοίβα πελάτη πρωτοκόλλου (
pkc-js) με κάθε άλλη εφαρμογή Bitsocial
Η πρακτική συνέπεια είναι ότι κανένας χειριστής πύλης δεν παρεμβάλλεται ανάμεσα σε έναν αναγνώστη στον ιστό και σε μια κοινότητα. Δεν υπάρχει ένα ενιαίο τερματικό σημείο HTTPS που θα μπορούσε να δεχθεί πίεση ώστε να πάψει να εξυπηρετεί μια κοινότητα για όλους τους χρήστες προγραμμάτων περιήγησης ταυτόχρονα.
Πώς συνδέονται οι κόμβοι του προγράμματος περιήγησης
Το pkc-js συνδέεται με ομότιμους κόμβους μέσω ασφαλών WebSockets. Οι κλήσεις WebRTC και
WebTransport απορρίπτονται από προεπιλογή μέσω ενός connection gater, επειδή στο πρόγραμμα περιήγησης
προσθέτουν μακροσκελείς διαδρομές εγκαθίδρυσης σύνδεσης που συχνά αποτυγχάνουν — διαπραγμάτευση
STUN/ICE, εναλλαγή certhash — και καθυστερούν τη φόρτωση της σελίδας, ενώ το WebSocket προσφέρει
άμεση και αξιόπιστη μεταφορά. Όποιος θέλει ρητά WebRTC ή WebTransport μπορεί να παρακάμψει τον gater
μέσω του libp2pJsClientsOptions[].libp2pOptions.connectionGater.
Η πρακτική συνέπεια είναι ότι ένας ομότιμος κόμβος στο πρόγραμμα περιήγησης συνδέεται με κόμβους που εκθέτουν τερματικό σημείο WSS, πράγμα που σημαίνει ότι αυτοί οι κόμβοι χρειάζονται domain και πιστοποιητικό υπογεγραμμένο από αρχή πιστοποίησης. Οι ομότιμοι κόμβοι πίσω από οικιακές συνδέσεις χωρίς τέτοιο πιστοποιητικό προσεγγίζονται έμμεσα, αντί να καλούνται απευθείας από την καρτέλα.
Γιατί η δημοσίευση από το πρόγραμμα περιήγησης άρχισε να λειτουργεί μόλις το 2026
Το peer-to-peer στο πρόγραμμα περιήγησης δεν είναι καινούργια ιδέα. Αυτό που άλλαξε το 2026 είναι ότι οι αναρτήσεις ενός κόμβου προγράμματος περιήγησης φτάνουν πλέον στο υπόλοιπο δίκτυο.
Η προδιαγραφή pubsub του libp2p απαιτεί το seqno ενός μηνύματος να είναι ακέραιος 64 bit σε μορφή
big-endian που αυξάνεται γραμμικά. Το js-libp2p-gossipsub παρήγαγε αντ' αυτού 8 τυχαία bytes, ενώ
τόσο το go-libp2p-pubsub όσο και το rust-libp2p χρησιμοποιούσαν μετρητή. Το Kubo 0.40+ ενεργοποιεί
από προεπιλογή τον BasicSeqnoValidator, ο οποίος απορρίπτει κάθε μήνυμα του οποίου το seqno δεν
είναι μεγαλύτερο από το υψηλότερο που έχει ήδη παρατηρηθεί από τον συγκεκριμένο ομότιμο κόμβο.
Το αποτέλεσμα ήταν ότι τα περισσότερα μηνύματα που δημοσίευε ένας κόμβος JavaScript — συμπεριλαμβανομένου ενός κόμβου προγράμματος περιήγησης — απορρίπτονταν σιωπηλά από τους ομότιμους κόμβους Kubo. Ένα σενάριο αναπαραγωγής μέτρησε ότι έφταναν 2 έως 8 από τα 30 μηνύματα.
Το πρόβλημα διαγνώστηκε στο
js-libp2p-gossipsub#545 και
διορθώθηκε στην @libp2p/gossipsub 15.0.21 τον Μάιο του 2026. Μέχρι να φτάσει εκείνη η διόρθωση,
ένας κόμβος προγράμματος περιήγησης μπορούσε να συνδεθεί και να διαβάσει, αλλά οι αναρτήσεις του ως
επί το πλείστον χάνονταν στον δρόμο προς τους ομότιμους κόμβους Go. Το pkc-js περιλαμβάνει την
@libp2p/gossipsub 16.0.4, δηλαδή μετά από αυτή τη διόρθωση.
Τι εξακολουθεί να μην μπορεί να κάνει ένας κόμβος προγράμματος περιήγησης
Ένας κόμβος προγράμματος περιήγησης είναι πραγματικός ομότιμος κόμβος, όχι διακομιστής. Έχει διαφορετικά όρια από έναν επιτραπέζιο ή μονίμως ενεργό κόμβο:
- συνήθως δεν μπορεί να δεχτεί αυθαίρετες εισερχόμενες συνδέσεις από το δημόσιο διαδίκτυο
- λειτουργεί μόνο όσο η καρτέλα είναι ανοιχτή, οπότε δεν είναι μακρόβιος οικοδεσπότης για τα δεδομένα μιας κοινότητας
- δεν μπορεί να συμμετάσχει σε DHT του libp2p, γι' αυτό και η ανακάλυψη γίνεται μέσω δρομολογητών HTTP
- ταιριάζει ελάχιστα για seeding σε μεγάλη κλίμακα
Η πλήρης φιλοξενία μιας κοινότητας εξυπηρετείται ακόμη καλύτερα από μια εφαρμογή επιτραπέζιου
υπολογιστή, το bitsocial-cli ή κάποιον άλλο μονίμως ενεργό κόμβο. Το P2P στο πρόγραμμα περιήγησης
αλλάζει το ποιος μπορεί να διαβάζει και να δημοσιεύει χωρίς πύλη· δεν εξαλείφει την ανάγκη για
ομότιμους κόμβους που παραμένουν συνεχώς συνδεδεμένοι.
Οι δρομολογητές HTTP δεν είναι πύλες
Τα προγράμματα-πελάτες στο πρόγραμμα περιήγησης εξακολουθούν να ρωτούν δρομολογητές HTTP για να μάθουν ποιοι ομότιμοι κόμβοι παρέχουν αυτή τη στιγμή τη διεύθυνση μιας κοινότητας. Αυτός είναι ο τίμιος αστερίσκος στο «καθαρό peer-to-peer μέσα στο πρόγραμμα περιήγησης», και αξίζει να είμαστε ακριβείς γι' αυτόν:
- ένας δρομολογητής αποθηκεύει μόνο διευθύνσεις ομότιμων κόμβων για μια διεύθυνση περιεχομένου
- δεν αποθηκεύει, δεν εξυπηρετεί, ούτε καν γνωρίζει το περιεχόμενο της κοινότητας
- τα προγράμματα-πελάτες ρωτούν πολλούς δρομολογητές παράλληλα και συνενώνουν τα αποτελέσματα
- οποιοσδήποτε μπορεί να εκτελέσει έναν, και η αλλαγή δρομολογητή είναι απλή αλλαγή ρύθμισης χωρίς μετάπτωση δεδομένων
Μετά την ανακάλυψη, η μεταφορά περιεχομένου και η κίνηση pubsub γίνονται peer-to-peer. Ένας δρομολογητής που εξαφανίζεται σας κοστίζει μία διαδρομή αναζήτησης, όχι τα δεδομένα σας. Μια πύλη IPFS, αντιθέτως, βρίσκεται πάνω στη διαδρομή του ίδιου του περιεχομένου.
Πού λειτουργεί σήμερα
- Το 5chan λειτουργεί από προεπιλογή με καθαρό P2P στο πρόγραμμα περιήγησης, στην εφαρμογή ιστού στο 5chan.app.
Εναλλακτική διαδρομή μέσω πύλης
Η πρόσβαση μέσω πύλης εξακολουθεί να υπάρχει ως διαδρομή συμβατότητας για προγράμματα περιήγησης ή δίκτυα που δεν μπορούν να συνδεθούν απευθείας. Δείτε την εναλλακτική διαδρομή μέσω πύλης. Η αρχιτεκτονική-στόχος είναι πρώτα το P2P στο πρόγραμμα περιήγησης, με τις πύλες ως προαιρετική εναλλακτική και όχι ως προεπιλεγμένο σημείο συμφόρησης.