diff --git a/risc0-selective-privacy-poc/program_methods/guest/src/bin/transfer.rs b/risc0-selective-privacy-poc/program_methods/guest/src/bin/transfer.rs index 5364837..1e1a961 100644 --- a/risc0-selective-privacy-poc/program_methods/guest/src/bin/transfer.rs +++ b/risc0-selective-privacy-poc/program_methods/guest/src/bin/transfer.rs @@ -9,6 +9,7 @@ fn main() { let input_accounts: Vec = env::read(); let balance_to_move: u128 = env::read(); + // Unpack sender and receiver assert_eq!(input_accounts.len(), 2); let [sender, receiver] = input_accounts.try_into().unwrap(); diff --git a/risc0-selective-privacy-poc/src/lib.rs b/risc0-selective-privacy-poc/src/lib.rs index ab0cabd..35107f0 100644 --- a/risc0-selective-privacy-poc/src/lib.rs +++ b/risc0-selective-privacy-poc/src/lib.rs @@ -16,6 +16,7 @@ pub fn new_random_nonce() -> Nonce { std::array::from_fn(|_| rng.gen()) } +/// Writes inputs to `env_builder` in the order expected by the programs fn write_inputs( input_accounts: &[Account], instruction_data: P::InstructionData, @@ -27,6 +28,8 @@ fn write_inputs( Ok(()) } +/// Executes and proves the program `P`. +/// Returns the proof and the list of accounts pre and post states fn execute_and_prove_inner( input_accounts: &[Account], instruction_data: P::InstructionData, @@ -47,6 +50,8 @@ fn execute_and_prove_inner( Ok((receipt, inputs_outputs)) } +/// Executes the program `P` without generating a proof. +/// Returns the list of accounts pre and post states. pub fn execute( input_accounts: &[Account], instruction_data: P::InstructionData, @@ -113,12 +118,8 @@ pub fn invoke_privacy_execution( let prover = default_prover(); let prove_info = prover.prove(env, OUTER_ELF).unwrap(); - let private_outputs = extract_private_outputs_from_inner_results( - &inputs_outputs, - num_inputs, - &visibilities, - &output_nonces, - ); + let private_outputs = + extract_private_outputs_from_inner_results(&inputs_outputs, num_inputs, &visibilities, &output_nonces); Ok((prove_info.receipt, private_outputs)) } @@ -129,8 +130,7 @@ pub fn verify_privacy_execution( private_output_commitments: &[Commitment], commitment_tree_root: &[u32; 8], ) -> Result<(), ()> { - let output: (Vec, Vec, Vec, [u32; 8]) = - receipt.journal.decode().unwrap(); + let output: (Vec, Vec, Vec, [u32; 8]) = receipt.journal.decode().unwrap(); let expected_output = ( public_accounts_inputs_outputs.to_vec(), nullifiers.to_vec(), diff --git a/risc0-selective-privacy-poc/src/program/mod.rs b/risc0-selective-privacy-poc/src/program/mod.rs index 8fe64b6..8ccec6d 100644 --- a/risc0-selective-privacy-poc/src/program/mod.rs +++ b/risc0-selective-privacy-poc/src/program/mod.rs @@ -1,8 +1,6 @@ use core::types::ProgramId; -use program_methods::{ - PINATA_ELF, PINATA_ID, TRANSFER_ELF, TRANSFER_ID, TRANSFER_MULTIPLE_ELF, TRANSFER_MULTIPLE_ID, -}; +use program_methods::{PINATA_ELF, PINATA_ID, TRANSFER_ELF, TRANSFER_ID, TRANSFER_MULTIPLE_ELF, TRANSFER_MULTIPLE_ID}; use serde::{Deserialize, Serialize}; pub trait Program {