NIP-75 definiert ein Fundraising-Goal-Event, auf das Nutzer zappen können. Ein Goal deklariert einen Zielbetrag in millisatoshis und eine Liste von Relays, auf denen die Zap-Receipts für dieses Goal zusammengezählt werden. Jeder NIP-57 zap, der das Goal-Event referenziert, zählt für seinen Fortschritt.

Funktionsweise

Ein Zap Goal ist ein kind:9041-Event. Der Wert von .content ist eine menschenlesbare Beschreibung. Erforderliche Tags sind amount für das Ziel in millisats und relays für die Relay-Liste, die zum Zählen der Zap-Receipts verwendet wird. Optionale Tags sind closed_at, um das Tallying ab einem bestimmten Timestamp zu beenden, sowie image und summary. Das Goal kann außerdem ein r- oder a-Tag enthalten, das auf eine externe URL oder ein addressable Event verweist, und mehrere Begünstigten-pubkeys über Zap-Split-Tags tragen, die aus Appendix G von NIP-57 übernommen wurden.

{
  "id": "<64-char hex>",
  "pubkey": "<64-char hex>",
  "created_at": 1776500000,
  "kind": 9041,
  "tags": [
    ["relays", "wss://alicerelay.example.com", "wss://bobrelay.example.com"],
    ["amount", "210000"],
    ["image", "<image url>"],
    ["summary", "Nostrasia travel expenses"]
  ],
  "content": "Nostrasia travel expenses",
  "sig": "<128-char hex>"
}

Clients hängen einen zap an ein Goal, indem sie im Zap Request ein e-Tag mit Verweis auf das Goal-Event einfügen. Der Fortschritt des Goals ist die Summe der passenden Zap-Receipt-Beträge auf den Relays, die das Goal festgelegt hat. Wenn closed_at gesetzt ist, zählen Zap-Receipts, die nach diesem Timestamp veröffentlicht werden, nicht mehr.

Implementierungen

  • Amethyst rendert jetzt Goal-Fortschrittsbalken und One-Tap-Zap-Buttons in Livestream-Headern über PR #2469, das NIP-75 in den NIP-53-Live-Activities-Screen integriert.

Primärquellen:

Erwähnt in:

Siehe auch: