在比特币闪电网络的发展历程中,尽管PTLC、CoinJoin在很大程度上对中心化与隐私问题做了改进,但流动性却是阻碍闪电网络大规模采用的硬伤之一。通常对新用户而言,下载闪电钱包后必须要寻找到入站流动性(InboundLiquidity)才能从闪电通道中接收比特币,入站与出站流动性(OutboundLiquidity)的多少也决定了用户能接收与发送多少比特币。同时,在闪电通道中,流动性总量是固定的,无法改变,除非关闭通道重新设定。因此,总体来说,闪电网络流动性带来的实际用户体验可能并不佳。
在前不久的迈阿密海滩上,Bitcoin2023如火如荼,比特币开发者BurakKeceli就这一问题为现场观众带来了比特币Layer2协议Ark,这是一种闪电网络的替代方案,允许用户在不引入流动性限制的情况下发送和接收资金。今天,ForesightNews将为大家介绍Ark的工作方式及其技术特点。
一、工作方式
在比特币网络中,一笔交易由输入与输出组成,地址所持有的比特币总额被称为未被花费的交易输出(UnspentTransactionOutput,UTXO),一笔交易经由收款方的私钥签署解锁脚本后进入新地址的BTC将再次成为UTXO。Ark协议则采用一种共享UTXO集进行匿名的链下支付,协议中已提交但未公开的交易输出被称为虚拟UTXO(vTXO)。获取vTXO有两种方式,一是从已拥有vTXO的用户那里获取;二则是通过原子双向挂钩机制lifting将其链上UTXO按1:1兑换为vTXO。当然,用户可以单方面将vTXO兑换为链上UTXO,而无需寻求ASP合作。
Ark协议涉及用户与ArkServiceProvider(ASP)两方。用户是指那些持有、发送和接收vTXO的非交互式实体,而ASP类似于闪电网络服务提供商,它担任一种无需信任的中介,为网络提供vTXO流动性并收取流动性费用。同时,ASP也充当盲CoinJoin协调员的角色,通过提供简单的调整与盲混合(blindedmixing)为交易提供隐私保护。
当用户在协议上进行付款时,需在ASP创建的共享vTXO资金池中支付vTXO。ASP每天24小时在线,其主要工作是每5秒创建一个盲交易池,对交易进行盲混合,避免支付跟踪。同时,ASP可将发款方的vTXO赎回成链上资产,并利用自己的链上资金为CoinJoin创建新的vTXO。因此,上链的交易池即便公开可查,但也只显示1个或几个由ASP提供的输入,链上数据观察者无法发现真正的付款方。随后,从ASP的盲交易池中产生包含新创建vTXO的vTXO输出。vTXO被捆绑并嵌套在这个共享输出下,并可以在链上公开。在Ark协议中,vTXO输出生命周期只有4周,收款方需要在前两周内通过共同签署n-of-n多重签名领取嵌套vTXO(nestedvTXO)。如果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是否存在,只需将该交易的输出附加到支出交易(spendingtransaction)中,并对照支出交易的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是否掌握隐私数据仍然需要打个问号。