以下是如何复现 OP Mainnet 迁移到 Bedrock 的过程 - Optimism

  • optimism
  • 发布于 2023-06-02 21:46
  • 阅读 5

Optimism 主网于 2023 年 6 月 6 日升级到 Bedrock,介绍此次迁移的设计具备可验证性和可重复性。文章介绍了OP Labs 工程师为迁移日所做的准备工作,并分享了如何运行迁移脚本以及确认升级按预期进行。此外,Bedrock升级将OP Stack 转换为更灵活和模块化的系统。

2023年6月6日,OP Mainnet 升级到了 Bedrock。 这并非易事,需要来自 Collective 的社区成员的贡献。 Bedrock 的成功迁移标志着 Optimism 的一个新时代的开始,在这个时代中,我们可以加速我们在技术去中心化和实现 Superchain 愿景方面的进展。

有很多值得庆祝的与迁移相关的事情,但 OP Labs 团队特别自豪地分享一个细节,那就是整个迁移过程被设计为可验证和可重现的!

这篇博文回顾了 OP Labs 工程师为迁移日所做的准备工作,并分享了如何运行迁移脚本并确认升级按预期进行。

规划和演练迁移

迁移是使用 OP Labs 团队构建的、有据可查且经过审计的开源迁移工具实现的。 该工具获取旧网络的数据库,并将其转换为与 Bedrock 网络兼容的格式。

实际上,升级涉及将 ERC-20s Wrapped Ether 迁移到原生 Ether 并配置 pre-deploys,pre-deploys 的功能类似于 Ethereum 的预编译,用于桥接或铸造等特殊操作。

该团队进行了数周的演练,以非常精细的细节跟踪流程中的每个步骤需要发生的事情。 迁移清单上的每个项目都经过精心指定,以便执行所需的精力最少。 目标是使该过程尽可能“无聊”,以防止操作员在当下不得不过多考虑该过程而可能出现的错误。 每个演练网络都在一个影子分叉上运行,类似于 L1 Ethereum 开发人员为合并升级所做的练习。

迁移过程经历了 Sherlock 审计,其中发现并修复了问题。 通过审计过程发现的一个问题示例是一个错误,该错误可能允许用户通过将恶意状态写入用作迁移工具输入的存储中来中止提款。 在迁移之前,团队梳理了代码,寻找任何其他问题,无论多么细微。 在迁移当天,团队的努力取得了胜利,因为升级进展顺利,排序器在 3 小时内恢复运行。

设计可验证的迁移

该过程需要某些输入文件,这些文件是通过同步旧节点获得的。 同步后,旧节点生成所需的 witness 文件,迁移工具利用这些文件来验证完整迁移的顺利执行。 鉴于此设置,任何有能力同步旧节点的人都可以使用迁移脚本来验证迁移是否按照我们所说的那样进行!

我们设计了迁移输出是可验证的,以增加透明度。 该输出生成与成功迁移相对应的唯一状态根。 迁移期间的任何差异或更改都会导致生成不正确的状态根。 因此,状态根可以作为迁移过程保真度的可验证证明。

如何运行迁移

迁移所需的代码位于 optimism-legacy 存储库中。 我们将其与 OP Mainnet 存储库分开,以简化对主代码库的更新。

为了运行迁移脚本,你首先需要一个特殊的“witness”文件,该文件可以通过与旧的 l2geth 节点同步来生成。 需要为此设置环境变量 L2GETH_STATE_DUMP_PATH

一旦你拥有一个完全同步的旧系统,你就可以从 op-chain-ops 程序包中运行以下命令。 确保仔细检查所有参数和环境变量,因为可能需要根据你的设置进行调整。

INPUT_DATA=$MONOREPO_BASE/packages/migration-data/data DEPLOY_CONFIG=$MONOREPO_BASE/packages/contracts-bedrock/deploy-config/mainnet.json DEPLOYMENTS=$MONOREPO_BASE/packages/contracts/deployments,$MONOREPO_BASE/packages/contracts-periphery/deployments,$MONOREPO_BASE/packages/contracts-bedrock/deployments DB_PATH=/mnt/geth

go run cmd/op-migrate/main.go \
--l1-rpc-url "$L1_RPC" \
--ovm-addresses $INPUT_DATA/ovm-addresses.json \
--ovm-allowances $INPUT_DATA/ovm-allowances.json \
--ovm-messages $INPUT_DATA/ovm-messages.json \
--witness-file $DB_PATH/l2geth-state \
--db-path $DB_PATH \
--deploy-config $DEPLOY_CONFIG \
--network mainnet \
--hardhat-deployments $DEPLOYMENTS \
--rollup-config-out=$MONOREPO_BASE/rollup.json

witness 文件包含有关所有持有 ether 的帐户的信息,以便可以将其从 ERC20 表示形式转换为本机格式。 它还包含有关启动提款的帐户的信息,以确保这些交易可以无缝过渡到新的提款系统。 这样,用户就不必在网络升级后重新启动他们的提款。

如果你无法完全同步旧系统,你仍然应该能够使用以下命令在迁移之前或之后立即下载该块的数据库:

wget https://datadirs.optimism.io/mainnet-bedrock.tar.zst

如果你可以在迁移的数据库上启动 op-geth 并同步到网络的最新点,你就会知道迁移已成功重现。

💡 为了获得更友好的同步体验,我们通过此 PR 进行了改进。

探索 OP Stack 的 Bedrock 版本

升级到 Bedrock 已将 OP Stack 转变为一个更灵活和模块化的系统。 OP Mainnet 现在可以支持多个客户端多个证明方案,并且数据成本已大大降低。 Bedrock 还为 Superchain 愿景 奠定了基础。 它为我们迎接多个链合并的未来做好了准备,使我们能够在和谐的区块链生态系统中适应前所未有的增长。

如果你想为这个愿景做出贡献,首先请了解 OP Stack 可以实现什么。

  • 原文链接: optimism.io/blog/here-s-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

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