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:构建比特币的双向支付通道 有趣的比特币脚本(五):闪电通道与闪电网络 有趣的比特币脚本(四):哈希锁 有趣的比特币脚本(三):时间锁 有趣的比特币脚本(二):多签名 有趣的比特币脚本(一):基本介绍

理解闪电网络,Part-2:构建网络

  • BTCStudy
  • 发布于 2023-05-17 14:54
  • 阅读 2572

在上一篇文章中,Alice 和 Bob 建立了一个双向的支付通道。现在,Alice 想要给一个第三方 Carol 支付 1 btc。

理解闪电网络,Part-1:构建比特币的双向支付通道

作者:Aaron Van Wirdum 来源:https://bitcoinmagazine.com/technical/understanding-the-lightning-network-part-creating-the-network-1465326903

9dce5612c6aa4440a3905ded0d6b89c5.png.webp

网络

上一篇文章中,Alice 和 Bob 建立了一个双向的支付通道。现在,Alice 想要给一个第三方 Carol 支付 1 btc。

一般来说,Alice 和 Carol 需要在彼此之间开设一个支付通道。但实际上并不需要。因为 Bob 和 Carol 之间已经有了一个通道,所以 Alice 可以通过 Bob 给 Carol 支付。

具体来说,Alice 可以给 Bob 支付 1 btc,而 Bob 再支付 1 btc 给 Carol。

但是,Alice 实际上并不信任 Bob,或者 Carol 并不信任 Bob。她担心把钱给 Bob 之后,Bob 不会给 Carol;又或者,他把钱给了 Carol,但 Carol 谎称自己压根没见到钱,而 Alice 也不知道该找哪个来追责。

因此,Alice 希望能保证,仅当 Bob 给了 Carol 1 btc,自己才需要给 Bob 支付 1 btc。

当 Alice 要给 Carol 支付 1 btc 时,她让 Carol 先生成一个秘密值(一个随机的数字串)并把对应的哈希值发给她。Alice 也告诉 Carol 可以用这个秘密值跟 Bob 交换 1 btc。

与此同时,Alice 把从 Carol 处得到的哈希值发给 Bob,并告诉 Bob 如果 Bob 能提供对应于这个哈希值的原始值,她就会给 Bob 1 btc(这个原始值当然只有 Carol 拥有)。

所以 Bob 找到 Carol,用 1 btc 换来了 Carol 的初始值。

然后,Bob 找回 Alice,提供这个初始值。Alice 因此知道了 Bob 一定给过钱了,也就是 Carol 肯定已经收到了 1 btc,于是就把钱给了 Bob。

皆大欢喜。

几乎,啊,几乎是皆大欢喜。

在这种 “过家家” 的情形下,中间人 Bob 还是需要信任 Alice 和 Carol。Bob 必须相信 Carol 给他的是一个真正有用的值(不然钱都给了就拿不回来了),而且要相信 Alice 真的会给他 1 btc,假如他能提供对应于哈希值的原像的话。

这时候,我们就需要哈希时间锁合约(HTLC)啦!

哈希时间锁合约

哈希时间锁可以让 Alice 和 Bob 用秘密值来交换 btc(当然 Bob 和 Carol 也需要这个,但我们先按下不提)。

为了使用哈希时间锁,Alice 要将 1 btc 发送至一个新的多签地址,而非直接发送给 Bob。这个地址中锁定的 btc 可以通过两种方式解锁。

第一种方式是 Bob 将自己的签名和秘密值一起发送至该地址。

第二种方式是 Alice 将自己的签名发送至该地址。但是,这个方式存在 CLTV 时间锁限制:Alice 必须等待一段时间(例如两周)才能签署并广播交易取走这个 btc。

也就是说,Bob 有两周时间来创建一个包含签名和秘密值的交易,并广播该交易,将多签地址上的 btc 发送给自己。这样一来,这笔交易就有了保证。只要 Bob 能提供秘密值,他就能取走 Alice 的 btc:在比特币网络公开广播该交易可以让 Alice 看到它。

如果 Bob 没有在规定时限内提供秘密值,Alice 就可以取回她的 btc。就这么简单。

再说回网络,因为这是哈希时间锁合约真正发挥作用的地方。

如上文所述,不仅 Alice 和 Bob 之间有哈希时间锁合约,Bob 和 Carol 之间也有。因此,如果 Carol 向 Bob 索要 btc,Bob 也可以从 Carol 那里取得秘密值。这些在区块链上都是可见的。

因此,如果发生这种情况,Bob 也一定可以从 Alice 那里拿到 1 btc。Bob 可以将从 Carol 那里拿到的秘密值在链上公开,发送至他与 Alice 的哈希时间锁合约,然后取走多签地址上的 1 btc。这两个状态通道有效地关联了起来。

最后要强调的一点是,Bob 必须在有效期内从 Carol 那里拿到秘密值,否则 Alice 就有可能取回多签地址上的 1 btc。如果等 Alice 取回 1 btc 之后 Bob 才从 Carol 那里拿到了秘密值,Bob 就会被卡在中间进退两难。因此,Bob 和 Carol 的哈希时间锁合约必须比 Alice 和 Bob 的先到期(例如,前者的时限可以设成 10 天,而非两周)。这就是为什么哈希时间锁合约需要 CheckLockTimeVerify(绝对时间锁)而非 CheckSequenceVerify(相对时间锁)。

最后还有一个问题需要解决:要保证闪电网络的可用性,所有这些必须在链下完成。具体是如何实现的将在本系列第三篇文章中揭晓。

(完)

本文首发于:https://www.btcstudy.org/2020/08/24/understanding-the-lightning-network-part-creating-the-network/

理解闪电网络,Part-3:结算并关闭支付通道

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

0 条评论

请先 登录 后评论