PTLC 点时间锁合约:把哈希锁换成曲线点后,路由付款还能不能互相认出来 图 1
PTLC 点时间锁合约:把哈希锁换成曲线点后,路由付款还能不能互相认出来 · 图 1

一句话先说清

PTLC(Point Time Locked Contract,点时间锁合约)是闪电网络原子多跳付款的一种替代构造:不再用一串所有人共享的哈希值锁定付款,而是用一个椭圆曲线上的公开点来锁定,配合适配器签名,让收款人交出秘密的那一步和完成签名变成同一件事。它的核心卖点是隐私——路线上每一跳看到的锁都不一样,中间节点没法再靠“同一个哈希”把你拆成几段的付款拼回原样。

先理解老机制共享了什么

今天闪电网络的主流通道用 HTLC(哈希时间锁合约)。收款人生成一个随机数(预像),对它做哈希得到支付哈希,写进发票。付款沿路线传播时,通道每一跳的资金都以同一个支付哈希为条件锁定:谁先公开那串随机数,谁就能取走这一跳的钱。付款成功时,随机数从最后一跳开始逐跳往回传,像多米诺骨牌一样解锁全程。

问题就出在“同一个”上。这条路线上所有节点锁定的哈希值一模一样。控制路线上两个节点的观察者在链上或链下看到两笔带相同哈希的条件支付,就能断定它们属于同一笔付款,从而推断某些中间节点既不是付款人也不是收款人。这个共享标识还被利用来跳过中间跳、吞掉他们的转发费,也就是虫洞攻击。

点锁与适配器签名怎么配合

PTLC 把条件从“知道哈希的预像”换成“知道某个曲线点的私钥”:锁定时公布一个点 P,P 等于秘密标量 p 乘上曲线基点。每一跳转发时,节点会在 P 上叠加只有自己知道的扰动量,于是相邻两跳看到的点互不相同;收款人因为知道全部扰动量,最后仍能还原基础秘密并完成签名。

实现靠适配器签名。Schnorr 签名具有线性:签名值可以拆成两半,一半是普通的部分签名,另一半藏着秘密 p。节点预先签出一个“差一点就有效”的半成品签名——单独存在时谁也没法用它上链;谁把秘密 p 公开出来,任何人(包括上游节点)都能把秘密加进半成品,立刻得到一个完全有效的签名。于是“解锁”不再是广播一串随机数,而是“补全签名”这个动作本身泄漏了秘密。路线各跳用各自不同的点做这件事,原子性仍然成立:要么所有人都能补全,要么所有人都拿不到。

依赖与现状的边界

这套构造需要签名的线性,所以基本绑定 BIP340 的 Schnorr 签名与 Taproot——两者已于 2021 年 11 月在比特币主网激活,算是 PTLC 的地基已经就位。但在通道层面,PTLC 要求新的承诺交易格式、新的 BOLT 消息与特性位,还要考虑 HTLC 通道与 PTLC 通道共存时跨类型路由的转换点问题;发票的“付款凭证”语义也要改,因为原本预像本身就是收据。相关协议文本目前处于提案与开发者讨论阶段,并没有已定稿并广泛部署的互操作规范。更早的 2020 年,开发者社区做过基于两两多签加适配器签名的概念验证实验,那批代码当时的定位就是供研究参考而非生产使用。

一笔直觉算术

HTLC 路线上共享一个三十二字节的支付哈希:三跳路线等于同一个秘密在三个地方各广播一遍,谁控制其中任意两个位置就能确认同源。PTLC 把这一个秘密换成三把不同的锁,关联信息归零——代价是协议各层(通道格式、发票、路由软件)都得跟着重写一遍。

常见误区

一是把 PTLC 当成“已经上线的新版闪电”。主网绝大多数通道仍然用 HTLC,PTLC 是方向清晰但仍在推进中的升级路线。二是把 PTLC 理解成新链或新硬币,它只是签名与锁定方式的替换。三是以为用了 PTLC 就没有任何关联面:过渡期一条路线常常是哈希锁和点锁混合,类型边界处仍可能出现关联点。

快速问答

问:PTLC 对普通用户有什么直接变化?答:短期内操作习惯不变;长期看收款收据的形式会从“一串随机数”变成“一个补全后的签名”,验证工具要跟着换。

问:它和 HTLC 的安全性谁强?答:两种构造都能保证原子性;PTLC 的增量主要在隐私与更小的链上面相,不是把安全性翻倍。

风险提示:本文为协议机制科普,不涉及任何投资建议;实验性质工具切勿用于真实资金。