{"id":"8d96bf6d451e2685a7c3de17fd7a8e00a124c90963aa4efab8f0f70217ba6a1b","pubkey":"2b39b4ffe62933df970e19366c22c1e092f953f83fcfed754e0f04d5a3b459f9","created_at":1781353189,"kind":30817,"tags":[["d","nip-75"],["title","NIP-75: Zap Goals"],["summary","Kind 9041, a fundraising goal that zaps are tallied against."],["s","draft"],["t","nostr"],["t","nip"],["k","9041","Zap Goal"],["alt","A specification: NIP-75: Zap Goals"],["client","openspecs-import"],["published_at","1693573672"],["proxy","https://github.com/nostr-protocol/nips/blob/656cecc7c0a815b6a2b218d3b5d6f078b3f4dbab/75.md","web"],["x","6e23ccd27fce5e3bc785e138b124aa729a773ddb2d7c22a21f84cf7b7fb110b2"]],"content":"NIP-75\n======\n\nZap Goals\n---------\n\n`draft` `optional`\n\nThis NIP defines an event for creating fundraising goals. Users can contribute funds towards the goal by zapping the goal event.\n\n## Nostr Event\n\nA `kind:9041` event is used.\n\nThe `.content` contains a human-readable description of the goal.\n\nThe following tags are defined as REQUIRED.\n\n- `amount` - target amount in milisats.\n- `relays` - a list of relays the zaps to this goal will be sent to and tallied from.\n\nExample event:\n\n```yaml\n{\n  \"kind\": 9041,\n  \"tags\": [\n    [\"relays\", \"wss://alicerelay.example.com\", \"wss://bobrelay.example.com\", /*...*/],\n    [\"amount\", \"210000\"],\n  ],\n  \"content\": \"Nostrasia travel expenses\",\n  // other fields...\n}\n```\n\nThe following tags are OPTIONAL.\n\n- `closed_at` - timestamp for determining which zaps are included in the tally. Zap receipts published after the `closed_at` timestamp SHOULD NOT count towards the goal progress.\n- `image` - an image for the goal\n- `summary` - a brief description\n\n```yaml\n{\n  \"kind\": 9041,\n  \"tags\": [\n    [\"relays\", \"wss://alicerelay.example.com\", \"wss://bobrelay.example.com\", /*...*/],\n    [\"amount\", \"210000\"],\n    [\"closed_at\", \"<unix timestamp in seconds>\"],\n    [\"image\", \"<image URL>\"],\n    [\"summary\", \"<description of the goal>\"],\n  ],\n  \"content\": \"Nostrasia travel expenses\",\n  // other fields...\n}\n```\n\nThe goal MAY include an `r` or `a` tag linking to a URL or addressable event.\n\nThe goal MAY include multiple beneficiary pubkeys by specifying [`zap` tags](nostr:naddr1qvzqqqrcvypzq2eeknl7v2fnm7tsuxfkds3vrcyjl9fls070a465urcy6k3mgk0eqqrxu6ts956nw83qqjw#appendix-g-zap-tag-on-other-events).\n\nAddressable events can link to a goal by using a `goal` tag specifying the event id and an optional relay hint.\n\n```yaml\n{\n  \"kind\": 3xxxx,\n  \"tags\": [\n    [\"goal\", \"<event id>\", \"<Relay URL (optional)>\"],\n    // rest of tags...\n  ],\n  // other fields...\n}\n```\n\n## Client behavior\n\nClients MAY display funding goals on user profiles.\n\nWhen zapping a goal event, clients MUST include the relays in the `relays` tag of the goal event in the zap request `relays` tag.\n\nWhen zapping an addressable event with a `goal` tag, clients SHOULD tag the goal event id in the `e` tag of the zap request.\n\n## Use cases\n\n- Fundraising clients\n- Adding funding goals to events such as long form posts, badges or live streams\n","sig":"c086a72b766e9f4626a14f8b0789bcd825ffcb170be432c7af0160855351de7d8446da9ce749567cbe4928db60c64b168cae4e577933b08ae8b5bce17c7cb038"}