黄先森

西二旗民工

分享一些与编程、分布式系统、区块链技术相关的内容


欢迎访问个人github

(转载+翻译)BTC Layer2方案汇总

BTC Layer2的3种方案(转载+翻译)

Note. 本篇汇总了3种BTC的2层方案介绍,分别是Odaily的《比特币生态新贵:B²土壤孕育的下个DeFi Summer》、摘选自《Merlin Bridge WhitePaper》的翻译、摘选自《BEVM WhitePaper》的部分翻译。

1. B² Network 核心架构[1]

1.1 交易流程

图 1. 交易流程

  • 用户通过钱包签名发起交易。

  • Rpc服务接收到用户交易,进行初步验证。

  • 序列器对交易进行排序打包,分别发送到去中心化存储服务进行数据备份,及发送到zkEVM进行执行并生成对应的证明。

1.2 系统架构

图 2. B² Network技术架构

Rollup 层是 B² Network 的执行层,采用 ZK-Rollup 作为底层技术架构。该层由多个组件组成,包括账户抽象模块、RPC 服务、内存池、序列器、zkEVM、聚合器、同步器和证明者账户抽象模块。

  • 账户抽象模块允许用户使用由比特币私钥、以太坊私钥或电子邮件控制的合约账户。用户可以使用合约账户为不同的设备或 DApp 生成子账户,并根据设置执行默认操作或进行检查,如账户初始化、电子邮件账户 DKIM 验证、交易验证、账户恢复、权限管理和资产锁定。账户抽象模块还提供交易打包器服务,实现帮助用户支付 Gas 功能。

  • RPC 服务允许用户通过钱包或 DApp 发起交易或发送签名消息。B² RPC 服务进行初步验证后,将交易或签名细节发送到内存池服务或进行账户抽象处理。交易打包器服务验证消息签名,并根据消息内容生成相应的交易信息,实现使用其它数字货币支付 Gas 或代付 Gas 功能。

  • 内存池用于存储待处理的交易。序列器负责对用户提交的交易进行排序和打包,然后将其传递给 zkEVM 进行特定的交易执行。B² Network 通过 B²节点实现分散式序列服务,通过类似 DPoS 的机制更新序列器集合。

  • zkEVM 兼容以太坊虚拟机(EVM),帮助开发人员构建安全的 DeFi、NFT 和其他 DApp。它还支持将 DApp 从其他 EVM 兼容链迁移到 B² Network。zkEVM 与 B² Network 的比特币索引模块结合,存储比特币的状态数据,使开发人员能够将比特币网络集成到 DApp 开发中。

  • 聚合器从 zkEVM 获取序列器排序后的交易信息和状态信息。它们可以生成零知识证明,或聚合交易并整理证明细节,形成交易批处理哈希树。该树发送到数据可用性层进行备份,确保 Rollup 交易数据的可用性。

  • 证明者的角色是为序列器提交的一批交易生成有效性证明。通过从聚合器获取的交易批处理和状态信息,证明者创建多个 ZK-STARK 证明,并通过 STARK 递归将它们绑定在一起生成单个广泛的 ZK-STARK。这个 ZK-STARK 通过 CIRCOM 组件传输到 SNARK 构建器,生成 ZK-SNARK 有效性证明,降低了 Gas 成本。生成的证明返回到聚合器。

  • 同步器确保来自 B² Network 的信息同步到 Rollup 层,包括序列器信息和比特币交易数据等。

综上所述,Rollup 层通过 RPC 服务获取用户交易并存储在内存池中。序列器对交易进行排序后,zkEVM 执行交易批处理。证明者生成交易真实性的零知识证明。通过聚合器,交易和证明细节被总结并同步到数据可用性层,确保交易的真实性、数据安全和可用性。

数据可用性层是 B² Network 的存储和验证层,由分散式存储、B²节点和比特币网络组成。

