BTCStudy 精选

2024年09月11日更新 63 人订阅
专栏简介 理解 Taproot Assets 协议 多方共享的 UTXO:形式与特性 影响 0.21.0 以前版本 Bitcoin Core 软件的漏洞披露 Taproot Assets:协议、闪电网络兼容性 从 Lamport 签名中获得脚本状态 在 ECDSA 之上使用 Lamport Signature 签名比特币交易 别再管这叫 MEV 了 探明道路:深入 LND 的寻路机制 闪电网络中的洋葱路由:Sphinx 包裹的构造 BitVM 2:比特币上的免许可验证 Swaproot:更便宜、更隐私的链上入账体验 闪电网络:技术与用户体验(六):只有一种比特币 闪电网络:技术与用户体验(五):流动性获取 闪电网络:技术与用户体验(四):收款码 闪电网络:技术与用户体验(三):路由 闪电网络:技术与用户体验(二):通道与支付 离线支付的过去、现在与未来 闪电网络:技术与用户体验(一):用户体验的基本元素 什么是 “JIT 通道”? 见证数据的折扣:为什么有些字节比别的字节 “更轻” 运行 v0.7 及更早版本的 Bitcoin Core 闪电网络的未来:LSP 规范与互通性 闪电网络中的 “多路径支付” 在闪电通道内使用限制条款聚合 HTLC 输出 Payjoin 与更好的比特币 为什么比特币钱包需要区块过滤器? 闪电通道 “拼接” 的原理 比特币钱包找回指南 什么是 “替代交易循环攻击”? BitVM:任意计算都可以在比特币上验证 闪电节点的备份形式简介 闪电网络上的暂缓支付发票 展望未来:2025 年的闪电支付 假通道 DoS 攻击 何以我们需要 “Vlidating Lightning Signer”? 交易包的交易池把关规则 交易包转发提议 针对闪电通道的攻击与交易包转发提议 等待确认(九):交易池规则新提议 等待确认(八):交易池规则是个接口 BTC 交易池 - 等待确认(七):网络资源 比特币中的限制条款:用于评审的分类学 等待确认(六):规则一致性 BTC 交易池-等待确认(五):用于保护节点资源的规则 扩展公钥与扩展私钥 BIP 158 致密区块过滤器详解 使用适配器签名实现闪电网络异步支付 如何利用 RGB 在闪电网络上转移另类资产 什么是 “闪电网络服务商”? 比特币钱包备份方案简史 基于 Taproot 的闪电通道 闪电网络常见疑问与解答 什么是 “闪电网络 offer(BOLT12)”? 闪电网络中的 “洋葱路由” 及其工作原理 闪电网络深入解读(下):HTLC 与支付路由 闪电网络深入解读(上):支付通道 理解闪电网络,Part-3:结算并关闭支付通道 理解闪电网络,Part-2:构建网络 理解闪电网络,Part-1:构建比特币的双向支付通道 有趣的比特币脚本(五):闪电通道与闪电网络 有趣的比特币脚本(四):哈希锁 有趣的比特币脚本(三):时间锁 有趣的比特币脚本(二):多签名 有趣的比特币脚本(一):基本介绍

闪电网络上的暂缓支付发票

  • BTCStudy
  • 发布于 2023-10-10 12:16
  • 阅读 2976

无论你是开发闪电网络项目的开发者、谋求创新的企业家,还是仅仅对暂缓支付发票的原理感到好奇,这篇文章都适合你。

作者:Voltage

来源:<https://voltage.cloud/blog/lightning-network-faq/understanding-hold-invoices-on-the-lightning-network/>

Hold Invoices(“暂缓支付发票”),也叫 HODL Invoices,是由 LND 客户端在 2019 年引入的。这个特性利用了闪电网络的能力,提供了独特的付款方式,从而让一些新的应用在闪电网络上成为可能。

在本文中,我们会揭晓暂缓支付发票的巧妙之处。我们将先给出 “暂缓支付发票” 的清晰定义、比较它跟常规的闪电网络发票,然后,我们会解释暂缓支付发票的工作原理,让读者能够更深入的理解其机制。最后,我们将列举它在真实世界中的用途。

无论你是开发闪电网络项目的开发者、谋求创新的企业家,还是仅仅对暂缓支付发票的原理感到好奇,这篇文章都适合你。

闪电支付概述

闪电网络上的常规支付是一个 “哈希时间锁合约(HTLC)”,这是一种用 Bitcoin Script 语言编写的智能合约,可以支持免信任的链下比特币支付。用日常语言来写这种合约的话,可以这样说(假定是 Alice 要在闪电网络上给 Bob 支付 1 BTC):

“我,Alice,将给 Bob 支付 1 BTC,只要他能提供哈希值 9ed15..232e 背后的原像,以及他本人的一个有效签名。”

“如果 Bob 无法在 24 小时内给出原像,我会收回我的钱。”

