From cbe9b7a94eeb6b519d120dd138a5f232f8573564 Mon Sep 17 00:00:00 2001 From: larraia Date: Fri, 4 Jul 2025 16:01:36 +0200 Subject: [PATCH] proof aggregation --- Cargo.lock | 54 +++- README.md | 70 ++++- arm/Cargo.toml | 5 + arm/elfs/batch_aggregation.bin | Bin 0 -> 328752 bytes arm/elfs/sequential_aggregation.bin | Bin 0 -> 328412 bytes arm/src/action.rs | 25 +- arm/src/aggregation/batch.rs | 150 ++++++++++ arm/src/aggregation/constants.rs | 18 ++ arm/src/aggregation/mod.rs | 160 +++++++++++ arm/src/aggregation/pcd.rs | 268 ++++++++++++++++++ arm/src/aggregation/sequential.rs | 126 ++++++++ arm/src/compliance.rs | 11 + arm/src/compliance_unit.rs | 15 +- arm/src/hash.rs | 36 +++ arm/src/lib.rs | 6 +- arm/src/logic_proof.rs | 16 +- arm/src/tests.rs | 60 ++++ arm/src/transaction.rs | 83 ++++++ arm_circuits/Cargo.lock | 18 ++ arm_circuits/Cargo.toml | 2 +- arm_circuits/batch_aggregation/Cargo.toml | 14 + arm_circuits/batch_aggregation/README.md | 5 + .../batch_aggregation/methods/Cargo.toml | 10 + .../batch_aggregation/methods/build.rs | 3 + .../methods/guest/Cargo.toml | 10 + .../methods/guest/src/main.rs | 29 ++ .../batch_aggregation/methods/src/lib.rs | 1 + arm_circuits/batch_aggregation/src/main.rs | 54 ++++ arm_circuits/sequential_aggregation/README.md | 5 + .../sequential_aggregation/methods/Cargo.toml | 10 + .../sequential_aggregation/methods/build.rs | 3 + .../methods/guest/Cargo.toml | 10 + .../methods/guest/src/main.rs | 31 ++ .../sequential_aggregation/methods/src/lib.rs | 1 + 34 files changed, 1282 insertions(+), 27 deletions(-) create mode 100644 arm/elfs/batch_aggregation.bin create mode 100644 arm/elfs/sequential_aggregation.bin create mode 100644 arm/src/aggregation/batch.rs create mode 100644 arm/src/aggregation/constants.rs create mode 100644 arm/src/aggregation/mod.rs create mode 100644 arm/src/aggregation/pcd.rs create mode 100644 arm/src/aggregation/sequential.rs create mode 100644 arm/src/hash.rs create mode 100644 arm_circuits/batch_aggregation/Cargo.toml create mode 100644 arm_circuits/batch_aggregation/README.md create mode 100644 arm_circuits/batch_aggregation/methods/Cargo.toml create mode 100644 arm_circuits/batch_aggregation/methods/build.rs create mode 100644 arm_circuits/batch_aggregation/methods/guest/Cargo.toml create mode 100644 arm_circuits/batch_aggregation/methods/guest/src/main.rs create mode 100644 arm_circuits/batch_aggregation/methods/src/lib.rs create mode 100644 arm_circuits/batch_aggregation/src/main.rs create mode 100644 arm_circuits/sequential_aggregation/README.md create mode 100644 arm_circuits/sequential_aggregation/methods/Cargo.toml create mode 100644 arm_circuits/sequential_aggregation/methods/build.rs create mode 100644 arm_circuits/sequential_aggregation/methods/guest/Cargo.toml create mode 100644 arm_circuits/sequential_aggregation/methods/guest/src/main.rs create mode 100644 arm_circuits/sequential_aggregation/methods/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index b9b1494c..8d9991c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -612,6 +612,7 @@ dependencies = [ "risc0-zkvm", "rustler", "serde", + "serde_with", "sha3", "thiserror 2.0.12", ] @@ -1256,8 +1257,18 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -1274,13 +1285,38 @@ dependencies = [ "syn 2.0.103", ] +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.103", +] + [[package]] name = "darling_macro" version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core", + "darling_core 0.20.11", + "quote", + "syn 2.0.103", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core 0.21.3", "quote", "syn 2.0.103", ] @@ -1343,7 +1379,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ - "darling", + "darling 0.20.11", "proc-macro2", "quote", "syn 2.0.103", @@ -4506,9 +4542,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.14.0" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +checksum = "c522100790450cf78eeac1507263d0a350d4d5b30df0c8e1fe051a10c22b376e" dependencies = [ "base64", "chrono", @@ -4526,11 +4562,11 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.14.0" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +checksum = "327ada00f7d64abaac1e55a6911e90cf665aa051b9a561c7006c157f4633135e" dependencies = [ - "darling", + "darling 0.21.3", "proc-macro2", "quote", "syn 2.0.103", diff --git a/README.md b/README.md index cbd297b8..c309ef3e 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ This is a shielded resource machine implementation based on [Risc0-zkvm](https:/ - **`arm_circuits/`**: Demonstration circuits for arms and applications: - **compliance**: Basic compliance checking circuit - **trivial_logic**: Minimal logic circuit example, also used in padding resources + - **proof aggregation (batch_aggregation, sequential_aggregation)**: Circuits for single-run aggregation and IVC-based aggregation, respectively - **logic_test**: The logic circuit contains hardcoded data to cover all instance fields and is used only in tests - **counter**: The simple counter logic circuit - **kudo circuits(kudo_main, simple_kudo_denomination, simple_kudo_receive)**: kudo application circuits @@ -98,6 +99,10 @@ We have the following feature flags in arm lib: | `nif` | | Enables Erlang/Elixir NIF (Native Implemented Function) bindings | | `test_circuit` | | A simple circuit implementation for testing | | `test` | | Includes tx and action tests; some test APIs are available outside the arm lib(Binding lib and Elixir SDK). | +| `aggregation_circuit` | | A specific feature for (pcd-based) aggregation circuits | +| `aggregation` | `aggregation_circuit`, `transaction` | Enables proof aggregation (with constant-sized proofs by default) | +|`fast_aggregation` | `aggregation` | Faster aggregation with linear-sized proofs without compression +|`groth16_aggregation` | `aggregation` | Generates groth16 aggregation proofs (requires x86_64 machines) ### Usage Examples @@ -109,11 +114,18 @@ arm = "0.7.0" # Blockchain deployment with Groth16 proofs arm = { version = "0.7.0", default-features = false, features = ["groth16_prover", "transaction"] } +# Proof aggregation (a single succinct proof per transaction) +arm = { version = "0.7.0", features = ["aggregation"] } + +# Blockchain deployment with a Groth16 aggregation proof +arm = { version = "0.7.0", features = ["groth16_aggregation"] } + # Logic-circuit-only usage arm = { version = "0.7.0", default-features = false } # Elixir Anoma SDK arm = { version = "0.7.0", features = ["nif"] } +arm = { version = "0.7.0", features = ["nif"] } ``` @@ -140,4 +152,60 @@ arm-risc0/arm_circuits/compliance/methods/guest/target/riscv32im-risc0-zkvm-elf/ Note: The `unstable` feature of `risc0-zkvm` currently causes issues in circuits. This can be temporarily fixed by manually updating the tool. The problem will be fully resolved in the next release of RISC Zero. ```bash cargo install --force --git https://github.com/risc0/risc0 --tag v3.0.3 -Fexperimental cargo-risczero -``` \ No newline at end of file +``` + +## Proof aggregation +If a single transaction bundles too many resources, it is possible to aggregate all compliance and logic proofs into a single aggregation proof, attesting to the validity of them all. This reduces overall verification time and transaction size. + +### Before aggregation + Generate the transaction in the normal way in your workflow. But note that succinct proofs will yield faster aggregation. + + **Warning:** Bonsai does not support in-circuit verification of Groth16 proofs. You would need to generate succinct compliance and logic proofs instead. + + +### Prove and verify aggregations +You need to enable the `aggregation` feature to be able to prove or verify aggregations. + +The type of the aggregation proof is selected via a feature. It defaults to succinct stark proofs. For on-chain verification, you probably want to aggregate with the `groth16_aggregation` feature enabled. See the features table above for more information. + +We currently support two different aggregation strategies. The _batch_ strategy aggregates all proofs in the transaction in a single run. It is the default aggregation. + +```rust +use arm::transaction; + +let mut tx = generate_test_transaction(1); // Just a dummy tx, for illustration. + +// Upon succesful aggregation, compliance and resource logic proofs are erased. +assert!(tx.aggregate().is_ok()); +assert!(tx.verify_aggregation().is_ok()); +``` + +The _sequential_ strategy aggregates sequentially, in an IVC style. + +```rust +use arm::aggregation::AggregationStrategy; + +assert!(tx.aggregate_with_strategy(AggregationStrategy::Sequential).is_ok()); +``` + +**Warning:** Once again, aggregation erases all the individual proofs from `tx` and replaces them with the (single) aggregation proof in a dedicated field. This is why the transaction must be `mut`. This is true independently of the strategy used. + + +### External verification of the aggregation proof +Use + +```rust +tx.get_raw_aggregation_proof() +``` +to get the RISC0 `InnerReceipt` (the actual proof). The verifier would also need to derive the aggregation instance from `tx` on its own, and wrap both in a RISC0 `Receipt`. + +### Comparison + +**Strategy** | **Prover cost** | **Public input size** | **Aggregation scope** | **Memory efficient** +-------------|-----------------|-----------------------|-----------------------|---------------------- +**batch** | amortized among all tx proofs | linear in #{tx proofs} | fixed (single prover) | for RISC0 yes. In general, depends on the zkVM (if supports continuations) +**sequential** | linear in #{tx proofs} | constant | composable (different provers) | by design + +The sequential (IVC) strategy is an example of proof-carrying data computation. PCD-based aggregation can be distributed across mutually _untrusted_ nodes, and proofs to be aggregated arbitrarily grouped and arranged in different transcripts. + +**[TODO] Parallel proving at the ARM level.** It is possible with tree-like transcripts. Currently not supported, but [planned](https://github.com/anoma/arm-risc0/issues/112). \ No newline at end of file diff --git a/arm/Cargo.toml b/arm/Cargo.toml index 146c04fb..0a7cc243 100644 --- a/arm/Cargo.toml +++ b/arm/Cargo.toml @@ -9,6 +9,7 @@ edition = "2021" # If you want to try (experimental) std support, add `features = [ "std" ]` to risc0-zkvm risc0-zkvm = { version = "3.0.3", features = ["std", "unstable"], default-features = false } serde = { version = "1.0.197", default-features = false } +serde_with = "3.14.1" k256 = { version = "=0.13.3", features = ["arithmetic", "serde", "expose-field", "std", "ecdsa", "hash2curve"], default-features = false } sha3 = { version = "0.10", optional = true } rand = "0.8" @@ -36,3 +37,7 @@ client = ["risc0-zkvm/client"] cuda = ["risc0-zkvm/cuda"] test_circuit = [] test = ["transaction", "test_circuit"] +aggregation = ["aggregation_circuit","transaction"] +aggregation_circuit = [] +fast_aggregation = ["aggregation"] +groth16_aggregation = ["aggregation"] diff --git a/arm/elfs/batch_aggregation.bin b/arm/elfs/batch_aggregation.bin new file mode 100644 index 0000000000000000000000000000000000000000..cb1586c0d904a179c9282876ff1a97bb3d1b9234 GIT binary patch literal 328752 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 -C{*nc|aa27g^caCl73x2r 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

I#?92ZMW{?lVOa1tOJ~0yWXn7clwixq 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�fcLQ#VoZp`3fTUZt!L3L=pfOYWXm_c31R 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 nc(+15eX+Ys&L-$Q#fIGFM3cd>{+;>ws8-Y;v5 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�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 Hh423XXF`Mg literal 0 HcmV?d00001 diff --git a/arm/src/action.rs b/arm/src/action.rs index f5d15526..4fd0ef1c 100644 --- a/arm/src/action.rs +++ b/arm/src/action.rs @@ -38,10 +38,8 @@ impl Action { &self.logic_verifier_inputs } - pub fn verify(self) -> Result<(), ArmError> { - for unit in &self.compliance_units { - unit.verify()?; - } + pub(crate) fn get_logic_verifiers(&self) -> Result, ArmError> { + let mut logic_verifiers = Vec::new(); let compliance_intances = self .compliance_units @@ -61,7 +59,7 @@ impl Action { let action_tree = MerkleTree::from(tags.clone()); let root = action_tree.root(); - for input in self.logic_verifier_inputs { + for input in self.logic_verifier_inputs.iter() { if let Some(index) = tags.iter().position(|tag| *tag == input.tag) { if input.verifying_key != logics[index] { // The verifying_key doesn't match the resource logic @@ -69,13 +67,26 @@ impl Action { } let is_comsumed = index % 2 == 0; - let verifier = input.to_logic_verifier(is_comsumed, root)?; - verifier.verify()?; + let verifier = input.clone().to_logic_verifier(is_comsumed, root)?; + logic_verifiers.push(verifier); } else { return Err(ArmError::TagNotFound); } } + Ok(logic_verifiers) + } + + pub fn verify(self) -> Result<(), ArmError> { + for unit in &self.compliance_units { + unit.verify()?; + } + + let logic_verifiers = self.get_logic_verifiers()?; + for verifier in logic_verifiers.iter() { + verifier.verify()?; + } + Ok(()) } diff --git a/arm/src/aggregation/batch.rs b/arm/src/aggregation/batch.rs new file mode 100644 index 00000000..7e792f72 --- /dev/null +++ b/arm/src/aggregation/batch.rs @@ -0,0 +1,150 @@ +use risc0_zkvm::{default_prover, Digest, ExecutorEnv, Receipt, VerifierContext}; +use risc0_zkvm::{InnerReceipt, ProverOpts}; +use serde::{Deserialize, Serialize}; + +use crate::aggregation::{ + constants::{BATCH_AGGREGATION_PK, BATCH_AGGREGATION_VK}, + BatchCU, BatchLP, +}; +use crate::compliance::ComplianceInstanceWords; +use crate::constants::COMPLIANCE_VK; +use crate::error::ArmError; +use crate::transaction::Transaction; +use crate::utils::{bytes_to_words, words_to_bytes}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct BatchProof(pub InnerReceipt); + +/// Aggregates base proofs in batches. +pub struct BatchAggregation; + +impl BatchAggregation { + pub fn prove_transaction_aggregation(tx: &Transaction) -> Result { + // Collect instances, proofs, and keys. + let BatchCU { + instances: cu_instances, + receipts: cu_receipts, + } = tx.get_batch_cu(); + + let BatchLP { + instances: lp_instances, + keys: lp_keys, + receipts: lp_receipts, + } = tx.get_batch_lp()?; + + let mut cu_instances_u32: Vec = Vec::new(); + for ci in cu_instances.iter() { + cu_instances_u32.push(ComplianceInstanceWords { + u32_words: bytes_to_words(ci).try_into().map_err(|_| { + ArmError::ProveFailed( + "Error converting compliance instance into fixed-size u32 words".into(), + ) + })?, + }); + } + let lp_instances_u32: Vec> = lp_instances + .iter() + .map(|bytes| bytes_to_words(bytes)) + .collect(); + + let mut env_builder = ExecutorEnv::builder(); + + // Add proofs as assumptions + if let (Some(cu_receipts), Some(lp_receipts)) = (cu_receipts, lp_receipts) { + for receipt in cu_receipts.into_iter().chain(lp_receipts.into_iter()) { + env_builder.add_assumption(receipt); + } + } else { + return Err(ArmError::ProofVerificationFailed( + "Cannot aggregate: missing individual proof(s)".into(), + )); + } + + // Write instances and keys to guest input. + let compliance_key: Digest = *COMPLIANCE_VK; + let env = env_builder + .write(&cu_instances_u32) + .map_err(|_| ArmError::WriteWitnessFailed)? + .write(&compliance_key) + .map_err(|_| ArmError::WriteWitnessFailed)? + .write(&lp_instances_u32) + .map_err(|_| ArmError::WriteWitnessFailed)? + .write(&lp_keys) + .map_err(|_| ArmError::WriteWitnessFailed)? + .build() + .map_err(|_| ArmError::BuildProverEnvFailed)?; + + #[cfg(feature = "fast_aggregation")] + let prover_opts = ProverOpts::fast(); + + #[cfg(all(not(feature = "fast_aggregation"), feature = "groth16_aggregation"))] + let prover_opts = ProverOpts::groth16(); + + #[cfg(all( + not(feature = "fast_aggregation"), + not(feature = "groth16_aggregation") + ))] + let prover_opts = ProverOpts::succinct(); + + let prover = default_prover(); + + // Prove batch. + let receipt = prover + .prove_with_ctx( + env, + &VerifierContext::default(), + BATCH_AGGREGATION_PK, + &prover_opts, + ) + .map_err(|err| ArmError::ProveFailed(format!("Proof generation failed: {}", err)))? + .receipt; + + Ok(BatchProof(receipt.inner)) + } + + pub fn verify_transaction_aggregation( + tx: &Transaction, + proof: &BatchProof, + ) -> Result<(), ArmError> { + // Form the batch instance. + let BatchCU { + instances: compliance_instances, + receipts: _, + } = tx.get_batch_cu(); + let BatchLP { + instances: logic_instances, + keys: logic_keys, + receipts: _, + } = tx.get_batch_lp()?; + + let mut compliance_instances_u32: Vec = Vec::new(); + for ci in compliance_instances.iter() { + compliance_instances_u32.push(ComplianceInstanceWords { + u32_words: bytes_to_words(ci).try_into().map_err(|_| { + ArmError::ProofVerificationFailed( + "Error converting compliance instance into fixed-size u32 words".into(), + ) + })?, + }); + } + let logic_instances_u32: Vec> = logic_instances + .iter() + .map(|bytes| bytes_to_words(bytes)) + .collect(); + + let batch_instance = risc0_zkvm::serde::to_vec(&( + compliance_instances_u32, + *COMPLIANCE_VK, + logic_instances_u32, + logic_keys, + )) + .map_err(|_| ArmError::InstanceSerializationFailed)?; + + // Verify proof on the batch instance. + let receipt = Receipt::new(proof.0.clone(), words_to_bytes(&batch_instance).to_vec()); + + receipt.verify(*BATCH_AGGREGATION_VK).map_err(|err| { + ArmError::ProofVerificationFailed(format!("Proof verification failed: {}", err)) + }) + } +} diff --git a/arm/src/aggregation/constants.rs b/arm/src/aggregation/constants.rs new file mode 100644 index 00000000..38ac7128 --- /dev/null +++ b/arm/src/aggregation/constants.rs @@ -0,0 +1,18 @@ +use hex::FromHex; +use lazy_static::lazy_static; +use risc0_zkvm::Digest; + +// Sequential aggregation proving key / sequential aggregation guest ELF binary +pub const SEQUENTIAL_AGGREGATION_PK: &[u8] = + include_bytes!("../../elfs/sequential_aggregation.bin"); +// Batch aggregation proving key / batch aggregation guest ELF binary +pub const BATCH_AGGREGATION_PK: &[u8] = include_bytes!("../../elfs/batch_aggregation.bin"); + +lazy_static! { + // Sequential aggregation verification key / sequential aggregation image id. + pub static ref SEQUENTIAL_AGGREGATION_VK: Digest = + Digest::from_hex("4bca2e7a5569e148f6dcf933d78b3fbe52712bb7a8a0b1e2a189111a4f54c8f6").unwrap(); + + // Batch aggregation verification key / Batch aggregation image id. + pub static ref BATCH_AGGREGATION_VK: Digest = Digest::from_hex("a9c9a22ee9df47fd35ed2b319cd272c3f328a171ea04dab5e44ee15e33f5b9ce").unwrap(); +} diff --git a/arm/src/aggregation/mod.rs b/arm/src/aggregation/mod.rs new file mode 100644 index 00000000..b81821c2 --- /dev/null +++ b/arm/src/aggregation/mod.rs @@ -0,0 +1,160 @@ +use risc0_zkvm::{Digest, InnerReceipt, Receipt}; +use serde::{Deserialize, Serialize}; + +use crate::{ + aggregation::{batch::BatchProof, pcd::PcdProof}, + compliance_unit::ComplianceUnit, + error::ArmError, + logic_proof::LogicVerifier, + transaction::Transaction, +}; + +pub mod batch; +pub mod constants; +pub mod pcd; +pub mod sequential; + +/// Supported strategies to aggregate. +#[derive(Debug, Serialize, Deserialize, Clone)] +pub enum AggregationStrategy { + Sequential, + Batch, +} + +/// Aggregation proof discriminating by strategies. +#[derive(Debug, Clone, Deserialize, Serialize)] +pub enum AggregationProof { + /// A PCD-based aggregation proof generated with a sequential transcript. + Sequential(PcdProof), + /// A batch aggregation proof. + Batch(BatchProof), +} + +/// Holds the compliance instances, and compliance proofs (if all present) +/// of a transaction. +#[derive(Debug, Clone)] +pub(crate) struct BatchCU { + pub(crate) instances: Vec>, + pub(crate) receipts: Option>, +} + +/// Holds resource logic instances, keys, and proofs (if all present). +#[derive(Debug, Clone)] +pub(crate) struct BatchLP { + pub(crate) instances: Vec>, + pub(crate) keys: Vec, + pub(crate) receipts: Option>, +} + +impl Transaction { + fn get_batch_cu(&self) -> BatchCU { + let cus: Vec = self + .actions + .iter() + .flat_map(|a| a.get_compliance_units().clone()) + .collect(); + + let cu_instances: Vec> = cus.iter().map(|cu| cu.instance.clone()).collect(); + + let inner_receipts: Option> = if self.base_proofs_are_empty() { + None + } else { + let inner_receipts: Vec> = cus + .iter() + .map(|cu| { + let inner: Result = + bincode::deserialize(&cu.proof.clone().unwrap()); + inner + }) + .collect(); + let ir: Result, _> = inner_receipts.into_iter().collect(); + ir.ok() + }; + + match inner_receipts { + None => BatchCU { + instances: cu_instances, + receipts: None, + }, + Some(ir_vec) => { + let r: Vec = ir_vec + .into_iter() + .zip(cu_instances.clone()) + .map(|(ir, i)| Receipt::new(ir, i)) + .collect(); + + BatchCU { + instances: cu_instances, + receipts: Some(r), + } + } + } + } + + fn get_batch_lp(&self) -> Result { + let mut lps: Vec = Vec::new(); + + for action in self.actions.iter() { + let mut lp_vec: Vec = action.get_logic_verifiers()?; + lps.append(&mut lp_vec); + } + + let logic_instances: Vec> = lps.iter().map(|lp| lp.instance.clone()).collect(); + + let inner_receipts: Option> = if self.base_proofs_are_empty() { + None + } else { + let inner_receipts: Vec> = lps + .iter() + .map(|lp| { + let inner: Result = + bincode::deserialize(&lp.proof.clone().unwrap()); + inner + }) + .collect(); + let ir: Result, _> = inner_receipts.into_iter().collect(); + ir.ok() + }; + + let keys = lps.into_iter().map(|lp| lp.verifying_key).collect(); + + match inner_receipts { + None => Ok(BatchLP { + instances: logic_instances, + keys, + receipts: None, + }), + Some(ir_vec) => { + let r: Vec = ir_vec + .into_iter() + .zip(logic_instances.clone()) + .map(|(ir, i)| Receipt::new(ir, i)) + .collect(); + + let batch_lp = BatchLP { + instances: logic_instances, + keys, + receipts: Some(r), + }; + Ok(batch_lp) + } + } + } + + /// Returns `true` if any compliance or resource logic proof is `None`. + fn base_proofs_are_empty(&self) -> bool { + for a in self.actions.iter() { + if a.get_compliance_units().iter().any(|cu| cu.proof.is_none()) { + return true; + } + if a.get_logic_verifier_inputs() + .iter() + .any(|lp| lp.proof.is_none()) + { + return true; + } + } + + false + } +} diff --git a/arm/src/aggregation/pcd.rs b/arm/src/aggregation/pcd.rs new file mode 100644 index 00000000..ce8f29b3 --- /dev/null +++ b/arm/src/aggregation/pcd.rs @@ -0,0 +1,268 @@ +use crate::aggregation::{BatchCU, BatchLP}; +use crate::constants::COMPLIANCE_VK; +use crate::error::ArmError; +use crate::proving_system; +use crate::utils::words_to_bytes; +use crate::{compliance::ComplianceInstance, logic_instance::LogicInstance}; +use risc0_zkvm::{ + default_prover, Digest, ExecutorEnv, InnerReceipt, ProverOpts, Receipt, VerifierContext, +}; +use serde::{Deserialize, Serialize}; + +/// A trait to aggregate proofs across nodes. +/// +/// In PCD terminology the [StepInstance] and [StepProof] are +/// the local data of each node. The local data and the input +/// [PcdMessage]s form the witness of the aggregation program. +pub trait PCDAggregation { + /// Number of input aggregations (and proofs to verify) at each step. + const INPUT_ARITY: usize; + + /// Returns the ELF of the aggregation program. + fn proving_key() -> &'static [u8]; + + /// Returns (the words of) the image id of the aggregation program. + fn verifying_key() -> Digest; + + /// Computes the output message from the input messages and the local data. + fn aggregate_step( + input_aggregations: &[PcdMessage], + step_instance: &StepInstance, + ) -> PcdMessage { + assert_eq!( + input_aggregations.len(), + ::INPUT_ARITY, + "incorrect number of input aggregations" + ); + + let mut h_in_vec = Vec::new(); + let mut d_in_vec = Vec::new(); + for aggregation in input_aggregations { + h_in_vec.push(aggregation.step_output_digest); + d_in_vec.push(aggregation.step_program_digest); + } + let h_out = crate::hash::commit_step_output_with_sha(&h_in_vec, &step_instance.output); + let d_out = crate::hash::commit_step_program_with_sha(&d_in_vec, &step_instance.program); + + PcdMessage { + step_output_digest: h_out, + step_program_digest: d_out, + } + } + + /// Proves correctness of [PCDAggregation::aggregate_step] and + /// verifies the input [PcdProof]s and [StepProof]. + fn prove_step( + input_aggregations: &[PcdMessage], + input_proofs: &[PcdProof], + step_instance: &StepInstance, + step_proof: &StepProof, + output_node: bool, + ) -> Result { + // Sanity check + if input_aggregations.len() != ::INPUT_ARITY { + return Err(ArmError::ProveFailed( + "Pcd prove failed: incorrect number of input aggregations".into(), + )); + } + + let mut base_case = true; + if !input_proofs.is_empty() { + // If not base case + if input_proofs.len() != ::INPUT_ARITY { + return Err(ArmError::ProveFailed( + "Pcd prove failed: incorrect number of input proofs".into(), + )); + } + + base_case = false; + } + + let mut env_builder = ExecutorEnv::builder(); + + // Add all proofs as assumptions. + env_builder.add_assumption(step_proof.0.clone()); + if !base_case { + for ip in input_proofs { + env_builder.add_assumption(ip.0.clone()); + } + } + + // Write all inputs. Make sure the corresponding guest circuit + // reads in the same order. + env_builder + .write(&::verifying_key()) + .map_err(|_| ArmError::WriteWitnessFailed)?; + for aggregation in input_aggregations { + env_builder + .write(&( + aggregation.step_output_digest, + aggregation.step_program_digest, + )) + .map_err(|_| ArmError::WriteWitnessFailed)?; + } + + let env = env_builder + .write(&(&step_instance.program, &step_instance.output.clone())) + .map_err(|_| ArmError::WriteWitnessFailed)? + .build() + .map_err(|_| ArmError::BuildProverEnvFailed)?; + + // If not an output node, prove fast. + let prover_opts = if output_node { + #[cfg(feature = "fast_aggregation")] + { + ProverOpts::fast() + } + + #[cfg(all(not(feature = "fast_aggregation"), feature = "groth16_aggregation"))] + { + ProverOpts::groth16() + } + + #[cfg(all( + not(feature = "fast_aggregation"), + not(feature = "groth16_aggregation") + ))] + { + ProverOpts::succinct() + } + } else { + ProverOpts::fast() + }; + + let prover = default_prover(); + + // Prove step. + let next_receipt = prover + .prove_with_ctx( + env, + &VerifierContext::default(), + ::proving_key(), + &prover_opts, + ) + .map_err(|err| ArmError::ProveFailed(format!("Pcd proof generation failed: {}", err)))? + .receipt; + + Ok(PcdProof(next_receipt.inner)) + } + + /// Verifies validity of a step aggregation. + fn verify_step(aggregation: &PcdMessage, proof: &PcdProof) -> Result<(), ArmError> { + // Form the instance. + let ag_program_key = ::verifying_key(); + let h_out = aggregation.step_output_digest; + let d_out = aggregation.step_program_digest; + let pcd_instance = risc0_zkvm::serde::to_vec(&(ag_program_key, h_out, d_out)) + .map_err(|_| ArmError::InstanceSerializationFailed)?; + + // Verify the receipt. + let receipt = Receipt::new(proof.0.clone(), words_to_bytes(&pcd_instance).to_vec()); + receipt.verify(ag_program_key).map_err(|err| { + ArmError::ProofVerificationFailed(format!("Pcd proof verification failed: {}", err)) + }) + } +} + +/// The input and output of an aggregation node (step). +#[derive(PartialEq, Debug, Clone)] +pub struct PcdMessage { + /// A binding commitment to all verified step outputs + /// that this aggregation attests to. + pub step_output_digest: Digest, + + /// A binding commitment to all verified step programs + /// that this aggregation attests to. + pub step_program_digest: Digest, +} + +impl Default for PcdMessage { + fn default() -> Self { + PcdMessage { + step_output_digest: Digest::ZERO, + step_program_digest: Digest::ZERO, + } + } +} + +/// The output and program to verify at each aggregation node (step). +/// Thus, an instance of the 'universal relation' that a zkVM realize. +#[derive(Debug, Clone)] +pub struct StepInstance { + /// The image id (aka verifying key) of the program to verify + /// at an aggregation node (step). + pub program: Digest, + + /// The serialized words of the program's output. + pub output: Vec, +} + +impl StepInstance { + /// Generic constructor. + pub fn new(output: I, image_id: VK) -> Result + where + I: serde::Serialize, + VK: Into, + { + Ok(StepInstance { + program: image_id.into(), + output: risc0_zkvm::serde::to_vec(&output).map_err(|_| ArmError::SerializationError)?, + }) + } +} + +impl TryFrom for Vec { + type Error = ArmError; + + fn try_from(value: BatchCU) -> Result { + let mut step_instances = Vec::new(); + for cu_instance in value.instances.into_iter() { + let output: ComplianceInstance = proving_system::journal_to_instance(&cu_instance)?; + let image_id = *COMPLIANCE_VK; + step_instances.push(StepInstance::new(output, image_id)?); + } + Ok(step_instances) + } +} + +impl TryFrom for Vec { + type Error = ArmError; + + fn try_from(value: BatchLP) -> Result { + let mut step_instances = Vec::new(); + for (lp_instance, lp_key) in value.instances.into_iter().zip(value.keys.into_iter()) { + let output: LogicInstance = proving_system::journal_to_instance(&lp_instance)?; + let image_id = lp_key; + step_instances.push(StepInstance::new(output, image_id)?); + } + Ok(step_instances) + } +} + +/// A proof attesting to the correctness of an [PcdMessage]. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct PcdProof(pub InnerReceipt); + +/// A proof attesting to the correctness of a [StepInstance]. +#[derive(Debug)] +pub struct StepProof(pub Receipt); + +impl TryFrom for Vec { + type Error = ArmError; + fn try_from(value: BatchCU) -> Result { + match value.receipts.clone() { + None => Err(ArmError::ProveFailed("missing step proofs".into())), + Some(receipts) => Ok(receipts.iter().map(|sp| StepProof(sp.clone())).collect()), + } + } +} + +impl TryFrom for Vec { + type Error = ArmError; + fn try_from(value: BatchLP) -> Result { + match value.receipts { + None => Err(ArmError::ProveFailed("missing step proofs".into())), + Some(receipts) => Ok(receipts.iter().map(|sp| StepProof(sp.clone())).collect()), + } + } +} diff --git a/arm/src/aggregation/sequential.rs b/arm/src/aggregation/sequential.rs new file mode 100644 index 00000000..db23717d --- /dev/null +++ b/arm/src/aggregation/sequential.rs @@ -0,0 +1,126 @@ +use risc0_zkvm::Digest; + +use crate::{ + aggregation::constants::{SEQUENTIAL_AGGREGATION_PK, SEQUENTIAL_AGGREGATION_VK}, + error::ArmError, + transaction::Transaction, +}; + +use super::pcd::{PCDAggregation, PcdMessage, PcdProof, StepInstance, StepProof}; + +pub struct SequentialAggregation; + +impl SequentialAggregation { + /// Aggregate instances in a transcript. + pub fn aggregate_transcript(instances: &[StepInstance]) -> PcdMessage { + let mut aggregated_instances = PcdMessage::default(); + + for instance in instances { + aggregated_instances = ::aggregate_step( + &[aggregated_instances], + instance, + ); + } + + aggregated_instances + } + + /// Prove correctness of an aggregation transcript. + pub fn prove_transcript_aggregation( + instances: &[StepInstance], + proofs: &[StepProof], + ) -> Result { + if instances.len() != proofs.len() { + // Can't aggregate. + return Err(ArmError::ProveFailed( + "Mismatch in number of individual instances and proofs".into(), + )); + } + + let mut agg = PcdMessage::default(); + let mut agg_proof = Vec::new(); + for (pos, (instance, proof)) in instances.iter().zip(proofs.iter()).enumerate() { + let proof_out = ::prove_step( + &[agg.clone()], + &agg_proof, + instance, + proof, + pos == instances.len() - 1, + )?; + + agg = ::aggregate_step(&[agg], instance); + agg_proof = vec![proof_out]; + } + agg_proof + .pop() + .ok_or(ArmError::ProveFailed("Error popping out pcd proof".into())) + } + + /// Prove correctness of the transcript induced by a transaction. + pub fn prove_transaction_aggregation(tx: &Transaction) -> Result { + if let (instances, Some(proofs)) = &SequentialAggregation::transaction_transcript(tx)? { + SequentialAggregation::prove_transcript_aggregation(instances, proofs) + } else { + Err(ArmError::ProveFailed( + "Error deriving transcript for proving (individual instances and proofs)".into(), + )) + } + } + + /// Verifies the correctness of a transcript aggregation. + pub fn verify_transcript_aggregation( + instances: &[StepInstance], + proof: &PcdProof, + ) -> Result<(), ArmError> { + let aggregation = SequentialAggregation::aggregate_transcript(instances); + + // Verify last PCD step for the aggregated instance and proof. + ::verify_step(&aggregation, proof) + } + + /// Verifies the correctness of the transcript induced by the transaction. + pub fn verify_transaction_aggregation( + tx: &Transaction, + proof: &PcdProof, + ) -> Result<(), ArmError> { + let (instances, _) = SequentialAggregation::transaction_transcript(tx)?; + SequentialAggregation::verify_transcript_aggregation(&instances, proof) + } + + /// Derives the transcript induced by the transaction. + pub fn transaction_transcript( + tx: &Transaction, + ) -> Result<(Vec, Option>), ArmError> { + let batch_cu = tx.get_batch_cu(); + let batch_lp = tx.get_batch_lp()?; + let mut step_instances: Vec = batch_cu.clone().try_into()?; + step_instances.append( + &mut >>::try_into(batch_lp.clone())?, + ); + + let sp_cu: Option> = batch_cu.try_into().ok(); + let sp_lp: Option> = batch_lp.try_into().ok(); + + // We need the step proofs to prove aggregation, but not to verify the aggregation. + let mut step_proofs: Option> = None; + if let (Some(sp_cu), Some(mut sp_lp)) = (sp_cu, sp_lp) { + let mut sp = sp_cu; + sp.append(&mut sp_lp); + step_proofs = Some(sp); + }; + + Ok((step_instances, step_proofs)) + } +} + +impl PCDAggregation for SequentialAggregation { + const INPUT_ARITY: usize = 1; + + fn proving_key() -> &'static [u8] { + SEQUENTIAL_AGGREGATION_PK + } + + fn verifying_key() -> Digest { + *SEQUENTIAL_AGGREGATION_VK + } +} diff --git a/arm/src/compliance.rs b/arm/src/compliance.rs index 44e332f5..0b293366 100644 --- a/arm/src/compliance.rs +++ b/arm/src/compliance.rs @@ -1,3 +1,6 @@ +// Size hard-coded to two resources per unit +const COMPLIANCE_INSTANCE_SIZE: usize = 56; + use crate::{ error::ArmError, merkle_path::MerklePath, @@ -15,6 +18,7 @@ use k256::{ }; use lazy_static::lazy_static; use risc0_zkvm::Digest; +use serde_with::serde_as; lazy_static! { pub static ref INITIAL_ROOT: Digest = Digest::from_hex("cc1d2f838445db7aec431df9ee8a871f40e7aa5e064fc056633ef8c60fab7b06") @@ -33,6 +37,13 @@ pub struct ComplianceInstance { pub delta_y: [u32; 8], } +#[serde_as] +#[derive(serde::Serialize, serde::Deserialize)] +pub struct ComplianceInstanceWords { + #[serde_as(as = "[_; COMPLIANCE_INSTANCE_SIZE]")] + pub u32_words: [u32; COMPLIANCE_INSTANCE_SIZE], +} + #[derive(Clone, serde::Serialize, serde::Deserialize)] pub struct ComplianceWitness { /// The consumed resource diff --git a/arm/src/compliance_unit.rs b/arm/src/compliance_unit.rs index fb35132a..f9cbbace 100644 --- a/arm/src/compliance_unit.rs +++ b/arm/src/compliance_unit.rs @@ -10,7 +10,7 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Deserialize, Serialize)] pub struct ComplianceUnit { // vk is a constant in the compliance unit, so we don't place it here. - pub proof: Vec, + pub proof: Option>, pub instance: Vec, } @@ -19,11 +19,20 @@ impl ComplianceUnit { // them as parameters. Instance is generated by proving. pub fn create(witness: &ComplianceWitness) -> Result { let (proof, instance) = prove(COMPLIANCE_PK, witness)?; - Ok(ComplianceUnit { proof, instance }) + Ok(ComplianceUnit { + proof: Some(proof), + instance, + }) } pub fn verify(&self) -> Result<(), ArmError> { - verify_proof(&COMPLIANCE_VK, &self.instance, &self.proof) + if let Some(proof) = &self.proof { + verify_proof(&COMPLIANCE_VK, &self.instance, proof) + } else { + Err(ArmError::ProofVerificationFailed( + "Missing compliance proof".into(), + )) + } } pub fn delta(&self) -> Result { diff --git a/arm/src/hash.rs b/arm/src/hash.rs new file mode 100644 index 00000000..b1fddc39 --- /dev/null +++ b/arm/src/hash.rs @@ -0,0 +1,36 @@ +use risc0_zkvm::sha::{Impl, Sha256, DIGEST_BYTES}; +use risc0_zkvm::Digest; + +use crate::utils::words_to_bytes; + +pub fn commit_step_output_with_sha(prev_hashes: &[Digest], step_output_serde: &[u32]) -> Digest { + sha_digest( + &flatten_prev_hashes(prev_hashes), + words_to_bytes(step_output_serde), + ) +} + +pub fn commit_step_program_with_sha(prev_hashes: &[Digest], step_program: &Digest) -> Digest { + sha_digest(&flatten_prev_hashes(prev_hashes), step_program.as_bytes()) +} + +fn sha_digest(prev_hashes: &[u8], tip: &[u8]) -> Digest { + let prev_hashes_length: usize = prev_hashes.len(); + let tip_length: usize = tip.len(); + let mut bytes = vec![0u8; tip_length + prev_hashes_length]; + bytes[0..tip_length].clone_from_slice(tip); + bytes[tip_length..tip_length + prev_hashes_length].clone_from_slice(prev_hashes); + + *Impl::hash_bytes(&bytes) +} + +fn flatten_prev_hashes(prev_hashes: &[Digest]) -> Vec { + let mut prev_hashes_bytes = vec![0u8; DIGEST_BYTES * prev_hashes.len()]; + let mut offset: usize = 0; + for h in prev_hashes { + prev_hashes_bytes[offset..offset + DIGEST_BYTES].clone_from_slice(h.as_bytes()); + offset += DIGEST_BYTES; + } + + prev_hashes_bytes +} diff --git a/arm/src/lib.rs b/arm/src/lib.rs index 8b9cf7d1..d1f83821 100644 --- a/arm/src/lib.rs +++ b/arm/src/lib.rs @@ -1,8 +1,10 @@ #[cfg(feature = "transaction")] pub mod action; pub mod action_tree; +#[cfg(feature = "aggregation")] +pub mod aggregation; pub mod authorization; -#[cfg(feature = "compliance_circuit")] +#[cfg(any(feature = "compliance_circuit", feature = "aggregation_circuit"))] pub mod compliance; #[cfg(feature = "transaction")] pub mod compliance_unit; @@ -13,6 +15,8 @@ pub mod delta_proof; pub mod encryption; pub mod error; pub mod evm; +#[cfg(feature = "aggregation_circuit")] +pub mod hash; pub mod logic_instance; #[cfg(feature = "transaction")] pub mod logic_proof; diff --git a/arm/src/logic_proof.rs b/arm/src/logic_proof.rs index b55dd470..cb2f7023 100644 --- a/arm/src/logic_proof.rs +++ b/arm/src/logic_proof.rs @@ -30,7 +30,7 @@ pub trait LogicProver: Default + Clone + Serialize + for<'de> Deserialize<'de> { fn prove(&self) -> Result { let (proof, instance) = prove(Self::proving_key(), self.witness())?; Ok(LogicVerifier { - proof, + proof: Some(proof), instance, verifying_key: Self::verifying_key(), }) @@ -39,7 +39,7 @@ pub trait LogicProver: Default + Clone + Serialize + for<'de> Deserialize<'de> { #[derive(Clone, Debug, Deserialize, Serialize)] pub struct LogicVerifier { - pub proof: Vec, + pub proof: Option>, pub instance: Vec, pub verifying_key: Digest, } @@ -49,13 +49,19 @@ pub struct LogicVerifierInputs { pub tag: Digest, pub verifying_key: Digest, pub app_data: AppData, - pub proof: Vec, + pub proof: Option>, } impl LogicVerifier { pub fn verify(&self) -> Result<(), ArmError> { - verify_proof(&self.verifying_key, &self.instance, &self.proof) - .map_err(|err| ArmError::ProofVerificationFailed(err.to_string())) + if let Some(proof) = &self.proof { + verify_proof(&self.verifying_key, &self.instance, proof) + .map_err(|err| ArmError::ProofVerificationFailed(err.to_string())) + } else { + Err(ArmError::ProofVerificationFailed( + "Missing logic proof".into(), + )) + } } pub fn get_instance(&self) -> Result { diff --git a/arm/src/tests.rs b/arm/src/tests.rs index b5d4e02d..72beac3d 100644 --- a/arm/src/tests.rs +++ b/arm/src/tests.rs @@ -151,3 +151,63 @@ fn test_action() { fn test_transaction() { let _ = generate_test_transaction(1); } + +#[test] +#[cfg(feature = "aggregation")] +fn test_aggregation_works() { + use crate::aggregation::AggregationStrategy; + + let tx = generate_test_transaction(1); + + for strategy in [AggregationStrategy::Sequential, AggregationStrategy::Batch] { + let mut tx_str = tx.clone(); + assert!(tx_str.aggregate_with_strategy(strategy.clone()).is_ok()); + assert!(tx_str.aggregation_proof.is_some()); + assert!(tx_str.verify_aggregation().is_ok()); + } +} + +#[test] +#[cfg(feature = "aggregation")] +fn test_verify_aggregation_fails_for_incorrect_instances() { + use crate::aggregation::AggregationStrategy; + + let tx = generate_test_transaction(2); + + for strategy in [AggregationStrategy::Sequential, AggregationStrategy::Batch] { + let mut tx_str = tx.clone(); + assert!(tx_str.aggregate_with_strategy(strategy).is_ok()); + + tx_str.actions[0].logic_verifier_inputs.pop(); + + assert!(tx_str.verify_aggregation().is_err()); + } +} + +#[test] +#[cfg(feature = "aggregation")] +fn test_cannot_aggregate_invalid_proofs() { + use crate::{aggregation::AggregationStrategy, logic_proof::LogicVerifierInputs}; + + let tx = generate_test_transaction(2); + + // Create a transaction with one invalid proof. + let bad_lproof = LogicVerifierInputs { + proof: tx.actions[0].logic_verifier_inputs[0].clone().proof, + verifying_key: Digest::from_bytes([66u8; 32]), //vec![666u32; 8], // Bad key. + tag: tx.actions[0].logic_verifier_inputs[0].tag, + app_data: tx.actions[0].logic_verifier_inputs[0].app_data.clone(), + }; + + let bad_action = Action { + compliance_units: tx.actions[0].clone().compliance_units, + logic_verifier_inputs: vec![bad_lproof], + }; + let bad_tx = Transaction::create(vec![bad_action, tx.actions[1].clone()], tx.delta_proof); + + for strategy in [AggregationStrategy::Sequential, AggregationStrategy::Batch] { + let mut bad_tx_str = bad_tx.clone(); + assert!(bad_tx_str.aggregate_with_strategy(strategy).is_err()); + assert!(bad_tx_str.aggregation_proof.is_none()); + } +} diff --git a/arm/src/transaction.rs b/arm/src/transaction.rs index 74ed9958..8a31e096 100644 --- a/arm/src/transaction.rs +++ b/arm/src/transaction.rs @@ -1,3 +1,8 @@ +#[cfg(feature = "aggregation")] +use crate::aggregation::{ + batch::BatchAggregation, sequential::SequentialAggregation, AggregationProof, + AggregationStrategy, +}; use crate::{ action::Action, delta_proof::{DeltaInstance, DeltaProof, DeltaWitness}, @@ -13,6 +18,8 @@ pub struct Transaction { pub delta_proof: Delta, // We can't support unbalanced transactions, so this is just a placeholder. pub expected_balance: Option>, + // If present, attests to the validity of all individual proofs. + pub aggregation_proof: Option>, } #[derive(Clone, Debug, Deserialize, Serialize)] @@ -30,6 +37,7 @@ impl Transaction { actions, delta_proof: delta, expected_balance: None, + aggregation_proof: None, } } @@ -43,6 +51,7 @@ impl Transaction { actions: self.actions, delta_proof, expected_balance: self.expected_balance, + aggregation_proof: self.aggregation_proof, }) } Delta::Proof(_) => Ok(self), @@ -94,3 +103,77 @@ impl Transaction { Transaction::create(actions, delta) } } + +#[cfg(feature = "aggregation")] +impl Transaction { + /// Aggregates all the transaction proofs with the default strategy. + pub fn aggregate(&mut self) -> Result<(), ArmError> { + self.aggregate_with_strategy(AggregationStrategy::Batch) + } + + /// Aggregates all the transaction proofs using the passed aggregation strategy. + /// If aggregation is successful, `self` contains an aggregation proof and its + /// compliance and logic proofs are set to `None`. Else proofs are untouched. + pub fn aggregate_with_strategy( + &mut self, + strategy: AggregationStrategy, + ) -> Result<(), ArmError> { + let agg_proof = match strategy { + AggregationStrategy::Sequential => { + SequentialAggregation::prove_transaction_aggregation(self) + .map(AggregationProof::Sequential)? + } + AggregationStrategy::Batch => BatchAggregation::prove_transaction_aggregation(self) + .map(AggregationProof::Batch)?, + }; + + self.aggregation_proof = + Some(bincode::serialize(&agg_proof).map_err(|_| ArmError::SerializationError)?); + + self.erase_base_proofs(); + Ok(()) + } + + /// Verifies the aggregated proof of the transaction. + pub fn verify_aggregation(&self) -> Result<(), ArmError> { + if let Some(agg_proof) = &self.aggregation_proof { + match bincode::deserialize(agg_proof) + .map_err(|_| ArmError::InnerReceiptDeserializationError)? + { + AggregationProof::Sequential(proof) => { + SequentialAggregation::verify_transaction_aggregation(self, &proof) + } + AggregationProof::Batch(proof) => { + BatchAggregation::verify_transaction_aggregation(self, &proof) + } + } + } else { + Err(ArmError::ProofVerificationFailed( + "Missing aggregation proof".into(), + )) + } + } + + pub fn get_raw_aggregation_proof(&self) -> Option> { + if let Some(agg_proof) = &self.aggregation_proof { + match bincode::deserialize(agg_proof).unwrap() { + AggregationProof::Sequential(proof) => Some(bincode::serialize(&proof.0).unwrap()), + AggregationProof::Batch(proof) => Some(bincode::serialize(&proof.0).unwrap()), + } + } else { + None + } + } + + // Replaces all compliance and resource logic proofs with `None`. + fn erase_base_proofs(&mut self) { + for a in self.actions.iter_mut() { + for cu in a.compliance_units.iter_mut() { + cu.proof = None; + } + for lp in a.logic_verifier_inputs.iter_mut() { + lp.proof = None; + } + } + } +} diff --git a/arm_circuits/Cargo.lock b/arm_circuits/Cargo.lock index 6a302f56..9b092e3e 100644 --- a/arm_circuits/Cargo.lock +++ b/arm_circuits/Cargo.lock @@ -685,6 +685,24 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" +[[package]] +name = "batch_aggregation" +version = "0.1.0" +dependencies = [ + "arm", + "batch_aggregation_methods", + "bincode", + "risc0-zkvm", + "serde", +] + +[[package]] +name = "batch_aggregation_methods" +version = "0.1.0" +dependencies = [ + "risc0-build", +] + [[package]] name = "bincode" version = "1.3.3" diff --git a/arm_circuits/Cargo.toml b/arm_circuits/Cargo.toml index 312787e1..8169f5c4 100644 --- a/arm_circuits/Cargo.toml +++ b/arm_circuits/Cargo.toml @@ -1,6 +1,6 @@ [workspace] resolver = "2" -members = [ "compliance", "trivial_logic", "counter", "kudo_main", "simple_kudo_denomination", "simple_kudo_receive", "logic_test" ] +members = [ "compliance", "trivial_logic", "counter", "kudo_main", "simple_kudo_denomination", "simple_kudo_receive", "logic_test", "batch_aggregation" ] # Always optimize; otherwise tests take excessively long. [profile.dev] diff --git a/arm_circuits/batch_aggregation/Cargo.toml b/arm_circuits/batch_aggregation/Cargo.toml new file mode 100644 index 00000000..8f0a286b --- /dev/null +++ b/arm_circuits/batch_aggregation/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "batch_aggregation" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +# If you want to try (experimental) std support, add `features = [ "std" ]` to risc0-zkvm +batch_aggregation_methods = { path = "methods" } +risc0-zkvm = "3.0.3" +arm = { path = "../../arm", features = ["transaction"]} +bincode = "1.3.3" +serde = "1.0.219" diff --git a/arm_circuits/batch_aggregation/README.md b/arm_circuits/batch_aggregation/README.md new file mode 100644 index 00000000..b75b0f3c --- /dev/null +++ b/arm_circuits/batch_aggregation/README.md @@ -0,0 +1,5 @@ +# Batch aggregation circuit +The [batch aggregation circuit](methods/guest/src/main.rs) does the following: + * verify the input compliance instances with the input compliance key, + * verify the input resource logic instances with the input resource logic keys, + * output all the inputs. \ No newline at end of file diff --git a/arm_circuits/batch_aggregation/methods/Cargo.toml b/arm_circuits/batch_aggregation/methods/Cargo.toml new file mode 100644 index 00000000..3063fe5b --- /dev/null +++ b/arm_circuits/batch_aggregation/methods/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "batch_aggregation_methods" +version = "0.1.0" +edition = "2021" + +[build-dependencies] +risc0-build = { version = "3.0.3", features = ["unstable"] } + +[package.metadata.risc0] +methods = ["guest"] diff --git a/arm_circuits/batch_aggregation/methods/build.rs b/arm_circuits/batch_aggregation/methods/build.rs new file mode 100644 index 00000000..08a8a4eb --- /dev/null +++ b/arm_circuits/batch_aggregation/methods/build.rs @@ -0,0 +1,3 @@ +fn main() { + risc0_build::embed_methods(); +} diff --git a/arm_circuits/batch_aggregation/methods/guest/Cargo.toml b/arm_circuits/batch_aggregation/methods/guest/Cargo.toml new file mode 100644 index 00000000..5a782d54 --- /dev/null +++ b/arm_circuits/batch_aggregation/methods/guest/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "batch_aggregation" +version = "0.1.0" +edition = "2021" + +[workspace] + +[dependencies] +risc0-zkvm = { version = "3.0.3", features = ["std", "unstable"], default-features = false } +arm = { path = "../../../../arm", features = ["aggregation_circuit"], default-features = false} \ No newline at end of file diff --git a/arm_circuits/batch_aggregation/methods/guest/src/main.rs b/arm_circuits/batch_aggregation/methods/guest/src/main.rs new file mode 100644 index 00000000..2e28ea41 --- /dev/null +++ b/arm_circuits/batch_aggregation/methods/guest/src/main.rs @@ -0,0 +1,29 @@ +use risc0_zkvm::guest::env; +use risc0_zkvm::Digest; + +use arm::compliance::ComplianceInstanceWords; + +/// The batch aggregation circuit. +fn main() { + // Read the inputs. + let compliance_instances: Vec = env::read(); + let compliance_key: Digest = env::read(); + let logic_instances: Vec> = env::read(); + let logic_keys: Vec = env::read(); // Assume same length as `logic_instances`. Else will panic. + + // Verify the proofs. + for ci in compliance_instances.iter() { + env::verify(compliance_key, &ci.u32_words).unwrap(); + } + for i in 0..logic_instances.len() { + env::verify(logic_keys[i], &logic_instances[i]).unwrap(); + } + + // The output. + env::commit(&( + compliance_instances, + compliance_key, + logic_instances, + logic_keys, + )); +} diff --git a/arm_circuits/batch_aggregation/methods/src/lib.rs b/arm_circuits/batch_aggregation/methods/src/lib.rs new file mode 100644 index 00000000..1bdb3085 --- /dev/null +++ b/arm_circuits/batch_aggregation/methods/src/lib.rs @@ -0,0 +1 @@ +include!(concat!(env!("OUT_DIR"), "/methods.rs")); diff --git a/arm_circuits/batch_aggregation/src/main.rs b/arm_circuits/batch_aggregation/src/main.rs new file mode 100644 index 00000000..cad9109a --- /dev/null +++ b/arm_circuits/batch_aggregation/src/main.rs @@ -0,0 +1,54 @@ +use risc0_zkvm::{default_prover, Digest, ExecutorEnv, InnerReceipt, Receipt}; + +use arm::{logic_proof::LogicVerifier, transaction::generate_test_transaction}; + +use batch_aggregation_methods::{BATCH_AGGREGATION_ELF, BATCH_AGGREGATION_ID}; + +pub fn main() { + let tx = generate_test_transaction(2); + let cu_1 = tx.actions[0].get_compliance_units()[0].clone(); + let cu_2 = tx.actions[1].get_compliance_units()[0].clone(); + let lv_1: Vec = tx.actions[0].clone().try_into().unwrap(); + let lp_1 = lv_1[0].clone(); + let lv_2: Vec = tx.actions[1].clone().try_into().unwrap(); + let lp_2 = lv_2[0].clone(); + + let mut inner: InnerReceipt = bincode::deserialize(&cu_1.proof.unwrap()).unwrap(); + let cu_1_receipt = Receipt::new(inner, cu_1.instance.clone().to_vec()); + inner = bincode::deserialize(&cu_2.proof.unwrap()).unwrap(); + let cu_2_receipt = Receipt::new(inner, cu_2.instance.clone().to_vec()); + inner = bincode::deserialize(&lp_1.proof.unwrap()).unwrap(); + let lp_1_receipt = Receipt::new(inner, lp_1.instance.clone().to_vec()); + inner = bincode::deserialize(&lp_2.proof.unwrap()).unwrap(); + let lp_2_receipt = Receipt::new(inner, lp_2.instance.clone().to_vec()); + + // Test batch aggregation (both compliance and resource logic instances). + let compliance_key: Digest = *arm::constants::COMPLIANCE_VK; + let env = ExecutorEnv::builder() + .add_assumption(cu_1_receipt) + .add_assumption(cu_2_receipt) + .add_assumption(lp_1_receipt) + .add_assumption(lp_2_receipt) + .write(&vec![cu_1.instance, cu_2.instance]) + .unwrap() + .write(&compliance_key) + .unwrap() + .write(&vec![lp_1.instance, lp_2.instance]) + .unwrap() + .write(&vec![ + Digest::new(lp_1.verifying_key.try_into().unwrap()), + Digest::new(lp_2.verifying_key.try_into().unwrap()), + ]) + .unwrap() + .build() + .unwrap(); + + let batch_receipt = default_prover() + .prove(env, BATCH_AGGREGATION_ELF) + .unwrap() + .receipt; + + batch_receipt.verify(BATCH_AGGREGATION_ID).unwrap(); + + println!("Success!"); +} diff --git a/arm_circuits/sequential_aggregation/README.md b/arm_circuits/sequential_aggregation/README.md new file mode 100644 index 00000000..dbdf0c85 --- /dev/null +++ b/arm_circuits/sequential_aggregation/README.md @@ -0,0 +1,5 @@ +# Sequential aggregation circuit +The [circuit of a single step in a sequential aggregation](methods/guest/src/main.rs) does the following: + * verify the step output for the step program, + * if not the base case, verify the input aggregation, + * hash the step output and step program with the input running hash. \ No newline at end of file diff --git a/arm_circuits/sequential_aggregation/methods/Cargo.toml b/arm_circuits/sequential_aggregation/methods/Cargo.toml new file mode 100644 index 00000000..f024318f --- /dev/null +++ b/arm_circuits/sequential_aggregation/methods/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "sequential_aggregation_methods" +version = "0.1.0" +edition = "2021" + +[build-dependencies] +risc0-build = { version = "3.0.3", features = ["unstable"] } + +[package.metadata.risc0] +methods = ["guest"] \ No newline at end of file diff --git a/arm_circuits/sequential_aggregation/methods/build.rs b/arm_circuits/sequential_aggregation/methods/build.rs new file mode 100644 index 00000000..08a8a4eb --- /dev/null +++ b/arm_circuits/sequential_aggregation/methods/build.rs @@ -0,0 +1,3 @@ +fn main() { + risc0_build::embed_methods(); +} diff --git a/arm_circuits/sequential_aggregation/methods/guest/Cargo.toml b/arm_circuits/sequential_aggregation/methods/guest/Cargo.toml new file mode 100644 index 00000000..d9e66849 --- /dev/null +++ b/arm_circuits/sequential_aggregation/methods/guest/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "sequential_aggregation" +version = "0.1.0" +edition = "2021" + +[workspace] + +[dependencies] +risc0-zkvm = { version = "3.0.3", features = ["std", "unstable"], default-features = false } +arm = { path = "../../../../arm", features = ["aggregation_circuit"], default-features = false} \ No newline at end of file diff --git a/arm_circuits/sequential_aggregation/methods/guest/src/main.rs b/arm_circuits/sequential_aggregation/methods/guest/src/main.rs new file mode 100644 index 00000000..28ccf545 --- /dev/null +++ b/arm_circuits/sequential_aggregation/methods/guest/src/main.rs @@ -0,0 +1,31 @@ +use risc0_zkvm::guest::env; +use risc0_zkvm::serde; +use risc0_zkvm::Digest; + +/// The circuit of a single step in a sequential aggregation. +fn main() { + // Read the (purported) aggregation program ID + // and input hashes. + let ag_program_key: Digest = env::read(); + let (h_in, d_in): (Digest, Digest) = env::read(); + + // Read the step program ID and (serialized) step output. + let (step_program, step_output): (Digest, Vec) = env::read(); + + // Verify the step proof. + env::verify(step_program, &step_output).unwrap(); + + // Verify the input aggregation (a purported previous execution of this program) + if h_in != Digest::ZERO && d_in != Digest::ZERO { + env::verify( + ag_program_key, + &serde::to_vec(&(ag_program_key, h_in, d_in)).unwrap(), + ) + .unwrap(); + } + + // Hash-chain the verified output and program. + let h_out = arm::hash::commit_step_output_with_sha(&[h_in], &step_output); + let d_out = arm::hash::commit_step_program_with_sha(&[d_in], &step_program); + env::commit(&(ag_program_key, h_out, d_out)); +} diff --git a/arm_circuits/sequential_aggregation/methods/src/lib.rs b/arm_circuits/sequential_aggregation/methods/src/lib.rs new file mode 100644 index 00000000..1bdb3085 --- /dev/null +++ b/arm_circuits/sequential_aggregation/methods/src/lib.rs @@ -0,0 +1 @@ +include!(concat!(env!("OUT_DIR"), "/methods.rs"));