mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-13 19:06:24 +00:00
Recurring Subscriptions
This commit is contained in:
parent
08d3eff350
commit
7ad40d5159
79
88.md
Normal file
79
88.md
Normal file
@ -0,0 +1,79 @@
|
||||
NIP-88
|
||||
======
|
||||
|
||||
Recurring Subscriptions
|
||||
-----------------------
|
||||
|
||||
`draft` `optional` `author:pablof7z`
|
||||
|
||||
This NIP defines a way for a pubkey to create recurring subscription payments to another pubkey.
|
||||
|
||||
## Tier Event
|
||||
A pubkey can create "tiers". These tiers might provide certain benefits to the supporters who subscribe to these.
|
||||
|
||||
```json
|
||||
{
|
||||
"kind": 7002,
|
||||
"content": "<description of the tier>",
|
||||
"tags": [
|
||||
[ "title", "..." ],
|
||||
[ "amount", "<amount-in-base-unit>", "currency", "<cadence>" ]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
This event is generated by a pubkey who wants to allow users to support with different tiers.
|
||||
|
||||
`.content` SHOULD be a description of what users who subscribe can expect.
|
||||
Tag `title` is an optional title for the tier.
|
||||
Tag `amount` MUST specify the payment required for this tier and its cadence.
|
||||
* The first argument should be the stringified amount and the second argument the currency
|
||||
* The third argument SHOULD be one of `daily`, `monthly`, `yearly`
|
||||
One or more `amount` tags MUST exist.
|
||||
|
||||
#### Examples
|
||||
* `[ "amount", "100", "usd", "daily" ]`, $1.00 a day.
|
||||
* `[ "amount", "1000000", "btc", "daily" ]`, 1000000 millisats a day.
|
||||
|
||||
## Subscribe Event
|
||||
|
||||
```json
|
||||
{
|
||||
"kind": 7001,
|
||||
"content": "<optional-message>",
|
||||
"tags": [
|
||||
[ "p", "<recipient-pubkey>" ],
|
||||
[ "e", "<supporting-tier-id>" ],
|
||||
[ "amount", "<amount-in-base-unit>", "currency", "<cadence>" ]
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
When a user wants to subscribe to subscribe to support a user they create a `kind:7001` event.
|
||||
|
||||
* `.content` is an optional message the supporter can write.
|
||||
* The `p` tag MUST tag the pubkey being supported.
|
||||
* The `e` tag is optional, and should point to a `kind:7001` support tier event. There MUST be exactly 0 or 1 `e` tags.
|
||||
* The `amount` tag specifies what the supporters is committing to pay to the supported pubkey and the candence.
|
||||
|
||||
The `kind:7001` event can be created without an `e` tag so that users can create recurring support events without the pubkey receiving the support having explicitly created a support tier.
|
||||
|
||||
## Paying
|
||||
The supporting user should create a zap p-tagging the receiver and e-tagging the `kind:7001`. There MUST be a single `p` and a single `e` tag in the zap request.
|
||||
|
||||
```json
|
||||
{
|
||||
"kind": 9734,
|
||||
"content": "",
|
||||
"tags": [
|
||||
[ "p", "<recipient-pubkey>" ],
|
||||
[ "e", "<kind-7001-event-id>" ]
|
||||
]
|
||||
```
|
||||
|
||||
Clients supporting this NIP can check for zaps e-tagging the `kind:7001` event to find the pubkeys that have a valid, paid subscriptions at each different period.
|
||||
|
||||
The same `kind:7001` is re-zapped on a regular basis per the cadence specified in the event.
|
||||
|
||||
## Stopping a subscription
|
||||
A user who wants to stop a subscription by publishing a `kind:5` deletion request of the `kind:7001` event.
|
@ -98,6 +98,8 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
|
||||
| `1985` | Label | [32](32.md) |
|
||||
| `4550` | Community Post Approval | [72](72.md) |
|
||||
| `7000` | Job Feedback | [90](90.md) |
|
||||
| `7001` | Recurring Subscription | [88](88.md) |
|
||||
| `7002` | Recurring Subscription Tier| [88](88.md) |
|
||||
| `9041` | Zap Goal | [75](75.md) |
|
||||
| `9734` | Zap Request | [57](57.md) |
|
||||
| `9735` | Zap | [57](57.md) |
|
||||
|
Loading…
Reference in New Issue
Block a user