闪电网络v2通道双出资:双方一起拼出开通道交易怎么运作 图 1
闪电网络v2通道双出资:双方一起拼出开通道交易怎么运作 · 图 1

从单边出资到双边出资

闪电网络最初的开通道流程(BOLT 2 的 v1)是“开立方全包”:只有发起方提供资金交易的输入并支付链上手续费,接收方只能报出自己接受的条件(资金上限、储备、到期延迟等)。这带来两个实际痛点:想获得入向流动性的一方往往要向对方付费或借道服务方;链上也容易出现只有一方签名的可关联交易模式。

双出资(dual funding)配套的通道建立 v2 协议改变了这一点:initiator 与 acceptor 都可以向同一笔资金交易添加自己的输入,费用也能协商分摊。它还顺带带来一个隐私副产品——双方输入混在同一笔交易里,削弱了链上“共同输入启发式”对通道关系的推断。

闪电网络v2通道双出资:双方一起拼出开通道交易怎么运作 图 2
闪电网络v2通道双出资:双方一起拼出开通道交易怎么运作 · 图 2

交互式交易构造的消息流

v2 流程从 open_channel2 与 accept_channel2 开始,随后进入交互式交易构造阶段:双方来回发送 tx_add_input、tx_add_output,也可以发送 tx_remove_input 或 tx_remove_output 撤回先前提案,全部就绪后各发一个 tx_complete,最后用 tx_signatures 交换签名。任何一方觉得条件不合适,可以发 tx_abort 终止。协议约定资金输出必须由开立方添加,费用责任在双方间可配置;若对方设置了 require_confirmed_inputs,则不允许加入未确认输入。

资金交易确认前如果费率行情变了,v2 还定义了 tx_init_rbf 与 tx_ack_rbf 一对消息,允许双方协商用 RBF 提高资金交易费用,避免开通道卡在内存池里(RBF 的信号规则见 未确认交易的三种结局)。若 RBF 协商进行中通道已经 ready,则该协商必须作废。

通道 ID 换了算法

v1 的 channel_id 由资金交易 txid 与输出索引按大端异或得到;v2 通道改为对双方撤销基点(revocation basepoint)排序拼接后取 SHA256。这样在资金交易还不存在时双方就能稳定引用这条通道,也避免了仅靠随机 temporary_channel_id 可能发生的碰撞。代价是钱包和节点必须从第一条消息起就正确记录基点,备份逻辑要跟着升级。

使用视角的边界

是否走 v2 由双方在连接时通过功能位协商,老节点仍可回退 v1 流程,因此“你的通道是不是双出资”取决于两端实现的支持与配置。双出资也是 Splicing(不关通道改余额)和流动性广告等上层功能的底座,见 闪电网络 Splicing。对普通用户来说,最直接的感知是:向公共节点请求开通道时,对方可能要求你也出一部分钱作为通道初始余额,此时你要清楚这部分资金会随通道占用而暂时不能在链上使用,链上关闭的机制见 闪电通道强制关闭全流程


风险提示:比特币价格与网络状态波动较大,本文仅作技术与安全科普,不构成任何投资建议;涉及资金操作前请小额试转并逐项核对,所有协议参数以官方规范与源码为准。

一个常见误解

双出资不等于”通道费用自动 AA”。协议允许费用分摊与出资对称,但默认策略仍可能是开立方付费、接收方只出自己那部分输入;两边是否真的各出一半,取决于节点实现的费用策略配置与双方的协商结果。同样,“coinjoin 式开户”是协议能力的副产品,不是默认保证——如果你的钱包把所有输入混进一笔开户交易,链上分析方仍可能通过时间与金额模式做出推断。评估隐私收益时,看的是这笔资金交易实际包含了谁的哪些输入,而不是软件宣传页上”支持双出资”四个字。另一个误解是把 v2 当成 v1 的强制升级:截至撰写时,两种建立流程长期共存,功能位协商失败就回退 v1,这是设计使然而非 bug。给集成者的建议是:把 v1 与 v2 两条状态机都纳入回归测试,重点覆盖协商降级、中途断线重连与 RBF 竞态三类场景,它们正是双出资实现之间互操作问题的高发区。