From f35b5f8deeefa5d60c3b65e54610eedb7252058f Mon Sep 17 00:00:00 2001 From: codeblooded1729 Date: Tue, 21 May 2024 16:07:50 +0530 Subject: [PATCH] Merge remote-tracking branch 'origin/main' into kapil/remove_self_prog_id_cli --- Cargo.lock | 41 ++++--- circuits/Cargo.toml | 2 +- cli/Cargo.toml | 2 +- examples/inputtape/main_native.rs | 2 +- examples/token/README.md | 2 +- examples/token/main_native.rs | 3 +- examples/wallet/README.md | 2 +- examples/wallet/main_native.rs | 3 +- node/Cargo.toml | 2 +- recproofs/Cargo.toml | 2 +- recproofs/src/circuits/build_event_root.rs | 52 ++++++--- recproofs/src/circuits/verify_block/core.rs | 2 +- recproofs/src/circuits/verify_program.rs | 33 +++++- recproofs/src/circuits/verify_program/core.rs | 100 ++++++++++++++---- recproofs/src/lib.rs | 18 ++-- .../.testdata_generated_from_this_commit | 2 +- run_examples.py | 2 +- runner/Cargo.toml | 2 +- scripts/test_bundle_tx.sh | 2 +- sdk/src/native/helpers.rs | 16 +-- signatures/Cargo.toml | 2 +- 21 files changed, 196 insertions(+), 96 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7bfd1b570..fa525dc0a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -102,9 +102,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.83" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "array-init" @@ -795,6 +795,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -839,9 +848,9 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libmimalloc-sys" -version = "0.1.37" +version = "0.1.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81eb4061c0582dedea1cbc7aff2240300dd6982e0239d1c99e65c1dbf4a30ba7" +checksum = "0e7bb23d733dfcc8af652a78b7bf232f0e967710d044732185e561e47c0336b6" dependencies = [ "cc", "libc", @@ -873,9 +882,9 @@ checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "mimalloc" -version = "0.1.41" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f41a2280ded0da56c8cf898babb86e8f10651a34adcfff190ae9a1159c6908d" +checksum = "e9186d86b79b52f4a77af65604b51225e8db1d6ee7e3f41aec1e40829c71a176" dependencies = [ "libmimalloc-sys", ] @@ -892,7 +901,7 @@ dependencies = [ "expr", "hex", "im", - "itertools 0.12.1", + "itertools 0.13.0", "log", "mozak-circuits-derive", "mozak-runner", @@ -932,7 +941,7 @@ dependencies = [ "clio", "criterion", "env_logger", - "itertools 0.12.1", + "itertools 0.13.0", "log", "mozak-circuits", "mozak-examples", @@ -958,7 +967,7 @@ version = "0.1.0" name = "mozak-node" version = "0.1.0" dependencies = [ - "itertools 0.12.1", + "itertools 0.13.0", "mozak-circuits", "mozak-recproofs", "mozak-sdk", @@ -975,7 +984,7 @@ dependencies = [ "criterion", "enumflags2", "iter_fixed", - "itertools 0.12.1", + "itertools 0.13.0", "once_cell", "plonky2", "tested-fixture", @@ -991,7 +1000,7 @@ dependencies = [ "elf", "env_logger", "im", - "itertools 0.12.1", + "itertools 0.13.0", "log", "mimalloc", "mozak-examples", @@ -1616,7 +1625,7 @@ dependencies = [ "criterion", "env_logger", "hex", - "itertools 0.12.1", + "itertools 0.13.0", "log", "num", "plonky2", @@ -1767,18 +1776,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.60" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.60" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", diff --git a/circuits/Cargo.toml b/circuits/Cargo.toml index ddd395a2c..6b422d560 100644 --- a/circuits/Cargo.toml +++ b/circuits/Cargo.toml @@ -14,7 +14,7 @@ anyhow = { version = "1.0", default-features = false } arrayvec = { version = "0.7", default-features = false } bitfield = "0.15" expr = { path = "../expr" } -itertools = "0.12" +itertools = "0.13" log = "0.4" mozak-circuits-derive = { path = "./derive" } mozak-runner = { path = "../runner" } diff --git a/cli/Cargo.toml b/cli/Cargo.toml index c2f4e071c..a38af4539 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -27,7 +27,7 @@ clap-verbosity-flag = "2.2" clap_derive = "4.5" clio = { version = "0.3", features = ["clap-parse"] } env_logger = "0.11" -itertools = "0.12" +itertools = "0.13" log = "0.4" mozak-examples = { path = "../examples-builder", features = ["mozak-sort"], optional = true} plonky2 = { workspace = true, default-features = false } diff --git a/examples/inputtape/main_native.rs b/examples/inputtape/main_native.rs index 78294f139..fde9ae896 100644 --- a/examples/inputtape/main_native.rs +++ b/examples/inputtape/main_native.rs @@ -19,5 +19,5 @@ fn main() { mozak_sdk::call_send(token_program, MethodArgs::RawTapesTest, dispatch); - mozak_sdk::native::dump_proving_files("inputtape"); + mozak_sdk::native::dump_proving_files(); } diff --git a/examples/token/README.md b/examples/token/README.md index e5e51b01b..d2b46bf71 100644 --- a/examples/token/README.md +++ b/examples/token/README.md @@ -28,7 +28,7 @@ the native execution above to produce the system tape prior to running this. MOZAK_STARK_DEBUG=true \ cargo run --bin mozak-cli -- prove-and-verify -vvv \ examples/target/riscv32im-mozak-mozakvm-elf/release/tokenbin \ - --system-tape examples/token/out/token.tape.json \ + --system-tape examples/token/out/tape.json \ --self-prog-id \ MZK-b10da48cea4c09676b8e0efcd806941465060736032bb898420d0863dca72538; ``` diff --git a/examples/token/main_native.rs b/examples/token/main_native.rs index 2fb6da1be..a41061e57 100644 --- a/examples/token/main_native.rs +++ b/examples/token/main_native.rs @@ -1,4 +1,3 @@ -#![feature(restricted_std)] #![allow(unused_attributes)] mod core_logic; use mozak_sdk::common::types::{ProgramIdentifier, StateAddress, StateObject}; @@ -39,5 +38,5 @@ fn main() { dispatch, ); - mozak_sdk::native::dump_proving_files("token"); + mozak_sdk::native::dump_proving_files(); } diff --git a/examples/wallet/README.md b/examples/wallet/README.md index d976f1fe4..16e4995b9 100644 --- a/examples/wallet/README.md +++ b/examples/wallet/README.md @@ -28,7 +28,7 @@ the native execution above to produce the system tape prior to running this. MOZAK_STARK_DEBUG=true \ cargo run --bin mozak-cli -- prove-and-verify -vvv \ examples/target/riscv32im-mozak-mozakvm-elf/release/walletbin \ - --system-tape examples/wallet/out/wallet.tape.json \ + --system-tape examples/wallet/out/tape.json \ --self-prog-id \ MZK-b10da48cea4c09676b8e0efcd806941465060736032bb898420d0863dca72538; ``` diff --git a/examples/wallet/main_native.rs b/examples/wallet/main_native.rs index 9f596e206..70cc74fcc 100644 --- a/examples/wallet/main_native.rs +++ b/examples/wallet/main_native.rs @@ -1,4 +1,3 @@ -#![feature(restricted_std)] #![allow(unused_attributes)] mod core_logic; @@ -31,5 +30,5 @@ fn main() { dispatch, ); - mozak_sdk::native::dump_proving_files("wallet"); + mozak_sdk::native::dump_proving_files(); } diff --git a/node/Cargo.toml b/node/Cargo.toml index d57d3297b..cfaeb5ce0 100644 --- a/node/Cargo.toml +++ b/node/Cargo.toml @@ -13,7 +13,7 @@ repository = "https://github.com/0xmozak/mozak-node" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -itertools = "0.12" +itertools = "0.13" mozak-recproofs = { path = '../recproofs' } mozak-sdk = { path = '../sdk' } plonky2 = { workspace = true, default-features = false } diff --git a/recproofs/Cargo.toml b/recproofs/Cargo.toml index 41e795695..5e8610dcd 100644 --- a/recproofs/Cargo.toml +++ b/recproofs/Cargo.toml @@ -13,7 +13,7 @@ version = "0.1.0" anyhow = { version = "1.0", default-features = false } enumflags2 = "0.7" iter_fixed = "0.3" -itertools = "0.12" +itertools = "0.13" plonky2 = { workspace = true, default-features = false } [dev-dependencies] diff --git a/recproofs/src/circuits/build_event_root.rs b/recproofs/src/circuits/build_event_root.rs index d9dcc4276..71c62a7c8 100644 --- a/recproofs/src/circuits/build_event_root.rs +++ b/recproofs/src/circuits/build_event_root.rs @@ -171,8 +171,8 @@ where pub fn prove( &self, - event: Event, branch: &BranchCircuit, + event: Event, ) -> Result> { let mut inputs = PartialWitness::new(); self.unbounded.set_witness(&mut inputs, &branch.circuit); @@ -193,10 +193,10 @@ where pub fn prove_unsafe( &self, + branch: &BranchCircuit, event: Event, hash: Option>, vm_hash: Option>, - branch: &BranchCircuit, ) -> Result> { let mut inputs = PartialWitness::new(); self.unbounded.set_witness(&mut inputs, &branch.circuit); @@ -316,21 +316,39 @@ where pub fn prove( &self, left_proof: &Proof, - right_proof: Option<&Proof>, + right_proof: &Proof, ) -> Result> { let mut inputs = PartialWitness::new(); - let partial = right_proof.is_none(); - let (right_is_leaf, right_proof) = if let Some(right_proof) = right_proof { - (R::VALUE, &right_proof.proof) - } else { - (L::VALUE, &left_proof.proof) - }; + let partial = false; self.unbounded.set_witness( &mut inputs, L::VALUE, &left_proof.proof, - right_is_leaf, - right_proof, + R::VALUE, + &right_proof.proof, + ); + self.hash.set_witness(&mut inputs, partial); + self.vm_hash.set_witness(&mut inputs, partial); + let proof = self.circuit.prove(inputs)?; + Ok(BranchProof { + proof, + tag: PhantomData, + indices: self.indices(), + }) + } + + pub fn prove_one( + &self, + left_proof: &Proof, + ) -> Result> { + let mut inputs = PartialWitness::new(); + let partial = true; + self.unbounded.set_witness( + &mut inputs, + L::VALUE, + &left_proof.proof, + L::VALUE, + &left_proof.proof, ); self.hash.set_witness(&mut inputs, partial); self.vm_hash.set_witness(&mut inputs, partial); @@ -427,7 +445,7 @@ pub mod test { } fn test_leaf(event: Event) -> Result> { - let proof = LEAF.prove(event, &BRANCH)?; + let proof = LEAF.prove(&BRANCH, event)?; assert_proof(&proof, event.hash(), event.byte_wise_hash(), event.owner); LEAF.verify(proof.clone())?; Ok(proof) @@ -444,7 +462,7 @@ pub mod test { "Test bug: tried to combine different event owners" ); - let proof = BRANCH.prove(left, Some(right))?; + let proof = BRANCH.prove(left, right)?; let hash = hash_branch(&left.hash(), &right.hash()); let vm_hash = hash_branch_bytes(&left.vm_hash(), &right.vm_hash()); assert_proof(&proof, hash, vm_hash, left.event_owner()); @@ -464,7 +482,7 @@ pub mod test { "Test bug: tried to combine different event owners" ); - let proof = BRANCH.prove(left, Some(right))?; + let proof = BRANCH.prove(left, right)?; let hash = hash_branch(&left.hash(), &right.hash()); let vm_hash = hash_branch_bytes(&left.vm_hash(), &right.vm_hash()); assert_proof(&proof, hash, vm_hash, left.event_owner()); @@ -565,7 +583,7 @@ pub mod test { .expect("shouldn't fail"); // Fail to prove with mismatched hashes - LEAF.prove_unsafe(read_1, Some(read_0_hash), Some(read_0_byte_hash), &BRANCH) + LEAF.prove_unsafe(&BRANCH, read_1, Some(read_0_hash), Some(read_0_byte_hash)) .unwrap(); } @@ -599,10 +617,10 @@ pub mod test { let read_1_byte_hash = read_1.byte_wise_hash(); // Read zero - let read_proof_1 = LEAF.prove(read_0, &BRANCH).unwrap(); + let read_proof_1 = LEAF.prove(&BRANCH, read_0).unwrap(); LEAF.verify(read_proof_1.clone()).unwrap(); - let read_proof_2 = LEAF.prove(read_1, &BRANCH).unwrap(); + let read_proof_2 = LEAF.prove(&BRANCH, read_1).unwrap(); LEAF.verify(read_proof_2.clone()).unwrap(); // Combine reads diff --git a/recproofs/src/circuits/verify_block/core.rs b/recproofs/src/circuits/verify_block/core.rs index f6cbac079..de4652326 100644 --- a/recproofs/src/circuits/verify_block/core.rs +++ b/recproofs/src/circuits/verify_block/core.rs @@ -112,7 +112,7 @@ impl SubCircuitInputs { ) .common; - let dummy = dummy_circuit::<_, C, D>(&common, |builder| self.register_inputs(builder)); + let dummy = dummy_circuit::(&common, |builder| self.register_inputs(builder)); let prev_proof = builder.add_virtual_proof_with_pis(&common); diff --git a/recproofs/src/circuits/verify_program.rs b/recproofs/src/circuits/verify_program.rs index 700121894..64366ebb0 100644 --- a/recproofs/src/circuits/verify_program.rs +++ b/recproofs/src/circuits/verify_program.rs @@ -107,7 +107,7 @@ where pub program_verifier: core::ProgramVerifierSubCircuit, /// The event root verifier - pub event_verifier: core::EventRootVerifierSubCircuit, + pub event_verifier: core::EventRootVerifierSubCircuit, pub circuit: CircuitData, } @@ -162,6 +162,10 @@ where events_targets.inputs.hash_present.target, program_verifier_targets.events_present.target, ); + builder.connect( + events_targets.inputs.hash_present.target, + event_verifier_targets.events_present.target, + ); builder.connect_hashes( program_verifier_targets.event_root, event_verifier_targets.vm_event_root, @@ -219,14 +223,14 @@ where branch: &BranchCircuit, program_verifier: &VerifierOnlyCircuitData, program_proof: &ProofWithPublicInputs, - event_root_proof: &build_event_root::BranchProof, + event_root_proof: Result<&build_event_root::BranchProof, [F; 4]>, ) -> Result> { let mut inputs = PartialWitness::new(); self.unbounded.set_witness(&mut inputs, &branch.circuit); self.program_verifier .set_witness(&mut inputs, program_verifier, program_proof); self.event_verifier - .set_witness(&mut inputs, &event_root_proof.proof); + .set_witness(&mut inputs, event_root_proof.map(|p| &p.proof)); let proof = self.circuit.prove(inputs)?; Ok(LeafProof { proof, @@ -592,7 +596,7 @@ pub mod test { &BRANCH, &program_verifier.circuit.verifier_only, &program_proof, - event_proof, + Ok(event_proof), )?; assert_proof(&proof, Some(hash), program.program_hash_val); LEAF.verify(proof.clone())?; @@ -641,6 +645,27 @@ pub mod test { ) } + #[tested_fixture::tested_fixture(PM_EMPTY_EVENT_LEAF_PROOF: LeafProof)] + fn verify_empty_leaf() -> Result> { + let program_proof = PROGRAM_M + .prove(None, NON_ZERO_VALUES[0], CAST_ROOT[0]) + .expect("shouldn't fail"); + PROGRAM_M + .circuit + .verify(program_proof.clone()) + .expect("shouldn't fail"); + + let proof = LEAF.prove( + &BRANCH, + &PROGRAM_M.circuit.verifier_only, + &program_proof, + Err(PROGRAM_M.program_hash_val), + )?; + assert_proof(&proof, None, PROGRAM_M.program_hash_val); + LEAF.verify(proof.clone())?; + Ok(proof) + } + #[test] #[should_panic(expected = "was set twice with different values")] fn bad_leaf_wrong_verifier() { diff --git a/recproofs/src/circuits/verify_program/core.rs b/recproofs/src/circuits/verify_program/core.rs index 9a76706ab..7a99fb925 100644 --- a/recproofs/src/circuits/verify_program/core.rs +++ b/recproofs/src/circuits/verify_program/core.rs @@ -1,18 +1,20 @@ use itertools::chain; use plonky2::field::extension::Extendable; +use plonky2::field::types::Field; use plonky2::hash::hash_types::{HashOutTarget, RichField}; use plonky2::hash::poseidon2::Poseidon2Hash; use plonky2::iop::target::{BoolTarget, Target}; -use plonky2::iop::witness::{PartialWitness, WitnessWrite}; +use plonky2::iop::witness::{PartialWitness, Witness, WitnessWrite}; use plonky2::plonk::circuit_builder::CircuitBuilder; use plonky2::plonk::circuit_data::{ - CommonCircuitData, VerifierCircuitTarget, VerifierOnlyCircuitData, + CircuitData, CommonCircuitData, VerifierCircuitTarget, VerifierOnlyCircuitData, }; use plonky2::plonk::config::{AlgebraicHasher, GenericConfig}; use plonky2::plonk::proof::{ProofWithPublicInputs, ProofWithPublicInputsTarget}; use crate::circuits::build_event_root; use crate::indices::{ArrayTargetIndex, BoolTargetIndex, HashOutTargetIndex, TargetIndex}; +use crate::{dummy_circuit, select_verifier}; #[derive(Copy, Clone, PartialEq, Eq, Debug)] pub struct ProgramPublicIndices { @@ -139,38 +141,73 @@ impl ProgramVerifierSubCircuit { } } -pub struct EventRootVerifierTargets { +pub struct EventRootVerifierTargets, const D: usize> { /// The event root proof pub event_root_proof: ProofWithPublicInputsTarget, /// The event owner pub event_owner: [Target; 4], + /// If events are present or not + pub events_present: BoolTarget, + /// The event root (rp_hash) pub event_root: HashOutTarget, /// The event root (vm hash) pub vm_event_root: HashOutTarget, + + /// The circuit for absent event proofs + zero_circuit: CircuitData, + + /// The event owner for absent event proofs + zero_circuit_event_owner: [Target; 4], } -pub struct EventRootVerifierSubCircuit { - pub targets: EventRootVerifierTargets, +pub struct EventRootVerifierSubCircuit, const D: usize> { + pub targets: EventRootVerifierTargets, } -impl EventRootVerifierTargets { +impl, const D: usize> EventRootVerifierTargets { #[must_use] - pub fn build_targets( - builder: &mut CircuitBuilder, - event_root_circuit: &build_event_root::BranchCircuit, + pub fn build_targets( + builder: &mut CircuitBuilder, + event_root_circuit: &build_event_root::BranchCircuit, ) -> Self where - F: RichField + Extendable, - C: GenericConfig, - >::Hasher: AlgebraicHasher, { + >::Hasher: AlgebraicHasher, { let circuit = &event_root_circuit.circuit; + + let zero_circuit_event_owner = event_root_circuit.event_owner.targets.inputs.values; + let zero_circuit = dummy_circuit::(&circuit.common, |builder| { + let hash = event_root_circuit + .hash + .targets + .inputs + .unpruned_hash + .elements; + let vm_hash = event_root_circuit + .vm_hash + .targets + .inputs + .unpruned_hash + .elements; + builder.register_public_inputs(&zero_circuit_event_owner); + builder.register_public_inputs(&hash); + builder.register_public_inputs(&vm_hash); + for v in hash { + builder.assert_zero(v); + } + for v in vm_hash { + builder.assert_zero(v); + } + }); let event_root_proof = builder.add_virtual_proof_with_pis(&circuit.common); - let verifier = builder.constant_verifier_data(&circuit.verifier_only); + let real_verifier = builder.constant_verifier_data(&circuit.verifier_only); + let zero_verifier = builder.constant_verifier_data(&zero_circuit.verifier_only); + let events_present = builder.add_virtual_bool_target_safe(); + let verifier = select_verifier(builder, events_present, &real_verifier, &zero_verifier); builder.verify_proof::(&event_root_proof, &verifier, &circuit.common); let event_owner = event_root_circuit @@ -191,29 +228,48 @@ impl EventRootVerifierTargets { Self { event_root_proof, + events_present, event_owner, event_root, vm_event_root, + zero_circuit, + zero_circuit_event_owner, } } } -impl EventRootVerifierTargets { +impl, const D: usize> EventRootVerifierTargets { #[must_use] - pub fn build(self, _public_inputs: &[Target]) -> EventRootVerifierSubCircuit { + pub fn build(self, _public_inputs: &[Target]) -> EventRootVerifierSubCircuit { EventRootVerifierSubCircuit { targets: self } } } -impl EventRootVerifierSubCircuit { - pub fn set_witness( +impl, const D: usize> EventRootVerifierSubCircuit { + pub fn set_witness( &self, - inputs: &mut PartialWitness, - event_root_proof: &ProofWithPublicInputs, + inputs: &mut PartialWitness, + event_root_proof: Result<&ProofWithPublicInputs, [C::F; 4]>, ) where - F: RichField + Extendable, - C: GenericConfig, - >::Hasher: AlgebraicHasher, { + >::Hasher: AlgebraicHasher, { + let storage; + let event_root_proof = match event_root_proof { + Ok(proof) => proof, + Err(owner) => { + let mut dummy_inputs = PartialWitness::new(); + dummy_inputs.set_target_arr(&self.targets.zero_circuit_event_owner, &owner); + // Zero out all other inputs + for i in 0..self.targets.zero_circuit.common.num_public_inputs { + let target = self.targets.zero_circuit.prover_only.public_inputs[i]; + if dummy_inputs.try_get_target(target).is_none() { + dummy_inputs.set_target(target, ::ZERO); + } + } + storage = self.targets.zero_circuit.prove(dummy_inputs).unwrap(); + &storage + } + }; + inputs.set_proof_with_pis_target(&self.targets.event_root_proof, event_root_proof); } } diff --git a/recproofs/src/lib.rs b/recproofs/src/lib.rs index 40ae367da..529dee684 100644 --- a/recproofs/src/lib.rs +++ b/recproofs/src/lib.rs @@ -159,10 +159,10 @@ impl EventFlags { #[derive(Debug, Copy, Clone, PartialEq, Eq)] pub struct Event { - owner: [F; 4], - ty: EventType, - address: u64, - value: [F; 4], + pub owner: [F; 4], + pub ty: EventType, + pub address: u64, + pub value: [F; 4], } impl Event { @@ -591,13 +591,13 @@ where /// Generate a circuit matching a given `CommonCircuitData`. #[must_use] -pub fn dummy_circuit, C: GenericConfig, const D: usize>( - common_data: &CommonCircuitData, - register_public_inputs: impl FnOnce(&mut CircuitBuilder), -) -> CircuitData { +pub fn dummy_circuit, const D: usize>( + common_data: &CommonCircuitData, + register_public_inputs: impl FnOnce(&mut CircuitBuilder), +) -> CircuitData { let config = common_data.config.clone(); - let mut builder = CircuitBuilder::::new(config); + let mut builder = CircuitBuilder::::new(config); // Build up enough wires to cover all our inputs for _ in 0..common_data.num_public_inputs { let _ = builder.add_virtual_target(); diff --git a/riscv-testdata/testdata/.testdata_generated_from_this_commit b/riscv-testdata/testdata/.testdata_generated_from_this_commit index 636ffe652..6be3b4620 100644 --- a/riscv-testdata/testdata/.testdata_generated_from_this_commit +++ b/riscv-testdata/testdata/.testdata_generated_from_this_commit @@ -1 +1 @@ -7dfa49bb33ac2393742232cb6f77b79ec5c9df47 +408e461da11e0b298c4b69e587729532787212f5 diff --git a/run_examples.py b/run_examples.py index 31c88d10e..b704cf577 100644 --- a/run_examples.py +++ b/run_examples.py @@ -198,7 +198,7 @@ def test_full_featured_examples(self): print() - system_tape = f"examples/{folder}/out/{folder}.tape.json" + system_tape = f"examples/{folder}/out/tape.json" programs_to_run = [ f"examples/target/riscv32im-mozak-mozakvm-elf/release/{folder}bin", diff --git a/runner/Cargo.toml b/runner/Cargo.toml index b7c15ce9b..507c95b3c 100644 --- a/runner/Cargo.toml +++ b/runner/Cargo.toml @@ -15,7 +15,7 @@ bitfield = "0.15" elf = { version = "0.7" } env_logger = { version = "0.11" } im = "15.1" -itertools = "0.12" +itertools = "0.13" log = "0.4" mozak-sdk = { path = "../sdk" } plonky2 = { workspace = true, default-features = false } diff --git a/scripts/test_bundle_tx.sh b/scripts/test_bundle_tx.sh index 085b497c6..dedd55916 100755 --- a/scripts/test_bundle_tx.sh +++ b/scripts/test_bundle_tx.sh @@ -19,4 +19,4 @@ cd ../wallet && cargo run --release \ # Run CLI cd ../../ cargo run --bin mozak-cli -- bundle-transaction -vvv \ - --system-tape examples/token/out/token.tape.json + --system-tape examples/token/out/tape.json diff --git a/sdk/src/native/helpers.rs b/sdk/src/native/helpers.rs index 864bed100..d7a9a12d4 100644 --- a/sdk/src/native/helpers.rs +++ b/sdk/src/native/helpers.rs @@ -67,20 +67,18 @@ fn write_to_file(file_path: &str, content: &[u8]) { /// formed of tape on disk, `.tape.debug` will be used for /// debug tape on disk. #[allow(dead_code)] -pub fn dump_system_tape(file_template: &str, is_debug_tape_required: bool) { +pub fn dump_system_tape(is_debug_tape_required: bool) { + fs::create_dir_all("out").unwrap(); let tape_clone = unsafe { crate::common::system::SYSTEM_TAPE.clone() // .clone() removes `Lazy{}` }; if is_debug_tape_required { - write_to_file( - &(file_template.to_string() + ".tape_debug"), - &format!("{tape_clone:#?}").into_bytes(), - ); + write_to_file("out/tape.debug", &format!("{tape_clone:#?}").into_bytes()); } write_to_file( - &(file_template.to_string() + ".tape.json"), + "out/tape.json", &serde_json::to_string_pretty(&tape_clone) .unwrap() .into_bytes(), @@ -95,8 +93,4 @@ pub fn dump_system_tape(file_template: &str, is_debug_tape_required: bool) { /// user must be cautious to not move at least the system tape, as the system /// tape is used by the CLI in proving and in transaction bundling, and the SDK /// makes some assumptions about where to find the ELF for proving. -pub fn dump_proving_files(file_template: &str) { - fs::create_dir_all("out").unwrap(); - let sys_tape_path = format!("out/{file_template}"); - dump_system_tape(&sys_tape_path, true); -} +pub fn dump_proving_files() { dump_system_tape(true); } diff --git a/signatures/Cargo.toml b/signatures/Cargo.toml index 5d6030c59..739f06465 100644 --- a/signatures/Cargo.toml +++ b/signatures/Cargo.toml @@ -14,7 +14,7 @@ version = "0.1.0" [dependencies] anyhow = "1.0" hex = "0.4" -itertools = "0.12" +itertools = "0.13" log = "0.4" num = "0.4" plonky2 = { workspace = true }