From 54c54199d77d07f5e3cc7ae388b326c9f2acfaeb Mon Sep 17 00:00:00 2001 From: Sergio Chouhy Date: Tue, 14 Oct 2025 17:15:04 -0300 Subject: [PATCH] wip --- nssa/src/lib.rs | 1 + .../program_deployment_transaction/message.rs | 4 ++++ .../src/program_deployment_transaction/mod.rs | 2 ++ .../transaction.rs | 22 +++++++++++++++++++ nssa/src/state.rs | 16 +++++++------- 5 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 nssa/src/program_deployment_transaction/message.rs create mode 100644 nssa/src/program_deployment_transaction/mod.rs create mode 100644 nssa/src/program_deployment_transaction/transaction.rs diff --git a/nssa/src/lib.rs b/nssa/src/lib.rs index 21defa9..b7e041d 100644 --- a/nssa/src/lib.rs +++ b/nssa/src/lib.rs @@ -4,6 +4,7 @@ mod merkle_tree; pub mod privacy_preserving_transaction; pub mod program; pub mod public_transaction; +pub mod program_deployment_transaction; mod signature; mod state; diff --git a/nssa/src/program_deployment_transaction/message.rs b/nssa/src/program_deployment_transaction/message.rs new file mode 100644 index 0000000..4601975 --- /dev/null +++ b/nssa/src/program_deployment_transaction/message.rs @@ -0,0 +1,4 @@ +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Message { + pub(crate) bytecode: Vec, +} diff --git a/nssa/src/program_deployment_transaction/mod.rs b/nssa/src/program_deployment_transaction/mod.rs new file mode 100644 index 0000000..6aa1cda --- /dev/null +++ b/nssa/src/program_deployment_transaction/mod.rs @@ -0,0 +1,2 @@ +mod message; +mod transaction; diff --git a/nssa/src/program_deployment_transaction/transaction.rs b/nssa/src/program_deployment_transaction/transaction.rs new file mode 100644 index 0000000..36f3de0 --- /dev/null +++ b/nssa/src/program_deployment_transaction/transaction.rs @@ -0,0 +1,22 @@ +use std::collections::HashMap; + +use nssa_core::{account::Account, address::Address}; + +use crate::{V01State, error::NssaError, program_deployment_transaction::message::Message}; + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct ProgramDeploymentTransaction { + message: Message, +} + +impl ProgramDeploymentTransaction { + pub fn new(message: Message) -> Self { + Self { message } + } + pub(crate) fn validate_and_produce_public_state_diff( + &self, + state: &mut V01State, + ) -> Result, NssaError> { + todo!() + } +} diff --git a/nssa/src/state.rs b/nssa/src/state.rs index 3066809..b93794c 100644 --- a/nssa/src/state.rs +++ b/nssa/src/state.rs @@ -61,7 +61,7 @@ type NullifierSet = HashSet; pub struct V01State { public_state: HashMap, private_state: (CommitmentSet, NullifierSet), - builtin_programs: HashMap, + programs: HashMap, } impl V01State { @@ -90,7 +90,7 @@ impl V01State { let mut this = Self { public_state, private_state: (private_state, NullifierSet::new()), - builtin_programs: HashMap::new(), + programs: HashMap::new(), }; this.insert_program(Program::authenticated_transfer_program()); @@ -100,7 +100,7 @@ impl V01State { } pub(crate) fn insert_program(&mut self, program: Program) { - self.builtin_programs.insert(program.id(), program); + self.programs.insert(program.id(), program); } pub fn transition_from_public_transaction( @@ -173,7 +173,7 @@ impl V01State { } pub(crate) fn builtin_programs(&self) -> &HashMap { - &self.builtin_programs + &self.programs } pub fn commitment_set_digest(&self) -> CommitmentSetDigest { @@ -312,7 +312,7 @@ pub mod tests { let state = V01State::new_with_genesis_accounts(&initial_data, &[]); assert_eq!(state.public_state, expected_public_state); - assert_eq!(state.builtin_programs, expected_builtin_programs); + assert_eq!(state.programs, expected_builtin_programs); } #[test] @@ -320,11 +320,11 @@ pub mod tests { let mut state = V01State::new_with_genesis_accounts(&[], &[]); let program_to_insert = Program::simple_balance_transfer(); let program_id = program_to_insert.id(); - assert!(!state.builtin_programs.contains_key(&program_id)); + assert!(!state.programs.contains_key(&program_id)); state.insert_program(program_to_insert); - assert!(state.builtin_programs.contains_key(&program_id)); + assert!(state.programs.contains_key(&program_id)); } #[test] @@ -357,7 +357,7 @@ pub mod tests { let builtin_programs = state.builtin_programs(); - assert_eq!(builtin_programs, &state.builtin_programs); + assert_eq!(builtin_programs, &state.programs); } #[test]