作者:Che Kohler,BTCStudy
将比特币推广给下一个 10 亿人并不是一件简单的事,但随着成长的痛苦,我们也能学到教训。在媒介某一些价值转移,比如你的小额电子支付、打赏以及向结算层的更高层级流式支付时,出于许多理由,链上交易是不实用的,其经济代价和交易确认时间无法满足要求。
闪电网络这样的二层解决方案在持续成熟, 而且每天都路由几百万笔交易,减少了上链确认交易的需要,但这离不开单体节点的孜孜不倦的管理。
闪电网络可以运作,但它要求每个用户都管理自己的支付系统 —— 运行一个节点、建立通道、保证资本量以及不断再平衡通道。虽然这对于普通的比特币业余认识,以及那些希望通过运行路由节点来赚取额外收入的人来说可能很有趣,但普通用户不会为了路由 69 聪而搞懂这些东西。
付出跟回报根本不成正比,这也是为什么许多闪电网络的用户都选择使用托管钱包,或者跟一个闪电网络服务商一起保管自己的闪电资金。
闪电网络用户体验的一个痛点是启动成本;在迁移到二层的过程中,你需要一个全节点来广播发送到链上的交易、建立一条通道,还需要在收款之前先获得收款额度。这跟比特币的用户体验是很不相同的:从你上手使用比特币钱包开始,你就随时可以接收付款,而且可以接收任意大的数额。
为了免去用户的辛劳,异步支付和 JIT 通道这样的技术被发明出来。这些方法是为了彻底改变用户进入闪电网络以及在闪电网络中交互的体验而提出来的。
什么是 “JIT 通道”?
“按需使用(Just-In-Time,JIT)”,是从投资管理借用来的一个概念,指的是在闪电支付到达时才创建通道。“JIT 通道” 最初是一条虚拟的支付通道;一旦这个虚拟通道收到一笔支付,通道的一方(闪电网络服务商)就广播一笔链上交易,将该通道锚定到链上(使之成为一条常规的通道)。
也就是说,“JIT 通道” 是一种在来自公开网络的支付进入时,由 LSP 对一个客户响应式开启的通道。这使得没有闪电通道的客户也能立即开始接收闪电支付,而他们获得入账流动性(收款额度)的成本会从这第一笔支付的支付额中扣除。
这种技术与传统的方法大相径庭。在传统的模式中,用户必须自己提前开设通道,并且是自己要准备好开启通道的资金。
注意:JIT 通道不应该跟 “JIT 路由” 相混淆,后者是一种用于再平衡现有的通道、以接受原本可能会被拒绝的支付的技术。
JIT 通道的工作流程是什么样的?
一个客户希望通过闪电网络来接收资金,但他没有任何收款额度。
这个客户要求一个闪电网络服务商(LSP)来获得开启一条 JIT 通道的参数。
这个 LSP 返回一个 SCID(短通道标识符),是这个通道请求的唯一标识符。
这个客户生成一个闪电网络发票,包含这个 SCID 和 LSP 的节点 ID。
客户将这个发票发给希望给他支付的人。
支付在闪电网络中转发给这个 LSP。
LSP 辨识其中的 SCID 并跟客户开启一条 “零确认通道”。
LSP 转发相应的支付给客户,并扣除开启通道所需花费的手续费。
客户领取支付。
换句话说,JIT 通道的工作流允许一个客户在即使没有任何收款额度时,也能通过闪电网络接收支付。服务该客户的 LSP 开启一条零确认通道,来路由支付,同时扣减掉开启通道的手续费。在通道开启之后,客户端就能领取支付。
JIT 工作流中的关键词:
闪电网络服务商(LSP):一个 LSP 就是闪电网络中一个节点,并且它可以向其它节点提供帮助,例如开启 JIT 通道。
短通道标识符(SCID):一个 JIT 通道请求的唯一标识符。
闪电发票(Invoice):一个闪电网络的支付请求,包含了需要支付的数量、收款方的节点 ID 以及其它信息。
零确认通道(0-confirmation channel):一种还没有得到比特币区块链完全确认的闪电通道。这意味着通道中的资金还不是完全安全的,但依然很有可能是安全的。
为什么闪电网络需要 JIT 通道?
JIT 通道对闪电网络来说是关键的,理由如下:
简化入门流程:开启通道(锁定资金)对新用户来说可能是复杂的体验。而 JIT 通道去掉了这种复杂性,简化了入门流程。
高效的流动性管理:因为仅在需要的时候才创建通道,JIT 可以实现更好的流动性管理。用户支付额度不够时才锁入资金,也可以优化用户的资源利用。
推动采用:通过简化用户的体验,JIT 可能会促进闪电网络的采用。
JIT 通道的风险
不幸的是,因为链上交易和闪电支付的结算速度有差别,JIT 通道有一个内在的假设,就是铆定这条通道的 UTXO 最终会在链上确认,但路由到客户端闪电支付是即时结算的。
虽然 JIT 通道减少了对通道构造和处理速度较慢的区块链层的依赖,但它也引入了自己的信任假设。LSP 承担了转发支付的风险,需要信任客户;客户也需要信任 LSP。
LSP 将需要决定自己愿意承担多少风险,并相应评估客户;如果客户能够提供 LSAT、节点 ID 或者可以承担名誉损失的 Nostr 公钥,那可能会有所帮助。
那么,没有使用经历的用户可能会在 JIT 通道的支付规模上受到限制。使用限制更宽泛的 LSP 可能会受到攻击,但也可以将损失视作一种获客成本(实际上,只会损失一些链上手续费,以及在不会得到支付的通道中锁定资本的机会成本),并且希望将来可以从可信任的客户上获得回报来覆盖损失。
回到不信任并且验证
如果客户和 LSP 都不信任彼此,那他们就会陷入死锁。不愿意信任客户的 LSP 会扣住通道注资交易而不广播,直到自己看到支付原像;而不信任 LSP 的客户会扣住支付原像,直到看到注资交易;这就跟 JIT 通道的目的违背了。JIT 通道需要双方的信任,以协助及时的流动性部署。
打破这种死锁而不引入信任的唯一办法就是使用区块链来确认是写合约,以保证注资交易当且仅当原像提供给 LSP 时就会广播。
这可以通过使用一个 HTLC 来做到:其哈希锁分支由 LSP 和客户一起签名,并且 LSP 提供从哈希锁分支花费到通道注资输出点的的见证,而客户提供自己的签名以及原像,以让通道注资输出点得到确认。
(译者注:这种合约并不是标准的哈希时间锁合约,但原理上相似。哈希锁分支要求双方的签名,而不是只有一方的签名;并且哈希锁是用进入支付的同一个原像构造的。LSP 给客户提供将资金花费到通道注资点的签名,客户一旦加上自己的签名和原像,就能让通道得到区块的确认。当然,通道内的承诺交易,双方要提前构造。)
但总的来说,从结算的角度看,这跟标准的支付通道创建并没有什么区别。
让流动性可以随时获得
虽然有这些潜在的缺点,显然 JIT 通道有很大希望,让闪电网络变得更加用户友好,而且高效。就像我们这个领域的所有开发,一定有需要考虑的取舍;推出之后,市场会确定这些取舍是否值得、这种方法能否继续进步,以及还有什么取舍需要解决。
不管怎么说,在引导入门和流动性管理上的好处,让 JIT 通道成了闪电网络演化中的巨大进步。