什么是 LNURL?
LNURL 是一套构建在 Lightning Network 之上的开放标准。LNURL 无需在应用中直接暴露原始的闪电发票或节点公钥,而是定义了钱包能够处理的、对人友好的基于 URL 的协议。当钱包扫描 LNURL 二维码时,它会解码 URL,从你的服务器获取 JSON 响应,然后采取相应的操作(签署挑战、获取支付请求等)——对用户来说这一切都是不可见的。 l402-kit 内置了两个 LNURL 功能:
这两种协议适用于所有主流的闪电钱包(Phoenix、Blink、Zeus、Breez、Alby),且无需额外依赖——你的服务器只需提供一个 JSON 端点,并可选择性地验证 secp256k1 签名。
LNURL-auth——无密码登录
l402-kit.com 的支付仪表板使用了 LNURL-auth。你可以在自己的应用中使用相同的流程。工作原理
端点
TypeScript——验证 LNURL-auth 签名
LNURL-auth 不需要邮箱、密码或 OAuth。用户的身份即其闪电公钥——可跨钱包携带、无法被审查、全球唯一。
LNURL-pay——闪电地址
闪电地址(you@domain.com)是一个人类可读的别名,可解析为 LNURL-pay 端点。l402-kit 在以下位置暴露该端点:
ownerAddress: "you@blink.sv" 时,Worker 会解析 blink.sv/.well-known/lnurlp/you 以获取 BOLT11 发票。
如何设置你自己的闪电地址
- 在
https://yourdomain.com/.well-known/lnurlp/{username}部署一个 LNURL-pay 端点 - 返回标准的 LNURL-pay 元数据响应:
callback端点接收?amount=<msats>并返回:
使用 BTCPay Server 自托管
BTCPay Server 内置了 LNURL-pay——只需在商店设置中启用即可。你的闪电地址将变为you@yourbtcpay.com。
API 目录的所有权验证
当你通过POST /api/register 注册 API 时,l402-kit 会自动检查你的 API 域名下是否存在 /.well-known/l402.txt 文件。如果找到该文件且其中包含你的闪电地址,你的列表将获得已验证徽章。
创建该文件: