2.0 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 could be easily made for nodes.
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>"
}
}