From d8ffa22b8106900607bd9660b5710dbe6617f20d Mon Sep 17 00:00:00 2001 From: Sergio Chouhy Date: Tue, 31 Mar 2026 01:39:02 -0300 Subject: [PATCH] add more clock accounts --- artifacts/program_methods/clock.bin | Bin 386132 -> 386144 bytes common/src/transaction.rs | 6 +- nssa/src/lib.rs | 4 +- nssa/src/state.rs | 172 ++++++++++++++++++++----- program_methods/guest/src/bin/clock.rs | 62 ++++++--- sequencer/core/src/lib.rs | 23 +++- 6 files changed, 208 insertions(+), 59 deletions(-) diff --git a/artifacts/program_methods/clock.bin b/artifacts/program_methods/clock.bin index d8e971b4fc5e2bc70cbf7a488720972d36099f3c..56db365c758e584c7791dba4ce36971900e0ac26 100644 GIT binary patch delta 99856 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 delta 99710 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 V+{u2*m#<5q+wZnraO9oq{srRq8{7Z@ diff --git a/common/src/transaction.rs b/common/src/transaction.rs index ec25a5ad..dea5a52b 100644 --- a/common/src/transaction.rs +++ b/common/src/transaction.rs @@ -49,7 +49,11 @@ impl NSSATransaction { pub fn clock_invocation(timestamp: nssa_core::Timestamp) -> Self { let message = nssa::public_transaction::Message::try_new( nssa::program::Program::clock().id(), - vec![nssa::CLOCK_PROGRAM_ACCOUNT_ID], + vec![ + nssa::CLOCK_01_PROGRAM_ACCOUNT_ID, + nssa::CLOCK_10_PROGRAM_ACCOUNT_ID, + nssa::CLOCK_50_PROGRAM_ACCOUNT_ID, + ], vec![], timestamp, ) diff --git a/nssa/src/lib.rs b/nssa/src/lib.rs index b6df2fdd..d6d62bf2 100644 --- a/nssa/src/lib.rs +++ b/nssa/src/lib.rs @@ -16,7 +16,9 @@ pub use program_deployment_transaction::ProgramDeploymentTransaction; pub use program_methods::PRIVACY_PRESERVING_CIRCUIT_ID; pub use public_transaction::PublicTransaction; pub use signature::{PrivateKey, PublicKey, Signature}; -pub use state::{CLOCK_PROGRAM_ACCOUNT_ID, V03State}; +pub use state::{ + CLOCK_10_PROGRAM_ACCOUNT_ID, CLOCK_50_PROGRAM_ACCOUNT_ID, CLOCK_01_PROGRAM_ACCOUNT_ID, V03State, +}; pub mod encoding; pub mod error; diff --git a/nssa/src/state.rs b/nssa/src/state.rs index 01e35d0c..32ed63b7 100644 --- a/nssa/src/state.rs +++ b/nssa/src/state.rs @@ -16,9 +16,15 @@ use crate::{ pub const MAX_NUMBER_CHAINED_CALLS: usize = 10; -pub const CLOCK_PROGRAM_ACCOUNT_ID: AccountId = +pub const CLOCK_01_PROGRAM_ACCOUNT_ID: AccountId = AccountId::new(*b"/LEZ/ClockProgramAccount/0000001"); +pub const CLOCK_10_PROGRAM_ACCOUNT_ID: AccountId = + AccountId::new(*b"/LEZ/ClockProgramAccount/0000010"); + +pub const CLOCK_50_PROGRAM_ACCOUNT_ID: AccountId = + AccountId::new(*b"/LEZ/ClockProgramAccount/0000050"); + #[derive(Clone, BorshSerialize, BorshDeserialize)] #[cfg_attr(test, derive(Debug, PartialEq, Eq))] pub struct CommitmentSet { @@ -160,17 +166,24 @@ impl V03State { fn insert_clock_accounts(&mut self, genesis_timestamp: nssa_core::Timestamp) { let mut data = [0u8; 16]; data[8..].copy_from_slice(&genesis_timestamp.to_le_bytes()); - self.public_state.insert( - CLOCK_PROGRAM_ACCOUNT_ID, - Account { - program_owner: Program::clock().id(), - data: data - .to_vec() - .try_into() - .expect("16 bytes should fit within accounts data"), - ..Account::default() - }, - ); + let clock_program_id = Program::clock().id(); + for account_id in [ + CLOCK_01_PROGRAM_ACCOUNT_ID, + CLOCK_10_PROGRAM_ACCOUNT_ID, + CLOCK_50_PROGRAM_ACCOUNT_ID, + ] { + self.public_state.insert( + account_id, + Account { + program_owner: clock_program_id, + data: data + .to_vec() + .try_into() + .expect("16 bytes should fit within accounts data"), + ..Account::default() + }, + ); + } } pub(crate) fn insert_program(&mut self, program: Program) { @@ -377,7 +390,10 @@ pub mod tests { program::Program, public_transaction, signature::PrivateKey, - state::{CLOCK_PROGRAM_ACCOUNT_ID, MAX_NUMBER_CHAINED_CALLS}, + state::{ + CLOCK_10_PROGRAM_ACCOUNT_ID, CLOCK_50_PROGRAM_ACCOUNT_ID, CLOCK_01_PROGRAM_ACCOUNT_ID, + MAX_NUMBER_CHAINED_CALLS, + }, }; impl V03State { @@ -515,17 +531,23 @@ pub mod tests { ..Account::default() }, ); - this.insert( - CLOCK_PROGRAM_ACCOUNT_ID, - Account { - program_owner: clock_program.id(), - data: [0u8; 16] - .to_vec() - .try_into() - .unwrap(), - ..Account::default() - }, - ); + for account_id in [ + CLOCK_01_PROGRAM_ACCOUNT_ID, + CLOCK_10_PROGRAM_ACCOUNT_ID, + CLOCK_50_PROGRAM_ACCOUNT_ID, + ] { + this.insert( + account_id, + Account { + program_owner: clock_program.id(), + data: [0u8; 16] + .to_vec() + .try_into() + .unwrap(), + ..Account::default() + }, + ); + } this }; let expected_builtin_programs = { @@ -684,7 +706,11 @@ pub mod tests { fn clock_transaction(timestamp: nssa_core::Timestamp) -> PublicTransaction { let message = public_transaction::Message::try_new( Program::clock().id(), - vec![CLOCK_PROGRAM_ACCOUNT_ID], + vec![ + CLOCK_01_PROGRAM_ACCOUNT_ID, + CLOCK_10_PROGRAM_ACCOUNT_ID, + CLOCK_50_PROGRAM_ACCOUNT_ID, + ], vec![], timestamp, ) @@ -695,11 +721,11 @@ pub mod tests { ) } - fn clock_account_data(state: &V03State) -> (u64, nssa_core::Timestamp) { - let data = state - .get_account_by_id(CLOCK_PROGRAM_ACCOUNT_ID) - .data - .into_inner(); + fn clock_account_data( + state: &V03State, + account_id: AccountId, + ) -> (u64, nssa_core::Timestamp) { + let data = state.get_account_by_id(account_id).data.into_inner(); let block_id = u64::from_le_bytes(data[..8].try_into().unwrap()); let timestamp = u64::from_le_bytes(data[8..].try_into().unwrap()); (block_id, timestamp) @@ -710,7 +736,7 @@ pub mod tests { let genesis_timestamp = 1_000_000u64; let state = V03State::new_with_genesis_accounts(&[], &[], genesis_timestamp); - let (block_id, timestamp) = clock_account_data(&state); + let (block_id, timestamp) = clock_account_data(&state, CLOCK_01_PROGRAM_ACCOUNT_ID); assert_eq!(block_id, 0); assert_eq!(timestamp, genesis_timestamp); @@ -723,7 +749,7 @@ pub mod tests { let tx = clock_transaction(1234); state.transition_from_public_transaction(&tx).unwrap(); - let (block_id, _) = clock_account_data(&state); + let (block_id, _) = clock_account_data(&state, CLOCK_01_PROGRAM_ACCOUNT_ID); assert_eq!(block_id, 1); } @@ -735,7 +761,7 @@ pub mod tests { let tx = clock_transaction(block_timestamp); state.transition_from_public_transaction(&tx).unwrap(); - let (_, timestamp) = clock_account_data(&state); + let (_, timestamp) = clock_account_data(&state, CLOCK_01_PROGRAM_ACCOUNT_ID); assert_eq!(timestamp, block_timestamp); } @@ -747,12 +773,90 @@ pub mod tests { let tx = clock_transaction(expected_block_id * 1000); state.transition_from_public_transaction(&tx).unwrap(); - let (block_id, timestamp) = clock_account_data(&state); + let (block_id, timestamp) = clock_account_data(&state, CLOCK_01_PROGRAM_ACCOUNT_ID); assert_eq!(block_id, expected_block_id); assert_eq!(timestamp, expected_block_id * 1000); } } + #[test] + fn clock_10_account_not_updated_when_block_id_not_multiple_of_10() { + let genesis_timestamp = 0u64; + let mut state = V03State::new_with_genesis_accounts(&[], &[], genesis_timestamp); + + // Run 9 clock ticks (block_ids 1..=9), none of which are multiples of 10. + for tick in 1u64..=9 { + let tx = clock_transaction(tick * 1000); + state.transition_from_public_transaction(&tx).unwrap(); + } + + let (block_id_10, timestamp_10) = + clock_account_data(&state, CLOCK_10_PROGRAM_ACCOUNT_ID); + // The 10-block account should still reflect genesis state. + assert_eq!(block_id_10, 0); + assert_eq!(timestamp_10, genesis_timestamp); + } + + #[test] + fn clock_10_account_updated_when_block_id_is_multiple_of_10() { + let mut state = V03State::new_with_genesis_accounts(&[], &[], 0); + + // Run 10 clock ticks so block_id reaches 10. + for tick in 1u64..=10 { + let tx = clock_transaction(tick * 1000); + state.transition_from_public_transaction(&tx).unwrap(); + } + + let (block_id_1, timestamp_1) = clock_account_data(&state, CLOCK_01_PROGRAM_ACCOUNT_ID); + let (block_id_10, timestamp_10) = + clock_account_data(&state, CLOCK_10_PROGRAM_ACCOUNT_ID); + assert_eq!(block_id_1, 10); + assert_eq!(block_id_10, 10); + assert_eq!(timestamp_10, timestamp_1); + } + + #[test] + fn clock_50_account_only_updated_at_multiples_of_50() { + let mut state = V03State::new_with_genesis_accounts(&[], &[], 0); + + // After 49 ticks the 50-block account should be unchanged. + for tick in 1u64..=49 { + let tx = clock_transaction(tick * 1000); + state.transition_from_public_transaction(&tx).unwrap(); + } + let (block_id_50, _) = clock_account_data(&state, CLOCK_50_PROGRAM_ACCOUNT_ID); + assert_eq!(block_id_50, 0); + + // Tick 50 — now the 50-block account should update. + let tx = clock_transaction(50 * 1000); + state.transition_from_public_transaction(&tx).unwrap(); + let (block_id_50, timestamp_50) = + clock_account_data(&state, CLOCK_50_PROGRAM_ACCOUNT_ID); + assert_eq!(block_id_50, 50); + assert_eq!(timestamp_50, 50 * 1000); + } + + #[test] + fn all_three_clock_accounts_updated_at_multiple_of_50() { + let mut state = V03State::new_with_genesis_accounts(&[], &[], 0); + + // Advance to block 50 (a multiple of both 10 and 50). + for tick in 1u64..=50 { + let tx = clock_transaction(tick * 1000); + state.transition_from_public_transaction(&tx).unwrap(); + } + + let (block_id_1, ts_1) = clock_account_data(&state, CLOCK_01_PROGRAM_ACCOUNT_ID); + let (block_id_10, ts_10) = clock_account_data(&state, CLOCK_10_PROGRAM_ACCOUNT_ID); + let (block_id_50, ts_50) = clock_account_data(&state, CLOCK_50_PROGRAM_ACCOUNT_ID); + + assert_eq!(block_id_1, 50); + assert_eq!(block_id_10, 50); + assert_eq!(block_id_50, 50); + assert_eq!(ts_1, ts_10); + assert_eq!(ts_1, ts_50); + } + #[test] fn program_should_fail_if_modifies_nonces() { let initial_data = [(AccountId::new([1; 32]), 100)]; diff --git a/program_methods/guest/src/bin/clock.rs b/program_methods/guest/src/bin/clock.rs index b9d679f1..f45b2317 100644 --- a/program_methods/guest/src/bin/clock.rs +++ b/program_methods/guest/src/bin/clock.rs @@ -1,7 +1,29 @@ -use nssa_core::program::{AccountPostState, ProgramInput, read_nssa_inputs, write_nssa_outputs}; +use nssa_core::{ + account::AccountWithMetadata, + program::{AccountPostState, ProgramInput, read_nssa_inputs, write_nssa_outputs}, +}; type Instruction = nssa_core::Timestamp; +fn update_if_multiple( + pre: AccountWithMetadata, + divisor: u64, + current_block_id: u64, + updated_data: [u8; 16], +) -> (AccountWithMetadata, AccountPostState) { + if current_block_id % divisor == 0 { + let mut post_account = pre.account.clone(); + post_account.data = updated_data + .to_vec() + .try_into() + .expect("16 bytes should fit in account data"); + (pre, AccountPostState::new(post_account)) + } else { + let post = AccountPostState::new(pre.account.clone()); + (pre, post) + } +} + fn main() { let ( ProgramInput { @@ -11,31 +33,33 @@ fn main() { instruction_words, ) = read_nssa_inputs::(); - let Ok([pre]) = <[_; 1]>::try_from(pre_states) else { + let Ok([pre_01, pre_10, pre_50]) = <[_; 3]>::try_from(pre_states) else { return; }; - let account_pre = &pre.account; - let account_pre_data = account_pre.data.clone().into_inner(); - let block_id = u64::from_le_bytes( - account_pre_data[..8] + let prev_block_id = u64::from_le_bytes( + pre_01.account.data.clone().into_inner()[..8] .try_into() - .expect("Block context program account data should contain a LE-encoded block_id u64"), + .expect("Clock account data should contain a LE-encoded block_id u64"), ); - - let mut account_post = account_pre.clone(); - let next_block_id = block_id + let current_block_id = prev_block_id .checked_add(1) .expect("Next block id should be within u64 boundaries"); - let mut data = [0u8; 16]; - data[..8].copy_from_slice(&next_block_id.to_le_bytes()); - data[8..].copy_from_slice(×tamp.to_le_bytes()); - account_post.data = data - .to_vec() - .try_into() - .expect("16 bytes should fit in account data"); - let post = AccountPostState::new(account_post); + let updated_data = { + let mut data = [0u8; 16]; + data[..8].copy_from_slice(¤t_block_id.to_le_bytes()); + data[8..].copy_from_slice(×tamp.to_le_bytes()); + data + }; - write_nssa_outputs(instruction_words, vec![pre], vec![post]); + let (pre_01, post_01) = update_if_multiple(pre_01, 1, current_block_id, updated_data); + let (pre_10, post_10) = update_if_multiple(pre_10, 10, current_block_id, updated_data); + let (pre_50, post_50) = update_if_multiple(pre_50, 50, current_block_id, updated_data); + + write_nssa_outputs( + instruction_words, + vec![pre_01, pre_10, pre_50], + vec![post_01, post_10, post_50], + ); } diff --git a/sequencer/core/src/lib.rs b/sequencer/core/src/lib.rs index 25334ede..a4a0b3ab 100644 --- a/sequencer/core/src/lib.rs +++ b/sequencer/core/src/lib.rs @@ -207,7 +207,22 @@ impl SequencerCore SequencerCore p.message().program_id == clock_program_id, - NSSATransaction::PrivacyPreserving(pp) => pp - .public_post_state_for(&nssa::CLOCK_PROGRAM_ACCOUNT_ID) - .is_some_and(|post| post != &clock_account_pre), + NSSATransaction::PrivacyPreserving(pp) => clock_accounts_pre + .iter() + .any(|(id, pre)| pp.public_post_state_for(id).is_some_and(|post| post != pre)), NSSATransaction::ProgramDeployment(_) => false, }; if touches_system {