比特币第二层:方舟

Ark 是一种新颖的链下交易批处理机制,最初由年轻的土耳其开发者 Burak 提出。目前有两个正在开发的实现,一个由 Ark Labs 开发,另一个由 Second 开发,Burak 本人均未参与。
Ark 的原始方案要复杂得多,其设计目标比目前正在构建的实施方案更注重隐私。此外,Ark 的最初设想还要求使用 CTV 才能构建。
该协议依赖于中央协调服务器才能正常运行,但尽管如此,它仍然能够提供与闪电网络相同的功能和安全保障。只要用户在规定的时间内保持在线,在任何时候(除非他们选择在短时间内信任运营商),每个用户都可以随时单方面退出方舟系统,并收回对其链上资金的完全单方面控制权。
与闪电网络不同,Ark 不要求用户预先分配流动性才能接收资金。Ark 用户只需登录钱包即可立即接收资金,无需任何流动性预先分配。
让我们来了解一下 Ark 的不同组成部分。
方舟树
Ark 上持有的代币被称为虚拟 UTXO(vUTXO)。这些只是预先签名的交易,保证在链上提交后,在用户单方面控制下创建真实的 UTXO,但除此之外,这些 UTXO 都存储在链下。
每个用户的 vUTXO 都嵌套在一棵预签名交易树中,或称为“批次”。Ark 的工作原理是让协调服务器(或 Ark 服务提供商 (ASP))协助用户之间协调创建批次。无论用户何时接收资金、加入 Ark 或退出 Ark,都需要构建一笔交易以及相关的交易树来创建新的批次。

该树的构建方式是,将链上已确认的单个根 UTXO 锁定,并使用 n-of-n 多重签名(包括树中所有持有 vUTXO 的用户以及 ASP)进行锁定,然后缓慢拆分成越来越多的 UTXO,最终到达叶子节点,即每个用户的 vUTXO。每个 vUTXO 都使用一个脚本进行担保,该脚本必须由 2-of-2 多重签名进行签名,其中一个密钥由用户持有,另一个密钥由 ASP 持有,或者在时间锁之后仅由用户持有。
每次树分叉时,链上都会创建 vUTXO,但同时还会创建更多尚未真正分叉成 vUTXO 的内部 UTXO。每个内部 UTXO 都由一个 n-of-n 多重签名锁定,该多重签名由 ASP 以及树下所有拥有 vUTXO 的用户组成。在批量创建过程中,用户从各自的 vUTXO 开始,一路向下,直到树的根节点。这保证了根节点永远不会在每个用户对 vUTXO 的声明之前被签名,从而确保用户在最坏的情况下始终拥有对其资金的单方面访问权。
每个批次也都有一个到期时间(下一节会讲到)。此到期支出路径作为链上根UTXO以及所有内部UTXO的替代支出条件而存在,允许ASP单方面自行支出所有资金。
交易、预确认和连接器输入
在方舟上进行交易时,有两种可能的机制,它们在安全模型方面都有各自的成本和影响。一种是轮外转账(out-of-round transfers),即预确认交易;另一种是轮内转账(in-round transfers),即实际确认交易。
进行非循环转账非常简单。如果一个用户(Alice)想要支付给另一个用户(Bob),他们只需联系应用服务提供商 (ASP),让他们共同签署一笔将 vUTXO 支付给 Bob 的交易。然后,Bob 会收到这笔预签名的交易,以及它之前的所有其他交易,并将其返回到链上的批量根节点。Bob 现在可以用这笔交易单方面退出方舟。但他必须相信ASP不会与Alice合谋进行双花。这些非循环交易甚至可以在最终确认之前被多次链接。
要完成 Ark 交易,用户必须进行“批量交换”。用户实际上无法在单个批次内以无需信任的方式确认转账,他们必须以原子方式将现有批次中的 vUTXO 与新批次中创建的新 vUTXO 进行交换。此过程由 ASP 作为交换的促成者,并借助所谓的“连接器输入”来完成。

当用户通过批量交换完成 Ark 交易时,他们会将 vUTXO 的控制权移交给 ASP。这可能会带来问题:如何阻止 ASP 简单地保留 vUTXO,而不是在新批次中提供已确认的 vUTXO?答案是连接器输入。
当创建新的批次时,交易中会创建第二个输出,该输出在链上确认,并实例化一个由连接 UTXO 组成的新树。当 Bob 将一笔没收交易签署给 ASP 进行批次交换时,该交易会包含一个连接 UTXO 作为输入。来自新批次.
这创建了一个原子保证。Bob 已确认的 vUTXO 包含在创建连接器输入的同一交易的批次中,而该批次是 Bob 的弃权交易生效的必要条件。如果该批次从未在链上创建,即 Bob 从未真正收到新的已确认 vUTXO,那么他为 ASP 签名的弃权交易将永远不会有效且可在链上确认。
流动性动态和区块空间
为了方便用户之间的转账,创建新批次所需的所有流动性均由 ASP 提供。ASP 需要拥有足够的流动性来为用户创建新批次,直到旧批次到期。到期后,ASP 可以单方面清空这些批次,以收回之前锁定的旧流动性,从而为用户创建 vUTXO。
这是方舟协议核心流动性机制的核心。虽然从某种意义上说,这极大地提高了效率,因为流动性提供者无需评估用户,也无需猜测哪些用户会在收到任何资金之前收到大额付款;但从另一个角度来看,这反而降低了效率,因为 ASP 必须拥有足够的流动性,才能在用户配置到期时间后继续为用户创建新的批次,并且他们可以开始回收已分配的流动性。
通过应用服务提供商 (ASP) 提供创建新批次以完成待处理交易的频率,可以在一定程度上缓解这种情况。如果应用服务提供商 (ASP) 试图在交易进入时实时创建新批次,流动性要求将会非常高。然而,应用服务提供商可以降低创建新批次的频率,从而大幅降低流动性要求。
这种动态也对区块空间的使用产生了影响。与闪电网络不同,闪电网络可以完全在链下提供强大的确认保证,为了让方舟交易拥有同等程度的去信任最终性,新的一批有在链上创建。这意味着,与闪电网络不同,闪电网络的交易量不会在链上体现,而方舟交易的速度本身就需要占用一定比例的区块空间,尽管这种方式非常压缩且高效。这为在任何给定时间间隔内可以创建的方舟批次数量设定了一个理论上限(尽管方舟树的大小可能会根据这种动态变化而有所调整)。
总结
Ark 在很多方面都呈现出与闪电网络几乎截然相反的权衡。它大幅提升了链下交易的区块空间效率,并解决了闪电网络的流动性分配问题,但它的吞吐量限制与区块链的吞吐量限制紧密相关。
这种几乎截然相反的权衡关系使其成为闪电网络的一个高度互补的系统。它还可以与闪电网络互操作,也就是说,在进入或退出闪电网络的交易中,vUTXO 可以原子地进行交换。
最终它如何融入更广泛的比特币生态系统还有待观察,但它无疑是一个有价值的协议栈,即使它与最初的设想不同,它也会找到一些功能空间。