“如果 Bob 想要谎报我应该给他的钱,我可以惩罚他,将我们双方一起锁定在金融合约中的钱全部拿走。”

为了向 Alice 请求支付,Bob 先要生成一个秘密值,然后对这个秘密值运行哈希运算。在我们这个例子,假设这个秘密值是 “Run Nodes”,它的哈希值是 “9ed15..232e”。用技术语言来说,这个秘密值叫做 “(支付)原像”,而这个哈希值叫做 “(支付)哈希值”。Bob 在闪电发票中写入这个哈希值,然后将发票发送给 Alice;Alice 得到发票之后,就可以将这个哈希值放在 HTLC 中(如上所述)。想要收到 Alice 的支付,Bob 就必须揭晓这个哈希值背后的原像。而一旦他这样做了,Alice 就会把钱给他。

img

理解 Hold Invoices

Hold Invoices 则是另一种发票,会触发另一种支付流程。在遇到暂缓支付发票时,支付的接收方不会立即释放原像,从而结算支付,而是会锁定 HTLC,并推迟(甚至取消)释放原像的步骤。接收方本身自行决定是否要接受闪电支付。如前所述,接收方可以在一段时间内揭晓原像。如果超出了这段时间,就无法再结算支付了。

image.png

假设 Bob 是一家服装店的老板。Alice 想在他店里买一双袜子。这时候,Bob 没有给 Alice 常规发票,而给出了暂缓支付发票。因此,当 Alice 发送支付给 Bob 时,Bob 不是立即发回原像,而是先检查自己能够提供 Alice 想要的样式。他找到了 Alice 想要的货之后,就返回原像,并结算这次支付。

img

暂缓支付发票也可以用在接收方当下还不能获得原像的时候。在这种星星中,接收方可以先采取额外的步骤获得原像,然后再完成支付。支付仅能在接收方成功获得原像之后完成。后面会有案例告诉大家这是怎么用的。

应用场景

我们已经在上一节中看过了一个简单的例子,但暂缓支付发票可以做的还有很多。比如:

押金

滑雪设备租赁店的老板可以使用暂缓支付发票来收取押金。如果某个客户损坏了滑雪板,老板可以通过揭晓原像来取走押金;反过来,如果没有损坏,他们可以让支付自然过期,从而资金会自动回到客户手中。

原子化的外卖

在编程术语里面,“原子化” 的意思是一个操作要么完成,要么等于完全没发生过。暂缓支付发票可以用来创建一种 “不见披萨不付钱”。以下是它的工作原理:

客户订了一个披萨,并发送一个自己知晓原像的哈希值。披萨店的老板创建一个使用该哈希值的暂缓支付发票,然后发给客户。客户给这个发票支付,但因为披萨店老板并不知道原像,所以无法结算这笔支付。当披萨送达的时候,外卖员可以询问客户这个原像;一旦原像揭晓,披萨店的老板就可以结算这次支付、收到款项。

当前的暂缓支付发票用法

RoboSats 是一种闪电网络上的点对点交易所。他们在交易托管(Trade Escrow)中使用暂缓支付发票,以保护交易,并防止欺诈。

当一个卖家决定卖出比特币的时候,他们创建一个暂缓支付发票,本质上就是将自己希望卖出的数额锁进一个类似于托管商的合约。这个暂缓支付发票就扮演交易托管商的角色,保护交易资金,并保证买家不会遭遇欺诈。在这种情况下,暂缓支付发票是交给 RoboSats 的实验性协调节点的。当卖方确认自己已经收到了钱,发票就会得到结算。

使用暂缓支付发票

如果你运行着一个 Node,或者是自主保管的 LND 节点,那么你可以使用 LND 的 AddHoldInvoice 功能来创建一个暂缓支付发票,用 Cancelvoice 或者 SettleInvoice 来取消或结算暂缓支付发票。你可以阅读他们的 API 文档来了解更精确的指令。

暂缓支付发票的缺点

但是,暂缓支付发票也不是完全没有缺点的。以下就是:

流动性锁定

因为闪电支付会锁定资金,支付路径上的中介节点也将因此锁定资金,因为暂缓支付的特性,他们可以需要很长时间才能释放资金。这也会影响他们路由别的支付的能力,因此会降低运营效率、对整个网络的流动性造成负面影响。

信任接收者

接收者被信任会根据一些显示或虚拟的条件来决定是否释放原像。这在闪电交易的对手方方风险中增加了一个元素,因为发送者必须信任接收者会按约定行事。

结论

  • Hold Invoices,也叫 HODL Invoices, 是一种特殊的发票类型,由 LND 在 2019 年引入。
  • 这个特性利用了闪电网络的能力,提供了独特的付款方式,让一些新的应用在闪电网络上成为可能。
  • 不同于普通的发票,暂缓支付发票允许接收者推迟或者取消揭晓原像的步骤,也即推迟支付的结算。
  • 暂缓支付发票并不要求立即释放原像,从而引入了一种新的支付流程。

(完)

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论