Imagine understanding an algorithm so well that you can carry it out
- by hand
- off the top of your head
- and without memorizing any unnatural tricks
The ZK Book has expanded again, this time to teach the Fast Fourier Transform -- specifically the Number Theoretic Transform (NTT).
The NTT algorithm evaluates a polynomial on n points in O(n log n) time. Normally, such an evaluation would take O(nΒ²) time.
Although the Fast Fourier Transform already has numerous learning resources, we found them unsatisfying.
For example, a very common explanation relies on "splitting the polynomial into even and odd terms," using "twiddle factors," and "butterflies." However, these methods come off as fortuitous random discoveries that describe the algorithm rather than explain it.
We consider such features listed above to be incidental to deeper -- and much easier to understand -- underlying concepts. We even go so far as to avoid analogies to complex numbers.
We took great care to ensure that every step of the learning journey is motivated and that every step is a trivial extension of the previous. Therefore, there are no conceptual leaps or surprise discoveries.
Don't let the chapter names scare you; the underlying principles are just basic algebra.
By the end of the 13 chapters, you will be able to compute the Number Theoretic Transform by hand!
Link next.
Being part of this team and solving real problems alongside them was one of my best work experiences.
If you're looking to learn Web3 or become a technical writer, I highly recommend checking out @RareSkills_io.
Great place to start a new path.
After months of learning and growing, my time as a Technical Writer at @RareSkills_io comes to an end this Saturday.
Huge thanks to @Jeyffre for the opportunity and to @jpmorais80 for the incredible support and collaboration.
ππ
If you want to do ZK in 2026, here are the courses I'd take:
1 - A linear algebra course. This is the foundation of almost all non-trivial fields of programming.
2 - A discrete math course (especially one that includes elementary number theory)
3 - A proofs course (as a prerequisite for group theory)
4 - A group theory course
5 - A probability/stats course so your intuition on the subject gets proper training
6 - A computational theory/computational complexity course, so you know what a "language" is formally, and you have experience with "reductions."
7 - A Rust course. 90% of ZK projects use it. Use @RareCodeAI, and you'll have all you need to know.
8 - A cryptography course. Privacy depends on cryptography
9 - An algebraic coding theory course so you can understand FRI/ZK-STARKs
10 - A course in VMs/Computer architecture so you can make sense of ZKVMs.
I've worked with students who take the ZK Bootcamp at 2x speed -- Having a solid foundation lets you move fast.
Easy money in Web3 is over.
Learn how to gain hard skills instead of constantly looking for shortcuts.
Even if you fail, you'll come out cracked.
Imagine understanding an algorithm so well that you can carry it out
- by hand
- off the top of your head
- and without memorizing any unnatural tricks
The ZK Book has expanded again, this time to teach the Fast Fourier Transform -- specifically the Number Theoretic Transform (NTT).
The NTT algorithm evaluates a polynomial on n points in O(n log n) time. Normally, such an evaluation would take O(nΒ²) time.
Although the Fast Fourier Transform already has numerous learning resources, we found them unsatisfying.
For example, a very common explanation relies on "splitting the polynomial into even and odd terms," using "twiddle factors," and "butterflies." However, these methods come off as fortuitous random discoveries that describe the algorithm rather than explain it.
We consider such features listed above to be incidental to deeper -- and much easier to understand -- underlying concepts. We even go so far as to avoid analogies to complex numbers.
We took great care to ensure that every step of the learning journey is motivated and that every step is a trivial extension of the previous. Therefore, there are no conceptual leaps or surprise discoveries.
Don't let the chapter names scare you; the underlying principles are just basic algebra.
By the end of the 13 chapters, you will be able to compute the Number Theoretic Transform by hand!
Link next.
The topic of βroots of unityβ in the context of a finite field doesnβt even appear in a lot of abstract algebra textbooks.
However, theyβre quite essential to making ZK algorithms efficient (and even possible in some cases).
Up until now, most of the treatment online for roots of unity in a finite field are a bunch of unmotivated and unrelated definitions β and ZK treatments that refer to them assume the reader knows the important properties that are actually rarely discussed.
Even if you ask an AI to teach you about roots of unity in a finite field, it will give you the same bleh response you get from top hits on a search engine.
If youβve been banging your head against PLONK, FRI, and FTT and wondering why the algorithms arenβt clicking for you, thereβs a really good chance its because you have a knowledge gap with roots of unity.
BTW, this is why RareSkills hasnβt published about those algorithms yet. Could I give a one hour talk and explain how they work end to end, with fancy animations to make it cool? Of course I could.
But thatβs not what learners actually need.
To really learn an algorithm, you need a framework to rediscover the algorithm yourself β not merely memorize the sequence of steps to execute.
However, you do need to memorize the key ide as the algorithm relies on β and not just memorize them β have a generalizable encoding of that information so you can easily connect it to other prerequisite knowledge.
Roots of unity in a finite field are one of those critical knowledge dependencies.
In new work with @AngusGruen, we show that the πΆπ±-π΅π°-π€π’π±π’π€πͺπ΅πΊ proximity gaps conjecture (Ben-SassonβCarmonβIshaiβKoppartyβSaraf) is not true. This affects the security analysis of most zkVMs deployed today. https://t.co/ZBNdB982d8
This is a great article for understanding roots of unity, a fundamental concept in NTT/FFT. We spent a lot of time working on it to make it as good as possible for the reader.
New blog post is up:
Roots of Unity in a Finite Field
Roots of Unity are an important prerequisite for understanding the NTT algorithm (Fast Fourier Transforms in a Finite Field), ZK-STARKs, and PLONK.
You'll want to understand them like the back of your hand before diving into those algorithms.
This article builds off of our previous article about the Fundamental Theorem of Cyclic groups. It's much easier to understand Roots of Unity in the context of multiplicative subgroups than in isolation.
Link in the reply.
My 70-day journey with #RustLang on @RareCodeAI has come to an end From the initial "what is ownership!" panic to the "aha!" moment of lifetimes, it's been one of the most challenging and rewarding learning experiences I've ever had.
On to the next project on #ZKP#Cryptography
New blog post is up:
Fundamental Theorem of Cyclic Groups
ZK algorithms very frequently evaluate polynomials over a set of points in a finite field that form a multiplicative subgroup.
The number of elements in that multiplicative subgroup is usually an integer power of 2.
The Fundamental Theorem of Cyclic Groups tells us whether a particular finite field has a subgroup with a power-of-two number of elements or not -- and it also tells us how to find that subgroup.
RareCode now has over 700 Rust problems for you to learn and review the fundamental concepts of the language.
No other platform makes it this easy to both work hard and work smart at learning how to code in Rust.
The problem bank keeps growing, and more are on the way!