Wie Nostr funktioniert und warum ein soziales Netzwerk ohne einen einzigen Server überhaupt funktioniert
Fast jedes dezentrale soziale Netzwerkprotokoll wird irgendwann zum Monster. ActivityPub schleppt schwere Mastodon-Server mit sich, wo ein Ban auf einem Node dich von der halben Zielgruppe abschneidet. P2P-Netzwerke wie Scuttlebutt stoßen auf Synchronisierungsprobleme auf mobilen Geräten und entladen den Akku in einem halben Tag.
Der Erfinder des Nostr-Protokolls (steht für Notes and Other Stuff Transmitted by Relays) ging den umgekehrten Weg: Er legte Blockchains ab, legte komplexe P2P-Protokolle ab und beliess nur Kryptografie und einfache WebSocket-Relays.

Die Kernidee
Nostr ist kein fertiges soziales Netzwerk und keine eigenständige Anwendung. Es ist eine Spezifikation für Netzwerkinteraktion, die in ein paar Dutzend kurzen Dokumenten Platz findet (NIPs, Nostr Implementation Possibilities).
Du hast keine Anmeldung, kein Passwort und keine Telefonnummer. Ein Konto ist ein Paar kryptografischer Schlüssel: privat (secp256k1) und öffentlich. Dein öffentlicher Schlüssel dient als deine Identifikation, und du unterschreibst jede Aktion mit deinem privaten Schlüssel.
Jede Nachricht, jeder Artikel, jede Reaktion oder Avatar-Änderung wird in der Protokoll-Terminologie als Event bezeichnet. Im Wesentlichen ist es ein gewöhnliches JSON-Objekt:
{
"id": "4376c65d2f23493d6050d0c393d01f50252a607d58eab305699c6811ea70017d",
"pubkey": "9fe415e4177d13521649f80e4293097b540e555d34a14f4e2454b62412f93008",
"created_at": 1672531199,
"kind": 1,
"tags": [],
"content": "Привет, это тестовый пост в Nostr!",
"sig": "250e938424f...подпись...4e8f9b"
}
Der Client erstellt ein solches JSON, unterschreibt es mit deinem privaten Schlüssel und sendet es über WebSocket an einen oder mehrere Relay-Server.
Wie Relays funktionieren
Ein Relay ist ein dummer Server. Er weiss nicht, wer du bist, und kümmert sich nicht um die Logik deiner Anwendung. Seine Aufgaben sind:
- JSON über WebSocket akzeptieren.
- Die Signatur des Autors verifizieren.
- Das Event in einer Datenbank speichern (normalerweise SQLite oder PostgreSQL).
- Das Event an Abonnenten verteilen, die einen Filter nach deiner
pubkeyangefordert haben.
Wenn der Besitzer eines bestimmten Relays dich bannen möchte, wechselst du einfach deinen Client zu fünf anderen Relays. Deine Abonnenten finden deine Beiträge dort, weil die Signatur des Autors noch vorhanden ist und das Relay den Nachrichtentext ohne den privaten Schlüssel nicht fälschen kann.
Gleichzeitig können Relays kostenpflichtig sein (Anti-Spam über Abonnement oder Micropayments), privat (nur für Firmenmitarbeiter) oder öffentlich.
Das Hauptproblem der Technik
Theoretisch sieht alles grossartig aus: viele Relays, keine Zensur. In der Praxis stellt sich eine Frage: Woher weiss der Client des Lesers, an welche genauen Relays der Autor seine Beiträge sendet?
Wenn du 500 Personen abonnierst, ist das Abfragen von Tausenden bestehender Relays teuer. Die Community hat das Outbox-Modell (NIP-65) übernommen. Der Autor veröffentlicht eine Liste der Relays, an die er schreibt (Write Relays). Der Abonnent fordert diese Liste an und verbindet sich nur mit diesen. Zur Optimierung finden Clients Schnittmengen und halten Verbindungen zu nur 10-15 Servern offen.
Was Entwickler auf Nostr bauen
Dank der Einfachheit der Spezifikation begannen Leute, weit über normales Microblogging hinaus Dinge auf Nostr zu bauen:
- Clients wie Damus (iOS), Amethyst (Android) oder Coracle (Web) für Twitter-artige Kommunikation.
- Plattformen für lange Artikel (NIP-23), wo Beiträge in Markdown gespeichert werden.
- P2P-Messenger mit Nachrichtenverschlüsselung unter Verwendung des öffentlichen Schlüssels des Gesprächspartners.
- Website-Authentifizierungssysteme (NIP-07), wo eine Browser-Erweiterung die Anfrage unterschreibt anstatt Login und Passwort einzugeben.
Bibliotheken für die Arbeit mit dem Protokoll existieren für praktisch jeden Stack: Go, Rust, TypeScript, Python, Dart. Einen minimalen Client zu schreiben, der sich mit einem Relay verbindet und einen Stream von Beiträgen abhört, kann buchstäblich in 30-40 Zeilen Code erledigt werden.
Lohnt es sich, tiefer zu graben
Nostr ist nicht perfekt. Es ist schwierig, eine Suche ohne Drittanbieter-Indexer zu organisieren, es gibt keine eingebaute Datenlöschung (ein gelöschter Beitrag kann für immer auf einem störrischen Relay bleiben), und die Synchronisation zwischen mehreren Clients scheitert manchmal.
Aber wenn du dich für sauberes, minimalistisches Netzwerkdesign ohne Overengineering interessierst, lohnt es sich definitiv, das Repository zu erkunden. Beginne mit der grundlegenden Events-Spezifikation in NIP-01, und du kannst fertige Clients über den Katalog unter nostrapps.com ausprobieren.
Ähnliche Projekte