From ff29e0e8dce545d4d43d7e7fc2f9c9a5ef1f3d14 Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 02:44:42 +1000 Subject: [PATCH 01/23] Reduced `get_account` calls for `CloseAccount` Improvement from 3711 steps to 3021 steps for the proof. --- p-token/src/entrypoint-runtime-verification.rs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 50a7d85..3c4dd99 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -1156,17 +1156,15 @@ pub fn test_process_close_account(accounts: &[AccountInfo; 3]) -> ProgramResult cheatcode_is_multisig(&accounts[2]); //-Initial State----------------------------------------------------------- - let src_initialised = get_account(&accounts[0]).is_initialized(); + let src_old = get_account(&accounts[0]); + let src_initialised = src_old.is_initialized(); let src_data_len = accounts[0].data_len(); - let src_init_amount = get_account(&accounts[0]).amount(); - let dst_init_lamports = accounts[0].lamports(); - let src_init_lamports = accounts[1].lamports(); - let src_is_native = get_account(&accounts[0]).is_native(); - let src_owned_sys_inc = get_account(&accounts[0]).is_owned_by_system_program_or_incinerator(); - let authority = get_account(&accounts[0]) - .close_authority() - .cloned() - .unwrap_or(get_account(&accounts[0]).owner); + let src_init_amount = src_old.amount(); + let src_init_lamports = accounts[0].lamports(); + let dst_init_lamports = accounts[1].lamports(); + let src_is_native = src_old.is_native(); + let src_owned_sys_inc = src_old.is_owned_by_system_program_or_incinerator(); + let authority = src_old.close_authority().cloned().unwrap_or(src_old.owner); #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; #[cfg(feature = "multisig")] From 972188d4904090097b61c35ba5d51c6244f253aa Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 02:56:22 +1000 Subject: [PATCH 02/23] Reduced calls to `get_mint` in `InitializeMint` `test_process_initialize_mint_{freeze, no_freeze}` did not have the proofs run again as they do not finish to tell if there is a step reduction --- .../src/entrypoint-runtime-verification.rs | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 3c4dd99..fbba177 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -610,16 +610,14 @@ pub fn test_process_initialize_mint_freeze( } else if accounts[0].lamports() < minimum_balance { assert_eq!(result, Err(ProgramError::Custom(0))) } else { - assert!(get_mint(&accounts[0]).is_initialized().unwrap()); - assert_eq!( - get_mint(&accounts[0]).mint_authority().unwrap(), - &instruction_data[1..33] - ); - assert_eq!(get_mint(&accounts[0]).decimals, instruction_data[0]); + let mint_new = get_mint(&accounts[0]); + assert!(mint_new.is_initialized().unwrap()); + assert_eq!(mint_new.mint_authority().unwrap(), &instruction_data[1..33]); + assert_eq!(mint_new.decimals, instruction_data[0]); if instruction_data[33] == 1 { assert_eq!( - get_mint(&accounts[0]).freeze_authority().unwrap(), + mint_new.freeze_authority().unwrap(), &instruction_data[34..66] ); } @@ -666,18 +664,16 @@ pub fn test_process_initialize_mint_no_freeze( } else if accounts[0].lamports() < minimum_balance { assert_eq!(result, Err(ProgramError::Custom(0))) } else { - assert!(get_mint(&accounts[0]).is_initialized().unwrap()); - assert_eq!( - get_mint(&accounts[0]).mint_authority().unwrap(), - &instruction_data[1..33] - ); - assert_eq!(get_mint(&accounts[0]).decimals, instruction_data[0]); + let mint_new = get_mint(&accounts[0]); + assert!(mint_new.is_initialized().unwrap()); + assert_eq!(mint_new.mint_authority().unwrap(), &instruction_data[1..33]); + assert_eq!(mint_new.decimals, instruction_data[0]); #[allow(clippy::out_of_bounds_indexing)] // Guard above prevents this branch TODO: Perhaps remove? if instruction_data[33] == 1 { assert_eq!( - get_mint(&accounts[0]).freeze_authority().unwrap(), + mint_new.freeze_authority().unwrap(), &instruction_data[34..66] ); } From f3b31de31924b13f012b3ae3dc1283bf15a58f13 Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 13:00:01 +1000 Subject: [PATCH 03/23] Reduced calls to `get_account` in `InitializeAccount` This DOES NOT reduce the amount of proofs steps compared to if this change is not present (both 89207 steps), indicating that our proofs are not getting into the `else` brach of the post-condition. --- p-token/src/entrypoint-runtime-verification.rs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index fbba177..cfc023b 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -731,22 +731,21 @@ pub fn test_process_initialize_account(accounts: &[AccountInfo; 4]) -> ProgramRe { assert_eq!(result, Err(ProgramError::Custom(2))) } else { + let new_account_new = get_account(&accounts[0]); + assert!(result.is_ok()); assert_eq!( - get_account(&accounts[0]).account_state().unwrap(), + new_account_new.account_state().unwrap(), account_state::AccountState::Initialized ); - assert_eq!(get_account(&accounts[0]).mint, *accounts[1].key()); - assert_eq!(get_account(&accounts[0]).owner, *accounts[2].key()); + assert_eq!(new_account_new.mint, *accounts[1].key()); + assert_eq!(new_account_new.owner, *accounts[2].key()); if is_native_mint { - assert!(get_account(&accounts[0]).is_native()); + assert!(new_account_new.is_native()); + assert_eq!(new_account_new.native_amount().unwrap(), minimum_balance); assert_eq!( - get_account(&accounts[0]).native_amount().unwrap(), - minimum_balance - ); - assert_eq!( - get_account(&accounts[0]).amount(), + new_account_new.amount(), accounts[0].lamports() - minimum_balance ); } From 7f061064ade0498240486ca38612c478ad7f05c9 Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 15:04:51 +1000 Subject: [PATCH 04/23] Reduced calls to `get_account` in `Transfer` --- .../src/entrypoint-runtime-verification.rs | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index cfc023b..b8702c8 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -774,16 +774,17 @@ pub fn test_process_transfer( cheatcode_is_multisig(&accounts[2]); //-Initial State----------------------------------------------------------- + let src_old = get_account(&accounts[0]); let amount = unsafe { u64::from_le_bytes(*(instruction_data.as_ptr() as *const [u8; 8])) }; - let src_initialised = get_account(&accounts[0]).is_initialized(); + let src_initialised = src_old.is_initialized(); let dst_initialised = get_account(&accounts[1]).is_initialized(); - let src_initial_amount = get_account(&accounts[0]).amount(); + let src_initial_amount = src_old.amount(); let dst_initial_amount = get_account(&accounts[1]).amount(); let src_initial_lamports = accounts[0].lamports(); let dst_initial_lamports = accounts[1].lamports(); - let src_owner = get_account(&accounts[0]).owner; - let old_src_delgate = get_account(&accounts[0]).delegate().cloned(); - let old_src_delgated_amount = get_account(&accounts[0]).delegated_amount(); + let src_owner = src_old.owner; + let old_src_delgate = src_old.delegate().cloned(); + let old_src_delgated_amount = src_old.delegated_amount(); #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; #[cfg(feature = "multisig")] @@ -830,6 +831,7 @@ pub fn test_process_transfer( assert_eq!(result, Err(ProgramError::Custom(3))); return result; } else { + let src_new = get_account(&accounts[0]); if old_src_delgate == Some(*accounts[2].key()) { // Validate Owner inner_test_validate_owner( @@ -867,7 +869,7 @@ pub fn test_process_transfer( return result; } else if accounts[0] != accounts[1] && amount != 0 - && get_account(&accounts[0]).is_native() + && src_new.is_native() && src_initial_lamports < amount { // Not sure how to fund native mint @@ -875,23 +877,20 @@ pub fn test_process_transfer( return result; } else if accounts[0] != accounts[1] && amount != 0 - && get_account(&accounts[0]).is_native() + && src_new.is_native() && u64::MAX - amount < dst_initial_lamports { // Not sure how to fund native mint assert_eq!(result, Err(ProgramError::Custom(14))); return result; } else if accounts[0] != accounts[1] && amount != 0 { - assert_eq!( - get_account(&accounts[0]).amount(), - src_initial_amount - amount - ); + assert_eq!(src_new.amount(), src_initial_amount - amount); assert_eq!( get_account(&accounts[1]).amount(), dst_initial_amount + amount ); - if get_account(&accounts[0]).is_native() { + if src_new.is_native() { assert_eq!(accounts[0].lamports(), src_initial_lamports - amount); assert_eq!(accounts[1].lamports(), dst_initial_lamports + amount); } @@ -901,12 +900,9 @@ pub fn test_process_transfer( // Delegate updates if old_src_delgate == Some(*accounts[2].key()) && accounts[0] != accounts[1] { - assert_eq!( - get_account(&accounts[0]).delegated_amount(), - old_src_delgated_amount - amount - ); + assert_eq!(src_new.delegated_amount(), old_src_delgated_amount - amount); if old_src_delgated_amount - amount == 0 { - assert_eq!(get_account(&accounts[0]).delegate(), None); + assert_eq!(src_new.delegate(), None); } } } From 597f69922fe9307c9877f8b75e5fef02f19f4d07 Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 15:16:31 +1000 Subject: [PATCH 05/23] Reduced called to `get_{account, mint}` for `MintTo` --- .../src/entrypoint-runtime-verification.rs | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index b8702c8..3aea05d 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -930,11 +930,13 @@ pub fn test_process_mint_to( cheatcode_is_multisig(&accounts[2]); //-Initial State----------------------------------------------------------- - let initial_supply = get_mint(&accounts[0]).supply(); - let initial_amount = get_account(&accounts[1]).amount(); - let mint_initialised = get_mint(&accounts[0]).is_initialized(); - let dst_initialised = get_account(&accounts[1]).is_initialized(); - let dst_init_state = get_account(&accounts[1]).account_state(); + let mint_old = get_mint(&accounts[0]); + let dst_old = get_account(&accounts[1]); + let initial_supply = mint_old.supply(); + let initial_amount = dst_old.amount(); + let mint_initialised = mint_old.is_initialized(); + let dst_initialised = dst_old.is_initialized(); + let dst_init_state = dst_old.account_state(); #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; #[cfg(feature = "multisig")] @@ -980,12 +982,14 @@ pub fn test_process_mint_to( assert_eq!(result, Err(ProgramError::UninitializedAccount)); return result; } else { - if get_mint(&accounts[0]).mint_authority().is_some() { + let mint_new = get_mint(&accounts[0]); + let mint_authority_new = mint_new.mint_authority(); + if mint_authority_new.is_some() { // Validate Owner inner_test_validate_owner( - get_mint(&accounts[0]).mint_authority().unwrap(), // expected_owner - &accounts[2], // owner_account_info - &accounts[3..], // tx_signers + mint_authority_new.unwrap(), // expected_owner + &accounts[2], // owner_account_info + &accounts[3..], // tx_signers maybe_multisig_is_initialised, result.clone(), )?; @@ -1007,7 +1011,7 @@ pub fn test_process_mint_to( return result; } - assert_eq!(get_mint(&accounts[0]).supply(), initial_supply + amount); + assert_eq!(mint_new.supply(), initial_supply + amount); assert_eq!(get_account(&accounts[1]).amount(), initial_amount + amount); assert!(result.is_ok()); } From 35e4424e2b00a0c02c39c70a7748187ca81144b7 Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 16:02:32 +1000 Subject: [PATCH 06/23] Reduced calls to `get_account` in `Burn` --- .../src/entrypoint-runtime-verification.rs | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 3aea05d..4aa92cd 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -1036,18 +1036,20 @@ pub fn test_process_burn(accounts: &[AccountInfo; 3], instruction_data: &[u8; 8] cheatcode_is_multisig(&accounts[2]); //-Initial State----------------------------------------------------------- + let src_old = get_account(&accounts[0]); + let mint_old = get_mint(&accounts[1]); let amount = unsafe { u64::from_le_bytes(*(instruction_data.as_ptr() as *const [u8; 8])) }; - let src_initialised = get_account(&accounts[0]).is_initialized(); - let src_init_amount = get_account(&accounts[0]).amount(); - let src_init_state = get_account(&accounts[0]).account_state(); - let src_is_native = get_account(&accounts[0]).is_native(); - let src_mint = get_account(&accounts[0]).mint; - let src_owned_sys_inc = get_account(&accounts[0]).is_owned_by_system_program_or_incinerator(); - let src_owner = get_account(&accounts[0]).owner; - let old_src_delgate = get_account(&accounts[0]).delegate().cloned(); - let old_src_delgated_amount = get_account(&accounts[0]).delegated_amount(); - let mint_initialised = get_mint(&accounts[1]).is_initialized(); - let mint_init_supply = get_mint(&accounts[1]).supply(); + let src_initialised = src_old.is_initialized(); + let src_init_amount = src_old.amount(); + let src_init_state = src_old.account_state(); + let src_is_native = src_old.is_native(); + let src_mint = src_old.mint; + let src_owned_sys_inc = src_old.is_owned_by_system_program_or_incinerator(); + let src_owner = src_old.owner; + let old_src_delgate = src_old.delegate().cloned(); + let old_src_delgated_amount = src_old.delegated_amount(); + let mint_initialised = mint_old.is_initialized(); + let mint_init_supply = mint_old.supply(); let mint_owner = *accounts[1].owner(); #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; @@ -1115,18 +1117,16 @@ pub fn test_process_burn(accounts: &[AccountInfo; 3], instruction_data: &[u8; 8] } else if amount == 0 && mint_owner != pinocchio_token_interface::program::ID { assert_eq!(result, Err(ProgramError::IncorrectProgramId)) } else { - assert!(get_account(&accounts[0]).amount() == src_init_amount - amount); + let src_new = get_account(&accounts[0]); + assert!(src_new.amount() == src_init_amount - amount); assert!(get_mint(&accounts[1]).supply() == mint_init_supply - amount); assert!(result.is_ok()); // Delegate updates if old_src_delgate.is_some() && *accounts[2].key() == old_src_delgate.unwrap() { - assert_eq!( - get_account(&accounts[0]).delegated_amount(), - old_src_delgated_amount - amount - ); + assert_eq!(src_new.delegated_amount(), old_src_delgated_amount - amount); if old_src_delgated_amount - amount == 0 { - assert_eq!(get_account(&accounts[0]).delegate(), None); + assert_eq!(src_new.delegate(), None); } } } From 3686c52c76ba15523d1efe6b1fb039b85f21689c Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 16:12:31 +1000 Subject: [PATCH 07/23] Reduced calls to `get_account` in `TransferChecked` --- .../src/entrypoint-runtime-verification.rs | 38 +++++++++---------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 4aa92cd..2f5fda5 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -1238,16 +1238,18 @@ pub fn test_process_transfer_checked( cheatcode_is_multisig(&accounts[3]); //-Initial State----------------------------------------------------------- + let src_old = get_account(&accounts[0]); + let dst_old = get_account(&accounts[2]); let amount = unsafe { u64::from_le_bytes(*(instruction_data.as_ptr() as *const [u8; 8])) }; - let src_initialised = get_account(&accounts[0]).is_initialized(); - let dst_initialised = get_account(&accounts[2]).is_initialized(); - let src_initial_amount = get_account(&accounts[0]).amount(); - let dst_initial_amount = get_account(&accounts[2]).amount(); + let src_initialised = src_old.is_initialized(); + let dst_initialised = dst_old.is_initialized(); + let src_initial_amount = src_old.amount(); + let dst_initial_amount = dst_old.amount(); let src_initial_lamports = accounts[0].lamports(); let dst_initial_lamports = accounts[2].lamports(); - let src_owner = get_account(&accounts[0]).owner; - let old_src_delgate = get_account(&accounts[0]).delegate().cloned(); - let old_src_delgated_amount = get_account(&accounts[0]).delegated_amount(); + let src_owner = src_old.owner; + let old_src_delgate = src_old.delegate().cloned(); + let old_src_delgated_amount = src_old.delegated_amount(); let mint_initialised = get_mint(&accounts[1]).is_initialized(); #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; @@ -1336,6 +1338,8 @@ pub fn test_process_transfer_checked( )?; } + let src_new = get_account(&accounts[0]); + if (accounts[0] == accounts[2] || amount == 0) && accounts[0].owner() != &pinocchio_token_interface::program::ID { @@ -1347,28 +1351,23 @@ pub fn test_process_transfer_checked( assert_eq!(result, Err(ProgramError::IncorrectProgramId)); return result; } else if accounts[0] != accounts[2] && amount != 0 { - if get_account(&accounts[0]).is_native() && src_initial_lamports < amount { + if src_new.is_native() && src_initial_lamports < amount { // Not sure how to fund native mint assert_eq!(result, Err(ProgramError::Custom(14))); return result; - } else if get_account(&accounts[0]).is_native() - && u64::MAX - amount < dst_initial_lamports - { + } else if src_new.is_native() && u64::MAX - amount < dst_initial_lamports { // Not sure how to fund native mint assert_eq!(result, Err(ProgramError::Custom(14))); return result; } - assert_eq!( - get_account(&accounts[0]).amount(), - src_initial_amount - amount - ); + assert_eq!(src_new.amount(), src_initial_amount - amount); assert_eq!( get_account(&accounts[2]).amount(), dst_initial_amount + amount ); - if get_account(&accounts[0]).is_native() { + if src_new.is_native() { assert_eq!(accounts[0].lamports(), src_initial_lamports - amount); assert_eq!(accounts[1].lamports(), dst_initial_lamports + amount); } @@ -1377,12 +1376,9 @@ pub fn test_process_transfer_checked( assert!(result.is_ok()); // Delegate updates if old_src_delgate == Some(*accounts[3].key()) && accounts[0] != accounts[2] { - assert_eq!( - get_account(&accounts[0]).delegated_amount(), - old_src_delgated_amount - amount - ); + assert_eq!(src_new.delegated_amount(), old_src_delgated_amount - amount); if old_src_delgated_amount - amount == 0 { - assert_eq!(get_account(&accounts[0]).delegate(), None); + assert_eq!(src_new.delegate(), None); } } } From 05bf4e2a4fc11300e594a91109cf0c8e85fabf84 Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 16:23:01 +1000 Subject: [PATCH 08/23] Reduced calls to `get_account` in `BurnChecked` --- .../src/entrypoint-runtime-verification.rs | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 2f5fda5..4608b8a 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -1406,19 +1406,21 @@ pub fn test_process_burn_checked( cheatcode_is_multisig(&accounts[2]); //-Initial State----------------------------------------------------------- + let src_old = get_account(&accounts[0]); + let mint_old = get_mint(&accounts[1]); let amount = unsafe { u64::from_le_bytes(*(instruction_data.as_ptr() as *const [u8; 8])) }; - let src_initialised = get_account(&accounts[0]).is_initialized(); - let src_init_amount = get_account(&accounts[0]).amount(); - let src_init_state = get_account(&accounts[0]).account_state(); - let src_is_native = get_account(&accounts[0]).is_native(); - let src_mint = get_account(&accounts[0]).mint; - let src_owned_sys_inc = get_account(&accounts[0]).is_owned_by_system_program_or_incinerator(); - let src_owner = get_account(&accounts[0]).owner; - let old_src_delgate = get_account(&accounts[0]).delegate().cloned(); - let old_src_delgated_amount = get_account(&accounts[0]).delegated_amount(); - let mint_initialised = get_mint(&accounts[1]).is_initialized(); - let mint_init_supply = get_mint(&accounts[1]).supply(); - let mint_decimals = get_mint(&accounts[1]).decimals; + let src_initialised = src_old.is_initialized(); + let src_init_amount = src_old.amount(); + let src_init_state = src_old.account_state(); + let src_is_native = src_old.is_native(); + let src_mint = src_old.mint; + let src_owned_sys_inc = src_old.is_owned_by_system_program_or_incinerator(); + let src_owner = src_old.owner; + let old_src_delgate = src_old.delegate().cloned(); + let old_src_delgated_amount = src_old.delegated_amount(); + let mint_initialised = mint_old.is_initialized(); + let mint_init_supply = mint_old.supply(); + let mint_decimals = mint_old.decimals; let mint_owner = *accounts[1].owner(); #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; @@ -1488,18 +1490,16 @@ pub fn test_process_burn_checked( } else if amount == 0 && mint_owner != pinocchio_token_interface::program::ID { assert_eq!(result, Err(ProgramError::IncorrectProgramId)) } else { - assert!(get_account(&accounts[0]).amount() == src_init_amount - amount); + let src_new = get_account(&accounts[0]); + assert!(src_new.amount() == src_init_amount - amount); assert!(get_mint(&accounts[1]).supply() == mint_init_supply - amount); assert!(result.is_ok()); // Delegate updates if old_src_delgate.is_some() && *accounts[2].key() == old_src_delgate.unwrap() { - assert_eq!( - get_account(&accounts[0]).delegated_amount(), - old_src_delgated_amount - amount - ); + assert_eq!(src_new.delegated_amount(), old_src_delgated_amount - amount); if old_src_delgated_amount - amount == 0 { - assert_eq!(get_account(&accounts[0]).delegate(), None); + assert_eq!(src_new.delegate(), None); } } } From ddc0cac797e3fa7bf1705e3691e1fa18d21ce6b1 Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 16:26:14 +1000 Subject: [PATCH 09/23] Reduced calls to `get_account` in `InitializeAccount2` --- p-token/src/entrypoint-runtime-verification.rs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 4608b8a..17c9b5d 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -1563,22 +1563,20 @@ pub fn test_process_initialize_account2( { assert_eq!(result, Err(ProgramError::Custom(2))) } else { + let new_account_new = get_account(&accounts[0]); assert!(result.is_ok()); assert_eq!( - get_account(&accounts[0]).account_state().unwrap(), + new_account_new.account_state().unwrap(), account_state::AccountState::Initialized ); - assert_eq!(get_account(&accounts[0]).mint, *accounts[1].key()); - assert_eq!(get_account(&accounts[0]).owner, *instruction_data); + assert_eq!(new_account_new.mint, *accounts[1].key()); + assert_eq!(new_account_new.owner, *instruction_data); if is_native_mint { - assert!(get_account(&accounts[0]).is_native()); - assert_eq!( - get_account(&accounts[0]).native_amount().unwrap(), - minimum_balance - ); + assert!(new_account_new.is_native()); + assert_eq!(new_account_new.native_amount().unwrap(), minimum_balance); assert_eq!( - get_account(&accounts[0]).amount(), + new_account_new.amount(), accounts[0].lamports() - minimum_balance ); } From 1a82045b50763bd392d9faa6d5b957e52dad61e5 Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 16:28:36 +1000 Subject: [PATCH 10/23] Reduced calls to `get_account` for `InitializeAccount3` --- p-token/src/entrypoint-runtime-verification.rs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 17c9b5d..ed51523 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -1639,22 +1639,20 @@ pub fn test_process_initialize_account3( { assert_eq!(result, Err(ProgramError::Custom(2))) } else { + let new_account_new = get_account(&accounts[0]); assert!(result.is_ok()); assert_eq!( - get_account(&accounts[0]).account_state().unwrap(), + new_account_new.account_state().unwrap(), account_state::AccountState::Initialized ); - assert_eq!(get_account(&accounts[0]).mint, *accounts[1].key()); - assert_eq!(get_account(&accounts[0]).owner, *instruction_data); + assert_eq!(new_account_new.mint, *accounts[1].key()); + assert_eq!(new_account_new.owner, *instruction_data); if is_native_mint { - assert!(get_account(&accounts[0]).is_native()); - assert_eq!( - get_account(&accounts[0]).native_amount().unwrap(), - minimum_balance - ); + assert!(new_account_new.is_native()); + assert_eq!(new_account_new.native_amount().unwrap(), minimum_balance); assert_eq!( - get_account(&accounts[0]).amount(), + new_account_new.amount(), accounts[0].lamports() - minimum_balance ); } From f4a6379fbeacb1e61a0294f97621ecb67404457e Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 16:33:41 +1000 Subject: [PATCH 11/23] Reduced calls to `get_mint` for `InitializeMint2` --- .../src/entrypoint-runtime-verification.rs | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index ed51523..b902f96 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -1702,16 +1702,14 @@ pub fn test_process_initialize_mint2_freeze( } else if accounts[0].lamports() < minimum_balance { assert_eq!(result, Err(ProgramError::Custom(0))) } else { - assert!(get_mint(&accounts[0]).is_initialized().unwrap()); - assert_eq!( - get_mint(&accounts[0]).mint_authority().unwrap(), - &instruction_data[1..33] - ); - assert_eq!(get_mint(&accounts[0]).decimals, instruction_data[0]); + let mint_new = get_mint(&accounts[0]); + assert!(mint_new.is_initialized().unwrap()); + assert_eq!(mint_new.mint_authority().unwrap(), &instruction_data[1..33]); + assert_eq!(mint_new.decimals, instruction_data[0]); if instruction_data[33] == 1 { assert_eq!( - get_mint(&accounts[0]).freeze_authority().unwrap(), + mint_new.freeze_authority().unwrap(), &instruction_data[34..66] ); } @@ -1759,18 +1757,16 @@ pub fn test_process_initialize_mint2_no_freeze( } else if accounts[0].lamports() < minimum_balance { assert_eq!(result, Err(ProgramError::Custom(0))) } else { - assert!(get_mint(&accounts[0]).is_initialized().unwrap()); - assert_eq!( - get_mint(&accounts[0]).mint_authority().unwrap(), - &instruction_data[1..33] - ); - assert_eq!(get_mint(&accounts[0]).decimals, instruction_data[0]); + let mint_new = get_mint(&accounts[0]); + assert!(mint_new.is_initialized().unwrap()); + assert_eq!(mint_new.mint_authority().unwrap(), &instruction_data[1..33]); + assert_eq!(mint_new.decimals, instruction_data[0]); #[allow(clippy::out_of_bounds_indexing)] // Guard above prevents this branch TODO: Perhaps remove? if instruction_data[33] == 1 { assert_eq!( - get_mint(&accounts[0]).freeze_authority().unwrap(), + mint_new.freeze_authority().unwrap(), &instruction_data[34..66] ); } From a528120a8ede1085671ebc5cc56a724c0d98c430 Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 16:37:14 +1000 Subject: [PATCH 12/23] Reduced calls to `get_multisig` in `InitializeMultisig` --- p-token/src/entrypoint-runtime-verification.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index b902f96..f327450 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -1819,18 +1819,19 @@ fn test_process_initialize_multisig( } else if !Multisig::is_valid_signer_index(instruction_data[0]) { assert_eq!(result, Err(ProgramError::Custom(8))) } else { + let multisig_new = get_multisig(&accounts[0]); assert!(accounts[2..] .iter() .map(|signer| *signer.key()) - .eq(get_multisig(&accounts[0]) + .eq(multisig_new .signers .iter() .take(accounts[2..].len()) .copied())); - assert_eq!(get_multisig(&accounts[0]).m, instruction_data[0]); - assert_eq!(get_multisig(&accounts[0]).n as usize, accounts.len() - 2); - assert!(get_multisig(&accounts[0]).is_initialized().is_ok()); - assert!(get_multisig(&accounts[0]).is_initialized().unwrap()); + assert_eq!(multisig_new.m, instruction_data[0]); + assert_eq!(multisig_new.n as usize, accounts.len() - 2); + assert!(multisig_new.is_initialized().is_ok()); + assert!(multisig_new.is_initialized().unwrap()); assert!(result.is_ok()) } From 02c100a7abce168e1995e92d4bd8f60836cc08ed Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 17:39:07 +1000 Subject: [PATCH 13/23] Reduced calls to `get_account` for `Approve` --- p-token/src/entrypoint-runtime-verification.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index f327450..1a7c772 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -1855,10 +1855,11 @@ fn test_process_approve(accounts: &[AccountInfo; 3], instruction_data: &[u8; 8]) cheatcode_is_multisig(&accounts[2]); // Owner //-Initial State----------------------------------------------------------- + let src_old = get_account(&accounts[0]); let amount = unsafe { u64::from_le_bytes(*(instruction_data.as_ptr() as *const [u8; 8])) }; - let src_owner = get_account(&accounts[0]).owner; - let src_initialised = get_account(&accounts[0]).is_initialized(); - let src_init_state = get_account(&accounts[0]).account_state(); + let src_owner = src_old.owner; + let src_initialised = src_old.is_initialized(); + let src_init_state = src_old.account_state(); #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; #[cfg(feature = "multisig")] @@ -1891,11 +1892,9 @@ fn test_process_approve(accounts: &[AccountInfo; 3], instruction_data: &[u8; 8]) result.clone(), )?; - assert_eq!( - get_account(&accounts[0]).delegate().unwrap(), - accounts[1].key() - ); - assert_eq!(get_account(&accounts[0]).delegated_amount(), amount); + let src_new = get_account(&accounts[0]); + assert_eq!(src_new.delegate().unwrap(), accounts[1].key()); + assert_eq!(src_new.delegated_amount(), amount); assert!(result.is_ok()) } From 958163e60ac4daffa7b440161ded5915ff1ef400 Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 17:44:30 +1000 Subject: [PATCH 14/23] Reduced calls to `get_account` in `Revoke` --- p-token/src/entrypoint-runtime-verification.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 1a7c772..c5ae2f4 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -1915,9 +1915,10 @@ fn test_process_revoke(accounts: &[AccountInfo; 2]) -> ProgramResult { cheatcode_is_multisig(&accounts[1]); // Owner //-Initial State----------------------------------------------------------- - let src_initialised = get_account(&accounts[0]).is_initialized(); - let src_init_state = get_account(&accounts[0]).account_state(); - let src_owner = get_account(&accounts[0]).owner; + let src_old = get_account(&accounts[0]); + let src_initialised = src_old.is_initialized(); + let src_init_state = src_old.account_state(); + let src_owner = src_old.owner; #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; #[cfg(feature = "multisig")] @@ -1949,8 +1950,9 @@ fn test_process_revoke(accounts: &[AccountInfo; 2]) -> ProgramResult { result.clone(), )?; - assert!(get_account(&accounts[0]).delegate().is_none()); - assert_eq!(get_account(&accounts[0]).delegated_amount(), 0); + let src_new = get_account(&accounts[0]); + assert!(src_new.delegate().is_none()); + assert_eq!(src_new.delegated_amount(), 0); assert!(result.is_ok()) } From 5434cf3dc8837becfb744bc363289967ea8a414f Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 18:00:10 +1000 Subject: [PATCH 15/23] Reduced calls to `get_{account, mint}` in `SetAuthority` --- .../src/entrypoint-runtime-verification.rs | 57 +++++++++---------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index c5ae2f4..f0586b9 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -1979,13 +1979,11 @@ fn test_process_set_authority_account( cheatcode_is_multisig(&accounts[1]); // Authority //-Initial State----------------------------------------------------------- - let src_initialised = get_account(&accounts[0]).is_initialized(); - let src_init_state = get_account(&accounts[0]).account_state(); - let src_owner = get_account(&accounts[0]).owner; - let authority = get_account(&accounts[0]) - .close_authority() - .cloned() - .unwrap_or(get_account(&accounts[0]).owner); + let src_old = get_account(&accounts[0]); + let src_initialised = src_old.is_initialized(); + let src_init_state = src_old.account_state(); + let src_owner = src_old.owner; + let authority = src_old.close_authority().cloned().unwrap_or(src_old.owner); let account_data_len = accounts[0].data_len(); #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; @@ -2016,6 +2014,9 @@ fn test_process_set_authority_account( return result; } else if account_data_len == Account::LEN { // established by cheatcode_is_account + + let src_new = get_account(&accounts[0]); + if src_initialised.is_err() { assert_eq!(result, Err(ProgramError::InvalidAccountData)); return result; @@ -2045,11 +2046,11 @@ fn test_process_set_authority_account( return result; } - assert_eq!(get_account(&accounts[0]).owner, instruction_data[2..34]); - assert_eq!(get_account(&accounts[0]).delegate(), None); - assert_eq!(get_account(&accounts[0]).delegated_amount(), 0); - if get_account(&accounts[0]).is_native() { - assert_eq!(get_account(&accounts[0]).close_authority(), None); + assert_eq!(src_new.owner, instruction_data[2..34]); + assert_eq!(src_new.delegate(), None); + assert_eq!(src_new.delegated_amount(), 0); + if src_new.is_native() { + assert_eq!(src_new.close_authority(), None); } assert!(result.is_ok()) } else { @@ -2067,12 +2068,9 @@ fn test_process_set_authority_account( if instruction_data[1] == 1 { // 1 ==> 34 <= instruction_data.len() - assert_eq!( - get_account(&accounts[0]).close_authority().unwrap(), - &instruction_data[2..34] - ); + assert_eq!(src_new.close_authority().unwrap(), &instruction_data[2..34]); } else { - assert_eq!(get_account(&accounts[0]).close_authority(), None); + assert_eq!(src_new.close_authority(), None); } assert!(result.is_ok()) } @@ -2101,16 +2099,17 @@ fn test_process_set_authority_mint( cheatcode_is_multisig(&accounts[1]); // Authority //-Initial State----------------------------------------------------------- + let mint_old = get_mint(&accounts[0]); let mint_data_len = accounts[0].data_len(); - let old_mint_authority_is_none = get_mint(&accounts[0]).mint_authority().is_none(); - let old_freeze_authority_is_none = get_mint(&accounts[0]).freeze_authority().is_none(); - let old_mint_authority = get_mint(&accounts[0]).mint_authority().cloned(); - let old_freeze_authority = get_mint(&accounts[0]).freeze_authority().cloned(); + let old_mint_authority_is_none = mint_old.mint_authority().is_none(); + let old_freeze_authority_is_none = mint_old.freeze_authority().is_none(); + let old_mint_authority = mint_old.mint_authority().cloned(); + let old_freeze_authority = mint_old.freeze_authority().cloned(); #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; #[cfg(feature = "multisig")] let maybe_multisig_is_initialised = Some(get_multisig(&accounts[1]).is_initialized()); - let mint_is_initialised = get_mint(&accounts[0]).is_initialized(); + let mint_is_initialised = mint_old.is_initialized(); //-Process Instruction----------------------------------------------------- let result = process_set_authority(accounts, instruction_data); @@ -2136,6 +2135,9 @@ fn test_process_set_authority_mint( return result; } else if mint_data_len == Mint::LEN { // established by cheatcode_is_mint + + let mint_new = get_mint(&accounts[0]); + if !mint_is_initialised.unwrap() { assert_eq!(result, Err(ProgramError::UninitializedAccount)); return result; @@ -2161,12 +2163,9 @@ fn test_process_set_authority_mint( if instruction_data[1] == 1 { // 1 ==> 34 <= instruction_data.len() - assert_eq!( - get_mint(&accounts[0]).mint_authority().unwrap(), - &instruction_data[2..34] - ); + assert_eq!(mint_new.mint_authority().unwrap(), &instruction_data[2..34]); } else { - assert_eq!(get_mint(&accounts[0]).mint_authority(), None); + assert_eq!(mint_new.mint_authority(), None); } assert!(result.is_ok()) } else { @@ -2189,11 +2188,11 @@ fn test_process_set_authority_mint( if instruction_data[1] == 1 { // 1 ==> 34 <= instruction_data.len() assert_eq!( - get_mint(&accounts[0]).freeze_authority().unwrap(), + mint_new.freeze_authority().unwrap(), &instruction_data[2..34] ); } else { - assert_eq!(get_mint(&accounts[0]).freeze_authority(), None); + assert_eq!(mint_new.freeze_authority(), None); } assert!(result.is_ok()) } From 6f493987482da8248e7c3d131e3c2012eee123f4 Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 18:29:45 +1000 Subject: [PATCH 16/23] Reduced calls to `get_{account, mint}` for `FreezeAccount` --- p-token/src/entrypoint-runtime-verification.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index f0586b9..6c1d8bd 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -2219,12 +2219,14 @@ fn test_process_freeze_account(accounts: &[AccountInfo; 3]) -> ProgramResult { cheatcode_is_multisig(&accounts[2]); //-Initial State----------------------------------------------------------- - let src_initialised = get_account(&accounts[0]).is_initialized(); - let src_init_state = get_account(&accounts[0]).account_state(); - let src_is_native = get_account(&accounts[0]).is_native(); - let src_mint = get_account(&accounts[0]).mint; - let mint_initialised = get_mint(&accounts[1]).is_initialized(); - let mint_freeze_auth = get_mint(&accounts[1]).freeze_authority().cloned(); + let src_old = get_account(&accounts[0]); + let mint_old = get_mint(&accounts[1]); + let src_initialised = src_old.is_initialized(); + let src_init_state = src_old.account_state(); + let src_is_native = src_old.is_native(); + let src_mint = src_old.mint; + let mint_initialised = mint_old.is_initialized(); + let mint_freeze_auth = mint_old.freeze_authority().cloned(); #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; #[cfg(feature = "multisig")] From 343902e4b7894ce756981c1029c035f81240abef Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 18:41:25 +1000 Subject: [PATCH 17/23] Reduced calls to `get_{account, mint}` for `ThawAccount` --- p-token/src/entrypoint-runtime-verification.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 6c1d8bd..542bacf 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -2295,12 +2295,14 @@ fn test_process_thaw_account(accounts: &[AccountInfo; 3]) -> ProgramResult { cheatcode_is_multisig(&accounts[2]); //-Initial State----------------------------------------------------------- - let src_initialised = get_account(&accounts[0]).is_initialized(); - let src_init_state = get_account(&accounts[0]).account_state(); - let src_is_native = get_account(&accounts[0]).is_native(); - let src_mint = get_account(&accounts[0]).mint; - let mint_initialised = get_mint(&accounts[1]).is_initialized(); - let mint_freeze_auth = get_mint(&accounts[1]).freeze_authority().cloned(); + let src_old = get_account(&accounts[0]); + let mint_old = get_mint(&accounts[1]); + let src_initialised = src_old.is_initialized(); + let src_init_state = src_old.account_state(); + let src_is_native = src_old.is_native(); + let src_mint = src_old.mint; + let mint_initialised = mint_old.is_initialized(); + let mint_freeze_auth = mint_old.freeze_authority().cloned(); #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; #[cfg(feature = "multisig")] From 86ec29c2c5fad7c14b00b194c03900acf828d21c Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 18:46:00 +1000 Subject: [PATCH 18/23] Reduced calls to `get_account` for `ApproveChecked` --- p-token/src/entrypoint-runtime-verification.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 542bacf..884f219 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -2377,10 +2377,11 @@ fn test_process_approve_checked( cheatcode_is_multisig(&accounts[3]); // Owner //-Initial State----------------------------------------------------------- + let src_old = get_account(&accounts[0]); let amount = unsafe { u64::from_le_bytes(*(instruction_data.as_ptr() as *const [u8; 8])) }; - let src_owner = get_account(&accounts[0]).owner; - let src_initialised = get_account(&accounts[0]).is_initialized(); - let src_init_state = get_account(&accounts[0]).account_state(); + let src_owner = src_old.owner; + let src_initialised = src_old.is_initialized(); + let src_init_state = src_old.account_state(); let mint_initialised = get_mint(&accounts[1]).is_initialized(); #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; @@ -2425,11 +2426,9 @@ fn test_process_approve_checked( result.clone(), )?; - assert_eq!( - get_account(&accounts[0]).delegate().unwrap(), - accounts[2].key() - ); - assert_eq!(get_account(&accounts[0]).delegated_amount(), amount); + let src_new = get_account(&accounts[0]); + assert_eq!(src_new.delegate().unwrap(), accounts[2].key()); + assert_eq!(src_new.delegated_amount(), amount); assert!(result.is_ok()) } From 962d28db66d33fa89d6804d3ed32b6db11e81259 Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 18:50:46 +1000 Subject: [PATCH 19/23] Reduced calls to `get_{account, mint}` in `MintToChecked` --- .../src/entrypoint-runtime-verification.rs | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 884f219..74042f5 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -2455,11 +2455,13 @@ fn test_process_mint_to_checked( cheatcode_is_multisig(&accounts[2]); //-Initial State----------------------------------------------------------- - let initial_supply = get_mint(&accounts[0]).supply(); - let initial_amount = get_account(&accounts[1]).amount(); - let mint_initialised = get_mint(&accounts[0]).is_initialized(); - let dst_initialised = get_account(&accounts[1]).is_initialized(); - let dst_init_state = get_account(&accounts[1]).account_state(); + let mint_old = get_mint(&accounts[0]); + let dst_old = get_account(&accounts[1]); + let initial_supply = mint_old.supply(); + let initial_amount = dst_old.amount(); + let mint_initialised = mint_old.is_initialized(); + let dst_initialised = dst_old.is_initialized(); + let dst_init_state = dst_old.account_state(); #[cfg(not(feature = "multisig"))] let maybe_multisig_is_initialised = None; #[cfg(feature = "multisig")] @@ -2510,12 +2512,13 @@ fn test_process_mint_to_checked( assert_eq!(result, Err(ProgramError::Custom(18))); return result; } else { - if get_mint(&accounts[0]).mint_authority().is_some() { + let mint_new = get_mint(&accounts[0]); + if mint_new.mint_authority().is_some() { // Validate Owner inner_test_validate_owner( - get_mint(&accounts[0]).mint_authority().unwrap(), // expected_owner - &accounts[2], // owner_account_info - &accounts[3..], // tx_signers + mint_new.mint_authority().unwrap(), // expected_owner + &accounts[2], // owner_account_info + &accounts[3..], // tx_signers maybe_multisig_is_initialised, result.clone(), )?; @@ -2537,7 +2540,7 @@ fn test_process_mint_to_checked( return result; } - assert_eq!(get_mint(&accounts[0]).supply(), initial_supply + amount); + assert_eq!(mint_new.supply(), initial_supply + amount); assert_eq!(get_account(&accounts[1]).amount(), initial_amount + amount); assert!(result.is_ok()); } From d4c0fd2d2364183b83dd6a283b336b1a18c45b2f Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 19:16:29 +1000 Subject: [PATCH 20/23] Reduced calls to `get_account` in `SyncNative` --- p-token/src/entrypoint-runtime-verification.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 74042f5..568425d 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -2555,11 +2555,12 @@ fn test_process_sync_native(accounts: &[AccountInfo; 1]) -> ProgramResult { cheatcode_is_account(&accounts[0]); //-Initial State----------------------------------------------------------- + let src_old = get_account(&accounts[0]); let src_owner = accounts[0].owner(); - let src_initialised = get_account(&accounts[0]).is_initialized(); - let src_native_amount = get_account(&accounts[0]).native_amount(); + let src_initialised = src_old.is_initialized(); + let src_native_amount = src_old.native_amount(); let src_init_lamports = accounts[0].lamports(); - let src_init_amount = get_account(&accounts[0]).amount(); + let src_init_amount = src_old.amount(); //-Process Instruction----------------------------------------------------- let result = process_sync_native(accounts); From f994f918cd4446dd95ec8c511f6ec12757706038 Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 19:19:22 +1000 Subject: [PATCH 21/23] Reduced calls to `get_multisig` in `InitializeMultisig2` --- p-token/src/entrypoint-runtime-verification.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 568425d..7aba4ea 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -2635,18 +2635,19 @@ fn test_process_initialize_multisig2( } else if !Multisig::is_valid_signer_index(instruction_data[0]) { assert_eq!(result, Err(ProgramError::Custom(8))) } else { + let multisig_new = get_multisig(&accounts[0]); assert!(accounts[1..] .iter() .map(|signer| *signer.key()) - .eq(get_multisig(&accounts[0]) + .eq(multisig_new .signers .iter() .take(accounts[1..].len()) .copied())); - assert_eq!(get_multisig(&accounts[0]).m, instruction_data[0]); - assert_eq!(get_multisig(&accounts[0]).n as usize, accounts.len() - 1); - assert!(get_multisig(&accounts[0]).is_initialized().is_ok()); - assert!(get_multisig(&accounts[0]).is_initialized().unwrap()); + assert_eq!(multisig_new.m, instruction_data[0]); + assert_eq!(multisig_new.n as usize, accounts.len() - 1); + assert!(multisig_new.is_initialized().is_ok()); + assert!(multisig_new.is_initialized().unwrap()); assert!(result.is_ok()) } From 92079639db3b396ef235c4e1343bbe9cbabee2bd Mon Sep 17 00:00:00 2001 From: dkcumming Date: Tue, 4 Nov 2025 19:32:09 +1000 Subject: [PATCH 22/23] Reduced calls to `get_{mint, account}` for `WithdrawExcessLamports` --- p-token/src/entrypoint-runtime-verification.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 7aba4ea..9e0e236 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -2861,10 +2861,11 @@ fn test_process_withdraw_excess_lamports_account(accounts: &[AccountInfo; 3]) -> cheatcode_is_multisig(&accounts[2]); // Authority //-Initial State----------------------------------------------------------- + let src_old = get_account(&accounts[0]); let src_data_len = accounts[0].data_len(); - let src_account_initialised = get_account(&accounts[0]).is_initialized(); - let src_account_owner = get_account(&accounts[0]).owner; - let src_account_is_native = get_account(&accounts[0]).is_native(); + let src_account_initialised = src_old.is_initialized(); + let src_account_owner = src_old.owner; + let src_account_is_native = src_old.is_native(); let src_init_lamports = accounts[0].lamports(); let dst_init_lamports = accounts[1].lamports(); #[cfg(not(feature = "multisig"))] @@ -2941,9 +2942,10 @@ fn test_process_withdraw_excess_lamports_mint(accounts: &[AccountInfo; 3]) -> Pr cheatcode_is_multisig(&accounts[2]); // Authority //-Initial State----------------------------------------------------------- + let src_old = get_mint(&accounts[0]); let src_data_len = accounts[0].data_len(); - let src_mint_initialised = get_mint(&accounts[0]).is_initialized(); - let src_mint_mint_authority = get_mint(&accounts[0]).mint_authority().cloned(); + let src_mint_initialised = src_old.is_initialized(); + let src_mint_mint_authority = src_old.mint_authority().cloned(); let src_init_lamports = accounts[0].lamports(); let dst_init_lamports = accounts[1].lamports(); #[cfg(not(feature = "multisig"))] From 9d2961d0e81c0ba9136c612cead0029a4c9da0da Mon Sep 17 00:00:00 2001 From: dkcumming Date: Thu, 6 Nov 2025 00:50:08 +1000 Subject: [PATCH 23/23] formatting --- p-token/src/entrypoint-runtime-verification.rs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/p-token/src/entrypoint-runtime-verification.rs b/p-token/src/entrypoint-runtime-verification.rs index 69f25ab..4a6e65a 100644 --- a/p-token/src/entrypoint-runtime-verification.rs +++ b/p-token/src/entrypoint-runtime-verification.rs @@ -1122,10 +1122,7 @@ pub fn test_process_transfer( assert_eq!(result, Err(ProgramError::Custom(14))); return result; } else if accounts[0] != accounts[1] && amount != 0 { - assert_eq!( - src_new.amount(), - src_initial_amount - amount - ); + assert_eq!(src_new.amount(), src_initial_amount - amount); assert_eq!( get_account(&accounts[1]).amount(), dst_initial_amount + amount @@ -1141,10 +1138,7 @@ pub fn test_process_transfer( // Delegate updates if old_src_delgate == Some(*accounts[2].key()) && accounts[0] != accounts[1] { - assert_eq!( - src_new.delegated_amount(), - old_src_delgated_amount - amount - ); + assert_eq!(src_new.delegated_amount(), old_src_delgated_amount - amount); if old_src_delgated_amount - amount == 0 { assert_eq!(src_new.delegate(), None); }