一文详解比特币 Layer2 协议 Ark:闪电网络的替代方案?
在比特币闪电网络的发展历程中,尽管 PTLC、CoinJoin 在很大程度上对中心化与隐私问题做了改进,但流动性却是阻碍闪电网络大规模采用的硬伤之一。通常对新用户而言,下载闪电钱包后必须要寻找到入站流动性(Inbound Liquidity)才能从闪电通道中接收比特币,入站与出站流动性(Outbound Liquidity)的多少也决定了用户能接收与发送多少比特币。同时,在闪电通道中,流动性总量是固定的,无法改变,除非关闭通道重新设定。因此,总体来说,闪电网络流动性带来的实际用户体验可能并不佳。
在前不久的迈阿密海滩上,Bitcoin 2023 如火如荼,比特币开发者 Burak Keceli 就这一问题为现场观众带来了比特币 Layer2 协议 Ark,这是一种闪电网络的替代方案,允许用户在不引入流动性限制的情况下发送和接收资金。今天,Foresight News 将为大家介绍 Ark 的工作方式及其技术特点。
一、工作方式
在比特币网络中,一笔交易由输入与输出组成,地址所持有的比特币总额被称为未被花费的交易输出(Unspent Transaction Output,UTXO),一笔交易经由收款方的私钥签署解锁脚本后进入新地址的 BTC 将再次成为 UTXO。Ark 协议则采用一种共享 UTXO 集进行匿名的链下支付,协议中已提交但未公开的交易输出被称为虚拟 UTXO(vTXO)。获取 vTXO 有两种方式,一是从已拥有 vTXO 的用户那里获取;二则是通过原子双向挂钩机制 lifting 将其链上 UTXO 按 1:1 兑换为 vTXO。当然,用户可以单方面将 vTXO 兑换为链上 UTXO,而无需寻求 ASP 合作。
Ark 协议涉及用户与 Ark Service Provider(ASP)两方。用户是指那些持有、发送和接收 vTXO 的非交互式实体,而 ASP 类似于闪电网络服务提供商,它担任一种无需信任的中介,为网络提供 vTXO 流动性并收取流动性费用。同时,ASP 也充当盲 CoinJoin 协调员的角色,通过提供简单的调整与盲混合(blinded mixing)为交易提供隐私保护。
当用户在协议上进行付款时,需在 ASP 创建的共享 vTXO 资金池中支付 vTXO。ASP 每天 24 小时在线,其主要工作是每 5 秒创建一个盲交易池,对交易进行盲混合,避免支付跟踪。同时,ASP 可将发款方的 vTXO 赎回成链上资产, 并利用自己的链上资金为 CoinJoin 创建新的 vTXO。因此,上链的交易池即便公开可查,但也只显示 1 个或几个由 ASP 提供的输入,链上数据观察者无法发现真正的付款方。随后,从 ASP 的盲交易池中产生包含新创建 vTXO 的 vTXO 输出。vTXO 被捆绑并嵌套在这个共享输出下,并可以在链上公开。在 Ark 协议中,vTXO 输出生命周期只有 4 周,收款方需要在前两周内通过共同签署 n-of-n 多重签名领取嵌套 vTXO(nested vTXO)。如果 vTXO 在前两周无人认领,vTXO 将重回发送者的控制之下,这类似于闪电网络上的 HTLC 超时。另一方面,如果 ASP 在这段时间碰巧不合作或不回应,不共同签署 ATLC,那么 vTXO 所有者可以公开其嵌套 vTXO,然后等到合约中编码的某个相对时间窗口(24 小时)之后再领取资金。当然,如果被公开的 vTXO 超过 4 周无人认领,ASP 将可以单独清算它们。
二、技术特点
无流动性限制
与闪电网络的相比,Ark 协议没有引入所谓的闪电通道、出站流动性与入站流动性。
非交互式
Ark 的非交互式支付通过一种类似于比特币静默支付的方式来实现,即收款方提供一个发送方与收款方之间的「共享秘密」,并为发送方提供一个类似于静默支付的专用公钥。每个新创建的 vTXO 都使用一个包含支付承诺的临时共享秘密进行调整,该秘密会在 vTXO 被花费时,也即 2-of-2 连接器关闭时,锚定 ATLC 会显示付款证明。
不过,当前 Ark 协议的接收则是对非交互式的一种妥协,它采用一种交互式的方式即 n-of-n 多重签名限制交易输出,它的异步离线接收尚未完善,收款人必须在线运行 Ark 客户端才能签名以限制共享 UTXO 的输出。换言之,用户必须每隔一两周上线一次以接收其代币,否则无人认领的代币将会被 ASP 清理。因此,对于 Ark 而言,要想真正实现完全非交互式,使用户接收离线支付,必须有一种类似于 BIP-118 与 BIP-119 的「限制条款」(covenant)原语来限制交易输出。事实上,即便是为闪电网络附加这种原语,也依然无法实现非交互性。
绝对原子性
所谓原子性,就是指一笔交易不可切分,要么完全成功,要么完全失败。Ark 使用一种称为 Txlock 的新锁定类型原语确保链下转账的绝对原子性。Txlock 是一种条件,在这个条件下,只有存在一个相互同意的交易标识符才能解锁。
在 Ark 协议中,Txlock 条件使用连接器(connector)来满足。连接器是协议上的一种特殊输出类型,其原语是如果我们希望比特币脚本检查特定的交易 ID 是否存在,只需将该交易的输出附加到支出交易(spending transaction)中,并对照支出交易的 Prevouts 检查一个预签名(pre-signed)的签名。在签名哈希(sighash)原像(preimage)中的连接器输出点(outpoint)会提交给我们想要满足 Txlock 条件的交易 ID。在 Ark 上下文(context)中,这是包含预期收款人的 vTXO 的资金池交易。Txlocks 在锚定时间锁合约(ATLC)中使用,以提供原子单枢纽(single-hub)支付计划。当首次创建 vTXO 时,ATLC 会附加到它上面。当一个 vTXO 被花费时,vTXO 所有者与 ASP 合作签署 atlc:connect,通过 ATLC 的 2-of-2 密钥路径,预先附加的 ATLC 会连接到连接器上以形成 Txlock。
这种 Txlock 结构确保,如果附加的 ATLC 要被 ASP 认领,那么连接器输出点的上下文必须保持不变。换句话说,ASP 不能双花其创建的交易池。这为发送者提供了原子支付结构,因为收款人的 vTXO 与连接器嵌套在相同的交易池中。
更少的链上 Footprint
与闪电网络相比,Ark 没有打开和关闭通道的概念,与链上交互次数少,因此占用的链上空间更少。
隐私性
ASP 提供的 CoinJoin「混币」隐私服务;收款人无需获取入站流动性、实时运行服务器以收款并将隐私泄漏给外部观察者。
兼容闪电网络
就像 ATLC 和连接器一样,Ark 可以通过将哈希时间锁合约(HTLC)和点时间锁合约(PTLC)附加到交易池来与闪电网络兼容。附加的 HTLC 存在于另一个称为 HTLC 输出的共享 UTXO 下,该输出在四周后也会过期。ASP 将 HTLC 转发到其交易池后的那一刻,就将其转发到更广泛的闪电网络。这意味着 ASP 也是 Lightning 服务提供商。Ark 用户也可以使用嵌套了 HTLC 的 vTXO 从闪电网络收款。
由于任何人都可以运行 ASP,用户可以通过不同的 ASP 发送闪电发票,在将 HTLC(或 PTLC)附加到由不同 ASP 创建的交易池上后,HTLC 可以通过多方支付(MPP)转发到最终的收款人。
零确认 vTXO
Ark 协议支持零确认 vTXO,支付随交易池的创建而每 5 秒计入一次,但结算则每十分钟一次。因此,支付是立即入账的,收款方无需等待链上确认就可以花费其零确认 vTXO,用于转账或支付闪电发票(类似于收款码)。所以,理论上,当一个交易池的交易还在内存池中时,ASP 可以双花这笔交易。但 Burak 表示,由于转账的绝对原子性,如果 ASP 在双方约定的 CoinJoin 交易 ID 下双花收款方的 vTXO,那么 ASP 将无法赎回发送方的 vTXO。
Burak 认为,未来,Ark 可以利用假设的数据操作操作码「opcode」(OP_XOR 或 OP_CAT) 来限制 ASP 的签名中的 nonce,以避免双重支付。到那时,如果双花发生在 CoinJoin 交易中,用户则可以伪造 ASP 签名来认领其之前兑换的 vTXO。
三、总结
Ark 协议的创始人最初是闪电网络的强烈批评者,他对闪电网络入站流动性、异步接收、链上足迹、接收者隐私、交互性等批评是 Ark 诞生的种子。Burak 自己也承认,他此前的一些反对意见从长远来看是可以解决的,但是他找不到解决入站流动性问题的「良方」。在这个想法的推动下,Ark 应运而生,其创新性将会大大降低用户使用 Layer2 支付的门槛,并且模仿了 CoinJoin、盲化、静默支付等诸多比特币原语构建 Ark 协议,实现比特币的可扩展性与隐私支付。与闪电网络相比,Ark 协议不仅提出其固有的流动性问题的解决方案,还兼容闪电网络,至少已经是一种可以与其相辅相成的协议了。
不过,Ark 还有很多需要改进的地方。譬如,收款方必须每隔一两周就要上线签名以领取代币,这产生了一种新的用户体验问题。事实上,比特币开发者社区对于 Ark 采用零确认(0-conf) 带来双花问题也产生了一些争论。如果其在非交互式、双花问题上能够进一步完善,那么 Ark 的用户体验与协议的安全性也会大大改善。此外,Ark 在链下完成,虽然链上无法观察到发送者与收款方,但 ASP 是否掌握隐私数据仍然需要打个问号。
Scan QR code with WeChat