跳转到正文
buybitcoinsmart

术语表 /闪电网络与 Layer 2

协作关闭

协作关闭是什么?
协作关闭是通过双方协商一致来结束闪电网络通道:双方对同一笔交易签名,向各方支付其最终余额,没有延迟,也没有惩罚风险。

协作关闭是一次简短的协商,涉及两件事:各方希望把款项付到哪里,以及由谁支付矿工手续费。现行流程使用三种消息类型:类型38的 shutdown,以及按 option_simple_close 规则使用的类型40的 closing_complete 和类型41的 closing_sig。关闭交易一经确认,您的余额即作为一笔普通的可花费输出到账,没有等待期。

运作方式

协作关闭分两个阶段进行,第一阶段是承诺停止。

任一方通过发送类型38的 shutdown 发起关闭,并在其中指明希望把付款发送到的 scriptpubkey。此后,发送方不得再添加新的 HTLC,对方在没有任何待处理事项后,必须以自己的 shutdown 作答。BOLT 2将该脚本限制为网络会转发的几种形式:OP_0之后跟随20或32字节的数据推送;或者在协商了 option_shutdown_anysegwit 之后,OP_1至 OP_16之后跟随2至40字节的数据推送。

当双方的承诺交易上都不再有 HTLC 时,第二阶段开始。在 option_simple_close(BOLT 9中的功能位60和61)下,每一方各自构建关闭交易的一个版本,从自己的余额中扣除全部手续费,并发送类型40的 closing_complete。对方对收到的交易签名,并返回类型41的 closing_sig。由于由提议方付费,关于手续费高低的争议无从产生,BOLT 2将此作为该设计的要点。以更高的手续费再次发送 closing_complete,即可为关闭交易加价,BOLT 3为该交易设置的输入序列号为0xFFFFFFFD,规范称之为对上一次尝试的 RBF。

以类型39的 closing_signed 为代表的旧流程仍保留在规范中。在该流程中,出资方给出一笔手续费以及由 min_fee_satoshis 和 max_fee_satoshis 构成的 fee_range,非出资方在该范围内选择一个数值;若选择相同的数值,则两条消息即可完成,否则需要三条。未设范围时,每次回复都必须严格落在最近两次报价之间,因此双方以每次一聪的幅度逐步趋近。

在哪里会遇到它

当您点击关闭且对方作出响应时,钱包执行的就是协作关闭:一笔交易,背后没有任何待结算的余额。

BOLT 2自带一个逐步演示。A 和 B 交换 shutdown 脚本,待处理的 HTLC 完成后,A 提出支付1,000聪手续费,而 B 独立提出750聪。双方各自对对方的版本签名。随后 A 更换了自己的付款脚本,并以1,100聪重新发送,B 则把自己的尝试加价至850聪。

规则在小额通道上最为明显。余额较少的一方可以舍弃自己的输出,若该金额属于粉尘,则必须舍弃。如果手续费会使双方的输出都成为粉尘,关闭方可以发送 OP_RETURN 脚本来代替地址,其输出金额设为零,使该方的资金全部归入手续费,交易仍可被转发。规范警告说,支付给非隔离见证脚本且低于546聪的输出可能永远无法到达矿工,此类通道必须改为强制关闭。

协作关闭 vs 强制关闭

协作关闭和强制关闭都以一笔链上交易结束通道,区别在于谁需要等待。

在协作关闭中,两个输出都是普通付款,因此双方在第一次确认后即可花费,也从不涉及惩罚分支。强制关闭则改为发布承诺交易,您自己的余额会被锁在开通通道时约定的区块延迟之后,并且每笔在途付款都有各自的后续交易。本站对 Phoenix 的评测指出,强制关闭的资金要等约720个区块(约五天)后才能取回。

协作关闭需要对方节点在线,并愿意响应 shutdown。这正是强制关闭存在的原因,也意味着对于无法联系的对方,您无法控制其关闭手续费。

请勿混淆

常见问题

协作关闭时由谁支付挖矿手续费?

由提议交易的一方支付。在 option_simple_close 下,每一方各自发送自己的 closing_complete,并从自己的余额中扣除手续费,因此 BOLT 2称该设计消除了手续费分歧这一失败模式。在旧的 closing_signed 流程中,由出资方付费,并给出一个手续费范围供另一方选择。

如果对方节点离线,我还能协作关闭通道吗?

不能。协作关闭需要对方节点响应您的 shutdown 消息并返回签名,因此对方无法联系时,您只能改为强制关闭。这是在把资金放进通道之前值得事先考虑的区别。

协作关闭后多久才能花费这笔资金?

关闭交易一经确认即可。两个输出都是支付到各方所选付款脚本的普通付款,均没有时间锁。只有强制关闭才会使您这一方的资金被锁在区块延迟之后。

接着阅读

相关术语

闪电网络与 Layer 2中的更多术语

阅读本页英文版