2.1 KiB
NIP-83
Wallet connect/bridge
draft
optional
author:arcbtc
author:blackcoffeexbt
Useful for clients wanting to intergrate wallet features, could be custodial or non-custodial or both.
Intended for use with bitcoin, but could be used with any invoice payment system that can pay invoices/create invoices/check payment status.
Motivation
All bitcoin lightning wallet clients connected to nodes use http, they should also be able to use nostr.
Simple plugins/middleware/libraries could be easily made for existing nodes and lightning wallet software.
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>"
}
}