存储节点接收来自 Rollup 层的序列器发送的 Rollup 数据,并将其存储在分散式存储中。存储节点运行 B² Network 的 ds-prover 程序,定期基于存储的 Rollup 数据生成零知识证明,并将生成的存储 zk 证明发送给 B²节点。验证通过后,存储节点将获得一定的存储奖励。分散式存储中的存储节点冗余存储 Rollup 数据的副本,确保 B² Network 的数据可用性。

B²节点是链下的验证者,承担多个独特功能。它由六个主要模块组成:

  • Rollup 模块的 ZK 证明验证器:从分散式存储获取 Rollup 交易数据,并从 Rollup 层的聚合器获取 Rollup 交易的 merkle 树根哈希和 zk 证明数据。内部对存储的 Rollup 交易使用 merkle 树根哈希进行完整性检查,并使用 zk 证明数据验证交易的正确性和有效性。

  • 存储模块的 ZK 证明验证器:验证分散式存储的存储节点提交的存储 zk 证明。验证通过后,B²节点将奖励分发给存储节点,激励它们持久存储 Rollup 数据的副本。

  • 序列器选择器模块:实现了类似 DPoS 的机制,选择一组序列器为特定时期提供交易排序和打包服务。竞争成为序列器的个人或组织必须抵押一定数量的代币 BSQ,并准备必要的硬件资源。用户可以将其代币 BSQ 委托给竞争序列器位置的候选者。运营序列器服务的候选者可以获得一定比例的交易费和额外的代币 BSQ 奖励。

图 3. Sequencer模块

  • 比特币索引模块:监视比特币网络上的区块和交易。获取最新的区块和交易后,生成零知识证明以确保交易信息的准确性,并将交易和相应的 zk 证明发送到 Rollup 层。zkEVM 收到比特币交易和 zk 证明后,对其进行验证并生成比特币状态。

图 4. 比特币索引模块

  • 比特币提交者模块:比特币提交者向比特币发送两种类型的交易:一种是将 Rollup 数据写入比特币,另一种是将 zk 证明验证承诺写入比特币。

  • 验证器集合模块:验证器集合模块维护比特币 Layer 1 上的 Schnorr 签名成员。

比特币网络:作为数据可用性层的一部分,B² Network 通过比特币网络进行最终确认。比特币网络允许用户通过比特币恢复所有的 B² Rollup 交易,并使用记录在比特币上的 zk 证明验证其真实性。B² Network 通过 zk 证明验证承诺和挑战——响应机制在比特币网络上进行最终确认。比特币的强大工作量证明(PoW)算法确保了 B² Rollup 的安全性。

1.3 Taproot作为B² Rollup承诺 [2]

B² Network 采用如下四步,将比特币网络作为结算层,保障二层网络的安全。

  • 零知识证明的验证程序转化为比特币脚本:将零知识证明的验证程序转化为基于与非门的逻辑门电路,并通过比特币脚本实现与非门、加法门和乘法门,最终构造出零知识证明的验证程序。

  • Circuit Taproot 作为 B² Rollup 承诺:将 Bit Value Commitment 组装成逻辑门,构成电路二叉树,并将 Circuit Taproot 作为二叉树的根节点。Circuit Taproot 作为 B² Rollup 在比特币上提交的承诺,减小了发布尺寸。

  • 验证和响应协议:B² Network 使用发布锁定奖励的 UTXO 交易作为解锁脚本,并利用 Taproot 脚本进行解锁。Prover 提前生成 Circuit Taproot Tree 的每个分支,并给定输入的哈希。Challenger 利用 preimage 执行脚本,验证输出是否与 Prover 的提交一致。如果不一致,可以利用 MAST 解锁整个 Taproot,并获得锁定的奖金。

  • 挑战机制:B² Network 采用挑战机制,类似于 Arbitrum Rollup 的“交互式验证游戏”。观察者可以发起挑战,通过二分查找的方式执行门电路比特币脚本,寻找错误分支。最快找到错误分支的挑战者可以解锁锁定奖励的 UTXO,并获得奖励。如果没有成功挑战,Prover 将在挑战期结束后,通过时间锁脚本解锁 UTXO,取回奖励。

