From d5cb3e0454847362ffdab493be54f4bc18d9a144 Mon Sep 17 00:00:00 2001 From: moudyellaz Date: Wed, 1 Apr 2026 21:15:17 +0200 Subject: [PATCH] feat: inject self_program_id in write_inputs and execute --- nssa/src/privacy_preserving_transaction/circuit.rs | 2 +- nssa/src/program.rs | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/nssa/src/privacy_preserving_transaction/circuit.rs b/nssa/src/privacy_preserving_transaction/circuit.rs index 0ae7eaac..48c59ce7 100644 --- a/nssa/src/privacy_preserving_transaction/circuit.rs +++ b/nssa/src/privacy_preserving_transaction/circuit.rs @@ -158,7 +158,7 @@ fn execute_and_prove_program( ) -> Result { // Write inputs to the program let mut env_builder = ExecutorEnv::builder(); - Program::write_inputs(pre_states, instruction_data, &mut env_builder)?; + Program::write_inputs(program.id(), pre_states, instruction_data, &mut env_builder)?; let env = env_builder.build().unwrap(); // Prove the program diff --git a/nssa/src/program.rs b/nssa/src/program.rs index b87fcf35..3187c295 100644 --- a/nssa/src/program.rs +++ b/nssa/src/program.rs @@ -58,7 +58,7 @@ impl Program { // Write inputs to the program let mut env_builder = ExecutorEnv::builder(); env_builder.session_limit(Some(MAX_NUM_CYCLES_PUBLIC_EXECUTION)); - Self::write_inputs(pre_states, instruction_data, &mut env_builder)?; + Self::write_inputs(self.id, pre_states, instruction_data, &mut env_builder)?; let env = env_builder.build().unwrap(); // Execute the program (without proving) @@ -78,10 +78,14 @@ impl Program { /// Writes inputs to `env_builder` in the order expected by the programs. pub(crate) fn write_inputs( + program_id: ProgramId, pre_states: &[AccountWithMetadata], instruction_data: &[u32], env_builder: &mut ExecutorEnvBuilder, ) -> Result<(), NssaError> { + env_builder + .write(&program_id) + .map_err(|e| NssaError::ProgramWriteInputFailed(e.to_string()))?; let pre_states = pre_states.to_vec(); env_builder .write(&(pre_states, instruction_data))