Skip to content

Instantly share code, notes, and snippets.

@jp4g
Last active September 28, 2022 08:53
Show Gist options
  • Save jp4g/22dd63ef7547e392b9f8c306ee632a32 to your computer and use it in GitHub Desktop.
Save jp4g/22dd63ef7547e392b9f8c306ee632a32 to your computer and use it in GitHub Desktop.
Planned Awesome-Circom GitBook
  • Content provided as a GitBook
  • Sections
    • We need to have the GitBook up as early next week as possible to post in the Iden3 channel as they will assist with content
    • Intro
      • Starting the journey into ZK Dev
        • cryptobook
        • mathematical requirement
        • solidity requirement
        • managing expectations
        • supportive community
      • Circom vs other solutions
        • How I decided to choose circom: saw Dark Forest, Tornado Cash, MACI were all written in Circom
          • Point being that community is scarce in ZK and the most growth is around the Circom ecosystem
        • Zokrates: inferior / outdated / predecessor DSL
        • Mina/ starkware: very cool and far ahead of BattleZips. However, our ultimate goal with BattleZips is summarizing off-chain state channels in a ZK proof on L1
      • We clickbaited you on scaling. Circom doesn’t jive well with recursive proofs
      • Communities to join
        • Iden3 telegram
        • Zero Knowledge podcast telegram
        • ZK Hack discord
        • PSE discord
        • zk-kit discord
        • BattleZips discord 🙂
    • Zero Knowledge Proof Theory
      • Resources
        • No need to reinvent the wheel and write down all of zk proofs here. Lightly touch on topics then direct to one or multiple resources
      • Primitives
        • Hash functions
          • SHA-3 / KECCAK-256 + note on why circuit-optimized hash algorithms work
          • MiMC / MiMC Sponge
          • Poseidon
          • Pedersen Commitments
        • Public key cryptosystems
          • Note on L1 key registry → L2 hot key + callback to circuit-optimized hash functions
          • ECDSA & secp256k1
          • EdDSA
            • Ed25519 as a growing standard
            • jubjub
            • bn254
            • bls12-381
        • Merkle Trees
          • What is a merkle tree?
          • What is a merkle proof of inclusion?
          • zk-kit
          • Incremental Merkle Trees
          • Sparse Merkle Trees
          • Tree Arity (Binary, Quinary)
        • Signals
          • Witnessed io & intermediary state. All different signals as inputs + gates as logic represent the entire program trace
          • Conditionally evaluation of signals & multiplexing
          • Private, public, and intermediate signals
    • Circom
      • Link again to iden3 telegram
      • Dev tooling
        • Circom language
          • Installation / IDE tooling
          • Powers of Tau
          • Circuit generation
          • Proof generation
          • On conditional logic (loop back to signals)
          • On logic proper signal constraint
          • On logic causing non-quadratic constraints
        • circomlib
        • circomlibjs
        • circom-tester
        • snarkjs
        • Solidity → snarkjs
        • hardhat-circom
      • Example Applications
        • Dark Forest
        • BattleZips
        • Get more from Iden3
      • Example Codebases
        • BattleZips
        • Tornado Cash
        • Minimal Anti-Collusion Infrastructure
        • Semaphore
        • Rate-Limiting Nullifier
      • Relevant Talks
      • Circom for Scaling
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment