2025-07-17 15:34:35 -03:00
|
|
|
use core::{
|
|
|
|
|
account::Account,
|
|
|
|
|
bytes_to_words, hash,
|
|
|
|
|
input::InputVisibiility,
|
|
|
|
|
types::{Address, Commitment, Key, Nullifier},
|
|
|
|
|
};
|
|
|
|
|
|
2025-07-17 16:05:24 -03:00
|
|
|
use nssa::program::{PinataProgram, TransferProgram};
|
2025-07-17 15:34:35 -03:00
|
|
|
use risc0_zkvm::Receipt;
|
2025-07-17 13:34:12 -03:00
|
|
|
|
2025-07-18 08:24:50 -03:00
|
|
|
use crate::mocked_components::sequencer::MockedSequencer;
|
|
|
|
|
use crate::mocked_components::{client::MockedClient, ACCOUNTS_PRIVATE_KEYS};
|
2025-07-17 12:46:57 -03:00
|
|
|
|
2025-07-17 17:03:18 -03:00
|
|
|
mod mocked_components;
|
2025-07-17 12:46:57 -03:00
|
|
|
|
|
|
|
|
fn main() {
|
2025-07-17 13:34:12 -03:00
|
|
|
let mut sequencer = MockedSequencer::new();
|
|
|
|
|
let addresses = sequencer.addresses();
|
2025-07-17 15:34:35 -03:00
|
|
|
println!("addresses: {:?}", addresses);
|
2025-07-18 09:55:23 -03:00
|
|
|
println!("🚀 Initial balances");
|
2025-07-17 13:34:12 -03:00
|
|
|
sequencer.print();
|
|
|
|
|
|
|
|
|
|
// A public execution of the Transfer Program
|
2025-07-18 11:24:15 -03:00
|
|
|
MockedClient::transfer_public(&addresses[1], &addresses[2], 10, &mut sequencer).unwrap();
|
2025-07-18 09:55:23 -03:00
|
|
|
println!("🚀 Balances after transfer");
|
2025-07-17 13:34:12 -03:00
|
|
|
sequencer.print();
|
|
|
|
|
|
2025-07-17 15:34:35 -03:00
|
|
|
// A shielded execution of the Transfer Program
|
2025-07-17 17:03:18 -03:00
|
|
|
let private_account_2 =
|
2025-07-18 11:19:08 -03:00
|
|
|
MockedClient::transfer_shielded(&addresses[1], &addresses[2], 15, &mut sequencer).unwrap();
|
2025-07-17 15:34:35 -03:00
|
|
|
println!("Balances after shielded execution");
|
|
|
|
|
sequencer.print();
|
2025-07-17 13:34:12 -03:00
|
|
|
|
|
|
|
|
// A private execution of the Transfer Program
|
2025-07-18 09:55:23 -03:00
|
|
|
let [_, private_account_1] = MockedClient::transfer_private(
|
|
|
|
|
private_account_2,
|
2025-07-17 15:34:35 -03:00
|
|
|
&ACCOUNTS_PRIVATE_KEYS[1], // <-- this is shifted 🫠
|
|
|
|
|
&addresses[3],
|
|
|
|
|
8,
|
|
|
|
|
&mut sequencer,
|
2025-07-18 11:19:08 -03:00
|
|
|
)
|
|
|
|
|
.unwrap();
|
2025-07-18 09:55:23 -03:00
|
|
|
println!("🚀 Balances after shielded execution");
|
2025-07-17 15:34:35 -03:00
|
|
|
sequencer.print();
|
|
|
|
|
|
|
|
|
|
// A deshielded execution of the Transfer Program
|
2025-07-18 08:56:12 -03:00
|
|
|
MockedClient::transfer_deshielded(
|
2025-07-18 09:55:23 -03:00
|
|
|
private_account_1,
|
2025-07-17 15:34:35 -03:00
|
|
|
&ACCOUNTS_PRIVATE_KEYS[0],
|
|
|
|
|
&addresses[0],
|
|
|
|
|
1,
|
|
|
|
|
&mut sequencer,
|
2025-07-18 11:19:08 -03:00
|
|
|
)
|
|
|
|
|
.unwrap();
|
2025-07-18 09:55:23 -03:00
|
|
|
println!("🚀 Balances after deshielded execution");
|
2025-07-17 15:34:35 -03:00
|
|
|
sequencer.print();
|
2025-07-17 16:05:24 -03:00
|
|
|
|
|
|
|
|
// A public execution of the Pinata program
|
|
|
|
|
let preimage = bytes_to_words(b"NSSA Selective privacy is great!").to_vec();
|
|
|
|
|
sequencer
|
2025-07-18 10:09:12 -03:00
|
|
|
.process_public_execution::<PinataProgram>(&[addresses[0], addresses[3]], preimage)
|
2025-07-17 16:05:24 -03:00
|
|
|
.unwrap();
|
2025-07-18 09:55:23 -03:00
|
|
|
println!("🚀 Balances after public piñata execution");
|
2025-07-17 16:05:24 -03:00
|
|
|
sequencer.print();
|
2025-07-17 15:34:35 -03:00
|
|
|
}
|