开通道时那笔“隐性谈判”
在闪电网络里开通道,双方要交换 open_channel 消息,除了金额和手续费率,还有一个容易被忽略的字段:channel_type。它的选择决定了这条通道一生的安全模型——出纠纷时兑换交易的形态、能不能给惩罚交易加急费、备份丢失的代价有多大。规范明确通道类型是一个枚举而不是自由组合:它代表“影响通道持久行为”的功能位组合,通过功能协商位对齐,不能随意拼装。开通时双方必须就类型达成一致,谈不拢通道就开不起来。
三种基本形态
第一种是静态远端密钥通道,对应功能位十二。它的核心承诺是:对方兑换你通道余额所用的一次性公钥在所有历史状态里保持不变。这个看似平淡的设计让备份恢复大幅简化——即使只剩最古老的通道状态,你也能算出正确的兑现脚本。第二种在静态密钥之上叠加锚输出,对应功能位二十二与十二的组合。锚输出在承诺交易里给每一侧留一个专用的小输出,让任何一方都能用它给孩子交易加急(CPFP),不再被迫用大包大费率去挤进下一个块。第三种是零费承诺通道,对应功能位四十:双方的承诺交易直接以零费率形式存在,不再需要开通时预填一个“立即被打包”的手续费率的估算值,费用责任完全交给锚定输出模型。按规范,零费承诺通道在 open_channel 中必须把每千字节约率写零。
两种允许的变体
每种基本类型都可以叠加两个可选变体:短频道 ID 别名(功能位四十六)与零确认开通(功能位五十)。前者用随机化的别名替代公开短 ID,配合大通道实现“路由隐身”;后者让通道在开户交易还没确认时就开始收付款,前提是你对开道对手方的信用判断——未确认开户意味着这笔通道资金仍可能因双花而蒸发,公开通道明确禁止带别名位做广播。
与容量、备份有关的两件事
一个常被追问的硬限制:除非双方都宣告支持大通道功能,否则开通道金额必须低于 2 的 24 次方聪(约一千六百七十七万聪),想要更大的通道,得先在功能协商上会师。备份侧的体验同样由类型决定:静态密钥类型下,通道状态备份的“容错半径”大得多;而旧式逐状态密钥的通道,备份新鲜度要求苛刻。运维视角的结论很朴素——开通道前用功能协商(BOLT 9)看清对端支持哪些类型,优先选带锚输出的现行主流形态;开起来之后再谈就只剩关着重开的成本了。本文只讨论协议机制,不构成组网或收益建议。
选错类型的代价与更换方式
通道类型是在开通那一刻定下的持久属性,之后不能就地改型——想换形态,只有协商关闭再重开一条,或在支持拼接(splicing)的实现上通过链上重造开户交易的方式调整,两种路径都要付链上手续费与停机时间。因此运维顺序应当反过来:先确认功能协商结果,再开道。看自己通道现在是什么类型,多数实现会在通道查询里直接给出类型信息;如果历史通道是无锚输出的旧形态,费用高峰时你会发现加急特别别扭——只能靠抬高承诺交易费率挤进块,而锚输出形态下你可以用孩子交易加急,成本结构完全不同。备份侧同理:静态密钥类型让“只留一份古老备份”成为可接受的灾难预案,旧式逐状态密钥的通道则要求你对备份新鲜度保持紧张。
两个易被误用的功能位
大通道功能位常被读成“容量上限的解锁开关”,其实它同时改变了开通道消息里金额的合法范围:双方都必须宣告支持,才能开出那条硬阈值以上的通道,单边设置无效,谈不拢时金额必须回到阈值以下。零确认与别名两个变体则各带一条明确禁令:带短 ID 别名位的通道类型不能用于打算对外广播的公开通道,因为别名恰恰是为了不进公开图谱;零确认开通把风险转嫁到对手方信用上,未确认的开户交易仍可能被双花掉,公开节点给陌生对端开零确认通道,等于放弃了一次链上终局性的检验。把功能位当“性能选项”随意打开,是组网最常见的自伤方式。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。