2.1 KiB
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 could pay invoices/create invoices/check payment status all over nostr DMs. Simple plugins/middleware could be made for funding sources, that any wallet software could use over nostr.
Examples
There are two simple clients sending json over NIP04. These clients could be standalone or built into clients/services.
-
funding source client
: Connected to the funding source. -
service client
: Built into service/client that wants wallet functions.
Permissions
In funding source client
nostr pubkeys used by service client
are given and permissions granted (such as read
/create_invoice_only
/pay_invoices
)
Creating an invoice
service client
sends create_invoice
event:
{
"create_invoice":{
"amount":"int",
"memo":"<Optional[str]>",
"description_hash":"<Optional[bytes]>"
}
}
funding source client
checks the pubkey has permission and sends generated_invoice
event:
{
"generated_invoice":{
"payment_hash":"<string>",
"payment_request":"<string>"
}
}
Paying an invoice
service client
sends pay_invoice
event:
{
"pay_invoice":{
"invoice":"<string>",
"note":"<Optional[str]>"
}
}
funding source client
checks the pubkey has permission and attempts to pay the invoice.
Checking a payment in/out
service client
sends check_payment
event:
{
"check_payment":{
"payment_hash":"<string>"
}
}
funding source client
checks the pubkey has permission, checks the payment status and sends payment_status
event:
{
"payment_status":{
"paid":"<bool>"
}
}