
JustLend DAO完成首轮JST回购
作者:joohhnnn
区块的传递是整个 optimism rollup 系统中较为重要的概念,在这一章节,我们将从介绍 optimism 中多种 sync 方式的原理,来揭开整个系统里区块的传递过程。
在进行进一步深入前,让我们了解一些基本的概念。
Unsafe L2 Block (不安全的 L2 区块):
这是指 L1 链上最高的 L2 区块,其 L1 起源是规范 L1 链的 可能 扩展(如 op-node 所知)。这意味着,尽管该区块链接到 L1 链,但其完整性和正确性尚未得到充分验证。
Safe L2 Block (安全的 L2 区块):
这是指 L1 链上最高的 L2 区块,其 epoch 的序列窗口在规范的 L1 链中是完整的(如 op-node 所知)。这意味着该区块的所有前提条件都已在 L1 链上得到验证,因此它被认为是安全的。
Finalized L2 Block (定稿的 L2 区块):
这是指已知完全源自定稿 L1 区块数据的 L2 区块。这意味着该区块不仅安全,而且已根据 L1 链的数据完全确认,不会再发生更改。
op-node p2p gossip 同步:
op-node 通过 p2p gossip 协议接收最新的不安全区块,由 sequencer 推送的。
op-node 基于 libp2p 的请求-响应的逆向区块头同步:
通过此同步方式,op-node 可以填补不安全区块的任何缺口。
执行层(EL,又名 engine sync)同步:
在 op-node 中有两个标志,允许来自 gossip 的不安全区块触发引擎中向这些区块的长范围同步。相关的标志是 --l2.engine-sync 和 --l2.skip-sync-start-check(用于处理非常旧的安全区块)。然后,如果为此设置了 EL,它可以执行任何同步,例如 snap-sync(需要 op-geth p2p 连接等,并且需要从某些节点进行同步)。
op-node RPC 同步:
这是一种基于可信 RPC 方法的同步,当 L1 出现问题时,这种同步方式相对简单。
这种同步的场景处于:当 l2 的块新产生的时候,即在上一节我们讨论的 sequencer 模式下是如何产生新的区块的。
当产生新的区块后,sequencer 通过基于 libp2p 的 P2P 网络的 pub/sub(广播/订阅)模块,向’新 unsafe 区块‘ topic 发出广播。所有订阅了此 topic 的节点都会直接或间接的收到这一广播消息。详情可以查看[2]
这种同步的场景处于:当节点因为特殊情况,比如宕机后重新链接,可能会产生一些没有同步上的区块(gaps)
当这种情况出现的时候,可以通过 p2p 网络的反向链的方式快速同步,即通过使用 libp2p 原生的 stream 流来和其他 p2p 节点建立链接,同时发送同步请求。详情可以查看[3]
这种同步的场景处于:当有较多区块,一个大范围区块需要同步的时候,从 l1 慢慢派生比较慢,想要快速同步。
使用--l2.engine-sync 和 --l2.skip-sync-start-check去启动 op-node,发送的 payload 来达到发送长范围同步请求的目的。
首先我们来看一下这两个标志的定义
在 op-node/flags/flags.go 中定义并解释了这两个 flag 的作用
L2EngineSyncEnabled Flag (l2.engine-sync):
该标志用于启用或禁用执行引擎的 P2P 同步功能。当设置为 true 时,它允许执行引擎通过 P2P 网络与其他节点同步区块数据。它的默认值是 false,意味着在默认情况下,该 P2P 同步功能是禁用的。
免责声明:数字资产交易涉及重大风险,本资料不应作为投资决策依据,亦不应被解释为从事投资交易的建议。请确保充分了解所涉及的风险并谨慎投资。OKEx学院仅提供信息参考,不构成任何投资建议,用户一切投资行为与本站无关。

和全球数字资产投资者交流讨论
扫码加入OKEx社群
industry-frontier