mirror of
https://github.com/hzrd149/blossom.git
synced 2025-12-08 14:58:49 +00:00
Update to use cashu NUT-24
This commit is contained in:
23
buds/07.md
23
buds/07.md
@@ -10,12 +10,15 @@ Payment requirements for blob storage.
|
|||||||
|
|
||||||
## Payment Required
|
## Payment Required
|
||||||
|
|
||||||
Some servers MAY require payment for file storage. In such cases, these endpoints MUST return a **402 Payment Required** status code:
|
Some servers MAY require payment for uploads, downloads, or any other endpoint. In such cases, these endpoints MUST return a **402 Payment Required** status code.
|
||||||
|
|
||||||
- [HEAD /upload](./01.md#head-sha256---has-blob) (Optional, if [BUD-06](./06.md) is implemented)
|
Some endpoints a server may require payment for:
|
||||||
- [PUT /upload](./02.md#put-upload---upload-blob)
|
|
||||||
- [HEAD /<sha256>](./01.md#head-sha256---has-blob)
|
- [`HEAD /upload`](./06.md) to signal that payment is required for the `PUT` request ( if [BUD-06](./06.md) is supported )
|
||||||
- [GET /<sha256>](./01.md#get-sha256---get-blob)
|
- [`PUT /upload`](./02.md#put-upload---upload-blob) to require payment for uploads
|
||||||
|
- [`HEAD /<sha256>`](./01.md#head-sha256---has-blob) to signal that payment is required for the `GET` request
|
||||||
|
- [`GET /<sha256>`](./01.md#get-sha256---get-blob) to require payment for downloads ( maybe charge by MB downloaded? )
|
||||||
|
- [`HEAD /media`](./05.md) and [`PUT /upload`](./05.md) to require payment for media optimizations ( if [BUD-06](./06.md) is supported )
|
||||||
|
|
||||||
When payment is required, the server MUST include one or more `X-{payment_method}` header(s), each corresponding to a supported payment method.
|
When payment is required, the server MUST include one or more `X-{payment_method}` header(s), each corresponding to a supported payment method.
|
||||||
|
|
||||||
@@ -25,7 +28,7 @@ The 402 status code and `X-{payment_method}` header is used by the server to inf
|
|||||||
|
|
||||||
Supported payment methods:
|
Supported payment methods:
|
||||||
|
|
||||||
- `X-Cashu`: Payment details for the cashu payment method, adhering to the [NUT-18](https://github.com/cashubtc/nuts/blob/main/18.md) standard.
|
- `X-Cashu`: Payment details for the cashu payment method, adhering to the [NUT-24](https://github.com/cashubtc/nuts/blob/main/24.md) standard.
|
||||||
- `X-Lightning`: Payment details for the lightning payment method, adhering to the [BOLT-11](https://github.com/lightning/bolts/blob/master/11-payment-encoding.md) standard.
|
- `X-Lightning`: Payment details for the lightning payment method, adhering to the [BOLT-11](https://github.com/lightning/bolts/blob/master/11-payment-encoding.md) standard.
|
||||||
|
|
||||||
If a server supports multiple payment methods, it MAY send multiple `X-{payment_method}` headers in the same response.
|
If a server supports multiple payment methods, it MAY send multiple `X-{payment_method}` headers in the same response.
|
||||||
@@ -39,7 +42,7 @@ X-{payment_method}: "<encoded_payload_according_to_{payment_method}_spec>"
|
|||||||
|
|
||||||
### `X-Cashu` Header
|
### `X-Cashu` Header
|
||||||
|
|
||||||
When using the X-Cashu header, the server MUST adhere to the [NUT-23](https://github.com/cashubtc/nuts/pull/239) standard.
|
When using the X-Cashu header, the server MUST adhere to the [NUT-24](https://github.com/cashubtc/nuts/blob/main/24.md) standard.
|
||||||
|
|
||||||
Example for cashu:
|
Example for cashu:
|
||||||
|
|
||||||
@@ -64,7 +67,7 @@ Clients MUST parse and validate the `X-{payment_method}` header received from th
|
|||||||
|
|
||||||
The client MUST provide the payment proof when re-trying the request using the same `X-{payment_method}` header that was chosen. The payment proof MUST align with the payment method specification:
|
The client MUST provide the payment proof when re-trying the request using the same `X-{payment_method}` header that was chosen. The payment proof MUST align with the payment method specification:
|
||||||
|
|
||||||
- For cashu the payment proof should be a serialized cashu token according to [NUT-00](https://github.com/cashubtc/nuts/blob/main/00.md#v4-tokens).
|
- For cashu the payment proof should be a serialized `cashuB` token in the `X-Cashu` header according to [NUT-24](https://github.com/cashubtc/nuts/blob/main/24.md#client-payment).
|
||||||
- For lightning the payment proof should be the preimage of the payment request according to [BOLT-11](https://github.com/lightning/bolts/blob/master/11-payment-encoding.md).
|
- For lightning the payment proof should be the preimage of the payment request according to [BOLT-11](https://github.com/lightning/bolts/blob/master/11-payment-encoding.md).
|
||||||
|
|
||||||
Schema:
|
Schema:
|
||||||
@@ -82,7 +85,7 @@ X-Cashu: cashuBo2F0gqJhaUgA_9SLj17PgGFwgaNhYQFhc3hAYWNjMTI0MzVlN2I4NDg0YzNjZjE4N
|
|||||||
Example for Lightning:
|
Example for Lightning:
|
||||||
|
|
||||||
```http
|
```http
|
||||||
X-Lightning: "966fcb8f153339372f9a187f725384ff4ceae0047c25b9ce607488d7c7e93bba"
|
X-Lightning: 966fcb8f153339372f9a187f725384ff4ceae0047c25b9ce607488d7c7e93bba
|
||||||
```
|
```
|
||||||
|
|
||||||
**Special Note on HEAD Requests**
|
**Special Note on HEAD Requests**
|
||||||
@@ -99,4 +102,4 @@ To support future payment methods (e.g., other Layer 2 solutions), the specifica
|
|||||||
|
|
||||||
New methods MUST use a unique `X-{payment_method}` header containing the specific payment details.
|
New methods MUST use a unique `X-{payment_method}` header containing the specific payment details.
|
||||||
|
|
||||||
New methods MUST adhere their own specification, which MUST be publicly available and linked in the header.
|
New methods MUST adhere their own specification, which MUST be publicly available and linked in the header.
|
||||||
|
|||||||
Reference in New Issue
Block a user