通过以上技术原理,B² Network 实现了在比特币上共识 Rollup 的数据,并且利用挑战机制和 Taproot 脚本保证了数据的可用性和安全性。

但 B² Network 并不局限于现状,近期又推出 B² Hub,集成了状态转换证明系统的比特币 DA 层。B² Hub 将采用其自研的 ZK 证明验证承诺技术,帮助其他比特币 ZK-Rollup 实现在比特币主网验证,从而确保接入 B² Hub 的 ZK-Rollup 安全级别和比特币主网一致,极大提高安全性。

B² Hub 的工作原理:

任何比特币 Rollup 都可以利用 B² Hub 在比特币网络上进行验证,节省时间并降低成本。 B² Hub 将聚合的批次和证明数据编译成 Tapscript,并以 Taproot 的形式提交 zk 证明的验证承诺。 模块化的 DA 层已在各种生态系统中证明了其成功和有效性。

2. Merlin Chain核心架构 [3]

Merlin chain与B² Network在实现比特币的Layer2的区别在于,Merlin chain并不是实现一个原生的比特币Layer 2。而是通过实现BTC-ETH跨链桥,将BTC的原生资产(BTC、BRC20),如BTC转为MBTC,再基于ETH Layer 2生态来间接实现比特币的Layer 2。下面介绍Merlin chain的跨链桥实现方案。

图 5. 跨链Channel账户模型

所有人都可以申请注册提供跨链Channel功能,收取1.5%的交易手续费,但是需要作1.5倍的超额抵押。

2.1 比特币跨链转账到以太坊网络

跨链转账的难点在于保证横跨两条链的交易状态的一致性链,包括交易顺序、代币数量以及在出现失败情况时交易回滚。简化流程如下:

  1. 用户在比特币网络上发起交易,将比特币转入跨链channel。
  2. 跨链channel同步比特币交易数据并转换对应的MBTC。

最简单的方法是将完整的比特币交易数据存储在智能合约中,但这显然是不太可行的。 然而,相关交易数据可以存储在外部以太坊智能合约并通过预言机查询必要的交易数据。 理论上,这允许在智能合约中内部验证比特币交易的有效性,确保当比特币进入以太坊网络时,MBTC 并不是被铸造的。

在这种情况下,我们采用简化支付验证(SPV)来验证比特币交易,数据来自预言机并在内部智能合约实现验证算法。

图 6. 验证

比特币交易由输入和输出组成,其中输入本质上是指输出之前的交易。 为了验证一笔交易的存在,需要1+n次Merkle计算:

  1. Bridge-in交易哈希的Merkle路径,查询区块头是否存在预言机中。
  2. Bridge-in交易中n个输入的Merkle路径,查询n个输入交易的区块头是否存在预言机中。

对应的Merkle路径由业务系统提供并传入智能合约作为数组。 Solidity中支持Merkle计算并广泛应用于各个领域,例如NFT白名单设置。 下一步是解决oracle数据存储的问题。

预言机要为合约提供SPV查询服务,需要存储所有比特币区块哈希值。 每个比特币区块头大小为 80 字节,目前所有区块头总共占用约60MB 存储空间。 为了减轻预言机的负担,协议将选择一个特定的高度来提供SPV查询服务,预计高度75万。 在此高度之前,Merkle 根哈希不会 可以在oracle中查询。 在跨链channel内,一定的业务保护措施将采取,要求用户先进行合并交易,确保输入交易发生在服务高度之后。 只有这样才能进入跨链channel。 虽然这可能造成一些不便,但它显着增强了系统的稳定性。

智能合约已经可以通过语言机判断比特币网络上是否存在交易。 接下来关键的一步是解决交易细节,主要是验证输出脚本是否符合协议标准。

