Sergio Chouhy 88740c29c2 refactor
2025-07-17 17:08:16 -03:00

68 lines
2.1 KiB
Rust
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

use core::{
account::Account,
bytes_to_words, hash,
input::InputVisibiility,
types::{Address, Commitment, Key, Nullifier},
};
use nssa::program::{PinataProgram, TransferProgram};
use risc0_zkvm::Receipt;
use crate::mocked_components::client::MockedClient;
use crate::mocked_components::sequencer::{MockedSequencer, ACCOUNTS_PRIVATE_KEYS};
mod mocked_components;
fn main() {
let mut sequencer = MockedSequencer::new();
let addresses = sequencer.addresses();
println!("addresses: {:?}", addresses);
println!("1⃣ 🚀 Initial balances");
sequencer.print();
// A public execution of the Transfer Program
let sender_addr = addresses[1];
let receiver_addr = addresses[2];
sequencer
.invoke_public::<TransferProgram>(&[sender_addr, receiver_addr], 10)
.unwrap();
println!("2⃣ 🚀 Balances after transfer");
sequencer.print();
// A shielded execution of the Transfer Program
let private_account_2 =
MockedClient::send_shielded(&addresses[1], &addresses[2], 15, &mut sequencer);
println!("Balances after shielded execution");
sequencer.print();
// A private execution of the Transfer Program
let private_account_1 = MockedClient::send_private(
&private_account_2,
&ACCOUNTS_PRIVATE_KEYS[1], // <-- this is shifted 🫠
&addresses[3],
8,
&mut sequencer,
);
println!("3⃣ 🚀 Balances after shielded execution");
sequencer.print();
// A deshielded execution of the Transfer Program
MockedClient::send_deshielded(
&private_account_1,
&ACCOUNTS_PRIVATE_KEYS[0],
&addresses[0],
1,
&mut sequencer,
);
println!("4⃣ 🚀 Balances after deshielded execution");
sequencer.print();
// A public execution of the Pinata program
let preimage = bytes_to_words(b"NSSA Selective privacy is great!").to_vec();
sequencer
.invoke_public::<PinataProgram>(&[addresses[0], addresses[3]], preimage)
.unwrap();
println!("5⃣ 🚀 Balances after public piñata execution");
sequencer.print();
}