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

Release v0.1.7 #42

Merged
merged 77 commits into from
Jan 18, 2024
Merged

Release v0.1.7 #42

merged 77 commits into from
Jan 18, 2024

Conversation

jonathanpwang
Copy link

@jonathanpwang jonathanpwang commented Nov 3, 2023

Note on commit history: #37 was merged first into this branch at c7d7a8f, then some changes were made to release-0.1.6-rc0, so I rebased release-0.1.6-rc0 onto this branch and force pushed.

Utilities to generate dummy snarks to help with proving key generation of aggregation circuits:

Merge after:

  • v0.1.6 merged to main
  • halo2-lib v0.4.1 merged to main

han0110 and others added 30 commits October 24, 2022 18:39
* feat: move `Accumulator` to `accumulator.rs`

* feat: update due to halo2

* feat: upgrade to use branch `feature/generic-instructions` of `halo2wrong`

* refactor: rollback to `{halo2,halo2_wrong}` without challenge API and cleanup dependencies

* chore: rename statement to instance and auxliary to witness

* chore: use `finalize` instead of `code`

* feat: add `Code::deployment` and `EvmLoader::deployment_code`; add example `evm-verifier-codegen`

* fix: typo

* feat: reduce generated evm verifier size; rename to `evm-verifier` and add another example `evm-verifier-with-accumulator`

* fix: due to `halo2wrong`

* feat: reorganize mods and traits

* fix: allow empty `values` in `sum_*` and move them under `ScalarLoader`

* ci: use `--all-features` for `cargo test`

* fix: use same strategy for aggregation testing

* fix: simplify trait `PlonkVerifier` again

* fix: move system specified transcript under mod `system`

* feat: add `quotient_poly` info in `Protocol`

* feat: implement linearization for circom integration

* feat: re-export loader's dependency for consumer

* refactor: for circom's integration

* tmp: pin `revm` to rev

* fix: remove parentheses

* fix: upgrade for multi-phase halo2

* feat: improve error reporting

* chore: rename crate to snake case

* feat: add `Domain` as an input of `PolynomialCommitmentScheme::read_proof`

* refactor: for further integration

* feat: generalize to suppoer also ipa and add builder fns to `system::halo2::Config`

* feat: add `KzgDecider` for simple evm verifier

* refactor: split `AccumulationScheme` and `AccumulatorEncoding`

* refactor: split `PolynomialCommitmentScheme` and `MultiOpenScheme`

* fix: not need sealed actually

* fix: `chunk_size` should be `LIMBS` when recovering accumulator

* feat: add `Expression::DistributePowers` to avoid stack overflow

* fix: update and pin foundry

* fix: move testing circuits under `system/halo2`

* fix: allow accumulate single accumulator

* feat: remove all patch and make less depending `halo2wrong`
* feat: generalize `Protocol` for further usage

* feat: add `EccInstruction::{fixed_base_msm,variable_base_msm,sum_with_const}`

* chore: move `rand_chacha` as dev dependency
* feat: remove dev-dependency `foundry` and vendor necessary part of it

* refactor: simplify traits and remove unused stuff

* refactor: much less clone

* feat: generalized `AccumulatorEncoding` for `EccInstructions`
* Update `EvmLoader` to generate Yul instead of bytecode

* feat: simplify

* feat: Add missing end_gas_metering impl

Co-authored-by: Han <[email protected]>

Co-authored-by: Han <[email protected]>
* feat: restructure to monorepo and expand the project scope to be generic (s)nark verifier

* feat: reorganize mods and traits for further new features

* refactor: simplify trait bounds

* chore: use hyphen case for crate name (`snark_verifier` -> `snark-verifier`)
Co-authored-by: Chih Cheng Liang <[email protected]>
Co-authored-by: Carlos Pérez <[email protected]>
* feat(sdk): remove duplicate code in
`RangeWithInstanceCircuitBuilder::synthesize`

* feat(sdk): Proof caching when using feature 'halo2-pse'

* chore: sync with halo2-lib

* chore: switch to halo2-lib release-0.3.0 branch
* chore: sync with halo2-lib

* fix: clippy
feat: change yul code into Solidity assembly

Just changes to wrapping yul in solidity assembly block
and `snark-verifier-sdk` re-exports `snark-verifier`. This is to
minimize cargo dependency / version issues until we publish to crates.io.
* feat: make assembly block Solidity memory safe

* chore: add back example solidity code
* chore: add `cargo audit` and update dependencies

disabling zkevm benches due to versioning issues

* chore: autobenches false

* fix: audit-check CI
chore: fix hyperlinks in docs
* chore: import `ruint` separately to not rely on `revm`

* feat: add feature `revm` to toggle `revm` import

Separates `revm` import, which is only used for testing EVM execution,
from `loader_evm` feature, which is used more broadly for generating
proofs to be sent to on-chain verifier.

* chore: add CI to check `--release` compilation with assembly

* fix: import under revm
@jonathanpwang jonathanpwang force-pushed the release-0.1.7-rc branch 2 times, most recently from 9a80ef6 to c7d7a8f Compare November 4, 2023 01:09
* chore: try pragma solidity 0.8.20 with CI

* chore: make `transcript_initial_state` public

So we can read transcript initial state from `VerifyingKey`

* test: edit range_check example to trigger selector compression

* [feat] add `aggregate_snarks` function (#34)

* feat: add `aggregate_snarks` function

- Previously you could only create a new `builder` pre-populated with
  the witnesses for snark aggregation.
- This is a bad design pattern if you want to make a circuit that
  aggregates and also does other stuff.
- This function will use whatever `SinglePhaseCoreManager` and
  `RangeChip` you provide to prove the snark aggregation.

* chore: add comment

* chore: fix comment

* [feat(sdk)] `aggregate_snarks` returns loaded proof witnesses (#36)

* feat(sdk): `aggregate_snarks` returns loaded proof witnesses

* feat: add `TranscriptObject` to track assigned proof transcript

* chore: Bump version to 0.1.7
@jonathanpwang jonathanpwang force-pushed the release-0.1.7-rc branch 2 times, most recently from 273b3a7 to a9310f6 Compare November 11, 2023 03:37
han0110 and others added 8 commits November 13, 2023 01:11
* chore: update `gen_dummy_snark` with circuit-params

* chore: better doc comment

* chore: remove dbg

* feat: refactor into `gen_dummy_snark_from_vk`

This function does not need to know the `ConcreteCircuit` type

* feat: add `KeygenAggregationCircuitIntent` for keygen

Trait to help keygen of aggregation circuits.

* chore: fix clippy

* chore: rename function

* chore: add `AggregationDependencyIntentOwned`

* chore: From impl

* chore: add `gen_dummy_snark_from_protocol`

Also added `NativeKzgAccumulationScheme` trait

* chore: remove redundancy
…ndices` (#49)

fix: `AggregationDependencyIntent` includes `accumulator_indices`
if it is for a universal aggregation circuit
@jonathanpwang jonathanpwang changed the base branch from release-0.1.6-rc0 to main January 18, 2024 19:15
@jonathanpwang jonathanpwang merged commit 8effca5 into main Jan 18, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants