use nssa::{ AccountId, PublicTransaction, program::Program, public_transaction::{Message, WitnessSet}, }; use wallet::{WalletCore, helperfunctions::fetch_config}; // Before running this example, compile the `hello_world.rs` guest program with: // // cargo risczero build --manifest-path examples/program_deployment/methods/guest/Cargo.toml // // Note: you must run the above command from the root of the `lssa` repository. // Note: The compiled binary file is stored in // methods/guest/target/riscv32im-risc0-zkvm-elf/docker/hello_world.bin // // // Usage: // cargo run --bin run_hello_world /path/to/guest/binary // // Example: // cargo run --bin run_hello_world \ // methods/guest/target/riscv32im-risc0-zkvm-elf/docker/hello_world.bin \ // Ds8q5PjLcKwwV97Zi7duhRVF9uwA2PuYMoLL7FwCzsXE #[tokio::main] async fn main() { // Load wallet config and storage let wallet_config = fetch_config().await.unwrap(); let wallet_core = WalletCore::start_from_config_update_chain(wallet_config) .await .unwrap(); // Parse arguments // First argument is the path to the program binary let program_path = std::env::args_os().nth(1).unwrap().into_string().unwrap(); // Second argument is the account_id let account_id: AccountId = std::env::args_os() .nth(2) .unwrap() .into_string() .unwrap() .parse() .unwrap(); // Load the program let bytecode: Vec = std::fs::read(program_path).unwrap(); let program = Program::new(bytecode).unwrap(); // Define the desired greeting in ASCII let greeting: Vec = vec![72, 111, 108, 97, 32, 109, 117, 110, 100, 111, 33]; // Construct the public transaction // No nonces nor signing keys are needed for this example. Check out the // `run_hello_world_with_authorization` on how to use them. let nonces = vec![]; let signing_keys = []; let message = Message::try_new(program.id(), vec![account_id], nonces, greeting).unwrap(); let witness_set = WitnessSet::for_message(&message, &signing_keys); let tx = PublicTransaction::new(message, witness_set); // Submit the transaction let _response = wallet_core .sequencer_client .send_tx_public(tx) .await .unwrap(); }