引导加载程序

本文档介绍了zkSync OS中的引导加载程序(Bootloader)组件,它是系统的入口点,负责初始化系统、读取区块上下文、处理交易、执行交易、保存结果及最终确定区块。文档还涵盖了引导加载程序的配置、账户抽象、代码执行以及区块头的相关信息。

引导加载程序

引导加载程序是负责实现通用区块链协议的组件。粗略地说,这意味着:

  1. 初始化系统。
  2. 从 oracle 读取区块上下文。
  3. 读取并解析第一个交易。
  4. 验证交易。
  5. 执行交易。
  6. 保存交易结果。
  7. 从第 3 步重复,直到没有更多交易。
  8. 最终确定区块。

顾名思义,此组件是系统的入口点。函数 run_prepared 实现了这个顶层主循环。

配置

可以使用以下参数配置引导加载程序(位于 BasicBootloaderExecutionConfig 结构中):

  • ONLY_SIMULATE:在处理交易时跳过验证步骤。用于节点中的调用模拟。
  • AA_ENABLED:是否启用原生账户抽象。

此外,basic_bootloader crate 具有以下编译标志:

  • code_in_kernel_space:为 [0, SPECIAL_ADDRESS_SPACE_BOUND] 范围内的地址启用正常合约执行。
  • transfers_to_kernel_space:为 [0, SPECIAL_ADDRESS_SPACE_BOUND] 范围内的地址启用 token 转移。注意:引导加载程序本身具有一个特殊的正式地址 (0x8001),始终允许接收 token 转移。这用于收取费用。
  • charge_priority_fee:启用在基础费用之上收取 EIP-1559 提案费(优先费用)。
  • evm-compatibility:启用所有之前的标志,EVM 测试套件需要。

账户抽象

交易验证和执行通过抽象的账户模型完成。这是因为如果启用了前面提到的配置,ZKsyncOS 支持原生账户抽象 (AA) 和 paymaster。原生 AA 旨在向后兼容 Era 中使用的 AA 。有关账户模型的更多详细信息,请参见此章节

代码执行

对于交易执行(和 AA 验证),引导加载程序必须执行一些合约代码。此合约代码对应于受支持的 VM 之一,并通过执行环境 (EE)模块执行。

合约调用通过引导加载程序和(可能不同的)执行环境之间的相互作用来执行。实际上,在给定 EE 中执行的合约可以调用在不同 EE 上运行的合约或系统Hook。这种相互作用在Runner flow中进行了描述。

区块头

在执行结束时,引导加载程序将区块头输出到系统。

对于区块头,我们使用以太坊区块头格式。 但是,为了简化,某些字段将在第一个版本中以不同的方式设置(很可能在主网启动之前会发生变化)。

区块头应完全确定区块,即包括执行该区块所需的所有输入。 目前,它缺少 gas_per_pubdatanative_price,但是我们已经在努力设计和实施以解决此问题。

Ethereum 字段名称 Ethereum 值 ZKsync OS 值 注释
parent_hash 上一个区块哈希 上一个区块哈希
owners_hash 0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347 (post merge) 0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347 空 rlp 列表的哈希
beneficiary 区块提议者 Operator(fee) 地址
state_root 状态承诺 0
transactions_root 交易 trie(patricia merkle tree) 根 交易滚动哈希
receipts_root 收据 trie(patricia merkle tree) 根 0
logs_bloom 覆盖日志地址和主题的 2048 位 bloom 过滤器 0
difficulty 0 (post merge) 0
number 区块号 区块号
gas_limit 区块 gas 限制 常量,尚未定义,很可能为 10-15m
gas_used 区块 gas 使用量 区块 gas 使用量 待定,无论是否使用 pubdata
timestamp 区块时间戳 区块时间戳
extra_data 提议者包含的任何额外数据 待定,可能为 gas_per_pubdata 和 native price
mix_hash 信标链提供的随机数,prevrandao (post merge) 0 共识后将提供随机数
nonce 0 (post merge) 0
base_fee_per_gas base_fee_per_gas base_fee_per_gas
  • 原文链接: github.com/matter-labs/z...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
matter-labs
matter-labs
江湖只有他的大名,没有他的介绍。