何时反转?盘点山寨币们即将面临的 10
62 2024-09-03
作者:Chakra;翻译:0xjs@金色财经
比特币扩容有多条路径,我们系列文章的第一部分已经描述了其中的一条路径“比特币原生扩容解决方案”,另一条路径是在比特币之上建立一个额外的协议层,称为Layer 2。2 层解决方案最关键的方面是安全的双向桥和对比特币共识安全性的继承。
侧链的概念可以追溯到 2014 年,当时 Blockstream 提交了“利用挂钩侧链实现区块链创新”。它代表了一种相对基本的扩容方法。
侧链是一种独立于主链运行的区块链,具有自己的共识协议,可以作为主链创新的试验场。当侧链上发生不利事件时,损害完全局限于侧链本身,而不会对主链产生任何影响。侧链可以采用具有更高 TPS(每秒交易数)的共识协议,增强链上可编程性,并促进 BTC 功能的增强。
侧链可以通过双向挂钩或单向挂钩的方式,实现比特币在不同区块链之间的转移。但现实中,BTC 只能驻留在比特币主网上,因此需要一种锚定机制,将侧链上的 BTC 与比特币主网上的 BTC 联系起来。
单向挂钩要求用户将 BTC 从主网发送到不可用的地址进行销毁,之后在侧链上铸造等量的 BTC,但此过程不可逆。双向挂钩是单向挂钩的改进,允许 BTC 在主链和侧链之间来回移动。双向挂钩不是通过发送到不可用的地址进行销毁,而是通过多重签名或其他控制脚本锁定 BTC,在侧链上铸造新的 BTC。当用户想要返回主网时,侧链上的 BTC 会被销毁,而原来锁定的 BTC 会在主网上释放。
单向挂钩的实现比双向挂钩简单得多,因为它不需要管理比特币主网上的相关状态。然而,通过单向挂钩创建的侧链资产可能毫无价值,因为它们缺乏反向锚定机制。
对于验证主链上的锁定交易和侧链上的销毁交易,有不同的方案和安全级别。最简单的方法是通过多重签名参与者进行外部验证,但这具有很高的中心化风险。更好的选择是使用 SPV 证明进行去中心化验证。然而,由于比特币主网缺乏必要的编程能力,无法进行 SPV 验证,必须使用其他方法,通常是多重签名托管。
对侧链的主要批评问题包括:
1、资产跨链依赖验证者:由于比特币主网仍无法实现智能合约,跨链资产转移无法通过无需信任的合约逻辑进行管理。将资产从侧链返回比特币需要依赖一组验证者,从而引入信任假设和欺诈风险。
2、侧链无法继承主链安全性:由于侧链完全独立于主网运行,因此它们无法继承主网的安全性,这可能会导致恶意区块重组。
为了解决这些问题,侧链采取了包括依赖权威机构(联邦)、经济安全(PoS)、去中心化比特币矿工(合并挖矿)和硬件安全模块(HSM)等的方法。比特币上的资金保管和侧链上的区块生产可以由不同的角色管理,从而引入更复杂的安全机制。
Liquid
侧链最早的形式之一是联邦侧链,它依靠预先选定的一组实体作为验证者,负责保管主网络上的资产并在侧链上生成区块。
Liquid 是联邦侧链的典型例子,有 15 个参与方充当验证者。私钥的管理不公开,验证需要 15 个签名中的 11 个。Liquid 侧链上的区块生产也由这 15 个参与者维护。此联邦中的节点数量较少,因此每秒交易量 (TPS) 更高,从而实现可扩展性目标,其主要应用领域是 DeFi。
然而,联邦侧链模型存在显著的中心化安全风险。
Rootstock(RSK)
RSK 还由 15 个节点管理,这些节点负责托管主网络资金,验证仅需 8 个签名。与 Liquid 不同,RSK 的多重签名密钥由硬件安全模块 (HSM) 管理,挂钩指令基于工作量证明 (PoW) 共识进行签名,从而防止拥有密钥访问权限的验证者直接操纵托管资金。
在侧链共识方面,RSK 采用合并挖矿,利用主网算力保障侧链交易安全,当主网算力的很大一部分用于合并挖矿时,可以有效防止侧链的双花攻击。RSK 在合并挖矿的基础上进行了改进,通过分叉感知的方式,对分叉行为进行链下共识干预,从而保证低算力下的侧链安全,降低双花攻击的可能性。
然而,合并挖矿改变了矿工的激励机制,加剧了矿工可提取价值 (MEV) 的风险,有可能破坏系统的稳定性。随着时间的推移,合并挖矿可能会加剧挖矿的中心化。
Stacks
Stacks 通过将其侧链区块的哈希值提交到比特币区块中,将其链历史锚定到比特币上,从而实现与比特币相同的最终确定性。只有比特币本身分叉时,Stacks 中的分叉才会发生,从而增强了其对双花支付攻击的抵抗力。
sBTC 引入了一种新的代币和激励模型,利用允许最多 150 名主网验证者的质押桥。验证者需要质押 STX 代币才能获得批准存款和取款的权限。质押桥的安全性在很大程度上取决于质押资产的价值,这在质押资产价格大幅波动期间对 BTC 的跨链安全性构成风险。
其他侧链提案目前正在社区中广泛讨论。
Drivechain
其中最引人注目的是 Paul Sztorc 于 2015 年提出的 Drivechain 提案,该提案将关键技术分配到 BIP 300(挂钩机制)和 BIP 301(盲合并挖矿)中。BIP 300 定义了添加新侧链的逻辑,类似于通过矿工信号激活新侧链(如软分叉)。BIP 301 允许比特币矿工成为侧链的区块生产者,而无需验证交易的具体细节。
比特币矿工还负责批准提款交易。他们通过在他们开采的区块的 coinbase 交易中创建 OP_RETURN 输出来发起提款提案。然后其他矿工可以在他们开采的每个区块中通过支持或反对该提案来对该提案进行投票。一旦提款交易超过阈值(13,150 个区块),它就会在比特币主链上执行和确认。
事实上,矿工对 Drivechain 上的资金拥有完全的控制权。如果资金被盗,用户只能通过用户激活软分叉(UASF)进行自救,这很难达成共识。此外,矿工在 Drivechain 中的独特地位增加了 MEV 风险,这在以太坊中已经得到证实。
Spacechain
Spacechain 采用了不同的方法,使用永久单向挂钩 (P1WP),用户销毁 BTC 以获得 Spacechain 上的代币,完全绕过了资金安全问题。这些代币仅用于竞标 Spacechain 上的区块空间,缺乏任何价值存储功能。
为了确保侧链的安全,Spacechain 采用盲合并挖矿,用户使用 ANYPREVOUT (APO) 公开竞标构建区块的权利。比特币矿工只需在自己的区块中提交 Spacechain 区块头,而无需验证侧链区块。然而,Spacechain 的推出需要比特币对 Covenants 的支持,而比特币社区仍在讨论是否有必要进行软分叉以添加 Covenant 操作码。
总体而言,Spacechain 的目标是实现与比特币具有相同的去中心化和抗审查性的侧链,同时通过其区块拍卖功能提高可编程性。
Softchain
Softchain 是 Ruben Somsen 提出的另一个双向挂钩 (2wp) 侧链提案,利用 PoW FP 共识机制来保护侧链。在正常情况下,比特币全节点只需下载Softchain的区块头即可验证工作量证明。如果发生分叉,他们会下载孤立区块和相应的 UTXO 集承诺来验证区块的有效性。
对于 2wp 机制,在转入挂钩时,主链上会创建一笔存款交易,Softchain会引用此主链交易来获取资金;在转出挂钩时,Softchain上会创建一笔提款交易,主链会引用此交易在经过一段较长的挑战期后取回 BTC。具体的转入挂钩和转出挂钩机制需要软分叉支持,因此该提案被命名为Softchain。
Softchain的提案对比特币主网全节点增加了额外的验证成本,而 Softchain 内部的共识分裂可能会影响主网的共识,对比特币构成可能的攻击媒介。
闪电网络白皮书于 2015 年发布,2018 年正式上线,作为比特币网络二层点对点支付协议,旨在将大量小额高频交易转移到链下处理,一直被认为是比特币网络最有前景的扩容方案。
闪电网络的实现依赖于比特币内部的几个重要模块,它们共同保证了网络交易的安全。
首先,存在预签名交易。这些交易在 SegWit 升级后变得可以安全使用。SegWit 将签名与交易数据的其余部分分开,解决了交易可延展性、第三方和第二方交易篡改等潜在问题。闪电网络中链下计算的安全性由交易对手提供的不可撤销承诺保证,该承诺通过预签名交易执行。一旦用户从交易对手收到预签名交易,他们就可以随时将其广播到区块链以履行承诺。
接下来是多重签名。双方之间频繁的链下资金转移需要双方共同控制的媒介,因此需要多重签名,通常使用 2-of-2 方案。这确保资金转移只能在双方同意的情况下进行。
然而,2-of-2 多重签名可能导致活跃度问题,如果一方不合作,另一方就无法从多重签名地址转移任何资金,从而导致原始资金损失。时间锁可以解决活跃度问题;通过预先签署带有返还资金时间锁的合约,可以确保即使一方不活跃,另一方仍可以收回初始资金。
最后,哈希锁用于连接多个状态通道,形成网络效应。哈希的原像(preimage)充当通信手段,协调多个实体之间的正确操作。
双向通道
要使用闪电网络进行交易,双方首先需要在比特币上开通双向支付通道。他们可以在链下进行无限数量的交易,并在完成所有交易后将最新状态提交给比特币区块链以结算并关闭支付通道。
具体来说,支付通道的实施涉及以下几个关键步骤:
1、创建多重签名地址。双方首先需要创建一个 2-of-2 多重签名地址,作为通道的资金锁定。每一方都持有用于签名的私钥,并提供自己的公钥。
2、初始化通道。双方在链上广播一笔交易,将一定数量的比特币锁定在多重签名地址中,作为通道的初始资金。这笔交易被称为通道的“锚定”交易。
3、更新通道状态。在通道内付款时,双方交换预签名的交易以更新通道状态。每次更新都会生成一个新的“承诺交易”,代表当前的资金分配。承诺交易有两个输出,分别对应双方的资金份额。
4、广播最新状态。任何一方都可以随时将最新的承诺交易广播到区块链,以提取其资金份额。为了防止另一方广播过时的状态,每笔承诺交易都伴随着相应的“惩罚交易”,如果一方作弊,这笔交易允许一方索要对方的所有资金。
5、关闭通道。当双方决定关闭通道时,他们可以合作生成“结算交易”,并将资金的最终分配广播到区块链。这会将锁定在多重签名地址中的资金释放回双方的个人地址。
6、链上仲裁。如果双方无法就关闭通道达成一致,任何一方都可以单方面广播最新的承诺交易以启动链上仲裁程序。如果在一定时间内(例如一天)没有争议,资金将根据承诺交易中的分配分发给双方。
支付网络
通过使用 HTLC(哈希时间锁定合约),支付渠道可以互连形成支持多跳路由的网络。HTLC 以哈希锁定作为直接条件,以时间锁定签名支付作为后备条件,允许用户在时间锁定到期之前基于哈希的原像进行交互。
当两个用户之间没有直接通道时,可以使用跨路由路径的 HTLC 完成付款。在此过程中,哈希的原像 R 在确保付款的原子性方面起着至关重要的作用。此外,HTLC 中的时间锁设置为沿路由减少,确保每次跳跃都有足够的时间来处理和转发付款。
从根本上讲,闪电网络规避了通过点对点状态通道进行资产桥接的外部信任假设,同时利用时间锁定脚本为资产提供最终保护,提供故障保护。这允许在交易对手失去活动且不合作的情况下单方面退出。因此,闪电网络在支付场景中具有很高的实用性,但它也有几个局限性,包括:
1、通道容量限制:闪电网络中支付通道的容量受限于初始锁定的资金,无法支持超出通道容量的支付。这可能会限制某些用例,例如大宗商品交易。
2、在线和同步要求:为了及时接收和转发付款,闪电网络中的节点需要保持在线。如果节点长时间处于离线状态,它可能会错过一些通道状态更新,从而导致不同步。这对个人用户和移动设备来说可能是一个挑战,也会增加节点的运营成本。
3、流动性管理:闪电网络的路由效率取决于通道之间的流动性分布。如果资金分布不均,某些支付路径可能会变得无效,从而影响用户体验。管理通道的流动性平衡需要一定的技术和财务资源。
4、隐私问题:为了找到可行的支付路径,闪电网络的路由算法需要了解一定程度的通道容量和连接信息,这可能会泄露用户隐私,例如资金分配和交易对手。支付通道的开通和关闭也可能会暴露有关参与者的信息。
RGB 协议的最初概念灵感来自于 Peter Todd 的客户端验证和一次性密封的想法。它由 Giacomo Zucco 于 2016 年提出,是一种可扩展且保护隐私的比特币二层协议。
客户端验证
区块链中的验证过程包括将由交易组成的区块广播到整个网络,允许每个节点计算和验证这些区块内的交易。这有效地创建了一种公共利益,网络中的节点协助每个提交交易的个人进行验证,用户提供 BTC 作为交易费作为验证的奖励。客户端验证更加以个人为中心,状态验证不是全局执行,而是由参与特定状态转换的个人执行。只有生成交易的各方才能验证这些状态转换的合法性,从而显著增强隐私性、减轻节点负担并提高可扩展性。
一次性密封
点对点状态转换存在风险,如果无法访问完整的状态转换历史记录,用户可能会受到欺诈,从而导致双花。一次性密封的提出就是为了解决这个问题。通过使用只能使用一次的特殊对象,它们可以确保不会发生双重支付,从而增强安全性。比特币的 UTXO(未使用交易输出)模型是最适合的一次性密封形式,受到比特币共识机制和网络哈希算力的保护,使 RGB 资产能够继承比特币的安全特性。
加密承诺
一次性密封需要与加密承诺相结合,以确保用户清楚地了解状态转换并防止双重支付攻击。承诺告知其他人某事已发生,并且以后无法更改,在需要验证之前不会透露具体细节。这可以使用哈希函数来实现。在 RGB 中,承诺的内容是状态转换,通过 UTXO 的支出向 RGB 资产的接收者发出信号。然后,资产接收者根据资产支出者在链下传输的特定数据来验证承诺。
工作流
RGB 利用比特币的共识来确保双重支付安全性和抗审查性,同时所有状态转换验证任务都委托给链下,仅由接收付款的客户端执行。
对于 RGB 资产的发行者来说,创建 RGB 合约涉及启动一项交易,其中对特定信息的承诺存储在 Taproot 交易条件内的 OP_RETURN 脚本中。
当 RGB 资产的持有者想要花费它时,他们需要从资产接收者那里获取相关信息,创建 RGB 交易,并提交此交易的详细信息。然后将承诺放入资产接收者指定的 UTXO 中,并发出交易以花费原始 UTXO 并创建接收者指定的新 UTXO。当资产接收者注意到存储 RGB 资产的 UTXO 已被花费时,他们可以通过比特币交易中的承诺来验证 RGB 交易的有效性。一旦验证有效,他们就可以自信地确认收到 RGB 资产。
对于 RGB 资产的接收者,付款人必须提供合约的初始状态和状态转换规则、转账中使用的每笔比特币交易、每笔比特币交易提交的 RGB 交易以及每笔比特币交易有效性的证据。接收者的客户端使用这些数据来验证 RGB 交易的有效性。在这种设置中,比特币的 UTXO 充当保存 RGB 合约状态的容器。每个 RGB 合约的转账历史可以表示为有向无环图 (DAG),RGB 资产的接收者只能访问与其持有的资产相关的历史记录,而不能访问任何其他分支。
轻量级验证
相较于区块链所需的完整验证,RGB 协议大大降低了验证成本,用户不需要遍历所有历史区块来获取最新状态,只需要同步所接收资产相关的历史即可验证交易的有效性。
这种轻量级的验证使得点对点交易变得更加容易,并进一步减少对中心化服务提供商的依赖,增强了去中心化。
可扩展性
RGB 协议只需要一个哈希承诺,就可以继承比特币的安全性,并使用 Taproot 脚本,几乎不消耗额外的比特币区块空间。这使得复杂的资产编程成为可能。使用 UTXO 作为容器,RGB 协议天然支持并发;不同转账分支上的 RGB 资产不会相互阻塞,可以同时使用。
隐私
与典型协议不同,只有 RGB 资产的接收者才能访问资产转移的历史记录。一旦使用,他们就无法访问未来转移的历史记录,从而大大确保了用户的隐私。RGB 资产的交易与比特币 UTXO 的转移没有关联,因此外部人员无法在比特币区块链上追踪 RGB 交易。
此外,RGB 支持盲输出,这意味着付款人无法确定 RGB 资产将支付到哪个 UTXO,从而进一步增强了隐私和抗审查能力。
缺点
当 RGB 资产多次易手时,新的资产接收者可能面临相当大的验证负担,以验证冗长的转移历史,这可能会导致更长的验证时间并失去快速确认交易的能力。对于在区块链中运行的节点,由于它们始终与最新状态同步,因此在收到新区块后验证状态转换所需的时间实际上是有限的。
社区正在讨论重复使用历史计算的可能性,而递归 ZK 证明可能实现状态验证的恒定时间和大小。
Rollup 是以太坊生态最好的扩容方案,源自多年来从状态通道到 Plasma 的探索,最终进化到 Rollup。
Rollup 是一条独立的区块链,它从比特币链下收集交易,批量处理多笔交易,执行这些交易,并将批量数据和状态承诺提交给主链。这实现了链下交易处理和状态更新。为了最大限度地提高可扩展性,Rollup 通常在此阶段使用中心化排序器来提高执行效率,而不会损害安全性,因为安全性由主链对 Rollup 状态转换的验证来确保。
随着以太坊生态的 Rollup 方案日趋成熟,比特币生态也开始对 Rollups 进行探索。然而,比特币与以太坊的一个关键区别是缺乏编程能力,无法进行构建链上 Rollups 所需的计算。目前主要致力于实现主权 Rollups 和 OP Rollups。
Rollups 主要可分为两大类:乐观 Rollups (Optimistic Rollups) 和有效性 Rollups (ZK Rollups),主要区别在于状态转换验证的方法。
Optimistic Rollup 采用乐观验证方式,在每一批交易提交后的争议期内,任何人都可以查看链下数据,对有问题的批次提出异议,向主链提交错误性证明,从而对 Sequencer 造成惩罚。如果争议期内没有提交有效的错误性证明,则该交易批次被视为有效,并在主链上确认状态更新。
有效性Rollup 使用 Validity Proof 进行验证。Sequencer 使用零知识证明算法为每一批交易生成简明的有效性证明,证明该批次的状态转换是正确的。每次更新都需要向主链提交交易批次的有效性证明,主链会验证该证明并立即确认状态更新。
Optimistic Rollup 的优点是相对简单,在主链上的修改很少,但缺点是交易确认时间较长(取决于争议期),对数据可用性要求较高。Validity Rollup 的优点是交易确认速度快,不受争议期影响,可以保证交易数据的私密性,但生成和验证零知识证明需要很大的计算开销。
Celestia 还提出了主权 Rollup 的概念,其中 Rollup 的交易数据会发布到专用的数据可用性 (DA) 层区块链,由该区块链负责数据可用性,而主权 Rollup 本身则负责执行和结算。
基于比特币的 Rollups 目前还处于早期阶段,由于与以太坊的记账模型和编程语言存在差异,直接复制以太坊的做法具有一定挑战性,比特币社区正在积极探索创新解决方案。
主权Rollup
2023 年 3 月 5 日,Rollkit 宣布成为第一个支持比特币主权 Rollups 的框架。主权 Rollups 的构建者可以使用 Rollkit 在比特币上发布可用性数据。
Rollkit 受到 Ordinals 的启发,利用 Taproot 交易来发布数据。符合公共内存池标准的 Taproot 交易最多可包含 390KB 的数据,而矿工直接发布的非标准 Taproot 交易可包含近 4MB 的任意数据。
Rollkit 本质上提供了一个在比特币上读写数据的接口,提供了将比特币转变为 DA 层的中间件服务。
主权 Rollup 的想法遭到了极大的质疑。许多批评者声称,基于比特币的主权 Rollup 仅仅将比特币用作公告板,无法继承比特币的安全性。事实上,如果只向比特币提交交易数据,它只会提高活跃度——确保所有用户都可以通过比特币访问和验证相关数据。然而,安全性只能由主权 Rollup 本身定义,无法继承。此外,比特币上的区块空间极其宝贵,提交完整的交易数据可能不是一个好决定。
OP Rollup和有效性Rollup
虽然很多比特币 Layer2 项目都声称是 ZK Rollups,但本质上更接近 OP Rollups,涉及到 Validity Proof 技术。但目前比特币的编程能力还不足以支持直接的 Validity Proof 验证。
目前比特币的操作码集非常有限,甚至无法直接计算乘法,而验证有效性证明需要扩展操作码,很大程度上取决于递归合约的实现。社区正在积极讨论包括 OP_CAT、OP_CHECKSIG、OP_TXHASH 等选项。理想情况下,添加 OP_VERIFY_ZKP 可能会解决问题而无需任何其他修改,但这不太可能。此外,堆栈大小限制也阻碍了在比特币脚本中验证有效性证明的努力,许多探索正在进行中。
那么有效性证明是如何工作的呢?大多数项目将批量交易的声明差异和有效性证明以 inscribe 格式发布到比特币,并使用 BitVM 进行乐观验证。在这个方案中,桥的运营商充当联邦,管理用户存款。在用户存款之前,联邦会预签名 UTXO,以确保存款只能由运营商合法领取。获得预签名后,BTC 被锁定到 N/N 多重签名 Taproot 地址中。
当用户请求提款时,Rollup 将带有有效性证明的提款根发送到比特币链。运营商最初自掏腰包支付以满足用户的提款需求,然后 BitVM 合约验证有效性。如果每个运营商都认为证明有效,他们会通过多重签名向运营商偿还款项;如果有人认为存在欺诈行为,则会启动挑战程序,并惩罚错误的一方。
这个过程本质上与 OP Rollup 相同,其中信任假设为 1/N - 只要一个验证者是诚实的,协议就是安全的。至于有效性证明,其目的并非使比特币网络的验证更容易,而是使各个节点更容易进行验证。
但该方案的技术实现或将面临挑战,以太坊的 OP Rollup 项目中,Arbitrum 经过多年发展,其 Fraud Proof 仍由许可制节点提交;Optimism 依然不支持 Fraud Proof,可见实现难度。
在比特币Covenant的支持下,BitVM 桥中的预签名操作可以更有效地执行,仍有待社区达成共识。
从安全属性角度看,通过向比特币提交 Rollup 区块哈希,比特币获得了抗重组和抗双花的能力,而乐观桥则带来了 1/N 的安全假设。乐观桥的抗审查能力也有望得到进一步提升。
当我们研究各种 2 层解决方案时,很明显每个解决方案都有其局限性。2 层的有效性在很大程度上取决于 1 层(即比特币)在特定信任假设下的能力。
如果没有 SegWit 升级和时间锁,闪电网络就不可能成功建立;如果没有 Taproot 升级,RGB 中的承诺就不可能高效提交;如果没有 OP_CAT 和其他Covenant,比特币上的 Validity Rollups 就不可能实现……
许多比特币最大主义者认为,比特币永远不应该改变,不应该添加新功能,所有缺陷都应该通过 2 层解决方案来解决。然而,这是无法实现的;2 层不是灵丹妙药。我们需要更强大的1 层来构建更安全、更高效、更可扩展的 2 层。
在我们的下一篇文章中,我们将探讨增强比特币可编程性的尝试。