Prerequisite Knowledge
What do I need to know before I can work with Zero Knowledge?
This section is WIP! Don't let any of it hold you back from the Development, Ecosystem or Examples sections
Zero Knowledge Proofs
Obviously, understanding the inner workings of zero knowledge proving schemes is advantageous to efficient and safe use of the Circom language. You will at a very minimum want to have a grasp on the basic theory behind how a Zero Knowledge Proof works. Given you are starting from scratch, many of the official papers will be complex and full of jargon that is difficult to follow. As an absolute starter to Zero Knowledge Proofs, we recommend Why and How zk-SNARK Works: Definitive Explanation by Maksym Petkus.
You can find more information on ZK proof theory in the Zero Knowledge Proof Theory section of this GitBook.
Cryptography
The field of cryptography can seem daunting from the outside. Full mastery does require an intimate understanding of the mathematical constructs assembled into cryptosystems. However, a working proficiency with cryptography can be achieved without mathematical competency.
Practical Cryptography for Developers by Svetlin Nakov is the best crash course in applied cryptography one could ask for. It goes over the application/ implementation of some of the most common cryptographic patterns, breaking them down in a beginner-friendly manner. This resource is highly recommended at the absolute start of your journey.
The Cryptopals challenge presents an advanced and structured dive into intermediate application of cryptography. This is not necessary to wield Circom, but it is one to keep on your radar if you stick with ZK development for an extended period of time.
Mathematical Requirement
You don't *need* any math background, but having it well help. Otherwise there are certainly topics that you should study up on.
Discrete Math: expression, evaluation, and proving of logical statements
Linear Algebra: the study of lines and planes, vector spaces and mappings that are required for linear transforms (which underpins a significant portion of zero knowledge arithmetization
Read more about the requirements from 0xPARC
Solidity Requirement
This guide is built with the Solidity developer in mind. Our work on BattleZips began after four years of web3 experience; you should not expect this guide to go over the minutiae of Solidity development.
This repository uses hardhat to manage the project
ERC2771 metatransactions are included in the codebase, but should present negligible differences to a version of BattleZips that is not ERC2771 compliant.
Last updated