2023-11-18 07:13:12 -05:00
NIP-75
======
2023-09-01 09:07:52 -04:00
2023-11-18 07:13:12 -05:00
Zap Goals
---------
2023-09-01 09:07:52 -04:00
2023-11-15 19:42:51 -05:00
`draft` `optional`
2023-09-01 09:07:52 -04:00
This NIP defines an event for creating fundraising goals. Users can contribute funds towards the goal by zapping the goal event.
## Nostr Event
A `kind:9041` event is used.
The `.content` contains a human-readable description of the goal.
The following tags are defined as REQUIRED.
- `amount` - target amount in milisats.
- `relays` - a list of relays the zaps to this goal will be sent to and tallied from.
Example event:
2024-09-03 13:11:31 -04:00
```jsonc
2023-09-01 09:07:52 -04:00
{
"kind": 9041,
"tags": [
2024-09-03 13:11:31 -04:00
["relays", "wss://alicerelay.example.com", "wss://bobrelay.example.com", /*...*/],
2023-09-01 09:07:52 -04:00
["amount", "210000"],
],
"content": "Nostrasia travel expenses",
2024-09-03 13:11:31 -04:00
// other fields...
}
2023-09-01 09:07:52 -04:00
```
The following tags are OPTIONAL.
- `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.
2023-11-23 13:17:28 -05:00
- `image` - an image for the goal
- `summary` - a brief description
2023-09-01 09:07:52 -04:00
2024-09-03 13:11:31 -04:00
```jsonc
2023-09-01 09:07:52 -04:00
{
"kind": 9041,
"tags": [
2024-09-03 13:11:31 -04:00
["relays", "wss://alicerelay.example.com", "wss://bobrelay.example.com", /*...*/],
2023-09-01 09:07:52 -04:00
["amount", "210000"],
["closed_at", "< unix timestamp in seconds > "],
2023-11-23 13:17:28 -05:00
["image", "< image URL > "],
["summary", "< description of the goal > "],
2023-09-01 09:07:52 -04:00
],
"content": "Nostrasia travel expenses",
2024-09-03 13:11:31 -04:00
// other fields...
2023-11-18 07:13:12 -05:00
}
2023-09-01 09:07:52 -04:00
```
2024-08-20 11:56:05 -04:00
The goal MAY include an `r` or `a` tag linking to a URL or addressable event.
2023-09-01 09:07:52 -04:00
The goal MAY include multiple beneficiary pubkeys by specifying [`zap` tags ](57.md#appendix-g-zap-tag-on-other-events ).
2024-08-20 11:56:05 -04:00
Addressable events can link to a goal by using a `goal` tag specifying the event id and an optional relay hint.
2023-09-01 09:07:52 -04:00
2024-09-03 13:11:31 -04:00
```jsonc
2023-09-01 09:07:52 -04:00
{
2023-11-18 07:13:12 -05:00
"kind": 3xxxx,
2023-09-01 09:07:52 -04:00
"tags": [
["goal", "< event id > ", "< Relay URL ( optional ) > "],
2024-09-03 13:11:31 -04:00
// rest of tags...
2023-09-01 09:07:52 -04:00
],
2024-09-03 13:11:31 -04:00
// other fields...
2023-11-18 07:13:12 -05:00
}
2023-09-01 09:07:52 -04:00
```
## Client behavior
Clients MAY display funding goals on user profiles.
When zapping a goal event, clients MUST include the relays in the `relays` tag of the goal event in the zap request `relays` tag.
2024-09-28 11:26:48 -04:00
When zapping an addressable event with a `goal` tag, clients SHOULD tag the goal event id in the `e` tag of the zap request.
2023-09-01 09:07:52 -04:00
## Use cases
- Fundraising clients
- Adding funding goals to events such as long form posts, badges or live streams