diff --git a/nssa/core/src/account/commitment.rs b/nssa/core/src/account/commitment.rs new file mode 100644 index 0000000..5bb7532 --- /dev/null +++ b/nssa/core/src/account/commitment.rs @@ -0,0 +1,2 @@ +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Commitment([u8; 32]); diff --git a/nssa/core/src/account/mod.rs b/nssa/core/src/account/mod.rs index 9d564c4..32b32da 100644 --- a/nssa/core/src/account/mod.rs +++ b/nssa/core/src/account/mod.rs @@ -2,6 +2,12 @@ use serde::{Deserialize, Serialize}; use crate::program::ProgramId; +mod commitment; +mod nullifier; + +pub use commitment::Commitment; +pub use nullifier::Nullifier; + pub type Nonce = u128; type Data = Vec; diff --git a/nssa/core/src/account/nullifier.rs b/nssa/core/src/account/nullifier.rs new file mode 100644 index 0000000..3280f19 --- /dev/null +++ b/nssa/core/src/account/nullifier.rs @@ -0,0 +1,2 @@ +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Nullifier([u8; 32]); diff --git a/nssa/src/lib.rs b/nssa/src/lib.rs index ab4fe02..83180e9 100644 --- a/nssa/src/lib.rs +++ b/nssa/src/lib.rs @@ -2,6 +2,7 @@ mod address; pub mod error; pub mod program; pub mod public_transaction; +mod privacy_preserving_transaction; mod signature; mod state; diff --git a/nssa/src/privacy_preserving_transaction/message.rs b/nssa/src/privacy_preserving_transaction/message.rs new file mode 100644 index 0000000..edea889 --- /dev/null +++ b/nssa/src/privacy_preserving_transaction/message.rs @@ -0,0 +1,16 @@ +use nssa_core::account::{Account, Commitment, Nonce, Nullifier}; + +use crate::Address; + +#[derive(Debug, Clone, PartialEq, Eq)] +struct EncryptedAccountData; + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Message { + public_addresses: Vec
, + nonces: Vec, + public_post_states: Vec, + encrypted_private_post_states: Vec, + new_commitments: Vec, + new_nullifiers: Vec, +} diff --git a/nssa/src/privacy_preserving_transaction/mod.rs b/nssa/src/privacy_preserving_transaction/mod.rs new file mode 100644 index 0000000..898d27c --- /dev/null +++ b/nssa/src/privacy_preserving_transaction/mod.rs @@ -0,0 +1,3 @@ +mod transaction; +mod message; +mod witness_set; diff --git a/nssa/src/privacy_preserving_transaction/transaction.rs b/nssa/src/privacy_preserving_transaction/transaction.rs new file mode 100644 index 0000000..7322c75 --- /dev/null +++ b/nssa/src/privacy_preserving_transaction/transaction.rs @@ -0,0 +1,10 @@ +use super::message::Message; +use super::witness_set::WitnessSet; + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct PrivacyPreservingTransaction { + message: Message, + witness_set: WitnessSet, +} + + diff --git a/nssa/src/privacy_preserving_transaction/witness_set.rs b/nssa/src/privacy_preserving_transaction/witness_set.rs new file mode 100644 index 0000000..132bb49 --- /dev/null +++ b/nssa/src/privacy_preserving_transaction/witness_set.rs @@ -0,0 +1,2 @@ +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct WitnessSet; diff --git a/nssa/src/program.rs b/nssa/src/program.rs index e2762ba..b4b15ec 100644 --- a/nssa/src/program.rs +++ b/nssa/src/program.rs @@ -57,6 +57,13 @@ impl Program { Ok(post_states) } + pub fn prove( + &self, + pre_states: &[AccountWithMetadata], + instruction_data: &InstructionData, + ) { + } + /// Writes inputs to `env_builder` in the order expected by the programs fn write_inputs( pre_states: &[AccountWithMetadata],