mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-23 00:45:53 -05:00
84 lines
1.7 KiB
Markdown
84 lines
1.7 KiB
Markdown
NIP-83
|
|
======
|
|
|
|
Wallet connect/bridge
|
|
--------------
|
|
|
|
`draft` `optional` `author:arcbtc`
|
|
|
|
Useful for clients wanting to intergrate non-custodal wallet features.
|
|
|
|
> Intended for use with bitcoin, but could be used with any invoice payment system that can pay invoices/create invoices/check payment status.
|
|
|
|
## Motivation
|
|
|
|
We wanted LNbits to have a funding source that pay invoices/create invoices/check payment status, all over nostr DMs. Simple plugins/middleware coud be made for lightning nodes that connect to the funding source.
|
|
|
|
## Examples
|
|
|
|
There are two simple clients sending json over [NIP04](https://github.com/nostr-protocol/nips/blob/master/04.md).
|
|
|
|
1. `funding source client`: Attached to the funding source, the other built into another service/client.
|
|
|
|
2. `service client`: Built into a service.
|
|
|
|
### Creating an invoice
|
|
|
|
`service client` sends `create_invoice` event:
|
|
|
|
```json
|
|
{
|
|
"create_invoice":{
|
|
"amount":"int",
|
|
"memo":"<Optional[str]>",
|
|
"description_hash":"<Optional[bytes]>"
|
|
}
|
|
}
|
|
```
|
|
|
|
`funding source client` checks the pubkey has permission and sends `generated_invoice` event:
|
|
|
|
```json
|
|
{
|
|
"generated_invoice":{
|
|
"payment_hash":"<string>",
|
|
"payment_request":"<string>"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Paying an invoice
|
|
|
|
`service client` sends `pay_invoice` event:
|
|
|
|
```json
|
|
{
|
|
"pay_invoice":{
|
|
"invoice":"<string>",
|
|
"note":"<Optional[str]>"
|
|
}
|
|
}
|
|
```
|
|
|
|
### Checking a payment in/out
|
|
|
|
`service client` sends `check_payment` event:
|
|
|
|
```json
|
|
{
|
|
"check_payment":{
|
|
"payment_hash":"<string>"
|
|
}
|
|
}
|
|
```
|
|
|
|
`funding source client` checks the pubkey has permission, checks the payment status and sends `payment_status` event:
|
|
|
|
```json
|
|
{
|
|
"payment_status":{
|
|
"paid":"<bool>"
|
|
}
|
|
}
|
|
```
|