从零开始构建 ZK (STARK) 证明器的旅程

作者分享了从零开始使用 Rust 构建 STARK 证明器和验证器的过程,包括遇到的挑战、如何利用 AI 辅助开发以及最终完成项目的经验。该项目旨在提供一个简洁易懂的 STARK 实现,帮助学习者理解 STARK 的工作原理。

你是否也有过这样的感觉,某天醒来就想写一个 STARK 证明器?... 没有吗?只有我这样吗?

这就是我如何用 Rust 从头开始编写 STARK 证明器和验证器的故事,且没有外部依赖。剧透一下:错误的数量肯定不止为零。

你可以通过浏览仓库中的提交记录来跟进,或者 просто 关注此处的重点内容。

我想创造什么

我从未打算构建任何可用于生产或高效的东西。与我的许多业余项目一样,这个项目的存在纯粹是为了教育目的。

碰巧的是,阅读真正的 STARK 证明器的代码简直是一场噩梦。你需要一种特殊的疯狂才能直接从生产级的实现中学习。

所以我构建了一个精简的证明器和验证器:一个仅包含基本构建块的仓库,以尽可能简单的方式组合在一起,以生成验证器可以实际检查的证明。

证明器和验证器的运行

时间线

该项目的大致时间线为:

  1. 2024 年 1 月至 2 月:运行了 EthStark 论文的学习小组。这让我产生了自己尝试构建 STARK 证明器的想法。
  2. 2024 年 3 月:启动项目。热情程度:高。
  3. 2024 年 6 月:放弃。太难了。(这该死的玩意。)
  4. 2025 年 9 月:重新启动并完成项目。

1. 学习小组

这一切都始于一个关于 EthStark 论文的学习小组。事实证明,这篇论文比我预期的更学术化,我吸收的内容也比我希望的要少。但有一个想法扎根了:为什么不尝试构建自己的 STARK 证明器呢?

幸运的是,学习小组还有其他人,他们为如何启动这个项目提供了宝贵的建议。

2. 项目启动

我首先实现了大部分构建块:哈希、Merkle 树、多项式、有限域、Trace,…… 那个阶段进行得比较顺利。

我自己的哈希函数的最终版本

然而,将它们拼接在一起以构建证明器是另一回事。我使用了一些参考项目(LamblaClassStarkWare),但仍然无法掌握整个过程。我甚至尝试集成他们的一些代码,但它与我的组件不太兼容。

3. 这该死的玩意

这个阶段不需要太多的解释。我厌倦了自己的愚蠢,直接放弃了这个项目。你知道有时候会这样。

4. 重生

我回到这个项目有两个原因:我学到了一些东西,而且与一年前相比,AI 现在能提供更多的帮助。

暂停后,事情开始快速发展

在 AI (Cursor) 的帮助下,我首先修复了旧实现中的错误,然后继续编写实际的证明器。Cursor 提出了可靠的方法,我用另一个 AI 进行了二次检查,突然之间,事情开始快速发展。在一周之内,大部分项目都完成了。

棘手的部分不仅仅是监督 AI,而是决定将证明器做得多么高级。我可以推动更高的合理性或复杂性,但更多的代码会使其更难理解。毕竟,这应该是一个教育项目。

下一步

该项目现在可以正常运行,并且有望帮助任何试图了解 STARK 工作原理的人。

接下来,我正在考虑是否构建该项目的另一个版本,其中包含更多生产级功能。但就目前而言,保持简单和教育性感觉是一个正确的选择。

结论

这东西很难。如果你第一次尝试(甚至第七次尝试)都不理解,不要灰心。

通过分享我的错误、挣扎和成功,我希望鼓励其他人尝试构建自己的 STARK 证明器。这是真正了解它们工作原理的最佳方式之一。

关于作者

我是一名 ZK (零知识证明) & EVM 自由职业者。我主要从事开发工作,并撰写关于 零知识主题和生态系统 的文章。想聊聊吗?联系我

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

2 条评论

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