比特币交易的平均大小约为 250 字节。 交易规模与转移金额无关,而是取决于输入和输出的数量。 随着输入的数量产出增加,比特币交易膨胀。 为了减少进入智能合约的数据流量,协议规定 Bridge-in 交易输入不能超过 3,输出不能超过2。这些限制有效控制了交易规模,保证了合约正常运行,并且维护网络效率和安全。

为了进一步区分通道桥接交易,协议扩大了支出输出脚本(指铭文)并嵌入某些基本的跨链信息 在脚本内。 该信息用于解析比特币时分配 MBTC 代币跨链通道内的交易脚本。 脚本内容如下:

OP_FALSE
OP_IF
  OP_PUSH "Merlin/v/1.0"
  OP_PUSH 1
  OP_PUSH "bridge-in"
  OP_PUSH 0
  OP_PUSH "des=eth&channel=0xalice&account=0xbob"
OP_ENDIF

协议内容以明文形式写入输出支出脚本中,包括协议版本号、操作类型和参数。

脚本内的OP_FALSE OP_IF … OP_ENDIF用于封装一定量数据的。 需要注意的是,这些脚本本质上是无操作的; 他们不改变包含它们的脚本的语义。 最终,这些脚本将附加到以下细节中: 花费比特币 UTXO(未花费的交易输出)。

以太坊链上的 MBTC 财产管理智能合约将处理铸币和在以太坊网络上销毁 MBTC 代币,遵循以下流程:

  1. 用户发起Bridge-in交易并将其写入区块链。
  2. 预言机更新区块头数据,确保MBTC状态与比特币同步网络。
  3. 合约调用MBTC金库的Mint功能铸造相应数量为用户提供 MBTC 代币。
  4. 交易有效性验证:
    • 跨链channel和容量有效性验证。
    • Bridge-in交易识别。
    • MBTC铸造。

该合约允许任何以太坊账户触发 MBTC 铸造功能,而无需权限限制。 Merlin chain现在已经在以太坊网络上实现了 1:1 的比特币铸造。

2.2 以太坊网络上MBTC的销毁与比特币上的赎回(主网)

跨链channel服务商控制着用户托管的比特币,存在潜在的恶意动机。 确保跨链channel的顺畅运行和用户的安全。对于资产,Merlin chain采用类似于FileCoin的超额抵押和对恶意行为的惩罚机制行为来约束channel行为。

  • 跨链channel需要150%的资产抵押品作为保证金。
  • 用户在Bridge-out过程中执行比特币兑换时将收取 1.5% 的费用。(Bridge-in是指将比特币兑换成MBTC)。

过程:

  • 用户通过MBTC金库合约发起比特币赎回交易。 合约销毁对应的MBTC,记录比特币接收地址、channel使用的信息。
  • 跨链channel即时捕获合约发起的交易,解析数据,并向用户发起相应金额的比特币转账。
  • 预言机捕获此比特币交易并将其数据记录在区块链上。
  • 跨链channel服务成功完成交易并关闭通道。

2.3 质押与清算

预言机喂价用于为不同资产提供价格,包括 BTC、ETH 和用作抵押品的链上资产。 不同channel计算铸造价值MBTC 与抵押品总价值的对比。 此步骤不需要实时链上计算并可以呈现在前端页面上。

实时计算各channel的MBTC负债和抵押比例。 当总抵押率低于120%,清算人可以部分清算该点的资产以维持抵押品比率。 当抵押品比例低于110%时,基金会将清算所有抵押品资产。

