Ga naar hoofdinhoud

Bitsocial en Nostr

Nostr past niet netjes in de categorie federatie of blockchain. Gebruikers krijgen geen account van een instance, en er is geen chain, consensus, gas of globale volgorde. Nostr kun je beter omschrijven als sociale media op basis van relays: gebruikers hebben sleutelparen, ondertekenen events en publiceren die naar relays, gewone servers die ze opslaan en uitleveren (NIP-01). De eigen README van Nostr zegt dat het niet op peer-to-peer-technieken leunt.

Daarmee staat Nostr op één belangrijk punt dichter bij Bitsocial dan gefedereerde systemen of blockchainsystemen: identiteit is cryptografisch en overdraagbaar. De verschillen zitten in de datalaag en in wie de poort bewaakt.

Hoe Nostr werkt​

  • Events en relays. Elke post, elk profiel en elke reactie is een ondertekend JSON-event. Clients publiceren events via WebSockets naar relays en abonneren zich met filters; relays slaan events op en leveren ze weer uit. Relays communiceren niet met elkaar.
  • Replicatie. Gebruikers publiceren meestal naar meerdere relays. Een onderzoek naar 712 relays in 2023 vond de gemiddelde post op 34,6 daarvan (Wei en Tyson).
  • Iemands posts vinden. Gebruikers publiceren een lijst van de relays waarnaar ze schrijven en waarvan ze lezen (NIP-65), en clients halen de posts van een gebruiker op bij diens schrijfrelays.
  • Identiteit. Elke gebruiker is een secp256k1-sleutel die met Schnorr-handtekeningen ondertekent. De specificaties definiëren geen sleutelrotatie of -herstel, dus een verloren sleutel is een verloren account. Optionele identifiers in de vorm name@domain (NIP-05) worden gecontroleerd aan de hand van een bestand op de webserver van dat domein.
  • Groepen. Het aanbevolen mechanisme voor communities is groepen op basis van relays (NIP-29): een relay host een groep, handhaaft de regels voor lidmaatschap en posten voordat hij een post accepteert, en ondertekent de metadata van de groep. De oudere communities met moderatorgoedkeuring (NIP-72) zijn inmiddels gemarkeerd als niet aanbevolen, ten gunste van NIP-29.
  • Spambestrijding. Elke relay kiest zijn eigen poort: proof-of-work (NIP-13), authenticatie en allowlists (NIP-42), betaling of rate limits. Clients voegen mutelijsten en vertrouwensscores toe.
  • Media. Afbeeldingen en video worden geüpload naar aparte HTTP-bestandsservers.

Waar ze verschillen​

Wie posts opslaat en uitlevert​

Bij Nostr zijn relays de opslag- en bezorglaag: een server moet elke post online houden. Bij Bitsocial helpen HTTP-routers clients alleen om peers te vinden. Ze slaan geen posts, profielen, communitymetadata of moderatiestatus op; clients halen inhoud op bij de node van de community en bij de peers die die seeden. Zie Peer-to-peer-protocol.

Wie de poort bewaakt​

De schrijfpoorten van Nostr zijn in handen van relaybeheerders. Buiten NIP-29-groepen kan een sleutel die door één relay wordt geweigerd hetzelfde event publiceren naar elke relay die het wel accepteert, en wat lezers zien hangt af van de relays die hun client leest. Een NIP-29-groep lijkt meer op een Bitsocial-community: de hostrelay accepteert of weigert posts. Toch bepaalt de relay nog steeds wat groepsrollen mogen, en blijft de geschiedenis van de groep aan die relay gebonden, tenzij een andere relay ermee instemt die over te nemen.

Bij Bitsocial is een community een cryptografisch object met een eigen sleutelpaar. De node van de community voert de challenge uit die de eigenaar kiest en publiceert de geaccepteerde staat naar het peer-to-peer-netwerk. Zie Aangepaste antispamuitdagingen.

De infrastructuur draaien​

Een relay is een server met een domein en een WebSocket-endpoint, en populaire relays dragen de opslag- en bandbreedtekosten van wat ze uitleveren. Het onderzoek uit 2023 schatte dat ongeveer 95% van de gratis relays hun kosten niet uit donaties kon dekken. Een Bitsocial-communitynode draait op consumentenhardware, en peers die een community lezen kunnen helpen die te delen.

Browser​

Een Nostr-webclient opent WebSocket-verbindingen rechtstreeks naar relays, dus er is geen appserver nodig. Een Bitsocial-webapp draait een peer-to-peer-node in het tabblad en haalt inhoud op bij peers. Zie Peer-to-peer in de browser.

Oude inhoud​

Nostr-posts worden op grote schaal over relays gerepliceerd, wat helpt om oude posts te laten voortbestaan. Bitsocial bewaart de nieuwste staat van een community en garandeert oude inhoud niet voor altijd.

Vergelijking​

VraagNostrBitsocial
CategorieProtocol op basis van relaysPeer-to-peer-netwerk van communities
Identiteitsecp256k1-gebruikerssleutel, zonder rotatie in de specificatiesEd25519-sleutelparen voor gebruikers en communities
Waar posts staanRelays die de auteur kiest, vaak veelDe node van de community-eigenaar en de peers die de community lezen en seeden
Wie houdt het onlineRelaybeheerdersNode van de community-eigenaar plus helpende seeders
CommunitiesGroepen die op relays worden gehost (NIP-29)Volwaardige objecten waarvan de node posts accepteert of weigert
SpambestrijdingHet beleid van elke relay: proof-of-work, authenticatie, betaling, allowlists, rate limitsDe challenge van elke community voordat een post wordt geaccepteerd
ModeratieRelaybeleid, mutelijsten in clients, labels en meldingenCommunity-eigenaren modereren hun community; apps kiezen wat ze tonen
NamenOptionele identifiers in de vorm name@domain, gecontroleerd via HTTPS.bso- en .eth-namen die naar sleutels verwijzen
BrowserWebSocket-client van relaysPeer-to-peer-node in een gewoon browsertabblad
Belangrijkste afwegingOverdraagbare identiteit en brede replicatie, maar beschikbaarheid en beleid hangen af van relaysMinder afhankelijk van relays, maar oude inhoud is niet voor altijd verzekerd