diff --git a/.github/workflows/applicative_recursion_formatting_and_testing.yml b/.github/workflows/applicative_recursion_formatting_and_testing.yml new file mode 100644 index 000000000..59ff9c810 --- /dev/null +++ b/.github/workflows/applicative_recursion_formatting_and_testing.yml @@ -0,0 +1,26 @@ +name: Applicative Recursion - Formatting & Testing + +on: + push: + pull_request: + +jobs: + applicative-recursion-formatting-and-testing: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Setup Scarb + uses: software-mansion/setup-scarb@v1 + + - name: Setup Snfoundry + uses: foundry-rs/setup-snfoundry@v4 + + - name: Format code + run: scarb fmt -c + working-directory: ./applicative_recursion + + - name: Run tests + run: scarb test + working-directory: ./applicative_recursion \ No newline at end of file diff --git a/.github/workflows/tests.yml b/.github/workflows/formatting_and_testing.yml similarity index 71% rename from .github/workflows/tests.yml rename to .github/workflows/formatting_and_testing.yml index edd8633e0..e8678bcc3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/formatting_and_testing.yml @@ -1,4 +1,4 @@ -name: Continuous Integration - tests +name: Formatting & Testing on: push: @@ -13,9 +13,12 @@ jobs: - name: Setup Scarb uses: software-mansion/setup-scarb@v1 + + - name: Setup Snfoundry + uses: foundry-rs/setup-snfoundry@v4 - name: Format code - run: scarb fmt --check + run: scarb fmt -w src -c - name: Run tests run: scarb test diff --git a/.github/workflows/proof_verification_tests.yml b/.github/workflows/proof_verification_tests.yml index 5d69ce436..a9f24390c 100644 --- a/.github/workflows/proof_verification_tests.yml +++ b/.github/workflows/proof_verification_tests.yml @@ -1,35 +1,35 @@ -name: Continuous Integration - proof verification tests +name: Proof Verification Tests on: - push: - branches: - - main - pull_request: - branches: - - main + push: + branches: + - main + pull_request: + branches: + - main jobs: - verify-example-proofs: - runs-on: ubuntu-latest - strategy: - matrix: - memory_verification: ['cairo0', 'cairo1'] - layout: ['recursive', 'recursive_with_poseidon', 'small', 'dex', 'starknet', 'starknet_with_keccak'] - hash_function: ['keccak'] - hasher_bit_length: ['160_lsb'] - stone_version: ['stone5'] - steps: - - name: Checkout repository - uses: actions/checkout@v3 + proof-verification-tests: + runs-on: ubuntu-latest + strategy: + matrix: + memory_verification: ['cairo0', 'cairo1'] + layout: ['recursive', 'recursive_with_poseidon', 'small', 'dex', 'starknet', 'starknet_with_keccak'] + hash_function: ['keccak'] + hasher_bit_length: ['160_lsb'] + stone_version: ['stone5'] + steps: + - name: Checkout repository + uses: actions/checkout@v3 - - name: Setup Scarb - uses: software-mansion/setup-scarb@v1 + - name: Setup Scarb + uses: software-mansion/setup-scarb@v1 - - name: Setup Rust toolchain - uses: actions-rust-lang/setup-rust-toolchain@v1 + - name: Setup Rust toolchain + uses: actions-rust-lang/setup-rust-toolchain@v1 - - name: Build project - run: scarb build --no-default-features --features monolith,${{ matrix.layout }},${{ matrix.hash_function }} + - name: Build project + run: scarb build --no-default-features --features monolith,${{ matrix.layout }},${{ matrix.hash_function }} - - name: Run verification - run: cargo run --release --bin runner -- --program target/dev/integrity.sierra.json --memory-verification ${{ matrix.memory_verification == 'cairo0' && 'strict' || 'cairo1' }} --stone-version ${{ matrix.stone_version }} --hasher-bit-length ${{ matrix.hasher_bit_length }} < examples/proofs/${{ matrix.layout }}/${{ matrix.memory_verification }}_${{ matrix.stone_version }}_${{ matrix.hash_function }}_${{ matrix.hasher_bit_length }}_example_proof.json + - name: Run verification + run: cargo run --release --bin runner -- --program target/dev/integrity.sierra.json --memory-verification ${{ matrix.memory_verification == 'cairo0' && 'strict' || 'cairo1' }} --stone-version ${{ matrix.stone_version }} --hasher-bit-length ${{ matrix.hasher_bit_length }} < examples/proofs/${{ matrix.layout }}/${{ matrix.memory_verification }}_${{ matrix.stone_version }}_${{ matrix.hash_function }}_${{ matrix.hasher_bit_length }}_example_proof.json diff --git a/.tool-versions b/.tool-versions index 95dd54d28..bf4bc117d 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ -scarb 2.8.4 -starknet-foundry 0.32.0 +scarb 2.11.4 +starknet-foundry 0.41.0 \ No newline at end of file diff --git a/Scarb.toml b/Scarb.toml index b9c9605ce..e50fe4403 100644 --- a/Scarb.toml +++ b/Scarb.toml @@ -9,10 +9,10 @@ license = "Apache-2.0" keywords = ["STARK proof", "verifier", "cairo_verifier"] [dependencies] -starknet = "2.8.4" +starknet = "2.11.4" [dev-dependencies] -cairo_test = "2.8.4" +snforge_std = "0.41.0" [[target.starknet-contract]] casm = true @@ -22,6 +22,9 @@ casm = true sierra = true casm = false +[scripts] +test = "snforge test" + [features] _verifier_logic = [] diff --git a/applicative_recursion/.gitignore b/applicative_recursion/.gitignore new file mode 100644 index 000000000..eb5a316cb --- /dev/null +++ b/applicative_recursion/.gitignore @@ -0,0 +1 @@ +target diff --git a/applicative_recursion/Scarb.toml b/applicative_recursion/Scarb.toml new file mode 100644 index 000000000..e094efd08 --- /dev/null +++ b/applicative_recursion/Scarb.toml @@ -0,0 +1,26 @@ +[package] +name = "applicative_recursion" +version = "1.0.0" +edition = "2024_07" + +# See more keys and their definitions at https://docs.swmansion.com/scarb/docs/reference/manifest.html + +openzeppelin_merkle_tree = "2.0.0-alpha.0" + +[dependencies] +starknet = "2.9.4" +openzeppelin = { git = "https://github.com/OpenZeppelin/cairo-contracts.git", tag = "v2.0.0-alpha.0" } +integrity = { path = "../" } + +[dev-dependencies] +cairo_test = "2.11.4" +snforge_std = "0.41.0" + +[scripts] +test = "snforge test" + +[tool.scarb] +allow-prebuilt-plugins = ["snforge_std"] + +[[target.starknet-contract]] +build-external-contracts = ["integrity::contracts::mocked_fact_registry::MockedFactRegistry"] \ No newline at end of file diff --git a/applicative_recursion/deploy.toml b/applicative_recursion/deploy.toml new file mode 100644 index 000000000..d29db36ae --- /dev/null +++ b/applicative_recursion/deploy.toml @@ -0,0 +1,15 @@ +[[call]] +call_type = "deploy" +class_hash = "0x0553da7f80b8672f3b6aebc8b23eba313c036a2aa2809839270ee59b8cb16f6a" +inputs = [ + "0x2697ab2f3631993e735ca0e5a8b526b42210f87a3ab0d84276e05ea469f942a", # bootloader program hash + "0x675d09dc6a5a1a2317bee3abcc05074881553e0b88c05c646f384b924aa6445", # aggregator program hash + "0x4ce7851f00b6c3289674841fd7a1b96b6fd41ed1edc248faccd672c26371b8c", # integrity address + "0x7265637572736976655f776974685f706f736569646f6e", # layout + "0x6b656363616b5f3136305f6c7362", # hasher + "0x73746f6e6536", # stone version + "0x72656c61786564", # memory verification + "0x60" # security bits +] +id = "deploy" +unique = false \ No newline at end of file diff --git a/applicative_recursion/snfoundry.toml b/applicative_recursion/snfoundry.toml new file mode 100644 index 000000000..f76e4654d --- /dev/null +++ b/applicative_recursion/snfoundry.toml @@ -0,0 +1,4 @@ +[sncast.default] +accounts-file = "~/.starknet_accounts/starknet_open_zeppelin_accounts.json" +account = "my-sepolia-account" +url = "https://free-rpc.nethermind.io/sepolia-juno/v0_8" \ No newline at end of file diff --git a/applicative_recursion/src/fact_registry.cairo b/applicative_recursion/src/fact_registry.cairo new file mode 100644 index 000000000..cf0dedd3b --- /dev/null +++ b/applicative_recursion/src/fact_registry.cairo @@ -0,0 +1,132 @@ +#[starknet::interface] +pub trait IApplicativeRecursionFactRegistry { + fn decommit_leaf(ref self: TContractState, leaf: felt252, proof: Span); + fn decommit_tree(ref self: TContractState, leaves: Span); + + fn is_valid(self: @TContractState, fact_hash: felt252) -> bool; +} + +#[starknet::contract] +pub mod ApplicativeRecursionFactRegistry { + use applicative_recursion::merkle_tree::{get_root_hash, hash_leaf, hash_leaves}; + use integrity::{ + Integrity, IntegrityWithConfig, SHARP_BOOTLOADER_PROGRAM_HASH, VerifierConfiguration, + calculate_bootloaded_fact_hash, get_verifier_config_hash, + }; + use openzeppelin::merkle_tree::hashes::PoseidonCHasher; + use openzeppelin::merkle_tree::merkle_proof::process_proof; + use starknet::ContractAddress; + use starknet::storage::{ + Map, StoragePathEntry, StoragePointerReadAccess, StoragePointerWriteAccess, + }; + use super::IApplicativeRecursionFactRegistry; + + #[storage] + struct Storage { + bootloader_program_hash: felt252, + aggregator_program_hash: felt252, + integrity_address: ContractAddress, + integrity_config_hash: felt252, + integrity_security_bits: u32, + fact_hashes: Map, + } + + #[constructor] + fn constructor( + ref self: ContractState, + bootloader_program_hash: felt252, + aggregator_program_hash: felt252, + integrity_address: ContractAddress, + integrity_config: VerifierConfiguration, + integrity_security_bits: u32, + ) { + self.bootloader_program_hash.write(bootloader_program_hash); + self.aggregator_program_hash.write(aggregator_program_hash); + self.integrity_address.write(integrity_address); + self.integrity_config_hash.write(get_verifier_config_hash(integrity_config)); + self.integrity_security_bits.write(integrity_security_bits); + } + + #[event] + #[derive(Drop, starknet::Event)] + enum Event { + FactRegistered: FactRegistered, + } + + #[derive(Drop, starknet::Event)] + struct FactRegistered { + #[key] + fact_hash: felt252, + #[key] + root_hash: felt252, + #[key] + integrity_fact_hash: felt252, + } + + #[generate_trait] + impl ApplicativeRecursionFactRegistryInternal of IApplicativeRecursionFactRegistryInternal { + fn get_fact_hash(self: @ContractState, root_hash: felt252) -> felt252 { + let output = [self.aggregator_program_hash.read(), root_hash, 0x0].span(); + let program_hash = self.bootloader_program_hash.read(); + + calculate_bootloaded_fact_hash(SHARP_BOOTLOADER_PROGRAM_HASH, program_hash, output) + } + + fn is_fact_hash_valid(self: @ContractState, fact_hash: felt252) -> bool { + let integrity = Integrity::from_address(self.integrity_address.read()); + + let config_hash = self.integrity_config_hash.read(); + let security_bits = self.integrity_security_bits.read(); + + integrity.with_hashed_config(config_hash, security_bits).is_fact_hash_valid(fact_hash) + } + } + + #[abi(embed_v0)] + impl ApplicativeRecursionFactRegistryImpl of IApplicativeRecursionFactRegistry { + fn decommit_leaf(ref self: ContractState, leaf: felt252, proof: Span) { + let hashed_leaf = hash_leaf(leaf); + let root_hash = process_proof::(proof, hashed_leaf); + + let fact_hash = self.get_fact_hash(root_hash); + let is_valid = self.is_fact_hash_valid(fact_hash); + assert(is_valid, 'Fact hash is not registered'); + + self.fact_hashes.entry(leaf).write(true); + self + .emit( + Event::FactRegistered( + FactRegistered { + fact_hash: leaf, root_hash, integrity_fact_hash: fact_hash, + }, + ), + ); + } + + fn decommit_tree(ref self: ContractState, leaves: Span) { + let hashed_leaves = hash_leaves(leaves); + let root_hash = get_root_hash(hashed_leaves); + + let fact_hash = self.get_fact_hash(root_hash); + let is_valid = self.is_fact_hash_valid(fact_hash); + assert(is_valid, 'Fact hash is not registered'); + + for leaf in leaves { + self.fact_hashes.entry(*leaf).write(true); + + self + .emit( + Event::FactRegistered( + FactRegistered { + fact_hash: *leaf, root_hash, integrity_fact_hash: fact_hash, + }, + ), + ); + } + } + + fn is_valid(self: @ContractState, fact_hash: felt252) -> bool { + self.fact_hashes.entry(fact_hash).read() + } + } +} diff --git a/applicative_recursion/src/lib.cairo b/applicative_recursion/src/lib.cairo new file mode 100644 index 000000000..060f4a8db --- /dev/null +++ b/applicative_recursion/src/lib.cairo @@ -0,0 +1,2 @@ +pub mod fact_registry; +pub mod merkle_tree; diff --git a/applicative_recursion/src/merkle_tree.cairo b/applicative_recursion/src/merkle_tree.cairo new file mode 100644 index 000000000..33bd0cdea --- /dev/null +++ b/applicative_recursion/src/merkle_tree.cairo @@ -0,0 +1,64 @@ +use core::hash::HashStateTrait; +use core::poseidon::PoseidonTrait; +use openzeppelin::merkle_tree::hashes::PoseidonCHasher; + +pub fn get_root_hash(leaves: Span) -> felt252 { + let mut nodes = leaves; + let mut next_nodes = array![]; + loop { + loop { + let x = nodes.pop_front(); + if x.is_none() { + break; + } + let x = x.unwrap(); + + if let Some(y) = nodes.pop_front() { + let z = PoseidonCHasher::commutative_hash(*x, *y); + next_nodes.append(z); + } else { + next_nodes.append(*x); + }; + } + nodes = next_nodes.span(); + next_nodes = array![]; + + if nodes.len() == 1 { + break *nodes.pop_front().unwrap(); + } + } +} + +#[cfg(test)] +mod tests { + use super::get_root_hash; + + #[test] + fn test_root_hash() { + let leaf_1 = 1073156302979560792221579174510302617030152323580472146146609514826389505953; + let leaf_2 = 3480373627587233544730874138440391736870787221204167186361820851772543726392; + let leaf_3 = 3331964270381854350382580527122817180649953314104348840989537158202691620591; + let leaf_4 = 663603216509782636457470027552452500581997608842766641099217590049269815062; + let leaf_5 = 3561455703173699215459883981864709246532730017982956264444923577051119991603; + + let expected_root = 0x1ffc48eb9b02993240241d49908bc3d3ad0e21b7a9ab2b2b6b2efa1c1fd93ef; + + let leaves = [leaf_1, leaf_2, leaf_3, leaf_4, leaf_5]; + let root = get_root_hash(leaves.span()); + + assert(root == expected_root, 'root hash mismatch'); + } +} + +pub fn hash_leaf(leaf: felt252) -> felt252 { + PoseidonTrait::new().update(leaf).finalize() +} + +pub fn hash_leaves(leaves: Span) -> Span { + let mut result = array![]; + for leaf in leaves { + let hash = hash_leaf(*leaf); + result.append(hash); + } + result.span() +} diff --git a/applicative_recursion/tests/commutative_hash_examples.cairo b/applicative_recursion/tests/commutative_hash_examples.cairo new file mode 100644 index 000000000..462451df8 --- /dev/null +++ b/applicative_recursion/tests/commutative_hash_examples.cairo @@ -0,0 +1,85 @@ +use openzeppelin::merkle_tree::hashes::PoseidonCHasher; +use openzeppelin::merkle_tree::merkle_proof::verify_poseidon; +#[test] +fn test_commutative_hash_1() { + let a = 456; + let b = 123; + + let hash_1 = PoseidonCHasher::commutative_hash(a, b); + let hash_2 = PoseidonCHasher::commutative_hash(b, a); + + assert(hash_1 == hash_2, 'hash is commutative'); + + let expected_hash = + 3078496434882079937724388459505675842932410179539421134160956316828903534704; + + assert(hash_1 == expected_hash, 'hash is correct'); +} + +#[test] +fn test_commutative_hash_2() { + let a = 333; + let b = 777; + + let hash_1 = PoseidonCHasher::commutative_hash(a, b); + let hash_2 = PoseidonCHasher::commutative_hash(b, a); + + assert(hash_1 == hash_2, 'hash is commutative'); + + let expected_hash = + 1017701663674692302284486978715800544092472980770764352782885215049839179458; + + assert(hash_1 == expected_hash, 'hash is correct'); +} + +#[test] +fn test_merkle_root_hash_5_leaves() { + let leaf_1 = 1073156302979560792221579174510302617030152323580472146146609514826389505953; + let leaf_2 = 3480373627587233544730874138440391736870787221204167186361820851772543726392; + let leaf_3 = 3331964270381854350382580527122817180649953314104348840989537158202691620591; + let leaf_4 = 663603216509782636457470027552452500581997608842766641099217590049269815062; + let leaf_5 = 3561455703173699215459883981864709246532730017982956264444923577051119991603; + + let n_12 = PoseidonCHasher::commutative_hash(leaf_1, leaf_2); + let n_34 = PoseidonCHasher::commutative_hash(leaf_3, leaf_4); + let n_1234 = PoseidonCHasher::commutative_hash(n_12, n_34); + let root = PoseidonCHasher::commutative_hash(n_1234, leaf_5); + + let expected_root = 0x1ffc48eb9b02993240241d49908bc3d3ad0e21b7a9ab2b2b6b2efa1c1fd93ef; + + assert(root == expected_root, 'root hash mismatch'); +} + +#[test] +fn test_merkle_root_hash_3_leaves() { + let leaf_1 = 1073156302979560792221579174510302617030152323580472146146609514826389505953; + let leaf_2 = 3480373627587233544730874138440391736870787221204167186361820851772543726392; + let leaf_3 = 3331964270381854350382580527122817180649953314104348840989537158202691620591; + + let n_12 = PoseidonCHasher::commutative_hash(leaf_1, leaf_2); + let root = PoseidonCHasher::commutative_hash(n_12, leaf_3); + + let expected_root = 0x73157cc972c93294c21e00de0ff54bcfd34129c99466b842090949fe650b992; + + assert(root == expected_root, 'root hash mismatch'); +} + +#[test] +fn test_merkle_proof_5_leaves() { + let leaf_1 = 1073156302979560792221579174510302617030152323580472146146609514826389505953; + let leaf_2 = 3480373627587233544730874138440391736870787221204167186361820851772543726392; + let leaf_3 = 3331964270381854350382580527122817180649953314104348840989537158202691620591; + let leaf_4 = 663603216509782636457470027552452500581997608842766641099217590049269815062; + let leaf_5 = 3561455703173699215459883981864709246532730017982956264444923577051119991603; + + let n_12 = PoseidonCHasher::commutative_hash(leaf_1, leaf_2); + let n_34 = PoseidonCHasher::commutative_hash(leaf_3, leaf_4); + let n_1234 = PoseidonCHasher::commutative_hash(n_12, n_34); + let root = PoseidonCHasher::commutative_hash(n_1234, leaf_5); + + assert(verify_poseidon([leaf_2, n_34, leaf_5].span(), root, leaf_1), 'proof is incorrect'); + assert(verify_poseidon([leaf_1, n_34, leaf_5].span(), root, leaf_2), 'proof is incorrect'); + assert(verify_poseidon([leaf_4, n_12, leaf_5].span(), root, leaf_3), 'proof is incorrect'); + assert(verify_poseidon([leaf_3, n_12, leaf_5].span(), root, leaf_4), 'proof is incorrect'); + assert(verify_poseidon([n_1234].span(), root, leaf_5), 'proof is incorrect'); +} diff --git a/applicative_recursion/tests/fact_registry.cairo b/applicative_recursion/tests/fact_registry.cairo new file mode 100644 index 000000000..cf682f6bd --- /dev/null +++ b/applicative_recursion/tests/fact_registry.cairo @@ -0,0 +1,154 @@ +use applicative_recursion::fact_registry::{ + IApplicativeRecursionFactRegistryDispatcher, IApplicativeRecursionFactRegistryDispatcherTrait, +}; +use applicative_recursion::merkle_tree::hash_leaf; +use integrity::VerifierConfiguration; +use integrity::contracts::fact_registry_interface::{ + IFactRegistryDispatcher, IFactRegistryDispatcherTrait, +}; +use integrity::contracts::mocked_fact_registry::{ + IFactRegistryExternalDispatcher, IFactRegistryExternalDispatcherTrait, +}; +use openzeppelin::merkle_tree::hashes::PoseidonCHasher; +use snforge_std::{ContractClassTrait, DeclareResultTrait, declare}; +use starknet::ContractAddress; + + +fn deploy_fact_registry() -> ( + IApplicativeRecursionFactRegistryDispatcher, + ContractAddress, + IFactRegistryDispatcher, + IFactRegistryExternalDispatcher, +) { + let mocked_integrity = declare("MockedFactRegistry").unwrap().contract_class(); + let (mocked_integrity_address, _) = mocked_integrity.deploy(@array![]).unwrap(); + let integrity_dispatcher = IFactRegistryDispatcher { + contract_address: mocked_integrity_address, + }; + let integrity_dispatcher_mocking = IFactRegistryExternalDispatcher { + contract_address: mocked_integrity_address, + }; + + let ar_fact_registry = declare("ApplicativeRecursionFactRegistry").unwrap().contract_class(); + let ar_fact_registry_constructor_calldata = array![ + 0x2697ab2f3631993e735ca0e5a8b526b42210f87a3ab0d84276e05ea469f942a, // bootloader program hash + 0x675d09dc6a5a1a2317bee3abcc05074881553e0b88c05c646f384b924aa6445, // aggregator program hash + mocked_integrity_address.into(), // integrity address + 'recursive_with_poseidon', // layout + 'keccak_160_lsb', // hasher + 'stone6', // stone version + 'relaxed', // memory verification + 96 // security bits + ]; + let (ar_fact_registry_address, _) = ar_fact_registry + .deploy(@ar_fact_registry_constructor_calldata) + .unwrap(); + let ar_fact_registry_dispatcher = IApplicativeRecursionFactRegistryDispatcher { + contract_address: ar_fact_registry_address, + }; + + ( + ar_fact_registry_dispatcher, + ar_fact_registry_address, + integrity_dispatcher, + integrity_dispatcher_mocking, + ) +} + +#[test] +fn test_decommit_tree() { + let (ar_fact_registry_dispatcher, _, integrity_dispatcher, integrity_dispatcher_mocking) = + deploy_fact_registry(); + + let fact_hash = 0x4843d7fd82b4d3aff0c7da60f6cf4e8cf0f102d44c8c23435359b49df422ecd; + assert( + integrity_dispatcher.get_all_verifications_for_fact_hash(fact_hash).len() == 0, + 'Fact is registered too early', + ); + integrity_dispatcher_mocking + .register_fact( + VerifierConfiguration { + layout: 'recursive_with_poseidon', + hasher: 'keccak_160_lsb', + stone_version: 'stone6', + memory_verification: 'relaxed', + }, + fact_hash, + 96, + ); + assert( + integrity_dispatcher.get_all_verifications_for_fact_hash(fact_hash).len() == 1, + 'Fact is not registered', + ); + + let leaves = array![ + 2192746374848038618461766601634824445663766197209859773933337403701948944618, + 432931858001243491244061814990859609195887068876937365828494252357627396127, + 1933513332077687604481787646243020440150686203213384098490085517703747198465, + ]; + + for leaf in leaves.span() { + assert(!ar_fact_registry_dispatcher.is_valid(*leaf), 'AR Fact is registered too early'); + } + ar_fact_registry_dispatcher.decommit_tree(leaves.span()); + for leaf in leaves.span() { + assert(ar_fact_registry_dispatcher.is_valid(*leaf), 'AR Fact is not registered'); + } +} + +#[test] +fn test_decommit_leaf() { + let (ar_fact_registry_dispatcher, _, integrity_dispatcher, integrity_dispatcher_mocking) = + deploy_fact_registry(); + + let fact_hash = 0x4843d7fd82b4d3aff0c7da60f6cf4e8cf0f102d44c8c23435359b49df422ecd; + assert( + integrity_dispatcher.get_all_verifications_for_fact_hash(fact_hash).len() == 0, + 'Fact is registered too early', + ); + integrity_dispatcher_mocking + .register_fact( + VerifierConfiguration { + layout: 'recursive_with_poseidon', + hasher: 'keccak_160_lsb', + stone_version: 'stone6', + memory_verification: 'relaxed', + }, + fact_hash, + 96, + ); + assert( + integrity_dispatcher.get_all_verifications_for_fact_hash(fact_hash).len() == 1, + 'Fact is not registered', + ); + + let leaf_1 = 2192746374848038618461766601634824445663766197209859773933337403701948944618; + let leaf_2 = 432931858001243491244061814990859609195887068876937365828494252357627396127; + let leaf_3 = 1933513332077687604481787646243020440150686203213384098490085517703747198465; + let hash_1 = hash_leaf(leaf_1); + let hash_2 = hash_leaf(leaf_2); + let hash_3 = hash_leaf(leaf_3); + let hash_12 = PoseidonCHasher::commutative_hash(hash_1, hash_2); + + assert(!ar_fact_registry_dispatcher.is_valid(leaf_1), 'AR Fact 1 1'); + assert(!ar_fact_registry_dispatcher.is_valid(leaf_2), 'AR Fact 1 2'); + assert(!ar_fact_registry_dispatcher.is_valid(leaf_3), 'AR Fact 1 3'); + + ar_fact_registry_dispatcher.decommit_leaf(leaf_1, [hash_2, hash_3].span()); + + assert(ar_fact_registry_dispatcher.is_valid(leaf_1), 'AR Fact 2 1'); + assert(!ar_fact_registry_dispatcher.is_valid(leaf_2), 'AR Fact 2 2'); + assert(!ar_fact_registry_dispatcher.is_valid(leaf_3), 'AR Fact 2 3'); + + ar_fact_registry_dispatcher.decommit_leaf(leaf_3, [hash_12].span()); + + assert(ar_fact_registry_dispatcher.is_valid(leaf_1), 'AR Fact 3 1'); + assert(!ar_fact_registry_dispatcher.is_valid(leaf_2), 'AR Fact 3 2'); + assert(ar_fact_registry_dispatcher.is_valid(leaf_3), 'AR Fact 3 3'); + + ar_fact_registry_dispatcher.decommit_leaf(leaf_2, [hash_1, hash_3].span()); + + assert(ar_fact_registry_dispatcher.is_valid(leaf_1), 'AR Fact 4 1'); + assert(ar_fact_registry_dispatcher.is_valid(leaf_2), 'AR Fact 4 2'); + assert(ar_fact_registry_dispatcher.is_valid(leaf_3), 'AR Fact 4 3'); +} diff --git a/src/air/layouts/dex.cairo b/src/air/layouts/dex.cairo index 6010b41d9..df4f8c440 100644 --- a/src/air/layouts/dex.cairo +++ b/src/air/layouts/dex.cairo @@ -1,35 +1,31 @@ mod autogenerated; mod constants; +#[cfg(feature: 'split')] +mod contract; mod global_values; mod public_input; mod traces; -#[cfg(feature: 'split')] -mod contract; - -use integrity::{ - air::{ - constants::{SHIFT_POINT_X, SHIFT_POINT_Y, StarkCurve}, - layouts::dex::{ - autogenerated::eval_composition_polynomial_inner, - global_values::{GlobalValues, InteractionElements, EcPoint, EcdsaSigConfig}, - public_input::DexPublicInputImpl, - constants::{ - PUBLIC_MEMORY_STEP, PEDERSEN_BUILTIN_RATIO, ECDSA_BUILTIN_RATIO, - ECDSA_BUILTIN_REPETITIONS, PEDERSEN_BUILTIN_REPETITIONS, segments, - }, - }, - air::{AIRComposition, AIROods}, diluted::get_diluted_product, - periodic_columns::{eval_pedersen_x, eval_pedersen_y, eval_ecdsa_x, eval_ecdsa_y}, - public_input::{PublicInput, get_public_memory_product_ratio} - }, - common::{math::{Felt252Div, Felt252PartialOrd, pow}, asserts::assert_range_u128} -}; -use starknet::ContractAddress; - +use integrity::air::air::{AIRComposition, AIROods}; +use integrity::air::constants::{SHIFT_POINT_X, SHIFT_POINT_Y, StarkCurve}; +use integrity::air::diluted::get_diluted_product; +use integrity::air::layouts::dex::autogenerated::eval_composition_polynomial_inner; #[cfg(feature: 'monolith')] -use integrity::air::layouts::dex::autogenerated::{ - eval_oods_polynomial_inner as eval_oods_polynomial_inner_, +use integrity::air::layouts::dex::autogenerated::eval_oods_polynomial_inner as eval_oods_polynomial_inner_; +use integrity::air::layouts::dex::constants::{ + ECDSA_BUILTIN_RATIO, ECDSA_BUILTIN_REPETITIONS, PEDERSEN_BUILTIN_RATIO, + PEDERSEN_BUILTIN_REPETITIONS, PUBLIC_MEMORY_STEP, segments, +}; +use integrity::air::layouts::dex::global_values::{ + EcPoint, EcdsaSigConfig, GlobalValues, InteractionElements, }; +use integrity::air::layouts::dex::public_input::DexPublicInputImpl; +use integrity::air::periodic_columns::{ + eval_ecdsa_x, eval_ecdsa_y, eval_pedersen_x, eval_pedersen_y, +}; +use integrity::air::public_input::{PublicInput, get_public_memory_product_ratio}; +use integrity::common::asserts::assert_range_u128; +use integrity::common::math::{Felt252Div, Felt252PartialOrd, pow}; +use starknet::ContractAddress; #[cfg(feature: 'monolith')] fn eval_oods_polynomial_inner( @@ -45,7 +41,6 @@ fn eval_oods_polynomial_inner( column_values, oods_values, constraint_coefficients, point, oods_point, trace_generator, ) } - #[cfg(feature: 'split')] use integrity::air::layouts::dex::contract::{ ILayoutOodsContractDispatcher, ILayoutOodsContractDispatcherTrait, @@ -85,7 +80,7 @@ impl DexAIRCompositionImpl of AIRComposition { let public_memory_column_size = trace_domain_size / PUBLIC_MEMORY_STEP; assert_range_u128(public_memory_column_size); let public_memory_prod_ratio = get_public_memory_product_ratio( - public_input, memory_z, memory_alpha, public_memory_column_size + public_input, memory_z, memory_alpha, public_memory_column_size, ); // Periodic columns diff --git a/src/air/layouts/dex/autogenerated.cairo b/src/air/layouts/dex/autogenerated.cairo index 5ceb70318..67fe37e2f 100644 --- a/src/air/layouts/dex/autogenerated.cairo +++ b/src/air/layouts/dex/autogenerated.cairo @@ -1,10 +1,8 @@ -use integrity::{ - air::layouts::dex::{ - global_values::GlobalValues, - constants::{CONSTRAINT_DEGREE, NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND, MASK_SIZE}, - }, - common::math::{Felt252Div, pow}, +use integrity::air::layouts::dex::constants::{ + CONSTRAINT_DEGREE, MASK_SIZE, NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND, }; +use integrity::air::layouts::dex::global_values::GlobalValues; +use integrity::common::math::{Felt252Div, pow}; fn eval_composition_polynomial_inner( mut mask_values: Span, @@ -264,7 +262,7 @@ fn eval_composition_polynomial_inner( column21_inter1_row0, column21_inter1_row1, column21_inter1_row2, - column21_inter1_row5 + column21_inter1_row5, ] = (*mask_values .multi_pop_front::<200>() @@ -1462,7 +1460,7 @@ fn eval_oods_polynomial_inner( column18, column19, column20, - column21 + column21, ] = (*column_values .multi_pop_front::<22>() diff --git a/src/air/layouts/dex/contract.cairo b/src/air/layouts/dex/contract.cairo index 08e0a4df0..7a14308e7 100644 --- a/src/air/layouts/dex/contract.cairo +++ b/src/air/layouts/dex/contract.cairo @@ -15,10 +15,9 @@ trait ILayoutOodsContract { #[starknet::contract] mod LayoutOodsContract { + use integrity::air::layouts::dex::autogenerated::eval_oods_polynomial_inner; + use integrity::air::layouts::dex::global_values::GlobalValues; use super::ILayoutOodsContract; - use integrity::air::layouts::dex::{ - global_values::GlobalValues, autogenerated::eval_oods_polynomial_inner, - }; #[storage] struct Storage {} diff --git a/src/air/layouts/dex/public_input.cairo b/src/air/layouts/dex/public_input.cairo index 3ba6f9021..407c388b9 100644 --- a/src/air/layouts/dex/public_input.cairo +++ b/src/air/layouts/dex/public_input.cairo @@ -1,23 +1,17 @@ -use integrity::{ - common::{ - math::{pow, Felt252PartialOrd, Felt252Div}, - asserts::{assert_range_u128_le, assert_range_u128}, - }, - air::{ - public_memory::{Page, PageTrait}, - constants::{MAX_ADDRESS, INITIAL_PC, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}, - layouts::dex::constants::{ - segments, get_builtins, CPU_COMPONENT_HEIGHT, CPU_COMPONENT_STEP, LAYOUT_CODE, - PEDERSEN_BUILTIN_ROW_RATIO, RANGE_CHECK_BUILTIN_ROW_RATIO, ECDSA_BUILTIN_ROW_RATIO - }, - public_input::{ - PublicInput, PublicInputTrait, verify_cairo1_public_input, verify_relaxed_public_input - } - }, - domains::StarkDomains +use core::hash::{Hash, HashStateExTrait, HashStateTrait}; +use core::pedersen::PedersenTrait; +use integrity::air::constants::{INITIAL_PC, MAX_ADDRESS, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}; +use integrity::air::layouts::dex::constants::{ + CPU_COMPONENT_HEIGHT, CPU_COMPONENT_STEP, ECDSA_BUILTIN_ROW_RATIO, LAYOUT_CODE, + PEDERSEN_BUILTIN_ROW_RATIO, RANGE_CHECK_BUILTIN_ROW_RATIO, get_builtins, segments, }; - -use core::{pedersen::PedersenTrait, hash::{HashStateTrait, HashStateExTrait, Hash}}; +use integrity::air::public_input::{ + PublicInput, PublicInputTrait, verify_cairo1_public_input, verify_relaxed_public_input, +}; +use integrity::air::public_memory::{Page, PageTrait}; +use integrity::common::asserts::{assert_range_u128, assert_range_u128_le}; +use integrity::common::math::{Felt252Div, Felt252PartialOrd, pow}; +use integrity::domains::StarkDomains; use poseidon::poseidon_hash_span; impl DexPublicInputImpl of PublicInputTrait { @@ -51,11 +45,11 @@ impl DexPublicInputImpl of PublicInputTrait { let program_len = program_end_pc - initial_pc; let program = memory .extract_range( - initial_pc.try_into().unwrap(), program_len.try_into().unwrap(), ref memory_index + initial_pc.try_into().unwrap(), program_len.try_into().unwrap(), ref memory_index, ); assert( - *program[0] == 0x40780017fff7fff, 'Invalid program' + *program[0] == 0x40780017fff7fff, 'Invalid program', ); // Instruction: ap += N_BUILTINS. assert(*program[1] == builtins.len().into(), 'Invalid program'); assert(*program[2] == 0x1104800180018000, 'Invalid program'); // Instruction: call rel ?. @@ -89,21 +83,21 @@ impl DexPublicInputImpl of PublicInputTrait { stop_addresses.append(*public_segments.at(2 + i).stop_ptr); i += 1; - }; + } memory.verify_stack(initial_ap, begin_addresses.span(), builtins_len, ref memory_index); memory .verify_stack( final_ap - builtins_len.into(), stop_addresses.span(), builtins_len, - ref memory_index + ref memory_index, ); // 3. Output segment let output_len = output_stop - output_start; let output = memory .extract_range( - output_start.try_into().unwrap(), output_len.try_into().unwrap(), ref memory_index + output_start.try_into().unwrap(), output_len.try_into().unwrap(), ref memory_index, ); let output_hash = poseidon_hash_span(output); @@ -126,7 +120,7 @@ impl DexPublicInputImpl of PublicInputTrait { let n_steps = pow(2, *self.log_n_steps); let trace_length = *stark_domains.trace_domain_size; assert( - n_steps * CPU_COMPONENT_HEIGHT * CPU_COMPONENT_STEP == trace_length, 'Wrong trace size' + n_steps * CPU_COMPONENT_HEIGHT * CPU_COMPONENT_STEP == trace_length, 'Wrong trace size', ); assert(0 <= *self.range_check_min, 'wrong rc_min'); diff --git a/src/air/layouts/dex/traces.cairo b/src/air/layouts/dex/traces.cairo index 1c85cc09f..e8d3cb4c5 100644 --- a/src/air/layouts/dex/traces.cairo +++ b/src/air/layouts/dex/traces.cairo @@ -1,15 +1,13 @@ -use integrity::{ - air::layouts::dex::{ - constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}, global_values::InteractionElements, - }, - channel::channel::{Channel, ChannelTrait}, - table_commitment::table_commitment::{ - TableCommitment, TableDecommitment, TableCommitmentWitness, table_commit, table_decommit, - TableCommitmentConfig - }, - vector_commitment::vector_commitment::VectorCommitmentConfigTrait, - common::asserts::assert_in_range, settings::VerifierSettings, +use integrity::air::layouts::dex::constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}; +use integrity::air::layouts::dex::global_values::InteractionElements; +use integrity::channel::channel::{Channel, ChannelTrait}; +use integrity::common::asserts::assert_in_range; +use integrity::settings::VerifierSettings; +use integrity::table_commitment::table_commitment::{ + TableCommitment, TableCommitmentConfig, TableCommitmentWitness, TableDecommitment, table_commit, + table_decommit, }; +use integrity::vector_commitment::vector_commitment::VectorCommitmentConfigTrait; // A protocol component (see stark.cairo for details about protocol components) for the traces // of the CPU AIR. @@ -89,11 +87,11 @@ impl TracesConfigImpl of TracesConfigTrait { // Reads the traces commitment from the channel. // Returns the commitment, along with GlobalValue required to evaluate the constraint polynomial. fn traces_commit( - ref channel: Channel, unsent_commitment: TracesUnsentCommitment, config: TracesConfig + ref channel: Channel, unsent_commitment: TracesUnsentCommitment, config: TracesConfig, ) -> TracesCommitment { // Read original commitment. let original_commitment = table_commit( - ref channel, unsent_commitment.original, config.original + ref channel, unsent_commitment.original, config.original, ); // Generate interaction elements for the first interaction. let interaction_elements = InteractionElements { @@ -103,7 +101,7 @@ fn traces_commit( }; // Read interaction commitment. let interaction_commitment = table_commit( - ref channel, unsent_commitment.interaction, config.interaction + ref channel, unsent_commitment.interaction, config.interaction, ); TracesCommitment { @@ -124,6 +122,6 @@ fn traces_decommit( ) { table_decommit(commitment.original, queries, decommitment.original, witness.original, settings); table_decommit( - commitment.interaction, queries, decommitment.interaction, witness.interaction, settings + commitment.interaction, queries, decommitment.interaction, witness.interaction, settings, ) } diff --git a/src/air/layouts/recursive.cairo b/src/air/layouts/recursive.cairo index 44c6088ae..02baff42b 100644 --- a/src/air/layouts/recursive.cairo +++ b/src/air/layouts/recursive.cairo @@ -3,25 +3,22 @@ mod constants; mod global_values; mod public_input; mod traces; - -use integrity::{ - air::{ - constants::{SHIFT_POINT_X, SHIFT_POINT_Y}, - layouts::recursive::{ - autogenerated::{eval_composition_polynomial_inner, eval_oods_polynomial_inner,}, - global_values::{GlobalValues, InteractionElements, EcPoint}, - public_input::RecursivePublicInputImpl, - constants::{ - PUBLIC_MEMORY_STEP, DILUTED_N_BITS, DILUTED_SPACING, PEDERSEN_BUILTIN_RATIO, - PEDERSEN_BUILTIN_REPETITIONS, segments, - }, - }, - air::{AIRComposition, AIROods}, diluted::get_diluted_product, - periodic_columns::{eval_pedersen_x, eval_pedersen_y}, - public_input::{PublicInput, get_public_memory_product_ratio} - }, - common::{math::{Felt252Div, Felt252PartialOrd, pow}, asserts::assert_range_u128} +use integrity::air::air::{AIRComposition, AIROods}; +use integrity::air::constants::{SHIFT_POINT_X, SHIFT_POINT_Y}; +use integrity::air::diluted::get_diluted_product; +use integrity::air::layouts::recursive::autogenerated::{ + eval_composition_polynomial_inner, eval_oods_polynomial_inner, +}; +use integrity::air::layouts::recursive::constants::{ + DILUTED_N_BITS, DILUTED_SPACING, PEDERSEN_BUILTIN_RATIO, PEDERSEN_BUILTIN_REPETITIONS, + PUBLIC_MEMORY_STEP, segments, }; +use integrity::air::layouts::recursive::global_values::{EcPoint, GlobalValues, InteractionElements}; +use integrity::air::layouts::recursive::public_input::RecursivePublicInputImpl; +use integrity::air::periodic_columns::{eval_pedersen_x, eval_pedersen_y}; +use integrity::air::public_input::{PublicInput, get_public_memory_product_ratio}; +use integrity::common::asserts::assert_range_u128; +use integrity::common::math::{Felt252Div, Felt252PartialOrd, pow}; use starknet::ContractAddress; @@ -43,14 +40,14 @@ impl RecursiveAIRCompositionImpl of AIRComposition, @@ -234,7 +232,7 @@ fn eval_composition_polynomial_inner( column9_inter1_row0, column9_inter1_row1, column9_inter1_row2, - column9_inter1_row5 + column9_inter1_row5, ] = (*mask_values .multi_pop_front::<133>() @@ -589,13 +587,14 @@ fn eval_composition_polynomial_inner( ((column1_row92 + column1_row124) * 16 - column1_row33) / domain6, // Constraint: bitwise/unique_unpacking194. ((column1_row94 + column1_row126) * 256 - column1_row97) - / domain6, // Constraint: bitwise/unique_unpacking195. - ].span(); + / domain6 // Constraint: bitwise/unique_unpacking195. + ] + .span(); let mut total_sum = 0; for value in values { total_sum += *constraint_coefficients.pop_front().unwrap() * *value; - }; + } total_sum } @@ -825,12 +824,13 @@ fn eval_oods_polynomial_inner( (column9 - *oods_values.pop_front().unwrap()) / (point - pow4 * oods_point), (column9 - *oods_values.pop_front().unwrap()) / (point - pow6 * oods_point), (column9 - *oods_values.pop_front().unwrap()) / (point - pow11 * oods_point), - ].span(); + ] + .span(); let mut total_sum = 0; for value in values { total_sum += *constraint_coefficients.pop_front().unwrap() * *value; - }; + } // Sum the OODS boundary constraints on the composition polynomials. let oods_point_to_deg = pow(oods_point, CONSTRAINT_DEGREE.into()); diff --git a/src/air/layouts/recursive/global_values.cairo b/src/air/layouts/recursive/global_values.cairo index 6ba447b4f..e9536e44a 100644 --- a/src/air/layouts/recursive/global_values.cairo +++ b/src/air/layouts/recursive/global_values.cairo @@ -37,7 +37,7 @@ struct GlobalValues { range_check16_perm_public_memory_prod: felt252, diluted_check_first_elm: felt252, diluted_check_permutation_public_memory_prod: felt252, - diluted_check_final_cum_val: felt252 + diluted_check_final_cum_val: felt252, } // Elements that are sent from the prover after the commitment on the original trace. @@ -49,5 +49,5 @@ struct InteractionElements { range_check16_perm_interaction_elm: felt252, diluted_check_permutation_interaction_elm: felt252, diluted_check_interaction_z: felt252, - diluted_check_interaction_alpha: felt252 + diluted_check_interaction_alpha: felt252, } diff --git a/src/air/layouts/recursive/public_input.cairo b/src/air/layouts/recursive/public_input.cairo index 0cac75806..23da39d9b 100644 --- a/src/air/layouts/recursive/public_input.cairo +++ b/src/air/layouts/recursive/public_input.cairo @@ -1,23 +1,17 @@ -use integrity::{ - common::{ - math::{pow, Felt252PartialOrd, Felt252Div}, - asserts::{assert_range_u128_le, assert_range_u128}, - }, - air::{ - public_memory::{Page, PageTrait}, - constants::{MAX_ADDRESS, INITIAL_PC, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}, - layouts::recursive::constants::{ - segments, get_builtins, CPU_COMPONENT_HEIGHT, CPU_COMPONENT_STEP, LAYOUT_CODE, - PEDERSEN_BUILTIN_ROW_RATIO, RANGE_CHECK_BUILTIN_ROW_RATIO, BITWISE_ROW_RATIO - }, - public_input::{ - PublicInput, PublicInputTrait, verify_cairo1_public_input, verify_relaxed_public_input - } - }, - domains::StarkDomains +use core::hash::{Hash, HashStateExTrait, HashStateTrait}; +use core::pedersen::PedersenTrait; +use integrity::air::constants::{INITIAL_PC, MAX_ADDRESS, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}; +use integrity::air::layouts::recursive::constants::{ + BITWISE_ROW_RATIO, CPU_COMPONENT_HEIGHT, CPU_COMPONENT_STEP, LAYOUT_CODE, + PEDERSEN_BUILTIN_ROW_RATIO, RANGE_CHECK_BUILTIN_ROW_RATIO, get_builtins, segments, }; - -use core::{pedersen::PedersenTrait, hash::{HashStateTrait, HashStateExTrait, Hash}}; +use integrity::air::public_input::{ + PublicInput, PublicInputTrait, verify_cairo1_public_input, verify_relaxed_public_input, +}; +use integrity::air::public_memory::{Page, PageTrait}; +use integrity::common::asserts::{assert_range_u128, assert_range_u128_le}; +use integrity::common::math::{Felt252Div, Felt252PartialOrd, pow}; +use integrity::domains::StarkDomains; use poseidon::poseidon_hash_span; impl RecursivePublicInputImpl of PublicInputTrait { @@ -51,11 +45,11 @@ impl RecursivePublicInputImpl of PublicInputTrait { let program_len = program_end_pc - initial_pc; let program = memory .extract_range( - initial_pc.try_into().unwrap(), program_len.try_into().unwrap(), ref memory_index + initial_pc.try_into().unwrap(), program_len.try_into().unwrap(), ref memory_index, ); assert( - *program[0] == 0x40780017fff7fff, 'Invalid program' + *program[0] == 0x40780017fff7fff, 'Invalid program', ); // Instruction: ap += N_BUILTINS. assert(*program[1] == builtins.len().into(), 'Invalid program'); assert(*program[2] == 0x1104800180018000, 'Invalid program'); // Instruction: call rel ?. @@ -89,21 +83,21 @@ impl RecursivePublicInputImpl of PublicInputTrait { stop_addresses.append(*public_segments.at(2 + i).stop_ptr); i += 1; - }; + } memory.verify_stack(initial_ap, begin_addresses.span(), builtins_len, ref memory_index); memory .verify_stack( final_ap - builtins_len.into(), stop_addresses.span(), builtins_len, - ref memory_index + ref memory_index, ); // 3. Output segment let output_len = output_stop - output_start; let output = memory .extract_range( - output_start.try_into().unwrap(), output_len.try_into().unwrap(), ref memory_index + output_start.try_into().unwrap(), output_len.try_into().unwrap(), ref memory_index, ); let output_hash = poseidon_hash_span(output); @@ -126,7 +120,7 @@ impl RecursivePublicInputImpl of PublicInputTrait { let n_steps = pow(2, *self.log_n_steps); let trace_length = *stark_domains.trace_domain_size; assert( - n_steps * CPU_COMPONENT_HEIGHT * CPU_COMPONENT_STEP == trace_length, 'Wrong trace size' + n_steps * CPU_COMPONENT_HEIGHT * CPU_COMPONENT_STEP == trace_length, 'Wrong trace size', ); assert(0 <= *self.range_check_min, 'wrong rc_min'); diff --git a/src/air/layouts/recursive/traces.cairo b/src/air/layouts/recursive/traces.cairo index 0e50b3228..bc86c9502 100644 --- a/src/air/layouts/recursive/traces.cairo +++ b/src/air/layouts/recursive/traces.cairo @@ -1,15 +1,13 @@ -use integrity::{ - air::layouts::recursive::{ - constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}, global_values::InteractionElements, - }, - channel::channel::{Channel, ChannelTrait}, - table_commitment::table_commitment::{ - TableCommitment, TableDecommitment, TableCommitmentWitness, table_commit, table_decommit, - TableCommitmentConfig - }, - vector_commitment::vector_commitment::VectorCommitmentConfigTrait, - common::asserts::assert_in_range, settings::VerifierSettings, +use integrity::air::layouts::recursive::constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}; +use integrity::air::layouts::recursive::global_values::InteractionElements; +use integrity::channel::channel::{Channel, ChannelTrait}; +use integrity::common::asserts::assert_in_range; +use integrity::settings::VerifierSettings; +use integrity::table_commitment::table_commitment::{ + TableCommitment, TableCommitmentConfig, TableCommitmentWitness, TableDecommitment, table_commit, + table_decommit, }; +use integrity::vector_commitment::vector_commitment::VectorCommitmentConfigTrait; // A protocol component (see stark.cairo for details about protocol components) for the traces // of the CPU AIR. @@ -89,11 +87,11 @@ impl TracesConfigImpl of TracesConfigTrait { // Reads the traces commitment from the channel. // Returns the commitment, along with GlobalValue required to evaluate the constraint polynomial. fn traces_commit( - ref channel: Channel, unsent_commitment: TracesUnsentCommitment, config: TracesConfig + ref channel: Channel, unsent_commitment: TracesUnsentCommitment, config: TracesConfig, ) -> TracesCommitment { // Read original commitment. let original_commitment = table_commit( - ref channel, unsent_commitment.original, config.original + ref channel, unsent_commitment.original, config.original, ); // Generate interaction elements for the first interaction. let interaction_elements = InteractionElements { @@ -106,7 +104,7 @@ fn traces_commit( }; // Read interaction commitment. let interaction_commitment = table_commit( - ref channel, unsent_commitment.interaction, config.interaction + ref channel, unsent_commitment.interaction, config.interaction, ); TracesCommitment { @@ -127,6 +125,6 @@ fn traces_decommit( ) { table_decommit(commitment.original, queries, decommitment.original, witness.original, settings); table_decommit( - commitment.interaction, queries, decommitment.interaction, witness.interaction, settings + commitment.interaction, queries, decommitment.interaction, witness.interaction, settings, ) } diff --git a/src/air/layouts/recursive_with_poseidon.cairo b/src/air/layouts/recursive_with_poseidon.cairo index 7706e4a64..ad579fb70 100644 --- a/src/air/layouts/recursive_with_poseidon.cairo +++ b/src/air/layouts/recursive_with_poseidon.cairo @@ -1,39 +1,33 @@ mod autogenerated; mod constants; +#[cfg(feature: 'split')] +mod contract; mod global_values; mod public_input; mod traces; -#[cfg(feature: 'split')] -mod contract; - -use integrity::{ - air::{ - constants::{SHIFT_POINT_X, SHIFT_POINT_Y}, - layouts::recursive_with_poseidon::{ - autogenerated::eval_composition_polynomial_inner, - global_values::{GlobalValues, InteractionElements, EcPoint}, - public_input::RecursiveWithPoseidonPublicInputImpl, - constants::{ - PUBLIC_MEMORY_STEP, DILUTED_N_BITS, DILUTED_SPACING, PEDERSEN_BUILTIN_RATIO, - PEDERSEN_BUILTIN_REPETITIONS, segments, POSEIDON_RATIO - }, - }, - air::{AIRComposition, AIROods}, diluted::get_diluted_product, - periodic_columns::{ - eval_pedersen_x, eval_pedersen_y, eval_poseidon_poseidon_full_round_key0, - eval_poseidon_poseidon_full_round_key1, eval_poseidon_poseidon_full_round_key2, - eval_poseidon_poseidon_partial_round_key0, eval_poseidon_poseidon_partial_round_key1 - }, - public_input::{PublicInput, get_public_memory_product_ratio} - }, - common::{math::{Felt252Div, Felt252PartialOrd, pow}, asserts::assert_range_u128} -}; -use starknet::ContractAddress; - +use integrity::air::air::{AIRComposition, AIROods}; +use integrity::air::constants::{SHIFT_POINT_X, SHIFT_POINT_Y}; +use integrity::air::diluted::get_diluted_product; +use integrity::air::layouts::recursive_with_poseidon::autogenerated::eval_composition_polynomial_inner; #[cfg(feature: 'monolith')] -use integrity::air::layouts::recursive_with_poseidon::autogenerated::{ - eval_oods_polynomial_inner as eval_oods_polynomial_inner_, +use integrity::air::layouts::recursive_with_poseidon::autogenerated::eval_oods_polynomial_inner as eval_oods_polynomial_inner_; +use integrity::air::layouts::recursive_with_poseidon::constants::{ + DILUTED_N_BITS, DILUTED_SPACING, PEDERSEN_BUILTIN_RATIO, PEDERSEN_BUILTIN_REPETITIONS, + POSEIDON_RATIO, PUBLIC_MEMORY_STEP, segments, +}; +use integrity::air::layouts::recursive_with_poseidon::global_values::{ + EcPoint, GlobalValues, InteractionElements, }; +use integrity::air::layouts::recursive_with_poseidon::public_input::RecursiveWithPoseidonPublicInputImpl; +use integrity::air::periodic_columns::{ + eval_pedersen_x, eval_pedersen_y, eval_poseidon_poseidon_full_round_key0, + eval_poseidon_poseidon_full_round_key1, eval_poseidon_poseidon_full_round_key2, + eval_poseidon_poseidon_partial_round_key0, eval_poseidon_poseidon_partial_round_key1, +}; +use integrity::air::public_input::{PublicInput, get_public_memory_product_ratio}; +use integrity::common::asserts::assert_range_u128; +use integrity::common::math::{Felt252Div, Felt252PartialOrd, pow}; +use starknet::ContractAddress; #[cfg(feature: 'monolith')] fn eval_oods_polynomial_inner( @@ -49,7 +43,6 @@ fn eval_oods_polynomial_inner( column_values, oods_values, constraint_coefficients, point, oods_point, trace_generator, ) } - #[cfg(feature: 'split')] use integrity::air::layouts::recursive_with_poseidon::contract::{ ILayoutOodsContractDispatcher, ILayoutOodsContractDispatcherTrait, @@ -89,14 +82,14 @@ impl RecursiveWithPoseidonAIRCompositionImpl of AIRComposition, @@ -347,7 +345,7 @@ fn eval_composition_polynomial_inner( column7_inter1_row0, column7_inter1_row1, column7_inter1_row2, - column7_inter1_row5 + column7_inter1_row5, ] = (*mask_values .multi_pop_front::<192>() diff --git a/src/air/layouts/recursive_with_poseidon/contract.cairo b/src/air/layouts/recursive_with_poseidon/contract.cairo index 1ba25535d..a8847a033 100644 --- a/src/air/layouts/recursive_with_poseidon/contract.cairo +++ b/src/air/layouts/recursive_with_poseidon/contract.cairo @@ -15,10 +15,9 @@ trait ILayoutOodsContract { #[starknet::contract] mod LayoutOodsContract { + use integrity::air::layouts::recursive_with_poseidon::autogenerated::eval_oods_polynomial_inner; + use integrity::air::layouts::recursive_with_poseidon::global_values::GlobalValues; use super::ILayoutOodsContract; - use integrity::air::layouts::recursive_with_poseidon::{ - global_values::GlobalValues, autogenerated::eval_oods_polynomial_inner, - }; #[storage] struct Storage {} diff --git a/src/air/layouts/recursive_with_poseidon/global_values.cairo b/src/air/layouts/recursive_with_poseidon/global_values.cairo index 6742e8334..00dedbc3c 100644 --- a/src/air/layouts/recursive_with_poseidon/global_values.cairo +++ b/src/air/layouts/recursive_with_poseidon/global_values.cairo @@ -68,5 +68,5 @@ struct InteractionElements { range_check16_perm_interaction_elm: felt252, diluted_check_permutation_interaction_elm: felt252, diluted_check_interaction_z: felt252, - diluted_check_interaction_alpha: felt252 + diluted_check_interaction_alpha: felt252, } diff --git a/src/air/layouts/recursive_with_poseidon/public_input.cairo b/src/air/layouts/recursive_with_poseidon/public_input.cairo index 90e7a53f6..f5b61e2a8 100644 --- a/src/air/layouts/recursive_with_poseidon/public_input.cairo +++ b/src/air/layouts/recursive_with_poseidon/public_input.cairo @@ -1,24 +1,18 @@ -use integrity::{ - common::{ - math::{pow, Felt252PartialOrd, Felt252Div}, - asserts::{assert_range_u128_le, assert_range_u128}, - }, - air::{ - public_memory::{Page, PageTrait}, - constants::{MAX_ADDRESS, INITIAL_PC, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}, - layouts::recursive_with_poseidon::constants::{ - segments, get_builtins, CPU_COMPONENT_HEIGHT, CPU_COMPONENT_STEP, LAYOUT_CODE, - PEDERSEN_BUILTIN_ROW_RATIO, RANGE_CHECK_BUILTIN_ROW_RATIO, BITWISE_ROW_RATIO, - POSEIDON_ROW_RATIO - }, - public_input::{ - PublicInput, PublicInputTrait, verify_cairo1_public_input, verify_relaxed_public_input - } - }, - domains::StarkDomains +use core::hash::{Hash, HashStateExTrait, HashStateTrait}; +use core::pedersen::PedersenTrait; +use integrity::air::constants::{INITIAL_PC, MAX_ADDRESS, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}; +use integrity::air::layouts::recursive_with_poseidon::constants::{ + BITWISE_ROW_RATIO, CPU_COMPONENT_HEIGHT, CPU_COMPONENT_STEP, LAYOUT_CODE, + PEDERSEN_BUILTIN_ROW_RATIO, POSEIDON_ROW_RATIO, RANGE_CHECK_BUILTIN_ROW_RATIO, get_builtins, + segments, }; - -use core::{pedersen::PedersenTrait, hash::{HashStateTrait, HashStateExTrait, Hash}}; +use integrity::air::public_input::{ + PublicInput, PublicInputTrait, verify_cairo1_public_input, verify_relaxed_public_input, +}; +use integrity::air::public_memory::{Page, PageTrait}; +use integrity::common::asserts::{assert_range_u128, assert_range_u128_le}; +use integrity::common::math::{Felt252Div, Felt252PartialOrd, pow}; +use integrity::domains::StarkDomains; use poseidon::poseidon_hash_span; impl RecursiveWithPoseidonPublicInputImpl of PublicInputTrait { @@ -52,11 +46,11 @@ impl RecursiveWithPoseidonPublicInputImpl of PublicInputTrait { let program_len = program_end_pc - initial_pc; let program = memory .extract_range( - initial_pc.try_into().unwrap(), program_len.try_into().unwrap(), ref memory_index + initial_pc.try_into().unwrap(), program_len.try_into().unwrap(), ref memory_index, ); assert( - *program[0] == 0x40780017fff7fff, 'Invalid program' + *program[0] == 0x40780017fff7fff, 'Invalid program', ); // Instruction: ap += N_BUILTINS. assert(*program[1] == builtins.len().into(), 'Invalid program'); assert(*program[2] == 0x1104800180018000, 'Invalid program'); // Instruction: call rel ?. @@ -90,21 +84,21 @@ impl RecursiveWithPoseidonPublicInputImpl of PublicInputTrait { stop_addresses.append(*public_segments.at(2 + i).stop_ptr); i += 1; - }; + } memory.verify_stack(initial_ap, begin_addresses.span(), builtins_len, ref memory_index); memory .verify_stack( final_ap - builtins_len.into(), stop_addresses.span(), builtins_len, - ref memory_index + ref memory_index, ); // 3. Output segment let output_len = output_stop - output_start; let output = memory .extract_range( - output_start.try_into().unwrap(), output_len.try_into().unwrap(), ref memory_index + output_start.try_into().unwrap(), output_len.try_into().unwrap(), ref memory_index, ); let output_hash = poseidon_hash_span(output); @@ -127,7 +121,7 @@ impl RecursiveWithPoseidonPublicInputImpl of PublicInputTrait { let n_steps = pow(2, *self.log_n_steps); let trace_length = *stark_domains.trace_domain_size; assert( - n_steps * CPU_COMPONENT_HEIGHT * CPU_COMPONENT_STEP == trace_length, 'Wrong trace size' + n_steps * CPU_COMPONENT_HEIGHT * CPU_COMPONENT_STEP == trace_length, 'Wrong trace size', ); assert(0 <= *self.range_check_min, 'wrong rc_min'); diff --git a/src/air/layouts/recursive_with_poseidon/traces.cairo b/src/air/layouts/recursive_with_poseidon/traces.cairo index 54c0bb336..96e377d6c 100644 --- a/src/air/layouts/recursive_with_poseidon/traces.cairo +++ b/src/air/layouts/recursive_with_poseidon/traces.cairo @@ -1,15 +1,15 @@ -use integrity::{ - air::layouts::recursive_with_poseidon::{ - constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}, global_values::InteractionElements, - }, - channel::channel::{Channel, ChannelTrait}, - table_commitment::table_commitment::{ - TableCommitment, TableDecommitment, TableCommitmentWitness, table_commit, table_decommit, - TableCommitmentConfig - }, - vector_commitment::vector_commitment::VectorCommitmentConfigTrait, - common::asserts::assert_in_range, settings::VerifierSettings, +use integrity::air::layouts::recursive_with_poseidon::constants::{ + NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND, }; +use integrity::air::layouts::recursive_with_poseidon::global_values::InteractionElements; +use integrity::channel::channel::{Channel, ChannelTrait}; +use integrity::common::asserts::assert_in_range; +use integrity::settings::VerifierSettings; +use integrity::table_commitment::table_commitment::{ + TableCommitment, TableCommitmentConfig, TableCommitmentWitness, TableDecommitment, table_commit, + table_decommit, +}; +use integrity::vector_commitment::vector_commitment::VectorCommitmentConfigTrait; // A protocol component (see stark.cairo for details about protocol components) for the traces // of the CPU AIR. @@ -89,11 +89,11 @@ impl TracesConfigImpl of TracesConfigTrait { // Reads the traces commitment from the channel. // Returns the commitment, along with GlobalValue required to evaluate the constraint polynomial. fn traces_commit( - ref channel: Channel, unsent_commitment: TracesUnsentCommitment, config: TracesConfig + ref channel: Channel, unsent_commitment: TracesUnsentCommitment, config: TracesConfig, ) -> TracesCommitment { // Read original commitment. let original_commitment = table_commit( - ref channel, unsent_commitment.original, config.original + ref channel, unsent_commitment.original, config.original, ); // Generate interaction elements for the first interaction. let interaction_elements = InteractionElements { @@ -106,7 +106,7 @@ fn traces_commit( }; // Read interaction commitment. let interaction_commitment = table_commit( - ref channel, unsent_commitment.interaction, config.interaction + ref channel, unsent_commitment.interaction, config.interaction, ); TracesCommitment { @@ -127,6 +127,6 @@ fn traces_decommit( ) { table_decommit(commitment.original, queries, decommitment.original, witness.original, settings); table_decommit( - commitment.interaction, queries, decommitment.interaction, witness.interaction, settings + commitment.interaction, queries, decommitment.interaction, witness.interaction, settings, ) } diff --git a/src/air/layouts/small.cairo b/src/air/layouts/small.cairo index 13b6ea9da..584275d71 100644 --- a/src/air/layouts/small.cairo +++ b/src/air/layouts/small.cairo @@ -1,35 +1,31 @@ mod autogenerated; mod constants; +#[cfg(feature: 'split')] +mod contract; mod global_values; mod public_input; mod traces; -#[cfg(feature: 'split')] -mod contract; - -use integrity::{ - air::{ - constants::{SHIFT_POINT_X, SHIFT_POINT_Y, StarkCurve}, - layouts::small::{ - autogenerated::eval_composition_polynomial_inner, - global_values::{GlobalValues, InteractionElements, EcPoint, EcdsaSigConfig}, - public_input::SmallPublicInputImpl, - constants::{ - PUBLIC_MEMORY_STEP, PEDERSEN_BUILTIN_RATIO, ECDSA_BUILTIN_RATIO, - ECDSA_BUILTIN_REPETITIONS, PEDERSEN_BUILTIN_REPETITIONS, segments, - }, - }, - air::{AIRComposition, AIROods}, diluted::get_diluted_product, - periodic_columns::{eval_pedersen_x, eval_pedersen_y, eval_ecdsa_x, eval_ecdsa_y}, - public_input::{PublicInput, get_public_memory_product_ratio} - }, - common::{math::{Felt252Div, Felt252PartialOrd, pow}, asserts::assert_range_u128} -}; -use starknet::ContractAddress; - +use integrity::air::air::{AIRComposition, AIROods}; +use integrity::air::constants::{SHIFT_POINT_X, SHIFT_POINT_Y, StarkCurve}; +use integrity::air::diluted::get_diluted_product; +use integrity::air::layouts::small::autogenerated::eval_composition_polynomial_inner; #[cfg(feature: 'monolith')] -use integrity::air::layouts::small::autogenerated::{ - eval_oods_polynomial_inner as eval_oods_polynomial_inner_, +use integrity::air::layouts::small::autogenerated::eval_oods_polynomial_inner as eval_oods_polynomial_inner_; +use integrity::air::layouts::small::constants::{ + ECDSA_BUILTIN_RATIO, ECDSA_BUILTIN_REPETITIONS, PEDERSEN_BUILTIN_RATIO, + PEDERSEN_BUILTIN_REPETITIONS, PUBLIC_MEMORY_STEP, segments, +}; +use integrity::air::layouts::small::global_values::{ + EcPoint, EcdsaSigConfig, GlobalValues, InteractionElements, }; +use integrity::air::layouts::small::public_input::SmallPublicInputImpl; +use integrity::air::periodic_columns::{ + eval_ecdsa_x, eval_ecdsa_y, eval_pedersen_x, eval_pedersen_y, +}; +use integrity::air::public_input::{PublicInput, get_public_memory_product_ratio}; +use integrity::common::asserts::assert_range_u128; +use integrity::common::math::{Felt252Div, Felt252PartialOrd, pow}; +use starknet::ContractAddress; #[cfg(feature: 'monolith')] fn eval_oods_polynomial_inner( @@ -45,7 +41,6 @@ fn eval_oods_polynomial_inner( column_values, oods_values, constraint_coefficients, point, oods_point, trace_generator, ) } - #[cfg(feature: 'split')] use integrity::air::layouts::small::contract::{ ILayoutOodsContractDispatcher, ILayoutOodsContractDispatcherTrait, @@ -85,7 +80,7 @@ impl SmallAIRCompositionImpl of AIRComposition let public_memory_column_size = trace_domain_size / PUBLIC_MEMORY_STEP; assert_range_u128(public_memory_column_size); let public_memory_prod_ratio = get_public_memory_product_ratio( - public_input, memory_z, memory_alpha, public_memory_column_size + public_input, memory_z, memory_alpha, public_memory_column_size, ); // Periodic columns diff --git a/src/air/layouts/small/autogenerated.cairo b/src/air/layouts/small/autogenerated.cairo index f7e70d7b7..9e1e28fd5 100644 --- a/src/air/layouts/small/autogenerated.cairo +++ b/src/air/layouts/small/autogenerated.cairo @@ -1,10 +1,8 @@ -use integrity::{ - air::layouts::small::{ - global_values::GlobalValues, - constants::{CONSTRAINT_DEGREE, NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND, MASK_SIZE}, - }, - common::math::{Felt252Div, pow}, +use integrity::air::layouts::small::constants::{ + CONSTRAINT_DEGREE, MASK_SIZE, NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND, }; +use integrity::air::layouts::small::global_values::GlobalValues; +use integrity::common::math::{Felt252Div, pow}; fn eval_composition_polynomial_inner( mut mask_values: Span, @@ -263,7 +261,7 @@ fn eval_composition_polynomial_inner( column23_inter1_row0, column23_inter1_row1, column24_inter1_row0, - column24_inter1_row2 + column24_inter1_row2, ] = (*mask_values .multi_pop_front::<201>() @@ -1464,7 +1462,7 @@ fn eval_oods_polynomial_inner( column21, column22, column23, - column24 + column24, ] = (*column_values .multi_pop_front::<25>() diff --git a/src/air/layouts/small/contract.cairo b/src/air/layouts/small/contract.cairo index 22adfbb04..b12fe2dd3 100644 --- a/src/air/layouts/small/contract.cairo +++ b/src/air/layouts/small/contract.cairo @@ -15,10 +15,9 @@ trait ILayoutOodsContract { #[starknet::contract] mod LayoutOodsContract { + use integrity::air::layouts::small::autogenerated::eval_oods_polynomial_inner; + use integrity::air::layouts::small::global_values::GlobalValues; use super::ILayoutOodsContract; - use integrity::air::layouts::small::{ - global_values::GlobalValues, autogenerated::eval_oods_polynomial_inner, - }; #[storage] struct Storage {} diff --git a/src/air/layouts/small/public_input.cairo b/src/air/layouts/small/public_input.cairo index 590e90cdb..edb7bb7fe 100644 --- a/src/air/layouts/small/public_input.cairo +++ b/src/air/layouts/small/public_input.cairo @@ -1,23 +1,17 @@ -use integrity::{ - common::{ - math::{pow, Felt252PartialOrd, Felt252Div}, - asserts::{assert_range_u128_le, assert_range_u128}, - }, - air::{ - public_memory::{Page, PageTrait}, - constants::{MAX_ADDRESS, INITIAL_PC, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}, - layouts::small::constants::{ - segments, get_builtins, CPU_COMPONENT_HEIGHT, CPU_COMPONENT_STEP, LAYOUT_CODE, - PEDERSEN_BUILTIN_ROW_RATIO, RANGE_CHECK_BUILTIN_ROW_RATIO, ECDSA_BUILTIN_ROW_RATIO - }, - public_input::{ - PublicInput, PublicInputTrait, verify_cairo1_public_input, verify_relaxed_public_input - } - }, - domains::StarkDomains +use core::hash::{Hash, HashStateExTrait, HashStateTrait}; +use core::pedersen::PedersenTrait; +use integrity::air::constants::{INITIAL_PC, MAX_ADDRESS, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}; +use integrity::air::layouts::small::constants::{ + CPU_COMPONENT_HEIGHT, CPU_COMPONENT_STEP, ECDSA_BUILTIN_ROW_RATIO, LAYOUT_CODE, + PEDERSEN_BUILTIN_ROW_RATIO, RANGE_CHECK_BUILTIN_ROW_RATIO, get_builtins, segments, }; - -use core::{pedersen::PedersenTrait, hash::{HashStateTrait, HashStateExTrait, Hash}}; +use integrity::air::public_input::{ + PublicInput, PublicInputTrait, verify_cairo1_public_input, verify_relaxed_public_input, +}; +use integrity::air::public_memory::{Page, PageTrait}; +use integrity::common::asserts::{assert_range_u128, assert_range_u128_le}; +use integrity::common::math::{Felt252Div, Felt252PartialOrd, pow}; +use integrity::domains::StarkDomains; use poseidon::poseidon_hash_span; impl SmallPublicInputImpl of PublicInputTrait { @@ -51,11 +45,11 @@ impl SmallPublicInputImpl of PublicInputTrait { let program_len = program_end_pc - initial_pc; let program = memory .extract_range( - initial_pc.try_into().unwrap(), program_len.try_into().unwrap(), ref memory_index + initial_pc.try_into().unwrap(), program_len.try_into().unwrap(), ref memory_index, ); assert( - *program[0] == 0x40780017fff7fff, 'Invalid program' + *program[0] == 0x40780017fff7fff, 'Invalid program', ); // Instruction: ap += N_BUILTINS. assert(*program[1] == builtins.len().into(), 'Invalid program'); assert(*program[2] == 0x1104800180018000, 'Invalid program'); // Instruction: call rel ?. @@ -89,21 +83,21 @@ impl SmallPublicInputImpl of PublicInputTrait { stop_addresses.append(*public_segments.at(2 + i).stop_ptr); i += 1; - }; + } memory.verify_stack(initial_ap, begin_addresses.span(), builtins_len, ref memory_index); memory .verify_stack( final_ap - builtins_len.into(), stop_addresses.span(), builtins_len, - ref memory_index + ref memory_index, ); // 3. Output segment let output_len = output_stop - output_start; let output = memory .extract_range( - output_start.try_into().unwrap(), output_len.try_into().unwrap(), ref memory_index + output_start.try_into().unwrap(), output_len.try_into().unwrap(), ref memory_index, ); let output_hash = poseidon_hash_span(output); @@ -126,7 +120,7 @@ impl SmallPublicInputImpl of PublicInputTrait { let n_steps = pow(2, *self.log_n_steps); let trace_length = *stark_domains.trace_domain_size; assert( - n_steps * CPU_COMPONENT_HEIGHT * CPU_COMPONENT_STEP == trace_length, 'Wrong trace size' + n_steps * CPU_COMPONENT_HEIGHT * CPU_COMPONENT_STEP == trace_length, 'Wrong trace size', ); assert(0 <= *self.range_check_min, 'wrong rc_min'); diff --git a/src/air/layouts/small/traces.cairo b/src/air/layouts/small/traces.cairo index dee2f1b58..ccef73998 100644 --- a/src/air/layouts/small/traces.cairo +++ b/src/air/layouts/small/traces.cairo @@ -1,15 +1,13 @@ -use integrity::{ - air::layouts::small::{ - constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}, global_values::InteractionElements, - }, - channel::channel::{Channel, ChannelTrait}, - table_commitment::table_commitment::{ - TableCommitment, TableDecommitment, TableCommitmentWitness, table_commit, table_decommit, - TableCommitmentConfig - }, - vector_commitment::vector_commitment::VectorCommitmentConfigTrait, - common::asserts::assert_in_range, settings::VerifierSettings, +use integrity::air::layouts::small::constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}; +use integrity::air::layouts::small::global_values::InteractionElements; +use integrity::channel::channel::{Channel, ChannelTrait}; +use integrity::common::asserts::assert_in_range; +use integrity::settings::VerifierSettings; +use integrity::table_commitment::table_commitment::{ + TableCommitment, TableCommitmentConfig, TableCommitmentWitness, TableDecommitment, table_commit, + table_decommit, }; +use integrity::vector_commitment::vector_commitment::VectorCommitmentConfigTrait; // A protocol component (see stark.cairo for details about protocol components) for the traces // of the CPU AIR. @@ -89,11 +87,11 @@ impl TracesConfigImpl of TracesConfigTrait { // Reads the traces commitment from the channel. // Returns the commitment, along with GlobalValue required to evaluate the constraint polynomial. fn traces_commit( - ref channel: Channel, unsent_commitment: TracesUnsentCommitment, config: TracesConfig + ref channel: Channel, unsent_commitment: TracesUnsentCommitment, config: TracesConfig, ) -> TracesCommitment { // Read original commitment. let original_commitment = table_commit( - ref channel, unsent_commitment.original, config.original + ref channel, unsent_commitment.original, config.original, ); // Generate interaction elements for the first interaction. let interaction_elements = InteractionElements { @@ -103,7 +101,7 @@ fn traces_commit( }; // Read interaction commitment. let interaction_commitment = table_commit( - ref channel, unsent_commitment.interaction, config.interaction + ref channel, unsent_commitment.interaction, config.interaction, ); TracesCommitment { @@ -124,6 +122,6 @@ fn traces_decommit( ) { table_decommit(commitment.original, queries, decommitment.original, witness.original, settings); table_decommit( - commitment.interaction, queries, decommitment.interaction, witness.interaction, settings + commitment.interaction, queries, decommitment.interaction, witness.interaction, settings, ) } diff --git a/src/air/layouts/starknet.cairo b/src/air/layouts/starknet.cairo index 8a00b1c9f..cc0538e76 100644 --- a/src/air/layouts/starknet.cairo +++ b/src/air/layouts/starknet.cairo @@ -1,43 +1,35 @@ mod autogenerated; mod constants; +#[cfg(feature: 'split')] +mod contract; mod global_values; mod public_input; mod traces; -#[cfg(feature: 'split')] -mod contract; - -use integrity::{ - air::{ - constants::{SHIFT_POINT_X, SHIFT_POINT_Y, StarkCurve}, - layouts::starknet::{ - autogenerated::eval_oods_polynomial_inner, - global_values::{ - GlobalValues, InteractionElements, EcPoint, EcdsaSigConfig, CurveConfig - }, - public_input::StarknetPublicInputImpl, - constants::{ - PUBLIC_MEMORY_STEP, DILUTED_N_BITS, DILUTED_SPACING, PEDERSEN_BUILTIN_RATIO, - PEDERSEN_BUILTIN_REPETITIONS, segments, ECDSA_BUILTIN_RATIO, - ECDSA_BUILTIN_REPETITIONS, POSEIDON_RATIO - }, - }, - air::{AIRComposition, AIROods}, diluted::get_diluted_product, - periodic_columns::{ - eval_pedersen_x, eval_pedersen_y, eval_ecdsa_x, eval_ecdsa_y, - eval_poseidon_poseidon_full_round_key0, eval_poseidon_poseidon_full_round_key1, - eval_poseidon_poseidon_full_round_key2, eval_poseidon_poseidon_partial_round_key0, - eval_poseidon_poseidon_partial_round_key1 - }, - public_input::{PublicInput, get_public_memory_product_ratio} - }, - common::{math::{Felt252Div, Felt252PartialOrd, pow}, asserts::assert_range_u128} -}; -use starknet::ContractAddress; - +use integrity::air::air::{AIRComposition, AIROods}; +use integrity::air::constants::{SHIFT_POINT_X, SHIFT_POINT_Y, StarkCurve}; +use integrity::air::diluted::get_diluted_product; #[cfg(feature: 'monolith')] -use integrity::air::layouts::starknet::autogenerated::{ - eval_composition_polynomial_inner as eval_composition_polynomial_inner_, +use integrity::air::layouts::starknet::autogenerated::eval_composition_polynomial_inner as eval_composition_polynomial_inner_; +use integrity::air::layouts::starknet::autogenerated::eval_oods_polynomial_inner; +use integrity::air::layouts::starknet::constants::{ + DILUTED_N_BITS, DILUTED_SPACING, ECDSA_BUILTIN_RATIO, ECDSA_BUILTIN_REPETITIONS, + PEDERSEN_BUILTIN_RATIO, PEDERSEN_BUILTIN_REPETITIONS, POSEIDON_RATIO, PUBLIC_MEMORY_STEP, + segments, +}; +use integrity::air::layouts::starknet::global_values::{ + CurveConfig, EcPoint, EcdsaSigConfig, GlobalValues, InteractionElements, }; +use integrity::air::layouts::starknet::public_input::StarknetPublicInputImpl; +use integrity::air::periodic_columns::{ + eval_ecdsa_x, eval_ecdsa_y, eval_pedersen_x, eval_pedersen_y, + eval_poseidon_poseidon_full_round_key0, eval_poseidon_poseidon_full_round_key1, + eval_poseidon_poseidon_full_round_key2, eval_poseidon_poseidon_partial_round_key0, + eval_poseidon_poseidon_partial_round_key1, +}; +use integrity::air::public_input::{PublicInput, get_public_memory_product_ratio}; +use integrity::common::asserts::assert_range_u128; +use integrity::common::math::{Felt252Div, Felt252PartialOrd, pow}; +use starknet::ContractAddress; #[cfg(feature: 'monolith')] fn eval_composition_polynomial_inner( @@ -49,10 +41,9 @@ fn eval_composition_polynomial_inner( contract_address: ContractAddress, ) -> felt252 { eval_composition_polynomial_inner_( - mask_values, constraint_coefficients, point, trace_generator, global_values + mask_values, constraint_coefficients, point, trace_generator, global_values, ) } - #[cfg(feature: 'split')] use integrity::air::layouts::starknet::contract::{ ILayoutCompositionContractDispatcher, ILayoutCompositionContractDispatcherTrait, @@ -69,7 +60,7 @@ fn eval_composition_polynomial_inner( ) -> felt252 { ILayoutCompositionContractDispatcher { contract_address } .eval_composition_polynomial_inner( - mask_values, constraint_coefficients, point, trace_generator, global_values + mask_values, constraint_coefficients, point, trace_generator, global_values, ) } @@ -91,14 +82,14 @@ impl StarknetAIRCompositionImpl of AIRComposition, @@ -437,7 +435,7 @@ fn eval_composition_polynomial_inner( column9_inter1_row5, column9_inter1_row7, column9_inter1_row11, - column9_inter1_row15 + column9_inter1_row15, ] = (*mask_values .multi_pop_front::<271>() @@ -1174,13 +1172,14 @@ fn eval_composition_polynomial_inner( + 3618502788666131213697322783095070105623107215331596699973092056135872020479 * poseidon_poseidon_partial_rounds_state1_cubed_21 + 1246177936547655338400308396717835700699368047388302793172818304164989556526)) - / domain13, // Constraint: poseidon/poseidon/margin_partial_to_full2. - ].span(); + / domain13 // Constraint: poseidon/poseidon/margin_partial_to_full2. + ] + .span(); let mut total_sum = 0; for value in values { total_sum += *constraint_coefficients.pop_front().unwrap() * *value; - }; + } total_sum } @@ -1398,307 +1397,94 @@ fn eval_oods_polynomial_inner( // Sum the OODS constraints on the trace polynomials. let mut total_sum = 0; let pows = [ - pow0, - pow17, - pow24, - pow25, - pow26, - pow27, - pow28, - pow30, - pow31, - pow32, - pow33, - pow34, - pow35, - pow36, - pow37, - pow38, - ].span(); + pow0, pow17, pow24, pow25, pow26, pow27, pow28, pow30, pow31, pow32, pow33, pow34, pow35, + pow36, pow37, pow38, + ] + .span(); for pow in pows { let value = (column0 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow17, pow134, pow135, pow172,].span(); + let pows = [pow0, pow17, pow134, pow135, pow172].span(); for pow in pows { let value = (column1 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow17, pow134, pow135,].span(); + let pows = [pow0, pow17, pow134, pow135].span(); for pow in pows { let value = (column2 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow17, pow105, pow106, pow108, pow109, pow122, pow123, pow135,].span(); + let pows = [pow0, pow17, pow105, pow106, pow108, pow109, pow122, pow123, pow135].span(); for pow in pows { let value = (column3 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow134,].span(); + let pows = [pow0, pow134].span(); for pow in pows { let value = (column4 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } let pows = [ - pow0, - pow17, - pow24, - pow25, - pow26, - pow27, - pow28, - pow30, - pow31, - pow32, - pow35, - pow36, - pow39, - pow53, - pow54, - pow74, - pow75, - pow85, - pow86, - pow94, - pow95, - pow100, - pow101, - pow110, - pow111, - pow141, - pow142, - pow145, - pow146, - pow153, - pow157, - pow160, - pow152, - pow159, - pow151, - pow158, - pow163, - pow175, - pow178, - pow177, - pow188, - pow184, - pow185, - pow187, - pow16, - pow23, - pow15, - pow22, - pow14, - pow21, - pow13, - pow20, - pow12, - pow19, - pow139, - pow140, - pow11, - pow18, - pow10, - pow161, - pow9, + pow0, pow17, pow24, pow25, pow26, pow27, pow28, pow30, pow31, pow32, pow35, pow36, pow39, + pow53, pow54, pow74, pow75, pow85, pow86, pow94, pow95, pow100, pow101, pow110, pow111, + pow141, pow142, pow145, pow146, pow153, pow157, pow160, pow152, pow159, pow151, pow158, + pow163, pow175, pow178, pow177, pow188, pow184, pow185, pow187, pow16, pow23, pow15, pow22, + pow14, pow21, pow13, pow20, pow12, pow19, pow139, pow140, pow11, pow18, pow10, pow161, pow9, pow173, - ].span(); + ] + .span(); for pow in pows { let value = (column5 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow17, pow24, pow25,].span(); + let pows = [pow0, pow17, pow24, pow25].span(); for pow in pows { let value = (column6 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } let pows = [ - pow0, - pow17, - pow24, - pow25, - pow26, - pow27, - pow28, - pow30, - pow31, - pow32, - pow34, - pow35, - pow36, - pow38, - pow40, - pow41, - pow44, - pow47, - pow50, - pow57, - pow60, - pow72, - pow77, - pow79, - pow83, - pow88, - pow90, - pow93, - pow96, - pow97, - pow99, - pow102, - pow103, - pow106, - pow112, - pow114, - pow117, - pow118, - pow120, - pow136, - pow143, - pow166, - pow168, - pow170, - pow174, - pow191, - pow176, - pow179, - pow180, - pow181, - pow182, - pow192, - pow183, - pow186, - pow189, - pow190, - ].span(); + pow0, pow17, pow24, pow25, pow26, pow27, pow28, pow30, pow31, pow32, pow34, pow35, pow36, + pow38, pow40, pow41, pow44, pow47, pow50, pow57, pow60, pow72, pow77, pow79, pow83, pow88, + pow90, pow93, pow96, pow97, pow99, pow102, pow103, pow106, pow112, pow114, pow117, pow118, + pow120, pow136, pow143, pow166, pow168, pow170, pow174, pow191, pow176, pow179, pow180, + pow181, pow182, pow192, pow183, pow186, pow189, pow190, + ] + .span(); for pow in pows { let value = (column7 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } let pows = [ - pow0, - pow17, - pow24, - pow25, - pow26, - pow27, - pow28, - pow30, - pow31, - pow32, - pow33, - pow34, - pow35, - pow36, - pow37, - pow39, - pow40, - pow41, - pow42, - pow43, - pow45, - pow46, - pow47, - pow48, - pow49, - pow50, - pow51, - pow52, - pow53, - pow55, - pow56, - pow58, - pow59, - pow60, - pow61, - pow62, - pow63, - pow69, - pow70, - pow71, - pow72, - pow73, - pow75, - pow76, - pow78, - pow79, - pow80, - pow81, - pow82, - pow83, - pow84, - pow87, - pow89, - pow90, - pow91, - pow92, - pow98, - pow104, - pow107, - pow113, - pow115, - pow116, - pow119, - pow121, - pow133, - pow144, - pow147, - pow148, - pow149, - pow150, - pow153, - pow154, - pow155, - pow156, - pow162, - pow164, - pow165, - pow167, - pow169, - pow171, - pow8, - pow7, - pow138, - pow137, - pow6, - pow5, - pow4, - pow29, - pow124, - pow125, - pow126, - pow127, - pow128, - pow129, - pow130, - pow131, - pow132, - pow3, - pow2, - pow1, - pow64, - pow65, - pow66, - pow67, - pow68, - ].span(); + pow0, pow17, pow24, pow25, pow26, pow27, pow28, pow30, pow31, pow32, pow33, pow34, pow35, + pow36, pow37, pow39, pow40, pow41, pow42, pow43, pow45, pow46, pow47, pow48, pow49, pow50, + pow51, pow52, pow53, pow55, pow56, pow58, pow59, pow60, pow61, pow62, pow63, pow69, pow70, + pow71, pow72, pow73, pow75, pow76, pow78, pow79, pow80, pow81, pow82, pow83, pow84, pow87, + pow89, pow90, pow91, pow92, pow98, pow104, pow107, pow113, pow115, pow116, pow119, pow121, + pow133, pow144, pow147, pow148, pow149, pow150, pow153, pow154, pow155, pow156, pow162, + pow164, pow165, pow167, pow169, pow171, pow8, pow7, pow138, pow137, pow6, pow5, pow4, pow29, + pow124, pow125, pow126, pow127, pow128, pow129, pow130, pow131, pow132, pow3, pow2, pow1, + pow64, pow65, pow66, pow67, pow68, + ] + .span(); for pow in pows { let value = (column8 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow17, pow24, pow25, pow27, pow30, pow34, pow38,].span(); + let pows = [pow0, pow17, pow24, pow25, pow27, pow30, pow34, pow38].span(); for pow in pows { let value = (column9 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } // Sum the OODS boundary constraints on the composition polynomials. let oods_point_to_deg = pow(oods_point, CONSTRAINT_DEGREE.into()); diff --git a/src/air/layouts/starknet/contract.cairo b/src/air/layouts/starknet/contract.cairo index 1c5d62177..6da943524 100644 --- a/src/air/layouts/starknet/contract.cairo +++ b/src/air/layouts/starknet/contract.cairo @@ -8,16 +8,15 @@ trait ILayoutCompositionContract { constraint_coefficients: Span, point: felt252, trace_generator: felt252, - global_values: GlobalValues + global_values: GlobalValues, ) -> felt252; } #[starknet::contract] mod LayoutCompositionContract { + use integrity::air::layouts::starknet::autogenerated::eval_composition_polynomial_inner; + use integrity::air::layouts::starknet::global_values::GlobalValues; use super::ILayoutCompositionContract; - use integrity::air::layouts::starknet::{ - global_values::GlobalValues, autogenerated::eval_composition_polynomial_inner, - }; #[storage] struct Storage {} @@ -30,10 +29,10 @@ mod LayoutCompositionContract { constraint_coefficients: Span, point: felt252, trace_generator: felt252, - global_values: GlobalValues + global_values: GlobalValues, ) -> felt252 { eval_composition_polynomial_inner( - mask_values, constraint_coefficients, point, trace_generator, global_values + mask_values, constraint_coefficients, point, trace_generator, global_values, ) } } diff --git a/src/air/layouts/starknet/global_values.cairo b/src/air/layouts/starknet/global_values.cairo index c82da1abb..fcb543769 100644 --- a/src/air/layouts/starknet/global_values.cairo +++ b/src/air/layouts/starknet/global_values.cairo @@ -74,5 +74,5 @@ struct InteractionElements { range_check16_perm_interaction_elm: felt252, diluted_check_permutation_interaction_elm: felt252, diluted_check_interaction_z: felt252, - diluted_check_interaction_alpha: felt252 + diluted_check_interaction_alpha: felt252, } diff --git a/src/air/layouts/starknet/public_input.cairo b/src/air/layouts/starknet/public_input.cairo index 855f34d0e..d0a9b29ee 100644 --- a/src/air/layouts/starknet/public_input.cairo +++ b/src/air/layouts/starknet/public_input.cairo @@ -1,24 +1,18 @@ -use integrity::{ - common::{ - math::{pow, Felt252PartialOrd, Felt252Div}, - asserts::{assert_range_u128_le, assert_range_u128}, - }, - air::{ - public_memory::{Page, PageTrait}, - constants::{MAX_ADDRESS, INITIAL_PC, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}, - layouts::starknet::constants::{ - segments, get_builtins, CPU_COMPONENT_HEIGHT, CPU_COMPONENT_STEP, LAYOUT_CODE, - PEDERSEN_BUILTIN_ROW_RATIO, RANGE_CHECK_BUILTIN_ROW_RATIO, BITWISE_ROW_RATIO, - ECDSA_BUILTIN_ROW_RATIO, EC_OP_BUILTIN_ROW_RATIO, POSEIDON_ROW_RATIO - }, - public_input::{ - PublicInput, PublicInputTrait, verify_cairo1_public_input, verify_relaxed_public_input - } - }, - domains::StarkDomains +use core::hash::{Hash, HashStateExTrait, HashStateTrait}; +use core::pedersen::PedersenTrait; +use integrity::air::constants::{INITIAL_PC, MAX_ADDRESS, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}; +use integrity::air::layouts::starknet::constants::{ + BITWISE_ROW_RATIO, CPU_COMPONENT_HEIGHT, CPU_COMPONENT_STEP, ECDSA_BUILTIN_ROW_RATIO, + EC_OP_BUILTIN_ROW_RATIO, LAYOUT_CODE, PEDERSEN_BUILTIN_ROW_RATIO, POSEIDON_ROW_RATIO, + RANGE_CHECK_BUILTIN_ROW_RATIO, get_builtins, segments, }; - -use core::{pedersen::PedersenTrait, hash::{HashStateTrait, HashStateExTrait, Hash}}; +use integrity::air::public_input::{ + PublicInput, PublicInputTrait, verify_cairo1_public_input, verify_relaxed_public_input, +}; +use integrity::air::public_memory::{Page, PageTrait}; +use integrity::common::asserts::{assert_range_u128, assert_range_u128_le}; +use integrity::common::math::{Felt252Div, Felt252PartialOrd, pow}; +use integrity::domains::StarkDomains; use poseidon::poseidon_hash_span; impl StarknetPublicInputImpl of PublicInputTrait { @@ -52,11 +46,11 @@ impl StarknetPublicInputImpl of PublicInputTrait { let program_len = program_end_pc - initial_pc; let program = memory .extract_range( - initial_pc.try_into().unwrap(), program_len.try_into().unwrap(), ref memory_index + initial_pc.try_into().unwrap(), program_len.try_into().unwrap(), ref memory_index, ); assert( - *program[0] == 0x40780017fff7fff, 'Invalid program' + *program[0] == 0x40780017fff7fff, 'Invalid program', ); // Instruction: ap += N_BUILTINS. assert(*program[1] == builtins.len().into(), 'Invalid program'); assert(*program[2] == 0x1104800180018000, 'Invalid program'); // Instruction: call rel ?. @@ -90,21 +84,21 @@ impl StarknetPublicInputImpl of PublicInputTrait { stop_addresses.append(*public_segments.at(2 + i).stop_ptr); i += 1; - }; + } memory.verify_stack(initial_ap, begin_addresses.span(), builtins_len, ref memory_index); memory .verify_stack( final_ap - builtins_len.into(), stop_addresses.span(), builtins_len, - ref memory_index + ref memory_index, ); // 3. Output segment let output_len = output_stop - output_start; let output = memory .extract_range( - output_start.try_into().unwrap(), output_len.try_into().unwrap(), ref memory_index + output_start.try_into().unwrap(), output_len.try_into().unwrap(), ref memory_index, ); let output_hash = poseidon_hash_span(output); @@ -127,7 +121,7 @@ impl StarknetPublicInputImpl of PublicInputTrait { let n_steps = pow(2, *self.log_n_steps); let trace_length = *stark_domains.trace_domain_size; assert( - n_steps * CPU_COMPONENT_HEIGHT * CPU_COMPONENT_STEP == trace_length, 'Wrong trace size' + n_steps * CPU_COMPONENT_HEIGHT * CPU_COMPONENT_STEP == trace_length, 'Wrong trace size', ); assert(0 <= *self.range_check_min, 'wrong rc_min'); diff --git a/src/air/layouts/starknet/traces.cairo b/src/air/layouts/starknet/traces.cairo index 649ffb154..d223f1d6a 100644 --- a/src/air/layouts/starknet/traces.cairo +++ b/src/air/layouts/starknet/traces.cairo @@ -1,15 +1,13 @@ -use integrity::{ - air::layouts::starknet::{ - constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}, global_values::InteractionElements, - }, - channel::channel::{Channel, ChannelTrait}, - table_commitment::table_commitment::{ - TableCommitment, TableDecommitment, TableCommitmentWitness, table_commit, table_decommit, - TableCommitmentConfig - }, - vector_commitment::vector_commitment::VectorCommitmentConfigTrait, - common::asserts::assert_in_range, settings::VerifierSettings, +use integrity::air::layouts::starknet::constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}; +use integrity::air::layouts::starknet::global_values::InteractionElements; +use integrity::channel::channel::{Channel, ChannelTrait}; +use integrity::common::asserts::assert_in_range; +use integrity::settings::VerifierSettings; +use integrity::table_commitment::table_commitment::{ + TableCommitment, TableCommitmentConfig, TableCommitmentWitness, TableDecommitment, table_commit, + table_decommit, }; +use integrity::vector_commitment::vector_commitment::VectorCommitmentConfigTrait; // A protocol component (see stark.cairo for details about protocol components) for the traces // of the CPU AIR. @@ -89,11 +87,11 @@ impl TracesConfigImpl of TracesConfigTrait { // Reads the traces commitment from the channel. // Returns the commitment, along with GlobalValue required to evaluate the constraint polynomial. fn traces_commit( - ref channel: Channel, unsent_commitment: TracesUnsentCommitment, config: TracesConfig + ref channel: Channel, unsent_commitment: TracesUnsentCommitment, config: TracesConfig, ) -> TracesCommitment { // Read original commitment. let original_commitment = table_commit( - ref channel, unsent_commitment.original, config.original + ref channel, unsent_commitment.original, config.original, ); // Generate interaction elements for the first interaction. let interaction_elements = InteractionElements { @@ -106,7 +104,7 @@ fn traces_commit( }; // Read interaction commitment. let interaction_commitment = table_commit( - ref channel, unsent_commitment.interaction, config.interaction + ref channel, unsent_commitment.interaction, config.interaction, ); TracesCommitment { @@ -127,6 +125,6 @@ fn traces_decommit( ) { table_decommit(commitment.original, queries, decommitment.original, witness.original, settings); table_decommit( - commitment.interaction, queries, decommitment.interaction, witness.interaction, settings + commitment.interaction, queries, decommitment.interaction, witness.interaction, settings, ) } diff --git a/src/air/layouts/starknet_with_keccak.cairo b/src/air/layouts/starknet_with_keccak.cairo index c2195ad88..bed1d7af9 100644 --- a/src/air/layouts/starknet_with_keccak.cairo +++ b/src/air/layouts/starknet_with_keccak.cairo @@ -1,45 +1,39 @@ mod autogenerated; mod constants; +#[cfg(feature: 'split')] +mod contract; mod global_values; mod public_input; mod traces; -#[cfg(feature: 'split')] -mod contract; - -use integrity::{ - air::{ - constants::{SHIFT_POINT_X, SHIFT_POINT_Y, StarkCurve}, - layouts::starknet_with_keccak::{ - global_values::{ - GlobalValues, InteractionElements, EcPoint, EcdsaSigConfig, CurveConfig - }, - public_input::StarknetWithKeccakPublicInputImpl, - constants::{ - PUBLIC_MEMORY_STEP, DILUTED_N_BITS, DILUTED_SPACING, PEDERSEN_BUILTIN_RATIO, - PEDERSEN_BUILTIN_REPETITIONS, segments, ECDSA_BUILTIN_RATIO, - ECDSA_BUILTIN_REPETITIONS, POSEIDON_RATIO, KECCAK_RATIO - }, - }, - air::{AIRComposition, AIROods}, diluted::get_diluted_product, - periodic_columns::{ - eval_pedersen_x, eval_pedersen_y, eval_ecdsa_x, eval_ecdsa_y, eval_keccak_round_key0, - eval_keccak_round_key1, eval_keccak_round_key3, eval_keccak_round_key7, - eval_keccak_round_key15, eval_keccak_round_key31, eval_keccak_round_key63, - eval_poseidon_poseidon_full_round_key0, eval_poseidon_poseidon_full_round_key1, - eval_poseidon_poseidon_full_round_key2, eval_poseidon_poseidon_partial_round_key0, - eval_poseidon_poseidon_partial_round_key1 - }, - public_input::{PublicInput, get_public_memory_product_ratio} - }, - common::{math::{Felt252Div, Felt252PartialOrd, pow}, asserts::assert_range_u128} -}; -use starknet::ContractAddress; - +use integrity::air::air::{AIRComposition, AIROods}; +use integrity::air::constants::{SHIFT_POINT_X, SHIFT_POINT_Y, StarkCurve}; +use integrity::air::diluted::get_diluted_product; #[cfg(feature: 'monolith')] use integrity::air::layouts::starknet_with_keccak::autogenerated::{ eval_composition_polynomial_inner as eval_composition_polynomial_inner_, eval_oods_polynomial_inner as eval_oods_polynomial_inner_, }; +use integrity::air::layouts::starknet_with_keccak::constants::{ + DILUTED_N_BITS, DILUTED_SPACING, ECDSA_BUILTIN_RATIO, ECDSA_BUILTIN_REPETITIONS, KECCAK_RATIO, + PEDERSEN_BUILTIN_RATIO, PEDERSEN_BUILTIN_REPETITIONS, POSEIDON_RATIO, PUBLIC_MEMORY_STEP, + segments, +}; +use integrity::air::layouts::starknet_with_keccak::global_values::{ + CurveConfig, EcPoint, EcdsaSigConfig, GlobalValues, InteractionElements, +}; +use integrity::air::layouts::starknet_with_keccak::public_input::StarknetWithKeccakPublicInputImpl; +use integrity::air::periodic_columns::{ + eval_ecdsa_x, eval_ecdsa_y, eval_keccak_round_key0, eval_keccak_round_key1, + eval_keccak_round_key15, eval_keccak_round_key3, eval_keccak_round_key31, + eval_keccak_round_key63, eval_keccak_round_key7, eval_pedersen_x, eval_pedersen_y, + eval_poseidon_poseidon_full_round_key0, eval_poseidon_poseidon_full_round_key1, + eval_poseidon_poseidon_full_round_key2, eval_poseidon_poseidon_partial_round_key0, + eval_poseidon_poseidon_partial_round_key1, +}; +use integrity::air::public_input::{PublicInput, get_public_memory_product_ratio}; +use integrity::common::asserts::assert_range_u128; +use integrity::common::math::{Felt252Div, Felt252PartialOrd, pow}; +use starknet::ContractAddress; #[cfg(feature: 'monolith')] fn eval_composition_polynomial_inner( @@ -51,7 +45,7 @@ fn eval_composition_polynomial_inner( contract_address: ContractAddress, ) -> felt252 { eval_composition_polynomial_inner_( - mask_values, constraint_coefficients, point, trace_generator, global_values + mask_values, constraint_coefficients, point, trace_generator, global_values, ) } @@ -69,7 +63,6 @@ fn eval_oods_polynomial_inner( column_values, oods_values, constraint_coefficients, point, oods_point, trace_generator, ) } - #[cfg(feature: 'split')] use integrity::air::layouts::starknet_with_keccak::contract::{ ILayoutCompositionContractDispatcher, ILayoutCompositionContractDispatcherTrait, @@ -87,7 +80,7 @@ fn eval_composition_polynomial_inner( ) -> felt252 { ILayoutCompositionContractDispatcher { contract_address } .eval_composition_polynomial_inner( - mask_values, constraint_coefficients, point, trace_generator, global_values + mask_values, constraint_coefficients, point, trace_generator, global_values, ) } @@ -125,14 +118,14 @@ impl StarknetWithKeccakAIRCompositionImpl of AIRComposition() @@ -12508,13 +12506,14 @@ fn eval_composition_polynomial_inner( + 3618502788666131213697322783095070105623107215331596699973092056135872020479 * poseidon_poseidon_partial_rounds_state1_cubed_21 + 1246177936547655338400308396717835700699368047388302793172818304164989556526)) - / domain14, // Constraint: poseidon/poseidon/margin_partial_to_full2. - ].span(); + / domain14 // Constraint: poseidon/poseidon/margin_partial_to_full2. + ] + .span(); let mut total_sum = 0; for value in values { total_sum += *constraint_coefficients.pop_front().unwrap() * *value; - }; + } total_sum } @@ -19090,7 +19089,7 @@ fn eval_composition_polynomial_inner_part1( column14_inter1_row0, column14_inter1_row1, column14_inter1_row2, - column14_inter1_row5 + column14_inter1_row5, ] = (*mask_values .multi_pop_front::<734>() @@ -19810,13 +19809,14 @@ fn eval_composition_polynomial_inner_part1( (keccak_keccak_parse_to_diluted_partial_diluted1_0 * keccak_keccak_parse_to_diluted_partial_diluted1_0 - keccak_keccak_parse_to_diluted_partial_diluted1_0) - / domain43, // Constraint: keccak/keccak/parse_to_diluted/extract_bit_first_invocation1. - ].span(); + / domain43 // Constraint: keccak/keccak/parse_to_diluted/extract_bit_first_invocation1. + ] + .span(); let mut total_sum = 0; for value in values { total_sum += *constraint_coefficients.pop_front().unwrap() * *value; - }; + } total_sum } @@ -30313,7 +30313,7 @@ fn eval_composition_polynomial_inner_part2( column10_row516115, column10_row516339, column10_row516347, - column10_row520199 + column10_row520199, ] = (*mask_values .multi_pop_front::<621>() @@ -30673,13 +30673,14 @@ fn eval_composition_polynomial_inner_part2( (keccak_keccak_sum_parities2_50176 + column1_row405764 - (column1_row4609 + column1_row7553 + column1_row7553)) - / domain135, // Constraint: keccak/keccak/theta_rho_pi_i3_j2/n1. - ].span(); + / domain135 // Constraint: keccak/keccak/theta_rho_pi_i3_j2/n1. + ] + .span(); let mut total_sum = 0; for value in values { total_sum += *constraint_coefficients.pop_front().unwrap() * *value; - }; + } total_sum } @@ -37818,7 +37819,7 @@ fn eval_composition_polynomial_inner_part3( column11_row477, column11_row493, column11_row501, - column11_row509 + column11_row509, ] = (*mask_values .multi_pop_front::<701>() @@ -38180,13 +38181,14 @@ fn eval_composition_polynomial_inner_part3( + 3618502788666131213697322783095070105623107215331596699973092056135872020479 * poseidon_poseidon_partial_rounds_state1_cubed_21 + 1246177936547655338400308396717835700699368047388302793172818304164989556526)) - / domain14, // Constraint: poseidon/poseidon/margin_partial_to_full2. - ].span(); + / domain14 // Constraint: poseidon/poseidon/margin_partial_to_full2. + ] + .span(); let mut total_sum = 0; for value in values { total_sum += *constraint_coefficients.pop_front().unwrap() * *value; - }; + } total_sum } @@ -38846,7 +38848,7 @@ fn eval_oods_polynomial_inner( column11, column12, column13, - column14 + column14, ] = (*column_values .multi_pop_front::<15>() @@ -38856,800 +38858,170 @@ fn eval_oods_polynomial_inner( // Sum the OODS constraints on the trace polynomials. let mut total_sum = 0; let pows = [ - pow0, - pow53, - pow54, - pow55, - pow56, - pow57, - pow58, - pow59, - pow60, - pow61, - pow62, - pow63, - pow64, - pow65, - pow66, - pow67, - ].span(); + pow0, pow53, pow54, pow55, pow56, pow57, pow58, pow59, pow60, pow61, pow62, pow63, pow64, + pow65, pow66, pow67, + ] + .span(); for pow in pows { let value = (column0 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } let pows = [ - pow0, - pow53, - pow54, - pow56, - pow58, - pow60, - pow64, - pow68, - pow81, - pow92, - pow100, - pow114, - pow119, - pow127, - pow131, - pow141, - pow143, - pow147, - pow149, - pow150, - pow152, - pow158, - pow161, - pow164, - pow171, - pow175, - pow178, - pow181, - pow200, - pow214, - pow219, - pow220, - pow223, - pow218, - pow222, - pow225, - pow226, - pow227, - pow228, - pow229, - pow230, - pow231, - pow232, - pow233, - pow234, - pow237, - pow238, - pow241, - pow242, - pow243, - pow244, - pow245, - pow246, - pow247, - pow248, - pow249, - pow252, - pow256, - pow254, - pow257, - pow259, - pow258, - pow260, - pow262, - pow261, - pow263, - pow264, - pow266, - pow270, - pow272, - pow273, - pow274, - pow276, - pow277, - pow279, - pow278, - pow280, - pow282, - pow281, - pow283, - pow284, - pow285, - pow286, - pow287, - pow288, - pow289, - pow294, - pow290, - pow295, - pow297, - pow298, - pow296, - pow299, - pow300, - pow303, - pow308, - pow309, - pow310, - pow311, - pow312, - pow313, - pow314, - pow315, - pow316, - pow317, - pow318, - pow322, - pow319, - pow323, - pow324, - pow325, - pow326, - pow327, - pow328, - pow329, - pow330, - pow331, - pow332, - pow333, - pow335, - pow338, - pow342, - pow343, - pow345, - pow347, - pow346, - pow348, - pow350, - pow351, - pow354, - pow357, - pow352, - pow355, - pow353, - pow356, - pow358, - pow359, - pow360, - pow361, - pow362, - pow363, - pow364, - pow366, - pow367, - pow368, - pow369, - pow370, - pow371, - pow372, - pow373, - pow374, - pow375, - pow376, - pow379, - pow380, - pow382, - pow383, - pow384, - pow385, - pow386, - pow388, - pow389, - pow391, - pow392, - pow393, - pow403, - pow417, - pow424, - pow429, - pow378, - pow398, - pow478, - pow475, - pow476, - pow477, - pow472, - pow473, - pow474, - pow481, - pow471, - pow480, - pow482, - pow483, - pow484, - pow486, - pow52, - pow621, - pow487, - pow51, - pow50, - pow48, - pow540, - pow542, - pow544, - pow546, - pow548, - pow549, - pow530, - pow529, - pow526, - pow531, - pow47, - pow528, - pow536, - pow532, - pow533, - pow534, - pow46, - pow45, - pow44, - pow49, - pow541, - pow543, - pow545, - pow547, - pow550, - pow551, - pow43, - pow42, - pow41, - pow40, - pow39, - pow38, - pow513, - pow514, - pow512, - pow511, - pow37, - pow36, - pow35, - pow320, - pow34, - pow106, - pow137, - pow33, - pow105, - pow136, - pow32, - pow31, - pow444, - pow450, - pow30, - pow104, - pow135, - pow29, - pow28, - pow27, - pow520, - pow523, - pow519, - pow521, - pow555, - pow556, - pow557, - pow558, - pow559, - pow561, - pow571, - pow570, - pow569, - pow568, - pow26, - pow524, - pow25, - pow174, - pow217, - pow553, - pow24, - pow103, - pow134, - pow23, - pow22, - pow173, - pow216, - pow21, - pow102, - pow133, - pow573, - pow321, - pow562, - pow563, - pow620, - pow619, - pow617, - pow616, - pow20, - pow19, - pow18, - pow17, - pow387, - pow517, - pow518, - pow578, - pow16, - pow15, - pow14, - pow172, - pow215, - pow13, - pow101, - pow132, - pow584, - pow585, - pow618, - pow583, - pow12, - pow581, - pow11, - pow177, - pow10, - pow334, - pow9, - pow365, - pow592, - pow594, - pow593, - pow595, - pow596, - pow8, - pow597, - pow598, - pow600, - pow602, - pow603, - pow601, - pow608, - pow609, - pow610, - pow611, - pow613, - pow615, - pow612, - pow614, - ].span(); + pow0, pow53, pow54, pow56, pow58, pow60, pow64, pow68, pow81, pow92, pow100, pow114, pow119, + pow127, pow131, pow141, pow143, pow147, pow149, pow150, pow152, pow158, pow161, pow164, + pow171, pow175, pow178, pow181, pow200, pow214, pow219, pow220, pow223, pow218, pow222, + pow225, pow226, pow227, pow228, pow229, pow230, pow231, pow232, pow233, pow234, pow237, + pow238, pow241, pow242, pow243, pow244, pow245, pow246, pow247, pow248, pow249, pow252, + pow256, pow254, pow257, pow259, pow258, pow260, pow262, pow261, pow263, pow264, pow266, + pow270, pow272, pow273, pow274, pow276, pow277, pow279, pow278, pow280, pow282, pow281, + pow283, pow284, pow285, pow286, pow287, pow288, pow289, pow294, pow290, pow295, pow297, + pow298, pow296, pow299, pow300, pow303, pow308, pow309, pow310, pow311, pow312, pow313, + pow314, pow315, pow316, pow317, pow318, pow322, pow319, pow323, pow324, pow325, pow326, + pow327, pow328, pow329, pow330, pow331, pow332, pow333, pow335, pow338, pow342, pow343, + pow345, pow347, pow346, pow348, pow350, pow351, pow354, pow357, pow352, pow355, pow353, + pow356, pow358, pow359, pow360, pow361, pow362, pow363, pow364, pow366, pow367, pow368, + pow369, pow370, pow371, pow372, pow373, pow374, pow375, pow376, pow379, pow380, pow382, + pow383, pow384, pow385, pow386, pow388, pow389, pow391, pow392, pow393, pow403, pow417, + pow424, pow429, pow378, pow398, pow478, pow475, pow476, pow477, pow472, pow473, pow474, + pow481, pow471, pow480, pow482, pow483, pow484, pow486, pow52, pow621, pow487, pow51, pow50, + pow48, pow540, pow542, pow544, pow546, pow548, pow549, pow530, pow529, pow526, pow531, + pow47, pow528, pow536, pow532, pow533, pow534, pow46, pow45, pow44, pow49, pow541, pow543, + pow545, pow547, pow550, pow551, pow43, pow42, pow41, pow40, pow39, pow38, pow513, pow514, + pow512, pow511, pow37, pow36, pow35, pow320, pow34, pow106, pow137, pow33, pow105, pow136, + pow32, pow31, pow444, pow450, pow30, pow104, pow135, pow29, pow28, pow27, pow520, pow523, + pow519, pow521, pow555, pow556, pow557, pow558, pow559, pow561, pow571, pow570, pow569, + pow568, pow26, pow524, pow25, pow174, pow217, pow553, pow24, pow103, pow134, pow23, pow22, + pow173, pow216, pow21, pow102, pow133, pow573, pow321, pow562, pow563, pow620, pow619, + pow617, pow616, pow20, pow19, pow18, pow17, pow387, pow517, pow518, pow578, pow16, pow15, + pow14, pow172, pow215, pow13, pow101, pow132, pow584, pow585, pow618, pow583, pow12, pow581, + pow11, pow177, pow10, pow334, pow9, pow365, pow592, pow594, pow593, pow595, pow596, pow8, + pow597, pow598, pow600, pow602, pow603, pow601, pow608, pow609, pow610, pow611, pow613, + pow615, pow612, pow614, + ] + .span(); for pow in pows { let value = (column1 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow53,].span(); + let pows = [pow0, pow53].span(); for pow in pows { let value = (column2 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow53, pow170, pow171, pow213,].span(); + let pows = [pow0, pow53, pow170, pow171, pow213].span(); for pow in pows { let value = (column3 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow53, pow170, pow171,].span(); + let pows = [pow0, pow53, pow170, pow171].span(); for pow in pows { let value = (column4 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow53, pow149, pow150, pow152, pow153, pow167, pow168, pow171,].span(); + let pows = [pow0, pow53, pow149, pow150, pow152, pow153, pow167, pow168, pow171].span(); for pow in pows { let value = (column5 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow170,].span(); + let pows = [pow0, pow170].span(); for pow in pows { let value = (column6 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } let pows = [ - pow0, - pow53, - pow54, - pow55, - pow56, - pow57, - pow58, - pow59, - pow60, - pow61, - pow62, - pow63, - pow64, - pow65, - pow66, - pow67, - pow418, - pow419, - pow420, - pow427, - pow428, - pow431, - pow432, - pow433, - pow434, - pow435, - pow436, - pow437, - pow438, - pow439, - pow440, - pow441, - pow442, - pow443, - pow446, - pow447, - pow448, - pow449, - pow451, - pow452, - pow453, - pow454, - pow457, - pow460, - pow464, - pow468, - pow504, - pow505, - pow506, - pow507, - pow508, - pow515, - pow516, - pow565, - pow566, - pow572, - pow574, - pow576, - pow579, - pow580, - pow588, - ].span(); + pow0, pow53, pow54, pow55, pow56, pow57, pow58, pow59, pow60, pow61, pow62, pow63, pow64, + pow65, pow66, pow67, pow418, pow419, pow420, pow427, pow428, pow431, pow432, pow433, pow434, + pow435, pow436, pow437, pow438, pow439, pow440, pow441, pow442, pow443, pow446, pow447, + pow448, pow449, pow451, pow452, pow453, pow454, pow457, pow460, pow464, pow468, pow504, + pow505, pow506, pow507, pow508, pow515, pow516, pow565, pow566, pow572, pow574, pow576, + pow579, pow580, pow588, + ] + .span(); for pow in pows { let value = (column7 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } let pows = [ - pow0, - pow53, - pow54, - pow55, - pow56, - pow57, - pow58, - pow59, - pow60, - pow61, - pow64, - pow65, - pow68, - pow85, - pow86, - pow109, - pow110, - pow122, - pow123, - pow138, - pow139, - pow144, - pow145, - pow154, - pow155, - pow179, - pow180, - pow184, - pow185, - pow190, - pow194, - pow197, - pow195, - pow198, - pow196, - pow199, - pow202, - pow221, - pow224, - pow235, - pow236, - pow239, - pow240, - pow250, - pow251, - pow268, - pow275, - pow337, - pow7, - pow293, - pow306, - pow307, - pow336, - pow348, - pow349, - pow381, - pow399, - pow425, - pow430, - pow377, - pow401, - pow400, - pow409, - pow414, - pow413, - pow394, - pow412, - pow410, - pow469, - pow489, - pow623, - pow622, - pow470, - pow490, - pow485, - pow497, - pow496, - pow495, - pow492, + pow0, pow53, pow54, pow55, pow56, pow57, pow58, pow59, pow60, pow61, pow64, pow65, pow68, + pow85, pow86, pow109, pow110, pow122, pow123, pow138, pow139, pow144, pow145, pow154, + pow155, pow179, pow180, pow184, pow185, pow190, pow194, pow197, pow195, pow198, pow196, + pow199, pow202, pow221, pow224, pow235, pow236, pow239, pow240, pow250, pow251, pow268, + pow275, pow337, pow7, pow293, pow306, pow307, pow336, pow348, pow349, pow381, pow399, + pow425, pow430, pow377, pow401, pow400, pow409, pow414, pow413, pow394, pow412, pow410, + pow469, pow489, pow623, pow622, pow470, pow490, pow485, pow497, pow496, pow495, pow492, pow539, - ].span(); + ] + .span(); for pow in pows { let value = (column8 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow53, pow54, pow55,].span(); + let pows = [pow0, pow53, pow54, pow55].span(); for pow in pows { let value = (column9 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } let pows = [ - pow0, - pow53, - pow54, - pow55, - pow56, - pow57, - pow58, - pow59, - pow60, - pow61, - pow64, - pow65, - pow71, - pow72, - pow73, - pow76, - pow89, - pow110, - pow112, - pow125, - pow139, - pow140, - pow146, - pow156, - pow162, - pow165, - pow167, - pow176, - pow183, - pow205, - pow207, - pow208, - pow210, - pow211, - pow265, - pow269, - pow271, - pow302, - pow304, - pow305, - pow339, - pow344, - pow390, - pow395, - pow396, - pow397, - pow402, - pow416, - pow421, - pow422, - pow423, - pow415, - pow404, - pow426, - pow445, - pow491, - pow493, - pow6, - pow70, - pow525, - pow527, - pow535, - pow537, - pow5, - pow69, - pow301, - pow510, - pow509, - pow253, - pow255, - pow267, - pow291, - pow292, - pow624, - pow625, - pow626, - pow522, - pow552, - pow554, - pow567, - pow627, - pow4, - pow340, - pow341, - pow564, - pow575, - pow3, - pow2, - pow80, - pow577, - pow560, - pow1, - pow604, - pow586, - pow587, - pow582, - pow589, - pow538, - pow590, - pow591, - pow599, - pow605, - pow606, - pow607, - pow628, - ].span(); + pow0, pow53, pow54, pow55, pow56, pow57, pow58, pow59, pow60, pow61, pow64, pow65, pow71, + pow72, pow73, pow76, pow89, pow110, pow112, pow125, pow139, pow140, pow146, pow156, pow162, + pow165, pow167, pow176, pow183, pow205, pow207, pow208, pow210, pow211, pow265, pow269, + pow271, pow302, pow304, pow305, pow339, pow344, pow390, pow395, pow396, pow397, pow402, + pow416, pow421, pow422, pow423, pow415, pow404, pow426, pow445, pow491, pow493, pow6, pow70, + pow525, pow527, pow535, pow537, pow5, pow69, pow301, pow510, pow509, pow253, pow255, pow267, + pow291, pow292, pow624, pow625, pow626, pow522, pow552, pow554, pow567, pow627, pow4, + pow340, pow341, pow564, pow575, pow3, pow2, pow80, pow577, pow560, pow1, pow604, pow586, + pow587, pow582, pow589, pow538, pow590, pow591, pow599, pow605, pow606, pow607, pow628, + ] + .span(); for pow in pows { let value = (column10 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } let pows = [ - pow0, - pow53, - pow54, - pow55, - pow56, - pow57, - pow58, - pow59, - pow60, - pow61, - pow62, - pow63, - pow64, - pow65, - pow66, - pow68, - pow71, - pow72, - pow73, - pow74, - pow75, - pow76, - pow77, - pow78, - pow79, - pow82, - pow83, - pow84, - pow85, - pow87, - pow88, - pow90, - pow91, - pow93, - pow94, - pow95, - pow96, - pow97, - pow98, - pow99, - pow107, - pow108, - pow110, - pow111, - pow113, - pow115, - pow116, - pow117, - pow118, - pow120, - pow121, - pow124, - pow126, - pow128, - pow129, - pow130, - pow142, - pow148, - pow151, - pow157, - pow159, - pow160, - pow163, - pow166, - pow169, - pow182, - pow186, - pow187, - pow188, - pow189, - pow190, - pow191, - pow192, - pow193, - pow201, - pow203, - pow204, - pow206, - pow209, - pow212, - pow405, - pow406, - pow407, - pow408, - pow411, - pow431, - pow455, - pow456, - pow458, - pow459, - pow461, - pow462, - pow463, - pow466, - pow467, - pow479, - pow488, - pow494, - pow465, - pow498, - pow499, - pow500, - pow501, - pow502, - pow503, - ].span(); + pow0, pow53, pow54, pow55, pow56, pow57, pow58, pow59, pow60, pow61, pow62, pow63, pow64, + pow65, pow66, pow68, pow71, pow72, pow73, pow74, pow75, pow76, pow77, pow78, pow79, pow82, + pow83, pow84, pow85, pow87, pow88, pow90, pow91, pow93, pow94, pow95, pow96, pow97, pow98, + pow99, pow107, pow108, pow110, pow111, pow113, pow115, pow116, pow117, pow118, pow120, + pow121, pow124, pow126, pow128, pow129, pow130, pow142, pow148, pow151, pow157, pow159, + pow160, pow163, pow166, pow169, pow182, pow186, pow187, pow188, pow189, pow190, pow191, + pow192, pow193, pow201, pow203, pow204, pow206, pow209, pow212, pow405, pow406, pow407, + pow408, pow411, pow431, pow455, pow456, pow458, pow459, pow461, pow462, pow463, pow466, + pow467, pow479, pow488, pow494, pow465, pow498, pow499, pow500, pow501, pow502, pow503, + ] + .span(); for pow in pows { let value = (column11 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow53,].span(); + let pows = [pow0, pow53].span(); for pow in pows { let value = (column12 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow53,].span(); + let pows = [pow0, pow53].span(); for pow in pows { let value = (column13 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } - let pows = [pow0, pow53, pow54, pow57,].span(); + let pows = [pow0, pow53, pow54, pow57].span(); for pow in pows { let value = (column14 - *oods_values.pop_front().unwrap()) / (point - *pow * oods_point); total_sum += *constraint_coefficients.pop_front().unwrap() * value; - }; + } // Sum the OODS boundary constraints on the composition polynomials. let oods_point_to_deg = pow(oods_point, CONSTRAINT_DEGREE.into()); diff --git a/src/air/layouts/starknet_with_keccak/contract.cairo b/src/air/layouts/starknet_with_keccak/contract.cairo index 0aca5ffc3..2123432e8 100644 --- a/src/air/layouts/starknet_with_keccak/contract.cairo +++ b/src/air/layouts/starknet_with_keccak/contract.cairo @@ -8,7 +8,7 @@ trait ILayoutCompositionContract { constraint_coefficients: Span, point: felt252, trace_generator: felt252, - global_values: GlobalValues + global_values: GlobalValues, ) -> felt252; } @@ -27,12 +27,12 @@ trait ILayoutOodsContract { #[starknet::contract] mod LayoutCompositionContract { + use integrity::air::layouts::starknet_with_keccak::global_values::GlobalValues; + use starknet::ContractAddress; use super::{ ILayoutCompositionContract, ILayoutCompositionContractDispatcher, - ILayoutCompositionContractDispatcherTrait + ILayoutCompositionContractDispatcherTrait, }; - use integrity::air::layouts::starknet_with_keccak::{global_values::GlobalValues,}; - use starknet::ContractAddress; #[storage] @@ -47,7 +47,7 @@ mod LayoutCompositionContract { ref self: ContractState, contract_1: ContractAddress, contract_2: ContractAddress, - contract_3: ContractAddress + contract_3: ContractAddress, ) { self.contract_1.write(contract_1); self.contract_2.write(contract_2); @@ -62,12 +62,12 @@ mod LayoutCompositionContract { mut constraint_coefficients: Span, point: felt252, trace_generator: felt252, - global_values: GlobalValues + global_values: GlobalValues, ) -> felt252 { let mut total_sum = 0; total_sum += - ILayoutCompositionContractDispatcher { contract_address: self.contract_1.read(), } + ILayoutCompositionContractDispatcher { contract_address: self.contract_1.read() } .eval_composition_polynomial_inner( mask_values, (*constraint_coefficients.multi_pop_front::<219>().unwrap()).unbox().span(), @@ -77,7 +77,7 @@ mod LayoutCompositionContract { ); total_sum += - ILayoutCompositionContractDispatcher { contract_address: self.contract_2.read(), } + ILayoutCompositionContractDispatcher { contract_address: self.contract_2.read() } .eval_composition_polynomial_inner( mask_values, (*constraint_coefficients.multi_pop_front::<69>().unwrap()).unbox().span(), @@ -87,7 +87,7 @@ mod LayoutCompositionContract { ); total_sum += - ILayoutCompositionContractDispatcher { contract_address: self.contract_3.read(), } + ILayoutCompositionContractDispatcher { contract_address: self.contract_3.read() } .eval_composition_polynomial_inner( mask_values, (*constraint_coefficients.multi_pop_front::<59>().unwrap()).unbox().span(), @@ -104,11 +104,10 @@ mod LayoutCompositionContract { #[starknet::contract] mod LayoutCompositionPart1Contract { - use super::ILayoutCompositionContract; - use integrity::air::layouts::starknet_with_keccak::{ - global_values::GlobalValues, autogenerated::eval_composition_polynomial_inner_part1, - }; + use integrity::air::layouts::starknet_with_keccak::autogenerated::eval_composition_polynomial_inner_part1; + use integrity::air::layouts::starknet_with_keccak::global_values::GlobalValues; use starknet::ContractAddress; + use super::ILayoutCompositionContract; #[storage] @@ -122,7 +121,7 @@ mod LayoutCompositionPart1Contract { constraint_coefficients: Span, point: felt252, trace_generator: felt252, - global_values: GlobalValues + global_values: GlobalValues, ) -> felt252 { eval_composition_polynomial_inner_part1( mask_values, constraint_coefficients, point, trace_generator, global_values, @@ -133,11 +132,10 @@ mod LayoutCompositionPart1Contract { #[starknet::contract] mod LayoutCompositionPart2Contract { - use super::ILayoutCompositionContract; - use integrity::air::layouts::starknet_with_keccak::{ - global_values::GlobalValues, autogenerated::eval_composition_polynomial_inner_part2, - }; + use integrity::air::layouts::starknet_with_keccak::autogenerated::eval_composition_polynomial_inner_part2; + use integrity::air::layouts::starknet_with_keccak::global_values::GlobalValues; use starknet::ContractAddress; + use super::ILayoutCompositionContract; #[storage] @@ -151,7 +149,7 @@ mod LayoutCompositionPart2Contract { constraint_coefficients: Span, point: felt252, trace_generator: felt252, - global_values: GlobalValues + global_values: GlobalValues, ) -> felt252 { eval_composition_polynomial_inner_part2( mask_values, constraint_coefficients, point, trace_generator, global_values, @@ -162,11 +160,10 @@ mod LayoutCompositionPart2Contract { #[starknet::contract] mod LayoutCompositionPart3Contract { - use super::ILayoutCompositionContract; - use integrity::air::layouts::starknet_with_keccak::{ - global_values::GlobalValues, autogenerated::eval_composition_polynomial_inner_part3, - }; + use integrity::air::layouts::starknet_with_keccak::autogenerated::eval_composition_polynomial_inner_part3; + use integrity::air::layouts::starknet_with_keccak::global_values::GlobalValues; use starknet::ContractAddress; + use super::ILayoutCompositionContract; #[storage] @@ -180,7 +177,7 @@ mod LayoutCompositionPart3Contract { constraint_coefficients: Span, point: felt252, trace_generator: felt252, - global_values: GlobalValues + global_values: GlobalValues, ) -> felt252 { eval_composition_polynomial_inner_part3( mask_values, constraint_coefficients, point, trace_generator, global_values, @@ -191,11 +188,10 @@ mod LayoutCompositionPart3Contract { #[starknet::contract] mod LayoutOodsContract { - use super::{ILayoutOodsContract}; - use integrity::air::layouts::starknet_with_keccak::{ - global_values::GlobalValues, autogenerated::eval_oods_polynomial_inner, - }; + use integrity::air::layouts::starknet_with_keccak::autogenerated::eval_oods_polynomial_inner; + use integrity::air::layouts::starknet_with_keccak::global_values::GlobalValues; use starknet::ContractAddress; + use super::ILayoutOodsContract; #[storage] struct Storage {} diff --git a/src/air/layouts/starknet_with_keccak/global_values.cairo b/src/air/layouts/starknet_with_keccak/global_values.cairo index a6821891f..45f080536 100644 --- a/src/air/layouts/starknet_with_keccak/global_values.cairo +++ b/src/air/layouts/starknet_with_keccak/global_values.cairo @@ -82,5 +82,5 @@ struct InteractionElements { range_check16_perm_interaction_elm: felt252, diluted_check_permutation_interaction_elm: felt252, diluted_check_interaction_z: felt252, - diluted_check_interaction_alpha: felt252 + diluted_check_interaction_alpha: felt252, } diff --git a/src/air/layouts/starknet_with_keccak/public_input.cairo b/src/air/layouts/starknet_with_keccak/public_input.cairo index 958ff233f..f9d9914ed 100644 --- a/src/air/layouts/starknet_with_keccak/public_input.cairo +++ b/src/air/layouts/starknet_with_keccak/public_input.cairo @@ -1,24 +1,18 @@ -use integrity::{ - common::{ - math::{pow, Felt252PartialOrd, Felt252Div}, - asserts::{assert_range_u128_le, assert_range_u128}, - }, - air::{ - public_memory::{Page, PageTrait}, - constants::{MAX_ADDRESS, INITIAL_PC, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}, - layouts::starknet_with_keccak::constants::{ - segments, get_builtins, CPU_COMPONENT_HEIGHT, CPU_COMPONENT_STEP, LAYOUT_CODE, - PEDERSEN_BUILTIN_ROW_RATIO, RANGE_CHECK_BUILTIN_ROW_RATIO, BITWISE_ROW_RATIO, - ECDSA_BUILTIN_ROW_RATIO, EC_OP_BUILTIN_ROW_RATIO, POSEIDON_ROW_RATIO, KECCAK_ROW_RATIO - }, - public_input::{ - PublicInput, PublicInputTrait, verify_cairo1_public_input, verify_relaxed_public_input - } - }, - domains::StarkDomains +use core::hash::{Hash, HashStateExTrait, HashStateTrait}; +use core::pedersen::PedersenTrait; +use integrity::air::constants::{INITIAL_PC, MAX_ADDRESS, MAX_LOG_N_STEPS, MAX_RANGE_CHECK}; +use integrity::air::layouts::starknet_with_keccak::constants::{ + BITWISE_ROW_RATIO, CPU_COMPONENT_HEIGHT, CPU_COMPONENT_STEP, ECDSA_BUILTIN_ROW_RATIO, + EC_OP_BUILTIN_ROW_RATIO, KECCAK_ROW_RATIO, LAYOUT_CODE, PEDERSEN_BUILTIN_ROW_RATIO, + POSEIDON_ROW_RATIO, RANGE_CHECK_BUILTIN_ROW_RATIO, get_builtins, segments, }; - -use core::{pedersen::PedersenTrait, hash::{HashStateTrait, HashStateExTrait, Hash}}; +use integrity::air::public_input::{ + PublicInput, PublicInputTrait, verify_cairo1_public_input, verify_relaxed_public_input, +}; +use integrity::air::public_memory::{Page, PageTrait}; +use integrity::common::asserts::{assert_range_u128, assert_range_u128_le}; +use integrity::common::math::{Felt252Div, Felt252PartialOrd, pow}; +use integrity::domains::StarkDomains; use poseidon::poseidon_hash_span; impl StarknetWithKeccakPublicInputImpl of PublicInputTrait { @@ -52,11 +46,11 @@ impl StarknetWithKeccakPublicInputImpl of PublicInputTrait { let program_len = program_end_pc - initial_pc; let program = memory .extract_range( - initial_pc.try_into().unwrap(), program_len.try_into().unwrap(), ref memory_index + initial_pc.try_into().unwrap(), program_len.try_into().unwrap(), ref memory_index, ); assert( - *program[0] == 0x40780017fff7fff, 'Invalid program' + *program[0] == 0x40780017fff7fff, 'Invalid program', ); // Instruction: ap += N_BUILTINS. assert(*program[1] == builtins.len().into(), 'Invalid program'); assert(*program[2] == 0x1104800180018000, 'Invalid program'); // Instruction: call rel ?. @@ -90,21 +84,21 @@ impl StarknetWithKeccakPublicInputImpl of PublicInputTrait { stop_addresses.append(*public_segments.at(2 + i).stop_ptr); i += 1; - }; + } memory.verify_stack(initial_ap, begin_addresses.span(), builtins_len, ref memory_index); memory .verify_stack( final_ap - builtins_len.into(), stop_addresses.span(), builtins_len, - ref memory_index + ref memory_index, ); // 3. Output segment let output_len = output_stop - output_start; let output = memory .extract_range( - output_start.try_into().unwrap(), output_len.try_into().unwrap(), ref memory_index + output_start.try_into().unwrap(), output_len.try_into().unwrap(), ref memory_index, ); let output_hash = poseidon_hash_span(output); @@ -127,7 +121,7 @@ impl StarknetWithKeccakPublicInputImpl of PublicInputTrait { let n_steps = pow(2, *self.log_n_steps); let trace_length = *stark_domains.trace_domain_size; assert( - n_steps * CPU_COMPONENT_HEIGHT * CPU_COMPONENT_STEP == trace_length, 'Wrong trace size' + n_steps * CPU_COMPONENT_HEIGHT * CPU_COMPONENT_STEP == trace_length, 'Wrong trace size', ); assert(0 <= *self.range_check_min, 'wrong rc_min'); diff --git a/src/air/layouts/starknet_with_keccak/traces.cairo b/src/air/layouts/starknet_with_keccak/traces.cairo index 6cf9ec91e..748581752 100644 --- a/src/air/layouts/starknet_with_keccak/traces.cairo +++ b/src/air/layouts/starknet_with_keccak/traces.cairo @@ -1,15 +1,15 @@ -use integrity::{ - air::layouts::starknet_with_keccak::{ - constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}, global_values::InteractionElements, - }, - channel::channel::{Channel, ChannelTrait}, - table_commitment::table_commitment::{ - TableCommitment, TableDecommitment, TableCommitmentWitness, table_commit, table_decommit, - TableCommitmentConfig - }, - vector_commitment::vector_commitment::VectorCommitmentConfigTrait, - common::asserts::assert_in_range, settings::VerifierSettings, +use integrity::air::layouts::starknet_with_keccak::constants::{ + NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND, }; +use integrity::air::layouts::starknet_with_keccak::global_values::InteractionElements; +use integrity::channel::channel::{Channel, ChannelTrait}; +use integrity::common::asserts::assert_in_range; +use integrity::settings::VerifierSettings; +use integrity::table_commitment::table_commitment::{ + TableCommitment, TableCommitmentConfig, TableCommitmentWitness, TableDecommitment, table_commit, + table_decommit, +}; +use integrity::vector_commitment::vector_commitment::VectorCommitmentConfigTrait; // A protocol component (see stark.cairo for details about protocol components) for the traces // of the CPU AIR. @@ -89,11 +89,11 @@ impl TracesConfigImpl of TracesConfigTrait { // Reads the traces commitment from the channel. // Returns the commitment, along with GlobalValue required to evaluate the constraint polynomial. fn traces_commit( - ref channel: Channel, unsent_commitment: TracesUnsentCommitment, config: TracesConfig + ref channel: Channel, unsent_commitment: TracesUnsentCommitment, config: TracesConfig, ) -> TracesCommitment { // Read original commitment. let original_commitment = table_commit( - ref channel, unsent_commitment.original, config.original + ref channel, unsent_commitment.original, config.original, ); // Generate interaction elements for the first interaction. let interaction_elements = InteractionElements { @@ -106,7 +106,7 @@ fn traces_commit( }; // Read interaction commitment. let interaction_commitment = table_commit( - ref channel, unsent_commitment.interaction, config.interaction + ref channel, unsent_commitment.interaction, config.interaction, ); TracesCommitment { @@ -127,6 +127,6 @@ fn traces_decommit( ) { table_decommit(commitment.original, queries, decommitment.original, witness.original, settings); table_decommit( - commitment.interaction, queries, decommitment.interaction, witness.interaction, settings + commitment.interaction, queries, decommitment.interaction, witness.interaction, settings, ) } diff --git a/src/air/public_input.cairo b/src/air/public_input.cairo index 9ecd50168..0764d10b4 100644 --- a/src/air/public_input.cairo +++ b/src/air/public_input.cairo @@ -1,16 +1,6 @@ -use integrity::{ - domains::StarkDomains, air::constants::{MAX_ADDRESS, INITIAL_PC}, - air::public_memory::{ - Page, PageTrait, ContinuousPageHeader, get_continuous_pages_product, AddrValueSize - }, - common::{ - array_extend::ArrayExtend, array_append::ArrayAppendTrait, - math::{pow, Felt252PartialOrd, Felt252Div}, - }, - settings::{StoneVersion, VerifierSettings}, -}; -use core::{pedersen::PedersenTrait, hash::{HashStateTrait, HashStateExTrait, Hash}}; -use poseidon::poseidon_hash_span; +use core::hash::{Hash, HashStateExTrait, HashStateTrait}; +use core::pedersen::PedersenTrait; +use integrity::air::constants::{INITIAL_PC, MAX_ADDRESS}; #[cfg(feature: 'dex')] use integrity::air::layouts::dex::constants::segments; #[cfg(feature: 'recursive')] @@ -23,6 +13,15 @@ use integrity::air::layouts::small::constants::segments; use integrity::air::layouts::starknet::constants::segments; #[cfg(feature: 'starknet_with_keccak')] use integrity::air::layouts::starknet_with_keccak::constants::segments; +use integrity::air::public_memory::{ + AddrValueSize, ContinuousPageHeader, Page, PageTrait, get_continuous_pages_product, +}; +use integrity::common::array_append::ArrayAppendTrait; +use integrity::common::array_extend::ArrayExtend; +use integrity::common::math::{Felt252Div, Felt252PartialOrd, pow}; +use integrity::domains::StarkDomains; +use integrity::settings::{StoneVersion, VerifierSettings}; +use poseidon::poseidon_hash_span; #[derive(Drop, Copy, PartialEq, Serde)] @@ -44,7 +43,7 @@ struct PublicInput { padding_addr: felt252, padding_value: felt252, main_page: Page, - continuous_page_headers: Array + continuous_page_headers: Array, } trait PublicInputTrait { @@ -70,7 +69,7 @@ fn get_public_input_hash( } main_page_hash_state = main_page_hash_state.update_with(*public_input.main_page.at(i)); i += 1; - }; + } main_page_hash_state = main_page_hash_state .update_with(AddrValueSize * public_input.main_page.len()); let main_page_hash = main_page_hash_state.finalize(); @@ -95,9 +94,9 @@ fn get_public_input_hash( hash_data.append(*seg.begin_addr); hash_data.append(*seg.stop_ptr); }, - Option::None => { break; } + Option::None => { break; }, } - }; + } hash_data.append(*public_input.padding_addr); hash_data.append(*public_input.padding_value); @@ -116,9 +115,9 @@ fn get_public_input_hash( hash_data.append(*continuous_page.size); hash_data.append(*continuous_page.hash); }, - Option::None => { break; } + Option::None => { break; }, } - }; + } poseidon_hash_span(hash_data.span()) } @@ -127,7 +126,7 @@ fn get_public_input_hash( // This is the value that needs to be at the memory__multi_column_perm__perm__public_memory_prod // member expression. fn get_public_memory_product_ratio( - public_input: @PublicInput, z: felt252, alpha: felt252, public_memory_column_size: felt252 + public_input: @PublicInput, z: felt252, alpha: felt252, public_memory_column_size: felt252, ) -> felt252 { let (pages_product, total_length) = get_public_memory_product(public_input, z, alpha); @@ -143,7 +142,7 @@ fn get_public_memory_product_ratio( // Returns the product of all public memory cells. fn get_public_memory_product( - public_input: @PublicInput, z: felt252, alpha: felt252 + public_input: @PublicInput, z: felt252, alpha: felt252, ) -> (felt252, felt252) { let main_page_prod = public_input.main_page.get_product(z, alpha); @@ -217,7 +216,7 @@ fn verify_relaxed_public_input(public_input: @PublicInput) -> (felt252, felt252) // TODO: remove this hacky way with proper asserts while (*memory[memory_index]).address < output_start.into() { memory_index += 1; - }; + } // 2. Output segment let output = memory.extract_range(output_start, output_len, ref memory_index); @@ -229,9 +228,9 @@ fn verify_relaxed_public_input(public_input: @PublicInput) -> (felt252, felt252) #[cfg(feature: 'recursive')] #[cfg(test)] mod tests { - use super::get_public_input_hash; + use integrity::settings::{HasherBitLength, MemoryVerification, StoneVersion, VerifierSettings}; use integrity::tests::stone_proof_fibonacci_keccak::public_input::get; - use integrity::settings::{VerifierSettings, MemoryVerification, HasherBitLength, StoneVersion}; + use super::get_public_input_hash; #[test] #[available_gas(9999999999)] fn test_get_public_input_hash() { @@ -243,7 +242,8 @@ mod tests { let public_input = get(); let hash = get_public_input_hash(@public_input, 0, @settings); assert( - hash == 0xaf91f2c71f4a594b1575d258ce82464475c82d8fb244142d0db450491c1b52, 'Hash invalid' + hash == 0xaf91f2c71f4a594b1575d258ce82464475c82d8fb244142d0db450491c1b52, + 'Hash invalid', ) } } diff --git a/src/air/public_memory.cairo b/src/air/public_memory.cairo index 55f3a2427..6c08d4bcf 100644 --- a/src/air/public_memory.cairo +++ b/src/air/public_memory.cairo @@ -1,7 +1,7 @@ #[derive(Drop, Copy, Hash, PartialEq, Serde)] struct AddrValue { address: felt252, - value: felt252 + value: felt252, } const AddrValueSize: u32 = 2; @@ -69,7 +69,7 @@ impl PageImpl of PageTrait { let mut slice = self.span().slice(addr, len); while let Option::Some(current) = slice.pop_front() { arr.append(*current.value); - }; + } arr.span() } @@ -78,7 +78,7 @@ impl PageImpl of PageTrait { start_ap: felt252, segment_addresses: Span, builtins_len: usize, - ref offset: usize + ref offset: usize, ) { let mut i = 0; @@ -98,7 +98,7 @@ impl PageImpl of PageTrait { } fn get_continuous_pages_product( - mut page_headers: Span + mut page_headers: Span, ) -> (felt252, felt252) { let mut res = 1; let mut total_length = 0; @@ -109,9 +109,9 @@ fn get_continuous_pages_product( res *= *header.prod; total_length += *header.size; }, - Option::None => { break; } + Option::None => { break; }, } - }; + } (res, total_length) } diff --git a/src/benches/air/traces/commit.cairo b/src/benches/air/traces/commit.cairo index 54d005a6a..2009340af 100644 --- a/src/benches/air/traces/commit.cairo +++ b/src/benches/air/traces/commit.cairo @@ -1,11 +1,10 @@ -use integrity::{ - channel::channel::ChannelImpl, air::layouts::recursive::{traces::traces_commit}, - tests::stone_proof_fibonacci_keccak, -}; +use integrity::air::layouts::recursive::traces::traces_commit; +use integrity::channel::channel::ChannelImpl; +use integrity::tests::stone_proof_fibonacci_keccak; fn bench_air_traces_commit() { let mut channel = ChannelImpl::new_with_counter( - 0xaf91f2c71f4a594b1575d258ce82464475c82d8fb244142d0db450491c1b52, 0x0 + 0xaf91f2c71f4a594b1575d258ce82464475c82d8fb244142d0db450491c1b52, 0x0, ); let unsent_commitment = stone_proof_fibonacci_keccak::traces::unsent_commitment::get(); let traces_config = stone_proof_fibonacci_keccak::traces::config::get(); diff --git a/src/benches/air/traces/decommit.cairo b/src/benches/air/traces/decommit.cairo index 14da5007a..173d6cc15 100644 --- a/src/benches/air/traces/decommit.cairo +++ b/src/benches/air/traces/decommit.cairo @@ -1,8 +1,7 @@ -use integrity::{ - channel::channel::ChannelImpl, air::layouts::recursive::{traces::traces_decommit}, - tests::stone_proof_fibonacci, - settings::{VerifierSettings, HasherBitLength, StoneVersion, MemoryVerification}, -}; +use integrity::air::layouts::recursive::traces::traces_decommit; +use integrity::channel::channel::ChannelImpl; +use integrity::settings::{HasherBitLength, MemoryVerification, StoneVersion, VerifierSettings}; +use integrity::tests::stone_proof_fibonacci; fn bench_air_traces_decommit() { let queries = stone_proof_fibonacci::queries::get().span(); diff --git a/src/benches/fri/commit.cairo b/src/benches/fri/commit.cairo index 6a313f296..9b5a0322c 100644 --- a/src/benches/fri/commit.cairo +++ b/src/benches/fri/commit.cairo @@ -1,10 +1,10 @@ -use integrity::{ - channel::channel::ChannelTrait, fri::fri::fri_commit, tests::stone_proof_fibonacci_keccak, -}; +use integrity::channel::channel::ChannelTrait; +use integrity::fri::fri::fri_commit; +use integrity::tests::stone_proof_fibonacci_keccak; fn bench_fri_commit() { let mut channel = ChannelTrait::new_with_counter( - 0x3612d68f9f68b263d83b0854b812018fd1b7ba0359d7514fffdabd44f0696e6, 0x1 + 0x3612d68f9f68b263d83b0854b812018fd1b7ba0359d7514fffdabd44f0696e6, 0x1, ); let fri_config = stone_proof_fibonacci_keccak::fri::config::get(); diff --git a/src/benches/fri/verify.cairo b/src/benches/fri/verify.cairo index 32cd4a253..6efb31a79 100644 --- a/src/benches/fri/verify.cairo +++ b/src/benches/fri/verify.cairo @@ -1,4 +1,5 @@ -use integrity::{fri::fri::fri_verify_initial, tests::stone_proof_fibonacci_keccak}; +use integrity::fri::fri::fri_verify_initial; +use integrity::tests::stone_proof_fibonacci_keccak; fn bench_fri_verify() { let queries = stone_proof_fibonacci_keccak::queries::get().span(); diff --git a/src/benches/stark/commit.cairo b/src/benches/stark/commit.cairo index 58986d0a0..128c987fd 100644 --- a/src/benches/stark/commit.cairo +++ b/src/benches/stark/commit.cairo @@ -1,11 +1,10 @@ -use integrity::{ - stark::stark_commit::stark_commit, channel::channel::ChannelTrait, - tests::stone_proof_fibonacci_keccak, -}; +use integrity::channel::channel::ChannelTrait; +use integrity::stark::stark_commit::stark_commit; +use integrity::tests::stone_proof_fibonacci_keccak; fn bench_stark_commit() { let mut channel = ChannelTrait::new_with_counter( - 0xaf91f2c71f4a594b1575d258ce82464475c82d8fb244142d0db450491c1b52, 0x0 + 0xaf91f2c71f4a594b1575d258ce82464475c82d8fb244142d0db450491c1b52, 0x0, ); let public_input = stone_proof_fibonacci_keccak::public_input::get(); @@ -19,6 +18,6 @@ fn bench_stark_commit() { @unsent_commitment, @config, @stark_domains, - 0.try_into().unwrap() + 0.try_into().unwrap(), ); } diff --git a/src/benches/stark/stark_proof_verify.cairo b/src/benches/stark/stark_proof_verify.cairo index 1a140baa7..6f45a5c85 100644 --- a/src/benches/stark/stark_proof_verify.cairo +++ b/src/benches/stark/stark_proof_verify.cairo @@ -1,8 +1,7 @@ +use integrity::settings::{HasherBitLength, StoneVersion, VerifierSettings}; +use integrity::stark::{StarkProof, StarkProofTrait}; +use integrity::tests::stone_proof_fibonacci_keccak; use starknet::contract_address::ContractAddressZero; -use integrity::{ - stark::{StarkProof, StarkProofTrait}, tests::stone_proof_fibonacci_keccak, - settings::{VerifierSettings, HasherBitLength, StoneVersion}, -}; fn bench_stark_proof_verify() { let SECURITY_BITS: u32 = 50; diff --git a/src/benches/stark/verify.cairo b/src/benches/stark/verify.cairo index d5e5bb3ce..ccdc4bac1 100644 --- a/src/benches/stark/verify.cairo +++ b/src/benches/stark/verify.cairo @@ -1,9 +1,7 @@ -use integrity::{ - stark::stark_verify::stark_verify, - air::layouts::recursive::constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}, - tests::stone_proof_fibonacci_keccak, - settings::{VerifierSettings, HasherBitLength, StoneVersion}, -}; +use integrity::air::layouts::recursive::constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}; +use integrity::settings::{HasherBitLength, StoneVersion, VerifierSettings}; +use integrity::stark::stark_verify::stark_verify; +use integrity::tests::stone_proof_fibonacci_keccak; fn bench_stark_verify() { let queries = stone_proof_fibonacci_keccak::queries::get().span(); diff --git a/src/channel/channel.cairo b/src/channel/channel.cairo index a0801a47a..4c35fcc44 100644 --- a/src/channel/channel.cairo +++ b/src/channel/channel.cairo @@ -31,7 +31,7 @@ impl ChannelImpl of ChannelTrait { } else { break; } - }; + } res } @@ -52,9 +52,9 @@ impl ChannelImpl of ChannelTrait { loop { match values.pop_front() { Option::Some(value) => { hash_data.append(*value); }, - Option::None => { break; } + Option::None => { break; }, } - }; + } self.digest = poseidon_hash_span(hash_data.span()); self.counter = 0; diff --git a/src/channel/tests/test_random_felt_to_prover.cairo b/src/channel/tests/test_random_felt_to_prover.cairo index 03852adfc..432590841 100644 --- a/src/channel/tests/test_random_felt_to_prover.cairo +++ b/src/channel/tests/test_random_felt_to_prover.cairo @@ -4,17 +4,17 @@ use integrity::channel::channel::ChannelTrait; #[available_gas(9999999999)] fn test_random_felts_to_prover_0() { let mut channel = ChannelTrait::new_with_counter( - 0x55c2e30068db90407013a4cfcedee7895b328c6ba64b8bd5e4c71e470af5fde, 0x0 + 0x55c2e30068db90407013a4cfcedee7895b328c6ba64b8bd5e4c71e470af5fde, 0x0, ); assert( channel .random_felt_to_prover() == 0x120149e03e4939d3c2a4ca2fcaa6e9cfff0c64fbe115f54c439d76ff09c3dc7, - 'invalid random felts' + 'invalid random felts', ); assert( channel.digest == 0x55c2e30068db90407013a4cfcedee7895b328c6ba64b8bd5e4c71e470af5fde, - 'Invalid value' + 'Invalid value', ); assert(channel.counter == 0x1, 'Invalid value'); } @@ -23,17 +23,17 @@ fn test_random_felts_to_prover_0() { #[available_gas(9999999999)] fn test_random_felts_to_prover_1() { let mut channel = ChannelTrait::new_with_counter( - 0xc5952bab5731090a953716ac821ee7374cc6c4bad31d21b7134f62d6e00593, 0x1 + 0xc5952bab5731090a953716ac821ee7374cc6c4bad31d21b7134f62d6e00593, 0x1, ); assert( channel .random_felt_to_prover() == 0x2aaadb36d1b43f25fa226bf80910dbf930cde1b14b6fea843ae83ff4ed3babc, - 'invalid random felts' + 'invalid random felts', ); assert( channel.digest == 0xc5952bab5731090a953716ac821ee7374cc6c4bad31d21b7134f62d6e00593, - 'Invalid value' + 'Invalid value', ); assert(channel.counter == 0x2, 'Invalid value'); } diff --git a/src/channel/tests/test_random_felts_to_prover.cairo b/src/channel/tests/test_random_felts_to_prover.cairo index 1a7af90b4..027b357f6 100644 --- a/src/channel/tests/test_random_felts_to_prover.cairo +++ b/src/channel/tests/test_random_felts_to_prover.cairo @@ -4,23 +4,23 @@ use integrity::channel::channel::ChannelTrait; #[available_gas(9999999999)] fn test_random_felts_to_prover() { let mut channel = ChannelTrait::new_with_counter( - 0x55c2e30068db90407013a4cfcedee7895b328c6ba64b8bd5e4c71e470af5fde, 0x0 + 0x55c2e30068db90407013a4cfcedee7895b328c6ba64b8bd5e4c71e470af5fde, 0x0, ); assert( channel .random_felts_to_prover( - 3 + 3, ) == array![ 0x120149e03e4939d3c2a4ca2fcaa6e9cfff0c64fbe115f54c439d76ff09c3dc7, 0x3639344cc4b04d4c710b812e109e21f43f87c68d8648749cb25d30503037e4d, 0xeca2849fb4c4c8e734eafe6d9cb7256c0f1bb43a5c4f2d27090cd8df21a699, ], - 'invalid random felts' + 'invalid random felts', ); assert( channel.digest == 0x55c2e30068db90407013a4cfcedee7895b328c6ba64b8bd5e4c71e470af5fde, - 'Invalid value' + 'Invalid value', ); assert(channel.counter == 0x3, 'Invalid value'); } diff --git a/src/channel/tests/test_read_felt_from_prover.cairo b/src/channel/tests/test_read_felt_from_prover.cairo index 273bd01e1..a4bf5f2c8 100644 --- a/src/channel/tests/test_read_felt_from_prover.cairo +++ b/src/channel/tests/test_read_felt_from_prover.cairo @@ -4,13 +4,13 @@ use integrity::channel::channel::ChannelTrait; #[available_gas(9999999999)] fn test_read_felt_from_prover_0() { let mut channel = ChannelTrait::new_with_counter( - 0x6844d424314222ee92d547c4acf2e8bef666793a9ac7a87012e6ba2b4c79857, 0x0 + 0x6844d424314222ee92d547c4acf2e8bef666793a9ac7a87012e6ba2b4c79857, 0x0, ); channel .read_felt_from_prover(0x38eed0024fd52d22f0f2faf86d2a3d79cadad24762ee24ee457470cd6cd79f0); assert( channel.digest == 0x55c2e30068db90407013a4cfcedee7895b328c6ba64b8bd5e4c71e470af5fde, - 'Invalid value' + 'Invalid value', ); assert(channel.counter == 0x0, 'Invalid value'); } @@ -19,12 +19,12 @@ fn test_read_felt_from_prover_0() { #[available_gas(9999999999)] fn test_read_felt_from_prover_1() { let mut channel = ChannelTrait::new_with_counter( - 0x55c2e30068db90407013a4cfcedee7895b328c6ba64b8bd5e4c71e470af5fde, 0x3 + 0x55c2e30068db90407013a4cfcedee7895b328c6ba64b8bd5e4c71e470af5fde, 0x3, ); channel.read_felt_from_prover(0xbf526d19978e73141431cd6f0e3131afb7ec700a07f41245aa510c5ea3d2f8); assert( channel.digest == 0x54d0627583471735a2948dbe3cf00d8104b8d99a3b3be8a8410daef4aa556f9, - 'Invalid value' + 'Invalid value', ); assert(channel.counter == 0x0, 'Invalid value'); } diff --git a/src/channel/tests/test_read_felt_vector_from_prover.cairo b/src/channel/tests/test_read_felt_vector_from_prover.cairo index 492cb4100..d89a5efa6 100644 --- a/src/channel/tests/test_read_felt_vector_from_prover.cairo +++ b/src/channel/tests/test_read_felt_vector_from_prover.cairo @@ -4,7 +4,7 @@ use integrity::channel::channel::ChannelTrait; #[available_gas(9999999999)] fn test_read_felt_vector_from_prover_0() { let mut channel = ChannelTrait::new_with_counter( - 0x2b4170a9346779f70d000c57781ae074fbd07a52bfe93af87a2017db08c0a7b, 0x1 + 0x2b4170a9346779f70d000c57781ae074fbd07a52bfe93af87a2017db08c0a7b, 0x1, ); channel .read_felt_vector_from_prover( @@ -74,11 +74,11 @@ fn test_read_felt_vector_from_prover_0() { 0x27b0d75dcecef920d1b2c6ef98b493d8fb97d89cab101a4d9a02862ef623c39, 0x44fd3361c232b9d288c73cb7a1e158a4912091d9bcc9a77ba41b0b7b413095d, ] - .span() + .span(), ); assert( channel.digest == 0x69eb7eb40004d1d7375b1ff9ccff8f7aed629e669b4fc3e11db4e748fdfbb2f, - 'Invalid value' + 'Invalid value', ); assert(channel.counter == 0x0, 'Invalid value'); } diff --git a/src/channel/tests/test_read_uint64_from_prover.cairo b/src/channel/tests/test_read_uint64_from_prover.cairo index 80ec305be..26a9a6805 100644 --- a/src/channel/tests/test_read_uint64_from_prover.cairo +++ b/src/channel/tests/test_read_uint64_from_prover.cairo @@ -4,12 +4,12 @@ use integrity::channel::channel::ChannelTrait; #[available_gas(9999999999)] fn test_read_uint64_from_prover_0() { let mut channel = ChannelTrait::new_with_counter( - 0x69eb7eb40004d1d7375b1ff9ccff8f7aed629e669b4fc3e11db4e748fdfbb2f, 0x0 + 0x69eb7eb40004d1d7375b1ff9ccff8f7aed629e669b4fc3e11db4e748fdfbb2f, 0x0, ); channel.read_uint64_from_prover(0x1e7e0); assert( channel.digest == 0xc5952bab5731090a953716ac821ee7374cc6c4bad31d21b7134f62d6e00593, - 'Invalid value' + 'Invalid value', ); assert(channel.counter == 0x0, 'Invalid value'); } diff --git a/src/common.cairo b/src/common.cairo index 7f3e91fab..dd91f0e9b 100644 --- a/src/common.cairo +++ b/src/common.cairo @@ -4,8 +4,8 @@ mod array_print; mod array_split; mod asserts; mod bit_reverse; -mod blake2s_u8; mod blake2s; +mod blake2s_u8; mod consts; mod flip_endianness; mod hash; diff --git a/src/common/array_append.cairo b/src/common/array_append.cairo index 26e4a1f3b..88cc473d4 100644 --- a/src/common/array_append.cairo +++ b/src/common/array_append.cairo @@ -1,7 +1,5 @@ -use integrity::common::{ - flip_endianness::FlipEndiannessU32, - split::{u16_split, u32_split, u64_split, u128_split, u256_split} -}; +use integrity::common::flip_endianness::FlipEndiannessU32; +use integrity::common::split::{u128_split, u16_split, u256_split, u32_split, u64_split}; // 2^8 = 256 const U128maxU8: u128 = 256; @@ -52,7 +50,7 @@ impl ArrayU32AppendFeltsSpan of ArrayAppendTrait> { loop { match element.pop_front() { Option::Some(elem) => self.append_little_endian(*elem), - Option::None => { break; } + Option::None => { break; }, } } } @@ -60,7 +58,7 @@ impl ArrayU32AppendFeltsSpan of ArrayAppendTrait> { loop { match element.pop_front() { Option::Some(elem) => self.append_big_endian(*elem), - Option::None => { break; } + Option::None => { break; }, } } } @@ -225,7 +223,7 @@ impl ArrayU64AppendFeltSpan of ArrayAppendTrait> { loop { match element.pop_front() { Option::Some(element) => { self.append_big_endian(*element); }, - Option::None => { break; } + Option::None => { break; }, } }; } @@ -234,7 +232,7 @@ impl ArrayU64AppendFeltSpan of ArrayAppendTrait> { loop { match element.pop_front() { Option::Some(element) => { self.append_big_endian(*element); }, - Option::None => { break; } + Option::None => { break; }, } }; } diff --git a/src/common/array_extend.cairo b/src/common/array_extend.cairo index a55d51dd5..e3fdbe2a8 100644 --- a/src/common/array_extend.cairo +++ b/src/common/array_extend.cairo @@ -4,7 +4,7 @@ impl ArrayExtend, +Drop> of ArrayExtendTrait { loop { match span.pop_front() { Option::Some(elem) => { self.append(*elem); }, - Option::None => { break; } + Option::None => { break; }, } } } diff --git a/src/common/array_print.cairo b/src/common/array_print.cairo index de5680183..52acab8ac 100644 --- a/src/common/array_print.cairo +++ b/src/common/array_print.cairo @@ -7,7 +7,7 @@ impl ArrayPrintTrait, +Drop, +Copy> of PrintTrait, +Drop, +Copy> of PrintTrait loop { if i == self.len() { break; - }; + } (*self[i]).print(); i += 1; }; diff --git a/src/common/blake2s.cairo b/src/common/blake2s.cairo index 896f903dd..6dc1e1571 100644 --- a/src/common/blake2s.cairo +++ b/src/common/blake2s.cairo @@ -1,5 +1,5 @@ -use integrity::common::flip_endianness::FlipEndiannessTrait; use core::num::traits::WrappingAdd; +use integrity::common::flip_endianness::FlipEndiannessTrait; fn blake2s(data: Array) -> u256 { let mut state = blake2s_init(); @@ -50,7 +50,7 @@ fn blake2s_init() -> blake2s_state { 0x510E527F, 0x9B05688C, 0x1F83D9AB, - 0x5BE0CD19 + 0x5BE0CD19, ]; let mut buf = array![0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; @@ -252,14 +252,14 @@ fn blake2s_compress(mut s: blake2s_state, m: Array) -> blake2s_state { // 0 - 0,4,8,12 v0 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v0, v4), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v0, v4), *m_span.at(*sigma.pop_front().unwrap()), ); v12 = rotr16(v12 ^ v0); v8 = WrappingAdd::wrapping_add(v8, v12); v4 = rotr12(v4 ^ v8); v0 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v0, v4), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v0, v4), *m_span.at(*sigma.pop_front().unwrap()), ); v12 = rotr8(v12 ^ v0); v8 = WrappingAdd::wrapping_add(v8, v12); @@ -268,14 +268,14 @@ fn blake2s_compress(mut s: blake2s_state, m: Array) -> blake2s_state { // 1 - 1,5,9,13 v1 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v1, v5), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v1, v5), *m_span.at(*sigma.pop_front().unwrap()), ); v13 = rotr16(v13 ^ v1); v9 = WrappingAdd::wrapping_add(v9, v13); v5 = rotr12(v5 ^ v9); v1 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v1, v5), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v1, v5), *m_span.at(*sigma.pop_front().unwrap()), ); v13 = rotr8(v13 ^ v1); v9 = WrappingAdd::wrapping_add(v9, v13); @@ -284,14 +284,14 @@ fn blake2s_compress(mut s: blake2s_state, m: Array) -> blake2s_state { // 2 - 2,6,10,14 v2 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v2, v6), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v2, v6), *m_span.at(*sigma.pop_front().unwrap()), ); v14 = rotr16(v14 ^ v2); v10 = WrappingAdd::wrapping_add(v10, v14); v6 = rotr12(v6 ^ v10); v2 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v2, v6), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v2, v6), *m_span.at(*sigma.pop_front().unwrap()), ); v14 = rotr8(v14 ^ v2); v10 = WrappingAdd::wrapping_add(v10, v14); @@ -300,14 +300,14 @@ fn blake2s_compress(mut s: blake2s_state, m: Array) -> blake2s_state { // 3 - 3,7,11,15 v3 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v3, v7), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v3, v7), *m_span.at(*sigma.pop_front().unwrap()), ); v15 = rotr16(v15 ^ v3); v11 = WrappingAdd::wrapping_add(v11, v15); v7 = rotr12(v7 ^ v11); v3 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v3, v7), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v3, v7), *m_span.at(*sigma.pop_front().unwrap()), ); v15 = rotr8(v15 ^ v3); v11 = WrappingAdd::wrapping_add(v11, v15); @@ -316,14 +316,14 @@ fn blake2s_compress(mut s: blake2s_state, m: Array) -> blake2s_state { // 4 - 0,5,10,15 v0 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v0, v5), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v0, v5), *m_span.at(*sigma.pop_front().unwrap()), ); v15 = rotr16(v15 ^ v0); v10 = WrappingAdd::wrapping_add(v10, v15); v5 = rotr12(v5 ^ v10); v0 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v0, v5), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v0, v5), *m_span.at(*sigma.pop_front().unwrap()), ); v15 = rotr8(v15 ^ v0); v10 = WrappingAdd::wrapping_add(v10, v15); @@ -332,14 +332,14 @@ fn blake2s_compress(mut s: blake2s_state, m: Array) -> blake2s_state { // 5 - 1,6,11,12 v1 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v1, v6), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v1, v6), *m_span.at(*sigma.pop_front().unwrap()), ); v12 = rotr16(v12 ^ v1); v11 = WrappingAdd::wrapping_add(v11, v12); v6 = rotr12(v6 ^ v11); v1 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v1, v6), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v1, v6), *m_span.at(*sigma.pop_front().unwrap()), ); v12 = rotr8(v12 ^ v1); v11 = WrappingAdd::wrapping_add(v11, v12); @@ -348,14 +348,14 @@ fn blake2s_compress(mut s: blake2s_state, m: Array) -> blake2s_state { // 6 - 2,7,8,13 v2 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v2, v7), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v2, v7), *m_span.at(*sigma.pop_front().unwrap()), ); v13 = rotr16(v13 ^ v2); v8 = WrappingAdd::wrapping_add(v8, v13); v7 = rotr12(v7 ^ v8); v2 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v2, v7), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v2, v7), *m_span.at(*sigma.pop_front().unwrap()), ); v13 = rotr8(v13 ^ v2); v8 = WrappingAdd::wrapping_add(v8, v13); @@ -364,19 +364,19 @@ fn blake2s_compress(mut s: blake2s_state, m: Array) -> blake2s_state { // 7 - 3,4,9,14 v3 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v3, v4), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v3, v4), *m_span.at(*sigma.pop_front().unwrap()), ); v14 = rotr16(v14 ^ v3); v9 = WrappingAdd::wrapping_add(v9, v14); v4 = rotr12(v4 ^ v9); v3 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v3, v4), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v3, v4), *m_span.at(*sigma.pop_front().unwrap()), ); v14 = rotr8(v14 ^ v3); v9 = WrappingAdd::wrapping_add(v9, v14); v4 = rotr7(v4 ^ v9); - }; + } let mut new_h = ArrayTrait::new(); new_h.append((*s.h[0]) ^ v0 ^ v8); @@ -411,7 +411,7 @@ fn blake2s_update(mut s: blake2s_state, in: Array) -> blake2s_state { } new_buf.append(*buf_span.at(i)); i += 1; - }; + } i = 0; loop { @@ -420,7 +420,7 @@ fn blake2s_update(mut s: blake2s_state, in: Array) -> blake2s_state { } new_buf.append(*in_span[i]); i += 1; - }; + } // blake2s_increment_counter s.t0 = WrappingAdd::wrapping_add(s.t0, 64_u32); @@ -452,7 +452,7 @@ fn blake2s_update(mut s: blake2s_state, in: Array) -> blake2s_state { } compress_in.append(*in_span[in_shift + i]); i += 1; - }; + } s = blake2s_compress(s, compress_in); @@ -470,7 +470,7 @@ fn blake2s_update(mut s: blake2s_state, in: Array) -> blake2s_state { } new_buf.append(*buf_span[i]); i += 1; - }; + } i = 0; loop { if i == in_len { @@ -478,13 +478,13 @@ fn blake2s_update(mut s: blake2s_state, in: Array) -> blake2s_state { } new_buf.append(*in_span[in_shift + i]); i += 1; - }; + } loop { if new_buf.len() == 16 { break; } new_buf.append(0); - }; + } s.buf = new_buf; s.buflen += in_len; } @@ -512,14 +512,14 @@ fn blake2s_final(mut s: blake2s_state) -> u256 { } buf.append(*buf_span[i]); i += 1; - }; + } loop { if i == 16 { break; } buf.append(0); i += 1; - }; + } s = blake2s_compress(s, buf); @@ -533,7 +533,7 @@ fn blake2s_final(mut s: blake2s_state) -> u256 { break; } multiplier *= 0x100000000; - }; + } result } diff --git a/src/common/blake2s_u8.cairo b/src/common/blake2s_u8.cairo index 464447f4b..37c314460 100644 --- a/src/common/blake2s_u8.cairo +++ b/src/common/blake2s_u8.cairo @@ -1,5 +1,5 @@ -use integrity::common::flip_endianness::FlipEndiannessTrait; use core::num::traits::WrappingAdd; +use integrity::common::flip_endianness::FlipEndiannessTrait; fn blake2s(data: Array) -> u256 { let mut state = blake2s_init(); @@ -67,7 +67,7 @@ fn blake2s_init() -> blake2s_state { 0x510E527F, 0x9B05688C, 0x1F83D9AB, - 0x5BE0CD19 + 0x5BE0CD19, ]; let mut buf = array![0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; @@ -86,7 +86,7 @@ fn blake2s_compress(mut s: blake2s_state, in: Array) -> blake2s_state { } m.append(load32(*in[4 * i + 0], *in[4 * i + 1], *in[4 * i + 2], *in[4 * i + 3])); i += 1; - }; + } let mut v0: u32 = *s.h[0]; let mut v1: u32 = *s.h[1]; @@ -280,14 +280,14 @@ fn blake2s_compress(mut s: blake2s_state, in: Array) -> blake2s_state { // 0 - 0,4,8,12 v0 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v0, v4), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v0, v4), *m_span.at(*sigma.pop_front().unwrap()), ); v12 = rotr16(v12 ^ v0); v8 = WrappingAdd::wrapping_add(v8, v12); v4 = rotr12(v4 ^ v8); v0 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v0, v4), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v0, v4), *m_span.at(*sigma.pop_front().unwrap()), ); v12 = rotr8(v12 ^ v0); v8 = WrappingAdd::wrapping_add(v8, v12); @@ -296,14 +296,14 @@ fn blake2s_compress(mut s: blake2s_state, in: Array) -> blake2s_state { // 1 - 1,5,9,13 v1 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v1, v5), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v1, v5), *m_span.at(*sigma.pop_front().unwrap()), ); v13 = rotr16(v13 ^ v1); v9 = WrappingAdd::wrapping_add(v9, v13); v5 = rotr12(v5 ^ v9); v1 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v1, v5), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v1, v5), *m_span.at(*sigma.pop_front().unwrap()), ); v13 = rotr8(v13 ^ v1); v9 = WrappingAdd::wrapping_add(v9, v13); @@ -312,14 +312,14 @@ fn blake2s_compress(mut s: blake2s_state, in: Array) -> blake2s_state { // 2 - 2,6,10,14 v2 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v2, v6), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v2, v6), *m_span.at(*sigma.pop_front().unwrap()), ); v14 = rotr16(v14 ^ v2); v10 = WrappingAdd::wrapping_add(v10, v14); v6 = rotr12(v6 ^ v10); v2 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v2, v6), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v2, v6), *m_span.at(*sigma.pop_front().unwrap()), ); v14 = rotr8(v14 ^ v2); v10 = WrappingAdd::wrapping_add(v10, v14); @@ -328,14 +328,14 @@ fn blake2s_compress(mut s: blake2s_state, in: Array) -> blake2s_state { // 3 - 3,7,11,15 v3 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v3, v7), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v3, v7), *m_span.at(*sigma.pop_front().unwrap()), ); v15 = rotr16(v15 ^ v3); v11 = WrappingAdd::wrapping_add(v11, v15); v7 = rotr12(v7 ^ v11); v3 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v3, v7), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v3, v7), *m_span.at(*sigma.pop_front().unwrap()), ); v15 = rotr8(v15 ^ v3); v11 = WrappingAdd::wrapping_add(v11, v15); @@ -344,14 +344,14 @@ fn blake2s_compress(mut s: blake2s_state, in: Array) -> blake2s_state { // 4 - 0,5,10,15 v0 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v0, v5), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v0, v5), *m_span.at(*sigma.pop_front().unwrap()), ); v15 = rotr16(v15 ^ v0); v10 = WrappingAdd::wrapping_add(v10, v15); v5 = rotr12(v5 ^ v10); v0 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v0, v5), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v0, v5), *m_span.at(*sigma.pop_front().unwrap()), ); v15 = rotr8(v15 ^ v0); v10 = WrappingAdd::wrapping_add(v10, v15); @@ -360,14 +360,14 @@ fn blake2s_compress(mut s: blake2s_state, in: Array) -> blake2s_state { // 5 - 1,6,11,12 v1 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v1, v6), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v1, v6), *m_span.at(*sigma.pop_front().unwrap()), ); v12 = rotr16(v12 ^ v1); v11 = WrappingAdd::wrapping_add(v11, v12); v6 = rotr12(v6 ^ v11); v1 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v1, v6), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v1, v6), *m_span.at(*sigma.pop_front().unwrap()), ); v12 = rotr8(v12 ^ v1); v11 = WrappingAdd::wrapping_add(v11, v12); @@ -376,14 +376,14 @@ fn blake2s_compress(mut s: blake2s_state, in: Array) -> blake2s_state { // 6 - 2,7,8,13 v2 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v2, v7), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v2, v7), *m_span.at(*sigma.pop_front().unwrap()), ); v13 = rotr16(v13 ^ v2); v8 = WrappingAdd::wrapping_add(v8, v13); v7 = rotr12(v7 ^ v8); v2 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v2, v7), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v2, v7), *m_span.at(*sigma.pop_front().unwrap()), ); v13 = rotr8(v13 ^ v2); v8 = WrappingAdd::wrapping_add(v8, v13); @@ -392,20 +392,20 @@ fn blake2s_compress(mut s: blake2s_state, in: Array) -> blake2s_state { // 7 - 3,4,9,14 v3 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v3, v4), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v3, v4), *m_span.at(*sigma.pop_front().unwrap()), ); v14 = rotr16(v14 ^ v3); v9 = WrappingAdd::wrapping_add(v9, v14); v4 = rotr12(v4 ^ v9); v3 = WrappingAdd::wrapping_add( - WrappingAdd::wrapping_add(v3, v4), *m_span.at(*sigma.pop_front().unwrap()) + WrappingAdd::wrapping_add(v3, v4), *m_span.at(*sigma.pop_front().unwrap()), ); v14 = rotr8(v14 ^ v3); v9 = WrappingAdd::wrapping_add(v9, v14); v4 = rotr7(v4 ^ v9); // ROUND function end - }; + } let mut new_h = ArrayTrait::new(); new_h.append((*s.h[0]) ^ v0 ^ v8); @@ -440,7 +440,7 @@ fn blake2s_update(mut s: blake2s_state, in: Array) -> blake2s_state { } new_buf.append(*buf_span.at(i)); i += 1; - }; + } i = 0; loop { @@ -449,7 +449,7 @@ fn blake2s_update(mut s: blake2s_state, in: Array) -> blake2s_state { } new_buf.append(*in_span[i]); i += 1; - }; + } // blake2s_increment_counter s.t0 = WrappingAdd::wrapping_add(s.t0, 64_u32); @@ -481,7 +481,7 @@ fn blake2s_update(mut s: blake2s_state, in: Array) -> blake2s_state { } compress_in.append(*in_span[in_shift + i]); i += 1; - }; + } s = blake2s_compress(s, compress_in); @@ -499,7 +499,7 @@ fn blake2s_update(mut s: blake2s_state, in: Array) -> blake2s_state { } new_buf.append(*buf_span[i]); i += 1; - }; + } i = 0; loop { if i == in_len { @@ -507,13 +507,13 @@ fn blake2s_update(mut s: blake2s_state, in: Array) -> blake2s_state { } new_buf.append(*in_span[in_shift + i]); i += 1; - }; + } loop { if new_buf.len() == 64 { break; } new_buf.append(0); - }; + } s.buf = new_buf; s.buflen += in_len; } @@ -541,14 +541,14 @@ fn blake2s_final(mut s: blake2s_state) -> u256 { } buf.append(*buf_span[i]); i += 1; - }; + } loop { if i == 64 { break; } buf.append(0); i += 1; - }; + } s = blake2s_compress(s, buf); @@ -562,7 +562,7 @@ fn blake2s_final(mut s: blake2s_state) -> u256 { break; } multiplier *= 0x100000000; - }; + } result } diff --git a/src/common/hash.cairo b/src/common/hash.cairo index f7ea77292..e604ed065 100644 --- a/src/common/hash.cairo +++ b/src/common/hash.cairo @@ -11,7 +11,7 @@ fn hash_felts(mut elements: Span) -> felt252 { Option::None => { hash_state = hash_state.update(len.into()); break hash_state.finalize(); - } + }, } } } diff --git a/src/common/hasher.cairo b/src/common/hasher.cairo index fbb72dcd5..e2fa77454 100644 --- a/src/common/hasher.cairo +++ b/src/common/hasher.cairo @@ -1,9 +1,7 @@ -use integrity::{ - common::{ - blake2s::blake2s, blake2s_u8::blake2s as blake2s_u8, flip_endianness::FlipEndiannessTrait, - }, - settings::{VerifierSettings, HasherBitLength}, -}; +use integrity::common::blake2s::blake2s; +use integrity::common::blake2s_u8::blake2s as blake2s_u8; +use integrity::common::flip_endianness::FlipEndiannessTrait; +use integrity::settings::{HasherBitLength, VerifierSettings}; #[cfg(feature: 'blake2s')] diff --git a/src/common/horner_eval.cairo b/src/common/horner_eval.cairo index 248d1004e..e3db157b4 100644 --- a/src/common/horner_eval.cairo +++ b/src/common/horner_eval.cairo @@ -8,8 +8,8 @@ fn horner_eval(mut coefs: Span, point: felt252) -> felt252 { loop { match coefs.pop_back() { Option::Some(coef) => { res = *coef + point * res; }, - Option::None => { break; } + Option::None => { break; }, } - }; + } res } diff --git a/src/common/math.cairo b/src/common/math.cairo index 846eb537a..35fb705d8 100644 --- a/src/common/math.cairo +++ b/src/common/math.cairo @@ -16,7 +16,7 @@ fn pow(base: felt252, exp: felt252) -> felt252 { curr_base = curr_base * curr_base; exp = exp / 2; } - }; + } res } diff --git a/src/common/merge_sort.cairo b/src/common/merge_sort.cairo index 219864b9d..5131888b7 100644 --- a/src/common/merge_sort.cairo +++ b/src/common/merge_sort.cairo @@ -30,18 +30,18 @@ fn merge_sort, +Drop, +PartialOrd>(mut arr: Span) -> Array< if start + chunk >= arr.len() { break; }; - }; + } loop { if start >= arr.len() { break; - }; + } new_arr.append(*arr.at(start)); start += 1; - }; + } arr = new_arr.span(); ret = new_arr; chunk *= 2; - }; + } ret } @@ -63,7 +63,7 @@ fn merge_arrays, +Drop, +PartialOrd>( } else { break; } - }; + } // Append the remaining elements from left_arr, if any loop { @@ -73,7 +73,7 @@ fn merge_arrays, +Drop, +PartialOrd>( } else { break; } - }; + } // Append the remaining elements from right_arr, if any loop { diff --git a/src/common/powers_array.cairo b/src/common/powers_array.cairo index 76190437d..50cd1506c 100644 --- a/src/common/powers_array.cairo +++ b/src/common/powers_array.cairo @@ -13,7 +13,7 @@ fn powers_array(initial: felt252, alpha: felt252, n: u32) -> Array { value *= alpha; i += 1; - }; + } array } diff --git a/src/common/split.cairo b/src/common/split.cairo index 05c5de522..90c89d50b 100644 --- a/src/common/split.cairo +++ b/src/common/split.cairo @@ -4,7 +4,7 @@ fn u256_split(input: u256) -> (u128, u128) { fn u128_split(input: u128) -> (u64, u64) { let (high, low) = core::integer::u128_safe_divmod( - input, 0x10000000000000000_u128.try_into().unwrap() + input, 0x10000000000000000_u128.try_into().unwrap(), ); (high.try_into().unwrap(), low.try_into().unwrap()) diff --git a/src/common/tests.cairo b/src/common/tests.cairo index 0c604b53a..3adaa0ac2 100644 --- a/src/common/tests.cairo +++ b/src/common/tests.cairo @@ -1,7 +1,7 @@ mod test_array_append; mod test_bit_reverse; -mod test_blake2s_u8; mod test_blake2s; +mod test_blake2s_u8; mod test_flip_endianness; mod test_horner_eval; mod test_math; diff --git a/src/common/tests/test_blake2s.cairo b/src/common/tests/test_blake2s.cairo index 49d1a2d14..705f5aa88 100644 --- a/src/common/tests/test_blake2s.cairo +++ b/src/common/tests/test_blake2s.cairo @@ -1,6 +1,7 @@ -use integrity::common::{ - array_append::ArrayAppendTrait, blake2s::blake2s, hasher::hash_truncated, blake2s_u8::load32, -}; +use integrity::common::array_append::ArrayAppendTrait; +use integrity::common::blake2s::blake2s; +use integrity::common::blake2s_u8::load32; +use integrity::common::hasher::hash_truncated; fn get_arr_v1(n: u32) -> Array { let mut arr = ArrayTrait::new(); @@ -11,7 +12,7 @@ fn get_arr_v1(n: u32) -> Array { break; } i += 1; - }; + } let mut out = ArrayTrait::new(); i = 0; loop { @@ -20,7 +21,7 @@ fn get_arr_v1(n: u32) -> Array { if i == n { break; }; - }; + } out } @@ -37,7 +38,7 @@ fn get_arr_v2(n: u32) -> Array { break; } i += 1; - }; + } let mut out = ArrayTrait::new(); i = 0; loop { @@ -46,7 +47,7 @@ fn get_arr_v2(n: u32) -> Array { if i == n { break; }; - }; + } out } @@ -55,15 +56,15 @@ fn get_arr_v2(n: u32) -> Array { fn test_blake2s_v1() { assert( blake2s( - get_arr_v1(1) + get_arr_v1(1), ) == 0x035c8c55b225b3cad27dec93997fb528978127b9aa3c145c4308b8b6a4b0c7d4, - 'invalid hash (1)' + 'invalid hash (1)', ); assert( blake2s( - get_arr_v1(2) + get_arr_v1(2), ) == 0x676da142c9e15751cf6c94e96ebc05925408612bbcf56437adf6fb21822fca4b, - 'invalid hash (2)' + 'invalid hash (2)', ); } @@ -72,15 +73,15 @@ fn test_blake2s_v1() { fn test_blake2s_v2() { assert( blake2s( - get_arr_v2(1) + get_arr_v2(1), ) == 0x3becbdec8344113fbee53542a4ef696e97db25efb96cef60d2919bb4dd00ed3e, - 'invalid hash (1)' + 'invalid hash (1)', ); assert( blake2s( - get_arr_v2(2) + get_arr_v2(2), ) == 0x5229f5d506302edae36f9cac3f5d176cd9b6aa8420da6d74d7956789099faf70, - 'invalid hash (2)' + 'invalid hash (2)', ); } @@ -91,7 +92,7 @@ fn test_blake2s_160_lsb() { let mut data = ArrayTrait::::new(); assert( hash_truncated(data) == 0x00000000000000000000000042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9, - 'invalid value' + 'invalid value', ); } @@ -102,6 +103,6 @@ fn test_blake2s_248_lsb() { let mut data = ArrayTrait::::new(); assert( hash_truncated(data) == 0x00217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9, - 'invalid value' + 'invalid value', ); } diff --git a/src/common/tests/test_blake2s_big.cairo b/src/common/tests/test_blake2s_big.cairo index d05577319..2f548cdc4 100644 --- a/src/common/tests/test_blake2s_big.cairo +++ b/src/common/tests/test_blake2s_big.cairo @@ -1,43 +1,44 @@ -use integrity::common::{blake2s::blake2s, tests::test_blake2s::{get_arr_v1, get_arr_v2}}; +use integrity::common::blake2s::blake2s; +use integrity::common::tests::test_blake2s::{get_arr_v1, get_arr_v2}; #[test] #[available_gas(9999999999)] fn test_blake2s_v1_big() { assert( blake2s( - get_arr_v1(16) + get_arr_v1(16), ) == 0xc7fa21bb08b0bd19600ad212c0fa0f7ff332f415ae1527282a939406413299aa, - 'invalid hash (16)' + 'invalid hash (16)', ); assert( blake2s( - get_arr_v1(17) + get_arr_v1(17), ) == 0x6acb015d7514d821091ec780120b89ba4663f65e6ff6588d458ef333fe8c8a39, - 'invalid hash (17)' + 'invalid hash (17)', ); assert( blake2s( - get_arr_v1(32) + get_arr_v1(32), ) == 0x5651036b64f7affbe498f0409950e06a352bcae03f5a79b78fec58a4cebe10d5, - 'invalid hash (32)' + 'invalid hash (32)', ); assert( blake2s( - get_arr_v1(33) + get_arr_v1(33), ) == 0x42d5eeff1aa4972630bcca469f37bbe8c2f8014937e28cbedbc671571d3eb87c, - 'invalid hash (33)' + 'invalid hash (33)', ); assert( blake2s( - get_arr_v1(250) + get_arr_v1(250), ) == 0x33fc848fc73514d8bc3f338b23ba684d945081da37e5a8e490db5032eac34630, - 'invalid hash (250)' + 'invalid hash (250)', ); assert( blake2s( - get_arr_v1(272) + get_arr_v1(272), ) == 0x1b5ad0d1b82600127a6add8e1cf604a075843c3d35bbe31d636fa071674c9432, - 'invalid hash (272)' + 'invalid hash (272)', ); } @@ -46,39 +47,39 @@ fn test_blake2s_v1_big() { fn test_blake2s_v2_big() { assert( blake2s( - get_arr_v2(16) + get_arr_v2(16), ) == 0xdfe91aa5523f1df5e6549d98121e9bdbac4cbba4375e93d812ef487d0fe562f6, - 'invalid hash (16)' + 'invalid hash (16)', ); assert( blake2s( - get_arr_v2(17) + get_arr_v2(17), ) == 0x49f2c2bb269d275a111a04c459c847838a0cf7c488d6366577a21f75620243e6, - 'invalid hash (17)' + 'invalid hash (17)', ); assert( blake2s( - get_arr_v2(32) + get_arr_v2(32), ) == 0x83e9b2b70274d9198b6b77a1760ebacfd1f0fe232a0ed78f1c722e154ee72362, - 'invalid hash (32)' + 'invalid hash (32)', ); assert( blake2s( - get_arr_v2(33) + get_arr_v2(33), ) == 0x93a7f68b8ea17374c11e1da719885513b598c4e191825fb584e399206c05ae15, - 'invalid hash (33)' + 'invalid hash (33)', ); assert( blake2s( - get_arr_v2(250) + get_arr_v2(250), ) == 0xe4e6bd453ba2eb5a378d7933576dbf697b6d31cf38061c550ea36f6843a9bf43, - 'invalid hash (250)' + 'invalid hash (250)', ); assert( blake2s( - get_arr_v2(272) + get_arr_v2(272), ) == 0x5906fef89f21466142323029000040f6c25be2ff87d581a8f752b94ad3662762, - 'invalid hash (272)' + 'invalid hash (272)', ); } @@ -94,7 +95,7 @@ fn test_blake2s_big() { if i == 512 { break; }; - }; + } loop { let mut new_arr: Array = ArrayTrait::new(); let arr_span = arr.span(); @@ -105,7 +106,7 @@ fn test_blake2s_big() { if j == arr_span.len() { break; }; - }; + } let res = blake2s(new_arr); sum = sum ^ res; let to_append: u32 = (res % 0x100000000).try_into().unwrap(); @@ -114,8 +115,8 @@ fn test_blake2s_big() { if i == 529 { break; }; - }; + } assert( - sum == 0x75dab924b6592ce2d9e0173c0d69ed45b4d8125da10a9db234fbdac721477df5, 'invalid hash' + sum == 0x75dab924b6592ce2d9e0173c0d69ed45b4d8125da10a9db234fbdac721477df5, 'invalid hash', ); } diff --git a/src/common/tests/test_blake2s_big_u8.cairo b/src/common/tests/test_blake2s_big_u8.cairo index 213268d52..69028c748 100644 --- a/src/common/tests/test_blake2s_big_u8.cairo +++ b/src/common/tests/test_blake2s_big_u8.cairo @@ -1,43 +1,44 @@ -use integrity::common::{blake2s_u8::blake2s, tests::test_blake2s_u8::{get_arr_v1, get_arr_v2}}; +use integrity::common::blake2s_u8::blake2s; +use integrity::common::tests::test_blake2s_u8::{get_arr_v1, get_arr_v2}; #[test] #[available_gas(9999999999)] fn test_blake2s_v1_big() { assert( blake2s( - get_arr_v1(16) + get_arr_v1(16), ) == 0xc7fa21bb08b0bd19600ad212c0fa0f7ff332f415ae1527282a939406413299aa, - 'invalid hash (16)' + 'invalid hash (16)', ); assert( blake2s( - get_arr_v1(17) + get_arr_v1(17), ) == 0x6acb015d7514d821091ec780120b89ba4663f65e6ff6588d458ef333fe8c8a39, - 'invalid hash (17)' + 'invalid hash (17)', ); assert( blake2s( - get_arr_v1(32) + get_arr_v1(32), ) == 0x5651036b64f7affbe498f0409950e06a352bcae03f5a79b78fec58a4cebe10d5, - 'invalid hash (32)' + 'invalid hash (32)', ); assert( blake2s( - get_arr_v1(33) + get_arr_v1(33), ) == 0x42d5eeff1aa4972630bcca469f37bbe8c2f8014937e28cbedbc671571d3eb87c, - 'invalid hash (33)' + 'invalid hash (33)', ); assert( blake2s( - get_arr_v1(250) + get_arr_v1(250), ) == 0x33fc848fc73514d8bc3f338b23ba684d945081da37e5a8e490db5032eac34630, - 'invalid hash (250)' + 'invalid hash (250)', ); assert( blake2s( - get_arr_v1(272) + get_arr_v1(272), ) == 0x1b5ad0d1b82600127a6add8e1cf604a075843c3d35bbe31d636fa071674c9432, - 'invalid hash (272)' + 'invalid hash (272)', ); } @@ -46,38 +47,38 @@ fn test_blake2s_v1_big() { fn test_blake2s_v2_big() { assert( blake2s( - get_arr_v2(16) + get_arr_v2(16), ) == 0xdfe91aa5523f1df5e6549d98121e9bdbac4cbba4375e93d812ef487d0fe562f6, - 'invalid hash (16)' + 'invalid hash (16)', ); assert( blake2s( - get_arr_v2(17) + get_arr_v2(17), ) == 0x49f2c2bb269d275a111a04c459c847838a0cf7c488d6366577a21f75620243e6, - 'invalid hash (17)' + 'invalid hash (17)', ); assert( blake2s( - get_arr_v2(32) + get_arr_v2(32), ) == 0x83e9b2b70274d9198b6b77a1760ebacfd1f0fe232a0ed78f1c722e154ee72362, - 'invalid hash (32)' + 'invalid hash (32)', ); assert( blake2s( - get_arr_v2(33) + get_arr_v2(33), ) == 0x93a7f68b8ea17374c11e1da719885513b598c4e191825fb584e399206c05ae15, - 'invalid hash (33)' + 'invalid hash (33)', ); assert( blake2s( - get_arr_v2(250) + get_arr_v2(250), ) == 0xe4e6bd453ba2eb5a378d7933576dbf697b6d31cf38061c550ea36f6843a9bf43, - 'invalid hash (250)' + 'invalid hash (250)', ); assert( blake2s( - get_arr_v2(272) + get_arr_v2(272), ) == 0x5906fef89f21466142323029000040f6c25be2ff87d581a8f752b94ad3662762, - 'invalid hash (272)' + 'invalid hash (272)', ); } diff --git a/src/common/tests/test_blake2s_u8.cairo b/src/common/tests/test_blake2s_u8.cairo index 30a2bcfeb..3eba85318 100644 --- a/src/common/tests/test_blake2s_u8.cairo +++ b/src/common/tests/test_blake2s_u8.cairo @@ -1,6 +1,5 @@ -use integrity::common::{ - array_append::ArrayAppendTrait, blake2s_u8::{blake2s, truncated_blake2s, load32} -}; +use integrity::common::array_append::ArrayAppendTrait; +use integrity::common::blake2s_u8::{blake2s, load32, truncated_blake2s}; fn get_arr_v1(n: u32) -> Array { let mut arr = ArrayTrait::new(); @@ -11,7 +10,7 @@ fn get_arr_v1(n: u32) -> Array { break; } i += 1; - }; + } let mut out = ArrayTrait::new(); i = 0; loop { @@ -23,7 +22,7 @@ fn get_arr_v1(n: u32) -> Array { if i == n { break; }; - }; + } out } @@ -40,7 +39,7 @@ fn get_arr_v2(n: u32) -> Array { break; } i += 1; - }; + } let mut out = ArrayTrait::new(); i = 0; loop { @@ -52,7 +51,7 @@ fn get_arr_v2(n: u32) -> Array { if i == n { break; }; - }; + } out } @@ -61,15 +60,15 @@ fn get_arr_v2(n: u32) -> Array { fn test_blake2s_v1() { assert( blake2s( - get_arr_v1(1) + get_arr_v1(1), ) == 0x035c8c55b225b3cad27dec93997fb528978127b9aa3c145c4308b8b6a4b0c7d4, - 'invalid hash (1)' + 'invalid hash (1)', ); assert( blake2s( - get_arr_v1(2) + get_arr_v1(2), ) == 0x676da142c9e15751cf6c94e96ebc05925408612bbcf56437adf6fb21822fca4b, - 'invalid hash (2)' + 'invalid hash (2)', ); } @@ -78,15 +77,15 @@ fn test_blake2s_v1() { fn test_blake2s_v2() { assert( blake2s( - get_arr_v2(1) + get_arr_v2(1), ) == 0x3becbdec8344113fbee53542a4ef696e97db25efb96cef60d2919bb4dd00ed3e, - 'invalid hash (1)' + 'invalid hash (1)', ); assert( blake2s( - get_arr_v2(2) + get_arr_v2(2), ) == 0x5229f5d506302edae36f9cac3f5d176cd9b6aa8420da6d74d7956789099faf70, - 'invalid hash (2)' + 'invalid hash (2)', ); } @@ -98,6 +97,6 @@ fn test_truncated_blake2s() { data.append_big_endian(129252051435949032402481343903845417193011527432); assert( truncated_blake2s(data) == 642191007116032514313255519742888271333651019057, - 'invalid truncated_blake2s' + 'invalid truncated_blake2s', ); } diff --git a/src/common/tests/test_math.cairo b/src/common/tests/test_math.cairo index ffa4ca3b9..fadf35614 100644 --- a/src/common/tests/test_math.cairo +++ b/src/common/tests/test_math.cairo @@ -1,4 +1,4 @@ -use integrity::common::math::{pow, DivRemFelt252}; +use integrity::common::math::{DivRemFelt252, pow}; #[test] #[available_gas(9999999999)] @@ -7,9 +7,9 @@ fn test_pow_1() { let exp = 69439516760000993875127; assert( pow( - base, exp + base, exp, ) == 2804690217475462062143361339624939640984649667966511418446363596075299761851, - 'Invalid value' + 'Invalid value', ); } @@ -20,9 +20,9 @@ fn test_pow_2() { let exp = 193456804421077096570009938751278224656090409051406060084; assert( pow( - base, exp + base, exp, ) == 2672162222334975109199941471365701890765112108683608796920114577809390903720, - 'Invalid value' + 'Invalid value', ); } diff --git a/src/common/tests/test_merge_sort.cairo b/src/common/tests/test_merge_sort.cairo index 5a18e20c5..e22266ee4 100644 --- a/src/common/tests/test_merge_sort.cairo +++ b/src/common/tests/test_merge_sort.cairo @@ -132,7 +132,7 @@ fn test_merge_sort_27_random() { 397120964, 4155302219, 598760305, - 3087811260 + 3087811260, ]; let output: Array = array![ 397120964, @@ -163,7 +163,7 @@ fn test_merge_sort_27_random() { 3901384727, 4155302219, 4228656862, - 4267084068 + 4267084068, ]; assert(merge_sort(input.span()) == output, 'merge_sort_27_random'); } diff --git a/src/common/tests/test_merge_sort_big.cairo b/src/common/tests/test_merge_sort_big.cairo index 55381b414..187d3791a 100644 --- a/src/common/tests/test_merge_sort_big.cairo +++ b/src/common/tests/test_merge_sort_big.cairo @@ -1010,11 +1010,11 @@ fn test_merge_sort_2() { 66, 399, 759, - 525 + 525, ]; assert( merge_sort( - unsorted + unsorted, ) == array![ 0, 8, @@ -2015,9 +2015,9 @@ fn test_merge_sort_2() { 999, 999, 999, - 1000 + 1000, ], - 'Invalid sorting' + 'Invalid sorting', ); } @@ -2668,11 +2668,11 @@ fn test_merge_sort_3() { 553569, 513716, 651919, - 219447 + 219447, ]; assert( merge_sort( - unsorted + unsorted, ) == array![ 411, 3654, @@ -3317,8 +3317,8 @@ fn test_merge_sort_3() { 997105, 997568, 998838, - 999854 + 999854, ], - 'Invalid sorting' + 'Invalid sorting', ); } diff --git a/src/common/tests/test_powers_array.cairo b/src/common/tests/test_powers_array.cairo index 8b0be5acf..8d7ea7265 100644 --- a/src/common/tests/test_powers_array.cairo +++ b/src/common/tests/test_powers_array.cairo @@ -5,7 +5,7 @@ use integrity::common::powers_array::powers_array; fn test_powers_array_0() { assert( powers_array( - 8939912, 818129, 20 + 8939912, 818129, 20, ) == array![ 8939912, 7314001264648, @@ -26,8 +26,8 @@ fn test_powers_array_0() { 1236122849353634764512930791639952640937217569299656172828823579696019234568, 1554236852172389644389568626430917567621998253096118392892400158736329812430, 2650676934462094271980856993953144424194696459174707922062388312529884397184, - 1618947405625354125126437534914831315303549411394098205806855140739005342069 + 1618947405625354125126437534914831315303549411394098205806855140739005342069, ], - 'Invalid value' + 'Invalid value', ); } diff --git a/src/contracts.cairo b/src/contracts.cairo index 1758dcacf..dbd43de48 100644 --- a/src/contracts.cairo +++ b/src/contracts.cairo @@ -1,3 +1,5 @@ +#[cfg(feature: '_verifier_logic')] +mod fact_registry; mod fact_registry_interface; mod mocked_fact_registry; @@ -5,5 +7,3 @@ mod mocked_fact_registry; mod proxy; #[cfg(feature: '_verifier_logic')] mod verifier; -#[cfg(feature: '_verifier_logic')] -mod fact_registry; diff --git a/src/contracts/fact_registry.cairo b/src/contracts/fact_registry.cairo index 1f24185e5..9d824fbb0 100644 --- a/src/contracts/fact_registry.cairo +++ b/src/contracts/fact_registry.cairo @@ -1,13 +1,12 @@ -use integrity::{ - StarkProofWithSerde, - fri::fri::{FriLayerWitness, FriVerificationStateConstant, FriVerificationStateVariable}, - contracts::{ - fact_registry_interface::{VerificationListElement, Verification}, verifier::InitResult, - }, - settings::{ - VerifierSettings, VerificationHash, HasherBitLength, StoneVersion, SecurityBits, FactHash, - JobId, VerifierConfiguration, VerifierPreset, - }, +use integrity::StarkProofWithSerde; +use integrity::contracts::fact_registry_interface::{Verification, VerificationListElement}; +use integrity::contracts::verifier::InitResult; +use integrity::fri::fri::{ + FriLayerWitness, FriVerificationStateConstant, FriVerificationStateVariable, +}; +use integrity::settings::{ + FactHash, HasherBitLength, JobId, SecurityBits, StoneVersion, VerificationHash, + VerifierConfiguration, VerifierPreset, VerifierSettings, }; use starknet::ContractAddress; @@ -58,7 +57,7 @@ trait IFactRegistryExternal { ) -> FactRegistered; fn register_verifier( - ref self: TContractState, preset: VerifierPreset, address: ContractAddress + ref self: TContractState, preset: VerifierPreset, address: ContractAddress, ); fn transfer_ownership(ref self: TContractState, new_owner: ContractAddress); @@ -66,33 +65,30 @@ trait IFactRegistryExternal { #[starknet::contract] mod FactRegistry { - use integrity::{ - StarkProofWithSerde, StarkProof, - contracts::verifier::{InitResult, ICairoVerifierDispatcher, ICairoVerifierDispatcherTrait}, - fri::fri::{FriLayerWitness, FriVerificationStateConstant, FriVerificationStateVariable}, - settings::{ - VerifierPreset, VerifierConfiguration, split_settings, JobId, FactHash, - VerificationHash, PresetHash, SecurityBits, - }, - contracts::{ - fact_registry::{ - VerificationListElement, Verification, IFactRegistryExternal, FactRegistered - }, - fact_registry_interface::IFactRegistry, - }, - lib_utils::{get_verifier_config_hash, get_verification_hash}, + use core::keccak::keccak_u256s_be_inputs; + use core::poseidon::{HashStateImpl, Poseidon, PoseidonImpl}; + use core::starknet::event::EventEmitter; + use integrity::contracts::fact_registry::{ + FactRegistered, IFactRegistryExternal, Verification, VerificationListElement, + }; + use integrity::contracts::fact_registry_interface::IFactRegistry; + use integrity::contracts::verifier::{ + ICairoVerifierDispatcher, ICairoVerifierDispatcherTrait, InitResult, + }; + use integrity::fri::fri::{ + FriLayerWitness, FriVerificationStateConstant, FriVerificationStateVariable, }; - use starknet::{ - ContractAddress, get_caller_address, - storage::{ - StoragePointerReadAccess, StoragePointerWriteAccess, StoragePathEntry, Map, Vec, - VecTrait, MutableVecTrait - }, + use integrity::lib_utils::{get_verification_hash, get_verifier_config_hash}; + use integrity::settings::{ + FactHash, JobId, PresetHash, SecurityBits, VerificationHash, VerifierConfiguration, + VerifierPreset, split_settings, }; - use core::{ - poseidon::{Poseidon, PoseidonImpl, HashStateImpl}, keccak::keccak_u256s_be_inputs, - starknet::event::EventEmitter, + use integrity::{StarkProof, StarkProofWithSerde}; + use starknet::storage::{ + Map, MutableVecTrait, StoragePathEntry, StoragePointerReadAccess, StoragePointerWriteAccess, + Vec, VecTrait, }; + use starknet::{ContractAddress, get_caller_address}; #[storage] struct Storage { @@ -122,7 +118,7 @@ mod FactRegistry { #[derive(Drop, starknet::Event)] struct OwnershipTransferred { previous_owner: ContractAddress, - new_owner: ContractAddress + new_owner: ContractAddress, } #[constructor] @@ -145,7 +141,7 @@ mod FactRegistry { self ._register_fact( - result.fact, verifier_address, result.security_bits, verifier_config + result.fact, verifier_address, result.security_bits, verifier_config, ) } @@ -158,7 +154,7 @@ mod FactRegistry { self.verifier_configs.entry(job_id).write(Option::Some(verifier_config)); let (verifier_settings, verifier_preset) = split_settings(verifier_config); ICairoVerifierDispatcher { - contract_address: self.get_verifier_address(verifier_preset) + contract_address: self.get_verifier_address(verifier_preset), } .verify_proof_initial(job_id, verifier_settings, stark_proof) } @@ -197,17 +193,17 @@ mod FactRegistry { let verifier_address = self.get_verifier_address(verifier_preset); let result = ICairoVerifierDispatcher { contract_address: verifier_address } .verify_proof_final( - job_id, state_constant, state_variable, last_layer_coefficients + job_id, state_constant, state_variable, last_layer_coefficients, ); self ._register_fact( - result.fact, verifier_address, result.security_bits, verifier_config + result.fact, verifier_address, result.security_bits, verifier_config, ) } fn register_verifier( - ref self: ContractState, preset: VerifierPreset, address: ContractAddress + ref self: ContractState, preset: VerifierPreset, address: ContractAddress, ) { assert(self.owner.read() == get_caller_address(), 'ONLY_OWNER'); assert(address.into() != 0, 'INVALID_VERIFIER_ADDRESS'); @@ -225,8 +221,8 @@ mod FactRegistry { self .emit( Event::OwnershipTransferred( - OwnershipTransferred { previous_owner: caller, new_owner } - ) + OwnershipTransferred { previous_owner: caller, new_owner }, + ), ); } } @@ -234,7 +230,7 @@ mod FactRegistry { #[abi(embed_v0)] impl FactRegistryImpl of IFactRegistry { fn get_all_verifications_for_fact_hash( - self: @ContractState, fact_hash: FactHash + self: @ContractState, fact_hash: FactHash, ) -> Array { let verifications = self.fact_verifications.entry(fact_hash); let n = verifications.len(); @@ -255,16 +251,16 @@ mod FactRegistry { VerificationListElement { verification_hash, security_bits: verification.security_bits, - verifier_config: verification.verifier_config - } + verifier_config: verification.verifier_config, + }, ); i += 1; - }; + } arr } fn get_verification( - self: @ContractState, verification_hash: VerificationHash + self: @ContractState, verification_hash: VerificationHash, ) -> Option { self.verification_hashes.entry(verification_hash).read() } @@ -291,11 +287,11 @@ mod FactRegistry { ) -> FactRegistered { let verifier_config_hash = get_verifier_config_hash(verifier_config); let verification_hash = get_verification_hash( - fact_hash, verifier_config_hash, security_bits + fact_hash, verifier_config_hash, security_bits, ); let event = FactRegistered { - fact_hash, verifier_address, security_bits, verifier_config, verification_hash + fact_hash, verifier_address, security_bits, verifier_config, verification_hash, }; self.emit(Event::FactRegistered(event)); @@ -304,7 +300,7 @@ mod FactRegistry { self.fact_verifications.entry(fact_hash).append().write(verification_hash); verification_hash_entry .write( - Option::Some(Verification { fact_hash, security_bits, verifier_config }) + Option::Some(Verification { fact_hash, security_bits, verifier_config }), ); } event diff --git a/src/contracts/fact_registry_interface.cairo b/src/contracts/fact_registry_interface.cairo index 243a6ea6c..a05cd3a54 100644 --- a/src/contracts/fact_registry_interface.cairo +++ b/src/contracts/fact_registry_interface.cairo @@ -1,5 +1,5 @@ -use integrity::{ - settings::{FactHash, VerifierPreset, VerificationHash, SecurityBits, VerifierConfiguration,}, +use integrity::settings::{ + FactHash, SecurityBits, VerificationHash, VerifierConfiguration, VerifierPreset, }; use starknet::ContractAddress; @@ -20,11 +20,11 @@ struct Verification { #[starknet::interface] trait IFactRegistry { fn get_all_verifications_for_fact_hash( - self: @TContractState, fact_hash: FactHash + self: @TContractState, fact_hash: FactHash, ) -> Array; fn get_verification( - self: @TContractState, verification_hash: VerificationHash + self: @TContractState, verification_hash: VerificationHash, ) -> Option; fn get_verifier_address(self: @TContractState, preset: VerifierPreset) -> ContractAddress; diff --git a/src/contracts/mocked_fact_registry.cairo b/src/contracts/mocked_fact_registry.cairo index 70f1f0e8d..8fb749852 100644 --- a/src/contracts/mocked_fact_registry.cairo +++ b/src/contracts/mocked_fact_registry.cairo @@ -1,9 +1,7 @@ -use integrity::{ - contracts::{fact_registry_interface::{VerificationListElement, Verification},}, - settings::{ - VerifierSettings, VerificationHash, HasherBitLength, StoneVersion, SecurityBits, FactHash, - JobId, VerifierConfiguration, VerifierPreset, - }, +use integrity::contracts::fact_registry_interface::{Verification, VerificationListElement}; +use integrity::settings::{ + FactHash, HasherBitLength, JobId, SecurityBits, StoneVersion, VerificationHash, + VerifierConfiguration, VerifierPreset, VerifierSettings, }; use starknet::ContractAddress; @@ -34,28 +32,23 @@ trait IFactRegistryExternal { #[starknet::contract] mod MockedFactRegistry { - use integrity::{ - settings::{ - VerifierPreset, VerifierConfiguration, split_settings, JobId, FactHash, - VerificationHash, PresetHash, SecurityBits, - }, - contracts::{ - mocked_fact_registry::{IFactRegistryExternal, FactRegistered}, - fact_registry_interface::{IFactRegistry, VerificationListElement, Verification}, - }, - lib_utils::{get_verifier_config_hash, get_verification_hash}, + use core::keccak::keccak_u256s_be_inputs; + use core::poseidon::{HashStateImpl, Poseidon, PoseidonImpl}; + use core::starknet::event::EventEmitter; + use integrity::contracts::fact_registry_interface::{ + IFactRegistry, Verification, VerificationListElement, }; - use starknet::{ - ContractAddress, get_caller_address, - storage::{ - StoragePointerReadAccess, StoragePointerWriteAccess, StoragePathEntry, Map, Vec, - VecTrait, MutableVecTrait - }, + use integrity::contracts::mocked_fact_registry::{FactRegistered, IFactRegistryExternal}; + use integrity::lib_utils::{get_verification_hash, get_verifier_config_hash}; + use integrity::settings::{ + FactHash, JobId, PresetHash, SecurityBits, VerificationHash, VerifierConfiguration, + VerifierPreset, split_settings, }; - use core::{ - poseidon::{Poseidon, PoseidonImpl, HashStateImpl}, keccak::keccak_u256s_be_inputs, - starknet::event::EventEmitter, + use starknet::storage::{ + Map, MutableVecTrait, StoragePathEntry, StoragePointerReadAccess, StoragePointerWriteAccess, + Vec, VecTrait, }; + use starknet::{ContractAddress, get_caller_address}; #[storage] struct Storage { @@ -84,7 +77,7 @@ mod MockedFactRegistry { #[abi(embed_v0)] impl FactRegistryImpl of IFactRegistry { fn get_all_verifications_for_fact_hash( - self: @ContractState, fact_hash: FactHash + self: @ContractState, fact_hash: FactHash, ) -> Array { let verifications = self.fact_verifications.entry(fact_hash); let n = verifications.len(); @@ -105,16 +98,16 @@ mod MockedFactRegistry { VerificationListElement { verification_hash, security_bits: verification.security_bits, - verifier_config: verification.verifier_config - } + verifier_config: verification.verifier_config, + }, ); i += 1; - }; + } arr } fn get_verification( - self: @ContractState, verification_hash: VerificationHash + self: @ContractState, verification_hash: VerificationHash, ) -> Option { self.verification_hashes.entry(verification_hash).read() } @@ -139,11 +132,11 @@ mod MockedFactRegistry { ) -> FactRegistered { let verifier_config_hash = get_verifier_config_hash(verifier_config); let verification_hash = get_verification_hash( - fact_hash, verifier_config_hash, security_bits + fact_hash, verifier_config_hash, security_bits, ); let event = FactRegistered { - fact_hash, verifier_address, security_bits, verifier_config, verification_hash + fact_hash, verifier_address, security_bits, verifier_config, verification_hash, }; self.emit(Event::FactRegistered(event)); @@ -152,7 +145,7 @@ mod MockedFactRegistry { self.fact_verifications.entry(fact_hash).append().write(verification_hash); verification_hash_entry .write( - Option::Some(Verification { fact_hash, security_bits, verifier_config }) + Option::Some(Verification { fact_hash, security_bits, verifier_config }), ); } event diff --git a/src/contracts/proxy.cairo b/src/contracts/proxy.cairo index fd53f8a59..088a2518a 100644 --- a/src/contracts/proxy.cairo +++ b/src/contracts/proxy.cairo @@ -1,16 +1,13 @@ -use integrity::{ - StarkProofWithSerde, - fri::fri::{FriLayerWitness, FriVerificationStateConstant, FriVerificationStateVariable}, - contracts::{ - verifier::InitResult, - fact_registry::{ - FactRegistered, VerifierConfiguration, VerificationListElement, Verification, - VerifierPreset - }, - }, - settings::{JobId, FactHash, VerificationHash}, +use integrity::StarkProofWithSerde; +use integrity::contracts::fact_registry::{ + FactRegistered, Verification, VerificationListElement, VerifierConfiguration, VerifierPreset, }; -use starknet::{ContractAddress, ClassHash}; +use integrity::contracts::verifier::InitResult; +use integrity::fri::fri::{ + FriLayerWitness, FriVerificationStateConstant, FriVerificationStateVariable, +}; +use integrity::settings::{FactHash, JobId, VerificationHash}; +use starknet::{ClassHash, ContractAddress}; #[starknet::interface] trait IProxy { @@ -44,15 +41,15 @@ trait IProxy { ) -> FactRegistered; fn get_all_verifications_for_fact_hash( - self: @TContractState, fact_hash: FactHash + self: @TContractState, fact_hash: FactHash, ) -> Array; fn get_verification( - self: @TContractState, verification_hash: VerificationHash + self: @TContractState, verification_hash: VerificationHash, ) -> Option; fn get_verifier_address(self: @TContractState, preset: VerifierPreset) -> ContractAddress; fn register_verifier( - ref self: TContractState, preset: VerifierPreset, address: ContractAddress + ref self: TContractState, preset: VerifierPreset, address: ContractAddress, ); fn transfer_ownership(ref self: TContractState, new_owner: ContractAddress); @@ -63,26 +60,29 @@ trait IProxy { #[starknet::contract] mod Proxy { - use integrity::{ - contracts::{ - verifier::{InitResult, ICairoVerifierDispatcher, ICairoVerifierDispatcherTrait}, - fact_registry::{ - IFactRegistryExternalDispatcher, IFactRegistryExternalDispatcherTrait, - FactRegistry::{VerifierRegistered, OwnershipTransferred}, VerifierSettings, - VerifierConfiguration, FactRegistered, VerificationListElement, Verification, - VerifierPreset - }, - fact_registry_interface::{IFactRegistryDispatcher, IFactRegistryDispatcherTrait,} - }, - StarkProofWithSerde, StarkProof, MemoryVerification, - fri::fri::{FriLayerWitness, FriVerificationStateConstant, FriVerificationStateVariable}, - settings::{JobId, FactHash, VerificationHash}, + use core::keccak::keccak_u256s_be_inputs; + use core::poseidon::{HashStateImpl, Poseidon, PoseidonImpl}; + use core::starknet::event::EventEmitter; + use integrity::contracts::fact_registry::FactRegistry::{ + OwnershipTransferred, VerifierRegistered, + }; + use integrity::contracts::fact_registry::{ + FactRegistered, IFactRegistryExternalDispatcher, IFactRegistryExternalDispatcherTrait, + Verification, VerificationListElement, VerifierConfiguration, VerifierPreset, + VerifierSettings, + }; + use integrity::contracts::fact_registry_interface::{ + IFactRegistryDispatcher, IFactRegistryDispatcherTrait, + }; + use integrity::contracts::verifier::{ + ICairoVerifierDispatcher, ICairoVerifierDispatcherTrait, InitResult, }; - use starknet::{ContractAddress, ClassHash, get_caller_address, syscalls}; - use core::{ - poseidon::{Poseidon, PoseidonImpl, HashStateImpl}, keccak::keccak_u256s_be_inputs, - starknet::event::EventEmitter + use integrity::fri::fri::{ + FriLayerWitness, FriVerificationStateConstant, FriVerificationStateVariable, }; + use integrity::settings::{FactHash, JobId, VerificationHash}; + use integrity::{MemoryVerification, StarkProof, StarkProofWithSerde}; + use starknet::{ClassHash, ContractAddress, get_caller_address, syscalls}; use super::IProxy; #[event] @@ -112,7 +112,7 @@ mod Proxy { stark_proof: StarkProofWithSerde, ) -> FactRegistered { let fact = IFactRegistryExternalDispatcher { - contract_address: self.fact_registry.read() + contract_address: self.fact_registry.read(), } .verify_proof_full_and_register_fact(verifier_config, stark_proof); @@ -149,10 +149,10 @@ mod Proxy { last_layer_coefficients: Span, ) -> FactRegistered { let fact = IFactRegistryExternalDispatcher { - contract_address: self.fact_registry.read() + contract_address: self.fact_registry.read(), } .verify_proof_final_and_register_fact( - job_id, state_constant, state_variable, last_layer_coefficients + job_id, state_constant, state_variable, last_layer_coefficients, ); self.emit(fact); @@ -160,14 +160,14 @@ mod Proxy { } fn get_all_verifications_for_fact_hash( - self: @ContractState, fact_hash: FactHash + self: @ContractState, fact_hash: FactHash, ) -> Array { IFactRegistryDispatcher { contract_address: self.fact_registry.read() } .get_all_verifications_for_fact_hash(fact_hash) } fn get_verification( - self: @ContractState, verification_hash: VerificationHash + self: @ContractState, verification_hash: VerificationHash, ) -> Option { IFactRegistryDispatcher { contract_address: self.fact_registry.read() } .get_verification(verification_hash) @@ -179,7 +179,7 @@ mod Proxy { } fn register_verifier( - ref self: ContractState, preset: VerifierPreset, address: ContractAddress + ref self: ContractState, preset: VerifierPreset, address: ContractAddress, ) { IFactRegistryExternalDispatcher { contract_address: self.fact_registry.read() } .register_verifier(preset, address); @@ -194,8 +194,8 @@ mod Proxy { self .emit( Event::OwnershipTransferred( - OwnershipTransferred { previous_owner: caller, new_owner } - ) + OwnershipTransferred { previous_owner: caller, new_owner }, + ), ); } diff --git a/src/contracts/verifier.cairo b/src/contracts/verifier.cairo index a565c28f1..f2ae3c66f 100644 --- a/src/contracts/verifier.cairo +++ b/src/contracts/verifier.cairo @@ -1,8 +1,8 @@ -use integrity::{ - StarkProof, MemoryVerification, StarkProofWithSerde, - fri::fri::{FriLayerWitness, FriVerificationStateConstant, FriVerificationStateVariable}, - settings::{VerifierSettings, FactHash, JobId, SecurityBits}, +use integrity::fri::fri::{ + FriLayerWitness, FriVerificationStateConstant, FriVerificationStateVariable, }; +use integrity::settings::{FactHash, JobId, SecurityBits, VerifierSettings}; +use integrity::{MemoryVerification, StarkProof, StarkProofWithSerde}; #[derive(Drop, Serde)] struct InitResult { @@ -61,21 +61,19 @@ trait ICairoVerifier { #[starknet::contract] mod CairoVerifier { - use starknet::{ - ContractAddress, - storage::{StoragePointerReadAccess, StoragePointerWriteAccess, StoragePathEntry, Map}, + use core::poseidon::{HashStateImpl, Poseidon, PoseidonImpl}; + use integrity::fri::fri::{ + FriLayerWitness, FriVerificationStateConstant, FriVerificationStateVariable, hash_constant, + hash_variable, }; - use integrity::{ - MemoryVerification, PublicInputImpl, StarkProofWithSerde, - stark::{StarkProof, StarkProofImpl}, - fri::fri::{ - FriLayerWitness, FriVerificationStateConstant, FriVerificationStateVariable, - hash_constant, hash_variable - }, - settings::{VerifierSettings, JobId, FactHash, SecurityBits}, + use integrity::settings::{FactHash, JobId, SecurityBits, VerifierSettings}; + use integrity::stark::{StarkProof, StarkProofImpl}; + use integrity::{MemoryVerification, PublicInputImpl, StarkProofWithSerde}; + use starknet::ContractAddress; + use starknet::storage::{ + Map, StoragePathEntry, StoragePointerReadAccess, StoragePointerWriteAccess, }; - use core::poseidon::{Poseidon, PoseidonImpl, HashStateImpl}; - use super::{ProofVerified, InitResult, ICairoVerifier}; + use super::{ICairoVerifier, InitResult, ProofVerified}; #[storage] struct Storage { @@ -85,14 +83,14 @@ mod CairoVerifier { state_variable: Map>, // job_id => hash(variable state) state_fact: Map>, // job_id => fact_hash state_security_bits: Map>, // job_id => security_bits - state_settings: Map>, // job_id => verifier_settings + state_settings: Map> // job_id => verifier_settings } #[constructor] fn constructor( ref self: ContractState, composition_contract_address: ContractAddress, - oods_contract_address: ContractAddress + oods_contract_address: ContractAddress, ) { self.composition_contract_address.write(composition_contract_address); self.oods_contract_address.write(oods_contract_address); @@ -119,13 +117,13 @@ mod CairoVerifier { _ => { assert(false, 'invalid memory_verification'); (0, 0) - } + }, }; let security_bits = stark_proof .verify( self.composition_contract_address.read(), self.oods_contract_address.read(), - @settings + @settings, ); let fact = PoseidonImpl::new().update(program_hash).update(output_hash).finalize(); @@ -151,7 +149,7 @@ mod CairoVerifier { _ => { assert(false, 'invalid memory_verification'); (0, 0) - } + }, }; let fact = PoseidonImpl::new().update(program_hash).update(output_hash).finalize(); @@ -160,7 +158,7 @@ mod CairoVerifier { .verify_initial( self.composition_contract_address.read(), self.oods_contract_address.read(), - @settings + @settings, ); self.state_constant.entry(job_id).write(Option::Some(hash_constant(@con))); self.state_variable.entry(job_id).write(Option::Some(hash_variable(@var))); @@ -194,7 +192,7 @@ mod CairoVerifier { .entry(job_id) .read() .expect('No state (constant) saved'), - 'Invalid state (constant)' + 'Invalid state (constant)', ); assert( hash_variable(@state_variable) == self @@ -202,12 +200,12 @@ mod CairoVerifier { .entry(job_id) .read() .expect('No state (variable) saved'), - 'Invalid state (variable)' + 'Invalid state (variable)', ); let settings = self.state_settings.entry(job_id).read().expect('No settings saved'); let (con, var) = StarkProofImpl::verify_step( - state_constant, state_variable, witness, @settings + state_constant, state_variable, witness, @settings, ); self.state_variable.entry(job_id).write(Option::Some(hash_variable(@var))); @@ -225,11 +223,11 @@ mod CairoVerifier { ) -> ProofVerified { assert( hash_constant(@state_constant) == self.state_constant.entry(job_id).read().unwrap(), - 'Invalid state (constant)' + 'Invalid state (constant)', ); assert( hash_variable(@state_variable) == self.state_variable.entry(job_id).read().unwrap(), - 'Invalid state (variable)' + 'Invalid state (variable)', ); let fact = self.state_fact.entry(job_id).read().expect('No fact saved'); let security_bits = self @@ -239,7 +237,7 @@ mod CairoVerifier { .expect('No security bits saved'); let (new_con, new_var) = StarkProofImpl::verify_final( - state_constant, state_variable, last_layer_coefficients + state_constant, state_variable, last_layer_coefficients, ); assert(new_var.iter.into() == new_con.n_layers + 1, 'Verification not finalized'); diff --git a/src/deserialization/fri.cairo b/src/deserialization/fri.cairo index b4a731f20..4fcb86f68 100644 --- a/src/deserialization/fri.cairo +++ b/src/deserialization/fri.cairo @@ -1,7 +1,8 @@ -use integrity::{ - fri::{fri_config::FriConfig, fri::{FriUnsentCommitment, FriWitness, FriLayerWitness}}, - table_commitment::table_commitment::{TableCommitmentConfig, TableCommitmentWitness}, - vector_commitment::vector_commitment::{VectorCommitmentConfig, VectorCommitmentWitness}, +use integrity::fri::fri::{FriLayerWitness, FriUnsentCommitment, FriWitness}; +use integrity::fri::fri_config::FriConfig; +use integrity::table_commitment::table_commitment::{TableCommitmentConfig, TableCommitmentWitness}; +use integrity::vector_commitment::vector_commitment::{ + VectorCommitmentConfig, VectorCommitmentWitness, }; #[derive(Drop, Serde)] @@ -34,11 +35,11 @@ impl IntoFriConfig of Into { vector: VectorCommitmentConfig { height: *self.inner_layers.at(i + 1), n_verifier_friendly_commitment_layers: *self.inner_layers.at(i + 2), - } - } + }, + }, ); i += 3; - }; + } FriConfig { log_input_size: self.log_input_size, n_layers: self.n_layers, @@ -64,7 +65,7 @@ impl IntoFriUnsentCommitment of Into { leaves.append(*layers_span[i]); i += 1; j += 1; - }; + } let n = *layers_span[i]; i += 1; @@ -111,7 +112,7 @@ impl IntoFriWitness of Into { authentications.append(*layers_span[i]); i += 1; j += 1; - }; + } layers .append( @@ -120,12 +121,12 @@ impl IntoFriWitness of Into { table_witness: TableCommitmentWitness { vector: VectorCommitmentWitness { authentications: authentications.span(), - } + }, }, - } + }, ); - }; + } - FriWitness { layers: layers.span(), } + FriWitness { layers: layers.span() } } } diff --git a/src/deserialization/pow.cairo b/src/deserialization/pow.cairo index 851b33bd4..5e04edfb8 100644 --- a/src/deserialization/pow.cairo +++ b/src/deserialization/pow.cairo @@ -1,6 +1,5 @@ -use integrity::proof_of_work::{ - config::ProofOfWorkConfig, proof_of_work::ProofOfWorkUnsentCommitment -}; +use integrity::proof_of_work::config::ProofOfWorkConfig; +use integrity::proof_of_work::proof_of_work::ProofOfWorkUnsentCommitment; #[derive(Drop, Serde)] struct ProofOfWorkConfigWithSerde { @@ -9,7 +8,7 @@ struct ProofOfWorkConfigWithSerde { } impl IntoProofOfWorkConfig of Into { fn into(self: ProofOfWorkConfigWithSerde) -> ProofOfWorkConfig { - ProofOfWorkConfig { n_bits: self.n_bits.try_into().unwrap(), } + ProofOfWorkConfig { n_bits: self.n_bits.try_into().unwrap() } } } @@ -18,9 +17,9 @@ struct ProofOfWorkUnsentCommitmentWithSerde { nonce: felt252, } impl IntoProofOfWorkUnsentCommitment of Into< - ProofOfWorkUnsentCommitmentWithSerde, ProofOfWorkUnsentCommitment + ProofOfWorkUnsentCommitmentWithSerde, ProofOfWorkUnsentCommitment, > { fn into(self: ProofOfWorkUnsentCommitmentWithSerde) -> ProofOfWorkUnsentCommitment { - ProofOfWorkUnsentCommitment { nonce: self.nonce.try_into().unwrap(), } + ProofOfWorkUnsentCommitment { nonce: self.nonce.try_into().unwrap() } } } diff --git a/src/deserialization/stark.cairo b/src/deserialization/stark.cairo index 284edfe2d..5d4c574f8 100644 --- a/src/deserialization/stark.cairo +++ b/src/deserialization/stark.cairo @@ -1,19 +1,3 @@ -use integrity::{ - air::{ - public_input::{ContinuousPageHeader, PublicInput, SegmentInfo}, - public_memory::{AddrValue, Page}, - }, - deserialization::{ - traces::{ - TracesConfigWithSerde, TracesDecommitmentWithSerde, TracesWitnessWithSerde, - TracesUnsentCommitmentWithSerde, TableCommitmentConfigWithSerde, - TableCommitmentWitnessWithSerde, TableDecommitmentWithSerde - }, - fri::{FriConfigWithSerde, FriUnsentCommitmentWithSerde, FriWitnessWithSerde}, - pow::{ProofOfWorkConfigWithSerde, ProofOfWorkUnsentCommitmentWithSerde}, - }, - stark::{StarkProof, StarkConfig, StarkUnsentCommitment, StarkWitness}, -}; #[cfg(feature: 'dex')] use integrity::air::layouts::dex::traces::TracesConfig; #[cfg(feature: 'recursive')] @@ -26,6 +10,20 @@ use integrity::air::layouts::small::traces::TracesConfig; use integrity::air::layouts::starknet::traces::TracesConfig; #[cfg(feature: 'starknet_with_keccak')] use integrity::air::layouts::starknet_with_keccak::traces::TracesConfig; +use integrity::air::public_input::{ContinuousPageHeader, PublicInput, SegmentInfo}; +use integrity::air::public_memory::{AddrValue, Page}; +use integrity::deserialization::fri::{ + FriConfigWithSerde, FriUnsentCommitmentWithSerde, FriWitnessWithSerde, +}; +use integrity::deserialization::pow::{ + ProofOfWorkConfigWithSerde, ProofOfWorkUnsentCommitmentWithSerde, +}; +use integrity::deserialization::traces::{ + TableCommitmentConfigWithSerde, TableCommitmentWitnessWithSerde, TableDecommitmentWithSerde, + TracesConfigWithSerde, TracesDecommitmentWithSerde, TracesUnsentCommitmentWithSerde, + TracesWitnessWithSerde, +}; +use integrity::stark::{StarkConfig, StarkProof, StarkUnsentCommitment, StarkWitness}; #[derive(Drop, Serde)] struct StarkProofWithSerde { @@ -103,10 +101,10 @@ impl IntoPublicInput of Into { segments .append( - SegmentInfo { begin_addr: *self.segments[i], stop_ptr: *self.segments[i + 1], } + SegmentInfo { begin_addr: *self.segments[i], stop_ptr: *self.segments[i + 1] }, ); i += 2; - }; + } let mut page = ArrayTrait::::new(); let mut i = 0; @@ -115,10 +113,10 @@ impl IntoPublicInput of Into { break; } - page.append(AddrValue { address: *self.main_page[i], value: *self.main_page[i + 1], }); + page.append(AddrValue { address: *self.main_page[i], value: *self.main_page[i + 1] }); i += 2; - }; + } let mut continuous_page_headers = ArrayTrait::::new(); let mut i = 0; @@ -134,11 +132,11 @@ impl IntoPublicInput of Into { size: *self.continuous_page_headers[i + 1], hash: (*self.continuous_page_headers[i + 2]).into(), prod: *self.continuous_page_headers[i + 3], - } + }, ); i += 4; - }; + } PublicInput { log_n_steps: self.log_n_steps, range_check_min: self.range_check_min, diff --git a/src/deserialization/table.cairo b/src/deserialization/table.cairo index 4e9a61f7e..7064bc3d6 100644 --- a/src/deserialization/table.cairo +++ b/src/deserialization/table.cairo @@ -1,8 +1,8 @@ -use integrity::{ - table_commitment::table_commitment::{ - TableCommitmentConfig, TableCommitmentWitness, TableDecommitment - }, - deserialization::vector::{VectorCommitmentConfigWithSerde, VectorCommitmentWitnessWithSerde} +use integrity::deserialization::vector::{ + VectorCommitmentConfigWithSerde, VectorCommitmentWitnessWithSerde, +}; +use integrity::table_commitment::table_commitment::{ + TableCommitmentConfig, TableCommitmentWitness, TableDecommitment, }; #[derive(Drop, Serde)] @@ -13,7 +13,7 @@ struct TableCommitmentConfigWithSerde { impl IntoTableCommitmentConfig of Into { fn into(self: TableCommitmentConfigWithSerde) -> TableCommitmentConfig { - TableCommitmentConfig { n_columns: self.n_columns, vector: self.vector.into(), } + TableCommitmentConfig { n_columns: self.n_columns, vector: self.vector.into() } } } @@ -24,7 +24,7 @@ struct TableDecommitmentWithSerde { } impl IntoTableDecommitment of Into { fn into(self: TableDecommitmentWithSerde) -> TableDecommitment { - TableDecommitment { values: self.values.span(), } + TableDecommitment { values: self.values.span() } } } @@ -34,6 +34,6 @@ struct TableCommitmentWitnessWithSerde { } impl IntoTableCommitmentWitness of Into { fn into(self: TableCommitmentWitnessWithSerde) -> TableCommitmentWitness { - TableCommitmentWitness { vector: self.vector.into(), } + TableCommitmentWitness { vector: self.vector.into() } } } diff --git a/src/deserialization/traces.cairo b/src/deserialization/traces.cairo index ad87c20cd..1369d6dd4 100644 --- a/src/deserialization/traces.cairo +++ b/src/deserialization/traces.cairo @@ -1,41 +1,36 @@ -use integrity::{ - deserialization::{ - vector::{ - VectorCommitmentConfig, VectorCommitmentWitness, VectorCommitmentConfigWithSerde, - VectorCommitmentWitnessWithSerde - }, - table::{ - TableCommitmentConfigWithSerde, TableDecommitmentWithSerde, - TableCommitmentWitnessWithSerde, - } - }, - table_commitment::table_commitment::{ - TableCommitmentConfig, TableCommitmentWitness, TableDecommitment - }, -}; #[cfg(feature: 'dex')] -use integrity::air::layouts::dex::{ - traces::TracesConfig, traces::{TracesUnsentCommitment, TracesDecommitment, TracesWitness} +use integrity::air::layouts::dex::traces::{ + TracesConfig, TracesDecommitment, TracesUnsentCommitment, TracesWitness, }; #[cfg(feature: 'recursive')] -use integrity::air::layouts::recursive::{ - traces::TracesConfig, traces::{TracesUnsentCommitment, TracesDecommitment, TracesWitness} +use integrity::air::layouts::recursive::traces::{ + TracesConfig, TracesDecommitment, TracesUnsentCommitment, TracesWitness, }; #[cfg(feature: 'recursive_with_poseidon')] -use integrity::air::layouts::recursive_with_poseidon::{ - traces::TracesConfig, traces::{TracesUnsentCommitment, TracesDecommitment, TracesWitness} +use integrity::air::layouts::recursive_with_poseidon::traces::{ + TracesConfig, TracesDecommitment, TracesUnsentCommitment, TracesWitness, }; #[cfg(feature: 'small')] -use integrity::air::layouts::small::{ - traces::TracesConfig, traces::{TracesUnsentCommitment, TracesDecommitment, TracesWitness} +use integrity::air::layouts::small::traces::{ + TracesConfig, TracesDecommitment, TracesUnsentCommitment, TracesWitness, }; #[cfg(feature: 'starknet')] -use integrity::air::layouts::starknet::{ - traces::TracesConfig, traces::{TracesUnsentCommitment, TracesDecommitment, TracesWitness} +use integrity::air::layouts::starknet::traces::{ + TracesConfig, TracesDecommitment, TracesUnsentCommitment, TracesWitness, }; #[cfg(feature: 'starknet_with_keccak')] -use integrity::air::layouts::starknet_with_keccak::{ - traces::TracesConfig, traces::{TracesUnsentCommitment, TracesDecommitment, TracesWitness} +use integrity::air::layouts::starknet_with_keccak::traces::{ + TracesConfig, TracesDecommitment, TracesUnsentCommitment, TracesWitness, +}; +use integrity::deserialization::table::{ + TableCommitmentConfigWithSerde, TableCommitmentWitnessWithSerde, TableDecommitmentWithSerde, +}; +use integrity::deserialization::vector::{ + VectorCommitmentConfig, VectorCommitmentConfigWithSerde, VectorCommitmentWitness, + VectorCommitmentWitnessWithSerde, +}; +use integrity::table_commitment::table_commitment::{ + TableCommitmentConfig, TableCommitmentWitness, TableDecommitment, }; #[derive(Drop, Serde)] diff --git a/src/deserialization/vector.cairo b/src/deserialization/vector.cairo index 961070dad..02cbcc1c9 100644 --- a/src/deserialization/vector.cairo +++ b/src/deserialization/vector.cairo @@ -1,5 +1,5 @@ use integrity::vector_commitment::vector_commitment::{ - VectorCommitmentConfig, VectorCommitmentWitness + VectorCommitmentConfig, VectorCommitmentWitness, }; #[derive(Drop, Serde)] @@ -22,9 +22,9 @@ struct VectorCommitmentWitnessWithSerde { authentications: Array, } impl IntoVectorCommitmentWitness of Into< - VectorCommitmentWitnessWithSerde, VectorCommitmentWitness + VectorCommitmentWitnessWithSerde, VectorCommitmentWitness, > { fn into(self: VectorCommitmentWitnessWithSerde) -> VectorCommitmentWitness { - VectorCommitmentWitness { authentications: self.authentications.span(), } + VectorCommitmentWitness { authentications: self.authentications.span() } } } diff --git a/src/domains.cairo b/src/domains.cairo index 5382d9469..ec5a85e3f 100644 --- a/src/domains.cairo +++ b/src/domains.cairo @@ -1,7 +1,6 @@ -use integrity::{ - common::{consts::{FIELD_GENERATOR, STARK_PRIME_MINUS_ONE}, math::{pow, Felt252Div}}, - stark::StarkConfig, -}; +use integrity::common::consts::{FIELD_GENERATOR, STARK_PRIME_MINUS_ONE}; +use integrity::common::math::{Felt252Div, pow}; +use integrity::stark::StarkConfig; // Information about the domains that are used in the stark proof. #[derive(Drop, Copy, PartialEq)] @@ -53,7 +52,7 @@ mod tests { assert( StarkDomainsTrait::new( - log_trace_domain_size, log_n_cosets + log_trace_domain_size, log_n_cosets, ) == StarkDomains { log_eval_domain_size: 0x16, eval_domain_size: 0x400000, @@ -62,7 +61,7 @@ mod tests { trace_domain_size: 0x40000, trace_generator: 0x4768803ef85256034f67453635f87997ff61841e411ee63ce7b0a8b9745a046, }, - 'Domain creation failed' + 'Domain creation failed', ) } } diff --git a/src/fri/fri.cairo b/src/fri/fri.cairo index 5aa5f6166..ef2952914 100644 --- a/src/fri/fri.cairo +++ b/src/fri/fri.cairo @@ -1,18 +1,16 @@ -use integrity::{ - common::math::pow, channel::channel::{Channel, ChannelTrait}, - fri::{ - fri_config::FriConfig, fri_first_layer::gather_first_layer_queries, - fri_group::get_fri_group, - fri_layer::{FriLayerQuery, FriLayerComputationParams, compute_next_layer}, - fri_last_layer::verify_last_layer, - }, - table_commitment::table_commitment::{ - TableCommitmentWitness, TableDecommitment, TableCommitment, TableCommitmentConfig, - table_commit, table_decommit - }, - settings::VerifierSettings, +use core::poseidon::{HashStateImpl, Poseidon, PoseidonImpl}; +use integrity::channel::channel::{Channel, ChannelTrait}; +use integrity::common::math::pow; +use integrity::fri::fri_config::FriConfig; +use integrity::fri::fri_first_layer::gather_first_layer_queries; +use integrity::fri::fri_group::get_fri_group; +use integrity::fri::fri_last_layer::verify_last_layer; +use integrity::fri::fri_layer::{FriLayerComputationParams, FriLayerQuery, compute_next_layer}; +use integrity::settings::VerifierSettings; +use integrity::table_commitment::table_commitment::{ + TableCommitment, TableCommitmentConfig, TableCommitmentWitness, TableDecommitment, table_commit, + table_decommit, }; -use core::poseidon::{Poseidon, PoseidonImpl, HashStateImpl}; // Commitment values for FRI. Used to generate a commitment by "reading" these values // from the channel. @@ -106,18 +104,18 @@ fn fri_commit_rounds( eval_points.append(channel.random_felt_to_prover()); i += 1; - }; + } (commitments, eval_points) } fn fri_commit( - ref channel: Channel, unsent_commitment: FriUnsentCommitment, config: FriConfig + ref channel: Channel, unsent_commitment: FriUnsentCommitment, config: FriConfig, ) -> FriCommitment { assert((*config.fri_step_sizes.at(0)) == 0, 'Invalid value'); assert( unsent_commitment.inner_layers.len().into() == config.n_layers - 1, - 'Invalid inner layer commitments' + 'Invalid inner layer commitments', ); let (commitments, eval_points) = fri_commit_rounds( @@ -133,14 +131,14 @@ fn fri_commit( let coefficients = unsent_commitment.last_layer_coefficients; assert( - pow(2, config.log_last_layer_degree_bound) == coefficients.len().into(), 'Invalid value' + pow(2, config.log_last_layer_degree_bound) == coefficients.len().into(), 'Invalid value', ); FriCommitment { config: config, inner_layers: commitments.span(), eval_points: eval_points.span(), - last_layer_coefficients: coefficients + last_layer_coefficients: coefficients, } } @@ -161,7 +159,7 @@ fn fri_verify_layer_step( // Compute next layer queries. let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries, layer_witness.leaves, params + queries, layer_witness.leaves, params, ); // Table decommitment. @@ -183,9 +181,7 @@ fn fri_verify_initial( assert(queries.len() == decommitment.values.len(), 'Invalid value'); // Compute first FRI layer queries. - let fri_queries = gather_first_layer_queries( - queries, decommitment.values, decommitment.points, - ); + let fri_queries = gather_first_layer_queries(queries, decommitment.values, decommitment.points); // Last layer assert. assert( @@ -193,7 +189,7 @@ fn fri_verify_initial( .last_layer_coefficients .len() .into() == pow(2, commitment.config.log_last_layer_degree_bound), - 'Invlid value' + 'Invlid value', ); ( @@ -207,7 +203,7 @@ fn fri_verify_initial( .slice(1, commitment.config.fri_step_sizes.len() - 1), last_layer_coefficients_hash: hash_array(commitment.last_layer_coefficients), }, - FriVerificationStateVariable { iter: 0, queries: fri_queries.span(), } + FriVerificationStateVariable { iter: 0, queries: fri_queries.span() }, ) } @@ -215,7 +211,7 @@ fn fri_verify_step( stateConstant: FriVerificationStateConstant, stateVariable: FriVerificationStateVariable, witness: FriLayerWitness, - settings: @VerifierSettings + settings: @VerifierSettings, ) -> (FriVerificationStateConstant, FriVerificationStateVariable) { assert(stateVariable.iter <= stateConstant.n_layers, 'Too many fri steps called'); @@ -231,7 +227,7 @@ fn fri_verify_step( ( stateConstant, - FriVerificationStateVariable { iter: stateVariable.iter + 1, queries: queries.span(), } + FriVerificationStateVariable { iter: stateVariable.iter + 1, queries: queries.span() }, ) } @@ -243,14 +239,14 @@ fn fri_verify_final( assert(stateVariable.iter == stateConstant.n_layers, 'Fri final called at wrong time'); assert( hash_array(last_layer_coefficients) == stateConstant.last_layer_coefficients_hash, - 'Invalid last_layer_coefficients' + 'Invalid last_layer_coefficients', ); verify_last_layer(stateVariable.queries, last_layer_coefficients); ( stateConstant, - FriVerificationStateVariable { iter: stateVariable.iter + 1, queries: array![].span(), } + FriVerificationStateVariable { iter: stateVariable.iter + 1, queries: array![].span() }, ) } @@ -259,7 +255,7 @@ fn hash_array(mut array: Span) -> felt252 { loop { match array.pop_front() { Option::Some(value) => { hash = hash.update(*value); }, - Option::None => { break hash.finalize(); } + Option::None => { break hash.finalize(); }, } } } @@ -294,7 +290,7 @@ fn hash_constant(state: @FriVerificationStateConstant) -> felt252 { .update(*value.vector_commitment.config.n_verifier_friendly_commitment_layers); hash = hash.update(*value.vector_commitment.commitment_hash); }, - Option::None => { break hash.finalize(); } + Option::None => { break hash.finalize(); }, } } } @@ -315,7 +311,7 @@ fn hash_variable(state: @FriVerificationStateVariable) -> felt252 { hash = hash.update(*query.y_value); hash = hash.update(*query.x_inv_value); }, - Option::None => { break hash.finalize(); } + Option::None => { break hash.finalize(); }, } } } diff --git a/src/fri/fri_config.cairo b/src/fri/fri_config.cairo index b6207f9dc..2f44a3f9b 100644 --- a/src/fri/fri_config.cairo +++ b/src/fri/fri_config.cairo @@ -1,7 +1,8 @@ -use integrity::{ - common::{asserts::assert_in_range, math::{pow, Felt252PartialOrd}}, - table_commitment::table_commitment::TableCommitmentConfig, - vector_commitment::vector_commitment::{VectorCommitmentConfig, VectorCommitmentConfigTrait}, +use integrity::common::asserts::assert_in_range; +use integrity::common::math::{Felt252PartialOrd, pow}; +use integrity::table_commitment::table_commitment::TableCommitmentConfig; +use integrity::vector_commitment::vector_commitment::{ + VectorCommitmentConfig, VectorCommitmentConfigTrait, }; const MAX_LAST_LAYER_LOG_DEGREE_BOUND: felt252 = 15; @@ -26,15 +27,15 @@ struct FriConfig { #[generate_trait] impl FriConfigImpl of FriConfigTrait { fn validate( - self: @FriConfig, log_n_cosets: felt252, n_verifier_friendly_commitment_layers: felt252 + self: @FriConfig, log_n_cosets: felt252, n_verifier_friendly_commitment_layers: felt252, ) -> felt252 { assert_in_range(*self.n_layers, 2, MAX_FRI_LAYERS + 1); assert( - *self.log_last_layer_degree_bound <= MAX_LAST_LAYER_LOG_DEGREE_BOUND, 'Value too big' + *self.log_last_layer_degree_bound <= MAX_LAST_LAYER_LOG_DEGREE_BOUND, 'Value too big', ); assert(*self.fri_step_sizes[0] == 0, 'Invalid value'); assert( - (*self.inner_layers).len().into() == *self.n_layers - 1, 'Invalid inner layer config' + (*self.inner_layers).len().into() == *self.n_layers - 1, 'Invalid inner layer config', ); let mut i: u32 = 1; @@ -56,12 +57,12 @@ impl FriConfigImpl of FriConfigTrait { table_commitment.vector.validate(log_input_size, n_verifier_friendly_commitment_layers); i += 1; - }; + } let log_expected_input_degree = sum_of_step_sizes + *self.log_last_layer_degree_bound; assert( log_expected_input_degree + log_n_cosets == *self.log_input_size, - 'Log input size mismatch' + 'Log input size mismatch', ); log_expected_input_degree } diff --git a/src/fri/fri_first_layer.cairo b/src/fri/fri_first_layer.cairo index da6fa8e1f..40d45bb2a 100644 --- a/src/fri/fri_first_layer.cairo +++ b/src/fri/fri_first_layer.cairo @@ -1,9 +1,9 @@ -use integrity::{ - common::{consts::FIELD_GENERATOR_INVERSE, math::Felt252Div}, fri::fri_layer::FriLayerQuery, -}; +use integrity::common::consts::FIELD_GENERATOR_INVERSE; +use integrity::common::math::Felt252Div; +use integrity::fri::fri_layer::FriLayerQuery; fn gather_first_layer_queries( - queries: Span, evaluations: Span, x_values: Span + queries: Span, evaluations: Span, x_values: Span, ) -> Array { let mut fri_queries = ArrayTrait::::new(); @@ -23,11 +23,11 @@ fn gather_first_layer_queries( index: *queries.at(i), y_value: *evaluations.at(i), x_inv_value: 1 / shifted_x_value, - } + }, ); i += 1; - }; + } fri_queries } diff --git a/src/fri/fri_formula.cairo b/src/fri/fri_formula.cairo index 03db68982..8a5fa5c7e 100644 --- a/src/fri/fri_formula.cairo +++ b/src/fri/fri_formula.cairo @@ -61,7 +61,7 @@ fn fri_formula16(values: Span, eval_point: felt252, x_inv: felt252) -> // Folds 'coset_size' elements into one using log2(coset_size) layers of FRI. // 'coset_size' can be 2, 4, 8, or 16. fn fri_formula( - values: Span, eval_point: felt252, x_inv: felt252, coset_size: felt252 + values: Span, eval_point: felt252, x_inv: felt252, coset_size: felt252, ) -> felt252 { // Sort by usage frequency. if (coset_size == 8) { diff --git a/src/fri/fri_last_layer.cairo b/src/fri/fri_last_layer.cairo index 7e47ed0c4..c3fd93a9f 100644 --- a/src/fri/fri_last_layer.cairo +++ b/src/fri/fri_last_layer.cairo @@ -1,4 +1,6 @@ -use integrity::{common::{horner_eval, math::Felt252Div}, fri::fri_layer::FriLayerQuery}; +use integrity::common::horner_eval; +use integrity::common::math::Felt252Div; +use integrity::fri::fri_layer::FriLayerQuery; // Verifies FRI last layer by evaluating the given polynomial on the given points // (=inverses of x_inv_values), and comparing the results to the given values. @@ -9,10 +11,10 @@ fn verify_last_layer(mut queries: Span, coefficients: Span { break; } + Option::None => { break; }, } } } diff --git a/src/fri/fri_layer.cairo b/src/fri/fri_layer.cairo index 3be849548..ca3284e4f 100644 --- a/src/fri/fri_layer.cairo +++ b/src/fri/fri_layer.cairo @@ -1,4 +1,6 @@ -use integrity::{common::{array_extend::ArrayExtendTrait, math::pow}, fri::fri_formula::fri_formula}; +use integrity::common::array_extend::ArrayExtendTrait; +use integrity::common::math::pow; +use integrity::fri::fri_formula::fri_formula; #[derive(Drop, Copy)] struct FriLayerComputationParams { @@ -54,7 +56,7 @@ fn compute_coset_elements( } i += 1; - }; + } (coset_elements, coset_x_inv) } @@ -94,7 +96,11 @@ fn compute_next_layer( verify_indices.append(coset_index); let (coset_elements, coset_x_inv) = compute_coset_elements( - ref queries, ref sibling_witness, coset_size, coset_index * coset_size, params.fri_group + ref queries, + ref sibling_witness, + coset_size, + coset_index * coset_size, + params.fri_group, ); // Verify that at least one query was consumed. @@ -113,10 +119,10 @@ fn compute_next_layer( next_queries .append( FriLayerQuery { - index: coset_index, y_value: fri_formula_res, x_inv_value: next_x_inv - } + index: coset_index, y_value: fri_formula_res, x_inv_value: next_x_inv, + }, ); - }; + } (next_queries, verify_indices, verify_y_values) } diff --git a/src/fri/tests.cairo b/src/fri/tests.cairo index 5ec0bba40..d70e2249f 100644 --- a/src/fri/tests.cairo +++ b/src/fri/tests.cairo @@ -2,9 +2,9 @@ mod test_fri_commit; #[cfg(recursive: 'recursive')] mod test_fri_config; -#[cfg(recursive: 'recursive')] -mod test_fri_verify; mod test_fri_formula; +#[cfg(recursive: 'recursive')] +mod test_fri_verify; mod test_last_layer; mod test_next_layer; diff --git a/src/fri/tests/test_fri_commit.cairo b/src/fri/tests/test_fri_commit.cairo index 5516b5d1c..f0696d44d 100644 --- a/src/fri/tests/test_fri_commit.cairo +++ b/src/fri/tests/test_fri_commit.cairo @@ -1,13 +1,12 @@ -use integrity::{ - channel::channel::ChannelTrait, fri::fri::fri_commit, - tests::{stone_proof_fibonacci, stone_proof_fibonacci_keccak}, -}; +use integrity::channel::channel::ChannelTrait; +use integrity::fri::fri::fri_commit; +use integrity::tests::{stone_proof_fibonacci, stone_proof_fibonacci_keccak}; #[test] #[available_gas(9999999999)] fn test_fri_commit() { let mut channel = ChannelTrait::new_with_counter( - 0x3612d68f9f68b263d83b0854b812018fd1b7ba0359d7514fffdabd44f0696e6, 0x1 + 0x3612d68f9f68b263d83b0854b812018fd1b7ba0359d7514fffdabd44f0696e6, 0x1, ); let fri_config = stone_proof_fibonacci_keccak::fri::config::get(); @@ -15,8 +14,8 @@ fn test_fri_commit() { assert( fri_commit( - ref channel, unsent_commitment, fri_config + ref channel, unsent_commitment, fri_config, ) == stone_proof_fibonacci_keccak::fri::commitment::get(), - 'Invalid value' + 'Invalid value', ); } diff --git a/src/fri/tests/test_fri_config.cairo b/src/fri/tests/test_fri_config.cairo index 5f9da318a..baee4044c 100644 --- a/src/fri/tests/test_fri_config.cairo +++ b/src/fri/tests/test_fri_config.cairo @@ -1,4 +1,5 @@ -use integrity::{fri::fri_config::FriConfigTrait, tests::stone_proof_fibonacci}; +use integrity::fri::fri_config::FriConfigTrait; +use integrity::tests::stone_proof_fibonacci; #[test] #[available_gas(9999999999)] @@ -11,8 +12,8 @@ fn test_fri_config() { assert( fri_config .validate( - log_n_cosets, n_verifier_friendly_commitment_layers + log_n_cosets, n_verifier_friendly_commitment_layers, ) == log_expected_input_degree, - 'Invalid value' + 'Invalid value', ); } diff --git a/src/fri/tests/test_fri_formula.cairo b/src/fri/tests/test_fri_formula.cairo index 927c97c53..ba7429ff7 100644 --- a/src/fri/tests/test_fri_formula.cairo +++ b/src/fri/tests/test_fri_formula.cairo @@ -5,7 +5,7 @@ use integrity::fri::fri_formula::fri_formula; fn test_fri_formula2() { let coset_values = array![ 256174450386745647456273661147162555580494518861153534647088465922575117334, - 1671405167398496013166151137317583376038528401232344909132875285960291311268 + 1671405167398496013166151137317583376038528401232344909132875285960291311268, ]; let eval_point = 990499144245737974799008890724836248213916208950349459587583338754726831595; let x_inv = 2562983180373163585382777096151079646715274516289060915516104360308560206742; @@ -22,7 +22,7 @@ fn test_fri_formula4() { 2918451960196183950799272371389606628523370484646741980148988314056840633012, 1828256075401704910953535512167992927476841764512113836321405179977451944658, 443990580507814779714721735425307372556191581217364203603052790273043374812, - 478993815713421978957120397192722702770323426746719771295955120433436796180 + 478993815713421978957120397192722702770323426746719771295955120433436796180, ]; let eval_point = 457249448999073095464130886760235558440510604838488179928102756356962280192; let x_inv = 3107440215033843359186594841583230014816092994120559276037011692468583562476; @@ -44,7 +44,7 @@ fn test_fri_formula8() { 2000528913550216347590830479340601949879559709495641913127193800231287027181, 968156013310731486938436114466792427269789175801786475032517169685274987637, 3250035871629077170491947405374956034621884547926979323876970138934589005216, - 897157052540850732712732450079850389056926113695526376358380698632562487485 + 897157052540850732712732450079850389056926113695526376358380698632562487485, ]; let eval_point = 117094530326216229550146135028366305396570718736487726300139051888760830677; let x_inv = 2178676743740509795000995476125961580296168609656535469725486531798699196988; @@ -73,7 +73,7 @@ fn test_fri_formula16() { 3136851806033301474120777392426720795558868125196843704074663617779378457446, 1587406744973581680114122359205653339457720336912159943930529946020104828453, 1405784999711145104568440705151178765262609426103481131577188329447712092445, - 2526225071480351877750250312060682153979427353331663476892300511344908692936 + 2526225071480351877750250312060682153979427353331663476892300511344908692936, ]; let eval_point = 611757761827218372659316980928600090155368845034029583212395428142956808164; let x_inv = 2747636755771078955150747981212578469605285885376168668689388042479636251975; diff --git a/src/fri/tests/test_fri_verify.cairo b/src/fri/tests/test_fri_verify.cairo index 59ce7f427..704d5ca25 100644 --- a/src/fri/tests/test_fri_verify.cairo +++ b/src/fri/tests/test_fri_verify.cairo @@ -1,6 +1,5 @@ -use integrity::{ - fri::fri::fri_verify_initial, tests::{stone_proof_fibonacci, stone_proof_fibonacci_keccak} -}; +use integrity::fri::fri::fri_verify_initial; +use integrity::tests::{stone_proof_fibonacci, stone_proof_fibonacci_keccak}; #[cfg(feature: 'blake2s')] #[test] diff --git a/src/fri/tests/test_last_layer.cairo b/src/fri/tests/test_last_layer.cairo index 396a73bae..416ab6046 100644 --- a/src/fri/tests/test_last_layer.cairo +++ b/src/fri/tests/test_last_layer.cairo @@ -1,4 +1,5 @@ -use integrity::fri::{fri_last_layer::verify_last_layer, fri_layer::FriLayerQuery}; +use integrity::fri::fri_last_layer::verify_last_layer; +use integrity::fri::fri_layer::FriLayerQuery; #[test] #[available_gas(9999999999)] @@ -7,83 +8,83 @@ fn test_verify_last_layer1() { FriLayerQuery { index: 0, y_value: 2079129405561620208087077895401073393365548266683640775208900575472382109824, - x_inv_value: 1025200915594184200313698913014916492712823017977023269060618978800032187220 + x_inv_value: 1025200915594184200313698913014916492712823017977023269060618978800032187220, }, FriLayerQuery { index: 0, y_value: 3393322956210468285165331333162707202834898699898049190152720955395767718796, - x_inv_value: 1122187072723254225962628178169851337055839455052122783532867692861890824980 + x_inv_value: 1122187072723254225962628178169851337055839455052122783532867692861890824980, }, FriLayerQuery { index: 0, y_value: 774658394404375667069053053780760505339136849546403700110016309956817889723, - x_inv_value: 3523496338085130181348257946285311374370953078793932160256947210226520443021 + x_inv_value: 3523496338085130181348257946285311374370953078793932160256947210226520443021, }, FriLayerQuery { index: 0, y_value: 1540595761698447925811667139221348041976282862801600548986133753032241611666, - x_inv_value: 2405254460431699228440085592461078086000237395142668534627506859073068861835 + x_inv_value: 2405254460431699228440085592461078086000237395142668534627506859073068861835, }, FriLayerQuery { index: 0, y_value: 2375818020905191665174059219621958843578191707263505707808931476471770468721, - x_inv_value: 1586129732899109811846311412740924349890132466584764773677662219972426860210 + x_inv_value: 1586129732899109811846311412740924349890132466584764773677662219972426860210, }, FriLayerQuery { index: 0, y_value: 427607608639344818356730590175870246773395941237044155986562999884021276776, - x_inv_value: 1640049332764903875546586759150487638050083510098376464536986443432378599707 + x_inv_value: 1640049332764903875546586759150487638050083510098376464536986443432378599707, }, FriLayerQuery { index: 0, y_value: 2850086244202783478756254096889060252878398514669981939839198213505105677022, - x_inv_value: 734414869129084189608580973230821029766816902559046453978063257349178461650 + x_inv_value: 734414869129084189608580973230821029766816902559046453978063257349178461650, }, FriLayerQuery { index: 0, y_value: 1920671448998228135836254663634037531675602477535881837097102450902739293735, - x_inv_value: 3190584962170961049287869885415010412220996646943132110310786111368665853201 + x_inv_value: 3190584962170961049287869885415010412220996646943132110310786111368665853201, }, FriLayerQuery { index: 0, y_value: 2079129405561620208087077895401073393365548266683640775208900575472382109824, - x_inv_value: 1025200915594184200313698913014916492712823017977023269060618978800032187220 + x_inv_value: 1025200915594184200313698913014916492712823017977023269060618978800032187220, }, FriLayerQuery { index: 0, y_value: 3393322956210468285165331333162707202834898699898049190152720955395767718796, - x_inv_value: 1122187072723254225962628178169851337055839455052122783532867692861890824980 + x_inv_value: 1122187072723254225962628178169851337055839455052122783532867692861890824980, }, FriLayerQuery { index: 0, y_value: 774658394404375667069053053780760505339136849546403700110016309956817889723, - x_inv_value: 3523496338085130181348257946285311374370953078793932160256947210226520443021 + x_inv_value: 3523496338085130181348257946285311374370953078793932160256947210226520443021, }, FriLayerQuery { index: 0, y_value: 1540595761698447925811667139221348041976282862801600548986133753032241611666, - x_inv_value: 2405254460431699228440085592461078086000237395142668534627506859073068861835 + x_inv_value: 2405254460431699228440085592461078086000237395142668534627506859073068861835, }, FriLayerQuery { index: 0, y_value: 2375818020905191665174059219621958843578191707263505707808931476471770468721, - x_inv_value: 1586129732899109811846311412740924349890132466584764773677662219972426860210 + x_inv_value: 1586129732899109811846311412740924349890132466584764773677662219972426860210, }, FriLayerQuery { index: 0, y_value: 427607608639344818356730590175870246773395941237044155986562999884021276776, - x_inv_value: 1640049332764903875546586759150487638050083510098376464536986443432378599707 + x_inv_value: 1640049332764903875546586759150487638050083510098376464536986443432378599707, }, FriLayerQuery { index: 0, y_value: 2850086244202783478756254096889060252878398514669981939839198213505105677022, - x_inv_value: 734414869129084189608580973230821029766816902559046453978063257349178461650 + x_inv_value: 734414869129084189608580973230821029766816902559046453978063257349178461650, }, FriLayerQuery { index: 0, y_value: 1920671448998228135836254663634037531675602477535881837097102450902739293735, - x_inv_value: 3190584962170961049287869885415010412220996646943132110310786111368665853201 - } + x_inv_value: 3190584962170961049287869885415010412220996646943132110310786111368665853201, + }, ]; let coefficients = array![ 2392461143815077320697693846111481235203067221193351858024888568343343862087, @@ -341,56 +342,56 @@ fn test_verify_last_layer1() { 1373986494651822153370271094873500681762649025140914795849798157911646870213, 1738371563205679072642066133691189728281960601898948284519761121629425710832, 821149419388664457210039727183868832647539893624021908488509826452956715624, - 3039275610411515805655267711065095119968040147613881706651796604857471126655 + 3039275610411515805655267711065095119968040147613881706651796604857471126655, ]; verify_last_layer(queries.span(), coefficients.span()); } #[test] -#[should_panic] +#[should_panic(expected: 'Invalid value')] #[available_gas(9999999999)] fn test_verify_last_layer2() { let queries = array![ FriLayerQuery { index: 0, y_value: 658321961196538499071727543513760083690111269972877446426634252344691191289, - x_inv_value: 2163238211795908974316003271296609453501829793986314085333708297507343998630 + x_inv_value: 2163238211795908974316003271296609453501829793986314085333708297507343998630, }, FriLayerQuery { index: 0, y_value: 227508471404491932488808905754064674914767635770123391447879022920950166178, - x_inv_value: 1281170383120882780545268551400979581414525883711243043891591303817233324914 + x_inv_value: 1281170383120882780545268551400979581414525883711243043891591303817233324914, }, FriLayerQuery { index: 0, y_value: 202713457923558393769620871486818880763979782942581765233088844520839863907, - x_inv_value: 3528796316240649018153502613187355479453371358645062568865026278899999672386 + x_inv_value: 3528796316240649018153502613187355479453371358645062568865026278899999672386, }, FriLayerQuery { index: 0, y_value: 1098312266638356860362970394040927545462785198670297622592615162109213638726, - x_inv_value: 1774619121576985850595401212321651873158516895845864952256073950753219318265 + x_inv_value: 1774619121576985850595401212321651873158516895845864952256073950753219318265, }, FriLayerQuery { index: 0, y_value: 3401308477101229818178277544291567307104991785356208476361126944320377543827, - x_inv_value: 3364081184805240783239076870401210349211407701849066501056404933343422520465 + x_inv_value: 3364081184805240783239076870401210349211407701849066501056404933343422520465, }, FriLayerQuery { index: 0, y_value: 953533918560692514651698075891680377446500019173942833049503983352319209671, - x_inv_value: 1198257737377526939694785697696602706177609035475062236517198505472728121254 + x_inv_value: 1198257737377526939694785697696602706177609035475062236517198505472728121254, }, FriLayerQuery { index: 0, y_value: 3376680096977705594293323916903343600436602652586611494763517586751811350613, - x_inv_value: 1289065457262991290708803547491156734832123912153446472771774926514030335120 + x_inv_value: 1289065457262991290708803547491156734832123912153446472771774926514030335120, }, FriLayerQuery { index: 0, y_value: 218730271760308617273014223453978552249369546455721401640834240789998201580, - x_inv_value: 289419604979857442071093777562000605116085366573463463573115235909034257695 - } + x_inv_value: 289419604979857442071093777562000605116085366573463463573115235909034257695, + }, ]; let coefficients = array![ 172899125269878760298391979702400523264587808452545341271505234947901375038, @@ -648,7 +649,7 @@ fn test_verify_last_layer2() { 1504789471693524462611439894370612072128624422967184627911276899833974141739, 816511396673062660268968292929183740444295323937538885450187927777061459087, 2082441976691688352350310436004624009406143617909030079046806193850777238428, - 2167140723175373200170628228500397714678264688514353023411309431377754202099 + 2167140723175373200170628228500397714678264688514353023411309431377754202099, ]; verify_last_layer(queries.span(), coefficients.span()); } diff --git a/src/fri/tests/test_next_layer.cairo b/src/fri/tests/test_next_layer.cairo index ab7922686..f2e0808f6 100644 --- a/src/fri/tests/test_next_layer.cairo +++ b/src/fri/tests/test_next_layer.cairo @@ -1,7 +1,5 @@ -use integrity::fri::{ - fri_layer::{FriLayerQuery, FriLayerComputationParams, compute_next_layer}, - fri_group::get_fri_group, -}; +use integrity::fri::fri_group::get_fri_group; +use integrity::fri::fri_layer::{FriLayerComputationParams, FriLayerQuery, compute_next_layer}; #[test] #[available_gas(9999999999)] @@ -10,32 +8,32 @@ fn test_next_layer1() { FriLayerQuery { index: 19, y_value: 3009640132648008425771663319959959262486220333099664427328058765768842449250, - x_inv_value: 54553547539894122403827046258314152559223416585866015792288871627619859008 - } + x_inv_value: 54553547539894122403827046258314152559223416585866015792288871627619859008, + }, ]; let sibling_witness = array![ - 1123008634785466227765787920403783137942925653310144335875674694591276473192 + 1123008634785466227765787920403783137942925653310144335875674694591276473192, ]; let params = FriLayerComputationParams { coset_size: 2, fri_group: get_fri_group().span(), - eval_point: 2443479172752326919986485065418726216145528469562787664528210275186695390471 + eval_point: 2443479172752326919986485065418726216145528469562787664528210275186695390471, }; let expected_next_queries = array![ FriLayerQuery { index: 9, y_value: 2185991974161515735589370697017442079762615282775874094325294026252936541583, - x_inv_value: 1697286867097833219836294983908733326167501326977247172278435262719557593504 - } + x_inv_value: 1697286867097833219836294983908733326167501326977247172278435262719557593504, + }, ]; let expected_verify_indices = array![9]; let expected_verify_y_values = array![ 1123008634785466227765787920403783137942925653310144335875674694591276473192, - 3009640132648008425771663319959959262486220333099664427328058765768842449250 + 3009640132648008425771663319959959262486220333099664427328058765768842449250, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -50,36 +48,36 @@ fn test_next_layer2() { FriLayerQuery { index: 17, y_value: 2759623090142790690855098103901650892631267048724128835098128315349419136695, - x_inv_value: 108072969398534483334507045980403840714691619221758030761568305841993401905 - } + x_inv_value: 108072969398534483334507045980403840714691619221758030761568305841993401905, + }, ]; let sibling_witness = array![ 522165234549733937327724288257767164912068272740875848443122078655609268368, 62652482029070998724738900051279388447617017224333293756545714721568375652, - 2828526802429981059567341974328690206758626003655409262291038410023069024668 + 2828526802429981059567341974328690206758626003655409262291038410023069024668, ]; let params = FriLayerComputationParams { coset_size: 4, fri_group: get_fri_group().span(), - eval_point: 1982585344331058375026005306471531766707340420809531025829328268083147325627 + eval_point: 1982585344331058375026005306471531766707340420809531025829328268083147325627, }; let expected_next_queries = array![ FriLayerQuery { index: 4, y_value: 1077998794348284354598652343293562698049252500211550192464629080328316673698, - x_inv_value: 2633238744713263728019330547123200367032740465948237927517365901877698129956 - } + x_inv_value: 2633238744713263728019330547123200367032740465948237927517365901877698129956, + }, ]; let expected_verify_indices = array![4]; let expected_verify_y_values = array![ 522165234549733937327724288257767164912068272740875848443122078655609268368, 2759623090142790690855098103901650892631267048724128835098128315349419136695, 62652482029070998724738900051279388447617017224333293756545714721568375652, - 2828526802429981059567341974328690206758626003655409262291038410023069024668 + 2828526802429981059567341974328690206758626003655409262291038410023069024668, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -94,8 +92,8 @@ fn test_next_layer3() { FriLayerQuery { index: 22, y_value: 1231175216455939321078564173742303628142533875402290207354372253959167512307, - x_inv_value: 3549719361548528048410263413791561966844406610277484802193762821339412459253 - } + x_inv_value: 3549719361548528048410263413791561966844406610277484802193762821339412459253, + }, ]; let sibling_witness = array![ 1195728970024453214596842786271366866852813595571023478251747255080180444356, @@ -104,19 +102,19 @@ fn test_next_layer3() { 696195716834231608288788009791330705738847261355229689955205457557899136571, 2406075573647619823270675912178389603227671840135528066638010667847181325236, 1443348866565840245319023638700994949540305260981210463118495875007167932493, - 534188447380076871805292320071703806717768188674590858686911614529936239219 + 534188447380076871805292320071703806717768188674590858686911614529936239219, ]; let params = FriLayerComputationParams { coset_size: 8, fri_group: get_fri_group().span(), - eval_point: 2996681160573045082893848544757424160476352714075260471151952365319051355220 + eval_point: 2996681160573045082893848544757424160476352714075260471151952365319051355220, }; let expected_next_queries = array![ FriLayerQuery { index: 2, y_value: 1177504462272530471841134041622641579704605903617132590626888326120254257690, - x_inv_value: 1047036369304219502363557810404294786592772605083308486097044742656766540637 - } + x_inv_value: 1047036369304219502363557810404294786592772605083308486097044742656766540637, + }, ]; let expected_verify_indices = array![2]; let expected_verify_y_values = array![ @@ -127,11 +125,11 @@ fn test_next_layer3() { 2406075573647619823270675912178389603227671840135528066638010667847181325236, 1443348866565840245319023638700994949540305260981210463118495875007167932493, 1231175216455939321078564173742303628142533875402290207354372253959167512307, - 534188447380076871805292320071703806717768188674590858686911614529936239219 + 534188447380076871805292320071703806717768188674590858686911614529936239219, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -146,8 +144,8 @@ fn test_next_layer4() { FriLayerQuery { index: 17, y_value: 107634985777525198719457933516612993333665001206557081850887267601999593307, - x_inv_value: 2917507526425378062891209641407297049970803804883101888033200410523468508223 - } + x_inv_value: 2917507526425378062891209641407297049970803804883101888033200410523468508223, + }, ]; let sibling_witness = array![ 1614105094820940547932979114275805368596980954610062272415295623855966399938, @@ -164,19 +162,19 @@ fn test_next_layer4() { 3583160895940362754785449698054871358616520492881184046653896695508292242503, 594594828186152981815670652237875899521490193148447582824261477355572427969, 382626503505367944553110895981418673385282307671448132202545565018242767288, - 3476983551724853290554915215874670223757771126370434051488495793846971603388 + 3476983551724853290554915215874670223757771126370434051488495793846971603388, ]; let params = FriLayerComputationParams { coset_size: 16, fri_group: get_fri_group().span(), - eval_point: 3246137206661909741808114726375056135951563790002136626674903353340777908146 + eval_point: 3246137206661909741808114726375056135951563790002136626674903353340777908146, }; let expected_next_queries = array![ FriLayerQuery { index: 1, y_value: 1441275254889998903858094604425484342000396355353206424417863045484990540435, - x_inv_value: 1829818947064372678210995598394063122549682555566012270431529834421656963592 - } + x_inv_value: 1829818947064372678210995598394063122549682555566012270431529834421656963592, + }, ]; let expected_verify_indices = array![1]; let expected_verify_y_values = array![ @@ -195,11 +193,11 @@ fn test_next_layer4() { 3583160895940362754785449698054871358616520492881184046653896695508292242503, 594594828186152981815670652237875899521490193148447582824261477355572427969, 382626503505367944553110895981418673385282307671448132202545565018242767288, - 3476983551724853290554915215874670223757771126370434051488495793846971603388 + 3476983551724853290554915215874670223757771126370434051488495793846971603388, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -214,45 +212,45 @@ fn test_next_layer5() { FriLayerQuery { index: 0, y_value: 746591562936821030835715747889843595163396575226181906015101280529866617133, - x_inv_value: 2839890473743673236434239057700432645437719700778360715637471771392219034326 + x_inv_value: 2839890473743673236434239057700432645437719700778360715637471771392219034326, }, FriLayerQuery { index: 9, y_value: 432934865743208963457432082990566669321350335050040579267198873031828688172, - x_inv_value: 2944384488565703107562664215590005833661704434344191167631969776808729729163 - } + x_inv_value: 2944384488565703107562664215590005833661704434344191167631969776808729729163, + }, ]; let sibling_witness = array![ 2207292640602765987605417203853603264378518893482237233873998269956850458932, - 288897229768628159275046633516552015154393884429636644820405109361062428074 + 288897229768628159275046633516552015154393884429636644820405109361062428074, ]; let params = FriLayerComputationParams { coset_size: 2, fri_group: get_fri_group().span(), - eval_point: 2185465603412249558871549627667757930155426034864563482170756257080076225958 + eval_point: 2185465603412249558871549627667757930155426034864563482170756257080076225958, }; let expected_next_queries = array![ FriLayerQuery { index: 0, y_value: 1960029025666243333485194840332621335802675978036586078469434126072698208300, - x_inv_value: 3009148876954521410390276225740133816385634755252667189136222755512973018079 + x_inv_value: 3009148876954521410390276225740133816385634755252667189136222755512973018079, }, FriLayerQuery { index: 4, y_value: 501258974496117438650836974499861760052921694630156096214408435425138801490, - x_inv_value: 1715280836225574219633496220661969295029181757403817732538849012006942881738 - } + x_inv_value: 1715280836225574219633496220661969295029181757403817732538849012006942881738, + }, ]; let expected_verify_indices = array![0, 4]; let expected_verify_y_values = array![ 746591562936821030835715747889843595163396575226181906015101280529866617133, 2207292640602765987605417203853603264378518893482237233873998269956850458932, 288897229768628159275046633516552015154393884429636644820405109361062428074, - 432934865743208963457432082990566669321350335050040579267198873031828688172 + 432934865743208963457432082990566669321350335050040579267198873031828688172, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -267,13 +265,13 @@ fn test_next_layer6() { FriLayerQuery { index: 5, y_value: 1096892199810651185152195112986319610579001690328932435764292779877576915121, - x_inv_value: 3279544897416438008064089022127475409847685010480359106267514969650981832082 + x_inv_value: 3279544897416438008064089022127475409847685010480359106267514969650981832082, }, FriLayerQuery { index: 19, y_value: 1641855356491365833554692237319212189801903876432464673866647716719043041465, - x_inv_value: 2293250085048948415112043044736231472430743506786581498262287561751356762014 - } + x_inv_value: 2293250085048948415112043044736231472430743506786581498262287561751356762014, + }, ]; let sibling_witness = array![ 804399642855128535722354372618913360973130781887293769086134887025287828450, @@ -281,24 +279,24 @@ fn test_next_layer6() { 1233031324852744699980974111822491085958694791795843758111112233603894427238, 1810994839619816704905050921987428341202461226961859918732361321793970914107, 1892124182925365936167405294153806740491710255246363205322154303233181243718, - 1337441648818842689794955442935277091168720593363441772344593529889075124973 + 1337441648818842689794955442935277091168720593363441772344593529889075124973, ]; let params = FriLayerComputationParams { coset_size: 4, fri_group: get_fri_group().span(), - eval_point: 2167335350971787138507326388801205881447440912920817749862011161467677463940 + eval_point: 2167335350971787138507326388801205881447440912920817749862011161467677463940, }; let expected_next_queries = array![ FriLayerQuery { index: 1, y_value: 1181712651684323748024837749719027006506698122447393260787788152426027849043, - x_inv_value: 1653115732351104701033693337462649968391138809812222376293178295401862046874 + x_inv_value: 1653115732351104701033693337462649968391138809812222376293178295401862046874, }, FriLayerQuery { index: 4, y_value: 1268308829684608985195972079707177792876762551009734230680402124542318187648, - x_inv_value: 1164447905508868651636386487771626691241643134212100820768777787963076904518 - } + x_inv_value: 1164447905508868651636386487771626691241643134212100820768777787963076904518, + }, ]; let expected_verify_indices = array![1, 4]; let expected_verify_y_values = array![ @@ -309,11 +307,11 @@ fn test_next_layer6() { 1810994839619816704905050921987428341202461226961859918732361321793970914107, 1892124182925365936167405294153806740491710255246363205322154303233181243718, 1337441648818842689794955442935277091168720593363441772344593529889075124973, - 1641855356491365833554692237319212189801903876432464673866647716719043041465 + 1641855356491365833554692237319212189801903876432464673866647716719043041465, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -328,13 +326,13 @@ fn test_next_layer7() { FriLayerQuery { index: 7, y_value: 3075517878492540103040166847866926446865777778640852962190520816632339596145, - x_inv_value: 608694432915418906087773663985135750833888921733668764639429291959306418477 + x_inv_value: 608694432915418906087773663985135750833888921733668764639429291959306418477, }, FriLayerQuery { index: 27, y_value: 131983826742021719455910211379866988384811584925288184480272187873636838108, - x_inv_value: 1974198664155436145837620318999161049479840212206498623330601633289848275514 - } + x_inv_value: 1974198664155436145837620318999161049479840212206498623330601633289848275514, + }, ]; let sibling_witness = array![ 1381946771663536271686283445165923669245048036336685207435678635918790010415, @@ -350,24 +348,24 @@ fn test_next_layer7() { 876491878808193133805417604582642436856178348784148668921521578336602541775, 1681379446663085402254280534212103014447726541607694761283737523967486068323, 2765034771912257979612046850994949532603486328163588398162583894664641390299, - 2828844164871944409923044279501485001881689120102902225098373010416437899881 + 2828844164871944409923044279501485001881689120102902225098373010416437899881, ]; let params = FriLayerComputationParams { coset_size: 8, fri_group: get_fri_group().span(), - eval_point: 384372973063416357441038011066619352380639619775069754153768649812098431519 + eval_point: 384372973063416357441038011066619352380639619775069754153768649812098431519, }; let expected_next_queries = array![ FriLayerQuery { index: 0, y_value: 3519382920442250662715268714283575071860170073120425261766286332519433463480, - x_inv_value: 266451709395649792495102217411295552361654455242989832116307089851296053314 + x_inv_value: 266451709395649792495102217411295552361654455242989832116307089851296053314, }, FriLayerQuery { index: 3, y_value: 3413008593626981122050040132687328477275093156117246104307650363140459009419, - x_inv_value: 1107290807486481817999551113742590485010425323783882499076376127930136554678 - } + x_inv_value: 1107290807486481817999551113742590485010425323783882499076376127930136554678, + }, ]; let expected_verify_indices = array![0, 3]; let expected_verify_y_values = array![ @@ -386,11 +384,11 @@ fn test_next_layer7() { 876491878808193133805417604582642436856178348784148668921521578336602541775, 1681379446663085402254280534212103014447726541607694761283737523967486068323, 2765034771912257979612046850994949532603486328163588398162583894664641390299, - 2828844164871944409923044279501485001881689120102902225098373010416437899881 + 2828844164871944409923044279501485001881689120102902225098373010416437899881, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -405,13 +403,13 @@ fn test_next_layer8() { FriLayerQuery { index: 14, y_value: 2812191291368465400252368036784849631295311044099688251864335547264648760929, - x_inv_value: 3327960025629984902906808973965115139132894388720619540209395295175202435223 + x_inv_value: 3327960025629984902906808973965115139132894388720619540209395295175202435223, }, FriLayerQuery { index: 28, y_value: 945312106572582053105339715798467543580544183072055346899673660213540546488, - x_inv_value: 1982376188084661049306441397930389303876068734739596367142474139857967005184 - } + x_inv_value: 1982376188084661049306441397930389303876068734739596367142474139857967005184, + }, ]; let sibling_witness = array![ 2949257002824431099820924461178954292967579447203636252898226318072740386824, @@ -443,24 +441,24 @@ fn test_next_layer8() { 1903399152209210559959462040157108438124673941817349364218680564081568770298, 2260002643446022813142304377372681801652650136648130581924766564336949881263, 3155765214842786052334914920203360592720185878259088994232602983562348781025, - 3485201017653558756685420512495162933189527567610822904102000763401993219662 + 3485201017653558756685420512495162933189527567610822904102000763401993219662, ]; let params = FriLayerComputationParams { coset_size: 16, fri_group: get_fri_group().span(), - eval_point: 52871414864247307776012409456547680662415039421837737271534775961443350705 + eval_point: 52871414864247307776012409456547680662415039421837737271534775961443350705, }; let expected_next_queries = array![ FriLayerQuery { index: 0, y_value: 2731422975982182882081741213504406076248280179242291132508067217003010322490, - x_inv_value: 3183581941728587291517385359778659637268454365590489450398239584747532037461 + x_inv_value: 3183581941728587291517385359778659637268454365590489450398239584747532037461, }, FriLayerQuery { index: 1, y_value: 3228016798076912219844600739928191932167567203345640315464632263570697784005, - x_inv_value: 434920846937543922179937423316410468354652849741107249574852471388339983020 - } + x_inv_value: 434920846937543922179937423316410468354652849741107249574852471388339983020, + }, ]; let expected_verify_indices = array![0, 1]; let expected_verify_y_values = array![ @@ -495,11 +493,11 @@ fn test_next_layer8() { 945312106572582053105339715798467543580544183072055346899673660213540546488, 2260002643446022813142304377372681801652650136648130581924766564336949881263, 3155765214842786052334914920203360592720185878259088994232602983562348781025, - 3485201017653558756685420512495162933189527567610822904102000763401993219662 + 3485201017653558756685420512495162933189527567610822904102000763401993219662, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -514,49 +512,49 @@ fn test_next_layer9() { FriLayerQuery { index: 10, y_value: 3301979551015115642776773522833072926462865561144560488920209857718769165321, - x_inv_value: 2447768544415408676335928447643487449650900913681401829424717259768986472741 + x_inv_value: 2447768544415408676335928447643487449650900913681401829424717259768986472741, }, FriLayerQuery { index: 28, y_value: 260750552966409642499431036714653525048800120747768231293468725416260188565, - x_inv_value: 3563529224071196680374798485546840836554333985312746699506733128078602078641 + x_inv_value: 3563529224071196680374798485546840836554333985312746699506733128078602078641, }, FriLayerQuery { index: 29, y_value: 1823311453035327473280509270574026429844738895506436406781130453908277513530, - x_inv_value: 54973564594934533322524297548229269068773230018850000466358928057269941840 - } + x_inv_value: 54973564594934533322524297548229269068773230018850000466358928057269941840, + }, ]; let sibling_witness = array![ - 3176532942878567276526900338617699157909586755721347090315239907293123933092 + 3176532942878567276526900338617699157909586755721347090315239907293123933092, ]; let params = FriLayerComputationParams { coset_size: 2, fri_group: get_fri_group().span(), - eval_point: 581747590720875793993157628416105910892274340828581484518962213541176928984 + eval_point: 581747590720875793993157628416105910892274340828581484518962213541176928984, }; let expected_next_queries = array![ FriLayerQuery { index: 5, y_value: 3275133527488003020272254384265923882734156428348855484827341126286781354142, - x_inv_value: 2615309274026883345480537437370039939583535394834355181916645336586036374461 + x_inv_value: 2615309274026883345480537437370039939583535394834355181916645336586036374461, }, FriLayerQuery { index: 14, y_value: 2611221225089844146967129398570862707600738146407577663333768748170096584339, - x_inv_value: 1675506256769046824455009524724840487217963849380458734340688061164470257879 - } + x_inv_value: 1675506256769046824455009524724840487217963849380458734340688061164470257879, + }, ]; let expected_verify_indices = array![5, 14]; let expected_verify_y_values = array![ 3301979551015115642776773522833072926462865561144560488920209857718769165321, 3176532942878567276526900338617699157909586755721347090315239907293123933092, 260750552966409642499431036714653525048800120747768231293468725416260188565, - 1823311453035327473280509270574026429844738895506436406781130453908277513530 + 1823311453035327473280509270574026429844738895506436406781130453908277513530, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -571,18 +569,18 @@ fn test_next_layer10() { FriLayerQuery { index: 5, y_value: 2302109513041081253191847726874632617695812467358434547038386746651006842380, - x_inv_value: 2637474160357003981779699526943464856611941641202539833636026322990388707333 + x_inv_value: 2637474160357003981779699526943464856611941641202539833636026322990388707333, }, FriLayerQuery { index: 13, y_value: 2421144434847175762056784279666434264733454757381019920618274713336842008821, - x_inv_value: 3087662183041901605559596075538966726399103482477428404944198306175727302850 + x_inv_value: 3087662183041901605559596075538966726399103482477428404944198306175727302850, }, FriLayerQuery { index: 22, y_value: 1359842048097095741378484164247564983223481090058269548624795715692521460139, - x_inv_value: 185282605276538732396669144005696787636433561792146384397375513028006583411 - } + x_inv_value: 185282605276538732396669144005696787636433561792146384397375513028006583411, + }, ]; let sibling_witness = array![ 3354395884762193735774972945190699549697221284699421903066644213798392549402, @@ -593,29 +591,29 @@ fn test_next_layer10() { 2809244789545431804862877174186922907097032744568338981087812219597365747358, 3584511590009863696665267819675356849136392492253578574053929941069778312453, 2319520140453873363680878801076253902750880806504432226644283646473284304066, - 3403040452882679612874283723507253802829979450632690322212356915241676774155 + 3403040452882679612874283723507253802829979450632690322212356915241676774155, ]; let params = FriLayerComputationParams { coset_size: 4, fri_group: get_fri_group().span(), - eval_point: 842716418594610507165719701550798710728706432825705961415071015594374037783 + eval_point: 842716418594610507165719701550798710728706432825705961415071015594374037783, }; let expected_next_queries = array![ FriLayerQuery { index: 1, y_value: 738283733844654320656593304955937814018241368923162576526604344171964798523, - x_inv_value: 473662685190715868134016058090152279944149415440903111962958772704259767472 + x_inv_value: 473662685190715868134016058090152279944149415440903111962958772704259767472, }, FriLayerQuery { index: 3, y_value: 969134386771919091675706269957962126061036556734351502037905523368628343664, - x_inv_value: 2176451726708652476016850844470876509775490912344006510026083913284976867308 + x_inv_value: 2176451726708652476016850844470876509775490912344006510026083913284976867308, }, FriLayerQuery { index: 5, y_value: 2830771694438643841398564545385741940324054273824824277829790639217160649922, - x_inv_value: 2650304629722060934084881169738268161214211940849246175729038797083499024587 - } + x_inv_value: 2650304629722060934084881169738268161214211940849246175729038797083499024587, + }, ]; let expected_verify_indices = array![1, 3, 5]; let expected_verify_y_values = array![ @@ -630,11 +628,11 @@ fn test_next_layer10() { 3584511590009863696665267819675356849136392492253578574053929941069778312453, 2319520140453873363680878801076253902750880806504432226644283646473284304066, 1359842048097095741378484164247564983223481090058269548624795715692521460139, - 3403040452882679612874283723507253802829979450632690322212356915241676774155 + 3403040452882679612874283723507253802829979450632690322212356915241676774155, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -649,18 +647,18 @@ fn test_next_layer11() { FriLayerQuery { index: 13, y_value: 2012970895874678511212757784953971039384348922302933461566125878983543084374, - x_inv_value: 2973904717437488251876439033512297970752041300850017169618797599259028370719 + x_inv_value: 2973904717437488251876439033512297970752041300850017169618797599259028370719, }, FriLayerQuery { index: 27, y_value: 931874247810412416165687814293757020658355126150232036748630683953363661570, - x_inv_value: 584004069736012205202772085193423872545377990373199751488130188652560879737 + x_inv_value: 584004069736012205202772085193423872545377990373199751488130188652560879737, }, FriLayerQuery { index: 29, y_value: 1239648551389298716869809742099762563284007154271743710729395207873328754095, - x_inv_value: 325989084577145299562436609653878858069349249438264163435312273435225996502 - } + x_inv_value: 325989084577145299562436609653878858069349249438264163435312273435225996502, + }, ]; let sibling_witness = array![ 3132112378686662059596343294646770786600609238470988213583095363604854334582, @@ -675,24 +673,24 @@ fn test_next_layer11() { 924492636261377530436326039939616684788498986913092833064848468110206034446, 3215569544372428665026066156374535625549998775193271484978178438432055593239, 89314992381896491523088980471634454610386898184975529899102140430198625686, - 3187985426015104063712461074067156374723555157039404691369397066532053540037 + 3187985426015104063712461074067156374723555157039404691369397066532053540037, ]; let params = FriLayerComputationParams { coset_size: 8, fri_group: get_fri_group().span(), - eval_point: 1891358614242486301056439669334692072313573517224693441784224259774268368657 + eval_point: 1891358614242486301056439669334692072313573517224693441784224259774268368657, }; let expected_next_queries = array![ FriLayerQuery { index: 1, y_value: 3517289172167603711982011298083512014029690033243282325518726512433806986800, - x_inv_value: 1116757482133226363159883558057382197314289333955735205211445722872102609428 + x_inv_value: 1116757482133226363159883558057382197314289333955735205211445722872102609428, }, FriLayerQuery { index: 3, y_value: 2418454055988269773691328349827589783726829031083650466961892768926964470890, - x_inv_value: 3351334608504925878396027162037002984645156260554050897526626427695988305073 - } + x_inv_value: 3351334608504925878396027162037002984645156260554050897526626427695988305073, + }, ]; let expected_verify_indices = array![1, 3]; let expected_verify_y_values = array![ @@ -711,11 +709,11 @@ fn test_next_layer11() { 3215569544372428665026066156374535625549998775193271484978178438432055593239, 1239648551389298716869809742099762563284007154271743710729395207873328754095, 89314992381896491523088980471634454610386898184975529899102140430198625686, - 3187985426015104063712461074067156374723555157039404691369397066532053540037 + 3187985426015104063712461074067156374723555157039404691369397066532053540037, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -730,18 +728,18 @@ fn test_next_layer12() { FriLayerQuery { index: 5, y_value: 2526228053058749206268429435387221189473358598063225073128406154185646521246, - x_inv_value: 1904544901132915451045519411426603084952282873219697946725409068121461435004 + x_inv_value: 1904544901132915451045519411426603084952282873219697946725409068121461435004, }, FriLayerQuery { index: 10, y_value: 56624383172680154199608666479407795256819238702017594377613749554501152230, - x_inv_value: 452303108377316774348461853687416241963542162729446056484774660062242979361 + x_inv_value: 452303108377316774348461853687416241963542162729446056484774660062242979361, }, FriLayerQuery { index: 24, y_value: 1280082646894980092283175931172370782094547118060861067319301021219059720426, - x_inv_value: 1283983430867922805177012513424768198429485865021963916551986827081913277268 - } + x_inv_value: 1283983430867922805177012513424768198429485865021963916551986827081913277268, + }, ]; let sibling_witness = array![ 1207893144587700365996195575736463898273419338985626305569288268445097779644, @@ -772,24 +770,24 @@ fn test_next_layer12() { 847013164052415708297030782851092001846349937526001161676656062025695141455, 2724562613651009432547305409080600001190207517487511534234627332461422211487, 2777023644004316843919492669885675696223519793380600665738536014905002789857, - 2553559058682947159814270185638032697395233101874392167746095003347085031030 + 2553559058682947159814270185638032697395233101874392167746095003347085031030, ]; let params = FriLayerComputationParams { coset_size: 16, fri_group: get_fri_group().span(), - eval_point: 3595973390675465639794922899086636220512672666972909183802502305051197462034 + eval_point: 3595973390675465639794922899086636220512672666972909183802502305051197462034, }; let expected_next_queries = array![ FriLayerQuery { index: 0, y_value: 1088705866760295650273261822438240192516309122056858821372288964395003420702, - x_inv_value: 616315024773588042326990745933816118347080550260649970905916351058572263364 + x_inv_value: 616315024773588042326990745933816118347080550260649970905916351058572263364, }, FriLayerQuery { index: 1, y_value: 2860448070944891293646997797340290664354871085123970576706463496050069457334, - x_inv_value: 3002187763892543171370332037161253987276026665070946729067175705077299757117 - } + x_inv_value: 3002187763892543171370332037161253987276026665070946729067175705077299757117, + }, ]; let expected_verify_indices = array![0, 1]; let expected_verify_y_values = array![ @@ -824,11 +822,11 @@ fn test_next_layer12() { 847013164052415708297030782851092001846349937526001161676656062025695141455, 2724562613651009432547305409080600001190207517487511534234627332461422211487, 2777023644004316843919492669885675696223519793380600665738536014905002789857, - 2553559058682947159814270185638032697395233101874392167746095003347085031030 + 2553559058682947159814270185638032697395233101874392167746095003347085031030, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -843,56 +841,56 @@ fn test_next_layer13() { FriLayerQuery { index: 4, y_value: 1627753637108195107008717260643443556440896293952766167989244332362025128955, - x_inv_value: 165072171847702776025005442077416581427717054356960489404605508780869429109 + x_inv_value: 165072171847702776025005442077416581427717054356960489404605508780869429109, }, FriLayerQuery { index: 6, y_value: 1907069019505532596977567890050857167624794813827113677169100094032312679860, - x_inv_value: 2838405280269567641797768141989974821924250514269469085547129106678089679276 + x_inv_value: 2838405280269567641797768141989974821924250514269469085547129106678089679276, }, FriLayerQuery { index: 17, y_value: 2667758142751156730750479133927958256743897982548140807600266277386132227210, - x_inv_value: 3170021172787255616470538597751371781796787498724713449478272545829880462903 + x_inv_value: 3170021172787255616470538597751371781796787498724713449478272545829880462903, }, FriLayerQuery { index: 19, y_value: 3054802752625116251242176575121855863384552134692463894146326808649779880106, - x_inv_value: 538689680560493478426594143215819266234245765733410283169873364502317472115 - } + x_inv_value: 538689680560493478426594143215819266234245765733410283169873364502317472115, + }, ]; let sibling_witness = array![ 2050030406567804179442000347699156712126697950069244167305023529960957405037, 725479814115011831742735395574739712735192127192219676877319469925485638090, 2004541427256438610478116272570683095787443576788754802866420921854549452311, - 724963531516986282530869066191617872380337840104897443636827319336363047197 + 724963531516986282530869066191617872380337840104897443636827319336363047197, ]; let params = FriLayerComputationParams { coset_size: 2, fri_group: get_fri_group().span(), - eval_point: 2421848930253683544491204126387682224910511646695020603828594542121930160761 + eval_point: 2421848930253683544491204126387682224910511646695020603828594542121930160761, }; let expected_next_queries = array![ FriLayerQuery { index: 2, y_value: 660153636442127173118975536965070819250293153948896357172872743794635105879, - x_inv_value: 2960686226227640912988100104315064357312831954878333460443552280409792680793 + x_inv_value: 2960686226227640912988100104315064357312831954878333460443552280409792680793, }, FriLayerQuery { index: 3, y_value: 2583053251813978881353554001887300235615403361797918894623762263894051653781, - x_inv_value: 657816562438490300709222678780005748310275260453263239529539775726079339688 + x_inv_value: 657816562438490300709222678780005748310275260453263239529539775726079339688, }, FriLayerQuery { index: 8, y_value: 1527581375610259013472640819070111909856582743637749080241681873891116651023, - x_inv_value: 826108911032960435877720672246591828237630390247901639819313714416153942305 + x_inv_value: 826108911032960435877720672246591828237630390247901639819313714416153942305, }, FriLayerQuery { index: 9, y_value: 1314190719421472944202120326036610156945162999618119049307656001213352574130, - x_inv_value: 2792393877633170777819602110848478277385476825083695060153778341719718078176 - } + x_inv_value: 2792393877633170777819602110848478277385476825083695060153778341719718078176, + }, ]; let expected_verify_indices = array![2, 3, 8, 9]; let expected_verify_y_values = array![ @@ -903,11 +901,11 @@ fn test_next_layer13() { 2004541427256438610478116272570683095787443576788754802866420921854549452311, 2667758142751156730750479133927958256743897982548140807600266277386132227210, 724963531516986282530869066191617872380337840104897443636827319336363047197, - 3054802752625116251242176575121855863384552134692463894146326808649779880106 + 3054802752625116251242176575121855863384552134692463894146326808649779880106, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -922,23 +920,23 @@ fn test_next_layer14() { FriLayerQuery { index: 2, y_value: 182467674097091120329927235354242737842583201410388016740324890375633361201, - x_inv_value: 3491761957940661772609725505931396483010302121714589766865821416607388552712 + x_inv_value: 3491761957940661772609725505931396483010302121714589766865821416607388552712, }, FriLayerQuery { index: 25, y_value: 2616059464280392748910374974435988073072322805525536233200957037367537266460, - x_inv_value: 684891698656108367482980392386620006607736687746727332990606560885224142016 + x_inv_value: 684891698656108367482980392386620006607736687746727332990606560885224142016, }, FriLayerQuery { index: 27, y_value: 3135591753368679100635971158548683977259260369951862071333071709354788461451, - x_inv_value: 2829608587555461287847580972434362343728163236965816816408509779854673967295 + x_inv_value: 2829608587555461287847580972434362343728163236965816816408509779854673967295, }, FriLayerQuery { index: 31, y_value: 1881803943157720418027631826401286341924988674799418842326383947191741229239, - x_inv_value: 2061424207875745497330105211998005177924219095698929972788852026216611005243 - } + x_inv_value: 2061424207875745497330105211998005177924219095698929972788852026216611005243, + }, ]; let sibling_witness = array![ 2950872026957754570520920887716695721163885794330469237821164944724213529559, @@ -948,29 +946,29 @@ fn test_next_layer14() { 1087261690083259210579547894957300747894789483945777051521564331303669475417, 436336765556821905445300240111094908104143701663353530995130936976271217967, 2644311112046094225531959222370965947710384802579881971227807342025597482888, - 1909838974457498375031773317733557605709575892255791166978664386630300826462 + 1909838974457498375031773317733557605709575892255791166978664386630300826462, ]; let params = FriLayerComputationParams { coset_size: 4, fri_group: get_fri_group().span(), - eval_point: 2890900194451389976335809017939659452822058660721403378521723434210041554982 + eval_point: 2890900194451389976335809017939659452822058660721403378521723434210041554982, }; let expected_next_queries = array![ FriLayerQuery { index: 0, y_value: 513745185270294796896505867131039914974805394897382564034555988323441608939, - x_inv_value: 1753073989277535228300597420267756302718024776814145631761631058811620119022 + x_inv_value: 1753073989277535228300597420267756302718024776814145631761631058811620119022, }, FriLayerQuery { index: 6, y_value: 283244066499690934004140803318372542853976737301814474763000225147488436044, - x_inv_value: 1256084241920925162306077224918612704241015140814843222329579692894372909657 + x_inv_value: 1256084241920925162306077224918612704241015140814843222329579692894372909657, }, FriLayerQuery { index: 7, y_value: 1478347218723203537312908341948591806836150726532123973049689074479535567310, - x_inv_value: 2362418546745206051391245558176457401382092074516753477643512363241499110824 - } + x_inv_value: 2362418546745206051391245558176457401382092074516753477643512363241499110824, + }, ]; let expected_verify_indices = array![0, 6, 7]; let expected_verify_y_values = array![ @@ -985,11 +983,11 @@ fn test_next_layer14() { 436336765556821905445300240111094908104143701663353530995130936976271217967, 2644311112046094225531959222370965947710384802579881971227807342025597482888, 1909838974457498375031773317733557605709575892255791166978664386630300826462, - 1881803943157720418027631826401286341924988674799418842326383947191741229239 + 1881803943157720418027631826401286341924988674799418842326383947191741229239, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -1004,23 +1002,23 @@ fn test_next_layer15() { FriLayerQuery { index: 3, y_value: 2126554718777799703033176385657191458683095484702936419714937401273860792353, - x_inv_value: 1498130324693628615611301376349242190235092933171848743274310007433732048452 + x_inv_value: 1498130324693628615611301376349242190235092933171848743274310007433732048452, }, FriLayerQuery { index: 5, y_value: 2623153453096109592554970794864647942540496513967038379132519508620543736052, - x_inv_value: 2473811350240372293912485302342835893407435625813517542082770273218894953613 + x_inv_value: 2473811350240372293912485302342835893407435625813517542082770273218894953613, }, FriLayerQuery { index: 12, y_value: 476298806093907467850716043392398955442830603875308728637021317685049559197, - x_inv_value: 1481295585313502890247351662356421852619129386517592950611879579091145907681 + x_inv_value: 1481295585313502890247351662356421852619129386517592950611879579091145907681, }, FriLayerQuery { index: 18, y_value: 827426677652387725852612551358849344643252701184675574276305695934461070547, - x_inv_value: 3157568619914630228245585045460462037899356804058727670743639396696895096810 - } + x_inv_value: 3157568619914630228245585045460462037899356804058727670743639396696895096810, + }, ]; let sibling_witness = array![ 568564974606148495952068697014394313795111623433425386734413188543473055716, @@ -1042,29 +1040,29 @@ fn test_next_layer15() { 89033365488533857651117114777253473905400110863108967855831738586614375331, 839735918399761087418547466208562598085415116825419145221721101951385977007, 3138433960204460263441142084968507058529045412551667347395974042720099964096, - 3100876726267232844173520141766067628776170322055721109835889787928561738493 + 3100876726267232844173520141766067628776170322055721109835889787928561738493, ]; let params = FriLayerComputationParams { coset_size: 8, fri_group: get_fri_group().span(), - eval_point: 2667333039062326164983120557556866577383303469424551586689009383516583846698 + eval_point: 2667333039062326164983120557556866577383303469424551586689009383516583846698, }; let expected_next_queries = array![ FriLayerQuery { index: 0, y_value: 1298128010820835131249075641691464534391873438592600861436220192788480487820, - x_inv_value: 563971957663528375029493660386013764689221643789293540378813704450327788085 + x_inv_value: 563971957663528375029493660386013764689221643789293540378813704450327788085, }, FriLayerQuery { index: 1, y_value: 2490084159237398684739244273076602421488849852729557450096588072753038507064, - x_inv_value: 3054530831002602838667829122709056340933885571542303159594278351685544232396 + x_inv_value: 3054530831002602838667829122709056340933885571542303159594278351685544232396, }, FriLayerQuery { index: 2, y_value: 2291510120351370467822435604782665914711862794940021614151971912092308989788, - x_inv_value: 2933968264282979779366267770342785547048665384117568818848464375193300665318 - } + x_inv_value: 2933968264282979779366267770342785547048665384117568818848464375193300665318, + }, ]; let expected_verify_indices = array![0, 1, 2]; let expected_verify_y_values = array![ @@ -1091,11 +1089,11 @@ fn test_next_layer15() { 89033365488533857651117114777253473905400110863108967855831738586614375331, 839735918399761087418547466208562598085415116825419145221721101951385977007, 3138433960204460263441142084968507058529045412551667347395974042720099964096, - 3100876726267232844173520141766067628776170322055721109835889787928561738493 + 3100876726267232844173520141766067628776170322055721109835889787928561738493, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); @@ -1110,23 +1108,23 @@ fn test_next_layer16() { FriLayerQuery { index: 7, y_value: 2970618271957846642342346764466826063381003093310142263411672089332794267936, - x_inv_value: 696367657482296552349796637489145592059647766092429860960056113503758236140 + x_inv_value: 696367657482296552349796637489145592059647766092429860960056113503758236140, }, FriLayerQuery { index: 15, y_value: 3617920250969127201709777488707208906453088850534187183520682603094272928673, - x_inv_value: 2310133886796103194691263229141735996023430718973315327189200842370523874475 + x_inv_value: 2310133886796103194691263229141735996023430718973315327189200842370523874475, }, FriLayerQuery { index: 20, y_value: 2813510573038804010549182461227254081026726929362216457735799917295807557921, - x_inv_value: 3136912033480025440798126631316085964287892167044727093790915521436523583198 + x_inv_value: 3136912033480025440798126631316085964287892167044727093790915521436523583198, }, FriLayerQuery { index: 27, y_value: 2277310758645048528057712942822918302585095765258964079440830614234208634453, - x_inv_value: 1870747205314942372902696401365132965517762966704042444182117300433681492666 - } + x_inv_value: 1870747205314942372902696401365132965517762966704042444182117300433681492666, + }, ]; let sibling_witness = array![ 180909023427284908087068954735501773245381309706885307634112035720217679110, @@ -1156,24 +1154,24 @@ fn test_next_layer16() { 2587809142332512931520259907768113553396624721896300372775193299798500202556, 3589911342720590439499798061492779810823748230816082995862628665524054571607, 2213453230887497720575673069515446618971622145035522840843819369864164611166, - 2117829586952619081545500943334082335605420332616462445739700555609069867362 + 2117829586952619081545500943334082335605420332616462445739700555609069867362, ]; let params = FriLayerComputationParams { coset_size: 16, fri_group: get_fri_group().span(), - eval_point: 2131161197067646908062806238455827830521701314225315670510309581734422726318 + eval_point: 2131161197067646908062806238455827830521701314225315670510309581734422726318, }; let expected_next_queries = array![ FriLayerQuery { index: 0, y_value: 1673087752917740433456711006621617791163224131325431924340953404769449739057, - x_inv_value: 3563079260215329529465469507049655514938826357303290347407524859824127636176 + x_inv_value: 3563079260215329529465469507049655514938826357303290347407524859824127636176, }, FriLayerQuery { index: 1, y_value: 411308955591734803942114330163581819505644029281528997154872777951395903682, - x_inv_value: 55423528450801684231853276045414590684280858028306352565567196311744384305 - } + x_inv_value: 55423528450801684231853276045414590684280858028306352565567196311744384305, + }, ]; let expected_verify_indices = array![0, 1]; let expected_verify_y_values = array![ @@ -1208,11 +1206,11 @@ fn test_next_layer16() { 2587809142332512931520259907768113553396624721896300372775193299798500202556, 3589911342720590439499798061492779810823748230816082995862628665524054571607, 2213453230887497720575673069515446618971622145035522840843819369864164611166, - 2117829586952619081545500943334082335605420332616462445739700555609069867362 + 2117829586952619081545500943334082335605420332616462445739700555609069867362, ]; let (next_queries, verify_indices, verify_y_values) = compute_next_layer( - queries.span(), sibling_witness.span(), params + queries.span(), sibling_witness.span(), params, ); assert(verify_indices == expected_verify_indices, 'Invalid value'); diff --git a/src/lib.cairo b/src/lib.cairo index 058997c64..3c1cd240d 100644 --- a/src/lib.cairo +++ b/src/lib.cairo @@ -1,60 +1,36 @@ #[cfg(feature: '_verifier_logic')] mod air; + +#[cfg(feature: 'recursive')] +mod benches; #[cfg(feature: '_verifier_logic')] mod channel; #[cfg(feature: '_verifier_logic')] mod common; +mod contracts; #[cfg(feature: '_verifier_logic')] mod deserialization; #[cfg(feature: '_verifier_logic')] mod domains; #[cfg(feature: '_verifier_logic')] mod fri; +mod lib_utils; #[cfg(feature: '_verifier_logic')] mod oods; #[cfg(feature: '_verifier_logic')] mod proof_of_work; #[cfg(feature: '_verifier_logic')] mod queries; + +mod settings; #[cfg(feature: '_verifier_logic')] mod stark; #[cfg(feature: '_verifier_logic')] mod table_commitment; -#[cfg(feature: '_verifier_logic')] -mod vector_commitment; - -mod settings; -mod contracts; -mod lib_utils; - -#[cfg(feature: 'recursive')] -mod benches; #[cfg(feature: 'recursive')] mod tests; - -#[cfg(feature: '_verifier_logic')] -use integrity::{deserialization::stark::StarkProofWithSerde, stark::{StarkProof, StarkProofImpl},}; #[cfg(feature: '_verifier_logic')] -use starknet::contract_address::ContractAddressZero; - -// re-export -use integrity::{ - contracts::fact_registry_interface::{ - IFactRegistry, IFactRegistryDispatcher, IFactRegistryDispatcherTrait - }, - settings::{ - FactHash, VerificationHash, PresetHash, SecurityBits, JobId, MemoryVerification, - HasherBitLength, StoneVersion, VerifierSettings, VerifierPreset, VerifierConfiguration, - split_settings - }, - lib_utils::{ - get_verifier_config_hash, get_verification_hash, INTEGRITY_ADDRESS, IntegrityT, Integrity, - IntegrityTrait, IntegrityWithConfigT, IntegrityWithConfig, IntegrityWithConfigTrait, - calculate_fact_hash, SHARP_BOOTLOADER_PROGRAM_HASH, STONE_BOOTLOADER_PROGRAM_HASH, - calculate_bootloaded_fact_hash - }, -}; - +mod vector_commitment; #[cfg(feature: 'dex')] use integrity::air::layouts::dex::public_input::DexPublicInputImpl as PublicInputImpl; #[cfg(feature: 'recursive')] @@ -67,6 +43,30 @@ use integrity::air::layouts::small::public_input::SmallPublicInputImpl as Public use integrity::air::layouts::starknet::public_input::StarknetPublicInputImpl as PublicInputImpl; #[cfg(feature: 'starknet_with_keccak')] use integrity::air::layouts::starknet_with_keccak::public_input::StarknetWithKeccakPublicInputImpl as PublicInputImpl; +#[cfg(feature: '_verifier_logic')] +use integrity::deserialization::stark::StarkProofWithSerde; +#[cfg(feature: '_verifier_logic')] +use integrity::stark::{StarkProof, StarkProofImpl}; + +// re-export +use integrity::{ + contracts::fact_registry_interface::{ + IFactRegistry, IFactRegistryDispatcher, IFactRegistryDispatcherTrait, + }, + lib_utils::{ + INTEGRITY_ADDRESS, Integrity, IntegrityT, IntegrityTrait, IntegrityWithConfig, + IntegrityWithConfigT, IntegrityWithConfigTrait, SHARP_BOOTLOADER_PROGRAM_HASH, + STONE_BOOTLOADER_PROGRAM_HASH, calculate_bootloaded_fact_hash, calculate_fact_hash, + get_verification_hash, get_verifier_config_hash, + }, + settings::{ + FactHash, HasherBitLength, JobId, MemoryVerification, PresetHash, SecurityBits, + StoneVersion, VerificationHash, VerifierConfiguration, VerifierPreset, VerifierSettings, + split_settings, + }, +}; +#[cfg(feature: '_verifier_logic')] +use starknet::contract_address::ContractAddressZero; #[cfg(feature: '_verifier_logic')] @@ -89,7 +89,7 @@ fn main(mut serialized: Span, settings: @VerifierSettings) -> (felt252, _ => { assert(false, 'invalid memory_verification'); (0, 0) - } + }, }; (program_hash, output_hash) diff --git a/src/lib_utils.cairo b/src/lib_utils.cairo index a8e9f12d1..92b3b2445 100644 --- a/src/lib_utils.cairo +++ b/src/lib_utils.cairo @@ -1,8 +1,8 @@ -use integrity::{ - settings::{VerifierConfiguration, FactHash, SecurityBits, VerificationHash}, - contracts::fact_registry_interface::{IFactRegistryDispatcher, IFactRegistryDispatcherTrait} +use core::poseidon::{HashStateImpl, Poseidon, PoseidonImpl}; +use integrity::contracts::fact_registry_interface::{ + IFactRegistryDispatcher, IFactRegistryDispatcherTrait, }; -use core::poseidon::{Poseidon, PoseidonImpl, HashStateImpl}; +use integrity::settings::{FactHash, SecurityBits, VerificationHash, VerifierConfiguration}; use starknet::{ContractAddress, contract_address_const}; @@ -16,7 +16,7 @@ fn get_verifier_config_hash(verifier_config: VerifierConfiguration) -> felt252 { } fn get_verification_hash( - fact_hash: FactHash, verifier_config_hash: felt252, security_bits: u32 + fact_hash: FactHash, verifier_config_hash: felt252, security_bits: u32, ) -> VerificationHash { PoseidonImpl::new() .update(fact_hash) @@ -39,16 +39,16 @@ impl Integrity of IntegrityTrait { fn new() -> IntegrityT { IntegrityT { dispatcher: IFactRegistryDispatcher { - contract_address: contract_address_const::() - } + contract_address: contract_address_const::(), + }, } } fn new_proxy() -> IntegrityT { IntegrityT { dispatcher: IFactRegistryDispatcher { - contract_address: contract_address_const::() - } + contract_address: contract_address_const::(), + }, } } @@ -57,7 +57,7 @@ impl Integrity of IntegrityTrait { } fn is_fact_hash_valid_with_security( - self: IntegrityT, fact_hash: FactHash, security_bits: SecurityBits + self: IntegrityT, fact_hash: FactHash, security_bits: SecurityBits, ) -> bool { let mut verifications = self .dispatcher @@ -69,7 +69,7 @@ impl Integrity of IntegrityTrait { result = true; break; } - }; + } result } @@ -78,7 +78,7 @@ impl Integrity of IntegrityTrait { } fn with_config( - self: IntegrityT, verifier_config: VerifierConfiguration, security_bits: SecurityBits + self: IntegrityT, verifier_config: VerifierConfiguration, security_bits: SecurityBits, ) -> IntegrityWithConfigT { IntegrityWithConfigT { dispatcher: self.dispatcher, @@ -88,9 +88,9 @@ impl Integrity of IntegrityTrait { } fn with_hashed_config( - self: IntegrityT, verifier_config_hash: felt252, security_bits: SecurityBits + self: IntegrityT, verifier_config_hash: felt252, security_bits: SecurityBits, ) -> IntegrityWithConfigT { - IntegrityWithConfigT { dispatcher: self.dispatcher, verifier_config_hash, security_bits, } + IntegrityWithConfigT { dispatcher: self.dispatcher, verifier_config_hash, security_bits } } } @@ -105,7 +105,7 @@ struct IntegrityWithConfigT { impl IntegrityWithConfig of IntegrityWithConfigTrait { fn is_fact_hash_valid(self: IntegrityWithConfigT, fact_hash: FactHash) -> bool { let verification_hash = get_verification_hash( - fact_hash, self.verifier_config_hash, self.security_bits + fact_hash, self.verifier_config_hash, self.security_bits, ); self.dispatcher.get_verification(verification_hash).is_some() } @@ -115,7 +115,7 @@ fn calculate_fact_hash(program_hash: felt252, output: Span) -> felt252 let mut output_hash = PoseidonImpl::new(); for x in output { output_hash = output_hash.update(*x); - }; + } PoseidonImpl::new().update(program_hash).update(output_hash.finalize()).finalize() } @@ -125,7 +125,7 @@ const STONE_BOOTLOADER_PROGRAM_HASH: felt252 = 0x40519557c48b25e7e7d27cb27297300b94909028c327b385990f0b649920cc3; fn calculate_bootloaded_fact_hash( - bootloader_program_hash: felt252, child_program_hash: felt252, child_output: Span + bootloader_program_hash: felt252, child_program_hash: felt252, child_output: Span, ) -> felt252 { let mut bootloader_output = PoseidonImpl::new() .update(0x1) @@ -133,7 +133,7 @@ fn calculate_bootloaded_fact_hash( .update(child_program_hash); for x in child_output { bootloader_output = bootloader_output.update(*x); - }; + } PoseidonImpl::new() .update(bootloader_program_hash) .update(bootloader_output.finalize()) diff --git a/src/oods.cairo b/src/oods.cairo index 1f1b03ec0..ab3046f86 100644 --- a/src/oods.cairo +++ b/src/oods.cairo @@ -1,43 +1,77 @@ -use integrity::{ - common::array_extend::ArrayExtendTrait, table_commitment::table_commitment::TableDecommitment -}; -use starknet::ContractAddress; #[cfg(feature: 'dex')] -use integrity::air::layouts::dex::{ - AIRComposition, AIROods, DexAIRCompositionImpl, DexAIROodsImpl, - global_values::InteractionElements, public_input::PublicInput, traces::TracesDecommitment, - constants::CONSTRAINT_DEGREE, -}; +use integrity::air::layouts::dex::constants::CONSTRAINT_DEGREE; +#[cfg(feature: 'dex')] +use integrity::air::layouts::dex::global_values::InteractionElements; +#[cfg(feature: 'dex')] +use integrity::air::layouts::dex::public_input::PublicInput; +#[cfg(feature: 'dex')] +use integrity::air::layouts::dex::traces::TracesDecommitment; +#[cfg(feature: 'dex')] +use integrity::air::layouts::dex::{AIRComposition, AIROods, DexAIRCompositionImpl, DexAIROodsImpl}; +#[cfg(feature: 'recursive')] +use integrity::air::layouts::recursive::constants::CONSTRAINT_DEGREE; +#[cfg(feature: 'recursive')] +use integrity::air::layouts::recursive::global_values::InteractionElements; +#[cfg(feature: 'recursive')] +use integrity::air::layouts::recursive::public_input::PublicInput; +#[cfg(feature: 'recursive')] +use integrity::air::layouts::recursive::traces::TracesDecommitment; #[cfg(feature: 'recursive')] use integrity::air::layouts::recursive::{ AIRComposition, AIROods, RecursiveAIRCompositionImpl, RecursiveAIROodsImpl, - global_values::InteractionElements, public_input::PublicInput, traces::TracesDecommitment, - constants::CONSTRAINT_DEGREE, }; #[cfg(feature: 'recursive_with_poseidon')] +use integrity::air::layouts::recursive_with_poseidon::constants::CONSTRAINT_DEGREE; +#[cfg(feature: 'recursive_with_poseidon')] +use integrity::air::layouts::recursive_with_poseidon::global_values::InteractionElements; +#[cfg(feature: 'recursive_with_poseidon')] +use integrity::air::layouts::recursive_with_poseidon::public_input::PublicInput; +#[cfg(feature: 'recursive_with_poseidon')] +use integrity::air::layouts::recursive_with_poseidon::traces::TracesDecommitment; +#[cfg(feature: 'recursive_with_poseidon')] use integrity::air::layouts::recursive_with_poseidon::{ AIRComposition, AIROods, RecursiveWithPoseidonAIRCompositionImpl, - RecursiveWithPoseidonAIROodsImpl, global_values::InteractionElements, public_input::PublicInput, - traces::TracesDecommitment, constants::CONSTRAINT_DEGREE, + RecursiveWithPoseidonAIROodsImpl, }; #[cfg(feature: 'small')] +use integrity::air::layouts::small::constants::CONSTRAINT_DEGREE; +#[cfg(feature: 'small')] +use integrity::air::layouts::small::global_values::InteractionElements; +#[cfg(feature: 'small')] +use integrity::air::layouts::small::public_input::PublicInput; +#[cfg(feature: 'small')] +use integrity::air::layouts::small::traces::TracesDecommitment; +#[cfg(feature: 'small')] use integrity::air::layouts::small::{ AIRComposition, AIROods, SmallAIRCompositionImpl, SmallAIROodsImpl, - global_values::InteractionElements, public_input::PublicInput, traces::TracesDecommitment, - constants::CONSTRAINT_DEGREE, }; #[cfg(feature: 'starknet')] +use integrity::air::layouts::starknet::constants::CONSTRAINT_DEGREE; +#[cfg(feature: 'starknet')] +use integrity::air::layouts::starknet::global_values::InteractionElements; +#[cfg(feature: 'starknet')] +use integrity::air::layouts::starknet::public_input::PublicInput; +#[cfg(feature: 'starknet')] +use integrity::air::layouts::starknet::traces::TracesDecommitment; +#[cfg(feature: 'starknet')] use integrity::air::layouts::starknet::{ AIRComposition, AIROods, StarknetAIRCompositionImpl, StarknetAIROodsImpl, - global_values::InteractionElements, public_input::PublicInput, traces::TracesDecommitment, - constants::CONSTRAINT_DEGREE, }; #[cfg(feature: 'starknet_with_keccak')] +use integrity::air::layouts::starknet_with_keccak::constants::CONSTRAINT_DEGREE; +#[cfg(feature: 'starknet_with_keccak')] +use integrity::air::layouts::starknet_with_keccak::global_values::InteractionElements; +#[cfg(feature: 'starknet_with_keccak')] +use integrity::air::layouts::starknet_with_keccak::public_input::PublicInput; +#[cfg(feature: 'starknet_with_keccak')] +use integrity::air::layouts::starknet_with_keccak::traces::TracesDecommitment; +#[cfg(feature: 'starknet_with_keccak')] use integrity::air::layouts::starknet_with_keccak::{ AIRComposition, AIROods, StarknetWithKeccakAIRCompositionImpl, StarknetWithKeccakAIROodsImpl, - global_values::InteractionElements, public_input::PublicInput, traces::TracesDecommitment, - constants::CONSTRAINT_DEGREE, }; +use integrity::common::array_extend::ArrayExtendTrait; +use integrity::table_commitment::table_commitment::TableDecommitment; +use starknet::ContractAddress; #[derive(Drop)] struct OodsEvaluationInfo { @@ -86,14 +120,14 @@ fn eval_oods_boundary_poly_at_points( contract_address: ContractAddress, ) -> Array { assert( - decommitment.original.values.len() == points.len() * n_original_columns, 'Invalid value' + decommitment.original.values.len() == points.len() * n_original_columns, 'Invalid value', ); assert( decommitment.interaction.values.len() == points.len() * n_interaction_columns, - 'Invalid value' + 'Invalid value', ); assert( - composition_decommitment.values.len() == points.len() * CONSTRAINT_DEGREE, 'Invalid value' + composition_decommitment.values.len() == points.len() * CONSTRAINT_DEGREE, 'Invalid value', ); let mut evaluations = ArrayTrait::::new(); @@ -113,11 +147,11 @@ fn eval_oods_boundary_poly_at_points( decommitment .interaction .values - .slice(i * n_interaction_columns, n_interaction_columns) + .slice(i * n_interaction_columns, n_interaction_columns), ); column_values .extend( - composition_decommitment.values.slice(i * CONSTRAINT_DEGREE, CONSTRAINT_DEGREE) + composition_decommitment.values.slice(i * CONSTRAINT_DEGREE, CONSTRAINT_DEGREE), ); evaluations @@ -130,11 +164,11 @@ fn eval_oods_boundary_poly_at_points( eval_info.oods_point, eval_info.trace_generator, contract_address, - ) + ), ); i += 1; - }; + } evaluations } @@ -161,7 +195,7 @@ mod tests { 0x47148421d376a8ca07af1e4c89890bf29c90272f63b16103646397d907281a8, 0x40000, 0x4768803ef85256034f67453635f87997ff61841e411ee63ce7b0a8b9745a046, - 0.try_into().unwrap() + 0.try_into().unwrap(), ); } } diff --git a/src/proof_of_work/proof_of_work.cairo b/src/proof_of_work/proof_of_work.cairo index 6715199ea..41af3e2f9 100644 --- a/src/proof_of_work/proof_of_work.cairo +++ b/src/proof_of_work/proof_of_work.cairo @@ -1,10 +1,9 @@ -use integrity::{ - common::{ - flip_endianness::FlipEndiannessTrait, hasher::hash_n_bytes, array_append::ArrayAppendTrait, - math::pow, - }, - channel::channel::{Channel, ChannelTrait}, proof_of_work::config::ProofOfWorkConfig -}; +use integrity::channel::channel::{Channel, ChannelTrait}; +use integrity::common::array_append::ArrayAppendTrait; +use integrity::common::flip_endianness::FlipEndiannessTrait; +use integrity::common::hasher::hash_n_bytes; +use integrity::common::math::pow; +use integrity::proof_of_work::config::ProofOfWorkConfig; const MAGIC: u64 = 0x0123456789abcded; @@ -14,7 +13,7 @@ struct ProofOfWorkUnsentCommitment { } fn proof_of_work_commit( - ref channel: Channel, unsent_commitment: ProofOfWorkUnsentCommitment, config: ProofOfWorkConfig + ref channel: Channel, unsent_commitment: ProofOfWorkUnsentCommitment, config: ProofOfWorkConfig, ) { verify_proof_of_work(channel.digest.into(), config.n_bits, unsent_commitment.nonce); channel.read_uint64_from_prover(unsent_commitment.nonce); @@ -43,6 +42,6 @@ fn verify_proof_of_work(digest: u256, n_bits: u8, nonce: u64) { let work_limit = pow(2, 128 - n_bits.into()); assert( Into::::into(hash.high) < Into::::into(work_limit), - 'proof of work failed' + 'proof of work failed', ) } diff --git a/src/proof_of_work/tests/test_proof_of_work.cairo b/src/proof_of_work/tests/test_proof_of_work.cairo index 6c0d8e34b..3680bf523 100644 --- a/src/proof_of_work/tests/test_proof_of_work.cairo +++ b/src/proof_of_work/tests/test_proof_of_work.cairo @@ -12,7 +12,7 @@ fn test_verify_proof_of_work_0() { #[cfg(feature: 'blake2s')] #[test] -#[should_panic] +#[should_panic(expected: 'proof of work failed')] #[available_gas(9999999999)] fn test_verify_proof_of_work_1() { let digest: u256 = 0x1c5a5f4381df1f5cd7ca1d48a19d8ff802a71d94169de38382621fdc5514a10a; @@ -26,7 +26,7 @@ fn test_verify_proof_of_work_1() { #[available_gas(9999999999)] fn test_verify_proof_of_work_0() { let digest: u256 = u256 { - low: 0x6308b38ae2841c18fb8c06c9acc9bcd5, high: 0x5d35fab3c11198da5f6fe41666993b16 + low: 0x6308b38ae2841c18fb8c06c9acc9bcd5, high: 0x5d35fab3c11198da5f6fe41666993b16, }; let nonce: u64 = 0xd65397f; let n_bits: u8 = 0x1e; @@ -35,11 +35,11 @@ fn test_verify_proof_of_work_0() { #[cfg(feature: 'keccak')] #[test] -#[should_panic] +#[should_panic(expected: 'proof of work failed')] #[available_gas(9999999999)] fn test_verify_proof_of_work_1() { let digest: u256 = u256 { - low: 0x6308b38ae2841c18fb8c06c9acc9bcd5, high: 0x5d35fab3c11198da5f6fe41666993b16 + low: 0x6308b38ae2841c18fb8c06c9acc9bcd5, high: 0x5d35fab3c11198da5f6fe41666993b16, }; let nonce: u64 = 0xd65397f + 1; let n_bits: u8 = 0x1e; diff --git a/src/queries/queries.cairo b/src/queries/queries.cairo index 760845d9e..ee5d84caf 100644 --- a/src/queries/queries.cairo +++ b/src/queries/queries.cairo @@ -1,23 +1,22 @@ -use integrity::{ - channel::channel::{Channel, ChannelTrait}, - common::{ - merge_sort::merge_sort, math::pow, consts::FIELD_GENERATOR, bit_reverse::BitReverseTrait - }, - domains::StarkDomains -}; +use integrity::channel::channel::{Channel, ChannelTrait}; +use integrity::common::bit_reverse::BitReverseTrait; +use integrity::common::consts::FIELD_GENERATOR; +use integrity::common::math::pow; +use integrity::common::merge_sort::merge_sort; +use integrity::domains::StarkDomains; // 2^64 = 18446744073709551616 const U128maxU64: u128 = 18446744073709551616; fn generate_queries( - ref channel: Channel, n_samples: u32, query_upper_bound: u64 + ref channel: Channel, n_samples: u32, query_upper_bound: u64, ) -> Array { let samples = sample_random_queries(ref channel, n_samples, query_upper_bound); usort(samples.span().slice(0, n_samples)) } fn sample_random_queries( - ref channel: Channel, mut n_samples: u32, query_upper_bound: u64 + ref channel: Channel, mut n_samples: u32, query_upper_bound: u64, ) -> Array { let mut result = ArrayTrait::::new(); @@ -35,7 +34,7 @@ fn sample_random_queries( result.append(sample.try_into().unwrap()); n_samples -= 1; - }; + } result } @@ -67,7 +66,7 @@ fn usort(input: Span) -> Array { } i += 1; - }; + } result } @@ -94,10 +93,10 @@ fn queries_to_points(queries: Span, stark_domains: @StarkDomains) -> Ar // FIELD_GENERATOR * eval_generator ^ reversed_index. points .append( - FIELD_GENERATOR * pow(*stark_domains.eval_generator, index.bit_reverse().into()) + FIELD_GENERATOR * pow(*stark_domains.eval_generator, index.bit_reverse().into()), ); i += 1; - }; + } points } diff --git a/src/queries/tests/test_generate_queries.cairo b/src/queries/tests/test_generate_queries.cairo index ef266de47..5cb447720 100644 --- a/src/queries/tests/test_generate_queries.cairo +++ b/src/queries/tests/test_generate_queries.cairo @@ -1,24 +1,23 @@ -use integrity::{ - queries::queries::generate_queries, channel::channel::ChannelTrait, - tests::{stone_proof_fibonacci, stone_proof_fibonacci_keccak} -}; +use integrity::channel::channel::ChannelTrait; +use integrity::queries::queries::generate_queries; +use integrity::tests::{stone_proof_fibonacci, stone_proof_fibonacci_keccak}; #[test] #[available_gas(9999999999)] fn test_generate_queries_0() { let mut channel = ChannelTrait::new_with_counter( - 0x28f12249c8cba51796d59e7573019ce2b4608c9a8cdeee26e821b0763c69229, 0x0 + 0x28f12249c8cba51796d59e7573019ce2b4608c9a8cdeee26e821b0763c69229, 0x0, ); assert( generate_queries( - ref channel, 0xa, 0x100000 + ref channel, 0xa, 0x100000, ) == stone_proof_fibonacci_keccak::queries::get(), - 'Invalid value' + 'Invalid value', ); assert( channel.digest == 0x28f12249c8cba51796d59e7573019ce2b4608c9a8cdeee26e821b0763c69229, - 'Invalid value' + 'Invalid value', ); assert(channel.counter == 0xa, 'Invalid value'); } diff --git a/src/queries/tests/test_queries_to_points.cairo b/src/queries/tests/test_queries_to_points.cairo index e20c46b5d..6a174058e 100644 --- a/src/queries/tests/test_queries_to_points.cairo +++ b/src/queries/tests/test_queries_to_points.cairo @@ -1,4 +1,5 @@ -use integrity::{queries::queries::queries_to_points, domains::StarkDomains}; +use integrity::domains::StarkDomains; +use integrity::queries::queries::queries_to_points; #[test] #[available_gas(9999999999)] @@ -36,7 +37,7 @@ fn test_queries_to_points_0() { assert( queries_to_points( - queries, @stark_domains + queries, @stark_domains, ) == array![ 0x2db7913d585ab151bc2b66c288d0bc9b8c791083d1e4a347f418d499696385a, 0x13de0c034702b2f857d20f1c4392d7308adf523675a6917ef9b24ffe481b3f3, @@ -57,6 +58,6 @@ fn test_queries_to_points_0() { 0x4ee93f199c1a2b9ed46dd9d0c1f51fd453a37698dd8074fe1eb197d4b42541b, 0x27b6342139b5ab8f1ff29fea7f5602d3a438163f5547d2d341a5418ea90abe4, ], - 'Invalid value' + 'Invalid value', ); } diff --git a/src/queries/tests/test_usort.cairo b/src/queries/tests/test_usort.cairo index 96205d508..20effe882 100644 --- a/src/queries/tests/test_usort.cairo +++ b/src/queries/tests/test_usort.cairo @@ -20,7 +20,7 @@ fn test_usort_2() { let unsorted: Array = array![742, 360, 952, 891, 634, 707, 582, 264, 806, 720]; assert( usort(unsorted.span()) == array![264, 360, 582, 634, 707, 720, 742, 806, 891, 952], - 'Invalid sorting' + 'Invalid sorting', ); } diff --git a/src/settings.cairo b/src/settings.cairo index 1b6f8baaf..a328aa6f0 100644 --- a/src/settings.cairo +++ b/src/settings.cairo @@ -45,7 +45,7 @@ struct VerifierConfiguration { layout: felt252, // string encoded as hex hasher: felt252, // function and number of bits stone_version: felt252, // stone5 or stone6 - memory_verification: felt252, // strict, relaxed or cairo1 + memory_verification: felt252 // strict, relaxed or cairo1 } fn split_settings(verifier_config: VerifierConfiguration) -> (VerifierSettings, VerifierPreset) { @@ -80,6 +80,6 @@ fn split_settings(verifier_config: VerifierConfiguration) -> (VerifierSettings, ( VerifierSettings { memory_verification, hasher_bit_length, stone_version }, - VerifierPreset { layout, hasher } + VerifierPreset { layout, hasher }, ) } diff --git a/src/stark.cairo b/src/stark.cairo index 1cb7300bc..6caac781d 100644 --- a/src/stark.cairo +++ b/src/stark.cairo @@ -3,64 +3,81 @@ mod stark_verify; #[cfg(test)] mod tests; - -use integrity::{ - air::{public_input::{PublicInput, get_public_input_hash},}, - channel::channel::{Channel, ChannelImpl}, - fri::{ - fri_config::{FriConfig, FriConfigTrait}, - fri::{ - FriUnsentCommitment, FriWitness, FriCommitment, FriVerificationStateConstant, - FriVerificationStateVariable, FriLayerWitness, fri_verify_step, fri_verify_final - } - }, - queries::queries, domains::StarkDomainsImpl, - table_commitment::table_commitment::{ - TableCommitmentConfig, TableCommitmentWitness, TableDecommitment, TableCommitment - }, - proof_of_work::{ - config::{ProofOfWorkConfig, ProofOfWorkConfigTrait}, - proof_of_work::ProofOfWorkUnsentCommitment - }, - vector_commitment::vector_commitment::VectorCommitmentConfigTrait, settings::VerifierSettings, -}; -use starknet::ContractAddress; #[cfg(feature: 'dex')] -use integrity::air::layouts::dex::{ - traces::{TracesConfig, TracesConfigTrait}, public_input::DexPublicInputImpl, - traces::{TracesUnsentCommitment, TracesCommitment, TracesDecommitment, TracesWitness}, - constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND} +use integrity::air::layouts::dex::constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}; +#[cfg(feature: 'dex')] +use integrity::air::layouts::dex::public_input::DexPublicInputImpl; +#[cfg(feature: 'dex')] +use integrity::air::layouts::dex::traces::{ + TracesCommitment, TracesConfig, TracesConfigTrait, TracesDecommitment, TracesUnsentCommitment, + TracesWitness, }; #[cfg(feature: 'recursive')] -use integrity::air::layouts::recursive::{ - traces::{TracesConfig, TracesConfigTrait}, public_input::RecursivePublicInputImpl, - traces::{TracesUnsentCommitment, TracesCommitment, TracesDecommitment, TracesWitness}, - constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}, +use integrity::air::layouts::recursive::constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}; +#[cfg(feature: 'recursive')] +use integrity::air::layouts::recursive::public_input::RecursivePublicInputImpl; +#[cfg(feature: 'recursive')] +use integrity::air::layouts::recursive::traces::{ + TracesCommitment, TracesConfig, TracesConfigTrait, TracesDecommitment, TracesUnsentCommitment, + TracesWitness, }; #[cfg(feature: 'recursive_with_poseidon')] -use integrity::air::layouts::recursive_with_poseidon::{ - traces::{TracesConfig, TracesConfigTrait}, public_input::RecursiveWithPoseidonPublicInputImpl, - traces::{TracesUnsentCommitment, TracesCommitment, TracesDecommitment, TracesWitness}, - constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND} +use integrity::air::layouts::recursive_with_poseidon::constants::{ + NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND, +}; +#[cfg(feature: 'recursive_with_poseidon')] +use integrity::air::layouts::recursive_with_poseidon::public_input::RecursiveWithPoseidonPublicInputImpl; +#[cfg(feature: 'recursive_with_poseidon')] +use integrity::air::layouts::recursive_with_poseidon::traces::{ + TracesCommitment, TracesConfig, TracesConfigTrait, TracesDecommitment, TracesUnsentCommitment, + TracesWitness, }; #[cfg(feature: 'small')] -use integrity::air::layouts::small::{ - traces::{TracesConfig, TracesConfigTrait}, public_input::SmallPublicInputImpl, - traces::{TracesUnsentCommitment, TracesCommitment, TracesDecommitment, TracesWitness}, - constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND} +use integrity::air::layouts::small::constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}; +#[cfg(feature: 'small')] +use integrity::air::layouts::small::public_input::SmallPublicInputImpl; +#[cfg(feature: 'small')] +use integrity::air::layouts::small::traces::{ + TracesCommitment, TracesConfig, TracesConfigTrait, TracesDecommitment, TracesUnsentCommitment, + TracesWitness, }; #[cfg(feature: 'starknet')] -use integrity::air::layouts::starknet::{ - traces::{TracesConfig, TracesConfigTrait}, public_input::StarknetPublicInputImpl, - traces::{TracesUnsentCommitment, TracesCommitment, TracesDecommitment, TracesWitness}, - constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND} +use integrity::air::layouts::starknet::constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}; +#[cfg(feature: 'starknet')] +use integrity::air::layouts::starknet::public_input::StarknetPublicInputImpl; +#[cfg(feature: 'starknet')] +use integrity::air::layouts::starknet::traces::{ + TracesCommitment, TracesConfig, TracesConfigTrait, TracesDecommitment, TracesUnsentCommitment, + TracesWitness, }; #[cfg(feature: 'starknet_with_keccak')] -use integrity::air::layouts::starknet_with_keccak::{ - traces::{TracesConfig, TracesConfigTrait}, public_input::StarknetWithKeccakPublicInputImpl, - traces::{TracesUnsentCommitment, TracesCommitment, TracesDecommitment, TracesWitness}, - constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND} +use integrity::air::layouts::starknet_with_keccak::constants::{ + NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND, }; +#[cfg(feature: 'starknet_with_keccak')] +use integrity::air::layouts::starknet_with_keccak::public_input::StarknetWithKeccakPublicInputImpl; +#[cfg(feature: 'starknet_with_keccak')] +use integrity::air::layouts::starknet_with_keccak::traces::{ + TracesCommitment, TracesConfig, TracesConfigTrait, TracesDecommitment, TracesUnsentCommitment, + TracesWitness, +}; +use integrity::air::public_input::{PublicInput, get_public_input_hash}; +use integrity::channel::channel::{Channel, ChannelImpl}; +use integrity::domains::StarkDomainsImpl; +use integrity::fri::fri::{ + FriCommitment, FriLayerWitness, FriUnsentCommitment, FriVerificationStateConstant, + FriVerificationStateVariable, FriWitness, fri_verify_final, fri_verify_step, +}; +use integrity::fri::fri_config::{FriConfig, FriConfigTrait}; +use integrity::proof_of_work::config::{ProofOfWorkConfig, ProofOfWorkConfigTrait}; +use integrity::proof_of_work::proof_of_work::ProofOfWorkUnsentCommitment; +use integrity::queries::queries; +use integrity::settings::VerifierSettings; +use integrity::table_commitment::table_commitment::{ + TableCommitment, TableCommitmentConfig, TableCommitmentWitness, TableDecommitment, +}; +use integrity::vector_commitment::vector_commitment::VectorCommitmentConfigTrait; +use starknet::ContractAddress; #[derive(Drop, Serde)] struct StarkProof { @@ -83,13 +100,13 @@ impl StarkProofImpl of StarkProofTrait { // Validate the public input. let stark_domains = StarkDomainsImpl::new( - *self.config.log_trace_domain_size, *self.config.log_n_cosets + *self.config.log_trace_domain_size, *self.config.log_n_cosets, ); self.public_input.validate(@stark_domains); // Compute the initial hash seed for the Fiat-Shamir channel. let digest = get_public_input_hash( - self.public_input, *self.config.n_verifier_friendly_commitment_layers, settings + self.public_input, *self.config.n_verifier_friendly_commitment_layers, settings, ); // Construct the channel. @@ -102,7 +119,7 @@ impl StarkProofImpl of StarkProofTrait { self.unsent_commitment, self.config, @stark_domains, - composition_contract_address + composition_contract_address, ); let last_layer_coefficients = stark_commitment.fri.last_layer_coefficients; @@ -111,7 +128,7 @@ impl StarkProofImpl of StarkProofTrait { let queries = queries::generate_queries( ref channel, (*self.config.n_queries).try_into().unwrap(), - stark_domains.eval_domain_size.try_into().unwrap() + stark_domains.eval_domain_size.try_into().unwrap(), ); // STARK verify phase. @@ -162,13 +179,13 @@ impl StarkProofImpl of StarkProofTrait { } let (new_con, new_var) = Self::verify_step( - con, var, *(*self.witness.fri_witness.layers).at(i), settings + con, var, *(*self.witness.fri_witness.layers).at(i), settings, ); var = new_var; con = new_con; i += 1; - }; + } let (_, new_var) = Self::verify_final(con, var, last_layer_coefficients); assert(new_var.iter.into() == n + 1, 'Verification not finalized'); diff --git a/src/stark/stark_commit.cairo b/src/stark/stark_commit.cairo index f773fd865..3ee1c48ea 100644 --- a/src/stark/stark_commit.cairo +++ b/src/stark/stark_commit.cairo @@ -1,41 +1,52 @@ -use integrity::{ - channel::channel::{Channel, ChannelTrait}, common::powers_array::powers_array, - domains::StarkDomains, fri::fri::fri_commit, - stark::{StarkUnsentCommitment, StarkConfig, StarkCommitment}, - proof_of_work::proof_of_work::proof_of_work_commit, - table_commitment::table_commitment::table_commit, oods::verify_oods, -}; -use starknet::ContractAddress; #[cfg(feature: 'dex')] -use integrity::air::layouts::dex::{ - constants::{CONSTRAINT_DEGREE, N_CONSTRAINTS, MASK_SIZE}, public_input::PublicInput, - traces::traces_commit, -}; +use integrity::air::layouts::dex::constants::{CONSTRAINT_DEGREE, MASK_SIZE, N_CONSTRAINTS}; +#[cfg(feature: 'dex')] +use integrity::air::layouts::dex::public_input::PublicInput; +#[cfg(feature: 'dex')] +use integrity::air::layouts::dex::traces::traces_commit; #[cfg(feature: 'recursive')] -use integrity::air::layouts::recursive::{ - constants::{CONSTRAINT_DEGREE, N_CONSTRAINTS, MASK_SIZE}, public_input::PublicInput, - traces::traces_commit, -}; +use integrity::air::layouts::recursive::constants::{CONSTRAINT_DEGREE, MASK_SIZE, N_CONSTRAINTS}; +#[cfg(feature: 'recursive')] +use integrity::air::layouts::recursive::public_input::PublicInput; +#[cfg(feature: 'recursive')] +use integrity::air::layouts::recursive::traces::traces_commit; #[cfg(feature: 'recursive_with_poseidon')] -use integrity::air::layouts::recursive_with_poseidon::{ - constants::{CONSTRAINT_DEGREE, N_CONSTRAINTS, MASK_SIZE}, public_input::PublicInput, - traces::traces_commit, +use integrity::air::layouts::recursive_with_poseidon::constants::{ + CONSTRAINT_DEGREE, MASK_SIZE, N_CONSTRAINTS, }; +#[cfg(feature: 'recursive_with_poseidon')] +use integrity::air::layouts::recursive_with_poseidon::public_input::PublicInput; +#[cfg(feature: 'recursive_with_poseidon')] +use integrity::air::layouts::recursive_with_poseidon::traces::traces_commit; #[cfg(feature: 'small')] -use integrity::air::layouts::small::{ - constants::{CONSTRAINT_DEGREE, N_CONSTRAINTS, MASK_SIZE}, public_input::PublicInput, - traces::traces_commit, -}; +use integrity::air::layouts::small::constants::{CONSTRAINT_DEGREE, MASK_SIZE, N_CONSTRAINTS}; +#[cfg(feature: 'small')] +use integrity::air::layouts::small::public_input::PublicInput; +#[cfg(feature: 'small')] +use integrity::air::layouts::small::traces::traces_commit; #[cfg(feature: 'starknet')] -use integrity::air::layouts::starknet::{ - constants::{CONSTRAINT_DEGREE, N_CONSTRAINTS, MASK_SIZE}, public_input::PublicInput, - traces::traces_commit, -}; +use integrity::air::layouts::starknet::constants::{CONSTRAINT_DEGREE, MASK_SIZE, N_CONSTRAINTS}; +#[cfg(feature: 'starknet')] +use integrity::air::layouts::starknet::public_input::PublicInput; +#[cfg(feature: 'starknet')] +use integrity::air::layouts::starknet::traces::traces_commit; #[cfg(feature: 'starknet_with_keccak')] -use integrity::air::layouts::starknet_with_keccak::{ - constants::{CONSTRAINT_DEGREE, N_CONSTRAINTS, MASK_SIZE}, public_input::PublicInput, - traces::traces_commit, +use integrity::air::layouts::starknet_with_keccak::constants::{ + CONSTRAINT_DEGREE, MASK_SIZE, N_CONSTRAINTS, }; +#[cfg(feature: 'starknet_with_keccak')] +use integrity::air::layouts::starknet_with_keccak::public_input::PublicInput; +#[cfg(feature: 'starknet_with_keccak')] +use integrity::air::layouts::starknet_with_keccak::traces::traces_commit; +use integrity::channel::channel::{Channel, ChannelTrait}; +use integrity::common::powers_array::powers_array; +use integrity::domains::StarkDomains; +use integrity::fri::fri::fri_commit; +use integrity::oods::verify_oods; +use integrity::proof_of_work::proof_of_work::proof_of_work_commit; +use integrity::stark::{StarkCommitment, StarkConfig, StarkUnsentCommitment}; +use integrity::table_commitment::table_commitment::table_commit; +use starknet::ContractAddress; // STARK commitment phase. fn stark_commit( @@ -47,7 +58,7 @@ fn stark_commit( contract_address: ContractAddress, ) -> StarkCommitment { // Read the commitment of the 'traces' component. - let traces_commitment = traces_commit(ref channel, *unsent_commitment.traces, *config.traces,); + let traces_commitment = traces_commit(ref channel, *unsent_commitment.traces, *config.traces); // Generate interaction values after traces commitment. let composition_alpha = channel.random_felt_to_prover(); diff --git a/src/stark/stark_verify.cairo b/src/stark/stark_verify.cairo index 40543ffa4..83c891223 100644 --- a/src/stark/stark_verify.cairo +++ b/src/stark/stark_verify.cairo @@ -1,14 +1,3 @@ -use integrity::{ - queries::queries::queries_to_points, domains::StarkDomains, - fri::fri::{ - FriDecommitment, fri_verify_initial, FriVerificationStateConstant, - FriVerificationStateVariable - }, - stark::{StarkUnsentCommitment, StarkWitness, StarkCommitment}, - table_commitment::table_commitment::table_decommit, - oods::{OodsEvaluationInfo, eval_oods_boundary_poly_at_points}, settings::VerifierSettings, -}; -use starknet::ContractAddress; #[cfg(feature: 'dex')] use integrity::air::layouts::dex::traces::traces_decommit; #[cfg(feature: 'recursive')] @@ -21,6 +10,16 @@ use integrity::air::layouts::small::traces::traces_decommit; use integrity::air::layouts::starknet::traces::traces_decommit; #[cfg(feature: 'starknet_with_keccak')] use integrity::air::layouts::starknet_with_keccak::traces::traces_decommit; +use integrity::domains::StarkDomains; +use integrity::fri::fri::{ + FriDecommitment, FriVerificationStateConstant, FriVerificationStateVariable, fri_verify_initial, +}; +use integrity::oods::{OodsEvaluationInfo, eval_oods_boundary_poly_at_points}; +use integrity::queries::queries::queries_to_points; +use integrity::settings::VerifierSettings; +use integrity::stark::{StarkCommitment, StarkUnsentCommitment, StarkWitness}; +use integrity::table_commitment::table_commitment::table_decommit; +use starknet::ContractAddress; // STARK verify phase. // NOTICE: when using splitted verifier, witness.fri_witness may be ommited (empty array) @@ -71,7 +70,5 @@ fn stark_verify( let fri_decommitment = FriDecommitment { values: oods_poly_evals.span(), points: points.span(), }; - fri_verify_initial( - queries: queries, commitment: commitment.fri, decommitment: fri_decommitment, - ) + fri_verify_initial(queries: queries, commitment: commitment.fri, decommitment: fri_decommitment) } diff --git a/src/stark/tests/test_stark_commit.cairo b/src/stark/tests/test_stark_commit.cairo index 07695b1a9..9729e19d0 100644 --- a/src/stark/tests/test_stark_commit.cairo +++ b/src/stark/tests/test_stark_commit.cairo @@ -1,15 +1,14 @@ +use integrity::channel::channel::ChannelTrait; +use integrity::stark::stark_commit::stark_commit; +use integrity::tests::{stone_proof_fibonacci, stone_proof_fibonacci_keccak}; use starknet::contract_address::ContractAddressZero; -use integrity::{ - stark::stark_commit::stark_commit, channel::channel::ChannelTrait, - tests::{stone_proof_fibonacci, stone_proof_fibonacci_keccak} -}; #[cfg(feature: 'blake2s')] #[test] #[available_gas(9999999999)] fn test_stark_commit() { let mut channel = ChannelTrait::new_with_counter( - 0xaf91f2c71f4a594b1575d258ce82464475c82d8fb244142d0db450491c1b52, 0x0 + 0xaf91f2c71f4a594b1575d258ce82464475c82d8fb244142d0db450491c1b52, 0x0, ); let public_input = stone_proof_fibonacci::public_input::get(); @@ -26,12 +25,12 @@ fn test_stark_commit() { @stark_domains, ContractAddressZero::zero(), ) == stone_proof_fibonacci::stark::commitment::get(), - 'Invalid value' + 'Invalid value', ); assert( channel.digest == 0x9c769c7e0797cf043b06b980072a798b141f2bc41b14e85ad93ba178b13de7, - 'Invalid value' + 'Invalid value', ); assert(channel.counter == 0x0, 'Invalid value'); } @@ -41,7 +40,7 @@ fn test_stark_commit() { #[available_gas(9999999999)] fn test_stark_commit() { let mut channel = ChannelTrait::new_with_counter( - 0xaf91f2c71f4a594b1575d258ce82464475c82d8fb244142d0db450491c1b52, 0x0 + 0xaf91f2c71f4a594b1575d258ce82464475c82d8fb244142d0db450491c1b52, 0x0, ); let public_input = stone_proof_fibonacci_keccak::public_input::get(); @@ -58,12 +57,12 @@ fn test_stark_commit() { @stark_domains, ContractAddressZero::zero(), ) == stone_proof_fibonacci_keccak::stark::commitment::get(), - 'Invalid value' + 'Invalid value', ); assert( channel.digest == 0x28f12249c8cba51796d59e7573019ce2b4608c9a8cdeee26e821b0763c69229, - 'Invalid value' + 'Invalid value', ); assert(channel.counter == 0x0, 'Invalid value'); } diff --git a/src/stark/tests/test_stark_proof_verify.cairo b/src/stark/tests/test_stark_proof_verify.cairo index 325a0051b..960f8d840 100644 --- a/src/stark/tests/test_stark_proof_verify.cairo +++ b/src/stark/tests/test_stark_proof_verify.cairo @@ -1,9 +1,7 @@ +use integrity::settings::{HasherBitLength, StoneVersion, VerifierSettings}; +use integrity::stark::{StarkProof, StarkProofTrait}; +use integrity::tests::{stone_proof_fibonacci, stone_proof_fibonacci_keccak}; use starknet::contract_address::ContractAddressZero; -use integrity::{ - stark::{StarkProof, StarkProofTrait}, - tests::{stone_proof_fibonacci, stone_proof_fibonacci_keccak}, - settings::{VerifierSettings, HasherBitLength, StoneVersion}, -}; #[cfg(feature: 'blake2s')] #[test] diff --git a/src/stark/tests/test_stark_verify.cairo b/src/stark/tests/test_stark_verify.cairo index c47545a16..de04b76f1 100644 --- a/src/stark/tests/test_stark_verify.cairo +++ b/src/stark/tests/test_stark_verify.cairo @@ -1,9 +1,7 @@ -use integrity::{ - stark::stark_verify::stark_verify, - air::layouts::recursive::constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}, - tests::{stone_proof_fibonacci, stone_proof_fibonacci_keccak}, - settings::{VerifierSettings, HasherBitLength, StoneVersion}, -}; +use integrity::air::layouts::recursive::constants::{NUM_COLUMNS_FIRST, NUM_COLUMNS_SECOND}; +use integrity::settings::{HasherBitLength, StoneVersion, VerifierSettings}; +use integrity::stark::stark_verify::stark_verify; +use integrity::tests::{stone_proof_fibonacci, stone_proof_fibonacci_keccak}; #[cfg(feature: 'blake2s')] #[test] @@ -27,7 +25,7 @@ fn test_stark_verify() { witness, stark_domains, 0.try_into().unwrap(), - settings + settings, ); } @@ -53,7 +51,7 @@ fn test_stark_verify() { witness, stark_domains, 0.try_into().unwrap(), - @settings + @settings, ); // TODO: next steps } diff --git a/src/table_commitment/table_commitment.cairo b/src/table_commitment/table_commitment.cairo index cf7d2c783..d4efa23e1 100644 --- a/src/table_commitment/table_commitment.cairo +++ b/src/table_commitment/table_commitment.cairo @@ -1,13 +1,13 @@ -use integrity::{ - common::{ - flip_endianness::FlipEndiannessTrait, array_append::ArrayAppendTrait, - math::Felt252PartialOrd, consts::MONTGOMERY_R, hasher::hash_truncated, - }, - vector_commitment::vector_commitment::{ - VectorCommitmentConfig, VectorCommitment, VectorCommitmentWitness, vector_commit, - VectorQuery, vector_commitment_decommit - }, - channel::channel::Channel, settings::VerifierSettings, +use integrity::channel::channel::Channel; +use integrity::common::array_append::ArrayAppendTrait; +use integrity::common::consts::MONTGOMERY_R; +use integrity::common::flip_endianness::FlipEndiannessTrait; +use integrity::common::hasher::hash_truncated; +use integrity::common::math::Felt252PartialOrd; +use integrity::settings::VerifierSettings; +use integrity::vector_commitment::vector_commitment::{ + VectorCommitment, VectorCommitmentConfig, VectorCommitmentWitness, VectorQuery, vector_commit, + vector_commitment_decommit, }; use poseidon::poseidon_hash_span; @@ -40,10 +40,10 @@ struct TableCommitmentWitness { } fn table_commit( - ref channel: Channel, unsent_commitment: felt252, config: TableCommitmentConfig + ref channel: Channel, unsent_commitment: felt252, config: TableCommitmentConfig, ) -> TableCommitment { let vector_commitment = vector_commit(ref channel, unsent_commitment, config.vector); - TableCommitment { config: config, vector_commitment: vector_commitment, } + TableCommitment { config: config, vector_commitment: vector_commitment } } // Decommits a TableCommitment at multiple indices. @@ -80,7 +80,7 @@ fn table_decommit( assert(n_columns >= 1, 'Must have at least 1 column'); assert( - decommitment.values.len().into() == n_queries * n_columns, 'Invalid decommitment length' + decommitment.values.len().into() == n_queries * n_columns, 'Invalid decommitment length', ); // Convert decommitment values to Montgomery form, since the commitment is in that form. @@ -96,7 +96,7 @@ fn table_decommit( ); vector_commitment_decommit( - commitment.vector_commitment, vector_queries.span(), witness.vector, settings + commitment.vector_commitment, vector_queries.span(), witness.vector, settings, ); } @@ -105,9 +105,9 @@ fn to_montgomery(mut arr: Span) -> Array { loop { match arr.pop_front() { Option::Some(elem) => { res.append(*elem * MONTGOMERY_R); }, - Option::None => { break; } + Option::None => { break; }, } - }; + } res } @@ -116,7 +116,7 @@ fn generate_vector_queries( values: Span, n_columns: u32, is_verifier_friendly: bool, - settings: @VerifierSettings + settings: @VerifierSettings, ) -> Array { let queries_len = queries.len(); let mut vector_queries = ArrayTrait::new(); @@ -141,6 +141,6 @@ fn generate_vector_queries( }; vector_queries.append(VectorQuery { index: *queries[i], value: hash }); i += 1; - }; + } vector_queries } diff --git a/src/table_commitment/tests/test_table_commitment_commit.cairo b/src/table_commitment/tests/test_table_commitment_commit.cairo index 1eade4582..e5d4b8d3f 100644 --- a/src/table_commitment/tests/test_table_commitment_commit.cairo +++ b/src/table_commitment/tests/test_table_commitment_commit.cairo @@ -1,38 +1,38 @@ -use integrity::{ - channel::channel::{Channel, ChannelTrait}, - table_commitment::table_commitment::{table_commit, TableCommitment, TableCommitmentConfig}, - vector_commitment::vector_commitment::{VectorCommitment, VectorCommitmentConfig}, +use integrity::channel::channel::{Channel, ChannelTrait}; +use integrity::table_commitment::table_commitment::{ + TableCommitment, TableCommitmentConfig, table_commit, }; +use integrity::vector_commitment::vector_commitment::{VectorCommitment, VectorCommitmentConfig}; #[test] #[available_gas(9999999999)] fn test_table_commitment_commit() { let mut channel = ChannelTrait::new_with_counter( - 0x1b9182dce9dc1169fcd00c1f8c0b6acd6baad99ce578370ead5ca230b8fb8c6, 0x1 + 0x1b9182dce9dc1169fcd00c1f8c0b6acd6baad99ce578370ead5ca230b8fb8c6, 0x1, ); let unsent_commitment = 0x1e9b0fa29ebe52b9c9a43a1d44e555ce42da3199370134d758735bfe9f40269; let config = TableCommitmentConfig { n_columns: 0x4, - vector: VectorCommitmentConfig { height: 0x9, n_verifier_friendly_commitment_layers: 0x64, } + vector: VectorCommitmentConfig { height: 0x9, n_verifier_friendly_commitment_layers: 0x64 }, }; assert( table_commit( - ref channel, unsent_commitment, config + ref channel, unsent_commitment, config, ) == TableCommitment { config: config, vector_commitment: VectorCommitment { - config: config.vector, commitment_hash: unsent_commitment + config: config.vector, commitment_hash: unsent_commitment, }, }, - 'Invalid value' + 'Invalid value', ); assert( channel.digest == 0x1abd607dab09dede570ed131d9df0a1997e33735b11933c45dc84353df84259, - 'Invalid value' + 'Invalid value', ); assert(channel.counter == 0x0, 'Invalid value'); } diff --git a/src/table_commitment/tests/test_table_commitment_decommit.cairo b/src/table_commitment/tests/test_table_commitment_decommit.cairo index 129789d10..7177ee36c 100644 --- a/src/table_commitment/tests/test_table_commitment_decommit.cairo +++ b/src/table_commitment/tests/test_table_commitment_decommit.cairo @@ -1,13 +1,11 @@ -use integrity::{ - vector_commitment::vector_commitment::{ - VectorCommitment, VectorCommitmentConfig, VectorCommitmentWitness - }, - table_commitment::table_commitment::{ - table_decommit, TableCommitment, TableCommitmentConfig, TableDecommitment, - TableCommitmentWitness - }, - tests::{stone_proof_fibonacci_keccak, stone_proof_fibonacci}, - settings::{VerifierSettings, HasherBitLength, StoneVersion}, +use integrity::settings::{HasherBitLength, StoneVersion, VerifierSettings}; +use integrity::table_commitment::table_commitment::{ + TableCommitment, TableCommitmentConfig, TableCommitmentWitness, TableDecommitment, + table_decommit, +}; +use integrity::tests::{stone_proof_fibonacci, stone_proof_fibonacci_keccak}; +use integrity::vector_commitment::vector_commitment::{ + VectorCommitment, VectorCommitmentConfig, VectorCommitmentWitness, }; #[cfg(feature: 'blake2s')] diff --git a/src/tests/stone_proof_fibonacci/constraint_coefficients.cairo b/src/tests/stone_proof_fibonacci/constraint_coefficients.cairo index 8d1f03069..fd7483cfb 100644 --- a/src/tests/stone_proof_fibonacci/constraint_coefficients.cairo +++ b/src/tests/stone_proof_fibonacci/constraint_coefficients.cairo @@ -92,6 +92,6 @@ fn get() -> Array { 0x24ab2d9bcecb73ef885ad0a6127bdb4693bda56977a38846c521619b2dcdcbf, 0xf01b5d986a9a6033cd5cb49b813e46779e6502be0522f13348ae21443b5410, 0x520b263f23eeb6565972762178d08c872d9b9b3effa9c241916ca7e59f6e829, - 0x5decc1904ed4fa9075a9837fd0e3e933e707fbe29a93a397a41e7a58de5c282 + 0x5decc1904ed4fa9075a9837fd0e3e933e707fbe29a93a397a41e7a58de5c282, ] } diff --git a/src/tests/stone_proof_fibonacci/fri/commitment.cairo b/src/tests/stone_proof_fibonacci/fri/commitment.cairo index 3a711abe3..209f598e8 100644 --- a/src/tests/stone_proof_fibonacci/fri/commitment.cairo +++ b/src/tests/stone_proof_fibonacci/fri/commitment.cairo @@ -1,9 +1,7 @@ -use integrity::{ - fri::fri::FriCommitment, - table_commitment::table_commitment::{TableCommitmentConfig, TableCommitment}, - vector_commitment::vector_commitment::{VectorCommitmentConfig, VectorCommitment}, - tests::stone_proof_fibonacci, -}; +use integrity::fri::fri::FriCommitment; +use integrity::table_commitment::table_commitment::{TableCommitment, TableCommitmentConfig}; +use integrity::tests::stone_proof_fibonacci; +use integrity::vector_commitment::vector_commitment::{VectorCommitment, VectorCommitmentConfig}; fn get() -> FriCommitment { return FriCommitment { @@ -20,7 +18,7 @@ fn get() -> FriCommitment { config: VectorCommitmentConfig { height: 0x12, n_verifier_friendly_commitment_layers: 0x64, }, - commitment_hash: 0x137de087f31f4e6f54222fc3cebb3c162469083196999e6ee4bb8ceb4d6b786 + commitment_hash: 0x137de087f31f4e6f54222fc3cebb3c162469083196999e6ee4bb8ceb4d6b786, }, }, TableCommitment { @@ -34,7 +32,7 @@ fn get() -> FriCommitment { config: VectorCommitmentConfig { height: 0xf, n_verifier_friendly_commitment_layers: 0x64, }, - commitment_hash: 0x3bb3c75d228842edce6f6bf6fd6706ce51f5d83c6842a3ab4b4d89fad6f07b + commitment_hash: 0x3bb3c75d228842edce6f6bf6fd6706ce51f5d83c6842a3ab4b4d89fad6f07b, }, }, TableCommitment { @@ -48,7 +46,7 @@ fn get() -> FriCommitment { config: VectorCommitmentConfig { height: 0xd, n_verifier_friendly_commitment_layers: 0x64, }, - commitment_hash: 0xb606d3c2b341ff9de5ead44f00121fdc4113f3720feb162eeaecb511e73d4f + commitment_hash: 0xb606d3c2b341ff9de5ead44f00121fdc4113f3720feb162eeaecb511e73d4f, }, }, TableCommitment { @@ -62,7 +60,7 @@ fn get() -> FriCommitment { config: VectorCommitmentConfig { height: 0xb, n_verifier_friendly_commitment_layers: 0x64, }, - commitment_hash: 0x787b0937a4cd02e0143e93979bb79139ca9546fc1654b4f755f8642c989ba20 + commitment_hash: 0x787b0937a4cd02e0143e93979bb79139ca9546fc1654b4f755f8642c989ba20, }, }, ] @@ -71,7 +69,7 @@ fn get() -> FriCommitment { 0x2318111dbaa02700a1ac0d1ce605b756010af6c39b4e85422e9e8c848ec05ca, 0xe32c017cfa9260ed2130df2d513340c4a5aaee766696beb2f640ad261e0261, 0x4103675a55bf63ad036370ded26f12e273026699c056d578c6b01dff2c3e9e0, - 0x2cda81790074e40739eb81556de82ebc000056aafcc09c34f5ba52d6d0ff1ba + 0x2cda81790074e40739eb81556de82ebc000056aafcc09c34f5ba52d6d0ff1ba, ] .span(), last_layer_coefficients: stone_proof_fibonacci::fri::last_layer_coefficients::get().span(), diff --git a/src/tests/stone_proof_fibonacci/fri/config.cairo b/src/tests/stone_proof_fibonacci/fri/config.cairo index 737db8793..4d581d13a 100644 --- a/src/tests/stone_proof_fibonacci/fri/config.cairo +++ b/src/tests/stone_proof_fibonacci/fri/config.cairo @@ -1,7 +1,6 @@ -use integrity::{ - fri::fri_config::FriConfig, table_commitment::table_commitment::{TableCommitmentConfig}, - vector_commitment::vector_commitment::{VectorCommitmentConfig} -}; +use integrity::fri::fri_config::FriConfig; +use integrity::table_commitment::table_commitment::TableCommitmentConfig; +use integrity::vector_commitment::vector_commitment::VectorCommitmentConfig; fn get() -> FriConfig { return FriConfig { @@ -31,7 +30,7 @@ fn get() -> FriConfig { vector: VectorCommitmentConfig { height: 0xb, n_verifier_friendly_commitment_layers: 0x64, }, - } + }, ] .span(), // Array of size n_layers, each entry represents the FRI step size, diff --git a/src/tests/stone_proof_fibonacci/fri/decommitment.cairo b/src/tests/stone_proof_fibonacci/fri/decommitment.cairo index 2ea0a5c81..a74a2d240 100644 --- a/src/tests/stone_proof_fibonacci/fri/decommitment.cairo +++ b/src/tests/stone_proof_fibonacci/fri/decommitment.cairo @@ -20,7 +20,7 @@ fn get() -> FriDecommitment { 0x4ae8beb6c117ed28ad2481e6eb3920ba0d196dcf91fad745d0f3d31bf6d05ed, 0x2924fde5d241de3ecacc842ee3d3110d2fcf16ba3512e17768ddab1176d56f8, 0x64d3211f03010d3832ef559fa7159fc080cdc653948ba27c73e681108b96f07, - 0x168dc9a375545abcdd0f89474ef29b7603d6ba848e6dc160e0edd5d3a362a3a + 0x168dc9a375545abcdd0f89474ef29b7603d6ba848e6dc160e0edd5d3a362a3a, ] .span(), points: array![ @@ -41,7 +41,7 @@ fn get() -> FriDecommitment { 0x7568bbdb9e6589c8b2ecb173d2c4de5fe7e22b82b3534821e97f156eb950c42, 0x6c5c9a950bdf0c568bc3c0b22bc2640ac25a291952dda577938c99c4b0acfaa, 0x58eaadad1f9488a1fa306bcd1674fd63efa43eef9c416afd6272149b1d36f32, - 0x6a334d04c8fc44e835dd60eb585be69825d6854507921990d90f7553de33ec4 + 0x6a334d04c8fc44e835dd60eb585be69825d6854507921990d90f7553de33ec4, ] .span(), }; diff --git a/src/tests/stone_proof_fibonacci/fri/unsent_commitment.cairo b/src/tests/stone_proof_fibonacci/fri/unsent_commitment.cairo index 37b9245a9..6911b16ab 100644 --- a/src/tests/stone_proof_fibonacci/fri/unsent_commitment.cairo +++ b/src/tests/stone_proof_fibonacci/fri/unsent_commitment.cairo @@ -1,4 +1,5 @@ -use integrity::{fri::fri::FriUnsentCommitment, tests::stone_proof_fibonacci}; +use integrity::fri::fri::FriUnsentCommitment; +use integrity::tests::stone_proof_fibonacci; fn get() -> FriUnsentCommitment { return FriUnsentCommitment { diff --git a/src/tests/stone_proof_fibonacci/fri/witness.cairo b/src/tests/stone_proof_fibonacci/fri/witness.cairo index 588b3e3cd..b156e5f45 100644 --- a/src/tests/stone_proof_fibonacci/fri/witness.cairo +++ b/src/tests/stone_proof_fibonacci/fri/witness.cairo @@ -1,8 +1,6 @@ -use integrity::{ - fri::fri::{FriWitness, FriLayerWitness}, - table_commitment::table_commitment::TableCommitmentWitness, - vector_commitment::vector_commitment::VectorCommitmentWitness, -}; +use integrity::fri::fri::{FriLayerWitness, FriWitness}; +use integrity::table_commitment::table_commitment::TableCommitmentWitness; +use integrity::vector_commitment::vector_commitment::VectorCommitmentWitness; fn get() -> FriWitness { return FriWitness { @@ -279,7 +277,7 @@ fn get() -> FriWitness { 0x238b9da183467797cd0e62480eb078221bb36d3d49086908d0b66c21c8c5eb9, 0x7e97528cff2d9318830e6c975b708b244442e48435824e77706a198602bb56d, 0x3b21e13441ecdfd08f7231b2695a6316b9d203f82f149269ee2c2fc5066b42b, - 0x22498106ed4f426459eeffb24f3ee1656a74abc651eb6b7d0df798def15a793 + 0x22498106ed4f426459eeffb24f3ee1656a74abc651eb6b7d0df798def15a793, ] .span(), // Table commitment witnesses for decommiting all the leaves. @@ -520,7 +518,7 @@ fn get() -> FriWitness { 0x5ee1627d45358bcec706e0233185e9615e9c2d79c7b322d6f11392b384eb9d9, 0x81582ebf3887152d06b2f20e842f0e76948700fe5c7688a1fd04ce739607c1, 0x16e5f08b430ae667163ce48cbc53da7444fa589894664715c2832bd7d2aea36, - 0x1e6b7f988e6bc55c13fb30585ac8c2803027351e0dd3c67708bf41efee81ca4 + 0x1e6b7f988e6bc55c13fb30585ac8c2803027351e0dd3c67708bf41efee81ca4, ] .span(), }, @@ -654,7 +652,7 @@ fn get() -> FriWitness { 0x18d5adbd93dc9d9c51c5aada92a9468a57f6c1e435ef2cb75bb3013e9069ad6, 0x19ccdd92bf65bb186984bc6b8358ff0acdcdce20e71b12ccd35143b477d03fb, 0x75b51f739d616a692f23a6249877c39e15c80e52ba9d88884b9be19ebd37af2, - 0x4fa1db996b9e8c9011f2dc39e30875b2a93bdcb5375ed19320a67034013857f + 0x4fa1db996b9e8c9011f2dc39e30875b2a93bdcb5375ed19320a67034013857f, ] .span(), // Table commitment witnesses for decommiting all the leaves. @@ -841,7 +839,7 @@ fn get() -> FriWitness { 0x2475accf9c728b1dfc1a68931160177080c258d680d3e639dcc52cf52ac937a, 0x417ba71113a10d99bc0f5e299d5d114e226a30b0e64608cd5ecd35a8a0fc05e, 0x16071eac454d7ad563706f3c9656c7141a2a2135c4034e0aea45fb51880bcad, - 0x3a440d00cb12b2d37f14f573301bbcab14fc48df34acd992d0748386236c152 + 0x3a440d00cb12b2d37f14f573301bbcab14fc48df34acd992d0748386236c152, ] .span(), }, @@ -903,7 +901,7 @@ fn get() -> FriWitness { 0x41a42a3c08ac422e856f0558cf65bedde5da6af19c34b08e623d8e83a6c82d7, 0x2940754dd5fefcfa62330ce5bc43223b9392b8a9c8be0105eeb330fff94344c, 0x4d93548aa431a52fe269597cb1d49d570dd6a03d66926b8de2470bcad927e65, - 0x2e8ad9faec86d735f2874e8035a4496fc39c3bd48157e869060b99738d41449 + 0x2e8ad9faec86d735f2874e8035a4496fc39c3bd48157e869060b99738d41449, ] .span(), // Table commitment witnesses for decommiting all the leaves. @@ -1054,7 +1052,7 @@ fn get() -> FriWitness { 0x45a85a9d13fe9fdc6ffeb61f24820295bc9b8f3ff9e65af2fcf45b43f9974ff, 0x7167b3173ee546c82d73e0892d2055d0aa4dd5e9a5dab34879dc772bb9f6b13, 0x5e1ec8434858c3773ad1d7b598dd75c5b649764d96b76da3ed7534002acf2df, - 0x37eeeed73fe8d80c7c9453f77ed3421f5a9ef85361ad62e70f3ab330bc23451 + 0x37eeeed73fe8d80c7c9453f77ed3421f5a9ef85361ad62e70f3ab330bc23451, ] .span(), }, @@ -1112,7 +1110,7 @@ fn get() -> FriWitness { 0x51ed0a6d25ffc029b3681309a283d9735eae398f4bfa07d2e3d0dd44d380c08, 0xca69088180c747e1c23a8077e340bb988f5ec8570515413b6592c25648db70, 0x22dd7c45d79e2bcf9fce96b45225a029be97e568da18b145baaf7cd2960b991, - 0x2b2b51b5bee675a76dbc6c6f25b03380538c079835d1512e33866391a8100aa + 0x2b2b51b5bee675a76dbc6c6f25b03380538c079835d1512e33866391a8100aa, ] .span(), // Table commitment witnesses for decommiting all the leaves. @@ -1229,13 +1227,13 @@ fn get() -> FriWitness { 0x7a58d2ba009e4e2c28371536a10a95670f6541ebd9d793f9469915d28187b79, 0x3286485097624b8134d67384d0edad80cfa40092a107985ef1638a8fec761c7, 0x285ef0d4a246948be3a38a6bfc8e15e98df02e9a5c37050ea6d462a80251f55, - 0x3d10ca0b15570b89903dad4106fa7bc0b54f222c3df5562283acc71690fe488 + 0x3d10ca0b15570b89903dad4106fa7bc0b54f222c3df5562283acc71690fe488, ] .span(), }, }, - } + }, ] - .span() + .span(), }; } diff --git a/src/tests/stone_proof_fibonacci/interaction_elements.cairo b/src/tests/stone_proof_fibonacci/interaction_elements.cairo index b612f4c04..c4f8e20a6 100644 --- a/src/tests/stone_proof_fibonacci/interaction_elements.cairo +++ b/src/tests/stone_proof_fibonacci/interaction_elements.cairo @@ -7,6 +7,6 @@ fn get() -> InteractionElements { range_check16_perm_interaction_elm: 0x7ea83ddd48c6068a1a11f3a107ada2da689636c6028061ff7fb8ef8f2a18bef, diluted_check_permutation_interaction_elm: 0x4bc33ab9e5b3855f07ad50717b923e4f8bea45737b6462fa60c27e32b315d95, diluted_check_interaction_z: 0x1c695cf20c4393e7ffe8d8c7efcce3797f0744aa575c58b99728a573ef96529, - diluted_check_interaction_alpha: 0x163023769a9ccfc222f8cb9a71a4630d400cd89c34dc14718e907fadc66877f + diluted_check_interaction_alpha: 0x163023769a9ccfc222f8cb9a71a4630d400cd89c34dc14718e907fadc66877f, } } diff --git a/src/tests/stone_proof_fibonacci/proof_of_work/unsent_commitment.cairo b/src/tests/stone_proof_fibonacci/proof_of_work/unsent_commitment.cairo index b808012e8..6ca3dab7c 100644 --- a/src/tests/stone_proof_fibonacci/proof_of_work/unsent_commitment.cairo +++ b/src/tests/stone_proof_fibonacci/proof_of_work/unsent_commitment.cairo @@ -1,5 +1,5 @@ use integrity::proof_of_work::proof_of_work::ProofOfWorkUnsentCommitment; fn get() -> ProofOfWorkUnsentCommitment { - return ProofOfWorkUnsentCommitment { nonce: 0x3bdd531f, }; + return ProofOfWorkUnsentCommitment { nonce: 0x3bdd531f }; } diff --git a/src/tests/stone_proof_fibonacci/public_input.cairo b/src/tests/stone_proof_fibonacci/public_input.cairo index cb3a2ae64..7f280a843 100644 --- a/src/tests/stone_proof_fibonacci/public_input.cairo +++ b/src/tests/stone_proof_fibonacci/public_input.cairo @@ -1,4 +1,5 @@ -use integrity::air::{public_memory::AddrValue, public_input::{PublicInput, SegmentInfo},}; +use integrity::air::public_input::{PublicInput, SegmentInfo}; +use integrity::air::public_memory::AddrValue; fn get() -> PublicInput { return PublicInput { @@ -50,12 +51,12 @@ fn get() -> PublicInput { AddrValue { address: 0x1e, value: 0x482680017ffd8000 }, AddrValue { address: 0x1f, - value: 0x800000000000011000000000000000000000000000000000000000000000000 + value: 0x800000000000011000000000000000000000000000000000000000000000000, }, AddrValue { address: 0x20, value: 0x1104800180018000 }, AddrValue { address: 0x21, - value: 0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff9 + value: 0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff9, }, AddrValue { address: 0x22, value: 0x208b7fff7fff7ffe }, AddrValue { address: 0x23, value: 0x25 }, diff --git a/src/tests/stone_proof_fibonacci/queries.cairo b/src/tests/stone_proof_fibonacci/queries.cairo index 67b02404b..e7f76636b 100644 --- a/src/tests/stone_proof_fibonacci/queries.cairo +++ b/src/tests/stone_proof_fibonacci/queries.cairo @@ -17,6 +17,6 @@ fn get() -> Array { 0x2ce83a, 0x384d24, 0x3a1e60, - 0x3d46eb + 0x3d46eb, ]; } diff --git a/src/tests/stone_proof_fibonacci/stark/commitment.cairo b/src/tests/stone_proof_fibonacci/stark/commitment.cairo index 8626becb1..60e082656 100644 --- a/src/tests/stone_proof_fibonacci/stark/commitment.cairo +++ b/src/tests/stone_proof_fibonacci/stark/commitment.cairo @@ -1,9 +1,7 @@ -use integrity::{ - stark::StarkCommitment, - table_commitment::table_commitment::{TableCommitmentConfig, TableCommitment}, - vector_commitment::vector_commitment::{VectorCommitmentConfig, VectorCommitment}, - tests::stone_proof_fibonacci, -}; +use integrity::stark::StarkCommitment; +use integrity::table_commitment::table_commitment::{TableCommitment, TableCommitmentConfig}; +use integrity::tests::stone_proof_fibonacci; +use integrity::vector_commitment::vector_commitment::{VectorCommitment, VectorCommitmentConfig}; fn get() -> StarkCommitment { return StarkCommitment { @@ -159,7 +157,7 @@ fn get() -> StarkCommitment { 0x374a33e85f4b8648d5849134fd65bce1d09f0e5fbebf29100fbcee47f32e3d1, 0x35dc098af24cb45c006941b0ce148d320fd03ab0a363fd6e05d39ad6b091f60, 0x7287981598f1bbc0c494d0af685a404b15682d06fbe1a04a26f777643f4dca8, - 0x304e2c03b25cbc5148d21f0093df26ffd96db5cebc5b4819b6f52da9efc6ef7 + 0x304e2c03b25cbc5148d21f0093df26ffd96db5cebc5b4819b6f52da9efc6ef7, ] .span(), fri: stone_proof_fibonacci::fri::commitment::get(), diff --git a/src/tests/stone_proof_fibonacci/stark/config.cairo b/src/tests/stone_proof_fibonacci/stark/config.cairo index b69faa792..88f53205a 100644 --- a/src/tests/stone_proof_fibonacci/stark/config.cairo +++ b/src/tests/stone_proof_fibonacci/stark/config.cairo @@ -1,7 +1,7 @@ -use integrity::{ - stark::StarkConfig, table_commitment::table_commitment::TableCommitmentConfig, - vector_commitment::vector_commitment::VectorCommitmentConfig, tests::stone_proof_fibonacci, -}; +use integrity::stark::StarkConfig; +use integrity::table_commitment::table_commitment::TableCommitmentConfig; +use integrity::tests::stone_proof_fibonacci; +use integrity::vector_commitment::vector_commitment::VectorCommitmentConfig; fn get() -> StarkConfig { return StarkConfig { diff --git a/src/tests/stone_proof_fibonacci/stark/unsent_commitment.cairo b/src/tests/stone_proof_fibonacci/stark/unsent_commitment.cairo index add406b78..14eda0c21 100644 --- a/src/tests/stone_proof_fibonacci/stark/unsent_commitment.cairo +++ b/src/tests/stone_proof_fibonacci/stark/unsent_commitment.cairo @@ -1,4 +1,5 @@ -use integrity::{stark::StarkUnsentCommitment, tests::stone_proof_fibonacci}; +use integrity::stark::StarkUnsentCommitment; +use integrity::tests::stone_proof_fibonacci; fn get() -> StarkUnsentCommitment { return StarkUnsentCommitment { diff --git a/src/tests/stone_proof_fibonacci/stark/witness.cairo b/src/tests/stone_proof_fibonacci/stark/witness.cairo index 4f4c4afe1..b3b1e2f5d 100644 --- a/src/tests/stone_proof_fibonacci/stark/witness.cairo +++ b/src/tests/stone_proof_fibonacci/stark/witness.cairo @@ -1,8 +1,7 @@ -use integrity::{ - stark::StarkWitness, - table_commitment::table_commitment::{TableCommitmentWitness, TableDecommitment}, - vector_commitment::vector_commitment::VectorCommitmentWitness, tests::stone_proof_fibonacci, -}; +use integrity::stark::StarkWitness; +use integrity::table_commitment::table_commitment::{TableCommitmentWitness, TableDecommitment}; +use integrity::tests::stone_proof_fibonacci; +use integrity::vector_commitment::vector_commitment::VectorCommitmentWitness; fn get() -> StarkWitness { return StarkWitness { @@ -45,9 +44,9 @@ fn get() -> StarkWitness { 0x42cf31b1ab593adee15eb040773cdf11f24b77e3092bdc0fc6a52e808364611, 0x5e5a9fe2c609683ea4ae43a25788939b06508ff038082ec0f2bd43fd26394de, 0x2187d700f2a286da191941824f267f4199e07cc1707b5b346868dcb718c30e5, - 0x497821407826448c240a13a2b2c2c15c47fbe074d29c2446a2bf63020483765 + 0x497821407826448c240a13a2b2c2c15c47fbe074d29c2446a2bf63020483765, ] - .span() + .span(), }, composition_witness: TableCommitmentWitness { vector: VectorCommitmentWitness { @@ -358,10 +357,10 @@ fn get() -> StarkWitness { 0x6abfa8c724c7e2a6149e64b3d47c8cd55b0b80f9d7b9f34490281cd6e96386f, 0xf3ba97d4994714f4201700b4ebe2efda1fe95daeebeeb4c50fcacbcf875ac6, 0x5d2189d650460b265727324165e7b12b9ec6eed44bb97e3024b1e2ac147cc33, - 0x436de256ed76ad9e027f789d0cf485b04c62097e719e898614501c4e24a5b36 + 0x436de256ed76ad9e027f789d0cf485b04c62097e719e898614501c4e24a5b36, ] - .span() - } + .span(), + }, }, fri_witness: stone_proof_fibonacci::fri::witness::get(), }; diff --git a/src/tests/stone_proof_fibonacci/traces/commitment.cairo b/src/tests/stone_proof_fibonacci/traces/commitment.cairo index 08bc7a500..964971c76 100644 --- a/src/tests/stone_proof_fibonacci/traces/commitment.cairo +++ b/src/tests/stone_proof_fibonacci/traces/commitment.cairo @@ -1,9 +1,8 @@ -use integrity::{ - air::layouts::recursive::{traces::TracesCommitment, global_values::InteractionElements}, - table_commitment::table_commitment::TableCommitment, - vector_commitment::vector_commitment::{VectorCommitmentConfig, VectorCommitment}, - tests::stone_proof_fibonacci, -}; +use integrity::air::layouts::recursive::global_values::InteractionElements; +use integrity::air::layouts::recursive::traces::TracesCommitment; +use integrity::table_commitment::table_commitment::TableCommitment; +use integrity::tests::stone_proof_fibonacci; +use integrity::vector_commitment::vector_commitment::{VectorCommitment, VectorCommitmentConfig}; fn get() -> TracesCommitment { let unsent_commitment = stone_proof_fibonacci::traces::unsent_commitment::get(); @@ -14,7 +13,7 @@ fn get() -> TracesCommitment { config: traces_config.original, vector_commitment: VectorCommitment { config: VectorCommitmentConfig { - height: 0x16, n_verifier_friendly_commitment_layers: 0x64 + height: 0x16, n_verifier_friendly_commitment_layers: 0x64, }, commitment_hash: unsent_commitment.original, }, @@ -24,7 +23,7 @@ fn get() -> TracesCommitment { config: traces_config.interaction, vector_commitment: VectorCommitment { config: VectorCommitmentConfig { - height: 0x16, n_verifier_friendly_commitment_layers: 0x64 + height: 0x16, n_verifier_friendly_commitment_layers: 0x64, }, commitment_hash: unsent_commitment.interaction, }, diff --git a/src/tests/stone_proof_fibonacci/traces/config.cairo b/src/tests/stone_proof_fibonacci/traces/config.cairo index a18289291..497265f4d 100644 --- a/src/tests/stone_proof_fibonacci/traces/config.cairo +++ b/src/tests/stone_proof_fibonacci/traces/config.cairo @@ -1,21 +1,19 @@ -use integrity::{ - air::layouts::recursive::traces::TracesConfig, - table_commitment::table_commitment::TableCommitmentConfig, - vector_commitment::vector_commitment::VectorCommitmentConfig, -}; +use integrity::air::layouts::recursive::traces::TracesConfig; +use integrity::table_commitment::table_commitment::TableCommitmentConfig; +use integrity::vector_commitment::vector_commitment::VectorCommitmentConfig; fn get() -> TracesConfig { return TracesConfig { original: TableCommitmentConfig { n_columns: 0x7, vector: VectorCommitmentConfig { - height: 0x16, n_verifier_friendly_commitment_layers: 0x64 + height: 0x16, n_verifier_friendly_commitment_layers: 0x64, }, }, interaction: TableCommitmentConfig { n_columns: 0x3, vector: VectorCommitmentConfig { - height: 0x16, n_verifier_friendly_commitment_layers: 0x64 + height: 0x16, n_verifier_friendly_commitment_layers: 0x64, }, }, }; diff --git a/src/tests/stone_proof_fibonacci/traces/decommitment.cairo b/src/tests/stone_proof_fibonacci/traces/decommitment.cairo index 3d958e229..46391ecfa 100644 --- a/src/tests/stone_proof_fibonacci/traces/decommitment.cairo +++ b/src/tests/stone_proof_fibonacci/traces/decommitment.cairo @@ -1,7 +1,5 @@ -use integrity::{ - air::layouts::recursive::traces::TracesDecommitment, - table_commitment::table_commitment::TableDecommitment, -}; +use integrity::air::layouts::recursive::traces::TracesDecommitment; +use integrity::table_commitment::table_commitment::TableDecommitment; fn get() -> TracesDecommitment { return TracesDecommitment { @@ -132,7 +130,7 @@ fn get() -> TracesDecommitment { 0x1615927ad08e7071d224fd62277c733856264b019f19348cc06d12c818347a1, 0x139bc4a27e309456740143e4d681d0482789ec7e6464b4fe0d7ed276d87c241, 0x6977d98591d84c22adecac4b4dc42a0b2e609c0daf993e538c9720521dbf02d, - 0xfa852d9525f19f876b72d275a75b63beb87c7f5934285378e8163804ad58aa + 0xfa852d9525f19f876b72d275a75b63beb87c7f5934285378e8163804ad58aa, ] .span(), }, @@ -191,7 +189,7 @@ fn get() -> TracesDecommitment { 0x551e4c5cc04dc6aa101fe5d343cd50409e8ccb9cb860876fb90ebbc0aa3b760, 0x12c213443cac1d7138a5ecc07a4eca17719894b5503fe5f658186066951ec0b, 0x6bf897a3f79da8666994fad140c1d7916c7e27c9836856ca160c1a49b28b408, - 0x5a4730e9f179e6bb22412d9a14eb5bfd8c8e5197b0fc0a962a94eb2d8542ea3 + 0x5a4730e9f179e6bb22412d9a14eb5bfd8c8e5197b0fc0a962a94eb2d8542ea3, ] .span(), }, diff --git a/src/tests/stone_proof_fibonacci/traces/witness.cairo b/src/tests/stone_proof_fibonacci/traces/witness.cairo index 30148c77e..6da837961 100644 --- a/src/tests/stone_proof_fibonacci/traces/witness.cairo +++ b/src/tests/stone_proof_fibonacci/traces/witness.cairo @@ -1,8 +1,7 @@ -use integrity::{ - air::layouts::recursive::traces::TracesWitness, - table_commitment::table_commitment::TableCommitmentWitness, - vector_commitment::vector_commitment::VectorCommitmentWitness, tests::stone_proof_fibonacci, -}; +use integrity::air::layouts::recursive::traces::TracesWitness; +use integrity::table_commitment::table_commitment::TableCommitmentWitness; +use integrity::tests::stone_proof_fibonacci; +use integrity::vector_commitment::vector_commitment::VectorCommitmentWitness; fn get() -> TracesWitness { return TracesWitness { @@ -315,7 +314,7 @@ fn get() -> TracesWitness { 0x342f1da46e4f70d7a41f70714f62e151705f9ca06c2d6087ce729c050f12f2f, 0x373b26e2465ae4464f66febde45a53f992bdff2f58e60a697a0b604caf9fc67, 0x43c1d5dbd030aae8775256291ba4283c4b63abc522a56da347dd3cfa0aa4087, - 0x7bb5682667ee265dacd2cd55a197078315703aefcc62f18b177888515e7d512 + 0x7bb5682667ee265dacd2cd55a197078315703aefcc62f18b177888515e7d512, ] .span(), }, @@ -629,7 +628,7 @@ fn get() -> TracesWitness { 0x7105987aa664ac789b3388832e585669bafbee41509178a796dff43426dd666, 0x2666a07c5a886794759e217d4889ea45d303140264f5cf37f65b47e74a9b486, 0x6670be2d0acdcfac1bd40025e9a5ccd4c260593a88f7ae40b7468b2a1c01045, - 0x7a49be4920adfa9dd254293cdf063cddc5637051389ca0086601543e7ca2664 + 0x7a49be4920adfa9dd254293cdf063cddc5637051389ca0086601543e7ca2664, ] .span(), }, diff --git a/src/tests/stone_proof_fibonacci_keccak/fri/commitment.cairo b/src/tests/stone_proof_fibonacci_keccak/fri/commitment.cairo index 22727a3d3..f44406557 100644 --- a/src/tests/stone_proof_fibonacci_keccak/fri/commitment.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/fri/commitment.cairo @@ -1,9 +1,7 @@ -use integrity::{ - fri::fri::FriCommitment, - table_commitment::table_commitment::{TableCommitmentConfig, TableCommitment}, - vector_commitment::vector_commitment::{VectorCommitmentConfig, VectorCommitment}, - tests::stone_proof_fibonacci_keccak, -}; +use integrity::fri::fri::FriCommitment; +use integrity::table_commitment::table_commitment::{TableCommitment, TableCommitmentConfig}; +use integrity::tests::stone_proof_fibonacci_keccak; +use integrity::vector_commitment::vector_commitment::{VectorCommitment, VectorCommitmentConfig}; fn get() -> FriCommitment { return FriCommitment { @@ -20,7 +18,7 @@ fn get() -> FriCommitment { config: VectorCommitmentConfig { height: 0x10, n_verifier_friendly_commitment_layers: 0x64, }, - commitment_hash: 0x31b917291bbb3d38f7bc196dee1f3638ca197512162a4bdeb1ce814619c1625 + commitment_hash: 0x31b917291bbb3d38f7bc196dee1f3638ca197512162a4bdeb1ce814619c1625, }, }, TableCommitment { @@ -34,7 +32,7 @@ fn get() -> FriCommitment { config: VectorCommitmentConfig { height: 0xd, n_verifier_friendly_commitment_layers: 0x64, }, - commitment_hash: 0x6945b2895872a701b3451cdf93dca9cba3cad8f250d5866ca5c263e41c8f2b2 + commitment_hash: 0x6945b2895872a701b3451cdf93dca9cba3cad8f250d5866ca5c263e41c8f2b2, }, }, TableCommitment { @@ -48,7 +46,7 @@ fn get() -> FriCommitment { config: VectorCommitmentConfig { height: 0xb, n_verifier_friendly_commitment_layers: 0x64, }, - commitment_hash: 0x786c3ebbd4cab0c782d36860cd51887712953c48ce72c8d10acf5698c5a1213 + commitment_hash: 0x786c3ebbd4cab0c782d36860cd51887712953c48ce72c8d10acf5698c5a1213, }, }, TableCommitment { @@ -62,7 +60,7 @@ fn get() -> FriCommitment { config: VectorCommitmentConfig { height: 0x9, n_verifier_friendly_commitment_layers: 0x64, }, - commitment_hash: 0x1e9b0fa29ebe52b9c9a43a1d44e555ce42da3199370134d758735bfe9f40269 + commitment_hash: 0x1e9b0fa29ebe52b9c9a43a1d44e555ce42da3199370134d758735bfe9f40269, }, }, ] @@ -71,7 +69,7 @@ fn get() -> FriCommitment { 0x3fa22931f1e5f47eb6273e90ee38c37a21730bb432f6ef09c7c8f8c4e7b7fff, 0x72089def6cbdc9a9ad42dab128c499727e36b05d40df74bbccff39650569bd, 0x311de180838f0ad6e82a20d03978ddefb1c73bcee966471479a6c70fdc05f34, - 0x18e241a9c138d318daa567510ba31c4ebeecdaab9076b3a8828dbb4b3303e3 + 0x18e241a9c138d318daa567510ba31c4ebeecdaab9076b3a8828dbb4b3303e3, ] .span(), last_layer_coefficients: stone_proof_fibonacci_keccak::fri::last_layer_coefficients::get() diff --git a/src/tests/stone_proof_fibonacci_keccak/fri/config.cairo b/src/tests/stone_proof_fibonacci_keccak/fri/config.cairo index 8810f01a6..7b5f2a61c 100644 --- a/src/tests/stone_proof_fibonacci_keccak/fri/config.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/fri/config.cairo @@ -1,7 +1,6 @@ -use integrity::{ - fri::fri_config::FriConfig, table_commitment::table_commitment::{TableCommitmentConfig}, - vector_commitment::vector_commitment::{VectorCommitmentConfig} -}; +use integrity::fri::fri_config::FriConfig; +use integrity::table_commitment::table_commitment::TableCommitmentConfig; +use integrity::vector_commitment::vector_commitment::VectorCommitmentConfig; fn get() -> FriConfig { return FriConfig { @@ -31,7 +30,7 @@ fn get() -> FriConfig { vector: VectorCommitmentConfig { height: 0x9, n_verifier_friendly_commitment_layers: 0x64, }, - } + }, ] .span(), // Array of size n_layers, each entry represents the FRI step size, diff --git a/src/tests/stone_proof_fibonacci_keccak/fri/decommitment.cairo b/src/tests/stone_proof_fibonacci_keccak/fri/decommitment.cairo index a766f18c8..ee925ded4 100644 --- a/src/tests/stone_proof_fibonacci_keccak/fri/decommitment.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/fri/decommitment.cairo @@ -12,7 +12,7 @@ fn get() -> FriDecommitment { 0x5d3cf08593cd22d3c65a6f23400aca936c7f4afa0c7929d57c2b457bb580dda, 0x166b3d8f007049b60a78ecb13ed41e23a6262a7a7bf69c7697e028009acdb45, 0x5812ed90c9cd6fa4d385db12c7c831948d406a5bbbb66b55cbdf0640aea896, - 0xd88dcd7e06e18358c5ef3b5cf46d105c4e3f9dbe524cfc4259166b655357e4 + 0xd88dcd7e06e18358c5ef3b5cf46d105c4e3f9dbe524cfc4259166b655357e4, ] .span(), points: array![ @@ -25,7 +25,7 @@ fn get() -> FriDecommitment { 0x71c6ec19f50a45c581cc22b9d5497fe5ffc66459241ed61b1ff8c9d775e9a5f, 0x605c63ee4cc9f161c6be17577eec2a2237c3ecaef3ab677c428efed277d1ccf, 0x7e29ada6f5b8162ffacfe3bb308b4e0b84582e70ae82c7bf535f22261d7f569, - 0x626101361327b0d051875a300ffb0024bab7246783d59692044490eb78d7ba2 + 0x626101361327b0d051875a300ffb0024bab7246783d59692044490eb78d7ba2, ] .span(), }; diff --git a/src/tests/stone_proof_fibonacci_keccak/fri/last_layer_coefficients.cairo b/src/tests/stone_proof_fibonacci_keccak/fri/last_layer_coefficients.cairo index 164476e51..f7bdf6783 100644 --- a/src/tests/stone_proof_fibonacci_keccak/fri/last_layer_coefficients.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/fri/last_layer_coefficients.cairo @@ -127,6 +127,6 @@ fn get() -> Array { 0x7ae7c3e5b90234d7d0300b7e41aa380a09307a28f6afbeeddd3887d488ec694, 0x68908ab4c2e20bc459a3358e93608429f9bf185ee7e58c63004da7bb7e0f51, 0x66fe1941a61b8da3eb7b4e7db5e76628986542ebeb957b19fe677ae95f85339, - 0x38eccc03d4f88d02405296ceecd40e11106618e30aa9db7e924619ba3c096f3 + 0x38eccc03d4f88d02405296ceecd40e11106618e30aa9db7e924619ba3c096f3, ] } diff --git a/src/tests/stone_proof_fibonacci_keccak/fri/unsent_commitment.cairo b/src/tests/stone_proof_fibonacci_keccak/fri/unsent_commitment.cairo index d3ba52e55..2b33554c6 100644 --- a/src/tests/stone_proof_fibonacci_keccak/fri/unsent_commitment.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/fri/unsent_commitment.cairo @@ -1,4 +1,5 @@ -use integrity::{fri::fri::FriUnsentCommitment, tests::stone_proof_fibonacci_keccak}; +use integrity::fri::fri::FriUnsentCommitment; +use integrity::tests::stone_proof_fibonacci_keccak; fn get() -> FriUnsentCommitment { return FriUnsentCommitment { diff --git a/src/tests/stone_proof_fibonacci_keccak/fri/witness.cairo b/src/tests/stone_proof_fibonacci_keccak/fri/witness.cairo index 83cc0b16e..a731fda04 100644 --- a/src/tests/stone_proof_fibonacci_keccak/fri/witness.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/fri/witness.cairo @@ -1,8 +1,6 @@ -use integrity::{ - fri::fri::{FriWitness, FriLayerWitness}, - table_commitment::table_commitment::TableCommitmentWitness, - vector_commitment::vector_commitment::VectorCommitmentWitness, -}; +use integrity::fri::fri::{FriLayerWitness, FriWitness}; +use integrity::table_commitment::table_commitment::TableCommitmentWitness; +use integrity::vector_commitment::vector_commitment::VectorCommitmentWitness; fn get() -> FriWitness { return FriWitness { @@ -159,7 +157,7 @@ fn get() -> FriWitness { 0x3e72a4f5ea0bba98abc52a46dc96b1e994705e4a60d3585c015ebe42b509ef1, 0xc32664d2b6df80dd0ce80bccc302811828da83afa95673b15674aa0e19b921, 0x593723715418cb8ee531a120c9e882a3fd67f65d33ec953e71be23afa44c319, - 0x609698b0a6889f23c94cbf4ce29e7687474688bc9e2494964023b7b26de3800 + 0x609698b0a6889f23c94cbf4ce29e7687474688bc9e2494964023b7b26de3800, ] .span(), // Table commitment witnesses for decommiting all the leaves. @@ -285,7 +283,7 @@ fn get() -> FriWitness { 0x25a928b8586af1d1cc8a5ee78fa483285d896222123a9ff94edfde93101f1e4, 0x1d00bbd1bf6f53f4268bb5d44d7a3fb8db921b84166d3bb17e935c49be19798, 0x41e4d17be205cc9fa97f4ec99cd141e933c843864691d244662fd676bf463c5, - 0x112cd1570bc3000b0eb6edbddd50ffc2f535c4600a80a12dea2abd0294c9a38 + 0x112cd1570bc3000b0eb6edbddd50ffc2f535c4600a80a12dea2abd0294c9a38, ] .span(), }, @@ -363,7 +361,7 @@ fn get() -> FriWitness { 0x566eb0036635b47eb697d95295a80acf5e9d69d055eb69271d93bd96fa36628, 0x122ad38eb2c8e08aad9c2daff5bc03bb765a8d6b412dd310d2e6e57df1b469f, 0x2727f17d5df9ace295e3d8f9d933c0e007fe40c29da24d89a6a639a88deb4b5, - 0x3b82d657c8b34ec6c0e112d6dbf56a1374ae89884de90d6eb66e05a7eb7c425 + 0x3b82d657c8b34ec6c0e112d6dbf56a1374ae89884de90d6eb66e05a7eb7c425, ] .span(), // Table commitment witnesses for decommiting all the leaves. @@ -459,7 +457,7 @@ fn get() -> FriWitness { 0xd09d948e45b1fc82e31375862c09b6618a1eb0e779971df386a088ea3b9589, 0x49e1cb3bb0cb87a4f13f68a28a0c77ecda3432fe5c7803c906311b5ee947254, 0x7ff3e2710ac26fe054506462164ab915e5416ded803a9e70f5fdd7f44e817e4, - 0x746d9bf1e584a4c3425d2388110ebe1157282bffc58ce653d8c196ed452e245 + 0x746d9bf1e584a4c3425d2388110ebe1157282bffc58ce653d8c196ed452e245, ] .span(), }, @@ -497,7 +495,7 @@ fn get() -> FriWitness { 0x60cac39ab28ccc455a76a16880d2371be0262abf1cd87f203f9183e305986cd, 0x510418ffe574a0525ab2c8b11f77f1a19c8134ff8dc43d4a06f7cf2e684b682, 0x273659c005766c78bfc768c8dddaef10258feaa1a6fa7fd053be967231b8e1b, - 0x4bac2e6a444b3e6c5cef96fca5dc9ad7f113f77a5aae7ba4f4f48a1520f10f9 + 0x4bac2e6a444b3e6c5cef96fca5dc9ad7f113f77a5aae7ba4f4f48a1520f10f9, ] .span(), // Table commitment witnesses for decommiting all the leaves. @@ -573,7 +571,7 @@ fn get() -> FriWitness { 0x64c2e96412f80e128400da478496f85e3d76b25b495de16f6100e177c944b02, 0x5b7b8f711b71e2124338f29bb052f587c516021f4913d163b370f385516e711, 0x56e13f1e90cd8330d8601656bd2c1c0daf3c524ed553705bd4141115cdf46f6, - 0x715a61803bfea35f7e95219ac43f091065a788695257cafb950ff2ccd4e346 + 0x715a61803bfea35f7e95219ac43f091065a788695257cafb950ff2ccd4e346, ] .span(), }, @@ -611,7 +609,7 @@ fn get() -> FriWitness { 0x2cd60589cea5fe8b572e243cc8f82eb0978557b71f9eb68ae2002802dc66e33, 0x10d594120feefa606534431c3720845105a95bdb772be4e2dac9c4d8cbc2750, 0x6d4dbbfa49e4b9b951eb917a27ac0f1693d8bf632304c486acad154d05830a2, - 0x2295c7c14c830c8c0fc75da0e6f96f385a89cefbe29c36ca7ca27b25789bb71 + 0x2295c7c14c830c8c0fc75da0e6f96f385a89cefbe29c36ca7ca27b25789bb71, ] .span(), // Table commitment witnesses for decommiting all the leaves. @@ -667,13 +665,13 @@ fn get() -> FriWitness { 0x1da36b1fb01d0470d48c3eb4c92263eadb7b58c8829f2ee77e3287a6e39c902, 0x78dac96e95e86f83b4a426bd0505d84b5ea967822d0fca9f3bd28331164d94b, 0x1d50c82e363d8e7fa2641c9f2137b99832372d1879a2ee02b2c824a4cb620dd, - 0x2fd5a64db6093c9efda84ba327a43043e41310626073e58331c9f2f9f2db20f + 0x2fd5a64db6093c9efda84ba327a43043e41310626073e58331c9f2f9f2db20f, ] .span(), }, }, - } + }, ] - .span() + .span(), }; } diff --git a/src/tests/stone_proof_fibonacci_keccak/interaction_elements.cairo b/src/tests/stone_proof_fibonacci_keccak/interaction_elements.cairo index fcb8b0929..7d857ee37 100644 --- a/src/tests/stone_proof_fibonacci_keccak/interaction_elements.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/interaction_elements.cairo @@ -7,6 +7,6 @@ fn get() -> InteractionElements { range_check16_perm_interaction_elm: 0x645541a20083f184215fcb20d8014bed0546f6ae292f9eb7ee3de254117c597, diluted_check_permutation_interaction_elm: 0x11d978931f41d88e9e8930b42c84b6471782ca8c565464dd6f468c2b4804a22, diluted_check_interaction_z: 0x1e22e58ff299d68ff2d5823796c232bd70a8e700d70379417849503417a478a, - diluted_check_interaction_alpha: 0x3b74ba4892c5814cd3d16f5f28df48e8a6dc70a3d67f18b1b4921510fe88278 + diluted_check_interaction_alpha: 0x3b74ba4892c5814cd3d16f5f28df48e8a6dc70a3d67f18b1b4921510fe88278, } } diff --git a/src/tests/stone_proof_fibonacci_keccak/proof_of_work/unsent_commitment.cairo b/src/tests/stone_proof_fibonacci_keccak/proof_of_work/unsent_commitment.cairo index 21188098f..bf176c88c 100644 --- a/src/tests/stone_proof_fibonacci_keccak/proof_of_work/unsent_commitment.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/proof_of_work/unsent_commitment.cairo @@ -1,5 +1,5 @@ use integrity::proof_of_work::proof_of_work::ProofOfWorkUnsentCommitment; fn get() -> ProofOfWorkUnsentCommitment { - return ProofOfWorkUnsentCommitment { nonce: 0x6ee8fc4, }; + return ProofOfWorkUnsentCommitment { nonce: 0x6ee8fc4 }; } diff --git a/src/tests/stone_proof_fibonacci_keccak/public_input.cairo b/src/tests/stone_proof_fibonacci_keccak/public_input.cairo index cb3a2ae64..7f280a843 100644 --- a/src/tests/stone_proof_fibonacci_keccak/public_input.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/public_input.cairo @@ -1,4 +1,5 @@ -use integrity::air::{public_memory::AddrValue, public_input::{PublicInput, SegmentInfo},}; +use integrity::air::public_input::{PublicInput, SegmentInfo}; +use integrity::air::public_memory::AddrValue; fn get() -> PublicInput { return PublicInput { @@ -50,12 +51,12 @@ fn get() -> PublicInput { AddrValue { address: 0x1e, value: 0x482680017ffd8000 }, AddrValue { address: 0x1f, - value: 0x800000000000011000000000000000000000000000000000000000000000000 + value: 0x800000000000011000000000000000000000000000000000000000000000000, }, AddrValue { address: 0x20, value: 0x1104800180018000 }, AddrValue { address: 0x21, - value: 0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff9 + value: 0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff9, }, AddrValue { address: 0x22, value: 0x208b7fff7fff7ffe }, AddrValue { address: 0x23, value: 0x25 }, diff --git a/src/tests/stone_proof_fibonacci_keccak/queries.cairo b/src/tests/stone_proof_fibonacci_keccak/queries.cairo index 149f823ca..b994944dd 100644 --- a/src/tests/stone_proof_fibonacci_keccak/queries.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/queries.cairo @@ -1,5 +1,5 @@ fn get() -> Array { return array![ - 0x3982a, 0x52d42, 0x585a8, 0x7c3cc, 0x8af7f, 0x8e6f3, 0x97846, 0x9e330, 0xa9b57, 0xfa009 + 0x3982a, 0x52d42, 0x585a8, 0x7c3cc, 0x8af7f, 0x8e6f3, 0x97846, 0x9e330, 0xa9b57, 0xfa009, ]; } diff --git a/src/tests/stone_proof_fibonacci_keccak/stark/commitment.cairo b/src/tests/stone_proof_fibonacci_keccak/stark/commitment.cairo index ab871b018..cf2ea3b55 100644 --- a/src/tests/stone_proof_fibonacci_keccak/stark/commitment.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/stark/commitment.cairo @@ -1,9 +1,7 @@ -use integrity::{ - stark::StarkCommitment, - table_commitment::table_commitment::{TableCommitmentConfig, TableCommitment}, - vector_commitment::vector_commitment::{VectorCommitmentConfig, VectorCommitment}, - tests::stone_proof_fibonacci_keccak, -}; +use integrity::stark::StarkCommitment; +use integrity::table_commitment::table_commitment::{TableCommitment, TableCommitmentConfig}; +use integrity::tests::stone_proof_fibonacci_keccak; +use integrity::vector_commitment::vector_commitment::{VectorCommitment, VectorCommitmentConfig}; fn get() -> StarkCommitment { return StarkCommitment { @@ -159,7 +157,7 @@ fn get() -> StarkCommitment { 0x6dcf7f9d643754dde755f59b7e99d23fa8fe3873081d61cef76746e42f2c2bf, 0x2fb76d734073db3e5f46085ec5058f02ccab70d70c31508c22e659ed00337ae, 0x75bcd848a595eeed1e03977dd35f052ebf6a15306961e4fc57670916663e15e, - 0x7a702a902f300a47fb79f18195691f2f1cd57fa870b6d4e12d365ed59231506 + 0x7a702a902f300a47fb79f18195691f2f1cd57fa870b6d4e12d365ed59231506, ] .span(), fri: stone_proof_fibonacci_keccak::fri::commitment::get(), diff --git a/src/tests/stone_proof_fibonacci_keccak/stark/config.cairo b/src/tests/stone_proof_fibonacci_keccak/stark/config.cairo index 8ed5b6505..1f1c35897 100644 --- a/src/tests/stone_proof_fibonacci_keccak/stark/config.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/stark/config.cairo @@ -1,8 +1,7 @@ -use integrity::{ - stark::StarkConfig, table_commitment::table_commitment::TableCommitmentConfig, - vector_commitment::vector_commitment::VectorCommitmentConfig, - tests::stone_proof_fibonacci_keccak, -}; +use integrity::stark::StarkConfig; +use integrity::table_commitment::table_commitment::TableCommitmentConfig; +use integrity::tests::stone_proof_fibonacci_keccak; +use integrity::vector_commitment::vector_commitment::VectorCommitmentConfig; fn get() -> StarkConfig { return StarkConfig { diff --git a/src/tests/stone_proof_fibonacci_keccak/stark/unsent_commitment.cairo b/src/tests/stone_proof_fibonacci_keccak/stark/unsent_commitment.cairo index add681d80..3382ec7aa 100644 --- a/src/tests/stone_proof_fibonacci_keccak/stark/unsent_commitment.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/stark/unsent_commitment.cairo @@ -1,4 +1,5 @@ -use integrity::{stark::StarkUnsentCommitment, tests::stone_proof_fibonacci_keccak}; +use integrity::stark::StarkUnsentCommitment; +use integrity::tests::stone_proof_fibonacci_keccak; fn get() -> StarkUnsentCommitment { return StarkUnsentCommitment { diff --git a/src/tests/stone_proof_fibonacci_keccak/stark/witness.cairo b/src/tests/stone_proof_fibonacci_keccak/stark/witness.cairo index 8f89f679c..3bc2dad90 100644 --- a/src/tests/stone_proof_fibonacci_keccak/stark/witness.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/stark/witness.cairo @@ -1,9 +1,7 @@ -use integrity::{ - stark::StarkWitness, - table_commitment::table_commitment::{TableCommitmentWitness, TableDecommitment}, - vector_commitment::vector_commitment::VectorCommitmentWitness, - tests::stone_proof_fibonacci_keccak, -}; +use integrity::stark::StarkWitness; +use integrity::table_commitment::table_commitment::{TableCommitmentWitness, TableDecommitment}; +use integrity::tests::stone_proof_fibonacci_keccak; +use integrity::vector_commitment::vector_commitment::VectorCommitmentWitness; fn get() -> StarkWitness { return StarkWitness { @@ -30,9 +28,9 @@ fn get() -> StarkWitness { 0x6b90ce41d9581f9cd6f59e3853d27731d1413e134bf4e460984d2069125444b, 0x76033ecf0736a2871bd443651416ff0cadc0766d211e5664f3a0615e2934b5f, 0x121f3f91e17d3331df67d77b6f81c288b538c382d1751d6f81b2fbe247c1470, - 0x18b1e78ed8bad85ab8eb8d5182462144bcce5da7385c14433a5f217b5bf7ef + 0x18b1e78ed8bad85ab8eb8d5182462144bcce5da7385c14433a5f217b5bf7ef, ] - .span() + .span(), }, composition_witness: TableCommitmentWitness { vector: VectorCommitmentWitness { @@ -196,10 +194,10 @@ fn get() -> StarkWitness { 0x357e35aad82d57c34cbbd8b70df26fd403d0ee0198e6bf1d10218cfa5bb874d, 0x68fa850803cebb815a363eae319a6068e915ca61653a2672387b7e63c299a6d, 0x4222a4a1d42276570fefd7dde277e64c2c064480d2bca726920fd9dcb27e755, - 0x52d152c87e6520b614e7851b8ee820b87aa9e1bcffa93f75191122822b9a1eb + 0x52d152c87e6520b614e7851b8ee820b87aa9e1bcffa93f75191122822b9a1eb, ] - .span() - } + .span(), + }, }, fri_witness: stone_proof_fibonacci_keccak::fri::witness::get(), }; diff --git a/src/tests/stone_proof_fibonacci_keccak/traces/commitment.cairo b/src/tests/stone_proof_fibonacci_keccak/traces/commitment.cairo index 3aca05dfa..e883527b0 100644 --- a/src/tests/stone_proof_fibonacci_keccak/traces/commitment.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/traces/commitment.cairo @@ -1,9 +1,8 @@ -use integrity::{ - air::layouts::recursive::{traces::TracesCommitment, global_values::InteractionElements}, - table_commitment::table_commitment::TableCommitment, - vector_commitment::vector_commitment::{VectorCommitmentConfig, VectorCommitment}, - tests::stone_proof_fibonacci_keccak, -}; +use integrity::air::layouts::recursive::global_values::InteractionElements; +use integrity::air::layouts::recursive::traces::TracesCommitment; +use integrity::table_commitment::table_commitment::TableCommitment; +use integrity::tests::stone_proof_fibonacci_keccak; +use integrity::vector_commitment::vector_commitment::{VectorCommitment, VectorCommitmentConfig}; fn get() -> TracesCommitment { let unsent_commitment = stone_proof_fibonacci_keccak::traces::unsent_commitment::get(); @@ -14,7 +13,7 @@ fn get() -> TracesCommitment { config: traces_config.original, vector_commitment: VectorCommitment { config: VectorCommitmentConfig { - height: 0x14, n_verifier_friendly_commitment_layers: 0x64 + height: 0x14, n_verifier_friendly_commitment_layers: 0x64, }, commitment_hash: unsent_commitment.original, }, @@ -24,7 +23,7 @@ fn get() -> TracesCommitment { config: traces_config.interaction, vector_commitment: VectorCommitment { config: VectorCommitmentConfig { - height: 0x14, n_verifier_friendly_commitment_layers: 0x64 + height: 0x14, n_verifier_friendly_commitment_layers: 0x64, }, commitment_hash: unsent_commitment.interaction, }, diff --git a/src/tests/stone_proof_fibonacci_keccak/traces/config.cairo b/src/tests/stone_proof_fibonacci_keccak/traces/config.cairo index ea102613c..dded4042c 100644 --- a/src/tests/stone_proof_fibonacci_keccak/traces/config.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/traces/config.cairo @@ -1,21 +1,19 @@ -use integrity::{ - air::layouts::recursive::traces::TracesConfig, - table_commitment::table_commitment::TableCommitmentConfig, - vector_commitment::vector_commitment::VectorCommitmentConfig, -}; +use integrity::air::layouts::recursive::traces::TracesConfig; +use integrity::table_commitment::table_commitment::TableCommitmentConfig; +use integrity::vector_commitment::vector_commitment::VectorCommitmentConfig; fn get() -> TracesConfig { return TracesConfig { original: TableCommitmentConfig { n_columns: 0x7, vector: VectorCommitmentConfig { - height: 0x14, n_verifier_friendly_commitment_layers: 0x64 + height: 0x14, n_verifier_friendly_commitment_layers: 0x64, }, }, interaction: TableCommitmentConfig { n_columns: 0x3, vector: VectorCommitmentConfig { - height: 0x14, n_verifier_friendly_commitment_layers: 0x64 + height: 0x14, n_verifier_friendly_commitment_layers: 0x64, }, }, }; diff --git a/src/tests/stone_proof_fibonacci_keccak/traces/decommitment.cairo b/src/tests/stone_proof_fibonacci_keccak/traces/decommitment.cairo index e4d3420dd..9a016ac44 100644 --- a/src/tests/stone_proof_fibonacci_keccak/traces/decommitment.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/traces/decommitment.cairo @@ -1,7 +1,5 @@ -use integrity::{ - air::layouts::recursive::traces::TracesDecommitment, - table_commitment::table_commitment::TableDecommitment, -}; +use integrity::air::layouts::recursive::traces::TracesDecommitment; +use integrity::table_commitment::table_commitment::TableDecommitment; fn get() -> TracesDecommitment { return TracesDecommitment { @@ -76,7 +74,7 @@ fn get() -> TracesDecommitment { 0x713272f23405a27a0c8f46705f8c8e8f18286f1b368baace6654e788b437a85, 0x52dd724126aa589695a807016b3a030f66d035f58ceda4675b08e6eb700e362, 0x425606a0d129d87548a4315c0548decbc6f1ecd3f76a9b6bf77fbb859e6cf47, - 0x61e378adc06e8c25707453f902a88a58320f383024acb6e8766faad2dae72a4 + 0x61e378adc06e8c25707453f902a88a58320f383024acb6e8766faad2dae72a4, ] .span(), }, @@ -111,7 +109,7 @@ fn get() -> TracesDecommitment { 0x60ad0242b3f839ce26a48fab179628f81a02768082dfb09c48db6e44e6dd111, 0x1feaa9ecc39d6ad84bc3bb79327b39731545e636ee2ca7ace1677cb8b1f6887, 0x6cab97e59dae1d257f420aea18b44d84d40cc76cc6bbf81bb4307f5e28c88af, - 0x461c77600d1fee552f0b2ae8cb786c17c02360bcde0c1b2c568590792af759c + 0x461c77600d1fee552f0b2ae8cb786c17c02360bcde0c1b2c568590792af759c, ] .span(), }, diff --git a/src/tests/stone_proof_fibonacci_keccak/traces/witness.cairo b/src/tests/stone_proof_fibonacci_keccak/traces/witness.cairo index 81c544025..265da8fdb 100644 --- a/src/tests/stone_proof_fibonacci_keccak/traces/witness.cairo +++ b/src/tests/stone_proof_fibonacci_keccak/traces/witness.cairo @@ -1,8 +1,7 @@ -use integrity::{ - air::layouts::recursive::traces::TracesWitness, - table_commitment::table_commitment::TableCommitmentWitness, - vector_commitment::vector_commitment::VectorCommitmentWitness, tests::stone_proof_fibonacci, -}; +use integrity::air::layouts::recursive::traces::TracesWitness; +use integrity::table_commitment::table_commitment::TableCommitmentWitness; +use integrity::tests::stone_proof_fibonacci; +use integrity::vector_commitment::vector_commitment::VectorCommitmentWitness; fn get() -> TracesWitness { return TracesWitness { @@ -168,7 +167,7 @@ fn get() -> TracesWitness { 0x24f4240ff5bd7d57ca965cff4cac11c302a3b00c7403e34c41c616af94c3c24, 0x72a01166e63162a7acb698f5d52b18a8ca5ae4ec2f8f46eeb11846986d95c6b, 0x2a1f13ceea256bb43e72aff3f9cfcf945e1b7d8fd787e49162e944470d81804, - 0x3a30fc5f86d8991365c4b32a67a38acf28b8a4a6db00ae0a2fd9b7dd6da2df6 + 0x3a30fc5f86d8991365c4b32a67a38acf28b8a4a6db00ae0a2fd9b7dd6da2df6, ] .span(), }, @@ -335,7 +334,7 @@ fn get() -> TracesWitness { 0x79c5ef984a8e33b3ccd3539ef8d73f4617363cc93fbe909d088e0943749c795, 0x72f53cc49512032ed82e1a53aa5ab61f94b540404327fc433f752ee75247594, 0x724a99ba8eeb2811abed127c86b74ed92e051812cd58e4ea4a15f709d29b850, - 0x39ba80681bf41d02a2af546a30ca8a2c22386d2c3059006da659f8a5ef4c917 + 0x39ba80681bf41d02a2af546a30ca8a2c22386d2c3059006da659f8a5ef4c917, ] .span(), }, diff --git a/src/vector_commitment.cairo b/src/vector_commitment.cairo index 7e849d7cd..7ba9dba52 100644 --- a/src/vector_commitment.cairo +++ b/src/vector_commitment.cairo @@ -1,4 +1,3 @@ -mod vector_commitment; - #[cfg(test)] mod tests; +mod vector_commitment; diff --git a/src/vector_commitment/tests/test_vector_commitment_commit.cairo b/src/vector_commitment/tests/test_vector_commitment_commit.cairo index 3bde7e816..394b0b82a 100644 --- a/src/vector_commitment/tests/test_vector_commitment_commit.cairo +++ b/src/vector_commitment/tests/test_vector_commitment_commit.cairo @@ -1,13 +1,13 @@ -use integrity::{ - channel::channel::{Channel, ChannelTrait}, - vector_commitment::vector_commitment::{VectorCommitmentConfig, vector_commit, VectorCommitment} +use integrity::channel::channel::{Channel, ChannelTrait}; +use integrity::vector_commitment::vector_commitment::{ + VectorCommitment, VectorCommitmentConfig, vector_commit, }; #[test] #[available_gas(9999999999)] fn test_vector_commit() { let mut channel = ChannelTrait::new_with_counter( - 0x1b9182dce9dc1169fcd00c1f8c0b6acd6baad99ce578370ead5ca230b8fb8c6, 0x1 + 0x1b9182dce9dc1169fcd00c1f8c0b6acd6baad99ce578370ead5ca230b8fb8c6, 0x1, ); let unsent_commitment = 0x1e9b0fa29ebe52b9c9a43a1d44e555ce42da3199370134d758735bfe9f40269; @@ -18,14 +18,14 @@ fn test_vector_commit() { assert( vector_commit( - ref channel, unsent_commitment, config + ref channel, unsent_commitment, config, ) == VectorCommitment { config: config, commitment_hash: unsent_commitment }, - 'Invalid value' + 'Invalid value', ); assert( channel.digest == 0x1abd607dab09dede570ed131d9df0a1997e33735b11933c45dc84353df84259, - 'Invalid value' + 'Invalid value', ); assert(channel.counter == 0x0, 'Invalid value'); } diff --git a/src/vector_commitment/tests/test_vector_commitment_decommit.cairo b/src/vector_commitment/tests/test_vector_commitment_decommit.cairo index 6742c83b6..d57f8a057 100644 --- a/src/vector_commitment/tests/test_vector_commitment_decommit.cairo +++ b/src/vector_commitment/tests/test_vector_commitment_decommit.cairo @@ -1,9 +1,7 @@ -use integrity::{ - vector_commitment::vector_commitment::{ - VectorCommitment, VectorCommitmentConfig, VectorCommitmentWitness, vector_commit, - VectorQuery, vector_commitment_decommit, - }, - settings::{VerifierSettings, HasherBitLength, StoneVersion}, +use integrity::settings::{HasherBitLength, StoneVersion, VerifierSettings}; +use integrity::vector_commitment::vector_commitment::{ + VectorCommitment, VectorCommitmentConfig, VectorCommitmentWitness, VectorQuery, vector_commit, + vector_commitment_decommit, }; #[cfg(feature: 'blake2s')] @@ -11,42 +9,40 @@ use integrity::{ #[available_gas(9999999999)] fn test_vector_commitment_decommit_1() { let commitment = VectorCommitment { - config: VectorCommitmentConfig { - height: 0x9, n_verifier_friendly_commitment_layers: 0x64, - }, - commitment_hash: 0x1e9b0fa29ebe52b9c9a43a1d44e555ce42da3199370134d758735bfe9f40269 + config: VectorCommitmentConfig { height: 0x9, n_verifier_friendly_commitment_layers: 0x64 }, + commitment_hash: 0x1e9b0fa29ebe52b9c9a43a1d44e555ce42da3199370134d758735bfe9f40269, }; let queries = array![ VectorQuery { - index: 0x73, value: 0x12346ea425a6aebc8c323a401410cc325aabaf99b54e600a7271f146488aa2d + index: 0x73, value: 0x12346ea425a6aebc8c323a401410cc325aabaf99b54e600a7271f146488aa2d, }, VectorQuery { - index: 0xa5, value: 0x1aabe006a27bfa5f93bde192ff552adbef87058e62546c831ed14ce94866ac1 + index: 0xa5, value: 0x1aabe006a27bfa5f93bde192ff552adbef87058e62546c831ed14ce94866ac1, }, VectorQuery { - index: 0xb0, value: 0x7205a2b5f5f403b8053b4e4ac65e2a484c007f6d118524fe28b7cdf2a56bb8a + index: 0xb0, value: 0x7205a2b5f5f403b8053b4e4ac65e2a484c007f6d118524fe28b7cdf2a56bb8a, }, VectorQuery { - index: 0xf8, value: 0x5d49462d844a3f203c59d39fa005cbe153c78e6ac831987f19c0d6dfae38fad + index: 0xf8, value: 0x5d49462d844a3f203c59d39fa005cbe153c78e6ac831987f19c0d6dfae38fad, }, VectorQuery { - index: 0x115, value: 0x53d21587a9cb08d1b9402a4b8c2a9d37942b26963936200fea3122eaaf870b1 + index: 0x115, value: 0x53d21587a9cb08d1b9402a4b8c2a9d37942b26963936200fea3122eaaf870b1, }, VectorQuery { - index: 0x11c, value: 0x7c3355a75f6b36a95068b68d48e7539cd97531b7478e2cf7d2dc85b32bafc66 + index: 0x11c, value: 0x7c3355a75f6b36a95068b68d48e7539cd97531b7478e2cf7d2dc85b32bafc66, }, VectorQuery { - index: 0x12f, value: 0xb6f3a522577229ac26f12df90daaf376afbd960ee4b0ab07f270bf9c5da56a + index: 0x12f, value: 0xb6f3a522577229ac26f12df90daaf376afbd960ee4b0ab07f270bf9c5da56a, }, VectorQuery { - index: 0x13c, value: 0x174cfc44eb57da0eda6ae9407db71c5144940f05ef51f858bc8e229d15703e2 + index: 0x13c, value: 0x174cfc44eb57da0eda6ae9407db71c5144940f05ef51f858bc8e229d15703e2, }, VectorQuery { - index: 0x153, value: 0x2220da78b33e155482bdf0534dc30fc17fe059a7b9e30f710ee2681a8151484 + index: 0x153, value: 0x2220da78b33e155482bdf0534dc30fc17fe059a7b9e30f710ee2681a8151484, }, VectorQuery { - index: 0x1f4, value: 0x566b71a4f84556a3816d911c5dfb45f75cc962d9829acd0dd56e81517cc73b8 + index: 0x1f4, value: 0x566b71a4f84556a3816d911c5dfb45f75cc962d9829acd0dd56e81517cc73b8, }, ] .span(); @@ -102,7 +98,7 @@ fn test_vector_commitment_decommit_1() { 0x1da36b1fb01d0470d48c3eb4c92263eadb7b58c8829f2ee77e3287a6e39c902, 0x78dac96e95e86f83b4a426bd0505d84b5ea967822d0fca9f3bd28331164d94b, 0x1d50c82e363d8e7fa2641c9f2137b99832372d1879a2ee02b2c824a4cb620dd, - 0x2fd5a64db6093c9efda84ba327a43043e41310626073e58331c9f2f9f2db20f + 0x2fd5a64db6093c9efda84ba327a43043e41310626073e58331c9f2f9f2db20f, ] .span(), }; @@ -120,42 +116,40 @@ fn test_vector_commitment_decommit_1() { #[available_gas(9999999999)] fn test_vector_commitment_decommit() { let commitment = VectorCommitment { - config: VectorCommitmentConfig { - height: 0x9, n_verifier_friendly_commitment_layers: 0x64, - }, - commitment_hash: 0x1e9b0fa29ebe52b9c9a43a1d44e555ce42da3199370134d758735bfe9f40269 + config: VectorCommitmentConfig { height: 0x9, n_verifier_friendly_commitment_layers: 0x64 }, + commitment_hash: 0x1e9b0fa29ebe52b9c9a43a1d44e555ce42da3199370134d758735bfe9f40269, }; let queries = array![ VectorQuery { - index: 0x73, value: 0x12346ea425a6aebc8c323a401410cc325aabaf99b54e600a7271f146488aa2d + index: 0x73, value: 0x12346ea425a6aebc8c323a401410cc325aabaf99b54e600a7271f146488aa2d, }, VectorQuery { - index: 0xa5, value: 0x1aabe006a27bfa5f93bde192ff552adbef87058e62546c831ed14ce94866ac1 + index: 0xa5, value: 0x1aabe006a27bfa5f93bde192ff552adbef87058e62546c831ed14ce94866ac1, }, VectorQuery { - index: 0xb0, value: 0x7205a2b5f5f403b8053b4e4ac65e2a484c007f6d118524fe28b7cdf2a56bb8a + index: 0xb0, value: 0x7205a2b5f5f403b8053b4e4ac65e2a484c007f6d118524fe28b7cdf2a56bb8a, }, VectorQuery { - index: 0xf8, value: 0x5d49462d844a3f203c59d39fa005cbe153c78e6ac831987f19c0d6dfae38fad + index: 0xf8, value: 0x5d49462d844a3f203c59d39fa005cbe153c78e6ac831987f19c0d6dfae38fad, }, VectorQuery { - index: 0x115, value: 0x53d21587a9cb08d1b9402a4b8c2a9d37942b26963936200fea3122eaaf870b1 + index: 0x115, value: 0x53d21587a9cb08d1b9402a4b8c2a9d37942b26963936200fea3122eaaf870b1, }, VectorQuery { - index: 0x11c, value: 0x7c3355a75f6b36a95068b68d48e7539cd97531b7478e2cf7d2dc85b32bafc66 + index: 0x11c, value: 0x7c3355a75f6b36a95068b68d48e7539cd97531b7478e2cf7d2dc85b32bafc66, }, VectorQuery { - index: 0x12f, value: 0xb6f3a522577229ac26f12df90daaf376afbd960ee4b0ab07f270bf9c5da56a + index: 0x12f, value: 0xb6f3a522577229ac26f12df90daaf376afbd960ee4b0ab07f270bf9c5da56a, }, VectorQuery { - index: 0x13c, value: 0x174cfc44eb57da0eda6ae9407db71c5144940f05ef51f858bc8e229d15703e2 + index: 0x13c, value: 0x174cfc44eb57da0eda6ae9407db71c5144940f05ef51f858bc8e229d15703e2, }, VectorQuery { - index: 0x153, value: 0x2220da78b33e155482bdf0534dc30fc17fe059a7b9e30f710ee2681a8151484 + index: 0x153, value: 0x2220da78b33e155482bdf0534dc30fc17fe059a7b9e30f710ee2681a8151484, }, VectorQuery { - index: 0x1f4, value: 0x566b71a4f84556a3816d911c5dfb45f75cc962d9829acd0dd56e81517cc73b8 + index: 0x1f4, value: 0x566b71a4f84556a3816d911c5dfb45f75cc962d9829acd0dd56e81517cc73b8, }, ] .span(); @@ -211,7 +205,7 @@ fn test_vector_commitment_decommit() { 0x1da36b1fb01d0470d48c3eb4c92263eadb7b58c8829f2ee77e3287a6e39c902, 0x78dac96e95e86f83b4a426bd0505d84b5ea967822d0fca9f3bd28331164d94b, 0x1d50c82e363d8e7fa2641c9f2137b99832372d1879a2ee02b2c824a4cb620dd, - 0x2fd5a64db6093c9efda84ba327a43043e41310626073e58331c9f2f9f2db20f + 0x2fd5a64db6093c9efda84ba327a43043e41310626073e58331c9f2f9f2db20f, ] .span(), }; diff --git a/src/vector_commitment/tests/test_vector_commitment_validate.cairo b/src/vector_commitment/tests/test_vector_commitment_validate.cairo index 3e4916d43..22670680e 100644 --- a/src/vector_commitment/tests/test_vector_commitment_validate.cairo +++ b/src/vector_commitment/tests/test_vector_commitment_validate.cairo @@ -1,29 +1,27 @@ -use integrity::{ - channel::channel::Channel, - vector_commitment::vector_commitment::{ - VectorCommitment, VectorCommitmentConfig, vector_commit, VectorCommitmentConfigTrait - } +use integrity::channel::channel::Channel; +use integrity::vector_commitment::vector_commitment::{ + VectorCommitment, VectorCommitmentConfig, VectorCommitmentConfigTrait, vector_commit, }; #[test] #[available_gas(9999999999)] fn test_validate_vector_commitment() { - let config = VectorCommitmentConfig { height: 21, n_verifier_friendly_commitment_layers: 7, }; + let config = VectorCommitmentConfig { height: 21, n_verifier_friendly_commitment_layers: 7 }; config.validate(21, 7); } #[test] -#[should_panic] +#[should_panic(expected: 'n_verifier_friendly mismatch')] #[available_gas(9999999999)] fn test_invalid_validate_vector_commitment_1() { - let config = VectorCommitmentConfig { height: 21, n_verifier_friendly_commitment_layers: 7, }; + let config = VectorCommitmentConfig { height: 21, n_verifier_friendly_commitment_layers: 7 }; config.validate(21, 8); } #[test] -#[should_panic] +#[should_panic(expected: 'height mismatch')] #[available_gas(9999999999)] fn test_invalid_validate_vector_commitment_2() { - let config = VectorCommitmentConfig { height: 21, n_verifier_friendly_commitment_layers: 7, }; + let config = VectorCommitmentConfig { height: 21, n_verifier_friendly_commitment_layers: 7 }; config.validate(22, 7); } diff --git a/src/vector_commitment/vector_commitment.cairo b/src/vector_commitment/vector_commitment.cairo index 3e74f0446..52212b5e8 100644 --- a/src/vector_commitment/vector_commitment.cairo +++ b/src/vector_commitment/vector_commitment.cairo @@ -1,17 +1,15 @@ -use integrity::{ - common::{ - array_append::ArrayAppendTrait, math::pow, hasher::hash_truncated, math::DivRemFelt252, - math::Felt252PartialOrd, - }, - channel::channel::{Channel, ChannelImpl}, settings::VerifierSettings, -}; +use integrity::channel::channel::{Channel, ChannelImpl}; +use integrity::common::array_append::ArrayAppendTrait; +use integrity::common::hasher::hash_truncated; +use integrity::common::math::{DivRemFelt252, Felt252PartialOrd, pow}; +use integrity::settings::VerifierSettings; use poseidon::hades_permutation; // Commitment for a vector of field elements. #[derive(Drop, Copy, PartialEq, Serde)] struct VectorCommitment { config: VectorCommitmentConfig, - commitment_hash: felt252 + commitment_hash: felt252, } #[derive(Drop, Copy, PartialEq, Serde)] @@ -32,7 +30,7 @@ impl VectorCommitmentConfigImpl of VectorCommitmentConfigTrait { // case, all Merkle layers use the verifier-friendly hash). assert( *self.n_verifier_friendly_commitment_layers == n_verifier_friendly_commitment_layers, - 'n_verifier_friendly mismatch' + 'n_verifier_friendly mismatch', ); } } @@ -61,10 +59,10 @@ struct VectorCommitmentWitness { } fn vector_commit( - ref channel: Channel, unsent_commitment: felt252, config: VectorCommitmentConfig + ref channel: Channel, unsent_commitment: felt252, config: VectorCommitmentConfig, ) -> VectorCommitment { channel.read_felt_from_prover(unsent_commitment); // commitment is being sent - VectorCommitment { config: config, commitment_hash: unsent_commitment, } + VectorCommitment { config: config, commitment_hash: unsent_commitment } } // Decommits a VectorCommitment at multiple indices. @@ -73,7 +71,7 @@ fn vector_commitment_decommit( commitment: VectorCommitment, queries: Span, witness: VectorCommitmentWitness, - settings: @VerifierSettings + settings: @VerifierSettings, ) { let shift = pow(2, commitment.config.height); let shifted_queries = shift_queries(queries, shift, commitment.config.height); @@ -84,7 +82,7 @@ fn vector_commitment_decommit( commitment.config.n_verifier_friendly_commitment_layers, witness.authentications, 0, - settings + settings, ); assert(expected_commitment == commitment.commitment_hash, 'decommitment failed'); @@ -99,7 +97,7 @@ fn compute_root_from_queries( n_verifier_friendly_layers: felt252, authentications: Span, auth_start: u32, - settings: @VerifierSettings + settings: @VerifierSettings, ) -> felt252 { let current: VectorQueryWithDepth = *queue[start]; @@ -118,13 +116,13 @@ fn compute_root_from_queries( if current.index + 1 == next.index { // next is a sibling of current let hash = hash_blake_or_poseidon( - current.value, next.value, is_verifier_friendly, settings + current.value, next.value, is_verifier_friendly, settings, ); queue .append( VectorQueryWithDepth { index: parent, value: hash, depth: current.depth - 1, - } + }, ); return compute_root_from_queries( queue, @@ -132,30 +130,30 @@ fn compute_root_from_queries( n_verifier_friendly_layers, authentications, auth_start, - settings + settings, ); } } assert(auth_start != authentications.len(), 'authentications is too short'); hash_blake_or_poseidon( - current.value, *authentications[auth_start], is_verifier_friendly, settings + current.value, *authentications[auth_start], is_verifier_friendly, settings, ) } else { assert(auth_start != authentications.len(), 'authentications is too short'); hash_blake_or_poseidon( - *authentications[auth_start], current.value, is_verifier_friendly, settings + *authentications[auth_start], current.value, is_verifier_friendly, settings, ) }; - queue.append(VectorQueryWithDepth { index: parent, value: hash, depth: current.depth - 1, }); + queue.append(VectorQueryWithDepth { index: parent, value: hash, depth: current.depth - 1 }); compute_root_from_queries( - queue, start + 1, n_verifier_friendly_layers, authentications, auth_start + 1, settings + queue, start + 1, n_verifier_friendly_layers, authentications, auth_start + 1, settings, ) } // Shifts the query indices by shift=2**height, to convert index representation to heap-like. // Validates the query index range. fn shift_queries( - mut queries: Span, shift: felt252, height: felt252 + mut queries: Span, shift: felt252, height: felt252, ) -> Array { let mut shifted_queries = ArrayTrait::new(); loop { @@ -165,17 +163,17 @@ fn shift_queries( .append( VectorQueryWithDepth { index: *query.index + shift, value: *query.value, depth: height, - } + }, ); }, - Option::None => { break; } + Option::None => { break; }, } - }; + } shifted_queries } fn hash_blake_or_poseidon( - x: felt252, y: felt252, is_verifier_friendly: bool, settings: @VerifierSettings + x: felt252, y: felt252, is_verifier_friendly: bool, settings: @VerifierSettings, ) -> felt252 { if is_verifier_friendly { let (hash, _, _) = hades_permutation(x, y, 2);