作者分享了从零开始使用 Rust 构建 STARK 证明器和验证器的过程,包括遇到的挑战、如何利用 AI 辅助开发以及最终完成项目的经验。该项目旨在提供一个简洁易懂的 STARK 实现,帮助学习者理解 STARK 的工作原理。
你是否也有过这样的感觉,某天醒来就想写一个 STARK 证明器?... 没有吗?只有我这样吗?
这就是我如何用 Rust 从头开始编写 STARK 证明器和验证器的故事,且没有外部依赖。剧透一下:错误的数量肯定不止为零。
你可以通过浏览仓库中的提交记录来跟进,或者 просто 关注此处的重点内容。
我从未打算构建任何可用于生产或高效的东西。与我的许多业余项目一样,这个项目的存在纯粹是为了教育目的。
碰巧的是,阅读真正的 STARK 证明器的代码简直是一场噩梦。你需要一种特殊的疯狂才能直接从生产级的实现中学习。
所以我构建了一个精简的证明器和验证器:一个仅包含基本构建块的仓库,以尽可能简单的方式组合在一起,以生成验证器可以实际检查的证明。

证明器和验证器的运行
该项目的大致时间线为:
这一切都始于一个关于 EthStark 论文的学习小组。事实证明,这篇论文比我预期的更学术化,我吸收的内容也比我希望的要少。但有一个想法扎根了:为什么不尝试构建自己的 STARK 证明器呢?
幸运的是,学习小组还有其他人,他们为如何启动这个项目提供了宝贵的建议。
我首先实现了大部分构建块:哈希、Merkle 树、多项式、有限域、Trace,…… 那个阶段进行得比较顺利。

我自己的哈希函数的最终版本
然而,将它们拼接在一起以构建证明器是另一回事。我使用了一些参考项目(LamblaClass 和 StarkWare),但仍然无法掌握整个过程。我甚至尝试集成他们的一些代码,但它与我的组件不太兼容。
这个阶段不需要太多的解释。我厌倦了自己的愚蠢,直接放弃了这个项目。你知道有时候会这样。
我回到这个项目有两个原因:我学到了一些东西,而且与一年前相比,AI 现在能提供更多的帮助。

暂停后,事情开始快速发展
在 AI (Cursor) 的帮助下,我首先修复了旧实现中的错误,然后继续编写实际的证明器。Cursor 提出了可靠的方法,我用另一个 AI 进行了二次检查,突然之间,事情开始快速发展。在一周之内,大部分项目都完成了。
棘手的部分不仅仅是监督 AI,而是决定将证明器做得多么高级。我可以推动更高的合理性或复杂性,但更多的代码会使其更难理解。毕竟,这应该是一个教育项目。
该项目现在可以正常运行,并且有望帮助任何试图了解 STARK 工作原理的人。
接下来,我正在考虑是否构建该项目的另一个版本,其中包含更多生产级功能。但就目前而言,保持简单和教育性感觉是一个正确的选择。
这东西很难。如果你第一次尝试(甚至第七次尝试)都不理解,不要灰心。
通过分享我的错误、挣扎和成功,我希望鼓励其他人尝试构建自己的 STARK 证明器。这是真正了解它们工作原理的最佳方式之一。
我是一名 ZK (零知识证明) & EVM 自由职业者。我主要从事开发工作,并撰写关于 零知识主题和生态系统 的文章。想聊聊吗?联系我!
- 原文链接: medium.com/@laurippelton...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!