闪电通道的合作关闭在链上就是一笔普通的比特币转账:把钱按约定分给两个人。既然是转账就要付矿工费,而这笔费用由通道双方共担——付少了迟迟不确认,付多了两边一起亏。闪电规范为这个“到底付多少”设计了一段小型谈判:双方用 closing_signed 消息一来一回地报价,直到数字咬合,才各自交出签名。
谈判从哪一刻开始
前置条件很严格:双方已经互发 shutdown 意向,两边的承诺交易里都清完了 HTLC,没有欠对方的撤销密钥,也不再有未同步的更新。此时出资方“应该”发出第一条 closing_signed,内容是它认为合理的关闭费加上对关闭交易的签名。对方收到后核对签名,然后回一条自己认可的价。报价来回直到两边给出同一个 fee_satoshis,谈判结束,关闭交易凑齐两个签名广播上链。任何一方觉得对方长时间不回价,都可以按规则把通道判失败,转到单方面兑现。
默认起始价有明确倾向:规范说初始报价“应该按包含进一个区块的成本估计”来设——出资方对链上费用最有发言权,它先出锚点价。

区间字段把谈判压缩到两轮
传统玩法是一聪一聪地磨。新版规范给它装了个加速器:closing_signed 的 TLV 扩展里可以携带 fee_range,列出报价方愿意接受的最低价和最高价。流程变成:出资方先报一个价并附自己的可接受区间;非出资方必须在这个区间里挑——挑中同一个数,两轮消息就谈完;挑了区间内的另一个数,出资方按规则回以同样的值,三轮收工。对非出资方,规范还有两条软性建议:自己区间的上限至少不低于对方报来的上限,下限设得低一些,给成交留余地。
要留意这套区间流程只适用于未协商简化关闭特性(option_simple_close)的老式谈判。协商了简化版的通道走另一条更短的握手,那里的费用谈判被大幅折叠。读不同实现的源码时,这两套并存的关闭消息很容易被搞混。
出价时机的现实差别
各实现对第一条报价的耐心不同:有的节点在shutdown落定后立即出价,有的会等一小段看链上费率是否即将回落。这段窗口里通道处于两不管状态——旧的承诺交易依然可以被任何一方兑现,但双方都知道合作关闭正在进行,此时单方面上链等于主动放弃谈判成果并独自承担费用,实践中只有故障或纠纷会让节点跳桌。理解这一点,也就理解了为什么关闭流程的每一步消息都以对方的默认配合为前提。
一条直觉线
把 closing_signed 想成两个人合伙退房:房间押金(通道余额)怎么分早就写死在合同里,唯一要商量的是保洁费(矿工费)谁都不白出、合出价从哪起谈。规则没有发明新的经济学,它只是把本来就要发生的讨价还价装进了一条带签名的消息通道,让每一轮报价都无法被事后抵赖。
快速问答
问:非出资方坚持要出高价尽快关闭,可以吗?
答:它可以把报价和上限抬高,但关闭交易的费用是合并扣减双方余额的,谁都没法只花自己的钱把费抬高;这正是需要谈判而不是各自签名的原因。
问:谈不拢会怎样?
答:任何一方超时都可以判通道失败,转而用承诺交易单方面上链兑现,费用变成单方支付,对双方都更贵,所以谈判本身有强烈的成交动力。
常见误区
一是以为关闭费默认由出资方独定,规范只给了出资方先报价的义务,定价仍是双向的;二是把 fee_range 当报价方已经同意的价格,它只是“我能接受的边界”,越界的值对方必须拒绝;三是以为关闭谈判必须在在线状态下完成,双方掉线时通道只能停在半关闭状态,谁也强迫不了谁。
风险提示:本文为协议机制科普,不构成任何投资建议;关闭交易设计不当可能导致资金延迟,请遵循所用实现文档。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。