From 3813d952f8f6f87a5332e9c0b2246e610c11d205 Mon Sep 17 00:00:00 2001 From: raychu86 <14917648+raychu86@users.noreply.github.com> Date: Thu, 29 Feb 2024 19:40:20 -0800 Subject: [PATCH 1/9] Add check and abort transactions in VM::speculate --- ledger/src/advance.rs | 10 ++- synthesizer/src/vm/finalize.rs | 64 ++++++++++++++++--- synthesizer/src/vm/mod.rs | 4 +- synthesizer/src/vm/verify.rs | 2 +- .../tests/test_vm_execute_and_finalize.rs | 30 +++++++-- 5 files changed, 89 insertions(+), 21 deletions(-) diff --git a/ledger/src/advance.rs b/ledger/src/advance.rs index 62a2775832..8fdb2315b7 100644 --- a/ledger/src/advance.rs +++ b/ledger/src/advance.rs @@ -16,10 +16,11 @@ use super::*; impl> Ledger { /// Returns a candidate for the next block in the ledger, using a committed subdag and its transmissions. - pub fn prepare_advance_to_next_quorum_block( + pub fn prepare_advance_to_next_quorum_block( &self, subdag: Subdag, transmissions: IndexMap, Transmission>, + rng: &mut R, ) -> Result> { // Retrieve the latest block as the previous block (for the next block). let previous_block = self.latest_block(); @@ -30,7 +31,7 @@ impl> Ledger { ensure!(ratifications.is_empty(), "Ratifications are currently unsupported from the memory pool"); // Construct the block template. let (header, ratifications, solutions, aborted_solution_ids, transactions, aborted_transaction_ids) = - self.construct_block_template(&previous_block, Some(&subdag), ratifications, solutions, transactions)?; + self.construct_block_template(&previous_block, Some(&subdag), ratifications, solutions, transactions, rng)?; // Construct the new quorum block. Block::new_quorum( @@ -68,6 +69,7 @@ impl> Ledger { candidate_ratifications, candidate_solutions, candidate_transactions, + rng, )?; // Construct the new beacon block. @@ -168,13 +170,14 @@ where impl> Ledger { /// Constructs a block template for the next block in the ledger. #[allow(clippy::type_complexity)] - fn construct_block_template( + fn construct_block_template( &self, previous_block: &Block, subdag: Option<&Subdag>, candidate_ratifications: Vec>, candidate_solutions: Vec>, candidate_transactions: Vec>, + rng: &mut R, ) -> Result<( Header, Ratifications, @@ -317,6 +320,7 @@ impl> Ledger { candidate_ratifications, &solutions, candidate_transactions.iter(), + rng, )?; // Compute the ratifications root. diff --git a/synthesizer/src/vm/finalize.rs b/synthesizer/src/vm/finalize.rs index cd353ac1de..746afb4a39 100644 --- a/synthesizer/src/vm/finalize.rs +++ b/synthesizer/src/vm/finalize.rs @@ -16,6 +16,8 @@ use super::*; use ledger_committee::{MAX_DELEGATORS, MIN_DELEGATOR_STAKE, MIN_VALIDATOR_STAKE}; +use rand::{rngs::StdRng, SeedableRng}; + impl> VM { /// Speculates on the given list of transactions in the VM. /// @@ -28,31 +30,65 @@ impl> VM { /// `Ratify::BlockReward(block_reward)` and `Ratify::PuzzleReward(puzzle_reward)` /// to the front of the `ratifications` list. #[inline] - pub fn speculate<'a>( + pub fn speculate<'a, R: Rng + CryptoRng>( &self, state: FinalizeGlobalState, coinbase_reward: Option, candidate_ratifications: Vec>, candidate_solutions: &Solutions, candidate_transactions: impl ExactSizeIterator>, + rng: &mut R, ) -> Result<(Ratifications, Transactions, Vec, Vec>)> { let timer = timer!("VM::speculate"); + // TODO (raychu86): Clean up this logic and remove the extra collect. + // Ensure each transaction is well-formed and unique. Abort any transactions that are not. + let rngs = (0..candidate_transactions.len()).map(|_| StdRng::from_seed(rng.gen())).collect::>(); + let candidate_transactions: Vec<_> = candidate_transactions.collect(); + let checked_transactions: Vec<_> = cfg_into_iter!(candidate_transactions) + .zip(rngs) + .map(|(transaction, mut rng)| { + let error_message = match self.check_transaction(transaction, None, &mut rng) { + Ok(_) => None, + Err(e) => Some(e.to_string()), + }; + + (transaction, error_message) + }) + .collect(); + + // Separate the verified and aborted transactions. + let (verified_transactions, verification_aborted_transactions) = checked_transactions.into_iter().fold( + (Vec::new(), Vec::new()), + |(mut verified, mut aborted), (transaction, error_message)| { + match error_message { + None => verified.push(transaction), + Some(e) => aborted.push((transaction, e)), + }; + (verified, aborted) + }, + ); + // Performs a **dry-run** over the list of ratifications, solutions, and transactions. - let (ratifications, confirmed_transactions, aborted_transactions, ratified_finalize_operations) = self - .atomic_speculate( + let (ratifications, confirmed_transactions, speculation_aborted_transactions, ratified_finalize_operations) = + self.atomic_speculate( state, coinbase_reward, candidate_ratifications, candidate_solutions, - candidate_transactions, + verified_transactions.into_iter(), )?; + // Get the aborted transaction ids. + let verification_aborted_transaction_ids = verification_aborted_transactions.iter().map(|(tx, e)| (tx.id(), e)); + let speculation_aborted_transaction_ids = speculation_aborted_transactions.iter().map(|(tx, e)| (tx.id(), e)); + // Convert the aborted transactions into aborted transaction IDs. - let mut aborted_transaction_ids = Vec::with_capacity(aborted_transactions.len()); - for (tx, error) in aborted_transactions { - warn!("Speculation safely aborted a transaction - {error} ({})", tx.id()); - aborted_transaction_ids.push(tx.id()); + let mut aborted_transaction_ids = + Vec::with_capacity(verification_aborted_transactions.len() + speculation_aborted_transactions.len()); + for (tx_id, error) in verification_aborted_transaction_ids.chain(speculation_aborted_transaction_ids) { + warn!("Speculation safely aborted a transaction - {error} ({tx_id})"); + aborted_transaction_ids.push(tx_id); } finish!(timer, "Finished dry-run of the transactions"); @@ -1135,6 +1171,7 @@ finalize transfer_public: vec![], &None.into(), transactions.iter(), + rng, )?; // Construct the metadata associated with the block. @@ -1399,7 +1436,14 @@ finalize transfer_public: // Prepare the confirmed transactions. let (ratifications, confirmed_transactions, aborted_transaction_ids, _) = vm - .speculate(sample_finalize_state(1), None, vec![], &None.into(), [deployment_transaction.clone()].iter()) + .speculate( + sample_finalize_state(1), + None, + vec![], + &None.into(), + [deployment_transaction.clone()].iter(), + rng, + ) .unwrap(); assert_eq!(confirmed_transactions.len(), 1); assert!(aborted_transaction_ids.is_empty()); @@ -1687,7 +1731,7 @@ function ped_hash: // Speculatively execute the transaction. Ensure that this call does not panic and returns a rejected transaction. let (_, confirmed_transactions, aborted_transaction_ids, _) = vm - .speculate(sample_finalize_state(1), None, vec![], &None.into(), [transaction.clone()].iter()) + .speculate(sample_finalize_state(1), None, vec![], &None.into(), [transaction.clone()].iter(), rng) .unwrap(); assert!(aborted_transaction_ids.is_empty()); diff --git a/synthesizer/src/vm/mod.rs b/synthesizer/src/vm/mod.rs index ff71e846eb..466bc1b6dd 100644 --- a/synthesizer/src/vm/mod.rs +++ b/synthesizer/src/vm/mod.rs @@ -312,7 +312,7 @@ impl> VM { let state = FinalizeGlobalState::new_genesis::()?; // Speculate on the ratifications, solutions, and transactions. let (ratifications, transactions, aborted_transaction_ids, ratified_finalize_operations) = - self.speculate(state, None, ratifications, &solutions, transactions.iter())?; + self.speculate(state, None, ratifications, &solutions, transactions.iter(), rng)?; ensure!( aborted_transaction_ids.is_empty(), "Failed to initialize a genesis block - found aborted transaction IDs" @@ -699,7 +699,7 @@ function compute: // Construct the new block header. let (ratifications, transactions, aborted_transaction_ids, ratified_finalize_operations) = - vm.speculate(sample_finalize_state(1), None, vec![], &None.into(), transactions.iter())?; + vm.speculate(sample_finalize_state(1), None, vec![], &None.into(), transactions.iter(), rng)?; assert!(aborted_transaction_ids.is_empty()); // Construct the metadata associated with the block. diff --git a/synthesizer/src/vm/verify.rs b/synthesizer/src/vm/verify.rs index 2a97b6e8d5..48c33efa7b 100644 --- a/synthesizer/src/vm/verify.rs +++ b/synthesizer/src/vm/verify.rs @@ -489,7 +489,7 @@ mod tests { // Construct the new block header. let (ratifications, transactions, aborted_transaction_ids, ratified_finalize_operations) = vm - .speculate(sample_finalize_state(1), Some(0u64), vec![], &None.into(), [deployment_transaction].iter()) + .speculate(sample_finalize_state(1), Some(0u64), vec![], &None.into(), [deployment_transaction].iter(), rng) .unwrap(); assert!(aborted_transaction_ids.is_empty()); diff --git a/synthesizer/tests/test_vm_execute_and_finalize.rs b/synthesizer/tests/test_vm_execute_and_finalize.rs index d887ba43f4..01a5f282a7 100644 --- a/synthesizer/tests/test_vm_execute_and_finalize.rs +++ b/synthesizer/tests/test_vm_execute_and_finalize.rs @@ -91,7 +91,14 @@ fn run_test(test: &ProgramTest) -> serde_yaml::Mapping { ) .unwrap(); let (ratifications, transactions, aborted_transaction_ids, ratified_finalize_operations) = vm - .speculate(construct_finalize_global_state(&vm), Some(0u64), vec![], &None.into(), [transaction].iter()) + .speculate( + construct_finalize_global_state(&vm), + Some(0u64), + vec![], + &None.into(), + [transaction].iter(), + rng, + ) .unwrap(); assert!(aborted_transaction_ids.is_empty()); @@ -128,7 +135,14 @@ fn run_test(test: &ProgramTest) -> serde_yaml::Mapping { }; let (ratifications, transactions, aborted_transaction_ids, ratified_finalize_operations) = vm - .speculate(construct_finalize_global_state(&vm), Some(0u64), vec![], &None.into(), [transaction].iter()) + .speculate( + construct_finalize_global_state(&vm), + Some(0u64), + vec![], + &None.into(), + [transaction].iter(), + rng, + ) .unwrap(); assert!(aborted_transaction_ids.is_empty()); @@ -267,8 +281,14 @@ fn run_test(test: &ProgramTest) -> serde_yaml::Mapping { // Speculate on the ratifications, solutions, and transaction. let (ratifications, transactions, aborted_transaction_ids, ratified_finalize_operations) = match vm - .speculate(construct_finalize_global_state(&vm), Some(0u64), vec![], &None.into(), [transaction].iter()) - { + .speculate( + construct_finalize_global_state(&vm), + Some(0u64), + vec![], + &None.into(), + [transaction].iter(), + rng, + ) { Ok((ratifications, transactions, aborted_transaction_ids, ratified_finalize_operations)) => { result.insert( serde_yaml::Value::String("speculate".to_string()), @@ -403,7 +423,7 @@ fn construct_fee_records, R: Rng + CryptoRng } let (ratifications, transactions, aborted_transaction_ids, ratified_finalize_operations) = vm - .speculate(construct_finalize_global_state(vm), Some(0u64), vec![], &None.into(), transactions.iter()) + .speculate(construct_finalize_global_state(vm), Some(0u64), vec![], &None.into(), transactions.iter(), rng) .unwrap(); assert!(aborted_transaction_ids.is_empty()); From f92f6184ba1edabb741d577acba39bfcedddb1a5 Mon Sep 17 00:00:00 2001 From: raychu86 <14917648+raychu86@users.noreply.github.com> Date: Thu, 29 Feb 2024 21:42:26 -0800 Subject: [PATCH 2/9] Ignore tx verification in speculate for the genesis block --- synthesizer/src/vm/finalize.rs | 62 ++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/synthesizer/src/vm/finalize.rs b/synthesizer/src/vm/finalize.rs index 746afb4a39..a66e8d1e71 100644 --- a/synthesizer/src/vm/finalize.rs +++ b/synthesizer/src/vm/finalize.rs @@ -42,32 +42,42 @@ impl> VM { let timer = timer!("VM::speculate"); // TODO (raychu86): Clean up this logic and remove the extra collect. - // Ensure each transaction is well-formed and unique. Abort any transactions that are not. - let rngs = (0..candidate_transactions.len()).map(|_| StdRng::from_seed(rng.gen())).collect::>(); - let candidate_transactions: Vec<_> = candidate_transactions.collect(); - let checked_transactions: Vec<_> = cfg_into_iter!(candidate_transactions) - .zip(rngs) - .map(|(transaction, mut rng)| { - let error_message = match self.check_transaction(transaction, None, &mut rng) { - Ok(_) => None, - Err(e) => Some(e.to_string()), - }; - - (transaction, error_message) - }) - .collect(); - - // Separate the verified and aborted transactions. - let (verified_transactions, verification_aborted_transactions) = checked_transactions.into_iter().fold( - (Vec::new(), Vec::new()), - |(mut verified, mut aborted), (transaction, error_message)| { - match error_message { - None => verified.push(transaction), - Some(e) => aborted.push((transaction, e)), - }; - (verified, aborted) - }, - ); + // If the transactions are not part of the genesis block, ensure each transaction is well-formed and unique. Abort any transactions that are not. + let block_store = self.block_store(); + let candidate_transactions = candidate_transactions.collect::>(); + let (verified_transactions, verification_aborted_transactions) = match block_store + .find_block_height_from_state_root(block_store.current_state_root())? + { + // If the current state root does not exist in the block store, then the genesis block has not been introduced yet. + None => (candidate_transactions, vec![]), + // Verify transactions for all non-genesis cases. + _ => { + let rngs = (0..candidate_transactions.len()).map(|_| StdRng::from_seed(rng.gen())).collect::>(); + // Verify the transactions and collect the error message if there is one. + let checked_transactions: Vec<_> = cfg_into_iter!(candidate_transactions) + .zip(rngs) + .map(|(transaction, mut rng)| { + let error_message = match self.check_transaction(transaction, None, &mut rng) { + Ok(_) => None, + Err(e) => Some(e.to_string()), + }; + (transaction, error_message) + }) + .collect(); + + // Separate the verified and aborted transactions. + checked_transactions.into_iter().fold( + (Vec::new(), Vec::new()), + |(mut verified, mut aborted), (transaction, error_message)| { + match error_message { + None => verified.push(transaction), + Some(e) => aborted.push((transaction, e)), + }; + (verified, aborted) + }, + ) + } + }; // Performs a **dry-run** over the list of ratifications, solutions, and transactions. let (ratifications, confirmed_transactions, speculation_aborted_transactions, ratified_finalize_operations) = From c8037e7e848e2682a39de9ae41c58a2082b4693a Mon Sep 17 00:00:00 2001 From: raychu86 <14917648+raychu86@users.noreply.github.com> Date: Thu, 29 Feb 2024 21:43:49 -0800 Subject: [PATCH 3/9] Add test for aborting transaction in speculate --- ledger/src/tests.rs | 60 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/ledger/src/tests.rs b/ledger/src/tests.rs index 26744f15c4..0171d2ca2e 100644 --- a/ledger/src/tests.rs +++ b/ledger/src/tests.rs @@ -1251,6 +1251,66 @@ function simple_output: assert_eq!(block.aborted_transaction_ids(), &vec![transaction_3_id]); } +#[test] +fn test_abort_invalid_transaction() { + let rng = &mut TestRng::default(); + + // Initialize the test environment. + let crate::test_helpers::TestEnv { ledger, private_key, address, .. } = crate::test_helpers::sample_test_env(rng); + + // Initialize a new VM. + let vm = VM::from(ConsensusStore::>::open(None).unwrap()).unwrap(); + + // Construct a custom genesis block. + let custom_genesis = vm.genesis_beacon(&private_key, rng).unwrap(); + + // Update the VM. + vm.add_next_block(&custom_genesis).unwrap(); + + // Generate a transaction that will be invalid on another network. + let inputs = [Value::from_str(&format!("{address}")).unwrap(), Value::from_str("1000u64").unwrap()]; + let invalid_transaction = vm + .execute(&private_key, ("credits.aleo", "transfer_public"), inputs.clone().into_iter(), None, 0, None, rng) + .unwrap(); + let invalid_transaction_id = invalid_transaction.id(); + + // Check that the ledger deems this transaction invalid. + assert!(ledger.check_transaction_basic(&invalid_transaction, None, rng).is_err()); + + // Construct valid transactions for the ledger. + let valid_transaction_1 = ledger + .vm + .execute(&private_key, ("credits.aleo", "transfer_public"), inputs.clone().into_iter(), None, 0, None, rng) + .unwrap(); + let valid_transaction_2 = ledger + .vm + .execute(&private_key, ("credits.aleo", "transfer_public"), inputs.into_iter(), None, 0, None, rng) + .unwrap(); + let valid_transaction_id_1 = valid_transaction_1.id(); + let valid_transaction_id_2 = valid_transaction_2.id(); + + // Create a block. + let block = ledger + .prepare_advance_to_next_beacon_block( + &private_key, + vec![], + vec![], + vec![valid_transaction_1, invalid_transaction, valid_transaction_2], + rng, + ) + .unwrap(); + + // Check that the block aborts the invalid transaction. + assert_eq!(block.aborted_transaction_ids(), &vec![invalid_transaction_id]); + assert_eq!(block.transaction_ids().collect::>(), vec![&valid_transaction_id_1, &valid_transaction_id_2]); + + // Check that the next block is valid. + ledger.check_next_block(&block, rng).unwrap(); + + // Add the block to the ledger. + ledger.advance_to_next_block(&block).unwrap(); +} + #[test] fn test_deployment_duplicate_program_id() { let rng = &mut TestRng::default(); From 9b0a20b6db442b3bc4183060668a10c445eadfd1 Mon Sep 17 00:00:00 2001 From: raychu86 <14917648+raychu86@users.noreply.github.com> Date: Sat, 2 Mar 2024 11:26:47 -0800 Subject: [PATCH 4/9] Use partition_map --- synthesizer/Cargo.toml | 6 +++--- synthesizer/src/vm/finalize.rs | 28 ++++++---------------------- synthesizer/src/vm/mod.rs | 1 + 3 files changed, 10 insertions(+), 25 deletions(-) diff --git a/synthesizer/Cargo.toml b/synthesizer/Cargo.toml index 5d12a29164..42a5bdfdbb 100644 --- a/synthesizer/Cargo.toml +++ b/synthesizer/Cargo.toml @@ -131,6 +131,9 @@ version = "1.0" version = "2.0" features = [ "serde", "rayon" ] +[dependencies.itertools] +version = "0.11.0" + [dependencies.lru] version = "0.12" @@ -153,9 +156,6 @@ version = "1.0.73" [dev-dependencies.criterion] version = "0.5" -[dev-dependencies.itertools] -version = "0.11.0" - [dev-dependencies.ledger-committee] package = "snarkvm-ledger-committee" path = "../ledger/committee" diff --git a/synthesizer/src/vm/finalize.rs b/synthesizer/src/vm/finalize.rs index a66e8d1e71..821acb6cad 100644 --- a/synthesizer/src/vm/finalize.rs +++ b/synthesizer/src/vm/finalize.rs @@ -54,28 +54,12 @@ impl> VM { _ => { let rngs = (0..candidate_transactions.len()).map(|_| StdRng::from_seed(rng.gen())).collect::>(); // Verify the transactions and collect the error message if there is one. - let checked_transactions: Vec<_> = cfg_into_iter!(candidate_transactions) - .zip(rngs) - .map(|(transaction, mut rng)| { - let error_message = match self.check_transaction(transaction, None, &mut rng) { - Ok(_) => None, - Err(e) => Some(e.to_string()), - }; - (transaction, error_message) - }) - .collect(); - - // Separate the verified and aborted transactions. - checked_transactions.into_iter().fold( - (Vec::new(), Vec::new()), - |(mut verified, mut aborted), (transaction, error_message)| { - match error_message { - None => verified.push(transaction), - Some(e) => aborted.push((transaction, e)), - }; - (verified, aborted) - }, - ) + cfg_into_iter!(candidate_transactions).zip(rngs).partition_map(|(transaction, mut rng)| { + match self.check_transaction(transaction, None, &mut rng) { + Ok(_) => Either::Left(transaction), + Err(e) => Either::Right((transaction, e.to_string())), + } + }) } }; diff --git a/synthesizer/src/vm/mod.rs b/synthesizer/src/vm/mod.rs index 466bc1b6dd..b67ad4038f 100644 --- a/synthesizer/src/vm/mod.rs +++ b/synthesizer/src/vm/mod.rs @@ -60,6 +60,7 @@ use synthesizer_program::{FinalizeGlobalState, FinalizeOperation, FinalizeStoreT use aleo_std::prelude::{finish, lap, timer}; use indexmap::{IndexMap, IndexSet}; +use itertools::Either; use lru::LruCache; use parking_lot::{Mutex, RwLock}; use std::{num::NonZeroUsize, sync::Arc}; From da76aa33aeda897679083477161e0cf6ca60f218 Mon Sep 17 00:00:00 2001 From: raychu86 <14917648+raychu86@users.noreply.github.com> Date: Sat, 2 Mar 2024 12:33:54 -0800 Subject: [PATCH 5/9] Use the correct ordering of the aborted tx ids --- synthesizer/src/vm/finalize.rs | 56 +++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/synthesizer/src/vm/finalize.rs b/synthesizer/src/vm/finalize.rs index 821acb6cad..a1fe576396 100644 --- a/synthesizer/src/vm/finalize.rs +++ b/synthesizer/src/vm/finalize.rs @@ -41,27 +41,28 @@ impl> VM { ) -> Result<(Ratifications, Transactions, Vec, Vec>)> { let timer = timer!("VM::speculate"); - // TODO (raychu86): Clean up this logic and remove the extra collect. + // Collect the candidate transactions into a vector. + let candidate_transactions: Vec<_> = candidate_transactions.collect::>(); + let candidate_transaction_ids: Vec<_> = candidate_transactions.iter().map(|tx| tx.id()).collect(); + // If the transactions are not part of the genesis block, ensure each transaction is well-formed and unique. Abort any transactions that are not. - let block_store = self.block_store(); - let candidate_transactions = candidate_transactions.collect::>(); - let (verified_transactions, verification_aborted_transactions) = match block_store - .find_block_height_from_state_root(block_store.current_state_root())? - { - // If the current state root does not exist in the block store, then the genesis block has not been introduced yet. - None => (candidate_transactions, vec![]), - // Verify transactions for all non-genesis cases. - _ => { - let rngs = (0..candidate_transactions.len()).map(|_| StdRng::from_seed(rng.gen())).collect::>(); - // Verify the transactions and collect the error message if there is one. - cfg_into_iter!(candidate_transactions).zip(rngs).partition_map(|(transaction, mut rng)| { - match self.check_transaction(transaction, None, &mut rng) { + let (verified_transactions, verification_aborted_transactions) = + match self.block_store().find_block_height_from_state_root(self.block_store().current_state_root())? { + // If the current state root does not exist in the block store, then the genesis block has not been introduced yet. + None => (candidate_transactions, vec![]), + // Verify transactions for all non-genesis cases. + _ => { + let rngs = + (0..candidate_transactions.len()).map(|_| StdRng::from_seed(rng.gen())).collect::>(); + // Verify the transactions and collect the error message if there is one. + cfg_into_iter!(candidate_transactions).zip(rngs).partition_map(|(transaction, mut rng)| match self + .check_transaction(transaction, None, &mut rng) + { Ok(_) => Either::Left(transaction), Err(e) => Either::Right((transaction, e.to_string())), - } - }) - } - }; + }) + } + }; // Performs a **dry-run** over the list of ratifications, solutions, and transactions. let (ratifications, confirmed_transactions, speculation_aborted_transactions, ratified_finalize_operations) = @@ -76,14 +77,19 @@ impl> VM { // Get the aborted transaction ids. let verification_aborted_transaction_ids = verification_aborted_transactions.iter().map(|(tx, e)| (tx.id(), e)); let speculation_aborted_transaction_ids = speculation_aborted_transactions.iter().map(|(tx, e)| (tx.id(), e)); + let unordered_aborted_transaction_ids: IndexMap = + verification_aborted_transaction_ids.chain(speculation_aborted_transaction_ids).collect(); - // Convert the aborted transactions into aborted transaction IDs. - let mut aborted_transaction_ids = - Vec::with_capacity(verification_aborted_transactions.len() + speculation_aborted_transactions.len()); - for (tx_id, error) in verification_aborted_transaction_ids.chain(speculation_aborted_transaction_ids) { - warn!("Speculation safely aborted a transaction - {error} ({tx_id})"); - aborted_transaction_ids.push(tx_id); - } + // Filter and order the aborted transaction ids according to candidate_transactions + let aborted_transaction_ids: Vec<_> = candidate_transaction_ids + .into_iter() + .filter_map(|tx_id| { + unordered_aborted_transaction_ids.get(&tx_id).map(|error| { + warn!("Speculation safely aborted a transaction - {error} ({tx_id})"); + tx_id + }) + }) + .collect(); finish!(timer, "Finished dry-run of the transactions"); From 0b75a24f4c8c98ef9abaf349900e7e7959c47fd9 Mon Sep 17 00:00:00 2001 From: raychu86 <14917648+raychu86@users.noreply.github.com> Date: Sat, 2 Mar 2024 14:37:03 -0800 Subject: [PATCH 6/9] Resample expectations --- synthesizer/src/vm/mod.rs | 2 +- .../arrays_in_finalize.out | 12 +- .../execute_and_finalize/child_and_parent.out | 20 +- .../complex_finalization.out | 12 +- .../vm/execute_and_finalize/count_usages.out | 14 +- .../vm/execute_and_finalize/hello.out | 18 +- .../many_input_and_output.out | 172 +++++++++--------- .../mapping_operations.out | 16 +- .../execute_and_finalize/mint_and_split.out | 4 +- .../execute_and_finalize/program_callable.out | 14 +- .../vm/execute_and_finalize/public_wallet.out | 4 +- .../read_external_mapping.out | 40 ++-- .../vm/execute_and_finalize/test_branch.out | 12 +- .../vm/execute_and_finalize/test_rand.out | 18 +- .../vm/execute_and_finalize/timelock.out | 8 +- .../execute_and_finalize/unused_position.out | 4 +- .../vm/execute_and_finalize/user_callable.out | 6 +- 17 files changed, 188 insertions(+), 188 deletions(-) diff --git a/synthesizer/src/vm/mod.rs b/synthesizer/src/vm/mod.rs index b67ad4038f..9323924842 100644 --- a/synthesizer/src/vm/mod.rs +++ b/synthesizer/src/vm/mod.rs @@ -998,7 +998,7 @@ function a: // Note: `deployment_transaction_ids` is sorted lexicographically by transaction ID, so the order may change if we update internal methods. assert_eq!( deployment_transaction_ids, - vec![deployment_1.id(), deployment_2.id(), deployment_3.id(), deployment_4.id()], + vec![deployment_2.id(), deployment_1.id(), deployment_4.id(), deployment_3.id()], "Update me if serialization has changed" ); } diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/arrays_in_finalize.out b/synthesizer/tests/expectations/vm/execute_and_finalize/arrays_in_finalize.out index 8217a54a60..ee5469cc3d 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/arrays_in_finalize.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/arrays_in_finalize.out @@ -4,15 +4,15 @@ outputs: execute: arrays_in_finalize.aleo/test_arrays: outputs: - - '{"type":"public","id":"4191132437526469726810078556702976385142790887134762205329564706486407091452field","value":"[\n [\n true,\n false,\n true,\n false\n ]\n]"}' - - '{"type":"public","id":"7732313354599796556273728553000823036918857772412470351533433477903799198179field","value":"[\n [\n false,\n true,\n false,\n true\n ]\n]"}' - - '{"type":"public","id":"5608636510680839107900624676979657593964288488498543523280649635497192868408field","value":"[\n [\n false,\n false,\n false,\n false\n ]\n]"}' - - '{"type":"private","id":"17838117880873163791217811658586530829235665776709065547754152530705294791field","value":"ciphertext1qvqgms88ec4yhlndrj62c2eupwvd4u3efn4u2dtgl6gd29ll52y87z7ncynzwv9ntktucne95h0mvgdstwsqejzhv5klrg9cn2se2g7xqhlr94w0j6h7m0nt2l0deyg2c7hfud0s8r8euldthva35k4k7u0sc44p593"}' - - '{"type":"future","id":"1297781464149960028797060285986265412679573504857528613822702946616595852889field","value":"{\n program_id: arrays_in_finalize.aleo,\n function_name: test_arrays,\n arguments: [\n [\n [\n true,\n false,\n true,\n false\n ]\n],\n [\n [\n false,\n true,\n false,\n true\n ]\n]\n ]\n}"}' + - '{"type":"public","id":"5118967490510389498563593408332855643361881818167099838056367495551683196086field","value":"[\n [\n true,\n false,\n true,\n false\n ]\n]"}' + - '{"type":"public","id":"161244190800350724515604266901291103671352113673202215208394633608141402826field","value":"[\n [\n false,\n true,\n false,\n true\n ]\n]"}' + - '{"type":"public","id":"732180900540213101598934684824468886231161382295639155627335564133876613960field","value":"[\n [\n false,\n false,\n false,\n false\n ]\n]"}' + - '{"type":"private","id":"3616430215374655411967163606466924889426035845343017410873880387198363014495field","value":"ciphertext1qvqrc4mrjecujgr0g5x0qm3ra4hexhgyg37yvvcmsa235vxy8zvscq9yvve3egaugcevxduuqpjfazej54lpjjtme2wflhzkwr2yzdcfpq0pmeuu5deqde6c9mqj93t7r66eytj7kpdwmqzlfyszqzph8cwq2rfmq75"}' + - '{"type":"future","id":"3184185279581827020862519880740546694254080631373935662875123969347427956025field","value":"{\n program_id: arrays_in_finalize.aleo,\n function_name: test_arrays,\n arguments: [\n [\n [\n true,\n false,\n true,\n false\n ]\n],\n [\n [\n false,\n true,\n false,\n true\n ]\n]\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. additional: - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"2715104495799396615741890969708845641129834494989002430629962063572161077357field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1y9t0y4lvhm43qdzlfjmfzh8985vfnx9ms368p07x5lsemet5ey8qt0ssjn,\n 7030u64\n ]\n}"}' + - '{"type":"future","id":"3000589134503000271678431837168879644758861415863210971558080085500903023542field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1y9t0y4lvhm43qdzlfjmfzh8985vfnx9ms368p07x5lsemet5ey8qt0ssjn,\n 7030u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/child_and_parent.out b/synthesizer/tests/expectations/vm/execute_and_finalize/child_and_parent.out index 5e175be82e..0328cd2ae4 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/child_and_parent.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/child_and_parent.out @@ -4,30 +4,30 @@ outputs: execute: child.aleo/foo: outputs: - - '{"type":"public","id":"5080102022926418909778330219071921101316828719441748927127931330249058015974field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' - - '{"type":"public","id":"5521854961454308608590219862110836142563484399396636760251296039833599837132field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' + - '{"type":"public","id":"990518176319329300540260363339673789976107460730294067348711019503474061851field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' + - '{"type":"public","id":"7571316186508319878827016469809649549608056961397657756993177747855651462866field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: parent.aleo/foo: outputs: - - '{"type":"public","id":"2180349836718516623986527660803091459313965700848712055858720506742956053113field","value":"aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy"}' - - '{"type":"public","id":"2306297960481221498781231131707036686317070776613275725765479488798926222971field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' - - '{"type":"public","id":"629884147589344887679757377742438552594075704621211994352632325954728373873field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' - - '{"type":"public","id":"7179043812459822888643137487185719660290943898185113409588571501637751887110field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' + - '{"type":"public","id":"1884811560356148016006955635652965080079915936694811538333847482246480744363field","value":"aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy"}' + - '{"type":"public","id":"5938049560052736143774141427220670377885179425739877702748657061561680738197field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' + - '{"type":"public","id":"6528548732759919272232987513159497491013177803981585005450673841162680315749field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' + - '{"type":"public","id":"5026832691298704787131751832692789283727293425012656525725701291723822396843field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' speculate: the execution was accepted add_next_block: succeeded. additional: - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"3347872470791009142460537022787342626917524637524821339588032366241763021507field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx,\n 1276u64\n ]\n}"}' + - '{"type":"future","id":"5082208301651373176623590811075106181267408732555436878022129644210755250685field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx,\n 1276u64\n ]\n}"}' - child_outputs: child.aleo/foo: outputs: - - '{"type":"public","id":"2143480774914597553325855510339405850073067321902916033740995314914236889071field","value":"aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy"}' - - '{"type":"public","id":"1500133418795634855889959966479039744505030118146228739798986109415104921004field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' + - '{"type":"public","id":"6466295524147957495454604434721348918327651050212037504999787142417111103417field","value":"aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy"}' + - '{"type":"public","id":"6332065223486256012523838059722457533475412222424700446882093528089704062322field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' credits.aleo/fee_public: outputs: - - '{"type":"future","id":"7038990688216256894209117299702421152482248481717682799780559802515876924307field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx,\n 2187u64\n ]\n}"}' + - '{"type":"future","id":"2655408226458975792257147092852146628510817001169201237526883739767924449396field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx,\n 2187u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/complex_finalization.out b/synthesizer/tests/expectations/vm/execute_and_finalize/complex_finalization.out index 9c615c77fa..7ceae20a68 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/complex_finalization.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/complex_finalization.out @@ -4,23 +4,23 @@ outputs: execute: four_program.aleo/a: outputs: - - '{"type":"future","id":"8073961850697502005201723808473879821579356096451187824496987505478189255390field","value":"{\n program_id: four_program.aleo,\n function_name: a,\n arguments: [\n {\n program_id: two_program.aleo,\n function_name: b,\n arguments: [\n {\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: three_program.aleo,\n function_name: e,\n arguments: [\n {\n program_id: two_program.aleo,\n function_name: b,\n arguments: [\n {\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n}"}' + - '{"type":"future","id":"8130018480615734196139013351437032069739242149156249631016045139853287093979field","value":"{\n program_id: four_program.aleo,\n function_name: a,\n arguments: [\n {\n program_id: two_program.aleo,\n function_name: b,\n arguments: [\n {\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: three_program.aleo,\n function_name: e,\n arguments: [\n {\n program_id: two_program.aleo,\n function_name: b,\n arguments: [\n {\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. additional: - child_outputs: zero_program.aleo/c: outputs: - - '{"type":"future","id":"2137985455651054628126680275240269432054325301779207101612589772241739981165field","value":"{\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n}"}' + - '{"type":"future","id":"2900271611655635528941678281510364041201830022813871095471877119312300779936field","value":"{\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n}"}' one_program.aleo/d: outputs: - - '{"type":"future","id":"5357241693223765542321433170179413948506257034844568471556820282679708829796field","value":"{\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n}"}' + - '{"type":"future","id":"1637337749821658761939392325641974939781345565015247398167259587180469940497field","value":"{\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n}"}' two_program.aleo/b: outputs: - - '{"type":"future","id":"237175359371682654344610765795273369747408298587655173055205899746835808177field","value":"{\n program_id: two_program.aleo,\n function_name: b,\n arguments: [\n {\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n}"}' + - '{"type":"future","id":"7281040962848614445322216992881261514828409296479704331863755128953658708630field","value":"{\n program_id: two_program.aleo,\n function_name: b,\n arguments: [\n {\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n}"}' three_program.aleo/e: outputs: - - '{"type":"future","id":"3616852843624887241027320225932142757072575594346925293061443696405638714355field","value":"{\n program_id: three_program.aleo,\n function_name: e,\n arguments: [\n {\n program_id: two_program.aleo,\n function_name: b,\n arguments: [\n {\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n}"}' + - '{"type":"future","id":"5525233450353730940847963432645555356450610982360915223305979656896688583051field","value":"{\n program_id: three_program.aleo,\n function_name: e,\n arguments: [\n {\n program_id: two_program.aleo,\n function_name: b,\n arguments: [\n {\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: one_program.aleo,\n function_name: d,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n {\n program_id: zero_program.aleo,\n function_name: c,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n },\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8\n ]\n}"}' credits.aleo/fee_public: outputs: - - '{"type":"future","id":"3688989155399268747449856447722119301454464433397170543411114503201565062667field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8,\n 264403u64\n ]\n}"}' + - '{"type":"future","id":"4087106519134347566889325388736490824139345425738532244568334159325733237745field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8,\n 264403u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/count_usages.out b/synthesizer/tests/expectations/vm/execute_and_finalize/count_usages.out index 15b34329e9..f63740483a 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/count_usages.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/count_usages.out @@ -4,20 +4,20 @@ outputs: execute: count_usages.aleo/add_and_subtract: outputs: - - '{"type":"private","id":"2417893162182175688334393632212980126051692937961342515862782307223843642037field","value":"ciphertext1qyqrdme34cnf0dd08er9nelae88tnvs8g4f3pgpp43pf6j0t75kjvqslqv9d7"}' - - '{"type":"future","id":"705166902367251294198915856269600161357499171183853434375951230037519647203field","value":"{\n program_id: count_usages.aleo,\n function_name: add_and_subtract,\n arguments: [\n {\n program_id: basic_math.aleo,\n function_name: add_and_count,\n arguments: [\n aleo1mrughg5ssadd9fc2uwve7l6u24xn76kyz24zsjtzta03vgkq4vpqggl6fg\n ]\n },\n {\n program_id: basic_math.aleo,\n function_name: sub_and_count,\n arguments: [\n aleo1mrughg5ssadd9fc2uwve7l6u24xn76kyz24zsjtzta03vgkq4vpqggl6fg\n ]\n }\n \n ]\n}"}' + - '{"type":"private","id":"8025726332455529469861621128940817257864772349923128467234740989329902604473field","value":"ciphertext1qyqfup87pnm7e4d4tmxnwsqgttw0vh706ampljq46puzqtcmfrrjvzgd8mfq5"}' + - '{"type":"future","id":"447994789052632012998133268353748451374161019548829203650569518403555383774field","value":"{\n program_id: count_usages.aleo,\n function_name: add_and_subtract,\n arguments: [\n {\n program_id: basic_math.aleo,\n function_name: add_and_count,\n arguments: [\n aleo1mrughg5ssadd9fc2uwve7l6u24xn76kyz24zsjtzta03vgkq4vpqggl6fg\n ]\n },\n {\n program_id: basic_math.aleo,\n function_name: sub_and_count,\n arguments: [\n aleo1mrughg5ssadd9fc2uwve7l6u24xn76kyz24zsjtzta03vgkq4vpqggl6fg\n ]\n }\n \n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. additional: - child_outputs: basic_math.aleo/add_and_count: outputs: - - '{"type":"private","id":"399020463587132384720173345030999750182171151859286922026595618170323893845field","value":"ciphertext1qyq0ec250xje9hyr36a6256sajhjgypznc0ckq9rckcx9hvqqe6expcfm3th0"}' - - '{"type":"future","id":"7862022176391501831567513125389433398315612742902989311778410598142695342538field","value":"{\n program_id: basic_math.aleo,\n function_name: add_and_count,\n arguments: [\n aleo1mrughg5ssadd9fc2uwve7l6u24xn76kyz24zsjtzta03vgkq4vpqggl6fg\n ]\n}"}' + - '{"type":"private","id":"5275033890974719864618755320118789008496864993638234934817992876415596007788field","value":"ciphertext1qyqzjf0yj9kectcvg7u3dramjqfkady9n85lfsnt5t76hrufgdtd5qgzl8axw"}' + - '{"type":"future","id":"3797505847103929698534733656753772431719587131875982928485169994137133253960field","value":"{\n program_id: basic_math.aleo,\n function_name: add_and_count,\n arguments: [\n aleo1mrughg5ssadd9fc2uwve7l6u24xn76kyz24zsjtzta03vgkq4vpqggl6fg\n ]\n}"}' basic_math.aleo/sub_and_count: outputs: - - '{"type":"private","id":"2166485610255156621966882910457223948921992536665120764477666903342640510503field","value":"ciphertext1qyqy23z6n3fnm773zq9y4c5syrppp0c28fs2a0wh7t49wljydkjr5ygdylh70"}' - - '{"type":"future","id":"6356013747296129460342419348497415908695385595173072937771394894236053328119field","value":"{\n program_id: basic_math.aleo,\n function_name: sub_and_count,\n arguments: [\n aleo1mrughg5ssadd9fc2uwve7l6u24xn76kyz24zsjtzta03vgkq4vpqggl6fg\n ]\n}"}' + - '{"type":"private","id":"5306487522628771911536425647010519062243539602607185695916137180263907877845field","value":"ciphertext1qyqtm7ftauwqqdeulvte8ju2tlh63r2zasjkn0sllu90544x4y48jzcxr46pm"}' + - '{"type":"future","id":"7178387428289602600711092668076659846217709523786758217423314545472680326773field","value":"{\n program_id: basic_math.aleo,\n function_name: sub_and_count,\n arguments: [\n aleo1mrughg5ssadd9fc2uwve7l6u24xn76kyz24zsjtzta03vgkq4vpqggl6fg\n ]\n}"}' credits.aleo/fee_public: outputs: - - '{"type":"future","id":"1585223826336342113009963588330628410761295667183024829434599712242938930728field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8,\n 54628u64\n ]\n}"}' + - '{"type":"future","id":"4545791856085096226280028672626922044233856981347579201659401898452378055384field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1kw4knandael9qcpxs6g36rr6h7dwvjz6q25ueah6zz9v57zjlvxsx5llq8,\n 54628u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/hello.out b/synthesizer/tests/expectations/vm/execute_and_finalize/hello.out index 6d1c9d0566..9ae4a9721c 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/hello.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/hello.out @@ -4,30 +4,30 @@ outputs: execute: hello.aleo/hello: outputs: - - '{"type":"private","id":"3176121404187786053742476608354607969269791944150504812747549421863574954935field","value":"ciphertext1qyqwch85jv880t8dxlr9xs9crgjgp4ksn8kkeln2kz9qph7ahyyngpcda2dye"}' + - '{"type":"private","id":"5131573882884355182257903682248009545514589905872111590766989489749736641421field","value":"ciphertext1qyqxs4ww08ecfsfuzv3lvu2ylddz566evdd0kn2kq7tffa0jfvhrvzguk9nns"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: hello.aleo/hello: outputs: - - '{"type":"private","id":"1150202079184853991998868214382005296145686294524629420497502839491280451550field","value":"ciphertext1qyqqh50g4ajk2j5ql8kgfkmqslyvddqrr3e54q7me8l8s2nm04zh6pcpyyud3"}' + - '{"type":"private","id":"6540258413886922786374562206523527552103922311417806085516123700513573545786field","value":"ciphertext1qyqvn6jqqsvl59jdxc56fvgrthy7s29uy59y0q2854ule9eaa3qryrgch9lan"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: hello.aleo/goodbye: outputs: - - '{"type":"public","id":"3480118852870382894144865857822175070946589099724278834594029902836667201534field","value":"1u32"}' - - '{"type":"future","id":"5509833946703133090359961819746633556337352648574994721286932795133496169216field","value":"{\n program_id: hello.aleo,\n function_name: goodbye,\n arguments: [\n 1u32,\n 1u32\n ]\n}"}' + - '{"type":"public","id":"6552887319744710599952238134121182296015937968688536410722019448386949169427field","value":"1u32"}' + - '{"type":"future","id":"5050616512049212243885955271314949172240054022718808683458392630651227324539field","value":"{\n program_id: hello.aleo,\n function_name: goodbye,\n arguments: [\n 1u32,\n 1u32\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: hello.aleo/goodbye: outputs: - - '{"type":"public","id":"6056606855582681195495740332496796887918173012819660623567958555764517366236field","value":"1u32"}' - - '{"type":"future","id":"1191890728151228917136236794360467496329820983929439085349301662870546796031field","value":"{\n program_id: hello.aleo,\n function_name: goodbye,\n arguments: [\n 0u32,\n 1u32\n ]\n}"}' + - '{"type":"public","id":"6400980542699018627296357305462852503933659601582924856954999457729562650216field","value":"1u32"}' + - '{"type":"future","id":"7006417515763656381602371422606135723079202677418702102733862526204379263166field","value":"{\n program_id: hello.aleo,\n function_name: goodbye,\n arguments: [\n 0u32,\n 1u32\n ]\n}"}' speculate: the execution was rejected add_next_block: succeeded. additional: @@ -38,12 +38,12 @@ additional: - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"1739624830440070888681272394177400670284937130272704360430655837962148942436field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 1317u64\n ]\n}"}' + - '{"type":"future","id":"5133026235053133038853489406821436126957097823152662530596593777687622314058field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 1317u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"5590731974465655998543157332935394974986899946419756918684085895219128822776field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 2366u64\n ]\n}"}' + - '{"type":"future","id":"8038906995585515708485738975797104585040095967461431356593208300992698109622field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 2366u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"432042030880064849076909676849286813284474825415060505835239570887258317130field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 2366u64\n ]\n}"}' + - '{"type":"future","id":"4944753227454044798048990117828783917614367206136243192189386592713292937485field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 2366u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/many_input_and_output.out b/synthesizer/tests/expectations/vm/execute_and_finalize/many_input_and_output.out index 21cdc80309..0cbf459e8f 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/many_input_and_output.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/many_input_and_output.out @@ -10,66 +10,66 @@ outputs: execute: gas_dos.aleo/make_trash: outputs: - - '{"type":"public","id":"6747157736748603480590286328272166026792595420044415085985565949658486836640field","value":"0u8"}' - - '{"type":"public","id":"649973566147243409550290245203382623458718713926298287005827875227629101586field","value":"1u8"}' - - '{"type":"public","id":"4715184471484114421621316918068835569036773074904095137588387911996155207218field","value":"2u8"}' - - '{"type":"public","id":"6010118718732002261351810375013950678580303457924654867349009010796624699379field","value":"3u8"}' - - '{"type":"public","id":"6333722332192433030784808291116138880151228199115059689497917707786299191732field","value":"4u8"}' - - '{"type":"public","id":"5888245555064288391430977044838182586435070649131417859369280771113057190243field","value":"5u8"}' - - '{"type":"public","id":"2705380664623532047544469249146152090862016550891767685765285532434095990009field","value":"6u8"}' - - '{"type":"public","id":"5519628389319624879328309620830309237982407537738349566389273882401739294201field","value":"7u8"}' - - '{"type":"public","id":"7997534825149575584899781068011514298311850117701142304696407678330173846824field","value":"8u8"}' - - '{"type":"public","id":"8351421848133987949134108689305992851517388701279810208886613680610063838811field","value":"9u8"}' - - '{"type":"public","id":"1040364973741132984216208872045302650189239516982574815007069482884664919083field","value":"10u8"}' - - '{"type":"public","id":"653656632487021611433829850348345841758372491630426780843163907813480449226field","value":"11u8"}' - - '{"type":"public","id":"1593623190274459185231022493182745978048719576581716602188209609143075467430field","value":"12u8"}' - - '{"type":"public","id":"7294419130461631769356218452308251405322881405358069999008200992226082717233field","value":"13u8"}' - - '{"type":"public","id":"1924392335704798525876601513574376180904631637832561294379847655890585101681field","value":"14u8"}' - - '{"type":"public","id":"5010979078364274103068904287124840185727981251110897531184800275512425378069field","value":"15u8"}' + - '{"type":"public","id":"4613003495305280459172342896551360642380671085549872261236450521478375822923field","value":"0u8"}' + - '{"type":"public","id":"4743973134972472397815524098463791938088484597045636063046205639313933518929field","value":"1u8"}' + - '{"type":"public","id":"555760781568939132183826755180684628980232466161467457554743035258901627869field","value":"2u8"}' + - '{"type":"public","id":"3157694875275263094900138843883455412991376860903973463649620138981676546252field","value":"3u8"}' + - '{"type":"public","id":"4762500691148246777860506295457421886000017089715781091140762580325095831542field","value":"4u8"}' + - '{"type":"public","id":"1619722509495388564896980055966430841124315339169633235607412171424218427952field","value":"5u8"}' + - '{"type":"public","id":"8354514207710319608700853875463103658360125733069755379916199418993984711704field","value":"6u8"}' + - '{"type":"public","id":"6146446795421276186773995055780858309920249415477095573801103513078202466762field","value":"7u8"}' + - '{"type":"public","id":"2318001922627984302376561180924956547473501650251936319394563635511287937792field","value":"8u8"}' + - '{"type":"public","id":"4335724698080250340144894758211764587953579002993217725228936749078063414122field","value":"9u8"}' + - '{"type":"public","id":"8087676879614137262566286145836111514718966108005879865108580502029152532529field","value":"10u8"}' + - '{"type":"public","id":"294493159771562529206823786373039528720886487276115087913605316823853612607field","value":"11u8"}' + - '{"type":"public","id":"7204985738453874970058286203045669825080258822596932900829393698406829649806field","value":"12u8"}' + - '{"type":"public","id":"830263914519050309337445423798113726576252534917054054561542101941345296949field","value":"13u8"}' + - '{"type":"public","id":"1469344004751424930670484441438499660924597114570570881074573778558606199421field","value":"14u8"}' + - '{"type":"public","id":"3951700828605478129702178277179066393576016187563440775486667382338991730643field","value":"15u8"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: gas_dos.aleo/make_trash_private: outputs: - - '{"type":"private","id":"3178675254300275843383623280462721192133283660421872326577156508145365668480field","value":"ciphertext1qyqr72l9jxzmxy9grsl272ud24lq4de7pa36zww2c8n6sdt8ft3n2rsktrhcl"}' - - '{"type":"private","id":"3592370700431980549398591027926102431719057246222545849949554376480536512418field","value":"ciphertext1qyqp9mhjastjmtqppl0us4h0s9hwm2udk6sl7z8kmwxx0rjak0xl6rgrhdfp9"}' - - '{"type":"private","id":"5015190936906056906946595445486950479313140539015689642403600858320056079439field","value":"ciphertext1qyq2g4a6rkuzfs8x70r6zwyudgpn6rng0kv7l008nz52tzjjuyxscysn9k37c"}' - - '{"type":"private","id":"6455178200979974567545886653888837738198208830988894675846651316126562112600field","value":"ciphertext1qyqwk37q9hh34pyu5pqf4dqpkx62ct93u8eg503d3xdumxvgz24kzzs8xh5xf"}' - - '{"type":"private","id":"441578724655724425378862348205143575014108836933091743264908377416536569902field","value":"ciphertext1qyqx373jlfqlp8wk0z8d03w92aj5q6arcw5fa7crsln6je7ckufy2rs440p2r"}' - - '{"type":"private","id":"6727562409363713712272278253770938277290531703671883963721201766296710559416field","value":"ciphertext1qyqdrq9fmpxuvu637fzzevfj8k9p9twwt3skkakks43gjg3wxlmtvrcc2p8tg"}' - - '{"type":"private","id":"5900765846499883782656717755603787007957422075389964372791436651348006857224field","value":"ciphertext1qyqv8d0puv5lruc00xprqgfs3hql2jc7g0ku3usuxsqy4usz0l96ypgy9ur3s"}' - - '{"type":"private","id":"8295226756217200209959596718098054063884309676582306399212247817727537167993field","value":"ciphertext1qyqq2du67uasu2glt9kdhec7j7vct2rtdcnll3t8mpcrx02s0u0sxqsge3tlk"}' - - '{"type":"private","id":"8181394151926143042727606222080968091219514666973681831838802634723910704807field","value":"ciphertext1qyqxra6lnwkx3y8klf2vaud8keuk7jj4vd0k0kqgz8n26f3p97mrwrq0cq04s"}' - - '{"type":"private","id":"6734729083449209300118471016891853097724739272233592697735883274736165821640field","value":"ciphertext1qyqth22n052v2gungdh5nyngegq4sh874nruytkew5zq7kf2nnycjqgz37js7"}' - - '{"type":"private","id":"7500972475236275747881588151814005362695655417811301105586042430933060611422field","value":"ciphertext1qyq9nzmelc5zpuvchxr5m77enr4guj7ruv86xsdk2vx4ku3kwpxx2zsmw4usj"}' - - '{"type":"private","id":"8130977734223629619959263278616285929176363729398376780604587589091569071181field","value":"ciphertext1qyqgh960exm7dn5p3vvtvvnpscyd3g62efr78a3syxzcnu3lzvyv2ygq2e3nn"}' - - '{"type":"private","id":"1342233169177097654860453461670823088901477819542643899134838957080640297291field","value":"ciphertext1qyq2u4kvkuqkw9s0wegyczzul8s59mayjgaz0fzhtaemku6da6y5kpgxfu7sq"}' - - '{"type":"private","id":"7391399596647972354386735773625796963369050508605780615676837486755007451180field","value":"ciphertext1qyqr7uqs6wayrttlxd333lat5xxhhqcphkkylpknkg5dy4gunyx6jygdeqlfm"}' - - '{"type":"private","id":"154135336790998671754023870224163576051523380853463012393717687730220473648field","value":"ciphertext1qyqdehj5yytts6ldaa8ntgj8s695e73zhzg8gnv23kyr8zhzf3ftgqgsdeal0"}' - - '{"type":"private","id":"920095085577843523152461784092653536941316929806000265061076826661821648007field","value":"ciphertext1qyqysgfylsuh23tvrszlzzdswkant3vkjgx3v8ljhnfqqsuyk23pgqguzd940"}' + - '{"type":"private","id":"5075362786697228215074472689942282701176231326430148288153418644541993540260field","value":"ciphertext1qyq8e9mevs4f9d59m6euas8grjuh4ng9ra32wwalxrnmaqmt7zyhkrscfm5fc"}' + - '{"type":"private","id":"5215225807132022158772545163740191062021730292490702535858154988807087753346field","value":"ciphertext1qyq2n8kh9husn8fhthnjgl8pjx6rc4g8c8tww2cae8zgjvsyuczxwpsanm54z"}' + - '{"type":"private","id":"6175485655830032812766870418391865949244585379793763982149649085962245726608field","value":"ciphertext1qyq0er0k7vk5hl2aue0sk90qz73ck8megp55r7wq5f2sc6te5e05crsghch95"}' + - '{"type":"private","id":"5292275369500734838902716815450230196630574445733214603628601920690693640207field","value":"ciphertext1qyq88qsgf25luc6e9hlaf95zd85gv7mx9dds396g3sd2j5xq7duu6rgwm52s2"}' + - '{"type":"private","id":"5381081294119826457204466226498552808197680922513323705838868647170112039605field","value":"ciphertext1qyqwagaeurk00c7am8u9h3tp8junvm87tq8pj95s5gt986plh8ezjqc4rtrmd"}' + - '{"type":"private","id":"1338461598474952534342699170627985736475769297938400754126083218144339953603field","value":"ciphertext1qyqgfdavmh84hfusth9cx0ctlx4v9pha3x09ufemkr2yk0drj5795zsxsa4lj"}' + - '{"type":"private","id":"4001260300537073559558326413857426277645481169425487516456210690061410740879field","value":"ciphertext1qyqqmuarzt3dgqrkvdrtnekzsfskq7lh44ljteez87fx2hzm6w0egqcd8dlnf"}' + - '{"type":"private","id":"5227242698626712211718588424963656563037146375530018083082654862574376070199field","value":"ciphertext1qyqtt366wyukvrej944ejpm6v8ac48lraf5ma0mpehkq0j6v5f8y2qswy7gjt"}' + - '{"type":"private","id":"7483071445708773648853126565285398442732297851577050757881107945512071186435field","value":"ciphertext1qyqgkmpfnmz3ewj6k44xtr6l5y0plar2txg0zdwhckuh9kj863gh7pck3nxvn"}' + - '{"type":"private","id":"4981561573377555124720956600158756464459035871604435708642730148102441448296field","value":"ciphertext1qyq2crnyagzpqttanxm8lseaca7rsedajjfnm8wd8ejs4cdjpwjgxyqesl8tj"}' + - '{"type":"private","id":"2218867027475576562642471060864076730679142980473955816748250394152189017698field","value":"ciphertext1qyqrcaa9t2j4366qlp032zpsxtz3zpdfsxcdfn582py42pmtawf42rgx00mtc"}' + - '{"type":"private","id":"7393332991553464721374713719439977665925434096754056861442821575301509587543field","value":"ciphertext1qyqq3z6rz487swgnucql7e5uy484uha55lqvahhe43p9unl9h82guqq9ntknu"}' + - '{"type":"private","id":"4508485010608517903938357676657986339889610151407496428609804193804937924386field","value":"ciphertext1qyq2lrkauz3xquc54vcxyyte4694xnjxty2qt0nzy7q7swv6d4jwkpga37eyg"}' + - '{"type":"private","id":"5742046849120914998776327076031156076910427012002979898907493381061401274278field","value":"ciphertext1qyqz53j22apn3j6ztuucxnscmqyf98swr77l007qcs0jmam748vauygp2meg9"}' + - '{"type":"private","id":"955655251996890605872283601090881531746554959441612709205216411773137158294field","value":"ciphertext1qyqz5jat55vkglewug0nrpuhag5kc7n686wpfsu5hax2r2kj3d9x6pcmf5vay"}' + - '{"type":"private","id":"4373428812215437035380352561693300320904292383523519816271482268910523671786field","value":"ciphertext1qyq0vfet29vt9zgcta0js2m8t55yuvtjxzrml37hn2sfjc3km84lgpslud9mn"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: gas_dos.aleo/make_trash_u64: outputs: - - '{"type":"public","id":"730906278716886736214549186867912071216789907293619372995407182276178840902field","value":"0u64"}' - - '{"type":"public","id":"1575109245045429171368494780502083018941818963548716389294319521981302512311field","value":"1u64"}' - - '{"type":"public","id":"6542553720898513549147617785580217609728476848281216612038612053165479658830field","value":"2u64"}' - - '{"type":"public","id":"2050986609566910687002825879266223498079680553920166082503745042337551889897field","value":"3u64"}' - - '{"type":"public","id":"5975522125347992543144304600529534160726915753978735389103069215924086929065field","value":"4u64"}' - - '{"type":"public","id":"865214254461360763975319846771214299246126238769524047937335685873932972656field","value":"5u64"}' - - '{"type":"public","id":"7413677619876125297107923298740333237653602847707462889560217756108381577856field","value":"6u64"}' - - '{"type":"public","id":"3818658792814943441144259826962247349479763887533450194755382563551975295868field","value":"7u64"}' - - '{"type":"public","id":"5817474403061562864597825794761190001190072641318722371536768830410804482446field","value":"8u64"}' - - '{"type":"public","id":"7395071954794891679353516576003699033961561851951923345976907792327399116690field","value":"9u64"}' - - '{"type":"public","id":"3874311404551080002723926693546895057089037571699882905239093422478187649242field","value":"10u64"}' - - '{"type":"public","id":"2652544184779857036613378232899309079255075769671475608097048618116099520983field","value":"11u64"}' - - '{"type":"public","id":"6123105630472453276102467379726848248248111229924666892960235071928063826451field","value":"12u64"}' - - '{"type":"public","id":"7303341187590343154113254059959784526630864495886820459905858622304002827944field","value":"13u64"}' - - '{"type":"public","id":"2387756980249753394206100863037748629623359320692766913121732736054762620163field","value":"14u64"}' - - '{"type":"public","id":"3697673160058841840452855423974362417429421748522565469691462360008980535628field","value":"15u64"}' + - '{"type":"public","id":"6561159162501436151833081072814273870341639293232110695344791012569330235567field","value":"0u64"}' + - '{"type":"public","id":"7976342331909399277968579813342476842205479436517570814610848133471694590264field","value":"1u64"}' + - '{"type":"public","id":"7959564125019725319347269801297404917426966769897554182837555918999454670634field","value":"2u64"}' + - '{"type":"public","id":"3238578569461990585696007719064622713088324042084449251953551113405629735368field","value":"3u64"}' + - '{"type":"public","id":"2652351791392146183676186801776231305352586712963350968069669298772399762725field","value":"4u64"}' + - '{"type":"public","id":"2478951039021272007380220086890354432897243703808216707237374481504263920606field","value":"5u64"}' + - '{"type":"public","id":"6972212493349432022365386848181522590861575488437719975243869032659990316485field","value":"6u64"}' + - '{"type":"public","id":"770689646887905178427189789229328921942429186529411387025482086356305613402field","value":"7u64"}' + - '{"type":"public","id":"2553434581363211725353578850893508886122005522502786996883588898494362910064field","value":"8u64"}' + - '{"type":"public","id":"789035962301829680165600926334353315362445916301262938083061420271282046080field","value":"9u64"}' + - '{"type":"public","id":"2055266195117958331915570632100818483950700115783436413748712133711381881360field","value":"10u64"}' + - '{"type":"public","id":"3383469571899269330052105933946449998458706830571461636127918368823078955516field","value":"11u64"}' + - '{"type":"public","id":"6861968034072116205338864606251025191903009704131735615422207451203652008789field","value":"12u64"}' + - '{"type":"public","id":"3625546002618020464563336277084886351400397856943513367013736399595665961595field","value":"13u64"}' + - '{"type":"public","id":"6365291161772542284506285608326579244113169513684131987526845079850460097561field","value":"14u64"}' + - '{"type":"public","id":"6911075033623689961880813487820362603810774997714972050027042318795566339300field","value":"15u64"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true @@ -88,60 +88,60 @@ additional: - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"1233502016375300540052185048988005014879973125955662939200057677097020855469field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 1153u64\n ]\n}"}' + - '{"type":"future","id":"30377576158265317558755379954993028591609254873982684478794593156637801471field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 1153u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"7949043185167856339065705832481459070786322851203345196375864651473234929294field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 2363u64\n ]\n}"}' + - '{"type":"future","id":"7152805026835105172873716091653957285497801764420533865012961263887557911642field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 2363u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"7618522776601875506220555979247223944774138673406542519145196068858902991539field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 3331u64\n ]\n}"}' + - '{"type":"future","id":"5397557371756282637972927997465824050186286008844168472103952190845537160019field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 3331u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"4128578215055107219586693676580863389042669274675087117576661936356041869384field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 2591u64\n ]\n}"}' + - '{"type":"future","id":"8367501851131349939921973827792399149698467053837913250296494006847175395216field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 2591u64\n ]\n}"}' - child_outputs: child.aleo/inner_trash: outputs: - - '{"type":"public","id":"5904883560300066031961888185189024338105163106003115127107355735397565233528field","value":"0u8"}' - - '{"type":"public","id":"3346629042065382701229893557344247189765599789097218570622975043609670798803field","value":"1u8"}' - - '{"type":"public","id":"4114234764478642651067432258613060895246418822635359350223568880016900828568field","value":"2u8"}' - - '{"type":"public","id":"791622446349226962179035220266689816431702156005686036773793811267759407217field","value":"3u8"}' - - '{"type":"public","id":"5861572462574962129911421840478714197449959818033666853831901127764956991974field","value":"4u8"}' - - '{"type":"public","id":"8295750733030242931291044435301453040050673845774859044070421871333808089231field","value":"5u8"}' - - '{"type":"public","id":"7955491755960271872467489555522237713927603213194488061987008083541383124742field","value":"6u8"}' - - '{"type":"public","id":"3352141292834455276753576005850851253061340486572425616164757702636471923178field","value":"7u8"}' - - '{"type":"public","id":"1454778745521830463882613773299218996297033423719881562973503668404270532584field","value":"8u8"}' - - '{"type":"public","id":"7214833348890557492438630005734195060401225319633334274543131178468025949410field","value":"9u8"}' - - '{"type":"public","id":"8070255258837127839579827105984137383669983211953015519516297263152741166622field","value":"10u8"}' - - '{"type":"public","id":"6658033481790040965433203990044877190888249483767740626424900263358580479885field","value":"11u8"}' - - '{"type":"public","id":"4634805450592919107424233434549539397856300586736332530027446614793085861610field","value":"12u8"}' - - '{"type":"public","id":"6465237487036414684746876776225050063026228756956149581569485610341137167883field","value":"13u8"}' - - '{"type":"public","id":"539780083557878421637523477938110313145014901324462713310417688577608340204field","value":"14u8"}' - - '{"type":"public","id":"3032526681684647445570962976764436225697368058525256456212480567401674887679field","value":"15u8"}' + - '{"type":"public","id":"4258324859805218266091084729946080164724004439941647295375853291687898384011field","value":"0u8"}' + - '{"type":"public","id":"3595631725148264940723309249621738480517311836274280006312645287099329149900field","value":"1u8"}' + - '{"type":"public","id":"2208089297394694158284480136926424455853818009780901740335992064322863047854field","value":"2u8"}' + - '{"type":"public","id":"5688569742397292953325301820131013260933141797177046282596309663462217883051field","value":"3u8"}' + - '{"type":"public","id":"2589267864343727922187358819999124949209392983206592238621055394960841163796field","value":"4u8"}' + - '{"type":"public","id":"5570995534518087989637976676554735206972855495625472364363176802857733417627field","value":"5u8"}' + - '{"type":"public","id":"8196563339749078100880844141424856480535908196271709028877208224433618877988field","value":"6u8"}' + - '{"type":"public","id":"7148315770592140943513870153102249250228881430428702700808302274830524589712field","value":"7u8"}' + - '{"type":"public","id":"6663559720474154178048021670448619949127654696632516449974104667634461721117field","value":"8u8"}' + - '{"type":"public","id":"4262855828324563363534601768851246835981293807453200126654359299458266116785field","value":"9u8"}' + - '{"type":"public","id":"6521499071950259584214330036864628156304358707158918480447672091139469907706field","value":"10u8"}' + - '{"type":"public","id":"2780007533160863507824876124934740257440095453590254944663640741879602528021field","value":"11u8"}' + - '{"type":"public","id":"721098730065242758038656029883330636635690005801014175788365363405106507710field","value":"12u8"}' + - '{"type":"public","id":"1618474055793768647053046125452575920962293293427476033678666992071443340286field","value":"13u8"}' + - '{"type":"public","id":"7590795669806505477347034268411170284443113115706119538121917286692343733758field","value":"14u8"}' + - '{"type":"public","id":"1746336793593389412246115464856173762500352378534009993091610413102060730893field","value":"15u8"}' credits.aleo/fee_public: outputs: - - '{"type":"future","id":"4334081886835801940971123206469013415987775305601578551344205766751953038292field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 7558u64\n ]\n}"}' + - '{"type":"future","id":"988988974085236680039086524462634791496238571529345895766489488832296993230field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 7558u64\n ]\n}"}' - child_outputs: child.aleo/inner_trash_private: outputs: - - '{"type":"private","id":"8032697161240434925553233719907517361847178466961641830077911060008789447796field","value":"ciphertext1qyq8v9hksgs9z5n96m4rruzc5f8m25vshdtkh3ckwvtm6gzzpe827qs08fqhe"}' - - '{"type":"private","id":"4738943134012647945226268068877749848128824814436419950647824307962508386185field","value":"ciphertext1qyqx9zgse0u8pmlawdjw4yhsvc4ncluft34zm4h84wa49qjjdhx9upq9sasx4"}' - - '{"type":"private","id":"2635959015923564697286885588132564920865099194175958790989055258375639564872field","value":"ciphertext1qyq009lapuqdrxltqk24dh7lxqgscqecraejsk5fsdem5c9cpn99jrqachjfa"}' - - '{"type":"private","id":"3529010997203471228727679630176343425830488200535857454220765551756642894632field","value":"ciphertext1qyqxxrkc6ky6qr2gahmh3fdx86sx3zd340kq93ypljef9lcyvj2qcrcj2675k"}' - - '{"type":"private","id":"6665382644452199312390682569471698177901671090003591136674026014712215787440field","value":"ciphertext1qyqppt0twxta22kpkxltpmrjjrcc9awhw3d7hygwmmhplc9ctw067pqyg7995"}' - - '{"type":"private","id":"2748689820460604776985274040581262596018845354312291444007836420267464829488field","value":"ciphertext1qyqdhvdkfjcpmgm8fk4uxdxwquf09a723pqp3pvpm8g6y0ljjkk5uqgq9kc0k"}' - - '{"type":"private","id":"1447383371184268978767488566872720862633397185953221781947866349229014585162field","value":"ciphertext1qyqpw5fvuhvxav9maerk5apz4vy7kwww7fasgx5gaemtuagukqh2yzgv8dg5w"}' - - '{"type":"private","id":"6382890757397621046591645619235381972287595253748882780507077881390244013680field","value":"ciphertext1qyqdu79dm6p7p2g9xysnlsgphtk9tar73c7vpfwd8udque73vpz3krqj97u8z"}' - - '{"type":"private","id":"4316066373532442556231595467086777858030760464465764712503159356773410694734field","value":"ciphertext1qyqpuhrw5jdds2pdfve74272zyzp8dmhts57cydw6gzn75d226r2kpc9fuckz"}' - - '{"type":"private","id":"3681815417015076292682872513235796496265803403295723825838200685480906340815field","value":"ciphertext1qyqwxufrfqkp9utdtrwu0nqrvtgnxqppnwga9fp5nv50hrrsqylpyyg546fam"}' - - '{"type":"private","id":"7239731187052707524355678559194102714131401220844799996252791084924098866449field","value":"ciphertext1qyqdha7v553khg0dlca7zqrav2y32qgxzpwexu3pk4lh00uah8dcuqq9l3svw"}' - - '{"type":"private","id":"6915938306677382285025362060620239528744510612859529413977898404015795221508field","value":"ciphertext1qyqfkm26ec8hs6vdpfcppkktwy76msdlwfg8euat9enwew4rcqtlkqqxnzg6r"}' - - '{"type":"private","id":"4660065728032854412381748795889622379272314801373174547945776152533312518220field","value":"ciphertext1qyqqg7rt8p74zyweshpsa7rwfadvz5wrx50heqxjucxs9nynuv58gpgvpeeka"}' - - '{"type":"private","id":"6730070339834180050058900303293497953058084638877897827327393536891839946788field","value":"ciphertext1qyqzsy5xlnj9av5jdy379lm89za69ecjzgtcn3hcc3z42r3h2rkdjqczey6p4"}' - - '{"type":"private","id":"3905598913166472693352955825211180882338391772928515609728936680972478660573field","value":"ciphertext1qyqfpea03nqftwz4rlr9tym4azz26985stv0z8xuu9gzwclyee7ygqqgjcp3k"}' - - '{"type":"private","id":"7215693369984008673223118085891715586218466956518910943400085339158665270425field","value":"ciphertext1qyqqmqcfmqrals8ajt564w6s3lau2dmxn09lgjdx8s3a2ugdnuqh6rgkw6ywd"}' + - '{"type":"private","id":"7104678975139771363369594082563366139468419554792208200047887347265545145473field","value":"ciphertext1qyq9csv2ts7auvzxrkgn59a6rf8rqp6x2lf3w8ylt420d4kdtjdn6ygx59j9y"}' + - '{"type":"private","id":"4926801310215014544954805559748287683167556580631648005183029762556664410062field","value":"ciphertext1qyq0x7ckpfm9u4rgk63hu7hccv0lde7qrtk90jxz4yvc3s27ya4zspsh64e4t"}' + - '{"type":"private","id":"3025158373600515167086001776793503086916479802702564323801256579855996236632field","value":"ciphertext1qyqgfpx70l4hhrpakl68z2wk2pval26vdwcjmjxxn6frkfauerdzsqq4py8pj"}' + - '{"type":"private","id":"91252220510257006296141223052114223378062152895167144867716852708928779745field","value":"ciphertext1qyq8q940d2j3zqu70f36xxe9che64zr2dxmuj75al3s0szts5ged5qcd459hc"}' + - '{"type":"private","id":"5222252760545452319316061497006736874983610477915769389758850306932549009630field","value":"ciphertext1qyqv6srxvu332xw3fua0al4wyzl49trvf7zn494j9leqvlahjpd5vrqh7jvyq"}' + - '{"type":"private","id":"6570786723987093104854522607966362693823233854131838411624481962428800920246field","value":"ciphertext1qyqv9ynxzkjmgjz66lrk3m2u9ntnfyvtl7s53l9dv3ar6y7x3nhlgpgaty4gy"}' + - '{"type":"private","id":"2683545714029027507827575346619167326043917479293098006245564541553014010650field","value":"ciphertext1qyqrnaw6d35mje37hld3wl4e8t80cch3r4hatemlzp7f5vt37wyturqcgnkqn"}' + - '{"type":"private","id":"979466994657219968516975870288881292162693708243771712684837117887100077495field","value":"ciphertext1qyqzmsqd9qpj6pwjc6955em3vedjc0s7h9gh74740kgxc5yzt6dmszqaqu62w"}' + - '{"type":"private","id":"148667955008751009932158730385746655132283758474039163840641702069085619092field","value":"ciphertext1qyqwrn34ueq83rw56avjhqe5kf7thtycr9dykavv0cag665len6z2yqpq5pty"}' + - '{"type":"private","id":"7440731129863281004684810942181870487300540297612431366993708247292317262618field","value":"ciphertext1qyqghgjccg8mjwn6mfk83gtpdejh6h5kgs8qngk6ylphuh8g02ma7rgpe9dda"}' + - '{"type":"private","id":"5901834737807982708978098599410021094561231224925091918983759660264223855752field","value":"ciphertext1qyqyz9pm6vgud68p0fda6lhzyfhrxhz369futwgyng93su8scrxp2yqjcg5ru"}' + - '{"type":"private","id":"7104894195533495611191959689141824024501967138573740980071353687538059813029field","value":"ciphertext1qyqr9sk4jws9ay4ujvlcf9xpzuhv2pnrujnv4nd467zkjv4ur66f7pgw5ppfm"}' + - '{"type":"private","id":"3048268228937191827597549490157315246711775336097603143181590343332295202352field","value":"ciphertext1qyqv58yu833x9zepyqfdq3fga79zcrpakeum5asuhn3st9aqeud0gzctx80jg"}' + - '{"type":"private","id":"4285685390670718078925042810300519660137065409265643363257317816624967274406field","value":"ciphertext1qyqfglq63hwn08zasfr82mpk550ctlx7k4d75hns5xaah4y6e36rvpgtw0rvq"}' + - '{"type":"private","id":"3025983048580884853315325717609008421056210836218565341349583681822517287251field","value":"ciphertext1qyqx8mrevae4zw38t3lpyw797hml2ff8v6u84fksax87fym54s7yxqc2zzmn8"}' + - '{"type":"private","id":"2779056585045156925102248171451904784889711185488933072280044292443284680942field","value":"ciphertext1qyqg7e5rdtam09s2zwzmg3j3ppfppnczyvrrwaezg5xtv60njx0vjpcm0pvrh"}' credits.aleo/fee_public: outputs: - - '{"type":"future","id":"5813903071441008439034377261900917439453188395995082500140988193573411054956field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 11438u64\n ]\n}"}' + - '{"type":"future","id":"1037365655411343263930966978478556227868512825605719649881734132931731411910field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo10knkelvnd55fsaarm25wch7p9suf2tqlgwy5k4nxwms6d262xyfqm2tccr,\n 11438u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/mapping_operations.out b/synthesizer/tests/expectations/vm/execute_and_finalize/mapping_operations.out index 0cec3ce62d..26f74a152e 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/mapping_operations.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/mapping_operations.out @@ -4,44 +4,44 @@ outputs: execute: mapping_operations.aleo/empty_remove: outputs: - - '{"type":"future","id":"528917916050546693969666750679371761292623528001587956260557894521828605078field","value":"{\n program_id: mapping_operations.aleo,\n function_name: empty_remove,\n arguments: [\n 10u8\n ]\n}"}' + - '{"type":"future","id":"2995172019915059564169965195925439506348172779175289540071594220373700362692field","value":"{\n program_id: mapping_operations.aleo,\n function_name: empty_remove,\n arguments: [\n 10u8\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: mapping_operations.aleo/insert_contains_remove: outputs: - - '{"type":"future","id":"1878591124600593274844632247963154904652598107721964702057358386743661676785field","value":"{\n program_id: mapping_operations.aleo,\n function_name: insert_contains_remove,\n arguments: [\n 0u8,\n 0u8\n ]\n}"}' + - '{"type":"future","id":"4734089311297117835126604932112275842487641749640619553922194716113265671275field","value":"{\n program_id: mapping_operations.aleo,\n function_name: insert_contains_remove,\n arguments: [\n 0u8,\n 0u8\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: mapping_operations.aleo/insert_contains_remove: outputs: - - '{"type":"future","id":"4691407840608871888428340061515213816979609712949925756564814279452199679886field","value":"{\n program_id: mapping_operations.aleo,\n function_name: insert_contains_remove,\n arguments: [\n 0u8,\n 0u8\n ]\n}"}' + - '{"type":"future","id":"230840103691729731055170563366218895016668781612853841661286026410302607495field","value":"{\n program_id: mapping_operations.aleo,\n function_name: insert_contains_remove,\n arguments: [\n 0u8,\n 0u8\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: mapping_operations.aleo/insert_contains_remove: outputs: - - '{"type":"future","id":"1376837211363430068653312021356042012328839054002272482440237208239311509555field","value":"{\n program_id: mapping_operations.aleo,\n function_name: insert_contains_remove,\n arguments: [\n 0u8,\n 1u8\n ]\n}"}' + - '{"type":"future","id":"3315769874935654804431942155043603401753352960520513759478780430664575888438field","value":"{\n program_id: mapping_operations.aleo,\n function_name: insert_contains_remove,\n arguments: [\n 0u8,\n 1u8\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. additional: - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"765274853018791932597982874333036008771579256261317466733767488861755463898field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1eakarna6a70pg9r0l9qal20faejwctgur5xt7lnc2a42wj2yssfqc89rk8,\n 11277u64\n ]\n}"}' + - '{"type":"future","id":"2881122525232065385481796721562444359720272068488472880078531341886151580916field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1eakarna6a70pg9r0l9qal20faejwctgur5xt7lnc2a42wj2yssfqc89rk8,\n 11277u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"3702624994201751869571637613043506547844907566047297879155547309912750338743field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1eakarna6a70pg9r0l9qal20faejwctgur5xt7lnc2a42wj2yssfqc89rk8,\n 53072u64\n ]\n}"}' + - '{"type":"future","id":"6719612682279408983981783077880397063556905449118263853724176678274966881762field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1eakarna6a70pg9r0l9qal20faejwctgur5xt7lnc2a42wj2yssfqc89rk8,\n 53072u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"2880164867086873472928666458045989541371543910520545574666913914061154311961field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1eakarna6a70pg9r0l9qal20faejwctgur5xt7lnc2a42wj2yssfqc89rk8,\n 53072u64\n ]\n}"}' + - '{"type":"future","id":"6685223531240969717295379114037138437571065736359141263535338788158408659918field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1eakarna6a70pg9r0l9qal20faejwctgur5xt7lnc2a42wj2yssfqc89rk8,\n 53072u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"731712670790521506884462270784414260536578431010638989688535042138119508642field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1eakarna6a70pg9r0l9qal20faejwctgur5xt7lnc2a42wj2yssfqc89rk8,\n 53072u64\n ]\n}"}' + - '{"type":"future","id":"6136819185906425044619698216040414457898459958353995998170624664122379782065field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1eakarna6a70pg9r0l9qal20faejwctgur5xt7lnc2a42wj2yssfqc89rk8,\n 53072u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/mint_and_split.out b/synthesizer/tests/expectations/vm/execute_and_finalize/mint_and_split.out index 00b684d244..9f13732cf1 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/mint_and_split.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/mint_and_split.out @@ -4,7 +4,7 @@ outputs: execute: mint_and_split.aleo/mint: outputs: - - '{"type":"record","id":"7334558502140616765536611609313499148179717945955456292257315684677266501449field","checksum":"281154250604636828435706866945909260040573817788279288153963030037316744168field","value":"record1qyqsp9pr7qlgedcywvyk5lsnpuqpepyuv9hseec63eacjpn8d0rpmwgsqyxx66trwfhkxun9v35hguerqqpqzq9ql0hu0da6wuzrm0a7ms3kfvj5279e43rulstm9plhzs0z0xe6p52cn7pdz7x5hkwhz905kp56f4fuq08k9maf57qteekdv9yddk8sqxq4d98"}' + - '{"type":"record","id":"5362233052560846238226654677312070784713895947130881249083843529510916944031field","checksum":"7816912889670526743054988042995440028407660195896606816511174108297987149569field","value":"record1qyqsqh5ywrvf42cljl67xcgzp39wdhlygqmkjkuwgaj827945h9wgfcgqyxx66trwfhkxun9v35hguerqqpqzqzu388z96mn6rf76798hkmwp9753jyjz72qhr8xxqkxv6smct5upj9v8v5krsdhxk3hculcusw7mj54de50d5g9seqdey800qseawz3y2tgsyg"}' speculate: the execution was accepted add_next_block: succeeded. - execute: Commitment '1266307482263846358970326041806201638141701138269282465033372005968041137990field' does not exist @@ -13,6 +13,6 @@ additional: - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"8141932365338593422680862019466751805702849444320820698860516208562395953506field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19e6k5ferx3k8a9k79xtj4uuaztt2jl4eza7k43pygsu977yazypqqwdmw6,\n 1446u64\n ]\n}"}' + - '{"type":"future","id":"2562090260329031660713384309168507515341431313675137173177615123065204014729field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19e6k5ferx3k8a9k79xtj4uuaztt2jl4eza7k43pygsu977yazypqqwdmw6,\n 1446u64\n ]\n}"}' - {} - {} diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/program_callable.out b/synthesizer/tests/expectations/vm/execute_and_finalize/program_callable.out index 2d1c6b81e8..20ccef0610 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/program_callable.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/program_callable.out @@ -5,10 +5,10 @@ outputs: execute: parent.aleo/foo: outputs: - - '{"type":"public","id":"3132791686827287921440743324738703114146701102235145323661431442511856217971field","value":"aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy"}' - - '{"type":"public","id":"1169777204608013233991632187841309149325186451415097502721101984905963139305field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' - - '{"type":"public","id":"1665319193117753448377121751627813108743655828484762770917631655878172393186field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' - - '{"type":"public","id":"7758205965922928181208860399725493314521642846958858098822310042398374724396field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' + - '{"type":"public","id":"3914637036303864526243159286220007976533170083569928638487262238892809970742field","value":"aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy"}' + - '{"type":"public","id":"937398777111453785192036425221737880852307156425401363223955833596768256674field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' + - '{"type":"public","id":"3760234756062381156062268377754871790067277250188262172583636143907064923470field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' + - '{"type":"public","id":"5488414192083883572281689896150580843935493231906795299005325757111494763599field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' speculate: the execution was accepted add_next_block: succeeded. additional: @@ -16,8 +16,8 @@ additional: - child_outputs: child.aleo/foo: outputs: - - '{"type":"public","id":"2993170113733308844367597166852726630975295024179214931455119604247188877620field","value":"aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy"}' - - '{"type":"public","id":"1950496274064567059462280897914917860554722224455576030212114387721626639734field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' + - '{"type":"public","id":"7280898116097274651284715158779545453186426181228488452909864525015787112960field","value":"aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy"}' + - '{"type":"public","id":"4075151575211412636182527473997668377132540629423063277503775378409385373898field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' credits.aleo/fee_public: outputs: - - '{"type":"future","id":"2599746364993747569854355360180642623041829224356671742496735219392179674498field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx,\n 2187u64\n ]\n}"}' + - '{"type":"future","id":"7802751002421695323881906367190483603442707786944479318276597578348108753232field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx,\n 2187u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/public_wallet.out b/synthesizer/tests/expectations/vm/execute_and_finalize/public_wallet.out index 5a64cda820..9f771050cb 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/public_wallet.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/public_wallet.out @@ -4,14 +4,14 @@ outputs: execute: public_wallet.aleo/init: outputs: - - '{"type":"future","id":"3857172901441947534526418517380975227797871553595911987239461419522452545082field","value":"{\n program_id: public_wallet.aleo,\n function_name: init,\n arguments: [\n {\n program_id: token.aleo,\n function_name: mint_public,\n arguments: [\n aleo1sry3pke49ykrf0aeshf889tr98r4c86p5f4ms766795ssdwfdyqq9jdg0j,\n 10u64\n ]\n }\n \n ]\n}"}' + - '{"type":"future","id":"8260497972742778111367097052162295474031012001184713805972943051311817949697field","value":"{\n program_id: public_wallet.aleo,\n function_name: init,\n arguments: [\n {\n program_id: token.aleo,\n function_name: mint_public,\n arguments: [\n aleo1sry3pke49ykrf0aeshf889tr98r4c86p5f4ms766795ssdwfdyqq9jdg0j,\n 10u64\n ]\n }\n \n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. additional: - child_outputs: token.aleo/mint_public: outputs: - - '{"type":"future","id":"1631423278608052853768107395089521617081238671575890493962924098384161856776field","value":"{\n program_id: token.aleo,\n function_name: mint_public,\n arguments: [\n aleo1sry3pke49ykrf0aeshf889tr98r4c86p5f4ms766795ssdwfdyqq9jdg0j,\n 10u64\n ]\n}"}' + - '{"type":"future","id":"8286939272855752797035017591517297078431849718370537735860811608893885242485field","value":"{\n program_id: token.aleo,\n function_name: mint_public,\n arguments: [\n aleo1sry3pke49ykrf0aeshf889tr98r4c86p5f4ms766795ssdwfdyqq9jdg0j,\n 10u64\n ]\n}"}' credits.aleo/fee_public: outputs: - '{"type":"future","id":"7334131816336578548207468749349798727140016102586366303966330861449690845886field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1d3e2je2m2hsxwdsvntvf4jnnlj459ywfry6ch2qwrpy6l6r6yvpq8e88h5,\n 27585u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/read_external_mapping.out b/synthesizer/tests/expectations/vm/execute_and_finalize/read_external_mapping.out index d0c4d8fdc3..4b81518d24 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/read_external_mapping.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/read_external_mapping.out @@ -4,92 +4,92 @@ outputs: execute: relay.aleo/send: outputs: - - '{"type":"record","id":"3516005588956842618039325657183144336836835112376772770027534922591833057274field","checksum":"6210818386171269355708023008843251667562533143005976215346548674400037301137field","value":"record1qyqsqt7kuqj4ztmngchze9wlxjshk58pr52cvhqcnrsg6n0agzqtcsctqyzxgct5vy3sqqspqpr5mmj65yd4wfs8fmlmcuy6f5mgufdd7rvxmcq3ttxtgnuca3jqdrzp5glsjvfuv5wn57t5ljq0cc2q730335nv6gh2x3sjdnsjk4cpah854l"}' - - '{"type":"future","id":"3361027566039000326532636996547384998281625372954756951941108923279619886587field","value":"{\n program_id: relay.aleo,\n function_name: send,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' + - '{"type":"record","id":"7968575772902157337987790733839692617009611839021233180102360727599749340064field","checksum":"6485720190771667896136202589799315744497017899341299453023655037633886111955field","value":"record1qyqsqa8wejf3pktamg3d4zjzg60t4dagq3qv9l0t4em98x0l9yz4wtc9qyzxgct5vy3sqqspqp6k9wcd0r5n0zv2zfj64kn6g6lvhd6qmzhyftycf2jptp0z7mqqr24jykrxzjjh327raww8grz503e0kndrqszz65x3pp6tvr8fedqy55ahc4"}' + - '{"type":"future","id":"4831496979974153421195875947823828412750550539628662893314839630114070713887field","value":"{\n program_id: relay.aleo,\n function_name: send,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' speculate: the execution was rejected add_next_block: succeeded. - verified: true execute: relay.aleo/send_without_check: outputs: - - '{"type":"record","id":"4318016682601964951941075964816657999182148443418937820958519250759514688744field","checksum":"710696789209865634545334124645897103218620227147717749173439218439756518633field","value":"record1qyqsp5e73czvz9kvsnku845h0v4lx9ddxhhfp5d6u69us96r33upwnczqyzxgct5vy3sqqspqpc74m2j7e8ftk3gnj8qs4pvt96rsjdgthl9w9ej0cwf9jgyvfmqtyd66x9m2qjxjfes26ukjnm6hzuzch23syjketdnw5gdlrurwec23u3hv9"}' - - '{"type":"future","id":"2493314668767081995438573059026908296255004119285023474956612413303656492322field","value":"{\n program_id: relay.aleo,\n function_name: send_without_check,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' + - '{"type":"record","id":"2107603422312742796848682783963122836002371588713615328290812324544088758847field","checksum":"8275335694262210679186802244264061517465864466037908296140182924461667936315field","value":"record1qyqsp7uvd7gsea34c3arhfjr5setujmdex2hr6c5nvw3wuhjpz3r6uszqyzxgct5vy3sqqspqzac5vgg52z3jshxttd4ekmnq59l39qt9gg3v0y700xtnlqfmq0p9kqrjkktnje0v2cu8d3xa8d0m8dee9umhsmr27qqqz42rlzwtqsqmke8me"}' + - '{"type":"future","id":"1466198210314069047165522334753605767036936785663542828862455797550717023142field","value":"{\n program_id: relay.aleo,\n function_name: send_without_check,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: relay.aleo/check_has_registered: outputs: - - '{"type":"future","id":"5798673214905040069582797944224228205081350391492709789594919833316883071861field","value":"{\n program_id: relay.aleo,\n function_name: check_has_registered,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' + - '{"type":"future","id":"2177670626770212991926988612892200016040439353062111366356381933892230577888field","value":"{\n program_id: relay.aleo,\n function_name: check_has_registered,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' speculate: the execution was rejected add_next_block: succeeded. - verified: true execute: registry.aleo/register: outputs: - - '{"type":"future","id":"8039731813254390280133349610037168001950148597333933961448833324938980566665field","value":"{\n program_id: registry.aleo,\n function_name: register,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' + - '{"type":"future","id":"3113417577108523663600456494916638919964966001158208014797265008275831629467field","value":"{\n program_id: registry.aleo,\n function_name: register,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: relay.aleo/check_has_registered: outputs: - - '{"type":"future","id":"2049729709084378408208936775159884510094821976911931753152344792750331977221field","value":"{\n program_id: relay.aleo,\n function_name: check_has_registered,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' + - '{"type":"future","id":"1703350848802287338721207414343167409705599156052884130496399876478780340060field","value":"{\n program_id: relay.aleo,\n function_name: check_has_registered,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: relay.aleo/send: outputs: - - '{"type":"record","id":"3616683813988642347503060622912740756389352290494010006842210904168685917153field","checksum":"6191854693070448539885194715256244372853317530758618643648740000978270052149field","value":"record1qyqsqmul3w95f6fvpkptv0rn5m4ta2xktswvv58fc8zeach0gdyaq9stqyzxgct5vy3sqqspqz7hj482yakh4nujgju4st0d5wr9l2ltyhlc7hm2h67lfty9kauqd37uafwtwkanjgqnxxkek5ar4x4rtmqcw7l4tc2jy2am4k5q6zc9pj3yfl"}' - - '{"type":"future","id":"5636131129483545232301025738488486446822977545474078636366853933206498306924field","value":"{\n program_id: relay.aleo,\n function_name: send,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' + - '{"type":"record","id":"7784769523872898393965408106309655747503106463617903095092460909370003882784field","checksum":"2925477402483393855889468048478541640771723677960433859781919033690325058874field","value":"record1qyqspf6yc43x2jdwg6wshazt7uzuk7etqpez0khvelc6s63uzc827kgsqyzxgct5vy3sqqspqqdyxpuk6dv98fzpe4ssg7lkda8pxg67gxktg62smrlwksgy0a4s6cv957l8wdrsn4r2kqc3d4fppny8jzntf7sc8rn3yyuzctx9wygtww8l7w"}' + - '{"type":"future","id":"3826201585361431846590743971353230409815759916830496075267102612167070324224field","value":"{\n program_id: relay.aleo,\n function_name: send,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: registry.aleo/unregister: outputs: - - '{"type":"future","id":"5277738172931387381884079014823049888247511234602036315442583090239139710831field","value":"{\n program_id: registry.aleo,\n function_name: unregister,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' + - '{"type":"future","id":"7725538601531127136662536220663788769690295240695862649177442475416323740861field","value":"{\n program_id: registry.aleo,\n function_name: unregister,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: relay.aleo/send: outputs: - - '{"type":"record","id":"7999943092608705210868690426378362644128080928438492993595543488896669041130field","checksum":"7727223916356059324700805676432800956308622947890454711018128366728019654812field","value":"record1qyqsp7sfe5eyrww9rsgzmw2yy7skjj82k47yel4ly7jqwqfem70n58qzqyzxgct5vy3sqqspqqrtcn7h3gpj9ususfcv7ctsqzanatgfx5hlvpfd23vt4c85e8zse9h8jxu89yk6thrcf0gcj8e7ttys4gsftg0han56zmklgte5j3grhzqfe2"}' - - '{"type":"future","id":"3543900037397003385324398400449886361329465057481632344369439873330044026217field","value":"{\n program_id: relay.aleo,\n function_name: send,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' + - '{"type":"record","id":"282511750976822837525798970098987139068940238662361142561500666668419713067field","checksum":"2184994739195312494194079865075999113453863903186003085162715556506200707392field","value":"record1qyqspka5axladyfnx3j6m2tk3vt63x7u2mma940kf5wsvh59xdjuv5q3qyzxgct5vy3sqqspqrhwlpkd60jsc3yr5xsqchasz8la83lez4u4j3qlzvp285uz5nzsm7xvxe59u9j5rapncfaglaz8lecu0pz6jtextqlguqcy25lawlgtzmlru0"}' + - '{"type":"future","id":"3122341733121312071339023730127307311054004252496267855252114291543616014967field","value":"{\n program_id: relay.aleo,\n function_name: send,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm\n ]\n}"}' speculate: the execution was rejected add_next_block: succeeded. additional: - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"3817926103996179346739819443311299842008633349695169924818855439505376699375field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1xe2fps8f9xpdas2q0fqy22uraenk84tvvzetrsyxgnwy6445h59s6wv78x,\n 12331u64\n ]\n}"}' + - '{"type":"future","id":"5066847057031924678017880129890545515288601946330211438081820697831246609514field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1xe2fps8f9xpdas2q0fqy22uraenk84tvvzetrsyxgnwy6445h59s6wv78x,\n 12331u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"8327655085364264976444922469539260203640150056566362427811635889033582688436field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1xe2fps8f9xpdas2q0fqy22uraenk84tvvzetrsyxgnwy6445h59s6wv78x,\n 12359u64\n ]\n}"}' + - '{"type":"future","id":"3440391664364771291373877997019861365141059738596076856295449837482536036847field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1xe2fps8f9xpdas2q0fqy22uraenk84tvvzetrsyxgnwy6445h59s6wv78x,\n 12359u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"4615274813319040360881215398364008209916436742385780192081555194654152991496field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1xe2fps8f9xpdas2q0fqy22uraenk84tvvzetrsyxgnwy6445h59s6wv78x,\n 12149u64\n ]\n}"}' + - '{"type":"future","id":"6067586553805461002652098047959226436380135730552833805752117986651131431751field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1xe2fps8f9xpdas2q0fqy22uraenk84tvvzetrsyxgnwy6445h59s6wv78x,\n 12149u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"5159959314205108668289382247670650675337509845717320124088252081414795457358field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm,\n 14542u64\n ]\n}"}' + - '{"type":"future","id":"5190423787375252433831556836413378994143365939958931399671537580774742441501field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm,\n 14542u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"7995304610765056429975755609756321908929481317797093337208614102489214121861field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1xe2fps8f9xpdas2q0fqy22uraenk84tvvzetrsyxgnwy6445h59s6wv78x,\n 12149u64\n ]\n}"}' + - '{"type":"future","id":"6012250561080400779848346517044817117765603129638144755490871744716735055256field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1xe2fps8f9xpdas2q0fqy22uraenk84tvvzetrsyxgnwy6445h59s6wv78x,\n 12149u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"762656111160391091571049618548260391019934079060035723647171673336501373194field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1xe2fps8f9xpdas2q0fqy22uraenk84tvvzetrsyxgnwy6445h59s6wv78x,\n 12331u64\n ]\n}"}' + - '{"type":"future","id":"4078983310461938707355609419119773094714436925171206922865794410810132768408field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1xe2fps8f9xpdas2q0fqy22uraenk84tvvzetrsyxgnwy6445h59s6wv78x,\n 12331u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"2724237130950948809267129985974739498797269253195516460569067499347368422109field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm,\n 14546u64\n ]\n}"}' + - '{"type":"future","id":"4718327215449200025648673668371101175829725629919656989177747688320957470308field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1f6eg623knp66cwx0926w3plgdgzcmfpgyrzgnjz90mucgs3z7s9qls4upm,\n 14546u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"2350204279608409472618229594826772186444280524286679998918235180118142717669field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1xe2fps8f9xpdas2q0fqy22uraenk84tvvzetrsyxgnwy6445h59s6wv78x,\n 12331u64\n ]\n}"}' + - '{"type":"future","id":"8401929608727184541382889469312440652682460087199782119730570970943355959220field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1xe2fps8f9xpdas2q0fqy22uraenk84tvvzetrsyxgnwy6445h59s6wv78x,\n 12331u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/test_branch.out b/synthesizer/tests/expectations/vm/execute_and_finalize/test_branch.out index 31eb448b63..d88f5dd066 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/test_branch.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/test_branch.out @@ -4,33 +4,33 @@ outputs: execute: test_branch.aleo/run_test: outputs: - - '{"type":"future","id":"1689952277818654979661096150540017106084479583953159794693528941821121629614field","value":"{\n program_id: test_branch.aleo,\n function_name: run_test,\n arguments: [\n 1u8,\n 1u8\n ]\n}"}' + - '{"type":"future","id":"3737232062249529150138932693955398881668644103622567558835586062596389824604field","value":"{\n program_id: test_branch.aleo,\n function_name: run_test,\n arguments: [\n 1u8,\n 1u8\n ]\n}"}' speculate: the execution was rejected add_next_block: succeeded. - verified: true execute: test_branch.aleo/run_test: outputs: - - '{"type":"future","id":"114586048401498509272352737885171154770908861875852471025917693936087877358field","value":"{\n program_id: test_branch.aleo,\n function_name: run_test,\n arguments: [\n 0u8,\n 1u8\n ]\n}"}' + - '{"type":"future","id":"2839212090251948040934158633764862330933299393598341999009181801836696965367field","value":"{\n program_id: test_branch.aleo,\n function_name: run_test,\n arguments: [\n 0u8,\n 1u8\n ]\n}"}' speculate: the execution was rejected add_next_block: succeeded. - verified: true execute: test_branch.aleo/run_test: outputs: - - '{"type":"future","id":"7964420694372645950494297905013826833581925240887409965219568939973404172743field","value":"{\n program_id: test_branch.aleo,\n function_name: run_test,\n arguments: [\n 0u8,\n 0u8\n ]\n}"}' + - '{"type":"future","id":"6861288483994776877281706816951915077787425159195353214277004687152283823579field","value":"{\n program_id: test_branch.aleo,\n function_name: run_test,\n arguments: [\n 0u8,\n 0u8\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. additional: - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"3742811441854740995256946025007048836334179975183225882601152681493528561258field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1x3r205zqql5ywy0cqqt74k0r0htuusn0d037ycxe8ftt9ep8hyzsmqz4dh,\n 3500u64\n ]\n}"}' + - '{"type":"future","id":"380666872983254596471877288883774301967831022825979316512636463061242206552field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1x3r205zqql5ywy0cqqt74k0r0htuusn0d037ycxe8ftt9ep8hyzsmqz4dh,\n 3500u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"1647838761417122485573508821828299068832334922165753903144172080083427769077field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1x3r205zqql5ywy0cqqt74k0r0htuusn0d037ycxe8ftt9ep8hyzsmqz4dh,\n 3500u64\n ]\n}"}' + - '{"type":"future","id":"1149597548019710132122321749446181378057338947597516816061468439476407924951field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1x3r205zqql5ywy0cqqt74k0r0htuusn0d037ycxe8ftt9ep8hyzsmqz4dh,\n 3500u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"4675644920916319507815616171226090209472553004231457948189653255466652728990field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1x3r205zqql5ywy0cqqt74k0r0htuusn0d037ycxe8ftt9ep8hyzsmqz4dh,\n 3500u64\n ]\n}"}' + - '{"type":"future","id":"2128802402437912236919291162449765933396168235458827108383886305423871549239field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1x3r205zqql5ywy0cqqt74k0r0htuusn0d037ycxe8ftt9ep8hyzsmqz4dh,\n 3500u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/test_rand.out b/synthesizer/tests/expectations/vm/execute_and_finalize/test_rand.out index 43b2ae5b12..51fb5b5e60 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/test_rand.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/test_rand.out @@ -4,44 +4,44 @@ outputs: execute: test_rand.aleo/rand_chacha_with_literals: outputs: - - '{"type":"future","id":"5851936379967939919363011317470385211925863001600978824282354802243328225531field","value":"{\n program_id: test_rand.aleo,\n function_name: rand_chacha_with_literals,\n arguments: [\n 0scalar,\n 0group,\n 0u8,\n 2i16,\n 4u32,\n 7i64,\n 8u128,\n 10field\n ]\n}"}' + - '{"type":"future","id":"3051485481913361775826744416280406419787734940058310766095173488908684408941field","value":"{\n program_id: test_rand.aleo,\n function_name: rand_chacha_with_literals,\n arguments: [\n 0scalar,\n 0group,\n 0u8,\n 2i16,\n 4u32,\n 7i64,\n 8u128,\n 10field\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: test_rand.aleo/rand_chacha_with_struct: outputs: - - '{"type":"future","id":"3255218993644156872910307787306139629497029688077777497819797270383136364567field","value":"{\n program_id: test_rand.aleo,\n function_name: rand_chacha_with_struct,\n arguments: [\n {\n first: 0field,\n second: 0field,\n third: 0field,\n fourth: 0field,\n fifth: 0field\n}\n ]\n}"}' + - '{"type":"future","id":"5324538037254734381263298163254525700334315803949307776069573574643667789515field","value":"{\n program_id: test_rand.aleo,\n function_name: rand_chacha_with_struct,\n arguments: [\n {\n first: 0field,\n second: 0field,\n third: 0field,\n fourth: 0field,\n fifth: 0field\n}\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: test_rand.aleo/rand_chacha_check: outputs: - - '{"type":"future","id":"5655280628674362392666464396476127281186411758739892961608160465159658100070field","value":"{\n program_id: test_rand.aleo,\n function_name: rand_chacha_check,\n arguments: [\n 0field,\n false\n ]\n}"}' + - '{"type":"future","id":"3094014759641313043901697261267946468626327163450942596641947962222295207390field","value":"{\n program_id: test_rand.aleo,\n function_name: rand_chacha_check,\n arguments: [\n 0field,\n false\n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: test_rand.aleo/rand_chacha_check: outputs: - - '{"type":"future","id":"4722955375376605065432422068493514420613444220803270858286854080465504837613field","value":"{\n program_id: test_rand.aleo,\n function_name: rand_chacha_check,\n arguments: [\n 1field,\n true\n ]\n}"}' - speculate: the execution was rejected + - '{"type":"future","id":"818878742790741579153893179075772445872751227433677932822653185952935999557field","value":"{\n program_id: test_rand.aleo,\n function_name: rand_chacha_check,\n arguments: [\n 1field,\n true\n ]\n}"}' + speculate: the execution was accepted add_next_block: succeeded. additional: - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"1076527458106564529544533915951069356470950455466294891378581697395577060805field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1uchf7kruskpp8thlnfeya9qeklcjss27j6rtu74zz7ch559neqystgslsp,\n 601838u64\n ]\n}"}' + - '{"type":"future","id":"121306501224681157597193186410746475033514025731628517615093553600181539558field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1uchf7kruskpp8thlnfeya9qeklcjss27j6rtu74zz7ch559neqystgslsp,\n 601838u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"934509585235432931388992469492403334986771615715266644075656706577708720438field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1uchf7kruskpp8thlnfeya9qeklcjss27j6rtu74zz7ch559neqystgslsp,\n 26711u64\n ]\n}"}' + - '{"type":"future","id":"372387797317258515886290332539955510428039667099515014147500070605443070643field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1uchf7kruskpp8thlnfeya9qeklcjss27j6rtu74zz7ch559neqystgslsp,\n 26711u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"767895526948156364168904176257724171019709225591085577083318751394796758059field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1uchf7kruskpp8thlnfeya9qeklcjss27j6rtu74zz7ch559neqystgslsp,\n 26876u64\n ]\n}"}' + - '{"type":"future","id":"819663813855093908211899344309437376318059680751092090723025520667746540822field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1uchf7kruskpp8thlnfeya9qeklcjss27j6rtu74zz7ch559neqystgslsp,\n 26876u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"1572717739089618491430428262128578066213813186803348335138976241594053199721field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1uchf7kruskpp8thlnfeya9qeklcjss27j6rtu74zz7ch559neqystgslsp,\n 26876u64\n ]\n}"}' + - '{"type":"future","id":"8063948964124424703025348936079361092327181010572643865591831235545568925744field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1uchf7kruskpp8thlnfeya9qeklcjss27j6rtu74zz7ch559neqystgslsp,\n 26876u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/timelock.out b/synthesizer/tests/expectations/vm/execute_and_finalize/timelock.out index 6d3296cf33..489e49ae0f 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/timelock.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/timelock.out @@ -4,22 +4,22 @@ outputs: execute: timelock.aleo/lock: outputs: - - '{"type":"future","id":"5672658027601092821150632972624132536122029882218363630138745076773379462255field","value":"{\n program_id: timelock.aleo,\n function_name: lock,\n arguments: []\n}"}' + - '{"type":"future","id":"6658700112390809298568131732578454166620828658145139230021000997557464148749field","value":"{\n program_id: timelock.aleo,\n function_name: lock,\n arguments: []\n}"}' speculate: the execution was rejected add_next_block: succeeded. - verified: true execute: timelock.aleo/lock: outputs: - - '{"type":"future","id":"1309583359781052742370984261699469991508636898906015087862071776472698441892field","value":"{\n program_id: timelock.aleo,\n function_name: lock,\n arguments: []\n}"}' + - '{"type":"future","id":"4552284556317614698302755676987365520737661551926416127102861613249304034947field","value":"{\n program_id: timelock.aleo,\n function_name: lock,\n arguments: []\n}"}' speculate: the execution was rejected add_next_block: succeeded. additional: - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"651337484339032269160121054560086838303223967284342562550571699484082802926field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo12tksdptp7hvxly8tkm3um08fvf53qpehsgdgqfvy9pe3sewcq5ysjg5myy,\n 2196u64\n ]\n}"}' + - '{"type":"future","id":"8348146946615998276874385214136272238568613488992445452960641768056647996497field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo12tksdptp7hvxly8tkm3um08fvf53qpehsgdgqfvy9pe3sewcq5ysjg5myy,\n 2196u64\n ]\n}"}' - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"7443982931975690101989710049485828676544650952612755258270206826459548145627field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo12tksdptp7hvxly8tkm3um08fvf53qpehsgdgqfvy9pe3sewcq5ysjg5myy,\n 2196u64\n ]\n}"}' + - '{"type":"future","id":"982556877652028784867244374145661434115160127655345369458709244869192972372field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo12tksdptp7hvxly8tkm3um08fvf53qpehsgdgqfvy9pe3sewcq5ysjg5myy,\n 2196u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/unused_position.out b/synthesizer/tests/expectations/vm/execute_and_finalize/unused_position.out index 7acc9e1b28..b1bed94843 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/unused_position.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/unused_position.out @@ -4,11 +4,11 @@ outputs: execute: unused_position.aleo/foo: outputs: - - '{"type":"future","id":"5408452314004637538444583211608650550215632668705730253710414606897907094286field","value":"{\n program_id: unused_position.aleo,\n function_name: foo,\n arguments: []\n}"}' + - '{"type":"future","id":"1790580141778087233710017444717735846711836561595379002028367169462349892136field","value":"{\n program_id: unused_position.aleo,\n function_name: foo,\n arguments: []\n}"}' speculate: the execution was accepted add_next_block: succeeded. additional: - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"1846547935819125611375261116748293171392625542993437934741572770467926190067field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo12tksdptp7hvxly8tkm3um08fvf53qpehsgdgqfvy9pe3sewcq5ysjg5myy,\n 1308u64\n ]\n}"}' + - '{"type":"future","id":"5672533630623788440632164866520422788597095754178549239294815812922538158034field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo12tksdptp7hvxly8tkm3um08fvf53qpehsgdgqfvy9pe3sewcq5ysjg5myy,\n 1308u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/user_callable.out b/synthesizer/tests/expectations/vm/execute_and_finalize/user_callable.out index 72c6cdb93e..8bd4f802b0 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/user_callable.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/user_callable.out @@ -4,8 +4,8 @@ outputs: execute: child.aleo/foo: outputs: - - '{"type":"public","id":"5080102022926418909778330219071921101316828719441748927127931330249058015974field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' - - '{"type":"public","id":"5521854961454308608590219862110836142563484399396636760251296039833599837132field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' + - '{"type":"public","id":"990518176319329300540260363339673789976107460730294067348711019503474061851field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' + - '{"type":"public","id":"7571316186508319878827016469809649549608056961397657756993177747855651462866field","value":"aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx"}' speculate: the execution was accepted add_next_block: succeeded. - execute: 'Failed to evaluate instruction (call child.aleo/foo into r0 r1;): Failed to evaluate instruction (assert.eq self.caller self.signer ;): ''assert.eq'' failed: ''aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy'' is not equal to ''aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx'' (should be equal)' @@ -13,5 +13,5 @@ additional: - child_outputs: credits.aleo/fee_public: outputs: - - '{"type":"future","id":"3347872470791009142460537022787342626917524637524821339588032366241763021507field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx,\n 1276u64\n ]\n}"}' + - '{"type":"future","id":"5082208301651373176623590811075106181267408732555436878022129644210755250685field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx,\n 1276u64\n ]\n}"}' - {} From 1406947767c14f598bf0bea01dc48d32875069c7 Mon Sep 17 00:00:00 2001 From: raychu86 <14917648+raychu86@users.noreply.github.com> Date: Mon, 4 Mar 2024 14:04:46 -0800 Subject: [PATCH 7/9] Abort fee transactions during initial speculation --- ledger/src/tests.rs | 39 ++++++++++++++++++++++++++++++++++ synthesizer/src/vm/finalize.rs | 18 +++++++++++----- 2 files changed, 52 insertions(+), 5 deletions(-) diff --git a/ledger/src/tests.rs b/ledger/src/tests.rs index e56f093ed1..171e404b7d 100644 --- a/ledger/src/tests.rs +++ b/ledger/src/tests.rs @@ -1251,6 +1251,45 @@ function simple_output: assert_eq!(block.aborted_transaction_ids(), &vec![transaction_3_id]); } +#[test] +fn test_abort_fee_transaction() { + let rng = &mut TestRng::default(); + + // Initialize the test environment. + let crate::test_helpers::TestEnv { ledger, private_key, address, .. } = crate::test_helpers::sample_test_env(rng); + + // Construct valid transaction for the ledger. + let inputs = [Value::from_str(&format!("{address}")).unwrap(), Value::from_str("1000u64").unwrap()]; + let transaction = ledger + .vm + .execute(&private_key, ("credits.aleo", "transfer_public"), inputs.clone().into_iter(), None, 0, None, rng) + .unwrap(); + let transaction_id = transaction.id(); + + // Convert a fee transaction. + let transaction_to_convert_to_fee = ledger + .vm + .execute(&private_key, ("credits.aleo", "transfer_public"), inputs.into_iter(), None, 0, None, rng) + .unwrap(); + let fee_transaction = Transaction::from_fee(transaction_to_convert_to_fee.fee_transition().unwrap()).unwrap(); + let fee_transaction_id = fee_transaction.id(); + + // Create a block using a fee transaction. + let block = ledger + .prepare_advance_to_next_beacon_block(&private_key, vec![], vec![], vec![fee_transaction, transaction], rng) + .unwrap(); + + // Check that the block aborts the invalid transaction. + assert_eq!(block.aborted_transaction_ids(), &vec![fee_transaction_id]); + assert_eq!(block.transaction_ids().collect::>(), vec![&transaction_id]); + + // Check that the next block is valid. + ledger.check_next_block(&block, rng).unwrap(); + + // Add the block to the ledger. + ledger.advance_to_next_block(&block).unwrap(); +} + #[test] fn test_abort_invalid_transaction() { let rng = &mut TestRng::default(); diff --git a/synthesizer/src/vm/finalize.rs b/synthesizer/src/vm/finalize.rs index a1fe576396..a66a6f8065 100644 --- a/synthesizer/src/vm/finalize.rs +++ b/synthesizer/src/vm/finalize.rs @@ -55,11 +55,19 @@ impl> VM { let rngs = (0..candidate_transactions.len()).map(|_| StdRng::from_seed(rng.gen())).collect::>(); // Verify the transactions and collect the error message if there is one. - cfg_into_iter!(candidate_transactions).zip(rngs).partition_map(|(transaction, mut rng)| match self - .check_transaction(transaction, None, &mut rng) - { - Ok(_) => Either::Left(transaction), - Err(e) => Either::Right((transaction, e.to_string())), + cfg_into_iter!(candidate_transactions).zip(rngs).partition_map(|(transaction, mut rng)| { + // Abort the transaction if it is a fee transaction. + if transaction.is_fee() { + return Either::Right(( + transaction, + "Fee transactions are not allowed in speculate".to_string(), + )); + } + // Verify the transaction. + match self.check_transaction(transaction, None, &mut rng) { + Ok(_) => Either::Left(transaction), + Err(e) => Either::Right((transaction, e.to_string())), + } }) } }; From 2783732369b235376ba17e14e471ea6c0071a6aa Mon Sep 17 00:00:00 2001 From: raychu86 <14917648+raychu86@users.noreply.github.com> Date: Mon, 4 Mar 2024 14:38:08 -0800 Subject: [PATCH 8/9] Rewrite expectations --- .../branch_with_future.out | 36 +++++++++---------- .../future_out_of_order.out | 8 ++--- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/branch_with_future.out b/synthesizer/tests/expectations/vm/execute_and_finalize/branch_with_future.out index 3a06e71a88..cea3b38f8a 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/branch_with_future.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/branch_with_future.out @@ -4,84 +4,84 @@ outputs: execute: branch_with_future.aleo/bar: outputs: - - '{"type":"future","id":"532496450620712418776005524415557851464510738606851840427566557694094457416field","value":"{\n program_id: branch_with_future.aleo,\n function_name: bar,\n arguments: [\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n false\n ]\n }\n \n ]\n}"}' + - '{"type":"future","id":"1901721223736840349427585700021263388379767581008399009736938254771892005010field","value":"{\n program_id: branch_with_future.aleo,\n function_name: bar,\n arguments: [\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n false\n ]\n }\n \n ]\n}"}' speculate: the execution was rejected add_next_block: succeeded. - verified: true execute: branch_with_future.aleo/baz: outputs: - - '{"type":"future","id":"2361104789285054083199413742429489255699437584612232911190625924778322773141field","value":"{\n program_id: branch_with_future.aleo,\n function_name: baz,\n arguments: [\n true,\n true,\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n }\n \n ]\n}"}' + - '{"type":"future","id":"1228696003383050132266889674489868345643026254029592802751654436178885132079field","value":"{\n program_id: branch_with_future.aleo,\n function_name: baz,\n arguments: [\n true,\n true,\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n }\n \n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: branch_with_future.aleo/baz: outputs: - - '{"type":"future","id":"1402916336925887090902739558699125055972930142808753436804014281410394538962field","value":"{\n program_id: branch_with_future.aleo,\n function_name: baz,\n arguments: [\n true,\n false,\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n }\n \n ]\n}"}' + - '{"type":"future","id":"879289045619836306626870648843085153732274658528750377055734664982530581365field","value":"{\n program_id: branch_with_future.aleo,\n function_name: baz,\n arguments: [\n true,\n false,\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n }\n \n ]\n}"}' speculate: the execution was rejected add_next_block: succeeded. - verified: true execute: branch_with_future.aleo/baz: outputs: - - '{"type":"future","id":"4854465854553921857366813863818243323149456475014089875476988237222845632319field","value":"{\n program_id: branch_with_future.aleo,\n function_name: baz,\n arguments: [\n false,\n true,\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n }\n \n ]\n}"}' + - '{"type":"future","id":"2968372731533596222248603718368848747733103012276200825311164319889876057729field","value":"{\n program_id: branch_with_future.aleo,\n function_name: baz,\n arguments: [\n false,\n true,\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n }\n \n ]\n}"}' speculate: the execution was rejected add_next_block: succeeded. - verified: true execute: branch_with_future.aleo/baz: outputs: - - '{"type":"future","id":"1843413419196646420029804437148613039974077777445552833060053892958356613072field","value":"{\n program_id: branch_with_future.aleo,\n function_name: baz,\n arguments: [\n false,\n false,\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n }\n \n ]\n}"}' + - '{"type":"future","id":"156680474478658222397874990119431113642250358456541583625828235061767777479field","value":"{\n program_id: branch_with_future.aleo,\n function_name: baz,\n arguments: [\n false,\n false,\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n }\n \n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. - verified: true execute: branch_with_future.aleo/qux: outputs: - - '{"type":"future","id":"4155813596240727734849835492169467364143237381928187150511194654481173622979field","value":"{\n program_id: branch_with_future.aleo,\n function_name: qux,\n arguments: [\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n }\n \n ]\n}"}' + - '{"type":"future","id":"1044271547530566723253698133585207021073550216261586640127744587292737089669field","value":"{\n program_id: branch_with_future.aleo,\n function_name: qux,\n arguments: [\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n }\n \n ]\n}"}' speculate: the execution was rejected add_next_block: succeeded. additional: - child_outputs: child.aleo/foo: outputs: - - '{"type":"future","id":"2487749389432670527861040461544484385987280869909415899406823322067698170131field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n false\n ]\n}"}' + - '{"type":"future","id":"1007218943892448396881984608789591386138448463982253582619598886555809869042field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n false\n ]\n}"}' credits.aleo/fee_public: outputs: - - '{"type":"future","id":"1552750769550300180863888227304037372030732227352329844272442427262662766242field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19f7ldyn2txn950arxwzgmd69hc92agvaavuaghq3n86fv9sq25qsuu46xk,\n 3621u64\n ]\n}"}' + - '{"type":"future","id":"7279154627791442566716269908932031503401237694928695644266920103051053146747field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19f7ldyn2txn950arxwzgmd69hc92agvaavuaghq3n86fv9sq25qsuu46xk,\n 3621u64\n ]\n}"}' - child_outputs: child.aleo/foo: outputs: - - '{"type":"future","id":"5675773560018644127695284528745449800752793034919509694930020595083458168228field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n}"}' + - '{"type":"future","id":"6523588570064680536508996046957962672424151108590663750750787837041093106740field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n}"}' credits.aleo/fee_public: outputs: - - '{"type":"future","id":"2634439008532753204534514830736017501445183671582120008081059628732113476394field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19f7ldyn2txn950arxwzgmd69hc92agvaavuaghq3n86fv9sq25qsuu46xk,\n 7974u64\n ]\n}"}' + - '{"type":"future","id":"2706575121475642341611541590945985021546461935095868862247496621536522314225field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19f7ldyn2txn950arxwzgmd69hc92agvaavuaghq3n86fv9sq25qsuu46xk,\n 7974u64\n ]\n}"}' - child_outputs: child.aleo/foo: outputs: - - '{"type":"future","id":"5447761632307658100656681318981387298919799131534949319449526066624527650299field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n}"}' + - '{"type":"future","id":"7099896312977564232797320902188423216986916921319466842263326120099548868611field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n}"}' credits.aleo/fee_public: outputs: - - '{"type":"future","id":"6306173585981495367473045331758800973636068968660127410351560251620260221186field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19f7ldyn2txn950arxwzgmd69hc92agvaavuaghq3n86fv9sq25qsuu46xk,\n 7974u64\n ]\n}"}' + - '{"type":"future","id":"5609306293856270935956553758470706601318043257164762478045225948599710665248field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19f7ldyn2txn950arxwzgmd69hc92agvaavuaghq3n86fv9sq25qsuu46xk,\n 7974u64\n ]\n}"}' - child_outputs: child.aleo/foo: outputs: - - '{"type":"future","id":"2062142932006850709906801162715527667104306315077698583728145290870005626451field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n}"}' + - '{"type":"future","id":"7316695697531161977466260542069480710223810681294363821008640938964747660989field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n}"}' credits.aleo/fee_public: outputs: - - '{"type":"future","id":"7680156005998007920105257299281083414679923003481745043944797256160305851517field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19f7ldyn2txn950arxwzgmd69hc92agvaavuaghq3n86fv9sq25qsuu46xk,\n 7974u64\n ]\n}"}' + - '{"type":"future","id":"4975770476920496431723834907301899193200403712078918738194361758999219139263field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19f7ldyn2txn950arxwzgmd69hc92agvaavuaghq3n86fv9sq25qsuu46xk,\n 7974u64\n ]\n}"}' - child_outputs: child.aleo/foo: outputs: - - '{"type":"future","id":"7482604575063255179687452060897359826557516744962030843253570433696575062636field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n}"}' + - '{"type":"future","id":"1227828349264772801087139238777793166868477097712714327572814639949280730734field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n}"}' credits.aleo/fee_public: outputs: - - '{"type":"future","id":"1415437982747222703874006561878974850596390844596974067519096492194544583450field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19f7ldyn2txn950arxwzgmd69hc92agvaavuaghq3n86fv9sq25qsuu46xk,\n 7974u64\n ]\n}"}' + - '{"type":"future","id":"2067245925175924661138388013479706155165861522757906125647585548056761064730field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19f7ldyn2txn950arxwzgmd69hc92agvaavuaghq3n86fv9sq25qsuu46xk,\n 7974u64\n ]\n}"}' - child_outputs: child.aleo/foo: outputs: - - '{"type":"future","id":"2561320343493068993945324731576919050362474601020484141774343487194159903672field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n}"}' + - '{"type":"future","id":"772681503101026751767902223438249337461519645078898034778519190096015227607field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n true,\n true\n ]\n}"}' credits.aleo/fee_public: outputs: - - '{"type":"future","id":"2060794063933179252629426774876402405070127724003123596182268946753044534528field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19f7ldyn2txn950arxwzgmd69hc92agvaavuaghq3n86fv9sq25qsuu46xk,\n 3521u64\n ]\n}"}' + - '{"type":"future","id":"2957923319159476718371769642772720537310282450705905850340576486880633947922field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo19f7ldyn2txn950arxwzgmd69hc92agvaavuaghq3n86fv9sq25qsuu46xk,\n 3521u64\n ]\n}"}' diff --git a/synthesizer/tests/expectations/vm/execute_and_finalize/future_out_of_order.out b/synthesizer/tests/expectations/vm/execute_and_finalize/future_out_of_order.out index dbd7db8bcb..37c0cec8cc 100644 --- a/synthesizer/tests/expectations/vm/execute_and_finalize/future_out_of_order.out +++ b/synthesizer/tests/expectations/vm/execute_and_finalize/future_out_of_order.out @@ -4,17 +4,17 @@ outputs: execute: parent.aleo/foo: outputs: - - '{"type":"future","id":"2800432798659636109311760728266518702216722358560231511586969859940363920599field","value":"{\n program_id: parent.aleo,\n function_name: foo,\n arguments: [\n {\n program_id: child.aleo,\n function_name: boo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n },\n {\n program_id: child.aleo,\n function_name: boo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n },\n {\n program_id: child.aleo,\n function_name: boo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n }\n \n ]\n}"}' + - '{"type":"future","id":"7394141067016125812495697738481918699806105328524107874699813647057124800624field","value":"{\n program_id: parent.aleo,\n function_name: foo,\n arguments: [\n {\n program_id: child.aleo,\n function_name: boo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n },\n {\n program_id: child.aleo,\n function_name: boo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n },\n {\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n },\n {\n program_id: child.aleo,\n function_name: boo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n }\n \n ]\n}"}' speculate: the execution was accepted add_next_block: succeeded. additional: - child_outputs: child.aleo/foo: outputs: - - '{"type":"future","id":"6676791758548562596189112643434721156252815151829937112707891746047243834715field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n}"}' + - '{"type":"future","id":"6485462397262850046279599964897487902629807964673846177946918357772313064816field","value":"{\n program_id: child.aleo,\n function_name: foo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n}"}' child.aleo/boo: outputs: - - '{"type":"future","id":"21128041363373343068880429003753959002434542907901170296541458388272717335field","value":"{\n program_id: child.aleo,\n function_name: boo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n}"}' + - '{"type":"future","id":"4231693232342038432096905559496831296662691811920617963100466383368358118453field","value":"{\n program_id: child.aleo,\n function_name: boo,\n arguments: [\n aleo16w8t56s7v6ud7vu33fr388ph0dq0c7yhp597cyjt88rr3nultcyqcyk9yy\n ]\n}"}' credits.aleo/fee_public: outputs: - - '{"type":"future","id":"953029031292620288137751525127632509848556250295245196122226127267650177307field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx,\n 170808u64\n ]\n}"}' + - '{"type":"future","id":"6200338300657724671187031761556738257498692708872458275509558643397811394605field","value":"{\n program_id: credits.aleo,\n function_name: fee_public,\n arguments: [\n aleo1qr2ha4pfs5l28aze88yn6fhleeythklkczrule2v838uwj65n5gqxt9djx,\n 170808u64\n ]\n}"}' From f83d18b4a8e63c1850ab6df065b77a00c5d54985 Mon Sep 17 00:00:00 2001 From: raychu86 <14917648+raychu86@users.noreply.github.com> Date: Tue, 12 Mar 2024 17:11:51 -0700 Subject: [PATCH 9/9] Move tx verification logic into check_speculate --- ledger/src/check_next_block.rs | 14 ++------------ synthesizer/src/vm/finalize.rs | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/ledger/src/check_next_block.rs b/ledger/src/check_next_block.rs index c23797f8d4..ffb6213299 100644 --- a/ledger/src/check_next_block.rs +++ b/ledger/src/check_next_block.rs @@ -14,8 +14,6 @@ use super::*; -use rand::{rngs::StdRng, SeedableRng}; - impl> Ledger { /// Checks the given block is valid next block. pub fn check_next_block(&self, block: &Block, rng: &mut R) -> Result<()> { @@ -38,14 +36,6 @@ impl> Ledger { } } - // Ensure each transaction is well-formed and unique. - let transactions = block.transactions(); - let rngs = (0..transactions.len()).map(|_| StdRng::from_seed(rng.gen())).collect::>(); - cfg_iter!(transactions).zip(rngs).try_for_each(|(transaction, mut rng)| { - self.check_transaction_basic(transaction, transaction.to_rejected_id()?, &mut rng) - .map_err(|e| anyhow!("Invalid transaction found in the transactions list: {e}")) - })?; - // TODO (howardwu): Remove this after moving the total supply into credits.aleo. { // // Retrieve the latest total supply. @@ -78,9 +68,9 @@ impl> Ledger { block.previous_hash(), )?; - // Ensure speculation over the unconfirmed transactions is correct. + // Ensure speculation over the unconfirmed transactions is correct and ensure each transaction is well-formed and unique. let ratified_finalize_operations = - self.vm.check_speculate(state, block.ratifications(), block.solutions(), block.transactions())?; + self.vm.check_speculate(state, block.ratifications(), block.solutions(), block.transactions(), rng)?; // Retrieve the committee lookback. let committee_lookback = { diff --git a/synthesizer/src/vm/finalize.rs b/synthesizer/src/vm/finalize.rs index a66a6f8065..216b8d13fb 100644 --- a/synthesizer/src/vm/finalize.rs +++ b/synthesizer/src/vm/finalize.rs @@ -20,6 +20,8 @@ use rand::{rngs::StdRng, SeedableRng}; impl> VM { /// Speculates on the given list of transactions in the VM. + /// This function aborts all transactions that are not are well-formed or unique. + /// /// /// Returns the confirmed transactions, aborted transaction IDs, /// and finalize operations from pre-ratify and post-ratify. @@ -111,18 +113,30 @@ impl> VM { } /// Checks the speculation on the given transactions in the VM. + /// This function also ensure that the given transactions are well-formed and unique. /// /// Returns the finalize operations from pre-ratify and post-ratify. #[inline] - pub fn check_speculate( + pub fn check_speculate( &self, state: FinalizeGlobalState, ratifications: &Ratifications, solutions: &Solutions, transactions: &Transactions, + rng: &mut R, ) -> Result>> { let timer = timer!("VM::check_speculate"); + // Ensure each transaction is well-formed and unique. + // NOTE: We perform the transaction checks here prior to `atomic_speculate` because we must + // ensure that the `Fee` transactions are valid. We can't unify the transaction checks in `atomic_speculate` + // because we run speculation on the unconfirmed variant of the transactions. + let rngs = (0..transactions.len()).map(|_| StdRng::from_seed(rng.gen())).collect::>(); + cfg_iter!(transactions).zip(rngs).try_for_each(|(transaction, mut rng)| { + self.check_transaction(transaction, transaction.to_rejected_id()?, &mut rng) + .map_err(|e| anyhow!("Invalid transaction found in the transactions list: {e}")) + })?; + // Reconstruct the candidate ratifications to verify the speculation. let candidate_ratifications = ratifications.iter().cloned().collect::>(); // Reconstruct the unconfirmed transactions to verify the speculation.