
中间节点面对的是两个方向的条件
理解闪电网络区块链的多跳支付,可以先把中间节点收到的HTLC和向下一跳提供的HTLC分开。HTLC即哈希时间锁合约,包含哈希条件与到期安排;转发节点需要协调两个方向,不能因为两条记录涉及同一次支付,就把它们当成一份已经同时完成的记录。
BOLT2要求,收到的HTLC尚未达到规范定义的不可撤回承诺状态时,节点不得据此向下一跳提供对应HTLC。正常链下更新涉及双方承诺及旧承诺撤销,收到一条添加消息本身还不够。这里说明的是更新所处阶段,不表示每条链下消息都必须单独写入区块。
哈希原像把履行条件沿路径衔接起来
当下一跳提供支付原像时,接收方要核对它经过SHA256后是否等于对应HTLC的payment_hash。转发节点收到下游履行消息,或从链上支出发现原像后,应履行对应的上游HTLC。关键是原像符合既定哈希条件,不是从公开哈希值反向算出某个秘密。
BOLT4中的逐跳载荷另有转发数量和outgoing_cltv_value,后者说明转出HTLC应采用的到期值。节点会结合实际收到的HTLC与规定条件核对这些信息。洋葱载荷负责传递和认证路径指令,不会代替链上脚本执行,也不能仅因消息格式正确就宣布整笔支付成功。

转入到期高度需要给转出处理留下余量
对转发节点而言,转入HTLC通常要比转出HTLC更晚到期,并满足对应转出通道的cltv_expiry_delta要求。设想纸面记录中,转入到期高度为100120,转出为100080,二者相差40个区块。这只展示差值方向;40不是本文推荐的设置,还需核对该通道要求及其他条件,不能据此判定路由可用。这些高度均为虚构,不对应实测网络。
转发所需到期差,与最终收款节点要求的到期高度相对当前区块高度的余量,是不同检查项。BOLT2讨论链上纳入、重组及对端不响应时的处理,正是为说明这些余量的用途。它们以区块计,不能直接读作固定分钟数;满足一项差值也不会消除网络延迟或所有结算风险。
链上时间锁检查和消息推进分别记录
BIP65定义的CHECKLOCKTIMEVERIFY会检查脚本给定的锁定值与交易nLockTime是否兼容,包括高度与时间类型一致、数值关系及输入序号条件。它不是拿消息中的文字说明替代交易验证。文档通过这些约束让采用该时间锁路径的支出在指定条件到来前不能进入区块,而不是到时自动生成并确认一笔退款。
因此,读转发记录时应分别保留转入和转出方向、哈希条件、到期高度、所需到期差以及更新阶段。取得原像、发出履行消息和链上支出被确认,各自说明不同进展;失败消息也不能随意等同于已经完成超时支出。本文只做协议资料对照,没有提供真实路由、签署交易或核验付款结果。