清算人(其他通道节点、白名单清算人、基金会成员)可以发起部分清算清算交易。 通过向公共通道支付任意数量的BTC,他们可以申请清算任意节点的抵押资产。 合约将尝试按比例扣除抵押资产价值 105% 的已支付 BTC 并支付给清算人。 但部分强平交易生效的条件是计算出抵押的BTC及对应的抵押品价值被清算,总抵押品比例降至120%以下[5]。计算:

  • 假设目前抵押率下降到116%,我们以MBTC价值为例总价值 400 美元,抵押资产价值 465 美元。 在这种情况下,最大可能的清算资产将占总资产的25%,即清算价值100美元的MBTC,价值 105 美元的抵押资产。 剩余资产将为 MBTC,总价值为300 美元和价值 360 美元的抵押资产。 这将使抵押品比率恢复至 120%,从而节点仅损失 5 美元。 这一损失所占比例相对较低,约为 1.1%。相对于总抵押资产,表明风险敞口相对较低。
  • 清算后,节点接受BTC的责任将减少100美元,公开channel接受 BTC 的责任将增加 100 美元。 随后的 BTC 接受将主要通过公开channel处理。
  • 清算人进行清算时,也可以自行发行MBTC并自由使用发行MBTC来支付抵押不足的节点的清算交易。 被清算的节点有义务支付相应数量的抵押资产作为交换对于MBTC。 当节点履行其接受义务后,他们可以使用其他节点的MBTC他们为接受过程保留的节点。

初始抵押比例设定为150%。 这不仅可以防止立即清算在资产价值出现一定下降的情况下还能保证较高的资金利用率和资产收益率,保持安全与收益之间的平衡。

根据最新数据,BTC和ETH收益之间的相关系数为87%。 这资产相关性高,保证市场显着情况下抵押比例的稳定性波动。 ETH收益的波动性是BTC的1.25倍(实际值为1.1)。结合初始 150% 的抵押比例以及 65% ETH 和 35% 的投资组合构成美元,相对于比特币价格波动的整体抵押资产构成计算为 1.5 * 65% * 1.25 = 1.22。 这样的投资组合设置,自然将抵押品比例维持在120%以上。

假设一个节点总共发行了价值 100 美元的 MBTC,需要 97.5 美元的 ETH 和 52.5 美元的 USDC 作为抵押资产:

  1. 如果 BTC 价格适度上涨,例如 40%,则发行价值 140 美元的比特币MBTC。 根据历史数据,预计 ETH 价格上涨 50%,总价值抵押资产构成为 $97.5 * 1.5 + $52.5 = $196.25,得出抵押比率140%,已经足够安全了。
  2. 在BTC价格大幅上涨200%的情况下,发行价值300美元的MBTC,预计 ETH 价格上涨 250%,抵押资产组合总价值变为$97.5 * 3.5 + $52.5 = $388.75,抵押品比率为 130%,仍在安全范围内。
  3. 无论BTC上涨幅度有多大,这种资产构成设置都确保了预期抵押率不低于1.22。
  4. 在BTC价格小幅下跌40%的情况下,导致发行价值60美元的MBTC。 根据历史数据,预计 ETH 价格下跌 50%,总价值抵押品资产组合变为 $97.5 * 0.5 + $52.5 = $100,从而产生抵押品比例达166%。 资产折旧甚至会导致总抵押率更高。

2.4 幽灵比特币 (提供套利机制增强MBTC的流动性,类似aave闪电贷款)

幽灵比特币是指跨链服务channel提供的一种特殊交易类型,允许发行 MBTC,而不需要实际的比特币。 幽灵比特币交易要求MBTC的发行和销毁在一个区块内完成,同时 支付相应的交易费用。

当以太坊网络上的MBTC交易存在套利潜力时,用户可以通过幽灵比特币交易快速进行流动性套利,无需任何资金要求。 Ghost Bitcoin是MBTC独有的技术特征。 利用幽灵比特币,MBTC 将 获得增强的市场流动性。

3. BEVM技术框架和解决方案 [4]

3.1 中心化的BTC Layer 2

当前比特币 Layer2 解决方案的最大挑战是它们无法实现去中心化。 也就是说,他们不能保证用户的比特币能够被去中心化桥接到 Layer2; 他们也不能确保用户的资产和数据可以被去中心化桥接回比特币网络。

3.1.1 将BTC和基于BTC的资产去中心化桥接至BTC Layer2

