术语表 /闪电网络与 Layer 2
闪电地址
- 闪电地址是什么?
- 闪电地址的外观与电子邮件地址相似,即“用户名@域名”,它会解析为该域名下的一个网络端点,该端点会在收到请求时向您的钱包提供一张新的闪电发票。
没有人愿意把一百个字符长的发票念出来。闪电地址用一个可以在播客里说出口的字符串取而代之,之所以可行,是因为该地址根本不是支付请求,而只是指向一台负责生成支付请求的服务器的指针。该规范只有一页,即 LUD-16,整个流程只需一次 HTTPS 请求。
运作方式
闪电地址是一条改写规则,把形如电子邮件的字符串改写为一个 URL。
以 satoshi@example.com 为例,钱包会构造出 URL https://example.com/.well-known/lnurlp/satoshi,并发送一次 GET 请求。服务器返回标准的 LNURL-pay JSON:一个回调 URL,其可接受的最小和最大金额(以毫聪计),以及一段描述收款方的元数据。钱包向您显示该描述,您输入金额,钱包再携带该金额调用回调 URL。返回的是一张恰好为该金额的 BOLT11 发票,钱包核对后即完成支付。
用户名部分仅限小写字母、数字、连字符、下划线和句点,另可使用一个加号,供支持 user+label@domain 这类标签的服务使用。单独的 @example.com 可作为默认身份,解析为保留的用户名下划线。洋葱域名使用普通 HTTP,因为 Tor 已经提供了 TLS 所能提供的传输安全。
整个规范就是这些。没有新的密码学,没有新的消息类型,也不改动任何节点。闪电地址是叠加在 LNURL-pay 之上的一种命名约定,而 LNURL-pay 本身又叠加在普通发票之上,每一层都可以移除,而不会破坏其下的一层。
在哪里会遇到它
闪电地址是大多数人公布收款方式的途径。
托管型钱包和闪电网络原生应用会在注册时发放一个,因为服务提供商本来就运行着该地址所需的网络服务器和节点。播客订阅源携带闪电地址,用于流式支付。社交主页、打赏罐和会议胸牌使用它,原因与名片上印的是电子邮件地址而不是银行电汇模板相同。
自行运行一个闪电地址需要一个域名,以及一个在 well-known 路径上响应请求的小型服务,在找到可靠的托管位置之前,这比听上去要费事。这就是为什么流通中的绝大多数闪电地址都属于某家服务提供商,也是您在把自己的地址印到任何东西上之前值得考虑的部分。
由此产生两个实际限制。第一,运营该域名的一方会看到每一次发票请求,包括金额和时间,因此即使背后的钱包是非托管的,使用地址也意味着在隐私上有所取舍。第二,地址只在域名正常运行时有效。如果提供商停止运营、更改条款或失去该域名,您公布过该地址的每一处都将指向空无一物。请把它当作便利层,而不是您拥有的身份,除非该域名由您自己掌控。
闪电地址 vs 比特币地址
闪电地址是网络上的查询键;比特币地址是区块链上的花费条件。向 satoshi@example.com 发送链上比特币不会有任何结果,因为不存在向域名发起的链上交易。向 bc1q 后接38个字符的地址发送闪电支付同样不会有任何结果。两者在钱包的“发送”栏里看起来有些相似,却没有任何共同的机制:一个触发 HTTPS 请求,另一个编码出矿工将强制执行的脚本。比特币地址永久有效,无需服务器;闪电地址需要一台在线的服务器,服务器停止运行的那一天它也就失效了。