• This repository has been archived on 09/Dec/2021
  • Stars
    star
    111
  • Rank 314,510 (Top 7 %)
  • Language
    Rust
  • Created almost 5 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Recursive SNARKs based on Plonk and Halo

Plonky

Plonky is a prototype implementation of recursive arguments. It is loosely based on PLONK, with a few customizations:

  • While PLONK uses KZG's pairing-based polynomial commitment scheme, we use a batched variant of the Halo technique to recursively verify discrete log based polynomial commitments.
  • The standard PLONK model was designed for arithmetic circuits; it uses a single constraint to verify additive and multiplicative relationships. We use a variety of custom gates, such as a gate which performs a step of a Rescue permutation. The maximum degree of our constraints is 8, compared to 3 in standard PLONK.
  • In standard PLONK, each gate interacts with three wires, which are typically thought of as two input wires and one output wire. We use a much higher arity -- 9 wires per gate -- although only 6 of them are involved in the permutation argument. The other 3 can be thought of as "advice" wires.
  • The zero-knowledge technique in the Plonk paper would cause each witness polynomial's degree to slightly exceed a power of two, which doesn't work well with Halo. We use a different blinding method.

For more details, see Fast recursive arguments based on Plonk and Halo.

Disclaimer

This code has not been thoroughly reviewed or tested, and should not be used in any production systems.

More Repositories

1

plonky2

Rust
769
star
2

r1cs

A Rust library for building R1CS gadgets
Rust
85
star
3

zk_evm

Rust
74
star
4

r1cs-workshop

Notes for the R1CS programming workshop at ZK0x04
TeX
29
star
5

plonky2-semaphore

Plonky2 Semaphore example for ZKHack
Rust
25
star
6

bft-simulation

Simulation of several BFT consensus algorithms for benchmarking
Java
24
star
7

hyperstark

Early prototype.
Rust
23
star
8

zero-bin

plonky2 proving over paladin
Rust
23
star
9

paladin

Bringing divine order to remote task execution.
Rust
20
star
10

plonky2-ecdsa

ECDSA gadgets for plonky2
Rust
18
star
11

eth-tx-proof

Proving historical Ethereum transactions using the Plonky2 zkEVM
Rust
15
star
12

r1cs-bellman

Bellman backend for the r1cs crate
Rust
11
star
13

r1cs-zkinterface

Compiles r1cs gadgets to the zkinterface format
Rust
10
star
14

proof-protocol-decoder

Common protocol for generating ZK proofs for blocks on different blockchains.
Rust
10
star
15

evm-tests

Parser and test runner for testing compatable common Ethereum full node tests against Polygon Zero's EVM.
Rust
9
star
16

plonky-block-proof-gen

Generates block proofs from proof IR
Rust
6
star
17

nums

Number theoretic functions, such as primality testing and factorization, for BigUints
Rust
4
star
18

hash-constants

Sage
4
star
19

commitment-set-poc

This is a proof-of-concept implementation of Mir's Commitment Set storage model, which is based on the Modified Huffman coding.
Python
4
star
20

system-zero

An obsolete zkVM from Polygon Zero
Rust
3
star
21

plonky2-u32

u32 arithmetic gadgets for plonky2
Rust
2
star
22

mir-core-old.github.io

HTML
1
star
23

plonky2-insertion

list-insertion gadget for plonky2
Rust
1
star
24

plonky2-waksman

permutation gadgets using the Waksman network for plonky2
Rust
1
star
25

eth_trie_utils

Types and utility functions for building/working with partial Ethereum tries
Rust
1
star
26

plonky-edge-block-trace-parser

Logic for parsing a block trace for edge into txn generation payloads for plonky (2 & 3).
Rust
1
star
27

eth-trie-tools

Various debugging tools for working with tries for `eth_trie_utils`.
Rust
1
star
28

jerigon-test-network

Local jerigon network and smart contracts used to generate input for zero_bin/zk_evm
TypeScript
1
star