本文我们将详细分析 Scroll 的架构与技术,帮助大家了解 Scroll 目前的网路状态与未来的发展方向,以及为大家讲解 Scroll zkEVM电路与稽核知识,加强zk专案方的安全防范。
(前情提要: Scroll主网正式推出,你该知道的一切都在这)
(背景补充: L2新星》Scroll 主网正式上线、两步骤跨链教学,但社群谣传「无空投」?)
本文目录
以太坊二层解决方案 Scroll主网 在 10 月 10 日下午两点产生了第一个区块,标志着 Scroll 的主网成功上线。截止到 10 月 25日,已有超过 7600 个 ETH 通过跨链桥进入 Scroll 网路,24 个去中心化交易平台上线 Scroll 主网,总 TVL 约 1 千万美元。
10 月 17 日,Scroll 官方在宣布主网启动的同时,继续坚持开源和去中⼼化的承诺。下⼀阶段 Scroll将致力于构建去中⼼化的证明⽹络和排序器。本文我们将详细分析 Scroll 的架构和技术,帮助大家了解 Scroll当前的网路状态和未来的发展方向,以及为大家讲解 Scroll zkEVM 电路与审计知识,加强 zk 专案方的安全防范。
带动 Layer2 新浪潮的 Scroll 是谁?
Scroll 是一种基于零知识证明技术的以太坊 Layer 2 扩容解决方案,旨在提高以太坊网路的交易吞吐量和速度。相较于 OptimisticRollup,Scroll 通过零知识证明技术进行扩容,并通过硬体加速零知识证明的生成和验证,致力于实现位元组码级别的 EVM相容。这意味着开发者可以直接使用 Solidity 和以太坊相关的开发工具来构建智慧合约,无需进行任何修改就可将其部署到 Scroll 上。
据 Scroll 官网公布,目前 Scroll 团队核心成员共有 10 名,分布于亚洲、美洲和欧洲。团队相关成员均拥有丰富的 zkRollup开发经验和行业运营经验,大多数毕业于知名大学,并拥有博士学位。
目前,Scroll生态非常丰富,基础设施包含了钱包、开发工具、安全设施等方面的专案,旨在帮助专案在设计、开发、执行以及安全审计方面的整个生命周期里,都能得到全方位的支援,目前 Scroll 主网已有超过 180 个生态专案。
1. 钱包
Scroll目前支援几乎所有的主流钱包:Metamask、TrustWallet、MathWallet、TokenPocket、WalletConnect、BinanceChain Wallet、SafePal Wallet。除此之外,Scroll 生态钱包还有 OKX Wallet、Versa Wallet 等。
2. 跨链桥
Scroll 官方的跨链基础设施包括了 Celer Network、Stargate、Orbiter Finance、HopProtocol、LI.FI、Connext 等。此外还包含了跨链流动性协议 Synapse Protocol、专注于 Layer 2 跨链桥的 OwltoFinance、以太坊 Layer 1 与 Layer 2 跨链桥 Pheasant Network、Symbiosis、Catalyst 等。
3. DeFi
Scroll 生态中有不少老牌的 DeFi 专案,包括了借贷协议 Aave、多链 DEX 聚合器 DODO、DEX SushiSwap、DEX 聚合器 OpenOcean、多链 DeFi 协议 iZUMi Finance、DEX Syncswap、DeFi 收益率协议 Pendle Finance、借贷协议 dForce、杠杆交易聚合器 MUX Protocol 等,也有 GMX 等原生未被大规模使用的创新专案。
4. 其他
在 NFT、游戏、社交等方面 ,Scroll 生态的其他专案还包括了 NFTScan、Web3 任务平台 QuestN、TaskOn、电子协议签署平台 EthSign、Galaxy Blitz、OmniKingdoms 等线上链游。
Scroll 技术特点有何不同?1. 整体架构
Scroll 的架构分为以下三个主要元件:
Scroll 在以太坊部署的主要合约:
闸道器路由代理合约(保证代币在跨链操作中的正确反射):0xF8B1378579659D8F7EE5f3C929c2f3E332E41Fd6
讯息代理合约(传递 L1 与 L2 之间的讯息):0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367
值得注意的是以上合约可由代理管理员(Proxy Admin)和持有者(Owner)进行修改。此外,Scroll 还设定了白名单功能,可以改变特定地址在 Scroll 的 gas 费。Scroll 的排序器目前是中心化的,可以审查 Scroll网路的讯息和交易,并且有可能跳过讯息伫列中的任何讯息直接最终确认某一讯息。
2. Scroll zkEVM 工作流程
Scroll 生成区块后,会经过协调器(Coordinator)和多个证明器(Roller)后生成聚合证明,然后提交给以太坊上的 Rollup合约进行验证。详细过程如下:
1、排序器获得新的交易后,虚拟机器会读取该笔交易相关的位元组码,生成对应的执行踪迹 (Execution Trace) 并将其传送给协调器。同时,排序器还将交易资料提交给 Rollup 合约。
2、Roller 先将从协调器接收到的执行踪迹转化为 zkEVM 电路。每一步执行踪迹都有对应的 zkEVM 电路,此处对于某些 zk不友好的函式(hash,Keccak),Scroll 通过构建查询表,将执行踪迹中此类函式的输入和输出反射到查询表,利用额外的电路来验证查询表的正确性。随后 Roller 为这些 zkEVM 电路生成对应的证明。
3、在生成证明后,Roller 将其传送回协调器。每经过若干个区块,协调器将聚合任务随机分配给某一 Roller,然后该 Roller将若干个区块的证明聚合成单个证明。
4、最后,协调器将聚合证明提交给 Rollup 合约,Rollup 合约再根据聚合证明来验证之前提交给 Rollup合约的状态和交易资料,确定区块的正确性。
Scroll zkEVM 电路与审计1. 主要电路
zkEVM 由许多电路组成,每个电路负责检查 EVM的某个方面。这些电路最后以某种方式进行聚合或组合,共同完成交易执行的证明。下图显示了这些电路和表格之间的关系:
其中有一些较小的子电路,例如 ECDSA 电路和操作码相关的子电路,不会以影响电路的组合方式与其他表和电路互动,因此为了清楚起见,它们没有在图中显示。
EVM Circuit
以太坊虚拟机器(Ethereum Virtual Machine,简称 EVM)是一个状态机,它定义了以太坊协议中有效状态转换的规则。这意味着它规定了一个确定性函式,根据当前的 EVM 状态计算下一个有效的 EVM 状态。EVM的执行部分使用操作码(opcodes)来实现这些状态转换,从而产生执行轨迹(Execution trace)。EVM电路的目标是构建与执行轨迹相对应的约束系统,可以通过后端的零知识证明系统进行证明。
EVM 电路的高阶设计思想在某种程度上类似于 EVM 本身的设计(例如 go-ethereum)。在 go-ethereum中,直译器回圈遍历执行轨迹上的所有指令操作码。在每个指令中,直译器帮助检查相关的上下文资讯,如 gas、堆叠、记忆体等,然后将操作码传送到 JumpTable,从中获取该操作码应执行的详细操作。
类似地,在 EVM 电路中,Scroll根据执行轨迹中的步骤构建执行步骤,并为操作码和执行上下文提供证明。对于每个执行步骤,会施加一组约束来检查上下文资讯。对于每个操作码,会施加一组约束来检查操作码的行为。在执行轨迹中,相同的操作码应具有相同的约束。Scroll使用选择器来 「开启」 执行轨迹中相同操作码的所有步骤,并使用后端的证明系统证明它们的行为。
State Circuit
在执行过程中,EVM 的所有读写操作都记录在 rw_table 中,并按计数器变数 rw_counter 排序。而 state Circuit的目的就是证明正确的生成了 rw_table。
MPT Circuit
Merkle Patricia Tree 是以太坊储存层使用的关键资料结构之一。在 Scroll 的 zkevm- Circuits 中,将原始 MPT修改为 zkTrie,它本质上是一个稀疏二进位制 Merkle Patricia Trie。在 zkevm- Circuits 中,Scroll 使用 MPT 表来逐步追踪 MPT 操作的状态转换。MPT 表具有以下表布局:
MPT 电路的目标是验证上述 MPT 表的正确性,即确保 MPT 表中记录的每次更新都会导致正确的更改。为了实现这个目标,MPT 电路使用约束系统来强制执行 MPT 的唯一更改。这意味着对于 MPT 表中的每个更新,MPT 电路会确保只有一种可能的更改方式。这样可以防止意外或非法的更改,并确保 MPT的完整性和正确性。特别地,当 MPT 由于帐户或储存的更新而发生更改时,MPT 电路必须证明这次更新会导致正确的根更改。这意味着 MPT电路需要验证更新操作是否按照规定的规则进行,并且确保根hash正确地反应了所有更改的结果。
Keccak Circuit
Scroll 在遵循 NIST Keccak 规范、Keccak 团队 Keccak 规范的条件下实现了他们自己的 Keccak256。
而 Keccak 电路则用于证明 Keccak256 运算结果的正确性。这部分电路的实现复杂,主要因为 keccak256 演算法本身就是 zk- unfriendly 的。
Tx Circuit
Tx 电路提供了验证交易正确性的约束条件。它主要检查交易的以下几个方面:
1. CallDataLength 和累积 CallDataGasCost 的正确性:通过自定义门和查询 tx 表中 tx 的最后一行 call data位元组;
2. TxSign 和 TxHash 相关资料的正确性:通过查询 RLP 表和 Keccak 表;
3. 证明 「若 tx_type 为 L1Msg,则 msg_hash」 的正确性:通过查询 RLP 表进行验证;
4. 通过 ECDSA 正确执行 tx 签名,并且能够正确的从 ECDSA 签名中恢复呼叫者地址:通过查询 sig 表进行验证;
5. tx id、cum_num_txs 和 call_data_length 等的正确过渡行为。
6. 一些基本约束,如一些指示变数的布林值等。
Bytecode Circuit
EVM电路需要查询储存正确位元组码资讯的位元组码表。这确保了合约中储存的位元组与表中载入的位元组相同。而位元组码电路的目的是约束上述位元组码表的正确性。这包括:
1. 与标签(tag)的边界行为相关的约束:首行和末行的约束条件,从 tag==byte 转换到 header 以及反之的转换,从 header 转换到 header 的转换;
2. 约束程式码大小:包括通过约束位元组码的最后一个位元组的索引来计算位元组码的长度;
3. 约束程式码hash:对程式码hash中位元组的 RLC 行为进行正确约束,并通过查询 Keccak 表来验证程式码hash;
4. 确保 PUSH 行为的正确性:is_code = push_data_left == 0(必须是布林值),并通过查询 push_table 来确保 PUSH1-PUSH32 的推送资料大小;
5. 确保在一个位元组码中每行的正确传播。
2. 安全审计
不同的链拥有各自的自定义业务模组功能,这些模组通常会修改 EVM 中的预编译合约以及操作码,其中 Scroll zkEVM作为一种基于零知识证明的二层扩容方案,该方案使用电路重构了相关操作码并根据执行追踪生成证明,这个复杂的实现极大增加了审计难度。Beosin安全专家评估后认为,目前 zkEVM 安全审计主要分为以下几个方面:
1. GAS:zkEVM 电路在生成执行追踪对应的证明时,会同时校验交易耗费 gas的正确性。如果在操作码的实现电路中高频率地使用没有约束的自由变数,可能导致证明生成失败或其他未知错误。
2. 记忆体安全:部分 zkEVM 电路实现的数学基础是多项式承诺,如 Scroll 使用的 KZG承诺。而多项式计算不会自动对齐,因此如果电路缺乏约束会导致取值域与电脑程式中的位元组范围不一致,在部分合约开发者开启了 gas优化的情况下,资料的紧凑排列可能导致记忆体安全问题,如 Polygon zkEVM 中的 BYTE_C4096常数多项式。多项式允许引数的取值范围超过位元组的最大取值范围 255,这在一些采取 AMM 模式的交易所中,可能导致恶意的 Sequencer伪造引数获利。本质上,这一类的漏洞都是由于电路表示的数值有效范围与程式的变数取值范围不一致导致的,如 Beosin 安全研究员在 Snarkjs库中发现的漏洞 CVE-2023-33252。
3. 操作码安全:zkEVM 操作码实现时,存在普遍的欠约束等安全问题,尤其是精度问题。例如底层电路在实现两个数的比较时,如果程式中比较运算的精度为 1个位元组,那么电路约束需要规定取值范围,否则电路中运算的精度将远超程式精度,导致结果错误。
4. 安全 EIP 支援:EIP-2、EIP-155 等安全类 eip 的支援。
5. Sequencer 中心化问题:目前 Scroll 生成的证明全部依赖 Sequencer 生成的执行追踪,如果 Sequencer作恶,zkEVM 无法保护使用者资产安全。
6. 相容性问题:zkEVM 根据执行踪迹生成电路证明并在合约验证,即使 Sequencer进行微小的升级,也可能导致底层语言级别生成的执行踪迹存在较大差异。
Scroll 的未来展望
1. Scroll 目前采用了两层 KZG 版本的 Halo2 证明系统,使用 GPU硬体加速加快证明生成的速度,目前瓶颈转移到了见证生成和复制资料这部分。此外,Roller 的中心化程度和硬体执行费用也是 Scroll在未来发展多阶段证明系统需要考虑的部分。
2. 因为 EVM执行踪迹是动态变化的,会存在各种各样的电路约束和规模。目前为满足动态变化执行踪迹,每步执行踪迹都需要满足最大的电路规模,造成额外的记忆体浪费。
3. Scroll 的 Roller 目前预计通过网路交易费用获利,然而当前 Scroll 网路的使用者数和交易费用无法满足 Roller和排序器的执行费用。在未来,Scroll 网路如何进行经济激励以吸引使用者和维持网路稳定执行是一个需要思考的问题。
📍相关报导📍
ZK Rollup 新星|Scroll 宣布Q3上线主网!估值达18亿美元
哪家zk-EVM更强?实测合约开发Taiko、Polygon、Linea、Scroll、zkSync Era..
L2|全面分析主流ZK项目:StarkNet、zkSync Era、Scroll..构建Web3未来
Leave a Reply