NIP-31: Umgang mit unbekannten Event-Kinds
Statushinweis: Die aktuelle NIP-31-Spezifikation stuft sich selbst als
unrecommendedein, da sie „unnötig aufgebläht“ sei, und ihre Statuszeile lautet draft, unrecommended und optional. Relays speichern bereits Events, die diese Konvention nutzen. Deshalb erklärt diese Seite, wie Clients sie lesen. Sie empfiehlt NIP-31 nicht für neue Protokolle.
NIP-31 definiert einen alt-Tag auf oberster Ebene. Der Tag enthält eine kurze Klartext-Zusammenfassung für benutzerdefinierte Event-Kinds, die nicht als gewöhnliche Textnotizen gelesen werden sollen.
Funktionsweise
Die Autorin oder der Autor eines Events mit benutzerdefiniertem Kind fügt einen alt-Tag mit einer für Menschen lesbaren Beschriftung hinzu. Clients, die auf Kind 1 ausgerichtet sind, müssen nicht jedes Kind abonnieren, das sie nicht kennen. Ihre Nutzer können trotzdem auf ein solches Event stoßen, wenn eine Notiz darauf verweist. Die Beschriftung liefert dann etwas Kontext, obwohl der Client dieses Kind nicht implementiert.
Tag-Fragment, kein vollständiges Event:
["alt", "<short plaintext summary>"]
Eine lesbare Beschriftung betrifft nur die Anzeige. Sie kann keine Stimme abgeben, keine Wallet-Anfrage ausführen und keine andere native Aktion des Kinds durchführen. Für eine umfassendere Interaktion verweist die Spezifikation auf NIP-89: Recommended Application Handlers.
Implementierungen
In der Karte für unbekannte Events von noStrudel bei Commit 7c68acf wird der erste alt-Tag getrimmt und dient als Hauptbeschriftung, optional ergänzt um eine Zeile Using <client>. Ein fehlender oder leerer Wert ergibt Unknown event (kind ...), und bis zu drei Zeilen des Inhalts erscheinen separat. Dieselbe Komponente löst den client-Tag über NIP-89-Handler-Vorlagen auf. Sie zeigt eine Schaltfläche zum Öffnen, wenn eine teilbare Adresse existiert, und Open in <client>, wenn sich ein gültiger Handler-Link auflösen lässt. Die Erklärung und die Weiterleitung an die App sind getrennte Bedienelemente.
Amethysts UnknownEventDigest.kt bei Commit 553f761 bevorzugt Inhalt, den es als Fließtext einstuft, und greift ersatzweise auf alt zurück. Sein Parser trimmt die Werte und nimmt das erste nicht leere alt. Daher kann ein Event, dessen erstes alt leer ist, hier eine andere Beschriftung erhalten als in noStrudel. Beide Beschreibungen geben den Quellcode bei diesen Commits wieder. Keine bestätigt, wie sich eine veröffentlichte Version verhält.
Grenzen
altist ein Tag, daher decken die in NIP-01 definierte Event-ID und Signatur ihn ab. Eine gültige Signatur zeigt, dass der Autor die Beschriftung veröffentlicht hat. Sie zeigt nicht, dass die Beschriftung zutrifft, sodass eine Zusammenfassung irreführend sein kann.- Tags sind öffentlich. Ein
altan einem Event mit verschlüsseltem Inhalt legt seine Zusammenfassung offen und kann verraten, was der Inhalt verbirgt. - Beide oben genannten Eigenschaften ergeben sich aus dem Event-Umschlag von NIP-01. Der Text von NIP-31 selbst formuliert sie nicht als Anforderungen.
- Ein
alt-Tag auf oberster Ebene unterscheidet sich vom Bildbeschreibungsfeldaltinnerhalb vonimeta, und Renderer parsen beide getrennt.
Primärquellen:
- NIP-31-Spezifikation
- noStrudel embedded-unknown.tsx bei Commit 7c68acf
- Amethyst UnknownEventDigest.kt bei Commit 553f761
Erwähnt in:
Siehe auch: