闪电通道的三块 HTLC 门牌:最小金额、在途上限与条数天花板 图 1
闪电通道的三块 HTLC 门牌:最小金额、在途上限与条数天花板 · 图 1

闪电开通道前交换的那张参数清单

开通一条闪电网络通道,链上只看到一笔普通的多签输出,链下却发生了一次相当密集的合同谈判:双方的节点在 open_channelaccept_channel 两条消息里,把这笔合作关系的几乎全部风险条款一次摊开。读懂这张清单,你就读懂了通道的安全模型。

钱与尘埃

funding_satoshis 是出资方入金的金额,push_msat 是开通瞬间直接让给对方的一笔初始余额,常被用来让新开通的一侧立刻能付款。接下来是一组尺寸纪律:dust_limit_satoshis 规定承诺交易和 HTLC 交易里低于门槛的输出干脆不生成,因为尘埃输出在比特币主链上既不标准也费钱,BOLT 2 明确要求尘埃下限不得低于 354 聪,且 channel_reserve_satoshis——每侧必须永远留在通道对方向的那份保留金——必须不小于尘埃值。保留金防的是一方把对方余额榨到只剩付不起链上费用的残渣。

并发与时间

htlc_minimum_msat 声明本节点愿意接受的最小单笔支付;max_htlc_value_in_flight_msat 给在途未结算的 HTLC 总额设上限,max_accepted_htlcs 给条数设上限——普通通道类型下条数上限为 483,零费承诺类型则收紧到 114。这三兄弟共同决定了一笔大流量业务能把多少风险敞口堆在你头上。feerate_per_kw 用每千权重单位聪报价,是承诺交易当前的手续费假设,之后可通过更新费用消息调整。to_self_delay 是领取自己一方余额前必须等的时间锁块数,用相对时间锁实现,也正是对方若播出旧状态时你动用惩罚交易的窗口。

立场与门槛

channel_flags 最低位表示这条通道是否愿意向全网公告;minimum_depth 是接受方要求出资交易达到的确认数,零确认类型下必须为 0,其余场景应取自己认为足以防双花的数值。若双方协商了预付关闭脚本特性,开通消息还必须附上关闭资金去向的承诺。

对用户的意义很直接:钱包界面里一键开通道时,这些数字都有默认值,它们是别人替你做的一整套风险决策。跑自己的节点、和陌生大节点开大额通道之前,逐项核对这些参数,比事后研究纠纷案例便宜得多。字段语义以闪电 BOLT 2 规范文本为准,本文不构成投资建议。

这些数字在钱包界面背后的默认取向

主流实现通常把尘埃下限设到满足规范的最小值附近,把 HTLC 最小金额设得很低,以便接单面广;把在途金额上限设成通道容量的一定比例。含义是:你作为接收方愿意承担的小额在途风险越多,路由角色越吃香,但每多一档敞口,出问题时要清算的悬账也越多。自建节点做路由生意的人常见的调法是逐步收紧 htlc_minimum_msat 和条数上限、观察收入与通道占用变化,而不是一上来抄别人的参数——参数是别人业务形状的解,不是你的。

一句话总结各自防线

尘埃下限防链上标准性,保留金防残渣余额,最小金额防粉尘骚扰,在途上限与条数上限防批量占用,费率字段防承诺交易出不了块,延迟值防旧状态反悔,确认门槛防出资回滚。理解这七条,再回看这些字段名,你会发现一份开通道消息其实是一份风险合同的目录页。规范原文见 BOLT 2,改动都在 GitHub 上公开可查。

和付款路径上的同名字段区分开

还有一处容易混淆:路由节点在自己的公告消息里也会广播一个 HTLC 最小值,那是对整张图公开的接单门槛,决定别人绕不绕得开你;而通道内的这两个字段是点对点合同,只在两个出资方之间有效。同一个钱包可能对外公告的门槛很低,但对某个容量很小的具体通道设置了实际更高的小单拒收线。看到支付被拒时,先看是图上门槛拦截还是通道内参数拦截,两者的处置方完全不同:前者改你的路由配置,后者需要双方重谈或换通道。这些层次在规范里由不同消息承载,日志里也能分开定位。