BEVM 通过在BEVM实现比特币轻节点,确保比特币网络到Layer 2资产的安全性和去中心化。

  • 同步完整的比特币区块头来验证BTC网络数据的确切性。
  • 在BEVM上同步跨链相关交易和交易Merkle证明,以验证数据准确性。

整个BTC轻节点数据均在BEVM上实现,并由BEVM共识确认。 BTC轻节点的数据同步到EVM底层账户系统,方便BTC到BEVM的数据和资产的去中心化交互。

3.1.2 将去中心化跨链资产和数据从BEVM桥接回到比特币网络

目前的比特币Layer2解决方案大多采用私钥分片和多重签名方案,其中多重签名方案中的托管人数量不超过15人,需要上传的数据量巨大且成本高昂。 私人的密钥分片可能需要一个可信的中央实体来协调分片过程或提供初始安全设置,但在集中式服务器设置中存在密钥泄漏的风险。而BEVM则利用Taproot技术和POS共识节点来实现将Layer 2数据和资产的去中心化跨链返回到比特币主网。

3.1.2.1 BEVM上的POS共识节点

每个POS共识节点在BEVM上有3种类型的私钥:POS区块生成私钥、POS管理私钥、BTC门限签名私钥。

POS区块生成私钥: 在线私钥,用于区块生成和维护BEVM POS网络的BFT共识。

POS管理私钥: 离线私钥,用于更新和替换BEVM的3种类型私钥。

BTC门限签名私钥: 这是通过Taproot技术生成(Schnorr + MAST合约),它包含N个门限合约私钥,用于管理在BTC网络上资产和数据交互。这些通过POS权益证明逻辑选择,最多支持1000个节点。然后,每个POS共识节点通过链上交易设置其BTC Taproot门限公钥,映射他们的三个公钥。最后,n个共识节点形成一个⅔ 门限托管合约,类似于 POS 网络的 BFT 共识。

图 7. BEVM和BTC网络间账户映射流程

3.1.2.2 在BEVM上交互的交易返回到Layer 1的BTC网络用于结算过程

首先,用户在BEVM的EVM平台上提交交易,以回到BTC网络。然后,BEVM的n个PoS共识节点使用BTC门限托管合约进行超过2/3的BFT投票。投票通过后,生成一个BTC Taproot交易,然后提交到BTC网络,完成链上资产交互。

从BEVM回到BTC主网的资产和数据的跨链方案,结合了BEVM的PoS共识节点和BTC的门限签名托管合约。这确保了BTC托管的安全性,以一种完全去中心化和安全的方式,类似于BFT POS。

3.2 EVM兼容和使用BTC作为其外围生态gas费用方案

3.2.1 通过使用 Substrate 框架实现 EVM 兼容性。

3.2.2 将 BTC 作为 gas 的逻辑硬编码到 EVM 的底层字节码中。

图 8. BEVM架构

3.3 整体框架

跨链交互层:通过比特币轻节点和Taproot门限合约的组合POS共识,实现比特币和 BEVM 之间的去中心化交互。

共识层:通过 Aura 共识进行轮询式的区块生成,以及通过 Grandpa 进行 BFT 共识确认。

虚拟机层:一个完全兼容 EVM 的智能合约平台层。

Dapp层:支持用 Solidity 语言编写的各种去中心化的 Dapp 应用程序。

4. 参考资料

[1] 比特币生态新贵:B²土壤孕育的下个DeFi Summer

[2] 关于Taproot

[3] Merlin Bridge白皮书

[4] BEVM白皮书

更早的文章

ZkSync架构及模块源码概览分析

ZkSync架构及源码初探Note. 本篇将简单介绍ZkSync开源项目整体架构、核心模块的功能及整体源码分析。希望能与大家一起探索现在比较火的Layer2开源项目,后续能够基于ZkSync开发出永续合约等应用。 1. ZkSync整体架构 2. 核心模块分析 2.1 初始化 2.2 Mempool 2.3 Block Proposer 2.4 ZkSyncStateKeeper 2.5 Committer ...…

ZkSync Layer2 零知识证明 rust继续阅读