Kona-Node 介绍:OP Stack 的一次 Rust 驱动的飞跃 - Optimism

  • optimism
  • 发布于 2025-08-02 12:43
  • 阅读 7

OP Stack 生态系统发布了首个公共版本kona-node,这是一个完全用 Rust 构建的模块化、高性能 Rollup 节点。kona-node具有内存安全、资源占用少等优点,并通过可组合的 crates 强调可定制性,使其可扩展到不同的可验证环境。它与 Go 实现的op-node相比,具有更好的开发者可读性、资源效率和新功能的快速集成。

今天标志着 OP Stack 生态系统的一个激动人心的里程碑:kona-node 的首次公开发布,这是我们完全用 Rust 构建的模块化、高性能 rollup 节点。如果你正在以太坊上构建可扩展的 Layer 2 解决方案,现在就是你兴奋的时候了。

在这篇文章中,我们将详细介绍 kona-node 的独特之处、它与参考 op-node 的比较,以及如何开始亲自使用它。

什么是 Kona Node?

根据我们在 https://rollup.yoga 的文档,kona-node 是 OP Stack rollup 节点的符合规范的实现。它是更广泛的 Kona 套件 的一部分,其中包括底层类型、可移植的 no_std 组件以及针对安全性和性能优化的服务。

kona-node 的主要亮点包括 Rust 固有的内存安全性、最小的资源占用以及对多种证明后端(如 FPVM、SP1、Risc0 等)的支持。这种设计通过可组合的 crates 强调了可定制性,使其可以扩展以适应不同的可验证环境。

凭借仅约8K行的代码,kona-node 提供了强大的功能,包括故障证明功能。作为参考,完整的 Kona 客户端的代码量约为3K LoC,这展示了我们对精益高效工程的关注。

它与 op-node 有何不同?

虽然 op-node(最初基于 Go 的实现)一直是 Optimism rollup 的可靠主力,但 kona-node 带来了全新的视角,利用了开源 Rust crates。

kona-node 的实现复用了用于kona-proof(一种 Rust 故障证明实现)的相同的 no_std rust crates。这还包括许多其他基础 crates,包括协议类型、作为 Superchain 注册表一部分的 rollup 配置和硬分叉。

在设计方面,kona-node 通过 RollupNodeService trait 采用了基于 actor 的架构,从而可以通过 DerivationActor(用于 L2 payload 推导)和 EngineActor(用于执行层交互)等 actor 进行消息传递并发。这种模块化设置增强了可组合性和可扩展性,与 op-node 的中心化事件系统结构形成对比。

最终的结果是更好的开发者可读性、资源效率和新功能的快速集成。

运行 Kona-Node:深入研究我们的详细文档

由于 https://rollup.yoga 提供了详细的文档,因此入门非常简单。我们的指南包含分步说明,涵盖从设置到高级配置的所有内容。

启动 Base 链的节点:

kona-node --chain base --port 8545

通过 Cargo 安装:

cargo install kona-node

要进行更深入的自定义,请查看标志,以了解 L2 链 ID、P2P 网络或 supervisor 集成。我们的文档包括故障排除提示和最佳实践,以确保顺利运行。

下面是在 https://node.rollup.yoga 上的屏幕截图,我们在该站点上使用 op-reth 针对 OP Sepolia 运行实时的 kona-node。快去访问该站点,亲眼看看吧!

将可组合性作为头等公民

kona-node 的可组合性通过其模块化 crates 闪耀而出,例如用于推导管道的 kona-derive 以及用于集成数据源和属性构建器等组件的可扩展 trait。这些允许为自定义 rollup 或证明器(例如,FPVM、SP1、Risc0)进行无缝扩展。

这是一个使用 kona-derive 的示例,演示了如何使用 PipelineBuilder 组合一个 DerivationPipeline,用于从 L1 数据进行 L2 输入推导:

// 动态构建推导管道。

letpipeline = PipelineBuilder::new()

.rollup_config(cfg)

.dap_source(dap)

.l2_chain_provider(l2_chain_provider)

.chain_provider(chain_provider)

.builder(attributes)

.origin(l1_origin)

.build();

下一个代码段显示了一个简化的示例,该示例基于 kona-node-service 的 API 实现自定义验证器节点的 RollupNodeService trait。这演示了组合自定义 actor 和管道:

use kona_node_service::{RollupNodeService,NodeActor,NodeMode,Pipeline};
use kona_derive::PipelineBuilder;// 示例依赖项
use std::sync::Arc;

// 定义自定义类型(占位符;根据需要实现)
struct CustomDAWatcher;// 实现 NodeActor
struct CustomDerivationPipeline;// 实现 Pipeline + SignalReceiver
struct CustomDerivationActor;// 实现 NodeActor
struct CustomEngineActor;// 实现 NodeActor

// ... 类似地,对于其他 actor

impl RollupNodeService forMyCustomNode {
    type DataAvailabilityWatcher = CustomDAWatcher;
    type DerivationPipeline = CustomDerivationPipeline;
    type DerivationActor = CustomDerivationActor;
    type EngineActor = CustomEngineActor;

    // 定义其他关联类型(例如,NetworkActor、SupervisorExt 等)

    fn mode(&self) -> NodeMode {
        NodeMode::Validator
    }

    fn da_watcher_builder(&self) -> <Self::DataAvailabilityWatcher as NodeActor>::Builder {
        // 返回自定义 DA watcher 的构建器
        CustomDAWatcher::builder(/* config */)
    }

    fn derivation_builder(&self) -> <Self::DerivationActor as NodeActor>::Builder {
        // 使用自定义管道构建器进行组合
        PipelineBuilder::new(/* rollup config */).build()
    }

    fn engine_builder(&self) -> <Self::EngineActor as NodeActor>::Builder {
        CustomEngineActor::builder(/* L2 engine URL, etc. */)
    }

    // 实现其他构建器方法(例如,network_builder、rpc_builder)
}

// 用法:创建并运行自定义节点
let custom_node = MyCustomNode { /* fields */ };
custom_node.run().await; // 假设有一个 run 方法;根据实际 API 进行调整

由于节点连接和执行逻辑已经抽象出来,因此只需要定义 actor 构建器。这样,trait 本身将使用其抽象来启动节点。

为什么这很重要

借助 kona-node,我们正在推动 OP Stack 朝着更大的去中心化和效率发展。此外,由于 rust crates 是模块化的并且已发布,因此可以按照用户喜欢的方式进行组合。如何自己扩展 rollup 节点没有任何限制。你可以随意使用、改编、改进 kona-node - 作为一个库或一个应用程序。

准备好尝试了吗?请访问 https://rollup.yoga,自己运行一个节点,并来为 kona 存储库 做出贡献!

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

0 条评论

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