区块链/等级 V · 分层扩展/5.1 闪电网络(Lightning)/课程 5
惩罚与瞭望塔
撤销密钥、时间锁窗口,以及负责监视的第三方
材料能够查看交易脚本的区块浏览器(例如:mempool.space)BOLT #2 规范文档用于审查脚本逻辑的文本编辑器
好奇
- 为什么一个在技术上有效但已过时的交易被广播后会导致全部损失,而非部分收益?
- 一个节点如何能离线数周,而资金不被其对手方窃取?
- 究竟是哪种特定的比特币共识机制变更,能够让两方直接用新状态覆盖旧状态,从而完全无需使用惩罚机制?
探索
- 闪电通道依赖于已签名的承诺交易,这些交易代表余额的一个快照。如果一方离线,而其对手方广播一个过时的、对手方持有更多资金的状态,就构成了违反协议的行为。诚实节点需要一种机制,即使断开连接数周,也能立即做出反应、收回自己的余额。没有这种保护,安全性就完全取决于持续在线。
- 防御依赖于撤销秘密。每次通道状态更新时,每一方都会公开其上一个承诺背后的秘密,使另一方能够为该旧状态推导出撤销密钥。如果对手方之后广播了这个旧状态,诚实一方已经持有该密钥,因此可以立即花费作弊方的输出,绕过任何延迟。而广播方自己的输出则受相对时间锁约束,根据实现和通道大小的不同,通常为144到2,016个区块(大约一天到两周)。
- 这一机制需要有人监视区块链。离线过久的节点无法及时发现这类广播。瞭望塔通过保存用户预先准备好的加密惩罚交易来解决这个问题。这些备份以特定的交易 ID 为索引,在违约发生之前一直保护隐私。瞭望塔会在内存池和区块链中监视这些特定 ID。
- 当瞭望塔发现某个旧状态进入区块链时,它会用违约交易的 ID 解密相应的备份。随后,它广播一笔惩罚交易,将欺诈输出花费给诚实一方。作弊者的全部余额因此被没收,作为其违反协议规则的惩罚。全部损失的威胁远大于作弊可能带来的收益。
- 强制关闭通道同样代价不菲。时间锁会延迟资金的使用,而且必须预留手续费储备,以确保交易在高费率时期仍能被传播。这些经济摩擦促使人们选择合作关闭。自行运行节点的用户直接承担这些风险;使用托管服务的用户则把这一负担转移给了服务提供商。
- 另一种设计 eltoo,又称 LN-Symmetry(Decker、Russell 和 Osuntokun,2018年),将以简单的状态替换取代惩罚。它需要一次软分叉:SIGHASH_ANYPREVOUT(BIP118),或 CTV 与 CHECKSIGFROMSTACK 结合等替代方案。在其激活之前,现行的惩罚与撤销模型仍是生产环境中闪电通道唯一安全的强制执行机制。
关键事实
- 由于每个旧状态的撤销秘密在该状态被替换时已经交出,广播该状态会让对手方取走通道的全部余额。
- 广播方的输出需要等待一个相对时间锁(通常为144到2,016个区块)到期,从而给受害方留出反应时间。
- 瞭望塔保存以交易 ID 为索引的加密状态备份,在检测到链上违约之前一直保护隐私。
- eltoo 协议设计可以通过简单的状态替换消除惩罚交易,但需要 BIP118 软分叉才能激活。
- 强制关闭需要持有手续费储备并等待时间锁到期,因此与合作关闭相比经济成本更高。
- 每次更新时,每一方都会公开其上一个承诺的秘密,一旦该状态被广播,就可以实施惩罚。
练习 九、六、三、一
9收集列出闪电通道生命周期中涉及密钥交换、签名或链上广播的9种不同状态或事件。
6归类根据安全影响,将这9项分为6类:合作行为、单方面强制执行、隐私保护、经济成本、共识依赖以及状态转换。
3提炼将这6组归纳为3个核心权衡,用以界定运行非托管闪电节点的风险特征。
1凝结写一句话,解释为什么通过撤销秘密造成全部损失的威胁,对于链下支付的安全是必要的。
事实核查
日期、数字及数据均依据下方列出的已发表资料进行核实。