NIP-75 defines a fundraising goal event that users can zap toward. A goal declares a target amount in millisatoshis and a list of relays where zap receipts for the goal are tallied. Any NIP-57 zap that references the goal event counts toward its progress.

How It Works

A zap goal is a kind:9041 event. The .content is a human-readable description. The required tags are amount (target in millisats) and relays (the relay list used for tallying zap receipts). Optional tags include closed_at to cut off the tally at a given timestamp, image, and summary. The goal may also include an r or a tag linking to an external URL or an addressable event, and it may carry multiple beneficiary pubkeys via zap-split tags borrowed from NIP-57 appendix G.

{
  "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 attach a zap to a goal by including an e tag pointing at the goal event inside the zap request. Goal progress is the sum of matched zap receipt amounts on the relays the goal specified. When closed_at is set, zap receipts published after that timestamp do not count.

Implementations

  • Amethyst now renders goal progress bars and one-tap zap buttons inside live-stream headers via PR #2469, which wires NIP-75 into the NIP-53 Live Activities screen.

Primary sources:

Mentioned in:

See also: