Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Changes required for Bridge circuits #16

Draft
wants to merge 149 commits into
base: dev
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
149 commits
Select commit Hold shift + click to select a range
eb5d1aa
Reimplement keygen_vk for fe-be split as keygen_vk_v2
ed255 Dec 13, 2023
d318a9d
Reimplement keygen_pk for fe-be split as keygen_pk_v2
ed255 Dec 13, 2023
a601925
WIP: ProverV2 implementation
ed255 Dec 13, 2023
4510059
WIP
ed255 Dec 14, 2023
1b35fab
Complete create_proof refactor for fe-be split
ed255 Dec 14, 2023
50e7354
Make new prover methods work with multi-instance
ed255 Dec 15, 2023
98759c3
Get queires for proving
ed255 Dec 15, 2023
9ee0ced
Port verify_proof to fe-be split
ed255 Dec 15, 2023
013e6d4
Add sample circuit for testing
ed255 Dec 27, 2023
50fb46a
Make progress on testing fe-be split
ed255 Dec 28, 2023
a8a2009
Add witness calculator
ed255 Dec 29, 2023
c272378
Full flow, but verification fails
ed255 Dec 29, 2023
6037910
WIP
ed255 Jan 2, 2024
19298c2
Get it working
ed255 Jan 3, 2024
0ebdc59
Clean up
ed255 Jan 3, 2024
96ea944
Clean up
ed255 Jan 3, 2024
bfc5d86
Clean up
ed255 Jan 3, 2024
8495457
Benchmark
ed255 Jan 3, 2024
c412223
Merge branch 'main' into feature/frontend-backend
ed255 Jan 4, 2024
568b0e5
WIP
ed255 Jan 4, 2024
ca9d052
Make legacy wrappers over v2
ed255 Jan 4, 2024
8813ef7
Remove old API in favour of legacy wrappers
ed255 Jan 5, 2024
86ef75f
Fix test
ed255 Jan 5, 2024
58c9567
Address some clippy warnings
ed255 Jan 5, 2024
1bc84ca
Fix pinned vk test
ed255 Jan 5, 2024
582d6d5
Remove Polynomial from backend interface
ed255 Jan 9, 2024
a3ecfba
Clean up
ed255 Jan 10, 2024
d3e2543
Merge branch 'main' into feature/frontend-backend
ed255 Jan 11, 2024
d350e72
Address some of the review comments from @CPerezz
ed255 Jan 15, 2024
2c50b39
Simplify Backend gate type
ed255 Jan 16, 2024
c71fbfa
Document some types
ed255 Jan 16, 2024
20c16dd
Split collect_queries function
ed255 Jan 16, 2024
371e69e
Checkpoint
ed255 Jan 16, 2024
1fc555b
Checkpoint
ed255 Jan 16, 2024
4f47ae6
Checkpoint
ed255 Jan 18, 2024
fad6b04
Checkpoint
ed255 Jan 19, 2024
cd7cf53
Checkpoint
ed255 Jan 22, 2024
f99144a
Checkpoint. Move everything to common
ed255 Jan 22, 2024
de02499
Checkpoint
ed255 Jan 22, 2024
adcbe4b
Checkpoint
ed255 Jan 22, 2024
e54c39c
Checkpoint
ed255 Jan 22, 2024
e004913
Checkpoint
ed255 Jan 22, 2024
fd80a62
Checkpoint
ed255 Jan 22, 2024
43fdbb3
Checkpoint
ed255 Jan 22, 2024
5c7d2ad
Checkpoint
ed255 Jan 22, 2024
15027e6
Checkpoint
ed255 Jan 22, 2024
0dcdf7d
Checkpoint, backend compiles
ed255 Jan 23, 2024
b0a17cd
Add TODOs
ed255 Jan 23, 2024
5d9c09d
Add TODOs
ed255 Jan 23, 2024
f9703ec
Checkpoint. compile_circuit in frontend
ed255 Jan 23, 2024
29b6c75
Checkpoint. WitnessCalculator in backend
ed255 Jan 23, 2024
552c567
Checkpoint, halo2_proofs legacy
ed255 Jan 24, 2024
9b73ca4
Fix test imports
ed255 Jan 24, 2024
41f2003
Enable dev
ed255 Jan 24, 2024
933c399
Move dev to frontend
ed255 Jan 24, 2024
9b19dd9
Remove old halo2_proofs src
ed255 Jan 25, 2024
f2c9074
Cleanup unused dependencies in common, backend
ed255 Jan 25, 2024
2293d61
Clean unused imports
ed255 Jan 25, 2024
cd6972a
Pass frontend tests
ed255 Jan 26, 2024
79d6e11
Pass tests in halo2_proofs
ed255 Jan 26, 2024
130e8e1
Move individual tests to halo2_proofs
ed255 Jan 26, 2024
36e82a1
Add reexports in halo2_proofs for plonk_api.rs
ed255 Jan 26, 2024
ea8cd59
Move examples to halo2_proofs. Breaks
ed255 Jan 26, 2024
28722f3
WIP (Broken): ColumnMid implementation
ed255 Jan 26, 2024
3291b3c
Checkpoint
ed255 Jan 29, 2024
34d35a8
Add ChallengeMid in middleware
ed255 Jan 29, 2024
0fb3007
Remove halo2_proofs_rm; compile all tests
ed255 Jan 29, 2024
1fce6f3
Clean up middleware deps
ed255 Jan 29, 2024
da9d34e
Clean up and config lints for halo2_proofs
ed255 Jan 29, 2024
4c155be
Temporarily disable thread-safe-region fetature, fix clippy warnings
ed255 Jan 29, 2024
fe2e28e
Fix doc tests imports
ed255 Jan 29, 2024
134143c
Resolve feedback from @han0110
ed255 Feb 2, 2024
7eda496
Address feedback from @adria0
ed255 Feb 2, 2024
acb13f8
Address feedback from @CPerezz, part 1
ed255 Feb 2, 2024
bbf034a
Address feedback from @CPerezz, part 2
ed255 Feb 2, 2024
9927c82
Address feedback from @CPerezz, part 3
ed255 Feb 2, 2024
fb2e556
Fix wasm32 build
ed255 Feb 2, 2024
bc30c46
Small updates to MockProver (#256)
zemse Feb 5, 2024
25666a4
Merge branch 'main' into feature/frontend-backend-crates1
ed255 Feb 5, 2024
137b46e
Use Vec<F> instead of Vec<Assigned<F>> in prover::commit_phase
ed255 Feb 6, 2024
7162953
Move Assigned from middleware to common
ed255 Feb 6, 2024
490cd87
Run cargo fmt
ed255 Feb 6, 2024
e2efca5
Fix doc example import
ed255 Feb 6, 2024
1ef3b44
Merge pull request #254 from privacy-scaling-explorations/feature/fro…
ed255 Feb 6, 2024
a15c764
refactor: move batch_invert_assigned and poly_invert from common to f…
ed255 Feb 6, 2024
c75374b
refactor: move poly from common to backend
ed255 Feb 6, 2024
de261f4
fix: address clippy complaints
ed255 Feb 6, 2024
0b75a92
Merge pull request #272 from privacy-scaling-explorations/feature/pol…
ed255 Feb 8, 2024
c08b877
fix: correct the pub types/fields(post frontend-backend split) (#276)
duguorong009 Feb 21, 2024
42f8e93
refactor: move the `halo2_common::arithmetic` to `halo2_backend`(post…
duguorong009 Feb 22, 2024
fa708ec
docs: fix typos (#284)
themighty1 Feb 22, 2024
6d1dad3
remove: `multiexp_serial` for halo2curves version (#282)
CPerezz Feb 22, 2024
e892c86
fix: reset the changes introduced in `getrandom` import as dep (#286)
duguorong009 Feb 23, 2024
06d7007
Remove/best {fft/multiexp} & other unused arithmetic functions (#288)
CPerezz Feb 27, 2024
1650a0b
refactor: move some types from common to backend (post-split)(plonk-0…
duguorong009 Feb 28, 2024
13fa01f
Make `VerifyFailure::emit` public (#292)
georgwiese Mar 4, 2024
d6f7020
chore: Doc, unit test, minors (#289)
adria0 Mar 7, 2024
e1f6e41
Remove dependency to common ConstraintSystem in the backend (#290)
ed255 Mar 18, 2024
20ad57d
docs: explain unstable main, document frontend-backend split (#299)
ed255 Mar 20, 2024
6eb4371
Move "frontend" column types from middleware to the frontend (#300)
ed255 Mar 21, 2024
1276ad0
Fix filthy doc warnings that pollutes our PR diffs (#303)
adria0 Mar 21, 2024
d6f8d2c
refactor: remove the `halo2_common` crate(post-split) (#298)
duguorong009 Mar 22, 2024
134bd41
chore: remove generic Expression::Scaled in favor of Product (#302)
ed255 Mar 22, 2024
62bf22c
fix: check `thread-safe-region` feature(post-split) (#296)
duguorong009 Mar 28, 2024
720ba51
chore: document magic numbers in `bytes_length` (#304)
duguorong009 Mar 29, 2024
b9a057d
chore: fix "docs ghpages/deploy" ci (#305)
duguorong009 Apr 4, 2024
1b2a677
chore: Bump peaceiris/actions-gh-pages from 3 to 4 (#311)
dependabot[bot] Apr 10, 2024
26652ae
ZAL: ZK Accel Layer (#277)
mratsim Apr 10, 2024
d03d6c7
chore: remove V2 from type names (#312)
ed255 Apr 12, 2024
3600207
feat!: remove the `compress_selectors` field from `VerifyingKey` (#310)
duguorong009 Apr 12, 2024
68b6006
fix: expose more types for external projects (#314)
duguorong009 Apr 15, 2024
bd385c3
fix: review the pub types/fields(post-split)(1) (#307)
duguorong009 Apr 16, 2024
9eedeb5
fix: enable the features in `halo2_proofs` crate (#319)
guorong009 Apr 26, 2024
54a8fd8
fix!: roll back the `compress_selectors` logic (#322)
guorong009 May 11, 2024
620176c
reexport `halo2curves` in `halo2_middleware` so users don't need it a…
Vindaar May 14, 2024
81c449a
feat: add basic code coverage
adria0 May 17, 2024
e262eaf
fix: bad badge in README
adria0 May 20, 2024
c57b007
fix: increase code coverage
adria0 May 21, 2024
0513fb4
improve: apply `tachyon` optimizations(2 & 5) (#329)
guorong009 May 22, 2024
2458654
Add `ParamsVerifierKZG` (#318)
davidnevadoc May 23, 2024
87fb07f
minor: upgrade the `halo2curves` dep to 0.6.1 (#339)
guorong009 May 27, 2024
b76ffc2
Implement Plonky3 frontend adaptor (#306)
ed255 May 27, 2024
2044cd6
fix: bump nightly version to build docs in CI (#341)
ed255 May 27, 2024
e931d58
feat: improve ZAL
adria0 May 28, 2024
80e69b9
Quick fix: random generator in ZAL MSM test (#344)
davidnevadoc May 30, 2024
b4d1c4c
improve: apply tachyon optimizations(1) (#342)
guorong009 Jun 3, 2024
d52ebca
patch: include `shuffles` in transcript, even when empty (#348)
guorong009 Jun 6, 2024
e86b7f7
patch: include more fields to transcript (#351)
guorong009 Jun 7, 2024
edffc1e
feat: add halo2_debug package (#346)
ed255 Jun 10, 2024
32599e8
Use vectors instead of slices for PI (#353)
davidnevadoc Jun 11, 2024
d7c6279
feat: add assertion for dynamic lookup (#347)
guorong009 Jun 17, 2024
1a6468e
feat: MockProver cell override (#352)
teddav Jun 18, 2024
445d1da
feat: deterministic tests (#349)
adria0 Jun 25, 2024
bc857a7
fix: make lookup-any-sanity-checks optional in halo2_proofs (#358)
ed255 Jun 28, 2024
26fc7c2
fix: correct the "plonk" benchmarking (#360)
guorong009 Aug 26, 2024
fac4db0
Bump halo2curves to 0.7 (#366)
davidnevadoc Sep 13, 2024
7eb156a
Bump to version `0.4.0` (#367)
davidnevadoc Sep 13, 2024
e74c966
This PR adds the requirements midnight_lib has to use halo2 library …
iquerejeta Oct 30, 2024
9d08197
Iquerejeta/vk without circuit (#14)
iquerejeta Oct 31, 2024
7367200
some parallel iters (#15)
iquerejeta Nov 13, 2024
00ef2ce
Cost options (#13)
iquerejeta Nov 13, 2024
8baf1a4
Changing visibility, and adding some functions
iquerejeta Nov 21, 2024
4e08c6f
Truncate v and u powers c850b9e and 23f790e269dacc316abd62537480ea06e…
iquerejeta Nov 21, 2024
f6cfa58
Working Multi-open argument with truncated powers
iquerejeta Nov 22, 2024
6812146
Nits -> MSRV because of div_ceil
iquerejeta Nov 22, 2024
be92a55
Minor
iquerejeta Nov 22, 2024
e4e2e55
Debugging bridge circuits
iquerejeta Nov 26, 2024
ae0a885
Exposing functions in CS Back to verify proof in-circuit
iquerejeta Nov 26, 2024
9b7febd
Fix expected values
iquerejeta Nov 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion halo2/katex-header.html → .github/katex-header.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@
]
});
});
</script>
</script>
22 changes: 22 additions & 0 deletions .github/scripts/run-examples.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/bin/sh

# Get the list of examples from "examples" dir & Cargo.toml
EXAMPLES_WITH_FEATURES=$(awk '/^\[\[example\]\]/ { getline; name=$3; name=substr(name, 2, length(name)-2); getline; if ($1 == "required-features") { features=$NF; gsub(/["\[\]]/, "", features); print name "#" features } }' ./halo2_proofs/Cargo.toml)
EXAMPLES_WITHOUT_FEATURES=$(ls ./halo2_proofs/examples/*.rs | xargs -n1 basename -s .rs)

# Remove examples with features listed in Cargo.toml from examples without features
EXAMPLES_WITHOUT_FEATURES=$(echo "$EXAMPLES_WITHOUT_FEATURES" | grep -vFx "$(echo "$EXAMPLES_WITH_FEATURES" | cut -d '#' -f 1)")

# Combine examples with and without features
EXAMPLES=$(echo "$EXAMPLES_WITH_FEATURES $EXAMPLES_WITHOUT_FEATURES" | tr ' ' '\n' | sort -u | tr '\n' ' ')

# Run the examples
for example in $EXAMPLES; do
if [ "$(echo "$example" | grep '#')" ]; then
name=$(echo $example | cut -d '#' -f 1)
features=$(echo $example | cut -d '#' -f 2)
cargo run --package halo2_proofs --example $name --features $features
else
cargo run --package halo2_proofs --example $example
fi
done
27 changes: 27 additions & 0 deletions .github/scripts/wasm-target-test-build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/bin/sh

GIT_ROOT=$(pwd)

cd /tmp

# create test project
cargo new foobar
cd foobar

# set rust-toolchain same as "halo2"
cp "${GIT_ROOT}/rust-toolchain" .

# add wasm32-* targets
rustup target add wasm32-unknown-unknown wasm32-wasi

# add dependencies
cargo add --path "${GIT_ROOT}/halo2_proofs" --features batch,dev-graph,gadget-traces,lookup-any-sanity-checks
cargo add getrandom --features js --target wasm32-unknown-unknown

# test build for wasm32-* targets
cargo build --release --target wasm32-unknown-unknown
cargo build --release --target wasm32-wasi

# delete test project
cd ../
rm -rf foobar
27 changes: 18 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,9 @@ jobs:
os: [ubuntu-latest, windows-latest, macOS-latest]
include:
- feature_set: basic
features: batch,dev-graph,gadget-traces
features: --features batch,dev-graph,gadget-traces
- feature_set: all
features: batch,dev-graph,gadget-traces,test-dev-graph,thread-safe-region,sanity-checks,circuit-params

features: --all-features
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
Expand All @@ -30,7 +29,18 @@ jobs:
uses: actions-rs/cargo@v1
with:
command: test
args: --verbose --release --workspace --no-default-features --features "${{ matrix.features }}"
args: --verbose --release --workspace --no-default-features ${{ matrix.features }}

examples:
name: Run the examples
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
- name: Run examples
run: |
.github/scripts/run-examples.sh

build:
name: Build target ${{ matrix.target }}
Expand All @@ -46,13 +56,12 @@ jobs:
- uses: actions-rs/toolchain@v1
with:
override: false
default: true
- name: Add target
run: rustup target add ${{ matrix.target }}
- name: cargo build
uses: actions-rs/cargo@v1
with:
command: build
args: --no-default-features --features batch,dev-graph,gadget-traces --target ${{ matrix.target }}
- name: Run script file
run: |
.github/scripts/wasm-target-test-build.sh

bitrot:
name: Bitrot check
Expand Down
20 changes: 18 additions & 2 deletions .github/workflows/docs-ghpages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,17 @@ jobs:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly
toolchain: nightly-2024-05-17
override: true

- name: Copy the html file to workspace crates
run: |
for cargo_toml in $(find . -name Cargo.toml); do
crate_dir=$(dirname $cargo_toml)
cp .github/katex-header.html $crate_dir
echo "Copied html file to $crate_dir"
done

- name: Build latest rustdocs
uses: actions-rs/cargo@v1
with:
Expand All @@ -33,8 +41,16 @@ jobs:
cp -R ./target/doc ./docs
echo "<meta http-equiv=\"refresh\" content=\"0; url=halo2_proofs\">" > ./docs/index.html

- name: Delete the html files copied to every crate
run: |
for cargo_toml in $(find . -name Cargo.toml); do
crate_dir=$(dirname $cargo_toml)
rm -f $crate_dir/katex-header.html
echo "Deleted html file in $crate_dir"
done

- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@ Cargo.lock
.vscode
**/*.html
.DS_Store

layout.png
serialization-test.pk
6 changes: 6 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,10 @@
members = [
"halo2",
"halo2_proofs",
"halo2_frontend",
"halo2_middleware",
"halo2_backend",
"halo2_debug",
"p3_frontend",
]
resolver = "2"
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
# halo2 [![Crates.io](https://img.shields.io/crates/v/halo2.svg)](https://crates.io/crates/halo2) #
# halo2

## [Documentation](https://privacy-scaling-explorations.github.io/halo2/halo2_proofs)

This repository contains the [halo2](https://github.com/zcash/halo2) fork from
PSE and includes contributions from the community.

We use the `main` branch for development, which means it may contain
unstable/unfinished features. For end-users we recomend using the tag releases
which can be seen as curated checkpoints with some level of guarantee of
stability.

For experimental features `privacy-scaling-explorations/halo2` fork adds, please refer to [`experimental-features.md`](./book/src/user/experimental-features.md).

## Minimum Supported Rust Version
Expand Down
35 changes: 35 additions & 0 deletions book/src/user/experimental-features.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,3 +138,38 @@ For some use cases that want to keep configured `ConstraintSystem` unchanged the
## `Evaluator` and `evaluate_h`

They are introduced to improve quotient computation speed and memory usage for circuit with complicated `Expression`.

## Modular design (frontend-backend split)

The halo2 implementation has been split into two separate parts: the frontend
and the backend, following these definitions:
- frontend: allows the user to specify the circuit logic and its satisfying
witness. It must provide a way to translate this logic into a low level
arithmetization format specified in the middleware module.
- backend: the proving system implementation that receives the middleware
circuit arithmetization and performs the following tasks:
- Generate the setup (proving and verifying keys)
- Generate a proof (with witness as input)
- Verify a proof

A note on naming: "halo2" can mean different things:
- halo2 proof system, the protocol
- halo2 proof system implementation, the backend
- halo2 circuit library, the frontend (includes the halo2 circuit API, the
layouter, the selector to fixed column transformation, etc.)
- halo2 full-stack, the proof system full stack (the combination of the backend
and frontend)

Currently the backend implements the "original" halo2 proof system extended
with the features discussed in this document. Nevertheless, the public
interface that the backend uses is generic for plonkish arithmetization. This
allows for alternative frontend implementations as well as alternative plonkish
proof system implementations. The middleware contains the type definitions
used to connect the frontend and backend.

Summary of crates:
- `halo2_frontend`: library used to define circuits and calculate their witness.
- `halo2_backend`: implementation of the halo2 proof system (the protocol).
- `halo2_middleware`: type definitions used to interface the backend with the frontend.
- `halo2_proofs`: legacy API built by re-exporting from the frontend and
backend as well as function wrappers.
8 changes: 8 additions & 0 deletions codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
ignore:
- halo2_proofs/benches
- halo2_proofs/examples
- halo2_proofs/tests
- halo2_frontend/src/dev/graph
- halo2_frontend/src/dev/graph.rs
- halo2_frontend/src/dev/costs.rs
- halo2_frontend/src/dev/cost_model.rs
8 changes: 4 additions & 4 deletions halo2/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ authors = [
"Jack Grigg <[email protected]>",
]
edition = "2021"
rust-version = "1.56.1"
rust-version = "1.73.0"
description = "[BETA] Fast zero-knowledge proof-carrying data implementation with no trusted setup"
license = "MIT OR Apache-2.0"
repository = "https://github.com/zcash/halo2"
documentation = "https://docs.rs/halo2"
repository = "https://github.com/privacy-scaling-explorations/halo2"
documentation = "https://privacy-scaling-explorations.github.io/halo2/"
readme = "../README.md"
categories = ["cryptography"]
keywords = ["halo", "proofs", "recursive", "zkp", "zkSNARKs"]
Expand All @@ -19,7 +19,7 @@ all-features = true
rustdoc-args = ["--cfg", "docsrs", "--html-in-header", "katex-header.html"]

[dependencies]
halo2_proofs = { version = "0.3", path = "../halo2_proofs", default-features = false }
halo2_proofs = { version = "0.4", path = "../halo2_proofs", default-features = false }

[lib]
bench = false
62 changes: 62 additions & 0 deletions halo2_backend/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
[package]
name = "halo2_backend"
version = "0.4.0"
authors = [
"Sean Bowe <[email protected]>",
"Ying Tong Lai <[email protected]>",
"Daira Hopwood <[email protected]>",
"Jack Grigg <[email protected]>",
"Privacy Scaling Explorations team",
]
edition = "2021"
rust-version = "1.73.0"
description = """
Halo2 backend implementation. This package implements the halo2 proof system which includes setup (key generation), proving and verifying.
"""
license = "MIT OR Apache-2.0"
repository = "https://github.com/privacy-scaling-explorations/halo2"
documentation = "https://privacy-scaling-explorations.github.io/halo2/"
readme = "README.md"
categories = ["cryptography"]
keywords = ["halo", "proofs", "zkp", "zkSNARKs"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs", "--html-in-header", "katex-header.html"]

[dependencies]
backtrace = { version = "0.3", optional = true }
ff = "0.13"
group = "0.13"
halo2curves = { version = "0.7.0", default-features = false }
rand_core = { version = "0.6", default-features = false }
tracing = "0.1"
blake2b_simd = "1"
sha3 = "0.9.1"
rand_chacha = "0.3"
serde = { version = "1", optional = true, features = ["derive"] }
serde_derive = { version = "1", optional = true}
rayon = "1.8"
halo2_middleware = { path = "../halo2_middleware" }
num-bigint = "0.4.6"

[dev-dependencies]
assert_matches = "1.5"
criterion = "0.3"
gumdrop = "0.8"
proptest = "1"
rand_core = { version = "0.6", default-features = false, features = ["getrandom"] }
serde_json = "1"

[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dev-dependencies]
getrandom = { version = "0.2", features = ["js"] }

[features]
default = ["batch", "bits"]
bits = ["halo2curves/bits"]
sanity-checks = []
batch = ["rand_core/getrandom"]
derive_serde = ["halo2curves/derive_serde"]

[lib]
bench = false
Loading
Loading