我不是来告诉你 ZK[5] 是如何工作的。我也不是来告诉你应该学习什么。
这更多的是关于我在挖掘(巨大的)ZK 兔子洞时的感受。我是如何学习 ZK 的,哪些方法对我有用,哪些方法可能对你也有用。
请记住,没有正确的方法:每个人都有自己的学习方法。
学 ZK 你是认真的吗? 首先,你可能需要重新考虑一下你的人生选择。最终学会烹饪不是更容易吗?或者学做魔方?我是说,你确定要用 ZK 来折磨自己吗?
如 果你想要更轻松的 生活,请单击此浏览器标签旁边的 "X",你就可以回到舒适的生活中,养着可爱的小狗,玩着刺激的填字游戏。否则,请注意,请放心继续。
从魔法开始 ZK 很难。我是说,几乎每一个方面都很难。
虽然很难理解它是如何运作的,但它的基本思想非常简单。你要在不透露任何数据的情况下证明你掌握了某些数据。这听起来像魔术,而魔术基本上就是从这里开始的。而魔术是很难的。
动力 在我看来,动力是所有学习的核心。你有足够的动力学习 ZK 吗?还是仅仅因为妈妈让你学,你就学了?
我有时会想,如果我在正规学校学习时就有动力,我的生活会是什么样子。我花了 10 年时间 "学习 "法语,但没有任何动力,所以学得很少。试想一下,如果一个人花 10 年时间,带着极大的动力去学习某样东西,结果会是怎样 -- 你也许已经可以登月了。
所以,找出是什么让你心动。是什么让你心动?你是否有明确的目标,或者是什么促使你去学习?
选什么材料 现在有很多 ZK 材料。我将在本帖末尾列出一些合适的材料,但我的目的不是告诉你该读什么。
我觉得大多数资料的主要问题在于,要么是针对一些铁杆密码学家,要么就是内容太多。很难理解自己应该关注哪些。
想象一下,一个 5 分钟的视频介绍了 20 个新概念。这意味着你将每隔 15 秒暂停一次视频,上网搜索(或使用 AI)更深入的资料,然后再返回到原始视频。这样做还算有效,但却非常令人泄气。这会让你觉得自己根本不适合学习 ZK。
学习 ZK 这样会更容易:有很多概念你都不会理解。你将不得不学习其中的许多概念,但你不应该试图一下子把它们都学会 。诀窍在于每次都要学习大拼图中的某一部分 :它也许只是你听到的一个新术语,也许只是你找到的一些新资源。
不要独自学习 性格内向没关系,但如果能得到他人的反馈,一切都会变得容易得多。
对我来说最有效的一件事就是参加各种 ZK 学习小组。他们会给你带来同伴压力,让你真的想跟上别人的步伐,以同样的速度学习。看到别人在同样的问题上挣扎,这也是一种激励。这让你意识到自己可能并不是一个失败者。
你也不需要任何既定或约定俗成的学习小组。只要找到对学习 ZK 有兴趣的人,然后一起交流想法就可以了。
你可以从加入各种与 ZK 相关的聊天群组、论坛或其他社区开始。阅读其他人的发言,联系他们,然后开始行动。
分享 公开你的进展!分享你的收获。你将从(希望)收到的评论中学到更多。
在推特上分享 ZK 工作 作为额外的奖励,你还可以与其他有着同样热情的人建立联系。
(不要怕)提愚蠢的问题 我们都是从零起步的。
我为 ZK 敞开心扉 曾经有一位同事告诉我,他已经厌倦了回答初级开发人员提出的愚蠢问题。现在,想象一下你是一名初级 ZK 学习者,你遇到了一个愚蠢的问题。你可以自己想办法解决,也可以表明自己是初学者,公开提出问题。
我知道人们对这种问题的反应不尽相同,但在我看来,有人提出这种问题是件好事。在我看来,这表明这个人真的很想学习,而且在学习过程中融入他人,会更快取得成效。是的,有时提出愚蠢的问题会很丢人,但这也是一种收获。公开提出愚蠢的问题也会给其他人带来同样的勇气。
我的意思是,最坏的结果会是什么呢?
使用武力 根据你想使用 ZK 的目的,你也许可以在学习的第一天就开始编写一个项目。有多种 ZK 领域专用语言 (DSL) 可以抽象出几乎所有 ZK 难点:即使你对 ZK 零起点,也可以开始编写 ZK 程序。所有神奇的事情都在后台发生。
施展 ZK 魔法 我觉得实际看看你编写 ZK 程序时会发生什么很有帮助。你运行一些神秘的命令来生成证明,突然就会出现一个包含实际证明字符串的文件。你运行另一个神秘命令,也许会生成一个智能合约,用来验证你的证明。下一个命令就会使用你生成的证明来验证程序的执行。很酷吧?
不要对自己太苛刻 总的来说,不要对自己太苛刻。学习 ZK 很难。一开始,你可能无法理解很多概念。
要坚持不懈,不断学习,总有一天,一些难题会迎刃而解。
试着从不同的角度切入主题。找一些 YouTube 视频,阅读文章,问一些愚蠢的问题,犯一些错误。我无法只通过重读一篇文章就学到很多东西,但从不同的角度攻克同一难题对我来说确实很有效。
ZK 火箭科学 记住:学习不是火箭科学。只有教材才是。
关于学习材料 我尽量不推荐太多资料,因为每个人的学习方法都不一样。但这里有几个:
Least Authority 的 Moonmath 手册[6] 用于学习Snarks, 从基础开始
学习 Stark , 参考 StarkWare's Stark 101 series[7] .
编写一些 ZK 代码,看看实际会发生什么:Noir from Aztec[8] 。