mirror of
https://github.com/arnaucube/sonobe.git
synced 2026-02-02 17:26:44 +01:00
Add solidity verifier of the nova+cyclefold (#87)
* Add solidity verifier of the nova+cyclefold, and add method to prepare the calldata from Decider's proof. Missing conversion of the point coordinates into limbs (ark compatible) * chore: adding comments linking to the contract's signature * chore: update .gitignore * chore: add num-bigint as dev dependency * fix: work with abs path for storing generated sol code * chore: update comment * feat: solidity verifier working on single and multi-input circuits * feat: multi-input folding verification working + fixing encoding of additive identity in calldata * chore: make bigint a dependency * refactor: import utils functions from utils.rs and make them available from anywhere * chore: make utils and evm available publicly * fix: pub mod instead * chore: make relevant method public and add `get_decider_template_for_cyclefold_decider` to exported objects * solidity-verifiers: move tests to their corresponding files * small update: Cyclefold -> CycleFold at the missing places * abstract nova-cyclefold solidity verifiers tests to avoid code duplication, and abstract also the computed setup params (FS & Decider) to compute them only once for all related tests to save test time * small polish after rebase to last main branch changes * rm unneeded Option for KZGData::g1_crs_batch_points * add checks modifying z_0 & z_i to nova_cyclefold_solidity_verifier test * add light-test feature to decider_eth_circuit to use it in solidity-verifier tests without the big circuit * solidity-verifiers: groth16 template: port the fix from https://github.com/iden3/snarkjs/pull/480 & https://github.com/iden3/snarkjs/issues/479 * add print warning msg for light-test in DeciderEthCircuit * solidity-verifiers: update limbs logic to nonnative last version, parametrize limbs params solidity-verifiers: * update solidity limbs logic to last nonnative impl version, and to last u_i.x impl * parametrize limbs params * add light-test feature: replace the '#[cfg(not(test))]' by the 'light-test' feature that by default is not enabled, so when running the github actions we enable the feature 'light-tests', and then we can have a full-test that runs the test without the 'light-tests' flag, but we don't run this big test every time. The choice of a feature is to allow us to control this from other-crates tests (for example for the solidity-verifier separated crate tests, to avoid running the full heavy circuit in the solidity tests) * move solidity constants into template constants for auto compute of params * polishing * revm use only needed feature This is to avoid c depencency for c-kzg which is behind the c-kzg flag and not needed. * nova_cyclefold_decider.sol header * rearrange test helpers position, add error for min number of steps * in solidity-verifiers: 'data'->'vk/verifier key' * add From for NovaCycleFoldVerifierKey from original vks to simplify dev flow, also conditionally template the batchCheck related structs and methods from the KZG10 solidity template --------- Co-authored-by: dmpierre <pdaixmoreux@gmail.com>
This commit is contained in:
@@ -12,19 +12,23 @@ ark-groth16 = "0.4"
|
||||
askama = { version = "0.12.0", features = ["config"], default-features = false }
|
||||
ark-bn254 = "0.4.0"
|
||||
ark-poly-commit = "0.4.0"
|
||||
folding-schemes = { path = "../folding-schemes/" }
|
||||
itertools = "0.12.1"
|
||||
ark-serialize = "0.4.1"
|
||||
revm = "3.5.0"
|
||||
revm = {version="3.5.0", default-features=false, features=["std"]}
|
||||
rust-crypto = "0.2"
|
||||
num-bigint = "0.4.3"
|
||||
folding-schemes = { path = "../folding-schemes/"} # without 'light-test' enabled
|
||||
|
||||
[dev-dependencies]
|
||||
ark-crypto-primitives = "0.4.0"
|
||||
ark-groth16 = "0.4"
|
||||
ark-r1cs-std = "0.4.0"
|
||||
ark-relations = "0.4.0"
|
||||
revm = "3.5.0"
|
||||
tracing = { version = "0.1", default-features = false, features = [ "attributes" ] }
|
||||
tracing-subscriber = { version = "0.2" }
|
||||
ark-bn254 = {version="0.4.0", features=["r1cs"]}
|
||||
ark-grumpkin = {version="0.4.0", features=["r1cs"]}
|
||||
rand = "0.8.5"
|
||||
folding-schemes = { path = "../folding-schemes/", features=["light-test"]}
|
||||
|
||||
[features]
|
||||
default = ["parallel"]
|
||||
|
||||
Reference in New Issue
Block a user