LNURL 和 Keysend 都是闪电网络中用于支付的技术,但它们在实现方式和使用场景上存在一些区别:
-
交互方式:
- LNURL:是一种使用HTTP协调闪电网络支付信息的协议栈。它允许接收方通过一个服务端点提供发票,支付方可以通过扫描QR码或点击链接来请求并接收这个发票,然后完成支付[34][36][37]。
- Keysend:是一种直接在闪电网络中发送支付的方式,不需要事先获取接收方的发票。发送方生成一个秘密值和其哈希值,通过哈希值构造HTLC并发送给接收方,接收方解密后获得秘密值,并回传原像以完成支付[30][32]。
-
支付证据:
- LNURL:接收方设置预图像(preimage),提供密码学上可验证的支付证据[33]。
- Keysend:发送方设置预图像,但没有提供支付证据,因为接收方无法证明他们收到了支付[33]。
-
隐私性:
- LNURL:使用服务端点,可能需要考虑服务端点的安全性和隐私性问题。
- Keysend:依赖于节点的
node_id
,如果使用node_id
接收支付,可能会暴露接收方的隐私,如节点、通道和通道UTXO信息[32]。
-
支持和兼容性:
- LNURL:需要支付方和接收方的客户端都支持LNURL协议。
- Keysend:需要发送节点理解闪电网络的特性位(Feature Bit 9, TLV Onion),并且接收节点必须开启相应的功能[33]。
-
使用场景:
- LNURL:适用于需要频繁接收小额支付的场合,如打赏、捐赠等,提供了一种自动化请求发票的方式[30][32]。
- Keysend:适用于支付方已知接收方
node_id
且希望进行无需发票的支付,但不适合需要支付证据的场景[32]。
-
资源使用:
- LNURL:作为一种建立在HTTP之上的协议,它使用网络资源来协调支付信息。
- Keysend:完全依赖于闪电网络自身,不需要额外的网络协议或通信方式[32]。
LNURL 和 Keysend 各有优势和局限,选择使用哪一种取决于具体的应用场景和用户的需求。随着闪电网络的发展,这些技术也在不断地演进和改进。