Valida zkVM Rust Alpha 编译器介绍

  • 0xlita
  • 发布于 2024-10-25 13:50
  • 阅读 4

Lita发布了 Valida Rust Alpha 编译器,该编译器基于 LLVM,旨在将 Rust 代码编译为 Valida zkVM 可执行的代码。目前支持部分 Rust 语法和标准库,以及 C 语言的互操作。该团队的目标是构建高性能、高能效且用户友好的 zkVM。

Valida Rust Alpha 编译器介绍

2024年10月24日

Tl;DR(太长不看版)

  • 部分 Rust 支持:现在支持 rustc、cargo 和一些核心库函数
  • Valida-Reth 区块证明器和基准测试:即将推出
  • Libc 支持:为 Valida 中的关键操作定制的 libc 函数子集
  • 其他编译器和 VM 改进:动态内存管理、-O3、修复了 64 位算术等问题
  • 它仍在进行中,你可以在下面详细了解有哪些新功能、正在进行的工作以及接下来的计划

—--------------------------

在我们 C 编译器工具链 成功的基础上,我们很高兴地宣布 Valida Rust Alpha 编译器。

朝着 Rust 集成迈出的这一初步步骤,标志着我们支持 Valida(我们最先进的 zkVM)更广泛的语言和用例方面的一个重要里程碑。 我们还在我们的 zkVM 堆栈中取得了重大进展和更新,所有这些都包含在此版本中。

Rust Alpha 编译器

我们的 Valida Rust Alpha 编译器利用 LLVM 的强大功能来弥合 Rust 和 Valida zkVM 之间的差距。 这意味着 Rust 编程语言的某些部分现在可以转换为 LLVM 编译器框架使用的中间表示 (IR)。 从那里,此 IR 可以进一步编译为在 Valida zkVM 上运行的机器代码。

从本质上讲,开发人员现在可以编写一些 Rust 代码并在 Valida 上运行它。

主要特性与更新

  • Rust 到 Valida:将 Rust 代码的子集编译为 Valida 目标代码,使用 rustc 和 cargo 与 C 代码集成
  • Rust 项目支持:用户可以使用 cargo build 构建 Rust 项目。
  • 基本库函数:利用自定义的 libc 函数子集来执行 Valida 中的关键操作(例如,isalpha)。
  • 性能提升:优化代码生成以获得更好的性能和稳定性。
  • 扩展的测试套件:现在通过了更大的测试套件,以增强可靠性和性能。
  • 动态内存管理:完全支持 C 函数,如 malloc、free、calloc、realloc 和 aligned_alloc。
  • 优化标志:支持 -O3 标志以提高代码效率。
  • 可变参数:支持可变参数,并使用堆栈分配进行优化。
  • Bug 修复:解决了关键 Bug,包括反汇编程序问题和 64 位整数的调用约定。
  • 增强的 64 位算术:进行了改进,并启用了 DAGCombiner 以获得更好的性能。

测试过的 Rust 示例列表

  • Fibonacci(斐波那契数列)
  • Conway's Game of Life(康威生命游戏)
  • Guess the number(猜数字)
  • Hello world(你好世界)
  • JSON parsing(JSON 解析)
  • Calculator(计算器)

在此处查看示例存储库 here。 我们正在努力在即将发布的版本中提供更广泛的示例和基准测试。

一些背景知识

为什么 Valida 对 Rust 的支持比其他 zkVM 花费的时间更长?

在 Lita,我们认为使用基于传统硬件的 ISA 来开发 zkVM 软件不是最佳方法。 与 SP1 和 Risc Zero 等利用 RISC-V ISA 并受益于现有编译器工具链以实现本机 Rust 支持的其他 zkVM 不同,我们的设计方法有所不同。

我们为 Valida 设计的指令集架构 (ISA) 是从头开始构建的,并且专门针对端到端零知识证明生成进行了优化。 使用自定义 ISA 意味着我们需要从头开始构建编译器工具链,以支持 Rust 等高级编程语言。 今年早些时候,我们的编译器团队最初专注于 C 支持,即使没有预编译,也取得了 行业领先的基准测试结果。 这种方法对用户非常友好,不需要开发人员具备 AIR 方面的专业知识。

虽然编译器兼容性方面的这种权衡带来了挑战,但我们很高兴这些努力开始通过此版本获得回报。 这条道路更加复杂,但我们相信这是创建性能最高、能源效率最高且用户友好的 zkVM 的更好方法。

在此处阅读有关我们设计选择的更多信息 here

下一步是什么?

  • 我们正在努力为 Rust 标准库提供更全面的支持,并为 Valida-Reth 区块证明器奠定基础,旨在对 Reth 进行基准测试。
  • 额外的语言支持:除了 Rust 和 C 之外,我们计划通过我们的编译器工具链支持更多语言。
  • 功能完整的 Valida MVP

当前限制

我们很高兴 Valida Rust Alpha 编译器标志着 Lita 向前迈出的重要一步。 但是,我们想公开你可能遇到的一些限制:

目前,不支持异常处理、多文件编译和完整的 Rust 标准库; 可以合理地预期可能还有其他未记录的问题。 鉴于编译器可能发出不正确代码的可能性,我们建议目前不要在生产环境中使用 Valida rust 编译器工具链。 但是,我们非常欢迎你在示例上尝试 Valida,甚至将你的示例添加到我们的示例集中。 有趣的示例可能有助于我们进一步压力测试和优化 Valida。

了解更多信息并取得联系

在此处阅读 Lita 发布的 LLVM Valida 工具链的完整 0.4.0-alpha 版本 here,其中详细介绍了完整的更改日志、使用说明和已知错误。

在此处加入我们在 Telegram 上的核心开发者社区 here; 我们随时欢迎你的反馈,以帮助我们不断改进 Valida。我们的编译器和密码学团队将在那里积极解决你可能遇到的任何问题或疑虑。

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

0 条评论

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