From bea8bfef5f84d0a3315b3d92257f5781fe417008 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Thu, 4 Dec 2025 20:52:41 +0400 Subject: [PATCH 01/15] feat: clone eata into ata --- Cargo.lock | 3 + magicblock-chainlink/Cargo.toml | 3 + .../src/chainlink/fetch_cloner.rs | 274 +++++++++++++++++- magicblock-chainlink/src/testing/eatas.rs | 91 ++++++ magicblock-chainlink/src/testing/mod.rs | 2 + test-integration/Cargo.lock | 14 +- test-integration/Cargo.toml | 1 + test-integration/test-chainlink/Cargo.toml | 1 + .../tests/ix_ata_eata_replace.rs | 161 ++++++++++ 9 files changed, 532 insertions(+), 18 deletions(-) create mode 100644 magicblock-chainlink/src/testing/eatas.rs create mode 100644 test-integration/test-chainlink/tests/ix_ata_eata_replace.rs diff --git a/Cargo.lock b/Cargo.lock index d4fb606d9..6457622d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3694,6 +3694,7 @@ dependencies = [ "solana-account-decoder-client-types", "solana-loader-v3-interface", "solana-loader-v4-interface", + "solana-program", "solana-pubkey", "solana-pubsub-client", "solana-rpc-client", @@ -3703,6 +3704,8 @@ dependencies = [ "solana-signer", "solana-system-interface", "solana-transaction-error", + "spl-token", + "spl-token-2022 6.0.0", "thiserror 1.0.69", "tokio", "tokio-stream", diff --git a/magicblock-chainlink/Cargo.toml b/magicblock-chainlink/Cargo.toml index 2f1415f45..a72764898 100644 --- a/magicblock-chainlink/Cargo.toml +++ b/magicblock-chainlink/Cargo.toml @@ -21,6 +21,7 @@ solana-account-decoder = { workspace = true } solana-account-decoder-client-types = { workspace = true } solana-loader-v3-interface = { workspace = true, features = ["serde"] } solana-loader-v4-interface = { workspace = true, features = ["serde"] } +solana-program = { workspace = true } solana-pubkey = { workspace = true } solana-pubsub-client = { workspace = true } solana-rpc-client = { workspace = true } @@ -30,6 +31,8 @@ solana-sdk-ids = { workspace = true } solana-signer = { workspace = true } solana-system-interface = { workspace = true } solana-transaction-error = { workspace = true } +spl-token = { workspace = true } +spl-token-2022 = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["full"] } tokio-stream = { workspace = true } diff --git a/magicblock-chainlink/src/chainlink/fetch_cloner.rs b/magicblock-chainlink/src/chainlink/fetch_cloner.rs index 2e8e23a61..66a6e9a7e 100644 --- a/magicblock-chainlink/src/chainlink/fetch_cloner.rs +++ b/magicblock-chainlink/src/chainlink/fetch_cloner.rs @@ -13,9 +13,11 @@ use dlp::{ use log::*; use magicblock_core::traits::AccountsBank; use magicblock_metrics::metrics::{self, AccountFetchOrigin}; -use solana_account::{AccountSharedData, ReadableAccount}; +use solana_account::{Account, AccountSharedData, ReadableAccount}; +use solana_program::{program_option::COption, program_pack::Pack}; use solana_pubkey::Pubkey; -use solana_sdk::system_program; +use solana_sdk::{pubkey, rent::Rent, system_program}; +use spl_token::state::{Account as SplAccount, AccountState}; use tokio::{ sync::{mpsc, oneshot}, task, @@ -631,14 +633,15 @@ where trace!("Fetched {accs:?}"); - let (not_found, plain, owned_by_deleg, programs) = + let (not_found, plain, owned_by_deleg, programs, atas) = accs.into_iter().zip(pubkeys).fold( - (vec![], vec![], vec![], vec![]), + (vec![], vec![], vec![], vec![], vec![]), |( mut not_found, mut plain, mut owned_by_deleg, mut programs, + mut atas, ), (acc, &pubkey)| { use RemoteAccount::*; @@ -665,8 +668,7 @@ where // to fail if !account_shared_data .owner() - .eq(&solana_sdk::native_loader::id( - )) + .eq(&solana_sdk::native_loader::id()) { programs.push(( pubkey, @@ -678,6 +680,13 @@ where "Not cloning native loader program account: {pubkey} (should have been blacklisted)", ); } + } else if let Some(ata) = is_ata(&pubkey, &account_shared_data) { + atas.push(( + pubkey, + account_shared_data, + ata, + slot, + )); } else { plain.push(AccountCloneRequest { pubkey, @@ -692,7 +701,7 @@ where }; } } - (not_found, plain, owned_by_deleg, programs) + (not_found, plain, owned_by_deleg, programs, atas) }, ); @@ -713,8 +722,12 @@ where .iter() .map(|(p, _, _)| p.to_string()) .collect::>(); + let atas = atas + .iter() + .map(|(a, _, _, _)| a.to_string()) + .collect::>(); trace!( - "Fetched accounts: \nnot_found: {not_found:?} \nplain: {plain:?} \nowned_by_deleg: {owned_by_deleg:?}\nprograms: {programs:?}", + "Fetched accounts: \nnot_found: {not_found:?} \nplain: {plain:?} \nowned_by_deleg: {owned_by_deleg:?}\nprograms: {programs:?} \natas: {atas:?}", ); } @@ -775,7 +788,7 @@ where let mut missing_delegation_record = vec![]; // We remove all new subs for accounts that were not found or already in the bank - let (accounts_to_clone, record_subs) = { + let (mut accounts_to_clone, record_subs) = { let joined = fetch_with_delegation_record_join_set.join_all().await; let (errors, accounts_fully_resolved) = joined.into_iter().fold( (vec![], vec![]), @@ -838,7 +851,7 @@ where // NOTE: failing here is fine when resolving all accounts for a transaction // since if something is off we better not run it anyways // However we may consider a different behavior when user is getting - // mutliple accounts. + // multiple accounts. let delegation_record = match Self::parse_delegation_record( delegation_record_data.data(), delegation_record_pubkey, @@ -1067,14 +1080,101 @@ where )); } - // Cancel new subs for accounts we don't clone + // We will compute subscription cancellations after ATA handling, once accounts_to_clone is finalized + + // Handle ATAs: for each detected ATA, we derive the eATA PDA, subscribe to both, + // and, if the ATA is delegated to us and the eATA exists, we clone the eATA data + // into the ATA in the bank. + if !atas.is_empty() { + let mut ata_join_set = JoinSet::new(); + + // Subscribe first so subsequent fetches are kept up-to-date + for (ata_pubkey, _, ata_info, slot_for_ata) in &atas { + let _ = self.subscribe_to_account(ata_pubkey).await; + if let Some((eata, _)) = try_derive_eata_address_and_bump( + &ata_info.owner, + &ata_info.mint, + ) { + let _ = self.subscribe_to_account(&eata).await; + + let effective_slot = + if let Some(min_slot) = min_context_slot { + min_slot.max(*slot_for_ata) + } else { + *slot_for_ata + }; + ata_join_set.spawn(self.task_to_fetch_with_companion( + *ata_pubkey, + eata, + effective_slot, + fetch_origin, + )); + } + } + + let ata_results = ata_join_set.join_all().await; + for res in ata_results.into_iter() { + match res { + Ok(Ok(AccountWithCompanion { + pubkey: ata_pubkey, + account: ata_account, + companion_pubkey: eata_pubkey, + companion_account: maybe_eata_account, + })) => { + // Convert to AccountSharedData using the bank snapshot + let mut account_to_clone = + ata_account.account_shared_data_cloned(); + let mut commit_frequency_ms = None; + if let Some(eata_acc) = maybe_eata_account { + let eata_shared = + eata_acc.account_shared_data_cloned(); + if let Some(deleg) = self + .fetch_and_parse_delegation_record( + eata_pubkey, + self.remote_account_provider.chain_slot(), + fetch_origin, + ) + .await + { + let is_delegated_to_us = deleg + .authority + .eq(&self.validator_pubkey) + || deleg.authority.eq(&Pubkey::default()); + if is_delegated_to_us { + if let Some(projected_ata) = + eata_shared.maybe_into_ata(deleg) + { + account_to_clone = projected_ata; + commit_frequency_ms = + Some(deleg.commit_frequency_ms); + } + } + } + } + + accounts_to_clone.push(AccountCloneRequest { + pubkey: ata_pubkey, + account: account_to_clone, + commit_frequency_ms, + }); + } + Ok(Err(err)) => { + warn!("Failed to resolve ATA/eATA companion: {err}"); + } + Err(join_err) => { + warn!("Failed to join ATA/eATA fetch task: {join_err}"); + } + } + } + } + + // Compute sub cancellations now since we may potentially fail during a cloning step let acc_subs = pubkeys.iter().filter(|pubkey| { !accounts_to_clone .iter() .any(|request| request.pubkey.eq(pubkey)) && !loaded_programs.iter().any(|p| p.program_id.eq(pubkey)) }); - // Cancel subs for delegated accounts (accounts we clone but don't need to watch) let delegated_acc_subs: HashSet = accounts_to_clone .iter() @@ -1087,7 +1187,6 @@ where }) .collect(); - // Handle sub cancelation now since we may potentially fail during a cloning step cancel_subs( &self.remote_account_provider, CancelStrategy::Hybrid { @@ -3098,3 +3197,152 @@ mod tests { ); } } + +/// Information about an Associated Token Account (ATA) +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub(crate) struct AtaInfo { + pub mint: Pubkey, + pub owner: Pubkey, +} + +/// Returns Some(AtaInfo) if the given account is an Associated Token Account (ATA) +/// for the mint/owner contained in its SPL Token account data. +/// Supports both spl-token and spl-token-2022 program owners. +pub(crate) fn is_ata( + account_pubkey: &Pubkey, + account: &AccountSharedData, +) -> Option { + // The account must be owned by the SPL Token program (legacy) or Token-2022 + let token_program_owner = account.owner(); + let is_spl_token = *token_program_owner == spl_token::id(); + let is_token_2022 = *token_program_owner == spl_token_2022::id(); + if !(is_spl_token || is_token_2022) { + return None; + } + + // Parse the token account data to extract mint and token owner + // Layout (at least the first 64 bytes): + // 0..32 -> mint Pubkey + // 32..64 -> owner Pubkey (the wallet the ATA belongs to) + let data = account.data(); + if data.len() < 64 { + return None; + } + + let mint = Pubkey::new_from_array(match data[0..32].try_into() { + Ok(a) => a, + Err(_) => return None, + }); + let wallet_owner = Pubkey::new_from_array(match data[32..64].try_into() { + Ok(a) => a, + Err(_) => return None, + }); + + // Associated token program id (constant) + // ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL + const ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey = + pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"); + + // Seeds per SPL ATA derivation: [wallet_owner, token_program_id, mint] + let (derived, _bump) = Pubkey::find_program_address( + &[ + wallet_owner.as_ref(), + token_program_owner.as_ref(), + mint.as_ref(), + ], + &ASSOCIATED_TOKEN_PROGRAM_ID, + ); + + if derived == *account_pubkey { + Some(AtaInfo { + mint, + owner: wallet_owner, + }) + } else { + None + } +} + +/// Derive the Enhanced ATA (eATA) PDA for a given ATA owner and mint. +/// Seeds: [owner, mint, b"5iC4wKZizyxrKh271Xzx3W4Vn2xUyYvSGHeoB2mdw5HA"], program: dlp::id() +const EATA_PROGRAM_ID: Pubkey = + pubkey!("5iC4wKZizyxrKh271Xzx3W4Vn2xUyYvSGHeoB2mdw5HA"); + +pub(crate) fn try_derive_eata_address_and_bump( + owner: &Pubkey, + mint: &Pubkey, +) -> Option<(Pubkey, u8)> { + Pubkey::try_find_program_address( + &[owner.as_ref(), mint.as_ref()], + &EATA_PROGRAM_ID, + ) +} + +/// Utility trait to attempt conversion of an eata into an ata +pub(crate) trait MaybeIntoAta { + fn maybe_into_ata(&self, record: DelegationRecord) -> Option; +} + +#[repr(C)] +pub struct EphemeralAta { + /// The owner (wallet) this ATA belongs to + pub owner: Pubkey, + /// The mint associated with this account + pub mint: Pubkey, + /// The amount of tokens this account holds. + pub amount: u64, +} + +impl Into for EphemeralAta { + fn into(self) -> AccountSharedData { + let token_account = SplAccount { + mint: self.mint, + owner: self.owner, + amount: self.amount, + delegate: COption::None, + state: AccountState::Initialized, + is_native: COption::None, + delegated_amount: 0, + close_authority: COption::None, + }; + + let mut data = vec![0u8; SplAccount::LEN]; + SplAccount::pack(token_account, &mut data) + .expect("pack spl token account"); + let lamports = Rent::default().minimum_balance(data.len()); + + let account = Account { + owner: spl_token::id(), + data, + lamports, + executable: false, + ..Default::default() + }; + + AccountSharedData::from(account) + } +} + +impl MaybeIntoAta for AccountSharedData { + fn maybe_into_ata( + &self, + record: DelegationRecord, + ) -> Option { + if !record.owner.ne(&EATA_PROGRAM_ID) { + return None; + } + let data = self.data(); + if data.len() < 40 { + return None; + } + let owner = Pubkey::new_from_array(data[0..32].try_into().ok()?); + let mint = Pubkey::new_from_array(data[32..64].try_into().ok()?); + let amount = u64::from_le_bytes(data[64..72].try_into().ok()?); + let eata = EphemeralAta { + owner, + mint, + amount, + }; + Some(eata.into()) + } +} diff --git a/magicblock-chainlink/src/testing/eatas.rs b/magicblock-chainlink/src/testing/eatas.rs new file mode 100644 index 000000000..28501a108 --- /dev/null +++ b/magicblock-chainlink/src/testing/eatas.rs @@ -0,0 +1,91 @@ +use solana_account::Account; +use solana_program::{program_option::COption, program_pack::Pack}; +use solana_pubkey::{pubkey, Pubkey}; +use solana_sdk::rent::Rent; +use spl_token::state::Account as SplAccount; +use spl_token::state::AccountState; + +const SPL_TOKEN_PROGRAM_ID: Pubkey = + pubkey!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"); + +// Associated Token Program id +const ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey = + pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"); + +// eATA PDA derivation seed copied from fetch_cloner.rs +const EATA_PROGRAM_ID: Pubkey = + pubkey!("5iC4wKZizyxrKh271Xzx3W4Vn2xUyYvSGHeoB2mdw5HA"); + +pub fn derive_ata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { + let (addr, _bump) = Pubkey::find_program_address( + &[owner.as_ref(), SPL_TOKEN_PROGRAM_ID.as_ref(), mint.as_ref()], + &ASSOCIATED_TOKEN_PROGRAM_ID, + ); + addr +} + +pub fn derive_eata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { + let (addr, _bump) = Pubkey::find_program_address( + &[owner.as_ref(), mint.as_ref()], + &EATA_PROGRAM_ID, + ); + addr +} + +pub fn create_ata_account(owner: &Pubkey, mint: &Pubkey) -> Account { + let token_account = SplAccount { + mint: *mint, + owner: *owner, + amount: 0, + delegate: COption::None, + state: AccountState::Initialized, + is_native: COption::None, + delegated_amount: 0, + close_authority: COption::None, + }; + + let mut data = vec![0u8; SplAccount::LEN]; + SplAccount::pack(token_account, &mut data).expect("pack spl token account"); + let lamports = Rent::default().minimum_balance(data.len()); + + Account { + owner: SPL_TOKEN_PROGRAM_ID, + data, + lamports, + executable: false, + ..Default::default() + } +} + +pub fn create_eata_account( + owner: &Pubkey, + mint: &Pubkey, + amount: u64, + delegate: bool, +) -> Account { + let mut data = Vec::with_capacity(64 + 8); + data.extend_from_slice(owner.as_ref()); + data.extend_from_slice(mint.as_ref()); + data.extend_from_slice(&amount.to_le_bytes()); + let lamports = Rent::default().minimum_balance(data.len()); + + let owner = if delegate { dlp::ID } else { EATA_PROGRAM_ID }; + + Account { + owner, + data, + lamports, + ..Default::default() + } +} + +/// Internal representation of a token account data. +#[repr(C)] +pub struct EphemeralAta { + /// The owner of the eata + pub owner: Pubkey, + /// The mint associated with this account + pub mint: Pubkey, + /// The amount of tokens this account holds. + pub amount: u64, +} diff --git a/magicblock-chainlink/src/testing/mod.rs b/magicblock-chainlink/src/testing/mod.rs index c924633c4..0ef13ae84 100644 --- a/magicblock-chainlink/src/testing/mod.rs +++ b/magicblock-chainlink/src/testing/mod.rs @@ -7,6 +7,8 @@ pub mod cloner_stub; #[cfg(any(test, feature = "dev-context"))] pub mod deleg; #[cfg(any(test, feature = "dev-context"))] +pub mod eatas; +#[cfg(any(test, feature = "dev-context"))] pub mod rpc_client_mock; #[cfg(any(test, feature = "dev-context"))] pub mod utils; diff --git a/test-integration/Cargo.lock b/test-integration/Cargo.lock index ab8729f0c..dd3ff494b 100644 --- a/test-integration/Cargo.lock +++ b/test-integration/Cargo.lock @@ -3605,7 +3605,7 @@ dependencies = [ "solana-rpc", "solana-rpc-client", "solana-sdk", - "solana-svm 2.2.1 (git+https://github.com/magicblock-labs/magicblock-svm.git?rev=e480fa2)", + "solana-svm 2.2.1 (git+https://github.com/magicblock-labs/magicblock-svm.git?rev=86c2cb0f)", "solana-transaction", "tempfile", "thiserror 1.0.69", @@ -3634,6 +3634,7 @@ dependencies = [ "solana-account-decoder-client-types", "solana-loader-v3-interface 3.0.0", "solana-loader-v4-interface", + "solana-program", "solana-pubkey", "solana-pubsub-client", "solana-rpc-client", @@ -3643,6 +3644,8 @@ dependencies = [ "solana-signer", "solana-system-interface", "solana-transaction-error", + "spl-token", + "spl-token-2022 6.0.0", "thiserror 1.0.69", "tokio", "tokio-stream", @@ -3794,7 +3797,7 @@ dependencies = [ "solana-metrics", "solana-sdk", "solana-storage-proto 0.3.1", - "solana-svm 2.2.1 (git+https://github.com/magicblock-labs/magicblock-svm.git?rev=e480fa2)", + "solana-svm 2.2.1 (git+https://github.com/magicblock-labs/magicblock-svm.git?rev=86c2cb0f)", "solana-timings", "solana-transaction-status", "thiserror 1.0.69", @@ -3861,7 +3864,7 @@ dependencies = [ "solana-pubkey", "solana-rent-collector", "solana-sdk-ids", - "solana-svm 2.2.1 (git+https://github.com/magicblock-labs/magicblock-svm.git?rev=e480fa2)", + "solana-svm 2.2.1 (git+https://github.com/magicblock-labs/magicblock-svm.git?rev=86c2cb0f)", "solana-svm-transaction", "solana-system-program", "solana-transaction", @@ -3938,7 +3941,7 @@ dependencies = [ "solana-program", "solana-pubsub-client", "solana-sdk", - "solana-svm 2.2.1 (git+https://github.com/magicblock-labs/magicblock-svm.git?rev=e480fa2)", + "solana-svm 2.2.1 (git+https://github.com/magicblock-labs/magicblock-svm.git?rev=86c2cb0f)", "solana-timings", "thiserror 1.0.69", "tokio", @@ -9125,7 +9128,7 @@ dependencies = [ [[package]] name = "solana-svm" version = "2.2.1" -source = "git+https://github.com/magicblock-labs/magicblock-svm.git?rev=e480fa2#e480fa202f0680476b51b2d41210667ffc241bf4" +source = "git+https://github.com/magicblock-labs/magicblock-svm.git?rev=86c2cb0f#86c2cb0f2d92c6e92757e951a8f27757fef3aaea" dependencies = [ "ahash 0.8.12", "log", @@ -10455,6 +10458,7 @@ dependencies = [ "solana-sdk", "solana-sdk-ids", "solana-system-interface", + "spl-token", "tokio", ] diff --git a/test-integration/Cargo.toml b/test-integration/Cargo.toml index d177a4c06..5b1502d5b 100644 --- a/test-integration/Cargo.toml +++ b/test-integration/Cargo.toml @@ -89,6 +89,7 @@ solana-sdk-ids = { version = "2.2" } solana-system-interface = "1.0" solana-transaction-status = "2.2" spl-memo-interface = "1.0" +spl-token = "=7.0" teepee = "0.0.1" tempfile = "3.10.1" test-chainlink = { path = "./test-chainlink" } diff --git a/test-integration/test-chainlink/Cargo.toml b/test-integration/test-chainlink/Cargo.toml index f557d9108..21f194228 100644 --- a/test-integration/test-chainlink/Cargo.toml +++ b/test-integration/test-chainlink/Cargo.toml @@ -21,5 +21,6 @@ solana-rpc-client-api = { workspace = true } solana-sdk = { workspace = true } solana-sdk-ids = { workspace = true } solana-system-interface = { workspace = true } +spl-token = { workspace = true } integration-test-tools = { workspace = true } tokio = { workspace = true, features = ["full"] } diff --git a/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs b/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs new file mode 100644 index 000000000..f2c5eecd5 --- /dev/null +++ b/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs @@ -0,0 +1,161 @@ +use log::debug; +use magicblock_chainlink::{ + testing::{deleg::add_delegation_record_for, init_logger}, + AccountFetchOrigin, +}; +use solana_account::{ReadableAccount}; +use solana_pubkey::{pubkey, Pubkey}; +use solana_sdk::signature::{Keypair, Signer}; +use spl_token::solana_program::program_pack::Pack; +use spl_token::state::AccountState; +use magicblock_chainlink::testing::eatas::{create_ata_account, create_eata_account, derive_ata, derive_eata}; +use test_chainlink::test_context::TestContext; + + +#[tokio::test] +async fn ixtest_ata_eata_replace_when_delegated_to_us() { + init_logger(); + + // Use mocked TestContext (no external RPC) + let slot = 100u64; + let ctx = TestContext::init(slot).await; + + // Wallet owner and mint + let wallet_owner = Keypair::new().pubkey(); + let mint = pubkey!("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"); + let amount = 200; + + // Derive ATA and eATA addresses + let ata_pubkey = derive_ata(&wallet_owner, &mint); + let eata_pubkey = derive_eata(&wallet_owner, &mint); + + // Create mock ATA and eATA accounts + let ata = create_ata_account(&wallet_owner, &mint); + let eata = create_eata_account(&wallet_owner, &mint, amount, true); + + ctx.rpc_client.add_account( + ata_pubkey, + ata.clone(), + ); + ctx.rpc_client.add_account( + eata_pubkey, + eata.clone(), + ); + + // Add delegation record for ATA delegated to our validator + let validator = ctx.validator_pubkey; + add_delegation_record_for(&ctx.rpc_client, eata_pubkey, validator, wallet_owner); + + // Ensure account (this triggers fetch_cloner logic including ATA/eATA handling) + let pubkeys = [ata_pubkey]; + let res = ctx + .chainlink + .ensure_accounts(&pubkeys, None, AccountFetchOrigin::GetAccount, None) + .await + .expect("ensure_accounts ok"); + debug!("res: {:?}", res); + + // Cloned account should match eATA data (replacement) + let cloned = ctx + .cloner + .get_account(&ata_pubkey) + .expect("ATA should be cloned into bank"); + let spl_token_account = spl_token::state::Account::unpack_from_slice(cloned.data()).unwrap(); + assert_eq!(spl_token_account.mint, mint); + assert_eq!(spl_token_account.amount, amount); + assert_eq!(spl_token_account.owner, wallet_owner); + assert!(spl_token_account.close_authority.is_none()); + assert_eq!(spl_token_account.state, AccountState::Initialized); + assert_eq!(spl_token_account.delegated_amount, 0); + assert!(spl_token_account.is_native.is_none()); + assert!(cloned.delegated()) +} + +#[tokio::test] +async fn ixtest_ata_eata_no_replace_when_not_delegated() { + init_logger(); + + let slot = 101u64; + let ctx = TestContext::init(slot).await; + + let wallet_owner = Keypair::new().pubkey(); + let mint = pubkey!("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"); + + let ata_pubkey = derive_ata(&wallet_owner, &mint); + let ata = create_ata_account(&wallet_owner, &mint); + + ctx.rpc_client.add_account( + ata_pubkey, + ata.clone(), + ); + + // Note: No delegation record added here + let pubkeys = [ata_pubkey]; + let _res = ctx + .chainlink + .ensure_accounts(&pubkeys, None, AccountFetchOrigin::GetAccount, None) + .await + .expect("ensure_accounts ok"); + + let cloned = ctx + .cloner + .get_account(&ata_pubkey) + .expect("ATA should be cloned"); + + // Should keep original ATA data since not delegated + assert_eq!(cloned.data(), ata.data()); + assert!(!cloned.delegated()) +} + +#[tokio::test] +async fn ixtest_ata_eata_no_replace_when_not_delegated_to_us() { + init_logger(); + + // Use mocked TestContext (no external RPC) + let slot = 100u64; + let ctx = TestContext::init(slot).await; + + // Wallet owner and mint + let wallet_owner = Keypair::new().pubkey(); + let mint = Pubkey::new_unique(); + let amount = 200; + + // Derive ATA and eATA addresses + let ata_pubkey = derive_ata(&wallet_owner, &mint); + let eata_pubkey = derive_eata(&wallet_owner, &mint); + + // Create mock ATA and eATA accounts + let ata = create_ata_account(&wallet_owner, &mint); + let eata = create_eata_account(&wallet_owner, &mint, amount, true); + + ctx.rpc_client.add_account( + ata_pubkey, + ata.clone(), + ); + ctx.rpc_client.add_account( + eata_pubkey, + eata.clone(), + ); + + // Add delegation record to a random validator + add_delegation_record_for(&ctx.rpc_client, eata_pubkey, Keypair::new().pubkey(), wallet_owner); + + // Ensure account (this triggers fetch_cloner logic including ATA/eATA handling) + let pubkeys = [ata_pubkey]; + let res = ctx + .chainlink + .ensure_accounts(&pubkeys, None, AccountFetchOrigin::GetAccount, None) + .await + .expect("ensure_accounts ok"); + debug!("res: {:?}", res); + + // Cloned account should still be the ata, since the eata is not delegated to our validator + let cloned = ctx + .cloner + .get_account(&ata_pubkey) + .expect("ATA should be cloned into bank"); + + // Should keep original ATA data since not delegated to us + assert_eq!(cloned.data(), ata.data()); + assert!(!cloned.delegated()) +} From 595df485744d7ce39a391b106c6229dce0f5570e Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Sat, 6 Dec 2025 15:12:02 +0400 Subject: [PATCH 02/15] fix: set delegated on ata manifacturing --- magicblock-chainlink/src/chainlink/fetch_cloner.rs | 1 + magicblock-chainlink/src/testing/eatas.rs | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/magicblock-chainlink/src/chainlink/fetch_cloner.rs b/magicblock-chainlink/src/chainlink/fetch_cloner.rs index 66a6e9a7e..23b303b38 100644 --- a/magicblock-chainlink/src/chainlink/fetch_cloner.rs +++ b/magicblock-chainlink/src/chainlink/fetch_cloner.rs @@ -1145,6 +1145,7 @@ where eata_shared.maybe_into_ata(deleg) { account_to_clone = projected_ata; + account_to_clone.set_delegated(true); commit_frequency_ms = Some(deleg.commit_frequency_ms); } diff --git a/magicblock-chainlink/src/testing/eatas.rs b/magicblock-chainlink/src/testing/eatas.rs index 28501a108..cc9f8409d 100644 --- a/magicblock-chainlink/src/testing/eatas.rs +++ b/magicblock-chainlink/src/testing/eatas.rs @@ -2,8 +2,7 @@ use solana_account::Account; use solana_program::{program_option::COption, program_pack::Pack}; use solana_pubkey::{pubkey, Pubkey}; use solana_sdk::rent::Rent; -use spl_token::state::Account as SplAccount; -use spl_token::state::AccountState; +use spl_token::state::{Account as SplAccount, AccountState}; const SPL_TOKEN_PROGRAM_ID: Pubkey = pubkey!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"); From fe55cac5ee2e0449a12be27abca9079f53d50beb Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Sun, 7 Dec 2025 15:10:21 +0400 Subject: [PATCH 03/15] feat: map on commit/undelegation --- .github/packages/npm-package/package.json | 6 +- .../packages/npm-package/package.json.tmpl | 4 +- .../process_schedule_commit.rs | 64 +++++- .../process_schedule_commit_tests.rs | 206 ++++++++++++++++++ 4 files changed, 274 insertions(+), 6 deletions(-) diff --git a/.github/packages/npm-package/package.json b/.github/packages/npm-package/package.json index f4913640d..9ecbbedae 100644 --- a/.github/packages/npm-package/package.json +++ b/.github/packages/npm-package/package.json @@ -2,13 +2,13 @@ "name": "@magicblock-labs/ephemeral-validator", "version": "0.3.1", "description": "MagicBlock Ephemeral Validator", - "homepage": "https://github.com/magicblock-labs/ephemeral-validator#readme", + "homepage": "https://github.com/magicblock-labs/magicblock-validator#readme", "bugs": { - "url": "https://github.com/magicblock-labs/ephemeral-validator/issues" + "url": "https://github.com/magicblock-labs/magicblock-validator/issues" }, "repository": { "type": "git", - "url": "https://github.com/magicblock-labs/ephemeral-validator.git" + "url": "https://github.com/magicblock-labs/magicblock-validator.git" }, "license": "Business Source License 1.1", "bin": { diff --git a/.github/packages/npm-package/package.json.tmpl b/.github/packages/npm-package/package.json.tmpl index bce48a465..96e7615a7 100644 --- a/.github/packages/npm-package/package.json.tmpl +++ b/.github/packages/npm-package/package.json.tmpl @@ -4,10 +4,10 @@ "version": "0.3.1", "repository": { "type": "git", - "url": "git+https://github.com/magicblock-labs/ephemeral-validator.git" + "url": "git+https://github.com/magicblock-labs/magicblock-validator.git" }, "bugs": { - "url": "https://github.com/magicblock-labs/ephemeral-validator/issues" + "url": "https://github.com/magicblock-labs/magicblock-validator/issues" }, "license": "Business Source License 1.1", "private": false, diff --git a/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs b/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs index 18ea8cc7c..ffba59f35 100644 --- a/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs +++ b/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs @@ -37,6 +37,32 @@ pub(crate) fn process_schedule_commit( invoke_context: &mut InvokeContext, opts: ProcessScheduleCommitOptions, ) -> Result<(), InstructionError> { + // SPL Token and ATA/eATA program ids + // Tokenkeg... (SPL Token), ATokenG... (Associated Token Program), 5iC4wK... (eATA program) + const SPL_TOKEN_PROGRAM_ID: Pubkey = + solana_sdk::pubkey!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"); + const ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey = + solana_sdk::pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"); + const EATA_PROGRAM_ID: Pubkey = + solana_sdk::pubkey!("5iC4wKZizyxrKh271Xzx3W4Vn2xUyYvSGHeoB2mdw5HA"); + + // Derive the standard ATA address for given wallet owner and mint + fn derive_ata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { + Pubkey::find_program_address( + &[owner.as_ref(), SPL_TOKEN_PROGRAM_ID.as_ref(), mint.as_ref()], + &ASSOCIATED_TOKEN_PROGRAM_ID, + ) + .0 + } + + // Derive the eATA PDA for given wallet owner and mint + fn derive_eata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { + Pubkey::find_program_address( + &[owner.as_ref(), mint.as_ref()], + &EATA_PROGRAM_ID, + ) + .0 + } const PAYER_IDX: u16 = 0; const MAGIC_CONTEXT_IDX: u16 = PAYER_IDX + 1; @@ -185,9 +211,45 @@ pub(crate) fn process_schedule_commit( let mut account: Account = acc.borrow().to_owned().into(); account.owner = parent_program_id.cloned().unwrap_or(account.owner); + // If this is a delegated SPL Token ATA that was cloned from an eATA, + // we should commit/undelegate the corresponding eATA instead. + let mut target_pubkey = *acc_pubkey; + let acc_borrow = acc.borrow(); + if acc_borrow.delegated() + && acc_borrow.owner() == &SPL_TOKEN_PROGRAM_ID + { + let data = acc_borrow.data(); + if data.len() >= 64 { + // spl-token Account layout: [0..32]=mint, [32..64]=owner + let mint = + Pubkey::new_from_array(match data[0..32].try_into() { + Ok(a) => a, + Err(_) => [0u8; 32], + }); + let wallet_owner = + Pubkey::new_from_array(match data[32..64].try_into() { + Ok(a) => a, + Err(_) => [0u8; 32], + }); + + // Verify that the current pubkey matches the derived ATA + let ata_addr = derive_ata(&wallet_owner, &mint); + if ata_addr == *acc_pubkey { + // Remap to eATA PDA + target_pubkey = derive_eata(&wallet_owner, &mint); + ic_msg!( + invoke_context, + "ScheduleCommit: remapping ATA {} -> eATA {} for commit/undelegate", + acc_pubkey, + target_pubkey + ); + } + } + } + #[allow(clippy::unnecessary_literal_unwrap)] committed_accounts.push(CommittedAccount { - pubkey: *acc_pubkey, + pubkey: target_pubkey, account, }); } diff --git a/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs b/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs index 63ec3faa3..3dd990b0f 100644 --- a/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs +++ b/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs @@ -260,6 +260,47 @@ mod tests { use super::*; use crate::utils::instruction_utils::InstructionUtils; + // ---------- Helpers for ATA/eATA remapping tests ---------- + // SPL Token and ATA/eATA program ids + const SPL_TOKEN_PROGRAM_ID: Pubkey = + solana_sdk::pubkey!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"); + const ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey = + solana_sdk::pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"); + const EATA_PROGRAM_ID: Pubkey = + solana_sdk::pubkey!("5iC4wKZizyxrKh271Xzx3W4Vn2xUyYvSGHeoB2mdw5HA"); + + fn derive_ata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { + Pubkey::find_program_address( + &[owner.as_ref(), SPL_TOKEN_PROGRAM_ID.as_ref(), mint.as_ref()], + &ASSOCIATED_TOKEN_PROGRAM_ID, + ) + .0 + } + + fn derive_eata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { + Pubkey::find_program_address( + &[owner.as_ref(), mint.as_ref()], + &EATA_PROGRAM_ID, + ) + .0 + } + + fn make_delegated_spl_ata_account( + owner: &Pubkey, + mint: &Pubkey, + ) -> AccountSharedData { + // Minimal SPL token account data: first 32 bytes mint, next 32 owner + let mut data = vec![0u8; 72]; + data[0..32].copy_from_slice(mint.as_ref()); + data[32..64].copy_from_slice(owner.as_ref()); + + let mut acc = + AccountSharedData::new(0, data.len(), &SPL_TOKEN_PROGRAM_ID); + acc.set_data_from_slice(&data); + acc.set_delegated(true); + acc + } + #[test] fn test_schedule_commit_single_account_success() { init_logger!(); @@ -431,6 +472,171 @@ mod tests { assert_eq!(*committed_account.owner(), DELEGATION_PROGRAM_ID); } + #[test] + fn test_schedule_commit_remaps_delegated_ata_to_eata() { + init_logger!(); + + let payer = + Keypair::from_seed(b"schedule_commit_remap_ata_to_eata").unwrap(); + let wallet_owner = Pubkey::new_unique(); + let mint = Pubkey::new_unique(); + let ata_pubkey = derive_ata(&wallet_owner, &mint); + let eata_pubkey = derive_eata(&wallet_owner, &mint); + + // 1) Prepare transaction with our ATA as the only committee + let (mut account_data, mut transaction_accounts) = + prepare_transaction_with_single_committee( + &payer, + Pubkey::new_unique(), + ata_pubkey, + ); + + // Replace the committee account with a delegated SPL-Token ATA layout + account_data.insert( + ata_pubkey, + make_delegated_spl_ata_account(&wallet_owner, &mint), + ); + + // Build ScheduleCommit instruction using the ATA pubkey + let ix = InstructionUtils::schedule_commit_instruction( + &payer.pubkey(), + vec![ata_pubkey], + ); + extend_transaction_accounts_from_ix( + &ix, + &mut account_data, + &mut transaction_accounts, + ); + + // Execute scheduling + let processed_scheduled = process_instruction( + ix.data.as_slice(), + transaction_accounts.clone(), + ix.accounts.clone(), + Ok(()), + ); + + // Extract magic context and then accept scheduled commits + let magic_context_acc = assert_non_accepted_actions( + &processed_scheduled, + &payer.pubkey(), + 1, + ); + + let ix_accept = + InstructionUtils::accept_scheduled_commits_instruction(); + let (mut account_data2, mut transaction_accounts2) = + prepare_transaction_with_single_committee( + &payer, + Pubkey::new_unique(), + ata_pubkey, + ); + extend_transaction_accounts_from_ix_adding_magic_context( + &ix_accept, + magic_context_acc, + &mut account_data2, + &mut transaction_accounts2, + ); + let processed_accepted = process_instruction( + ix_accept.data.as_slice(), + transaction_accounts2, + ix_accept.accounts, + Ok(()), + ); + + let scheduled = + assert_accepted_actions(&processed_accepted, &payer.pubkey(), 1); + // Verify the committed pubkey remapped to eATA + assert_eq!( + scheduled[0].base_intent.get_committed_pubkeys().unwrap(), + vec![eata_pubkey] + ); + } + + #[test] + fn test_schedule_commit_and_undelegate_remaps_delegated_ata_to_eata() { + init_logger!(); + + let payer = + Keypair::from_seed(b"schedule_commit_undelegate_remap_ata_eata") + .unwrap(); + let wallet_owner = Pubkey::new_unique(); + let mint = Pubkey::new_unique(); + let ata_pubkey = derive_ata(&wallet_owner, &mint); + let eata_pubkey = derive_eata(&wallet_owner, &mint); + + // 1) Prepare transaction with our ATA as the only committee + let (mut account_data, mut transaction_accounts) = + prepare_transaction_with_single_committee( + &payer, + Pubkey::new_unique(), + ata_pubkey, + ); + + // Replace the committee account with a delegated SPL-Token ATA layout + account_data.insert( + ata_pubkey, + make_delegated_spl_ata_account(&wallet_owner, &mint), + ); + + // Build ScheduleCommitAndUndelegate instruction using the ATA pubkey (writable) + let ix = InstructionUtils::schedule_commit_and_undelegate_instruction( + &payer.pubkey(), + vec![ata_pubkey], + ); + extend_transaction_accounts_from_ix( + &ix, + &mut account_data, + &mut transaction_accounts, + ); + + // Execute scheduling + let processed_scheduled = process_instruction( + ix.data.as_slice(), + transaction_accounts.clone(), + ix.accounts.clone(), + Ok(()), + ); + + // Extract magic context and then accept scheduled commits + let magic_context_acc = assert_non_accepted_actions( + &processed_scheduled, + &payer.pubkey(), + 1, + ); + + let ix_accept = + InstructionUtils::accept_scheduled_commits_instruction(); + let (mut account_data2, mut transaction_accounts2) = + prepare_transaction_with_single_committee( + &payer, + Pubkey::new_unique(), + ata_pubkey, + ); + extend_transaction_accounts_from_ix_adding_magic_context( + &ix_accept, + magic_context_acc, + &mut account_data2, + &mut transaction_accounts2, + ); + let processed_accepted = process_instruction( + ix_accept.data.as_slice(), + transaction_accounts2, + ix_accept.accounts, + Ok(()), + ); + + let scheduled = + assert_accepted_actions(&processed_accepted, &payer.pubkey(), 1); + // Verify the committed pubkey remapped to eATA + assert_eq!( + scheduled[0].base_intent.get_committed_pubkeys().unwrap(), + vec![eata_pubkey] + ); + // And the intent contains undelegation + assert!(scheduled[0].base_intent.is_undelegate()); + } + #[test] fn test_schedule_commit_three_accounts_success() { init_logger!(); From ea3ab5595b4915366ebb89303f5e2df78da55f92 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Mon, 8 Dec 2025 15:38:13 +0400 Subject: [PATCH 04/15] chore: refactor --- .../src/chainlink/fetch_cloner.rs | 13 ++--- magicblock-chainlink/src/testing/eatas.rs | 32 ++--------- magicblock-core/src/lib.rs | 1 + magicblock-core/src/token_programs.rs | 55 +++++++++++++++++++ .../process_schedule_commit.rs | 30 ++-------- .../process_schedule_commit_tests.rs | 30 ++-------- 6 files changed, 74 insertions(+), 87 deletions(-) create mode 100644 magicblock-core/src/token_programs.rs diff --git a/magicblock-chainlink/src/chainlink/fetch_cloner.rs b/magicblock-chainlink/src/chainlink/fetch_cloner.rs index 155ed891d..e679d4e2c 100644 --- a/magicblock-chainlink/src/chainlink/fetch_cloner.rs +++ b/magicblock-chainlink/src/chainlink/fetch_cloner.rs @@ -3369,9 +3369,8 @@ pub(crate) fn is_ata( }); // Associated token program id (constant) - // ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL - const ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey = - pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"); + // Centralized in magicblock_core::token_programs + use magicblock_core::token_programs::ASSOCIATED_TOKEN_PROGRAM_ID; // Seeds per SPL ATA derivation: [wallet_owner, token_program_id, mint] let (derived, _bump) = Pubkey::find_program_address( @@ -3395,16 +3394,14 @@ pub(crate) fn is_ata( /// Derive the Enhanced ATA (eATA) PDA for a given ATA owner and mint. /// Seeds: [owner, mint, b"5iC4wKZizyxrKh271Xzx3W4Vn2xUyYvSGHeoB2mdw5HA"], program: dlp::id() -const EATA_PROGRAM_ID: Pubkey = - pubkey!("5iC4wKZizyxrKh271Xzx3W4Vn2xUyYvSGHeoB2mdw5HA"); +use magicblock_core::token_programs::EATA_PROGRAM_ID; pub(crate) fn try_derive_eata_address_and_bump( owner: &Pubkey, mint: &Pubkey, ) -> Option<(Pubkey, u8)> { - Pubkey::try_find_program_address( - &[owner.as_ref(), mint.as_ref()], - &EATA_PROGRAM_ID, + magicblock_core::token_programs::try_derive_eata_address_and_bump( + owner, mint, ) } diff --git a/magicblock-chainlink/src/testing/eatas.rs b/magicblock-chainlink/src/testing/eatas.rs index cc9f8409d..c6a01a3e9 100644 --- a/magicblock-chainlink/src/testing/eatas.rs +++ b/magicblock-chainlink/src/testing/eatas.rs @@ -1,36 +1,12 @@ +pub use magicblock_core::token_programs::{ + derive_ata, derive_eata, EATA_PROGRAM_ID, SPL_TOKEN_PROGRAM_ID, +}; use solana_account::Account; use solana_program::{program_option::COption, program_pack::Pack}; -use solana_pubkey::{pubkey, Pubkey}; +use solana_pubkey::Pubkey; use solana_sdk::rent::Rent; use spl_token::state::{Account as SplAccount, AccountState}; -const SPL_TOKEN_PROGRAM_ID: Pubkey = - pubkey!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"); - -// Associated Token Program id -const ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey = - pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"); - -// eATA PDA derivation seed copied from fetch_cloner.rs -const EATA_PROGRAM_ID: Pubkey = - pubkey!("5iC4wKZizyxrKh271Xzx3W4Vn2xUyYvSGHeoB2mdw5HA"); - -pub fn derive_ata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { - let (addr, _bump) = Pubkey::find_program_address( - &[owner.as_ref(), SPL_TOKEN_PROGRAM_ID.as_ref(), mint.as_ref()], - &ASSOCIATED_TOKEN_PROGRAM_ID, - ); - addr -} - -pub fn derive_eata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { - let (addr, _bump) = Pubkey::find_program_address( - &[owner.as_ref(), mint.as_ref()], - &EATA_PROGRAM_ID, - ); - addr -} - pub fn create_ata_account(owner: &Pubkey, mint: &Pubkey) -> Account { let token_account = SplAccount { mint: *mint, diff --git a/magicblock-core/src/lib.rs b/magicblock-core/src/lib.rs index 91de7bdeb..f9bfa285c 100644 --- a/magicblock-core/src/lib.rs +++ b/magicblock-core/src/lib.rs @@ -15,4 +15,5 @@ macro_rules! debug_panic { pub mod link; pub mod tls; +pub mod token_programs; pub mod traits; diff --git a/magicblock-core/src/token_programs.rs b/magicblock-core/src/token_programs.rs new file mode 100644 index 000000000..ec3ad1484 --- /dev/null +++ b/magicblock-core/src/token_programs.rs @@ -0,0 +1,55 @@ +use solana_pubkey::{pubkey, Pubkey}; + +// Shared program IDs and helper functions for SPL Token, Associated Token, and eATA programs. + +// SPL Token Program ID (Tokenkeg...) +pub const SPL_TOKEN_PROGRAM_ID: Pubkey = + pubkey!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"); + +// Associated Token Account Program ID (ATokenG...) +pub const ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey = + pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"); + +// Enhanced ATA (eATA) Program ID (5iC4wK...) +pub const EATA_PROGRAM_ID: Pubkey = + pubkey!("5iC4wKZizyxrKh271Xzx3W4Vn2xUyYvSGHeoB2mdw5HA"); + +// Derive the standard ATA address for a given wallet owner and mint. +pub fn derive_ata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { + Pubkey::find_program_address( + &[owner.as_ref(), SPL_TOKEN_PROGRAM_ID.as_ref(), mint.as_ref()], + &ASSOCIATED_TOKEN_PROGRAM_ID, + ) + .0 +} + +// Try to derive the ATA address returning both address and bump if derivation succeeds. +pub fn try_derive_ata_address_and_bump( + owner: &Pubkey, + mint: &Pubkey, +) -> Option<(Pubkey, u8)> { + Pubkey::try_find_program_address( + &[owner.as_ref(), SPL_TOKEN_PROGRAM_ID.as_ref(), mint.as_ref()], + &ASSOCIATED_TOKEN_PROGRAM_ID, + ) +} + +// Derive the eATA PDA for a given wallet owner and mint. +pub fn derive_eata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { + Pubkey::find_program_address( + &[owner.as_ref(), mint.as_ref()], + &EATA_PROGRAM_ID, + ) + .0 +} + +// Try to derive the eATA PDA returning both address and bump if derivation succeeds. +pub fn try_derive_eata_address_and_bump( + owner: &Pubkey, + mint: &Pubkey, +) -> Option<(Pubkey, u8)> { + Pubkey::try_find_program_address( + &[owner.as_ref(), mint.as_ref()], + &EATA_PROGRAM_ID, + ) +} diff --git a/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs b/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs index c25e8b840..afd3a72d6 100644 --- a/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs +++ b/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs @@ -1,5 +1,8 @@ use std::collections::HashSet; +use magicblock_core::token_programs::{ + derive_ata, derive_eata, SPL_TOKEN_PROGRAM_ID, +}; use solana_log_collector::ic_msg; use solana_program_runtime::invoke_context::InvokeContext; use solana_sdk::{ @@ -36,32 +39,7 @@ pub(crate) fn process_schedule_commit( invoke_context: &mut InvokeContext, opts: ProcessScheduleCommitOptions, ) -> Result<(), InstructionError> { - // SPL Token and ATA/eATA program ids - // Tokenkeg... (SPL Token), ATokenG... (Associated Token Program), 5iC4wK... (eATA program) - const SPL_TOKEN_PROGRAM_ID: Pubkey = - solana_sdk::pubkey!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"); - const ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey = - solana_sdk::pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"); - const EATA_PROGRAM_ID: Pubkey = - solana_sdk::pubkey!("5iC4wKZizyxrKh271Xzx3W4Vn2xUyYvSGHeoB2mdw5HA"); - - // Derive the standard ATA address for given wallet owner and mint - fn derive_ata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { - Pubkey::find_program_address( - &[owner.as_ref(), SPL_TOKEN_PROGRAM_ID.as_ref(), mint.as_ref()], - &ASSOCIATED_TOKEN_PROGRAM_ID, - ) - .0 - } - - // Derive the eATA PDA for given wallet owner and mint - fn derive_eata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { - Pubkey::find_program_address( - &[owner.as_ref(), mint.as_ref()], - &EATA_PROGRAM_ID, - ) - .0 - } + // Program IDs and derivation helpers are centralized in magicblock-core::token_programs const PAYER_IDX: u16 = 0; const MAGIC_CONTEXT_IDX: u16 = PAYER_IDX + 1; diff --git a/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs b/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs index 6d41df877..b1f01aabc 100644 --- a/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs +++ b/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs @@ -255,36 +255,16 @@ fn assert_first_commit( #[cfg(test)] mod tests { + // ---------- Helpers for ATA/eATA remapping tests ---------- + // Use shared SPL/ATA/eATA constants and helpers + use magicblock_core::token_programs::{ + derive_ata, derive_eata, SPL_TOKEN_PROGRAM_ID, + }; use test_kit::init_logger; use super::*; use crate::utils::instruction_utils::InstructionUtils; - // ---------- Helpers for ATA/eATA remapping tests ---------- - // SPL Token and ATA/eATA program ids - const SPL_TOKEN_PROGRAM_ID: Pubkey = - solana_sdk::pubkey!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"); - const ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey = - solana_sdk::pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"); - const EATA_PROGRAM_ID: Pubkey = - solana_sdk::pubkey!("5iC4wKZizyxrKh271Xzx3W4Vn2xUyYvSGHeoB2mdw5HA"); - - fn derive_ata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { - Pubkey::find_program_address( - &[owner.as_ref(), SPL_TOKEN_PROGRAM_ID.as_ref(), mint.as_ref()], - &ASSOCIATED_TOKEN_PROGRAM_ID, - ) - .0 - } - - fn derive_eata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { - Pubkey::find_program_address( - &[owner.as_ref(), mint.as_ref()], - &EATA_PROGRAM_ID, - ) - .0 - } - fn make_delegated_spl_ata_account( owner: &Pubkey, mint: &Pubkey, From 29f678b45b5880674a87a8c3f9fd1b0d54d48244 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Wed, 17 Dec 2025 12:03:33 +0100 Subject: [PATCH 05/15] chore: refactor --- Cargo.lock | 2 +- Cargo.toml | 4 + .../src/chainlink/fetch_cloner.rs | 12 +- test-integration/Cargo.lock | 166 ++++++++++++++++++ 4 files changed, 177 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9e1ae28a2..70bac1335 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2746,7 +2746,7 @@ dependencies = [ "solana-system-interface", "solana-transaction-error", "spl-token", - "spl-token-2022 6.0.0", + "spl-token-2022 7.0.0", "thiserror 1.0.69", "tokio", "tokio-stream", diff --git a/Cargo.toml b/Cargo.toml index 6390a171a..7803b91fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -187,6 +187,10 @@ toml = "0.8.13" tonic-build = "0.9.2" url = "2.5.0" +# SPL Token crates used across the workspace +spl-token = "7.0" +spl-token-2022 = "7.0" + [workspace.dependencies.solana-svm] git = "https://github.com/magicblock-labs/magicblock-svm.git" rev = "3e9456ec4" diff --git a/magicblock-chainlink/src/chainlink/fetch_cloner.rs b/magicblock-chainlink/src/chainlink/fetch_cloner.rs index e679d4e2c..e8f26893b 100644 --- a/magicblock-chainlink/src/chainlink/fetch_cloner.rs +++ b/magicblock-chainlink/src/chainlink/fetch_cloner.rs @@ -16,7 +16,7 @@ use magicblock_metrics::metrics::{self, AccountFetchOrigin}; use solana_account::{Account, AccountSharedData, ReadableAccount}; use solana_program::{program_option::COption, program_pack::Pack}; use solana_pubkey::Pubkey; -use solana_sdk::{pubkey, rent::Rent, system_program}; +use solana_sdk::{rent::Rent, system_program}; use spl_token::state::{Account as SplAccount, AccountState}; use tokio::{ sync::{mpsc, oneshot}, @@ -3420,12 +3420,12 @@ pub struct EphemeralAta { pub amount: u64, } -impl Into for EphemeralAta { - fn into(self) -> AccountSharedData { +impl From for AccountSharedData { + fn from(val: EphemeralAta) -> Self { let token_account = SplAccount { - mint: self.mint, - owner: self.owner, - amount: self.amount, + mint: val.mint, + owner: val.owner, + amount: val.amount, delegate: COption::None, state: AccountState::Initialized, is_native: COption::None, diff --git a/test-integration/Cargo.lock b/test-integration/Cargo.lock index 40152dee8..acf64d53d 100644 --- a/test-integration/Cargo.lock +++ b/test-integration/Cargo.lock @@ -3121,6 +3121,172 @@ dependencies = [ "solana-inline-spl", "solana-rpc-client", "solana-sdk", + "thiserror 1.0.69", + "tokio", + "tokio-util 0.7.15", +] + +[[package]] +name = "magicblock-chainlink" +version = "0.4.1" +dependencies = [ + "arc-swap", + "async-trait", + "bincode", + "env_logger 0.11.8", + "futures-util", + "log", + "lru", + "magicblock-config", + "magicblock-core", + "magicblock-delegation-program", + "magicblock-magic-program-api 0.4.1", + "magicblock-metrics", + "solana-account", + "solana-account-decoder", + "solana-account-decoder-client-types", + "solana-loader-v3-interface 3.0.0", + "solana-loader-v4-interface", + "solana-program", + "solana-pubkey", + "solana-pubsub-client", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", + "solana-sdk-ids", + "solana-signer", + "solana-system-interface", + "solana-transaction-error", + "spl-token", + "spl-token-2022 7.0.0", + "thiserror 1.0.69", + "tokio", + "tokio-stream", + "tokio-util 0.7.15", +] + +[[package]] +name = "magicblock-committor-program" +version = "0.4.1" +dependencies = [ + "borsh 1.5.7", + "paste", + "solana-account", + "solana-program", + "solana-pubkey", + "thiserror 1.0.69", +] + +[[package]] +name = "magicblock-committor-service" +version = "0.4.1" +dependencies = [ + "async-trait", + "base64 0.21.7", + "bincode", + "borsh 1.5.7", + "dyn-clone", + "futures-util", + "log", + "lru", + "magicblock-committor-program", + "magicblock-delegation-program", + "magicblock-metrics", + "magicblock-program", + "magicblock-rpc-client", + "magicblock-table-mania", + "rusqlite", + "solana-account", + "solana-pubkey", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-sdk", + "solana-transaction-status-client-types", + "static_assertions", + "tempfile", + "thiserror 1.0.69", + "tokio", + "tokio-util 0.7.15", +] + +[[package]] +name = "magicblock-config" +version = "0.4.1" +dependencies = [ + "clap", + "derive_more", + "figment", + "humantime-serde", + "isocountry", + "serde", + "serde_with", + "solana-keypair", + "solana-pubkey", + "solana-signer", + "toml 0.8.23", + "url", +] + +[[package]] +name = "magicblock-core" +version = "0.4.1" +dependencies = [ + "flume", + "magicblock-magic-program-api 0.4.1", + "solana-account", + "solana-account-decoder", + "solana-hash", + "solana-program", + "solana-pubkey", + "solana-signature", + "solana-transaction", + "solana-transaction-context", + "solana-transaction-error", + "tokio", +] + +[[package]] +name = "magicblock-delegation-program" +version = "1.1.0" +source = "git+https://github.com/magicblock-labs/delegation-program.git?rev=aa1de56d90c#aa1de56d90c8a242377accd59899f272f0131f8c" +dependencies = [ + "bincode", + "borsh 1.5.7", + "bytemuck", + "num_enum", + "paste", + "pinocchio", + "pinocchio-log", + "pinocchio-pubkey", + "pinocchio-system", + "solana-curve25519", + "solana-program", + "solana-security-txt", + "thiserror 1.0.69", +] + +[[package]] +name = "magicblock-ledger" +version = "0.4.1" +dependencies = [ + "arc-swap", + "bincode", + "byteorder", + "fs_extra", + "libc", + "log", + "magicblock-core", + "magicblock-metrics", + "num-format", + "num_cpus", + "prost", + "rocksdb", + "scc", + "serde", + "solana-account-decoder", + "solana-measure", + "solana-metrics", + "solana-sdk", "solana-storage-proto", "solana-transaction-status", "thiserror 1.0.69", From 235b4a63b5b36c4f8612d46fdbc898c54b47558b Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Wed, 17 Dec 2025 13:43:22 +0100 Subject: [PATCH 06/15] chore: refactor --- Cargo.lock | 3 + .../src/chainlink/fetch_cloner.rs | 158 +----------------- magicblock-core/Cargo.toml | 2 + magicblock-core/src/token_programs.rs | 146 ++++++++++++++++ programs/magicblock/Cargo.toml | 1 + .../process_schedule_commit.rs | 46 ++--- .../process_schedule_commit_tests.rs | 17 +- test-integration/Cargo.lock | 2 + 8 files changed, 182 insertions(+), 193 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 70bac1335..7438befef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2834,6 +2834,8 @@ dependencies = [ "solana-transaction", "solana-transaction-context", "solana-transaction-error", + "spl-token", + "spl-token-2022 7.0.0", "tokio", ] @@ -2956,6 +2958,7 @@ dependencies = [ "assert_matches", "bincode", "lazy_static", + "magicblock-chainlink", "magicblock-core", "magicblock-magic-program-api", "num-derive", diff --git a/magicblock-chainlink/src/chainlink/fetch_cloner.rs b/magicblock-chainlink/src/chainlink/fetch_cloner.rs index e8f26893b..27e6e60c0 100644 --- a/magicblock-chainlink/src/chainlink/fetch_cloner.rs +++ b/magicblock-chainlink/src/chainlink/fetch_cloner.rs @@ -11,13 +11,15 @@ use dlp::{ pda::delegation_record_pda_from_delegated_account, state::DelegationRecord, }; use log::*; +// Shared ATA/eATA helpers +use magicblock_core::token_programs::{ + is_ata, try_derive_eata_address_and_bump, MaybeIntoAta, +}; use magicblock_core::traits::AccountsBank; use magicblock_metrics::metrics::{self, AccountFetchOrigin}; -use solana_account::{Account, AccountSharedData, ReadableAccount}; -use solana_program::{program_option::COption, program_pack::Pack}; +use solana_account::{AccountSharedData, ReadableAccount}; use solana_pubkey::Pubkey; -use solana_sdk::{rent::Rent, system_program}; -use spl_token::state::{Account as SplAccount, AccountState}; +use solana_sdk::system_program; use tokio::{ sync::{mpsc, oneshot}, task, @@ -1166,7 +1168,7 @@ where || deleg.authority.eq(&Pubkey::default()); if is_delegated_to_us { if let Some(projected_ata) = - eata_shared.maybe_into_ata(deleg) + eata_shared.maybe_into_ata(deleg.owner) { account_to_clone = projected_ata; account_to_clone.set_delegated(true); @@ -3328,148 +3330,4 @@ mod tests { } } -/// Information about an Associated Token Account (ATA) -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub(crate) struct AtaInfo { - pub mint: Pubkey, - pub owner: Pubkey, -} - -/// Returns Some(AtaInfo) if the given account is an Associated Token Account (ATA) -/// for the mint/owner contained in its SPL Token account data. -/// Supports both spl-token and spl-token-2022 program owners. -pub(crate) fn is_ata( - account_pubkey: &Pubkey, - account: &AccountSharedData, -) -> Option { - // The account must be owned by the SPL Token program (legacy) or Token-2022 - let token_program_owner = account.owner(); - let is_spl_token = *token_program_owner == spl_token::id(); - let is_token_2022 = *token_program_owner == spl_token_2022::id(); - if !(is_spl_token || is_token_2022) { - return None; - } - - // Parse the token account data to extract mint and token owner - // Layout (at least the first 64 bytes): - // 0..32 -> mint Pubkey - // 32..64 -> owner Pubkey (the wallet the ATA belongs to) - let data = account.data(); - if data.len() < 64 { - return None; - } - - let mint = Pubkey::new_from_array(match data[0..32].try_into() { - Ok(a) => a, - Err(_) => return None, - }); - let wallet_owner = Pubkey::new_from_array(match data[32..64].try_into() { - Ok(a) => a, - Err(_) => return None, - }); - - // Associated token program id (constant) - // Centralized in magicblock_core::token_programs - use magicblock_core::token_programs::ASSOCIATED_TOKEN_PROGRAM_ID; - - // Seeds per SPL ATA derivation: [wallet_owner, token_program_id, mint] - let (derived, _bump) = Pubkey::find_program_address( - &[ - wallet_owner.as_ref(), - token_program_owner.as_ref(), - mint.as_ref(), - ], - &ASSOCIATED_TOKEN_PROGRAM_ID, - ); - - if derived == *account_pubkey { - Some(AtaInfo { - mint, - owner: wallet_owner, - }) - } else { - None - } -} - -/// Derive the Enhanced ATA (eATA) PDA for a given ATA owner and mint. -/// Seeds: [owner, mint, b"5iC4wKZizyxrKh271Xzx3W4Vn2xUyYvSGHeoB2mdw5HA"], program: dlp::id() -use magicblock_core::token_programs::EATA_PROGRAM_ID; - -pub(crate) fn try_derive_eata_address_and_bump( - owner: &Pubkey, - mint: &Pubkey, -) -> Option<(Pubkey, u8)> { - magicblock_core::token_programs::try_derive_eata_address_and_bump( - owner, mint, - ) -} - -/// Utility trait to attempt conversion of an eata into an ata -pub(crate) trait MaybeIntoAta { - fn maybe_into_ata(&self, record: DelegationRecord) -> Option; -} - -#[repr(C)] -pub struct EphemeralAta { - /// The owner (wallet) this ATA belongs to - pub owner: Pubkey, - /// The mint associated with this account - pub mint: Pubkey, - /// The amount of tokens this account holds. - pub amount: u64, -} - -impl From for AccountSharedData { - fn from(val: EphemeralAta) -> Self { - let token_account = SplAccount { - mint: val.mint, - owner: val.owner, - amount: val.amount, - delegate: COption::None, - state: AccountState::Initialized, - is_native: COption::None, - delegated_amount: 0, - close_authority: COption::None, - }; - - let mut data = vec![0u8; SplAccount::LEN]; - SplAccount::pack(token_account, &mut data) - .expect("pack spl token account"); - let lamports = Rent::default().minimum_balance(data.len()); - - let account = Account { - owner: spl_token::id(), - data, - lamports, - executable: false, - ..Default::default() - }; - - AccountSharedData::from(account) - } -} - -impl MaybeIntoAta for AccountSharedData { - fn maybe_into_ata( - &self, - record: DelegationRecord, - ) -> Option { - if !record.owner.ne(&EATA_PROGRAM_ID) { - return None; - } - let data = self.data(); - if data.len() < 40 { - return None; - } - let owner = Pubkey::new_from_array(data[0..32].try_into().ok()?); - let mint = Pubkey::new_from_array(data[32..64].try_into().ok()?); - let amount = u64::from_le_bytes(data[64..72].try_into().ok()?); - let eata = EphemeralAta { - owner, - mint, - amount, - }; - Some(eata.into()) - } -} +// local helpers moved to magicblock_core::token_programs diff --git a/magicblock-core/Cargo.toml b/magicblock-core/Cargo.toml index 738dfe90a..7cc7fb809 100644 --- a/magicblock-core/Cargo.toml +++ b/magicblock-core/Cargo.toml @@ -22,3 +22,5 @@ solana-transaction = { workspace = true, features = ["blake3", "verify"] } solana-transaction-context = { workspace = true } solana-transaction-error = { workspace = true } magicblock-magic-program-api = { workspace = true } +spl-token = { workspace = true } +spl-token-2022 = { workspace = true } diff --git a/magicblock-core/src/token_programs.rs b/magicblock-core/src/token_programs.rs index ec3ad1484..31d514976 100644 --- a/magicblock-core/src/token_programs.rs +++ b/magicblock-core/src/token_programs.rs @@ -1,4 +1,7 @@ +use solana_account::{Account, AccountSharedData, ReadableAccount}; +use solana_program::{program_option::COption, program_pack::Pack, rent::Rent}; use solana_pubkey::{pubkey, Pubkey}; +use spl_token::state::{Account as SplAccount, AccountState}; // Shared program IDs and helper functions for SPL Token, Associated Token, and eATA programs. @@ -53,3 +56,146 @@ pub fn try_derive_eata_address_and_bump( &EATA_PROGRAM_ID, ) } + +// ---------------- ATA inspection helpers ---------------- + +/// Information about an Associated Token Account (ATA) +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct AtaInfo { + pub mint: Pubkey, + pub owner: Pubkey, +} + +/// Returns Some(AtaInfo) if the given account is an Associated Token Account (ATA) +/// for the mint/owner contained in its SPL Token account data. +/// Supports both spl-token and spl-token-2022 program owners. +pub fn is_ata( + account_pubkey: &Pubkey, + account: &AccountSharedData, +) -> Option { + // The account must be owned by the SPL Token program (legacy) or Token-2022 + let token_program_owner = account.owner(); + let is_spl_token = *token_program_owner == spl_token::id(); + let is_token_2022 = *token_program_owner == spl_token_2022::id(); + if !(is_spl_token || is_token_2022) { + return None; + } + + // Parse the token account data to extract mint and token owner + // Layout (at least the first 64 bytes): + // 0..32 -> mint Pubkey + // 32..64 -> owner Pubkey (the wallet the ATA belongs to) + let data = account.data(); + if data.len() < 64 { + return None; + } + + let mint = Pubkey::new_from_array(match data[0..32].try_into() { + Ok(a) => a, + Err(_) => return None, + }); + let wallet_owner = Pubkey::new_from_array(match data[32..64].try_into() { + Ok(a) => a, + Err(_) => return None, + }); + + // Seeds per SPL ATA derivation: [wallet_owner, token_program_id, mint] + let (derived, _bump) = Pubkey::find_program_address( + &[ + wallet_owner.as_ref(), + token_program_owner.as_ref(), + mint.as_ref(), + ], + &ASSOCIATED_TOKEN_PROGRAM_ID, + ); + + if derived == *account_pubkey { + Some(AtaInfo { + mint, + owner: wallet_owner, + }) + } else { + None + } +} + +// ---------------- eATA -> ATA projection helpers ---------------- + +/// Try to convert an eATA account data buffer into a concrete SPL Token +/// ATA account (AccountSharedData) when the owning program matches the +/// expected eATA program. This is an extension trait implemented for +/// AccountSharedData. +pub trait MaybeIntoAta { + /// Attempts to convert `self` to an ATA form if `owner_program` equals + /// the eATA program id. Returns None if not an eATA or parsing fails. + fn maybe_into_ata(&self, owner_program: Pubkey) -> Option; +} + +/// Minimal ephemeral representation of an SPL token account used to build +/// a real AccountSharedData with correct layout and rent. +#[repr(C)] +pub struct EphemeralAta { + /// The owner (wallet) this ATA belongs to + pub owner: Pubkey, + /// The mint associated with this account + pub mint: Pubkey, + /// The amount of tokens this account holds. + pub amount: u64, +} + +impl From for AccountSharedData { + fn from(val: EphemeralAta) -> Self { + let token_account = SplAccount { + mint: val.mint, + owner: val.owner, + amount: val.amount, + delegate: COption::None, + state: AccountState::Initialized, + is_native: COption::None, + delegated_amount: 0, + close_authority: COption::None, + }; + + let mut data = vec![0u8; SplAccount::LEN]; + SplAccount::pack(token_account, &mut data) + .expect("pack spl token account"); + let lamports = Rent::default().minimum_balance(data.len()); + + let account = Account { + owner: spl_token::id(), + data, + lamports, + executable: false, + ..Default::default() + }; + + AccountSharedData::from(account) + } +} + +impl MaybeIntoAta for AccountSharedData { + fn maybe_into_ata( + &self, + owner_program: Pubkey, + ) -> Option { + // Only proceed if the provided owner matches eATA program + if owner_program != EATA_PROGRAM_ID { + return None; + } + + let data = self.data(); + // Expect at least owner(32) + mint(32) + amount(8) + if data.len() < 72 { + return None; + } + let owner = Pubkey::new_from_array(data[0..32].try_into().ok()?); + let mint = Pubkey::new_from_array(data[32..64].try_into().ok()?); + let amount = u64::from_le_bytes(data[64..72].try_into().ok()?); + let eata = EphemeralAta { + owner, + mint, + amount, + }; + Some(eata.into()) + } +} diff --git a/programs/magicblock/Cargo.toml b/programs/magicblock/Cargo.toml index e5dc056d1..2fe9dd5c1 100644 --- a/programs/magicblock/Cargo.toml +++ b/programs/magicblock/Cargo.toml @@ -24,6 +24,7 @@ thiserror = { workspace = true } test-kit = { workspace = true } assert_matches = { workspace = true } rand = { workspace = true } +magicblock-chainlink = { workspace = true, features = ["dev-context"] } [lib] crate-type = ["lib"] diff --git a/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs b/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs index afd3a72d6..ad22f0dff 100644 --- a/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs +++ b/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs @@ -1,8 +1,6 @@ use std::collections::HashSet; -use magicblock_core::token_programs::{ - derive_ata, derive_eata, SPL_TOKEN_PROGRAM_ID, -}; +use magicblock_core::token_programs::derive_eata; use solana_log_collector::ic_msg; use solana_program_runtime::invoke_context::InvokeContext; use solana_sdk::{ @@ -187,35 +185,19 @@ pub(crate) fn process_schedule_commit( // we should commit/undelegate the corresponding eATA instead. let mut target_pubkey = *acc_pubkey; let acc_borrow = acc.borrow(); - if acc_borrow.delegated() - && acc_borrow.owner() == &SPL_TOKEN_PROGRAM_ID - { - let data = acc_borrow.data(); - if data.len() >= 64 { - // spl-token Account layout: [0..32]=mint, [32..64]=owner - let mint = - Pubkey::new_from_array(match data[0..32].try_into() { - Ok(a) => a, - Err(_) => [0u8; 32], - }); - let wallet_owner = - Pubkey::new_from_array(match data[32..64].try_into() { - Ok(a) => a, - Err(_) => [0u8; 32], - }); - - // Verify that the current pubkey matches the derived ATA - let ata_addr = derive_ata(&wallet_owner, &mint); - if ata_addr == *acc_pubkey { - // Remap to eATA PDA - target_pubkey = derive_eata(&wallet_owner, &mint); - ic_msg!( - invoke_context, - "ScheduleCommit: remapping ATA {} -> eATA {} for commit/undelegate", - acc_pubkey, - target_pubkey - ); - } + if acc_borrow.delegated() { + if let Some(ata) = magicblock_core::token_programs::is_ata( + acc_pubkey, + &acc_borrow, + ) { + // Remap to eATA PDA + target_pubkey = derive_eata(&ata.owner, &ata.mint); + ic_msg!( + invoke_context, + "ScheduleCommit: remapping ATA {} -> eATA {} for commit/undelegate", + acc_pubkey, + target_pubkey + ); } } diff --git a/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs b/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs index b1f01aabc..dd9786408 100644 --- a/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs +++ b/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs @@ -257,9 +257,9 @@ fn assert_first_commit( mod tests { // ---------- Helpers for ATA/eATA remapping tests ---------- // Use shared SPL/ATA/eATA constants and helpers - use magicblock_core::token_programs::{ - derive_ata, derive_eata, SPL_TOKEN_PROGRAM_ID, - }; + // Reuse test helper to create proper SPL ATA account data + use magicblock_chainlink::testing::eatas::create_ata_account; + use magicblock_core::token_programs::{derive_ata, derive_eata}; use test_kit::init_logger; use super::*; @@ -269,14 +269,9 @@ mod tests { owner: &Pubkey, mint: &Pubkey, ) -> AccountSharedData { - // Minimal SPL token account data: first 32 bytes mint, next 32 owner - let mut data = vec![0u8; 72]; - data[0..32].copy_from_slice(mint.as_ref()); - data[32..64].copy_from_slice(owner.as_ref()); - - let mut acc = - AccountSharedData::new(0, data.len(), &SPL_TOKEN_PROGRAM_ID); - acc.set_data_from_slice(&data); + // Use shared helper to create a valid SPL ATA account, then convert and mark delegated + let ata_account = create_ata_account(owner, mint); + let mut acc = AccountSharedData::from(ata_account); acc.set_delegated(true); acc } diff --git a/test-integration/Cargo.lock b/test-integration/Cargo.lock index acf64d53d..5598fbd0b 100644 --- a/test-integration/Cargo.lock +++ b/test-integration/Cargo.lock @@ -3242,6 +3242,8 @@ dependencies = [ "solana-transaction", "solana-transaction-context", "solana-transaction-error", + "spl-token", + "spl-token-2022 7.0.0", "tokio", ] From 7ee8a1fa701560549ec8735f1bab5d4a93a3d953 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Wed, 17 Dec 2025 13:57:43 +0100 Subject: [PATCH 07/15] chore: refactor --- magicblock-chainlink/src/testing/eatas.rs | 14 +++----------- .../process_schedule_commit_tests.rs | 8 ++++---- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/magicblock-chainlink/src/testing/eatas.rs b/magicblock-chainlink/src/testing/eatas.rs index c6a01a3e9..a9987f2d5 100644 --- a/magicblock-chainlink/src/testing/eatas.rs +++ b/magicblock-chainlink/src/testing/eatas.rs @@ -1,5 +1,6 @@ pub use magicblock_core::token_programs::{ - derive_ata, derive_eata, EATA_PROGRAM_ID, SPL_TOKEN_PROGRAM_ID, + derive_ata, derive_eata, EphemeralAta, EATA_PROGRAM_ID, + SPL_TOKEN_PROGRAM_ID, }; use solana_account::Account; use solana_program::{program_option::COption, program_pack::Pack}; @@ -54,13 +55,4 @@ pub fn create_eata_account( } } -/// Internal representation of a token account data. -#[repr(C)] -pub struct EphemeralAta { - /// The owner of the eata - pub owner: Pubkey, - /// The mint associated with this account - pub mint: Pubkey, - /// The amount of tokens this account holds. - pub amount: u64, -} +// Reuse EphemeralAta definition from magicblock_core::token_programs diff --git a/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs b/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs index dd9786408..d30d326c3 100644 --- a/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs +++ b/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs @@ -486,8 +486,8 @@ mod tests { // Execute scheduling let processed_scheduled = process_instruction( ix.data.as_slice(), - transaction_accounts.clone(), - ix.accounts.clone(), + transaction_accounts, + ix.accounts, Ok(()), ); @@ -568,8 +568,8 @@ mod tests { // Execute scheduling let processed_scheduled = process_instruction( ix.data.as_slice(), - transaction_accounts.clone(), - ix.accounts.clone(), + transaction_accounts, + ix.accounts, Ok(()), ); From 66fb0fd1b1917cf2fcb78e10ec8ee6e43619aee4 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Wed, 17 Dec 2025 15:37:16 +0100 Subject: [PATCH 08/15] chore: refactor --- .../src/magic_scheduled_base_intent.rs | 17 +++++++-- .../src/schedule_transactions/mod.rs | 35 +++++++++++++++++++ .../process_schedule_commit.rs | 26 ++++++-------- 3 files changed, 61 insertions(+), 17 deletions(-) diff --git a/programs/magicblock/src/magic_scheduled_base_intent.rs b/programs/magicblock/src/magic_scheduled_base_intent.rs index 3598d0349..fff42d234 100644 --- a/programs/magicblock/src/magic_scheduled_base_intent.rs +++ b/programs/magicblock/src/magic_scheduled_base_intent.rs @@ -19,6 +19,7 @@ use solana_sdk::{ use crate::{ instruction_utils::InstructionUtils, + schedule_transactions::remap_ata_to_eata_if_delegated, utils::accounts::{ get_instruction_account_with_idx, get_instruction_pubkey_with_idx, get_writable_with_idx, @@ -407,7 +408,13 @@ impl CommitType { let committed_accounts = committed_accounts_ref .into_iter() .map(|el| { - let mut committed_account: CommittedAccount = el.into(); + let (pubkey, account_ref) = el; + let remapped = remap_ata_to_eata_if_delegated( + &account_ref.borrow(), + &pubkey, + ); + let mut committed_account: CommittedAccount = + (remapped, account_ref).into(); committed_account.account.owner = context .parent_program_id .unwrap_or(committed_account.account.owner); @@ -435,7 +442,13 @@ impl CommitType { let committed_accounts = committed_accounts_ref .into_iter() .map(|el| { - let mut committed_account: CommittedAccount = el.into(); + let (pubkey, account_ref) = el; + let remapped = remap_ata_to_eata_if_delegated( + &account_ref.borrow(), + &pubkey, + ); + let mut committed_account: CommittedAccount = + (remapped, account_ref).into(); committed_account.account.owner = context .parent_program_id .unwrap_or(committed_account.account.owner); diff --git a/programs/magicblock/src/schedule_transactions/mod.rs b/programs/magicblock/src/schedule_transactions/mod.rs index d2c608e15..d8a6495e8 100644 --- a/programs/magicblock/src/schedule_transactions/mod.rs +++ b/programs/magicblock/src/schedule_transactions/mod.rs @@ -38,3 +38,38 @@ pub fn check_magic_context_id( Ok(()) } + +// Helper to remap SPL Token ATAs to eATAs for delegated accounts. +// This keeps ScheduleCommit and ScheduleBaseIntent paths consistent. +use magicblock_core::token_programs::{ + derive_ata, derive_eata, SPL_TOKEN_PROGRAM_ID, +}; +use solana_sdk::{ + account::{AccountSharedData, ReadableAccount}, + pubkey::Pubkey, +}; + +pub(crate) fn remap_ata_to_eata_if_delegated( + account: &AccountSharedData, + pubkey: &Pubkey, +) -> Pubkey { + if account.delegated() && account.owner() == &SPL_TOKEN_PROGRAM_ID { + let data = account.data(); + if data.len() >= 64 { + // SAFETY: slices validated by len check; fall back to original key on any parse error + if let (Ok(mint_arr), Ok(owner_arr)) = ( + <[u8; 32]>::try_from(&data[0..32]), + <[u8; 32]>::try_from(&data[32..64]), + ) { + let mint = Pubkey::new_from_array(mint_arr); + let wallet_owner = Pubkey::new_from_array(owner_arr); + let ata = derive_ata(&wallet_owner, &mint); + if ata == *pubkey { + return derive_eata(&wallet_owner, &mint); + } + } + } + } + + *pubkey +} diff --git a/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs b/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs index ad22f0dff..c7d08f917 100644 --- a/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs +++ b/programs/magicblock/src/schedule_transactions/process_schedule_commit.rs @@ -1,6 +1,5 @@ use std::collections::HashSet; -use magicblock_core::token_programs::derive_eata; use solana_log_collector::ic_msg; use solana_program_runtime::invoke_context::InvokeContext; use solana_sdk::{ @@ -183,22 +182,19 @@ pub(crate) fn process_schedule_commit( // If this is a delegated SPL Token ATA that was cloned from an eATA, // we should commit/undelegate the corresponding eATA instead. - let mut target_pubkey = *acc_pubkey; let acc_borrow = acc.borrow(); - if acc_borrow.delegated() { - if let Some(ata) = magicblock_core::token_programs::is_ata( - acc_pubkey, + let target_pubkey = + crate::schedule_transactions::remap_ata_to_eata_if_delegated( &acc_borrow, - ) { - // Remap to eATA PDA - target_pubkey = derive_eata(&ata.owner, &ata.mint); - ic_msg!( - invoke_context, - "ScheduleCommit: remapping ATA {} -> eATA {} for commit/undelegate", - acc_pubkey, - target_pubkey - ); - } + acc_pubkey, + ); + if target_pubkey != *acc_pubkey { + ic_msg!( + invoke_context, + "ScheduleCommit: remapping ATA {} -> eATA {} for commit/undelegate", + acc_pubkey, + target_pubkey + ); } #[allow(clippy::unnecessary_literal_unwrap)] From 1aae4b2b684da5a2a4adbe84dc60bea1bfe6b753 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Wed, 17 Dec 2025 15:38:31 +0100 Subject: [PATCH 09/15] Update magicblock-chainlink/src/testing/eatas.rs Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- magicblock-chainlink/src/testing/eatas.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/magicblock-chainlink/src/testing/eatas.rs b/magicblock-chainlink/src/testing/eatas.rs index a9987f2d5..e928080df 100644 --- a/magicblock-chainlink/src/testing/eatas.rs +++ b/magicblock-chainlink/src/testing/eatas.rs @@ -45,10 +45,10 @@ pub fn create_eata_account( data.extend_from_slice(&amount.to_le_bytes()); let lamports = Rent::default().minimum_balance(data.len()); - let owner = if delegate { dlp::ID } else { EATA_PROGRAM_ID }; + let account_owner = if delegate { dlp::ID } else { EATA_PROGRAM_ID }; Account { - owner, + owner: account_owner, data, lamports, ..Default::default() From 7a58802bfc0c846895c794dfc51cd6fa19babe74 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Thu, 18 Dec 2025 13:02:46 +0100 Subject: [PATCH 10/15] chore: fix integrations tests deps --- Cargo.lock | 2089 +++++---------- Cargo.toml | 6 +- test-integration/Cargo.lock | 2380 ++++++----------- test-integration/Cargo.toml | 8 +- test-integration/Makefile | 6 +- .../tests/ix_ata_eata_replace.rs | 57 +- 6 files changed, 1424 insertions(+), 3122 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7cfa3954e..a933900c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -426,12 +426,6 @@ dependencies = [ "tower-service", ] -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - [[package]] name = "base64" version = "0.12.3" @@ -450,12 +444,6 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "base64ct" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" - [[package]] name = "bincode" version = "1.3.3" @@ -950,12 +938,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - [[package]] name = "constant_time_eq" version = "0.3.1" @@ -1026,18 +1008,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - [[package]] name = "crypto-common" version = "0.1.7" @@ -1151,16 +1121,6 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" -[[package]] -name = "der" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" -dependencies = [ - "const-oid", - "zeroize", -] - [[package]] name = "deranged" version = "0.5.5" @@ -1227,7 +1187,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", - "const-oid", "crypto-common", "subtle", ] @@ -1255,27 +1214,13 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "signature 2.2.0", - "spki", -] - [[package]] name = "ed25519" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ - "signature 1.6.4", + "signature", ] [[package]] @@ -1310,25 +1255,6 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core 0.6.4", - "sec1", - "subtle", - "zeroize", -] - [[package]] name = "encode_unicode" version = "1.0.0" @@ -1483,16 +1409,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" -[[package]] -name = "ff" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "fiat-crypto" version = "0.2.9" @@ -1519,31 +1435,13 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" -[[package]] -name = "five8" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23f76610e969fa1784327ded240f1e28a3fd9520c9cec93b636fcf62dd37f772" -dependencies = [ - "five8_core 1.0.0", -] - [[package]] name = "five8_const" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" dependencies = [ - "five8_core 0.1.2", -] - -[[package]] -name = "five8_const" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a0f1728185f277989ca573a402716ae0beaaea3f76a8ff87ef9dd8fb19436c5" -dependencies = [ - "five8_core 1.0.0", + "five8_core", ] [[package]] @@ -1552,12 +1450,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" -[[package]] -name = "five8_core" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "059c31d7d36c43fe39d89e55711858b4da8be7eb6dabac23c7289b1a19489406" - [[package]] name = "fixedbitset" version = "0.4.2" @@ -1731,7 +1623,6 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", - "zeroize", ] [[package]] @@ -1742,7 +1633,7 @@ dependencies = [ "clap 4.5.53", "magicblock-accounts-db", "solana-commitment-config", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-rpc-client", "sonic-rs", "tempfile", @@ -1822,17 +1713,6 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "guinea" version = "0.4.2" @@ -1840,7 +1720,7 @@ dependencies = [ "bincode", "magicblock-magic-program-api", "serde", - "solana-program 2.2.1", + "solana-program", ] [[package]] @@ -2527,20 +2407,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "k256" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "sha2 0.10.9", - "signature 2.2.0", -] - [[package]] name = "keccak" version = "0.1.5" @@ -2580,9 +2446,9 @@ dependencies = [ "num-format", "pretty-hex", "solana-account", - "solana-clock 2.2.1", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-clock", + "solana-message", + "solana-pubkey", "solana-signature", "solana-transaction-status", "structopt", @@ -2779,12 +2645,13 @@ dependencies = [ [[package]] name = "magic-domain-program" -version = "0.0.1" -source = "git+https://github.com/magicblock-labs/magic-domain-program.git?rev=ea04d46#ea04d4646ede8e19307683d288e582bf60a3547a" +version = "0.2.0" +source = "git+https://github.com/magicblock-labs/magic-domain-program.git?rev=cffcfeb#cffcfeb8290697dbc63b19ef48e6bc8cd844f10f" dependencies = [ "borsh 1.6.0", "bytemuck_derive", - "solana-program 3.0.0", + "solana-program", + "solana-system-interface", ] [[package]] @@ -2805,15 +2672,15 @@ dependencies = [ "magicblock-rpc-client", "rand 0.9.2", "solana-account", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-loader-v3-interface", "solana-loader-v4-interface", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", "solana-signature", "solana-signer", - "solana-sysvar 2.2.1", + "solana-sysvar", "solana-transaction", "thiserror 1.0.69", "tokio", @@ -2831,10 +2698,10 @@ dependencies = [ "magicblock-committor-service", "magicblock-core", "magicblock-program", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash", + "solana-pubkey", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 1.0.69", "tokio", "tokio-util", @@ -2854,7 +2721,7 @@ dependencies = [ "parking_lot", "reflink-copy", "solana-account", - "solana-pubkey 2.2.1", + "solana-pubkey", "tempfile", "thiserror 1.0.69", ] @@ -2893,15 +2760,15 @@ dependencies = [ "solana-fee", "solana-fee-structure", "solana-keypair", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-pubkey", "solana-pubsub-client", "solana-rpc-client", "solana-rpc-client-api", "solana-signature", "solana-system-transaction", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status", "sonic-rs", "test-kit", @@ -2936,29 +2803,29 @@ dependencies = [ "num_cpus", "paste", "solana-account", - "solana-clock 2.2.1", + "solana-clock", "solana-commitment-config", "solana-feature-gate-interface", "solana-feature-set", - "solana-fee-calculator 2.2.1", + "solana-fee-calculator", "solana-genesis-config", - "solana-hash 2.2.1", + "solana-hash", "solana-inline-spl", - "solana-instruction 2.2.1", + "solana-instruction", "solana-keypair", - "solana-message 2.2.1", - "solana-native-token 2.2.1", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", + "solana-message", + "solana-native-token", + "solana-program", + "solana-pubkey", + "solana-rent", "solana-rpc-client", - "solana-sha256-hasher 2.2.1", + "solana-sha256-hasher", "solana-signature", "solana-signer", "solana-system-program", - "solana-sysvar 2.2.1", + "solana-sysvar", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 1.0.69", "tokio", "tokio-util", @@ -2985,28 +2852,28 @@ dependencies = [ "solana-account", "solana-account-decoder", "solana-account-decoder-client-types", - "solana-address-lookup-table-interface 2.2.2", - "solana-clock 2.2.1", + "solana-address-lookup-table-interface", + "solana-clock", "solana-commitment-config", "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-keypair", "solana-loader-v3-interface", "solana-loader-v4-interface", - "solana-message 2.2.1", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-program", + "solana-pubkey", "solana-pubsub-client", "solana-rpc-client", "solana-rpc-client-api", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-signature", "solana-signer", - "solana-system-interface 1.0.0", - "solana-sysvar 2.2.1", + "solana-system-interface", + "solana-sysvar", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "spl-token", "spl-token-2022 7.0.0", "thiserror 1.0.69", @@ -3022,8 +2889,8 @@ dependencies = [ "borsh 1.6.0", "paste", "solana-account", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", + "solana-program", + "solana-pubkey", "thiserror 1.0.69", ] @@ -3049,22 +2916,22 @@ dependencies = [ "rand 0.9.2", "rusqlite", "solana-account", - "solana-address-lookup-table-interface 2.2.2", + "solana-address-lookup-table-interface", "solana-commitment-config", "solana-compute-budget-interface", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-keypair", - "solana-message 2.2.1", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-program", + "solana-pubkey", "solana-rpc-client", "solana-rpc-client-api", "solana-signature", "solana-signer", "solana-system-program", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status-client-types", "static_assertions", "tempfile", @@ -3086,7 +2953,7 @@ dependencies = [ "serde_with", "serial_test", "solana-keypair", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-signer", "tempfile", "toml 0.8.23", @@ -3101,13 +2968,13 @@ dependencies = [ "magicblock-magic-program-api", "solana-account", "solana-account-decoder", - "solana-hash 2.2.1", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash", + "solana-program", + "solana-pubkey", "solana-signature", "solana-transaction", "solana-transaction-context", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "spl-token", "spl-token-2022 7.0.0", "tokio", @@ -3115,21 +2982,16 @@ dependencies = [ [[package]] name = "magicblock-delegation-program" -version = "1.1.0" -source = "git+https://github.com/magicblock-labs/delegation-program.git?rev=aa1de56d90c#aa1de56d90c8a242377accd59899f272f0131f8c" +version = "1.1.3" +source = "git+https://github.com/magicblock-labs/delegation-program.git?rev=1bcaf4d#1bcaf4d462d9414d543bfdf693130561a87d4af8" dependencies = [ "bincode", "borsh 1.6.0", "bytemuck", "num_enum", - "paste", - "pinocchio", - "pinocchio-log", - "pinocchio-pubkey", - "pinocchio-system", - "solana-curve25519", - "solana-program 2.2.1", - "solana-security-txt", + "solana-program", + "static_assertions", + "strum", "thiserror 1.0.69", ] @@ -3152,21 +3014,21 @@ dependencies = [ "scc", "serde", "solana-account-decoder", - "solana-clock 2.2.1", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-clock", + "solana-hash", + "solana-instruction", "solana-keypair", "solana-measure", - "solana-message 2.2.1", + "solana-message", "solana-metrics", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-signature", "solana-signer", "solana-storage-proto", "solana-system-transaction", "solana-transaction", "solana-transaction-context", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status", "tempfile", "thiserror 1.0.69", @@ -3180,7 +3042,7 @@ version = "0.4.2" dependencies = [ "bincode", "serde", - "solana-program 2.2.1", + "solana-program", ] [[package]] @@ -3219,18 +3081,18 @@ dependencies = [ "solana-fee-structure", "solana-keypair", "solana-loader-v4-program", - "solana-program 2.2.1", + "solana-program", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-rent-collector", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-signature", "solana-signer", "solana-svm", "solana-svm-transaction", "solana-system-program", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status", "test-kit", "tokio", @@ -3252,20 +3114,20 @@ dependencies = [ "rand 0.9.2", "serde", "solana-account", - "solana-account-info 2.2.1", - "solana-clock 2.2.1", - "solana-fee-calculator 2.2.1", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-account-info", + "solana-clock", + "solana-fee-calculator", + "solana-hash", + "solana-instruction", "solana-keypair", "solana-log-collector", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", "solana-seed-derivable", "solana-signature", "solana-signer", - "solana-sysvar 2.2.1", + "solana-sysvar", "solana-transaction", "solana-transaction-context", "test-kit", @@ -3278,16 +3140,16 @@ version = "0.4.2" dependencies = [ "log", "solana-account", - "solana-address-lookup-table-interface 2.2.2", - "solana-clock 2.2.1", + "solana-address-lookup-table-interface", + "solana-clock", "solana-commitment-config", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash", + "solana-instruction", + "solana-pubkey", "solana-rpc-client", "solana-rpc-client-api", "solana-signature", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status-client-types", "thiserror 1.0.69", "tokio", @@ -3303,17 +3165,17 @@ dependencies = [ "magicblock-rpc-client", "rand 0.9.2", "sha3", - "solana-address-lookup-table-interface 2.2.2", - "solana-clock 2.2.1", + "solana-address-lookup-table-interface", + "solana-clock", "solana-commitment-config", "solana-compute-budget-interface", - "solana-instruction 2.2.1", + "solana-instruction", "solana-keypair", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-pubkey", "solana-signature", "solana-signer", - "solana-slot-hashes 2.2.1", + "solana-slot-hashes", "solana-transaction", "thiserror 1.0.69", "tokio", @@ -3335,15 +3197,15 @@ dependencies = [ "magicblock-program", "rusqlite", "solana-account", - "solana-instruction 2.2.1", - "solana-message 2.2.1", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-message", + "solana-program", + "solana-pubkey", "solana-pubsub-client", "solana-rpc-client-api", "solana-signature", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "test-kit", "thiserror 1.0.69", "tokio", @@ -3393,7 +3255,7 @@ dependencies = [ "solana-feature-set", "solana-frozen-abi-macro", "solana-rpc-client-api", - "solana-sanitize 2.2.1", + "solana-sanitize", ] [[package]] @@ -3892,63 +3754,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "pinocchio" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b971851087bc3699b001954ad02389d50c41405ece3548cbcafc88b3e20017a" - -[[package]] -name = "pinocchio-log" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd11022408f312e6179ece321c1f7dc0d1b2aa7765fddd39b2a7378d65a899e8" -dependencies = [ - "pinocchio-log-macro", -] - -[[package]] -name = "pinocchio-log-macro" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69fb52edb3c5736b044cc462b0957b9767d0f574d138f4e2761438c498a4b467" -dependencies = [ - "quote", - "regex", - "syn 1.0.109", -] - -[[package]] -name = "pinocchio-pubkey" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0225638cadcbebae8932cb7f49cb5da7c15c21beb19f048f05a5ca7d93f065" -dependencies = [ - "five8_const 0.1.4", - "pinocchio", - "sha2-const-stable", -] - -[[package]] -name = "pinocchio-system" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "141ed5eafb4ab04568bb0e224e3dc9a9de13c933de4c004e0d1a553498be3a7c" -dependencies = [ - "pinocchio", - "pinocchio-pubkey", -] - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "pkg-config" version = "0.3.32" @@ -4504,16 +4309,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac 0.12.1", - "subtle", -] - [[package]] name = "ring" version = "0.17.14" @@ -4740,20 +4535,6 @@ version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca" -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - [[package]] name = "security-framework" version = "2.11.1" @@ -4957,12 +4738,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "sha2-const-stable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" - [[package]] name = "sha3" version = "0.10.8" @@ -5013,16 +4788,6 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - [[package]] name = "simd-adler32" version = "0.3.8" @@ -5083,12 +4848,12 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-account-info 2.2.1", - "solana-clock 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sysvar 2.2.1", + "solana-account-info", + "solana-clock", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-sysvar", ] [[package]] @@ -5108,20 +4873,20 @@ dependencies = [ "serde_json", "solana-account", "solana-account-decoder-client-types", - "solana-clock 2.2.1", + "solana-clock", "solana-config-program", - "solana-epoch-schedule 2.2.1", - "solana-fee-calculator 2.2.1", - "solana-instruction 2.2.1", - "solana-nonce 2.2.1", - "solana-program 2.2.1", - "solana-program-pack 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-slot-hashes 2.2.1", - "solana-slot-history 2.2.1", - "solana-sysvar 2.2.1", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-instruction", + "solana-nonce", + "solana-program", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-slot-history", + "solana-sysvar", "spl-token", "spl-token-2022 7.0.0", "spl-token-group-interface", @@ -5142,7 +4907,7 @@ dependencies = [ "serde_derive", "serde_json", "solana-account", - "solana-pubkey 2.2.1", + "solana-pubkey", "zstd", ] @@ -5154,52 +4919,9 @@ checksum = "e0c17d606a298a205fae325489fbed88ee6dc4463c111672172327e741c8905d" dependencies = [ "bincode", "serde", - "solana-program-error 2.2.2", - "solana-program-memory 2.2.1", - "solana-pubkey 2.2.1", -] - -[[package]] -name = "solana-account-info" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc3397241392f5756925029acaa8515dc70fcbe3d8059d4885d7d6533baf64fd" -dependencies = [ - "bincode", - "serde_core", - "solana-address 2.0.0", - "solana-program-error 3.0.0", - "solana-program-memory 3.1.0", -] - -[[package]] -name = "solana-address" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" -dependencies = [ - "solana-address 2.0.0", -] - -[[package]] -name = "solana-address" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e37320fd2945c5d654b2c6210624a52d66c3f1f73b653ed211ab91a703b35bdd" -dependencies = [ - "borsh 1.6.0", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "five8", - "five8_const 1.0.0", - "serde", - "serde_derive", - "solana-atomic-u64 3.0.0", - "solana-define-syscall 4.0.1", - "solana-program-error 3.0.0", - "solana-sanitize 3.0.1", - "solana-sha256-hasher 3.1.0", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", ] [[package]] @@ -5212,23 +4934,11 @@ dependencies = [ "bytemuck", "serde", "serde_derive", - "solana-clock 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-slot-hashes 2.2.1", -] - -[[package]] -name = "solana-address-lookup-table-interface" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2f56cac5e70517a2f27d05e5100b20de7182473ffd0035b23ea273307905987" -dependencies = [ - "solana-clock 3.0.0", - "solana-pubkey 3.0.0", - "solana-sdk-ids 3.1.0", - "solana-slot-hashes 3.0.0", + "solana-clock", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-slot-hashes", ] [[package]] @@ -5242,16 +4952,16 @@ dependencies = [ "log", "num-derive", "num-traits", - "solana-address-lookup-table-interface 2.2.2", + "solana-address-lookup-table-interface", "solana-bincode", - "solana-clock 2.2.1", + "solana-clock", "solana-feature-set", - "solana-instruction 2.2.1", + "solana-instruction", "solana-log-collector", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-system-interface 1.0.0", + "solana-pubkey", + "solana-system-interface", "solana-transaction-context", "thiserror 2.0.17", ] @@ -5265,15 +4975,6 @@ dependencies = [ "parking_lot", ] -[[package]] -name = "solana-atomic-u64" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a933ff1e50aff72d02173cfcd7511bd8540b027ee720b75f353f594f834216d0" -dependencies = [ - "parking_lot", -] - [[package]] name = "solana-big-mod-exp" version = "2.2.1" @@ -5282,18 +4983,7 @@ checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567" dependencies = [ "num-bigint 0.4.6", "num-traits", - "solana-define-syscall 2.2.1", -] - -[[package]] -name = "solana-big-mod-exp" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c80fb6d791b3925d5ec4bf23a7c169ef5090c013059ec3ed7d0b2c04efa085" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "solana-define-syscall 3.0.0", + "solana-define-syscall", ] [[package]] @@ -5304,7 +4994,7 @@ checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc" dependencies = [ "bincode", "serde", - "solana-instruction 2.2.1", + "solana-instruction", ] [[package]] @@ -5314,20 +5004,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672" dependencies = [ "blake3", - "solana-define-syscall 2.2.1", - "solana-hash 2.2.1", - "solana-sanitize 2.2.1", -] - -[[package]] -name = "solana-blake3-hasher" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7116e1d942a2432ca3f514625104757ab8a56233787e95144c93950029e31176" -dependencies = [ - "blake3", - "solana-define-syscall 4.0.1", - "solana-hash 4.0.1", + "solana-define-syscall", + "solana-hash", + "solana-sanitize", ] [[package]] @@ -5341,7 +5020,7 @@ dependencies = [ "ark-ff", "ark-serialize", "bytemuck", - "solana-define-syscall 2.2.1", + "solana-define-syscall", "thiserror 2.0.17", ] @@ -5355,15 +5034,6 @@ dependencies = [ "borsh 1.6.0", ] -[[package]] -name = "solana-borsh" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc402b16657abbfa9991cd5cbfac5a11d809f7e7d28d3bb291baeb088b39060e" -dependencies = [ - "borsh 1.6.0", -] - [[package]] name = "solana-bpf-loader-program" version = "2.2.1" @@ -5375,19 +5045,19 @@ dependencies = [ "qualifier_attr", "scopeguard", "solana-account", - "solana-account-info 2.2.1", - "solana-big-mod-exp 2.2.1", + "solana-account-info", + "solana-big-mod-exp", "solana-bincode", - "solana-blake3-hasher 2.2.1", + "solana-blake3-hasher", "solana-bn254", - "solana-clock 2.2.1", + "solana-clock", "solana-compute-budget", - "solana-cpi 2.2.1", + "solana-cpi", "solana-curve25519", "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-keccak-hasher 2.2.1", + "solana-hash", + "solana-instruction", + "solana-keccak-hasher", "solana-loader-v3-interface", "solana-loader-v4-interface", "solana-log-collector", @@ -5395,18 +5065,18 @@ dependencies = [ "solana-packet", "solana-poseidon", "solana-precompiles", - "solana-program-entrypoint 2.2.1", - "solana-program-memory 2.2.1", + "solana-program-entrypoint", + "solana-program-memory", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-sbpf", - "solana-sdk-ids 2.2.1", - "solana-secp256k1-recover 2.2.1", - "solana-sha256-hasher 2.2.1", - "solana-stable-layout 2.2.1", - "solana-system-interface 1.0.0", - "solana-sysvar 2.2.1", - "solana-sysvar-id 2.2.1", + "solana-sdk-ids", + "solana-secp256k1-recover", + "solana-sha256-hasher", + "solana-stable-layout", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", "solana-timings", "solana-transaction-context", "solana-type-overrides", @@ -5429,8 +5099,8 @@ dependencies = [ "solana-config-program", "solana-feature-set", "solana-loader-v4-program", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", "solana-stake-program", "solana-system-program", "solana-vote-program", @@ -5445,16 +5115,16 @@ dependencies = [ "solana-account", "solana-commitment-config", "solana-epoch-info", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-keypair", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-pubkey", "solana-signature", "solana-signer", - "solana-system-interface 1.0.0", + "solana-system-interface", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", ] [[package]] @@ -5465,22 +5135,9 @@ checksum = "67c2177a1b9fe8326004f1151a5acd124420b737811080b1035df31349e4d892" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-clock" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb62e9381182459a4520b5fe7fb22d423cae736239a6427fc398a88743d0ed59" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-ids 3.1.0", - "solana-sdk-macro 3.0.0", - "solana-sysvar-id 3.1.0", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", ] [[package]] @@ -5491,7 +5148,7 @@ checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" dependencies = [ "serde", "serde_derive", - "solana-hash 2.2.1", + "solana-hash", ] [[package]] @@ -5511,7 +5168,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eab40b24943ca51f1214fcf7979807640ea82a8387745f864cf3cd93d1337b01" dependencies = [ "solana-fee-structure", - "solana-program-entrypoint 2.2.1", + "solana-program-entrypoint", ] [[package]] @@ -5521,17 +5178,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6ef2a514cde8dce77495aefd23671dc46f638f504765910424436bc745dc04" dependencies = [ "log", - "solana-borsh 2.2.1", + "solana-borsh", "solana-builtins-default-costs", "solana-compute-budget", "solana-compute-budget-interface", "solana-feature-set", - "solana-instruction 2.2.1", + "solana-instruction", "solana-packet", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", "solana-svm-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 2.0.17", ] @@ -5544,8 +5201,8 @@ dependencies = [ "borsh 1.6.0", "serde", "serde_derive", - "solana-instruction 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-instruction", + "solana-sdk-ids", ] [[package]] @@ -5570,15 +5227,15 @@ dependencies = [ "serde_derive", "solana-account", "solana-bincode", - "solana-instruction 2.2.1", + "solana-instruction", "solana-log-collector", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-short-vec 2.2.1", + "solana-pubkey", + "solana-sdk-ids", + "solana-short-vec", "solana-stake-interface", - "solana-system-interface 1.0.0", + "solana-system-interface", "solana-transaction-context", ] @@ -5588,26 +5245,12 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11" dependencies = [ - "solana-account-info 2.2.1", - "solana-define-syscall 2.2.1", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-stable-layout 2.2.1", -] - -[[package]] -name = "solana-cpi" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dea26709d867aada85d0d3617db0944215c8bb28d3745b912de7db13a23280c" -dependencies = [ - "solana-account-info 3.1.0", - "solana-define-syscall 4.0.1", - "solana-instruction 3.1.0", - "solana-program-error 3.0.0", - "solana-pubkey 4.0.0", - "solana-stable-layout 3.0.0", + "solana-account-info", + "solana-define-syscall", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-stable-layout", ] [[package]] @@ -5619,7 +5262,7 @@ dependencies = [ "bytemuck", "bytemuck_derive", "curve25519-dalek 4.1.3", - "solana-define-syscall 2.2.1", + "solana-define-syscall", "subtle", "thiserror 2.0.17", ] @@ -5639,18 +5282,6 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf784bb2cb3e02cac9801813c30187344228d2ae952534902108f6150573a33d" -[[package]] -name = "solana-define-syscall" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9697086a4e102d28a156b8d6b521730335d6951bd39a5e766512bbe09007cee" - -[[package]] -name = "solana-define-syscall" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57e5b1c0bc1d4a4d10c88a4100499d954c09d3fecfae4912c1a074dff68b1738" - [[package]] name = "solana-derivation-path" version = "2.2.1" @@ -5672,9 +5303,9 @@ dependencies = [ "bytemuck_derive", "ed25519-dalek", "solana-feature-set", - "solana-instruction 2.2.1", + "solana-instruction", "solana-precompile-error", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", ] [[package]] @@ -5695,24 +5326,10 @@ checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7" dependencies = [ "serde", "serde_derive", - "solana-hash 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-epoch-rewards" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b319a4ed70390af911090c020571f0ff1f4ec432522d05ab89f5c08080381995" -dependencies = [ - "serde", - "serde_derive", - "solana-hash 3.1.0", - "solana-sdk-ids 3.1.0", - "solana-sdk-macro 3.0.0", - "solana-sysvar-id 3.1.0", + "solana-hash", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", ] [[package]] @@ -5722,8 +5339,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" dependencies = [ "siphasher", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash", + "solana-pubkey", ] [[package]] @@ -5734,32 +5351,9 @@ checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-epoch-schedule" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5481e72cc4d52c169db73e4c0cd16de8bc943078aac587ec4817a75cc6388f" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-ids 3.1.0", - "solana-sdk-macro 3.0.0", - "solana-sysvar-id 3.1.0", -] - -[[package]] -name = "solana-epoch-stake" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc6693d0ea833b880514b9b88d95afb80b42762dca98b0712465d1fcbbcb89e" -dependencies = [ - "solana-define-syscall 3.0.0", - "solana-pubkey 3.0.0", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", ] [[package]] @@ -5770,37 +5364,16 @@ checksum = "84461d56cbb8bb8d539347151e0525b53910102e4bced875d49d5139708e39d3" dependencies = [ "serde", "serde_derive", - "solana-address-lookup-table-interface 2.2.2", - "solana-clock 2.2.1", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-keccak-hasher 2.2.1", - "solana-message 2.2.1", - "solana-nonce 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-system-interface 1.0.0", - "thiserror 2.0.17", -] - -[[package]] -name = "solana-example-mocks" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978855d164845c1b0235d4b4d101cadc55373fffaf0b5b6cfa2194d25b2ed658" -dependencies = [ - "serde", - "serde_derive", - "solana-address-lookup-table-interface 3.0.0", - "solana-clock 3.0.0", - "solana-hash 3.1.0", - "solana-instruction 3.1.0", - "solana-keccak-hasher 3.1.0", - "solana-message 3.0.1", - "solana-nonce 3.0.0", - "solana-pubkey 3.0.0", - "solana-sdk-ids 3.1.0", - "solana-system-interface 2.0.0", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-hash", + "solana-instruction", + "solana-keccak-hasher", + "solana-message", + "solana-nonce", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", "thiserror 2.0.17", ] @@ -5814,13 +5387,13 @@ dependencies = [ "serde", "serde_derive", "solana-account", - "solana-account-info 2.2.1", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-system-interface 1.0.0", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", ] [[package]] @@ -5831,10 +5404,10 @@ checksum = "89e1d3b52b4a014efeaaab67f14e40af3972a4be61c523d612860db8e3145529" dependencies = [ "ahash", "lazy_static", - "solana-epoch-schedule 2.2.1", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-epoch-schedule", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", ] [[package]] @@ -5859,17 +5432,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "solana-fee-calculator" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a73cc03ca4bed871ca174558108835f8323e85917bb38b9c81c7af2ab853efe" -dependencies = [ - "log", - "serde", - "serde_derive", -] - [[package]] name = "solana-fee-structure" version = "2.2.1" @@ -5878,8 +5440,8 @@ checksum = "f45f94a88efdb512805563181dfa1c85c60a21b6e6d602bf24a2ea88f9399d6e" dependencies = [ "serde", "serde_derive", - "solana-message 2.2.1", - "solana-native-token 2.2.1", + "solana-message", + "solana-native-token", ] [[package]] @@ -5905,20 +5467,20 @@ dependencies = [ "serde", "serde_derive", "solana-account", - "solana-clock 2.2.1", + "solana-clock", "solana-cluster-type", - "solana-epoch-schedule 2.2.1", - "solana-fee-calculator 2.2.1", - "solana-hash 2.2.1", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash", "solana-inflation", "solana-keypair", "solana-logger", - "solana-native-token 2.2.1", + "solana-native-token", "solana-poh-config", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sha256-hasher", "solana-shred-version", "solana-signer", "solana-time-utils", @@ -5947,36 +5509,11 @@ dependencies = [ "js-sys", "serde", "serde_derive", - "solana-atomic-u64 2.2.1", - "solana-sanitize 2.2.1", + "solana-atomic-u64", + "solana-sanitize", "wasm-bindgen", ] -[[package]] -name = "solana-hash" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" -dependencies = [ - "solana-hash 4.0.1", -] - -[[package]] -name = "solana-hash" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a5d48a6ee7b91fc7b998944ab026ed7b3e2fc8ee3bc58452644a86c2648152f" -dependencies = [ - "borsh 1.6.0", - "bytemuck", - "bytemuck_derive", - "five8", - "serde", - "serde_derive", - "solana-atomic-u64 3.0.0", - "solana-sanitize 3.0.1", -] - [[package]] name = "solana-inflation" version = "2.2.1" @@ -5994,7 +5531,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "951545bd7d0ab4a878cfc7375ac9f1a475cb6936626677b2ba1d25e7b9f3910b" dependencies = [ "bytemuck", - "solana-pubkey 2.2.1", + "solana-pubkey", ] [[package]] @@ -6010,36 +5547,11 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-define-syscall 2.2.1", - "solana-pubkey 2.2.1", + "solana-define-syscall", + "solana-pubkey", "wasm-bindgen", ] -[[package]] -name = "solana-instruction" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee1b699a2c1518028a9982e255e0eca10c44d90006542d9d7f9f40dbce3f7c78" -dependencies = [ - "bincode", - "borsh 1.6.0", - "serde", - "serde_derive", - "solana-define-syscall 4.0.1", - "solana-instruction-error", - "solana-pubkey 4.0.0", -] - -[[package]] -name = "solana-instruction-error" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b04259e03c05faf38a8c24217b5cfe4c90572ae6184ab49cddb1584fdd756d3f" -dependencies = [ - "num-traits", - "solana-program-error 3.0.0", -] - [[package]] name = "solana-instructions-sysvar" version = "2.2.1" @@ -6047,32 +5559,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "427f2d0d6dc0bb49f16cef5e7f975180d2e80aab9bdd3b2af68e2d029ec63f43" dependencies = [ "bitflags 2.10.0", - "solana-account-info 2.2.1", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-serialize-utils 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-instructions-sysvar" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ddf67876c541aa1e21ee1acae35c95c6fbc61119814bfef70579317a5e26955" -dependencies = [ - "bitflags 2.10.0", - "solana-account-info 3.1.0", - "solana-instruction 3.1.0", - "solana-instruction-error", - "solana-program-error 3.0.0", - "solana-pubkey 3.0.0", - "solana-sanitize 3.0.1", - "solana-sdk-ids 3.1.0", - "solana-serialize-utils 3.1.0", - "solana-sysvar-id 3.1.0", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-serialize-utils", + "solana-sysvar-id", ] [[package]] @@ -6082,20 +5576,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79" dependencies = [ "sha3", - "solana-define-syscall 2.2.1", - "solana-hash 2.2.1", - "solana-sanitize 2.2.1", -] - -[[package]] -name = "solana-keccak-hasher" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed1c0d16d6fdeba12291a1f068cdf0d479d9bff1141bf44afd7aa9d485f65ef8" -dependencies = [ - "sha3", - "solana-define-syscall 4.0.1", - "solana-hash 4.0.1", + "solana-define-syscall", + "solana-hash", + "solana-sanitize", ] [[package]] @@ -6109,7 +5592,7 @@ dependencies = [ "ed25519-dalek-bip32", "rand 0.7.3", "solana-derivation-path", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-seed-derivable", "solana-seed-phrase", "solana-signature", @@ -6125,22 +5608,9 @@ checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-last-restart-slot" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcda154ec827f5fc1e4da0af3417951b7e9b8157540f81f936c4a8b1156134d0" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-ids 3.1.0", - "solana-sdk-macro 3.0.0", - "solana-sysvar-id 3.1.0", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", ] [[package]] @@ -6152,9 +5622,9 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", ] [[package]] @@ -6166,10 +5636,10 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-system-interface 1.0.0", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", ] [[package]] @@ -6181,10 +5651,10 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-system-interface 1.0.0", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", ] [[package]] @@ -6199,16 +5669,16 @@ dependencies = [ "solana-bincode", "solana-bpf-loader-program", "solana-compute-budget", - "solana-instruction 2.2.1", + "solana-instruction", "solana-loader-v3-interface", "solana-loader-v4-interface", "solana-log-collector", "solana-measure", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-sbpf", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-transaction-context", "solana-type-overrides", ] @@ -6253,35 +5723,17 @@ dependencies = [ "serde", "serde_derive", "solana-bincode", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-short-vec 2.2.1", - "solana-system-interface 1.0.0", - "solana-transaction-error 2.2.1", + "solana-hash", + "solana-instruction", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-system-interface", + "solana-transaction-error", "wasm-bindgen", ] -[[package]] -name = "solana-message" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85666605c9fd727f865ed381665db0a8fc29f984a030ecc1e40f43bfb2541623" -dependencies = [ - "lazy_static", - "serde", - "serde_derive", - "solana-address 1.1.0", - "solana-hash 3.1.0", - "solana-instruction 3.1.0", - "solana-sanitize 3.0.1", - "solana-sdk-ids 3.1.0", - "solana-short-vec 3.1.0", - "solana-transaction-error 3.0.0", -] - [[package]] name = "solana-metrics" version = "2.2.1" @@ -6293,9 +5745,9 @@ dependencies = [ "lazy_static", "log", "reqwest", - "solana-clock 2.2.1", + "solana-clock", "solana-cluster-type", - "solana-sha256-hasher 2.2.1", + "solana-sha256-hasher", "solana-time-utils", "thiserror 2.0.17", ] @@ -6306,16 +5758,7 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092" dependencies = [ - "solana-define-syscall 2.2.1", -] - -[[package]] -name = "solana-msg" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "264275c556ea7e22b9d3f87d56305546a38d4eee8ec884f3b126236cb7dcbbb4" -dependencies = [ - "solana-define-syscall 3.0.0", + "solana-define-syscall", ] [[package]] @@ -6324,12 +5767,6 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33e9de00960197412e4be3902a6cd35e60817c511137aca6c34c66cd5d4017ec" -[[package]] -name = "solana-native-token" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" - [[package]] name = "solana-nonce" version = "2.2.1" @@ -6338,22 +5775,10 @@ checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325" dependencies = [ "serde", "serde_derive", - "solana-fee-calculator 2.2.1", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", - "solana-sha256-hasher 2.2.1", -] - -[[package]] -name = "solana-nonce" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abbdc6c8caf1c08db9f36a50967539d0f72b9f1d4aea04fec5430f532e5afadc" -dependencies = [ - "solana-fee-calculator 3.0.0", - "solana-hash 3.1.0", - "solana-pubkey 3.0.0", - "solana-sha256-hasher 3.1.0", + "solana-fee-calculator", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", ] [[package]] @@ -6363,9 +5788,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" dependencies = [ "solana-account", - "solana-hash 2.2.1", - "solana-nonce 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-hash", + "solana-nonce", + "solana-sdk-ids", ] [[package]] @@ -6375,11 +5800,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" dependencies = [ "num_enum", - "solana-hash 2.2.1", + "solana-hash", "solana-packet", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-pubkey", + "solana-sanitize", + "solana-sha256-hasher", "solana-signature", "solana-signer", ] @@ -6416,7 +5841,7 @@ checksum = "8ad1ea160d08dc423c35021fa3e437a5783eb256f5ab8bc3024e27db913acf42" dependencies = [ "ark-bn254", "light-poseidon", - "solana-define-syscall 2.2.1", + "solana-define-syscall", "thiserror 2.0.17", ] @@ -6439,10 +5864,10 @@ dependencies = [ "lazy_static", "solana-ed25519-program", "solana-feature-set", - "solana-message 2.2.1", + "solana-message", "solana-precompile-error", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", "solana-secp256k1-program", "solana-secp256r1-program", ] @@ -6453,7 +5878,7 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" dependencies = [ - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-signature", "solana-signer", ] @@ -6483,130 +5908,71 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-account-info 2.2.1", - "solana-address-lookup-table-interface 2.2.2", - "solana-atomic-u64 2.2.1", - "solana-big-mod-exp 2.2.1", + "solana-account-info", + "solana-address-lookup-table-interface", + "solana-atomic-u64", + "solana-big-mod-exp", "solana-bincode", - "solana-blake3-hasher 2.2.1", - "solana-borsh 2.2.1", - "solana-clock 2.2.1", - "solana-cpi 2.2.1", + "solana-blake3-hasher", + "solana-borsh", + "solana-clock", + "solana-cpi", "solana-decode-error", - "solana-define-syscall 2.2.1", - "solana-epoch-rewards 2.2.1", - "solana-epoch-schedule 2.2.1", - "solana-example-mocks 2.2.1", + "solana-define-syscall", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-example-mocks", "solana-feature-gate-interface", - "solana-fee-calculator 2.2.1", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-instructions-sysvar 2.2.1", - "solana-keccak-hasher 2.2.1", - "solana-last-restart-slot 2.2.1", + "solana-fee-calculator", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", + "solana-keccak-hasher", + "solana-last-restart-slot", "solana-loader-v2-interface", "solana-loader-v3-interface", "solana-loader-v4-interface", - "solana-message 2.2.1", - "solana-msg 2.2.1", - "solana-native-token 2.2.1", - "solana-nonce 2.2.1", - "solana-program-entrypoint 2.2.1", - "solana-program-error 2.2.2", - "solana-program-memory 2.2.1", - "solana-program-option 2.2.1", - "solana-program-pack 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sanitize 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-secp256k1-recover 2.2.1", - "solana-serde-varint 2.2.1", - "solana-serialize-utils 2.2.1", - "solana-sha256-hasher 2.2.1", - "solana-short-vec 2.2.1", - "solana-slot-hashes 2.2.1", - "solana-slot-history 2.2.1", - "solana-stable-layout 2.2.1", + "solana-message", + "solana-msg", + "solana-native-token", + "solana-nonce", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-secp256k1-recover", + "solana-serde-varint", + "solana-serialize-utils", + "solana-sha256-hasher", + "solana-short-vec", + "solana-slot-hashes", + "solana-slot-history", + "solana-stable-layout", "solana-stake-interface", - "solana-system-interface 1.0.0", - "solana-sysvar 2.2.1", - "solana-sysvar-id 2.2.1", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", "solana-vote-interface", "thiserror 2.0.17", "wasm-bindgen", ] -[[package]] -name = "solana-program" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91b12305dd81045d705f427acd0435a2e46444b65367d7179d7bdcfc3bc5f5eb" -dependencies = [ - "memoffset", - "solana-account-info 3.1.0", - "solana-big-mod-exp 3.0.0", - "solana-blake3-hasher 3.1.0", - "solana-borsh 3.0.0", - "solana-clock 3.0.0", - "solana-cpi 3.1.0", - "solana-define-syscall 3.0.0", - "solana-epoch-rewards 3.0.0", - "solana-epoch-schedule 3.0.0", - "solana-epoch-stake", - "solana-example-mocks 3.0.0", - "solana-fee-calculator 3.0.0", - "solana-hash 3.1.0", - "solana-instruction 3.1.0", - "solana-instruction-error", - "solana-instructions-sysvar 3.0.0", - "solana-keccak-hasher 3.1.0", - "solana-last-restart-slot 3.0.0", - "solana-msg 3.0.0", - "solana-native-token 3.0.0", - "solana-program-entrypoint 3.1.1", - "solana-program-error 3.0.0", - "solana-program-memory 3.1.0", - "solana-program-option 3.0.0", - "solana-program-pack 3.0.0", - "solana-pubkey 3.0.0", - "solana-rent 3.1.0", - "solana-sdk-ids 3.1.0", - "solana-secp256k1-recover 3.1.0", - "solana-serde-varint 3.0.0", - "solana-serialize-utils 3.1.0", - "solana-sha256-hasher 3.1.0", - "solana-short-vec 3.1.0", - "solana-slot-hashes 3.0.0", - "solana-slot-history 3.0.0", - "solana-stable-layout 3.0.0", - "solana-sysvar 3.1.1", - "solana-sysvar-id 3.1.0", -] - [[package]] name = "solana-program-entrypoint" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "473ffe73c68d93e9f2aa726ad2985fe52760052709aaab188100a42c618060ec" dependencies = [ - "solana-account-info 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", -] - -[[package]] -name = "solana-program-entrypoint" -version = "3.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c9b0a1ff494e05f503a08b3d51150b73aa639544631e510279d6375f290997" -dependencies = [ - "solana-account-info 3.1.0", - "solana-define-syscall 4.0.1", - "solana-program-error 3.0.0", - "solana-pubkey 4.0.0", + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", ] [[package]] @@ -6620,20 +5986,9 @@ dependencies = [ "serde", "serde_derive", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-pubkey 2.2.1", -] - -[[package]] -name = "solana-program-error" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1af32c995a7b692a915bb7414d5f8e838450cf7c70414e763d8abcae7b51f28" -dependencies = [ - "borsh 1.6.0", - "serde", - "serde_derive", + "solana-instruction", + "solana-msg", + "solana-pubkey", ] [[package]] @@ -6643,16 +5998,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b0268f6c89825fb634a34bd0c3b8fdaeaecfc3728be1d622a8ee6dd577b60d4" dependencies = [ "num-traits", - "solana-define-syscall 2.2.1", -] - -[[package]] -name = "solana-program-memory" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4068648649653c2c50546e9a7fb761791b5ab0cda054c771bb5808d3a4b9eb52" -dependencies = [ - "solana-define-syscall 4.0.1", + "solana-define-syscall", ] [[package]] @@ -6661,28 +6007,13 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0" -[[package]] -name = "solana-program-option" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e7b4ddb464f274deb4a497712664c3b612e3f5f82471d4e47710fc4ab1c3095" - [[package]] name = "solana-program-pack" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "319f0ef15e6e12dc37c597faccb7d62525a509fec5f6975ecb9419efddeb277b" dependencies = [ - "solana-program-error 2.2.2", -] - -[[package]] -name = "solana-program-pack" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c169359de21f6034a63ebf96d6b380980307df17a8d371344ff04a883ec4e9d0" -dependencies = [ - "solana-program-error 3.0.0", + "solana-program-error", ] [[package]] @@ -6700,26 +6031,26 @@ dependencies = [ "rand 0.8.5", "serde", "solana-account", - "solana-clock 2.2.1", + "solana-clock", "solana-compute-budget", - "solana-epoch-rewards 2.2.1", - "solana-epoch-schedule 2.2.1", + "solana-epoch-rewards", + "solana-epoch-schedule", "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-last-restart-slot 2.2.1", + "solana-hash", + "solana-instruction", + "solana-last-restart-slot", "solana-log-collector", "solana-measure", "solana-metrics", "solana-precompiles", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", + "solana-pubkey", + "solana-rent", "solana-sbpf", - "solana-sdk-ids 2.2.1", - "solana-slot-hashes 2.2.1", - "solana-stable-layout 2.2.1", - "solana-sysvar 2.2.1", - "solana-sysvar-id 2.2.1", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-stable-layout", + "solana-sysvar", + "solana-sysvar-id", "solana-timings", "solana-transaction-context", "solana-type-overrides", @@ -6738,39 +6069,21 @@ dependencies = [ "bytemuck", "bytemuck_derive", "curve25519-dalek 4.1.3", - "five8_const 0.1.4", + "five8_const", "getrandom 0.2.16", "js-sys", "num-traits", "rand 0.8.5", "serde", "serde_derive", - "solana-atomic-u64 2.2.1", + "solana-atomic-u64", "solana-decode-error", - "solana-define-syscall 2.2.1", - "solana-sanitize 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-define-syscall", + "solana-sanitize", + "solana-sha256-hasher", "wasm-bindgen", ] -[[package]] -name = "solana-pubkey" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8909d399deb0851aa524420beeb5646b115fd253ef446e35fe4504c904da3941" -dependencies = [ - "solana-address 1.1.0", -] - -[[package]] -name = "solana-pubkey" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6f7104d456b58e1418c21a8581e89810278d1190f70f27ece7fc0b2c9282a57" -dependencies = [ - "solana-address 2.0.0", -] - [[package]] name = "solana-pubsub-client" version = "2.2.1" @@ -6786,8 +6099,8 @@ dependencies = [ "serde_derive", "serde_json", "solana-account-decoder-client-types", - "solana-clock 2.2.1", - "solana-pubkey 2.2.1", + "solana-clock", + "solana-pubkey", "solana-rpc-client-api", "solana-signature", "thiserror 2.0.17", @@ -6815,22 +6128,9 @@ checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-rent" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e860d5499a705369778647e97d760f7670adfb6fc8419dd3d568deccd46d5487" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-ids 3.1.0", - "solana-sdk-macro 3.0.0", - "solana-sysvar-id 3.1.0", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", ] [[package]] @@ -6842,12 +6142,12 @@ dependencies = [ "serde", "serde_derive", "solana-account", - "solana-clock 2.2.1", - "solana-epoch-schedule 2.2.1", + "solana-clock", + "solana-epoch-schedule", "solana-genesis-config", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", ] [[package]] @@ -6856,7 +6156,7 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" dependencies = [ - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-reward-info", ] @@ -6868,8 +6168,8 @@ checksum = "2b293f4246626c0e0a991531f08848a713ada965612e99dc510963f04d12cae7" dependencies = [ "lazy_static", "solana-feature-set", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", ] [[package]] @@ -6902,19 +6202,19 @@ dependencies = [ "serde_json", "solana-account", "solana-account-decoder-client-types", - "solana-clock 2.2.1", + "solana-clock", "solana-commitment-config", "solana-epoch-info", - "solana-epoch-schedule 2.2.1", + "solana-epoch-schedule", "solana-feature-gate-interface", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash", + "solana-instruction", + "solana-message", + "solana-pubkey", "solana-rpc-client-api", "solana-signature", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status-client-types", "solana-version", "tokio", @@ -6938,14 +6238,14 @@ dependencies = [ "serde_json", "solana-account", "solana-account-decoder-client-types", - "solana-clock 2.2.1", + "solana-clock", "solana-commitment-config", - "solana-fee-calculator 2.2.1", + "solana-fee-calculator", "solana-inflation", "solana-inline-spl", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-signer", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status-client-types", "solana-version", "thiserror 2.0.17", @@ -6957,12 +6257,6 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" -[[package]] -name = "solana-sanitize" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf09694a0fc14e5ffb18f9b7b7c0f15ecb6eac5b5610bf76a1853459d19daf9" - [[package]] name = "solana-sbpf" version = "0.10.0" @@ -7008,10 +6302,10 @@ dependencies = [ "solana-genesis-config", "solana-hard-forks", "solana-inflation", - "solana-instruction 2.2.1", + "solana-instruction", "solana-keypair", - "solana-message 2.2.1", - "solana-native-token 2.2.1", + "solana-message", + "solana-native-token", "solana-nonce-account", "solana-offchain-message", "solana-packet", @@ -7019,25 +6313,25 @@ dependencies = [ "solana-precompile-error", "solana-precompiles", "solana-presigner", - "solana-program 2.2.1", - "solana-program-memory 2.2.1", - "solana-pubkey 2.2.1", + "solana-program", + "solana-program-memory", + "solana-pubkey", "solana-quic-definitions", "solana-rent-collector", "solana-rent-debits", "solana-reserved-account-keys", "solana-reward-info", - "solana-sanitize 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", "solana-secp256k1-program", - "solana-secp256k1-recover 2.2.1", + "solana-secp256k1-recover", "solana-secp256r1-program", "solana-seed-derivable", "solana-seed-phrase", "solana-serde", - "solana-serde-varint 2.2.1", - "solana-short-vec 2.2.1", + "solana-serde-varint", + "solana-short-vec", "solana-shred-version", "solana-signature", "solana-signer", @@ -7045,7 +6339,7 @@ dependencies = [ "solana-time-utils", "solana-transaction", "solana-transaction-context", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-validator-exit", "thiserror 2.0.17", "wasm-bindgen", @@ -7057,16 +6351,7 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f" dependencies = [ - "solana-pubkey 2.2.1", -] - -[[package]] -name = "solana-sdk-ids" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def234c1956ff616d46c9dd953f251fa7096ddbaa6d52b165218de97882b7280" -dependencies = [ - "solana-address 2.0.0", + "solana-pubkey", ] [[package]] @@ -7081,18 +6366,6 @@ dependencies = [ "syn 2.0.111", ] -[[package]] -name = "solana-sdk-macro" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6430000e97083460b71d9fbadc52a2ab2f88f53b3a4c5e58c5ae3640a0e8c00" -dependencies = [ - "bs58", - "proc-macro2", - "quote", - "syn 2.0.111", -] - [[package]] name = "solana-secp256k1-program" version = "2.2.1" @@ -7106,9 +6379,9 @@ dependencies = [ "serde_derive", "sha3", "solana-feature-set", - "solana-instruction 2.2.1", + "solana-instruction", "solana-precompile-error", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", ] [[package]] @@ -7119,18 +6392,7 @@ checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" dependencies = [ "borsh 1.6.0", "libsecp256k1", - "solana-define-syscall 2.2.1", - "thiserror 2.0.17", -] - -[[package]] -name = "solana-secp256k1-recover" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de18cfdab99eeb940fbedd8c981fa130c0d76252da75d05446f22fae8b51932" -dependencies = [ - "k256", - "solana-define-syscall 4.0.1", + "solana-define-syscall", "thiserror 2.0.17", ] @@ -7143,9 +6405,9 @@ dependencies = [ "bytemuck", "openssl", "solana-feature-set", - "solana-instruction 2.2.1", + "solana-instruction", "solana-precompile-error", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", ] [[package]] @@ -7195,35 +6457,15 @@ dependencies = [ "serde", ] -[[package]] -name = "solana-serde-varint" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5174c57d5ff3c1995f274d17156964664566e2cde18a07bba1586d35a70d3b" -dependencies = [ - "serde", -] - [[package]] name = "solana-serialize-utils" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "817a284b63197d2b27afdba829c5ab34231da4a9b4e763466a003c40ca4f535e" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", -] - -[[package]] -name = "solana-serialize-utils" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e41dd8feea239516c623a02f0a81c2367f4b604d7965237fed0751aeec33ed" -dependencies = [ - "solana-instruction-error", - "solana-pubkey 3.0.0", - "solana-sanitize 3.0.1", + "solana-instruction", + "solana-pubkey", + "solana-sanitize", ] [[package]] @@ -7233,19 +6475,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0037386961c0d633421f53560ad7c80675c0447cba4d1bb66d60974dd486c7ea" dependencies = [ "sha2 0.10.9", - "solana-define-syscall 2.2.1", - "solana-hash 2.2.1", -] - -[[package]] -name = "solana-sha256-hasher" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" -dependencies = [ - "sha2 0.10.9", - "solana-define-syscall 4.0.1", - "solana-hash 4.0.1", + "solana-define-syscall", + "solana-hash", ] [[package]] @@ -7257,15 +6488,6 @@ dependencies = [ "serde", ] -[[package]] -name = "solana-short-vec" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79fb1809a32cfcf7d9c47b7070a92fa17cdb620ab5829e9a8a9ff9d138a7a175" -dependencies = [ - "serde_core", -] - [[package]] name = "solana-shred-version" version = "2.2.1" @@ -7273,8 +6495,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" dependencies = [ "solana-hard-forks", - "solana-hash 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-hash", + "solana-sha256-hasher", ] [[package]] @@ -7289,7 +6511,7 @@ dependencies = [ "serde", "serde-big-array", "serde_derive", - "solana-sanitize 2.2.1", + "solana-sanitize", ] [[package]] @@ -7298,9 +6520,9 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b" dependencies = [ - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-signature", - "solana-transaction-error 2.2.1", + "solana-transaction-error", ] [[package]] @@ -7311,22 +6533,9 @@ checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce" dependencies = [ "serde", "serde_derive", - "solana-hash 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-slot-hashes" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80a293f952293281443c04f4d96afd9d547721923d596e92b4377ed2360f1746" -dependencies = [ - "serde", - "serde_derive", - "solana-hash 3.1.0", - "solana-sdk-ids 3.1.0", - "solana-sysvar-id 3.1.0", + "solana-hash", + "solana-sdk-ids", + "solana-sysvar-id", ] [[package]] @@ -7338,21 +6547,8 @@ dependencies = [ "bv", "serde", "serde_derive", - "solana-sdk-ids 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-slot-history" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f914f6b108f5bba14a280b458d023e3621c9973f27f015a4d755b50e88d89e97" -dependencies = [ - "bv", - "serde", - "serde_derive", - "solana-sdk-ids 3.1.0", - "solana-sysvar-id 3.1.0", + "solana-sdk-ids", + "solana-sysvar-id", ] [[package]] @@ -7361,18 +6557,8 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", -] - -[[package]] -name = "solana-stable-layout" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1da74507795b6e8fb60b7c7306c0c36e2c315805d16eaaf479452661234685ac" -dependencies = [ - "solana-instruction 3.1.0", - "solana-pubkey 3.0.0", + "solana-instruction", + "solana-pubkey", ] [[package]] @@ -7386,14 +6572,14 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-clock 2.2.1", - "solana-cpi 2.2.1", + "solana-clock", + "solana-cpi", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-system-interface 1.0.0", - "solana-sysvar-id 2.2.1", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-system-interface", + "solana-sysvar-id", ] [[package]] @@ -7406,20 +6592,20 @@ dependencies = [ "log", "solana-account", "solana-bincode", - "solana-clock 2.2.1", + "solana-clock", "solana-config-program", "solana-feature-set", "solana-genesis-config", - "solana-instruction 2.2.1", + "solana-instruction", "solana-log-collector", - "solana-native-token 2.2.1", + "solana-native-token", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", "solana-stake-interface", - "solana-sysvar 2.2.1", + "solana-sysvar", "solana-transaction-context", "solana-type-overrides", "solana-vote-interface", @@ -7436,14 +6622,14 @@ dependencies = [ "protobuf-src", "serde", "solana-account-decoder", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash", + "solana-instruction", + "solana-message", + "solana-pubkey", "solana-signature", "solana-transaction", "solana-transaction-context", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status", "tonic-build", ] @@ -7461,34 +6647,34 @@ dependencies = [ "serde_derive", "solana-account", "solana-bpf-loader-program", - "solana-clock 2.2.1", + "solana-clock", "solana-compute-budget", "solana-compute-budget-instruction", "solana-feature-set", "solana-fee-structure", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-instructions-sysvar 2.2.1", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", "solana-loader-v4-program", "solana-log-collector", "solana-measure", - "solana-message 2.2.1", - "solana-nonce 2.2.1", + "solana-message", + "solana-nonce", "solana-nonce-account", "solana-precompiles", - "solana-program 2.2.1", + "solana-program", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", + "solana-pubkey", + "solana-rent", "solana-rent-debits", "solana-reserved-account-keys", "solana-sdk", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-svm-rent-collector", "solana-svm-transaction", "solana-timings", "solana-transaction-context", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-type-overrides", "thiserror 2.0.17", ] @@ -7508,10 +6694,10 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fc4392f0eed412141a376e99dfb052069b96f13697a9abb335504babe29387a" dependencies = [ - "solana-hash 2.2.1", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-hash", + "solana-message", + "solana-pubkey", + "solana-sdk-ids", "solana-signature", "solana-transaction", ] @@ -7527,23 +6713,11 @@ dependencies = [ "serde", "serde_derive", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey", "wasm-bindgen", ] -[[package]] -name = "solana-system-interface" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e1790547bfc3061f1ee68ea9d8dc6c973c02a163697b24263a8e9f2e6d4afa2" -dependencies = [ - "num-traits", - "solana-msg 3.0.0", - "solana-program-error 3.0.0", - "solana-pubkey 3.0.0", -] - [[package]] name = "solana-system-program" version = "2.2.1" @@ -7556,16 +6730,16 @@ dependencies = [ "serde_derive", "solana-account", "solana-bincode", - "solana-instruction 2.2.1", + "solana-instruction", "solana-log-collector", - "solana-nonce 2.2.1", + "solana-nonce", "solana-nonce-account", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-system-interface 1.0.0", - "solana-sysvar 2.2.1", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", "solana-transaction-context", "solana-type-overrides", ] @@ -7576,12 +6750,12 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" dependencies = [ - "solana-hash 2.2.1", + "solana-hash", "solana-keypair", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-pubkey", "solana-signer", - "solana-system-interface 1.0.0", + "solana-system-interface", "solana-transaction", ] @@ -7598,62 +6772,28 @@ dependencies = [ "lazy_static", "serde", "serde_derive", - "solana-account-info 2.2.1", - "solana-clock 2.2.1", - "solana-define-syscall 2.2.1", - "solana-epoch-rewards 2.2.1", - "solana-epoch-schedule 2.2.1", - "solana-fee-calculator 2.2.1", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-instructions-sysvar 2.2.1", - "solana-last-restart-slot 2.2.1", - "solana-program-entrypoint 2.2.1", - "solana-program-error 2.2.2", - "solana-program-memory 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sanitize 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-slot-hashes 2.2.1", - "solana-slot-history 2.2.1", + "solana-account-info", + "solana-clock", + "solana-define-syscall", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", + "solana-last-restart-slot", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", + "solana-rent", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-slot-hashes", + "solana-slot-history", "solana-stake-interface", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-sysvar" -version = "3.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6690d3dd88f15c21edff68eb391ef8800df7a1f5cec84ee3e8d1abf05affdf74" -dependencies = [ - "base64 0.22.1", - "bincode", - "bytemuck", - "bytemuck_derive", - "lazy_static", - "serde", - "serde_derive", - "solana-account-info 3.1.0", - "solana-clock 3.0.0", - "solana-define-syscall 4.0.1", - "solana-epoch-rewards 3.0.0", - "solana-epoch-schedule 3.0.0", - "solana-fee-calculator 3.0.0", - "solana-hash 4.0.1", - "solana-instruction 3.1.0", - "solana-last-restart-slot 3.0.0", - "solana-program-entrypoint 3.1.1", - "solana-program-error 3.0.0", - "solana-program-memory 3.1.0", - "solana-pubkey 4.0.0", - "solana-rent 3.1.0", - "solana-sdk-ids 3.1.0", - "solana-sdk-macro 3.0.0", - "solana-slot-hashes 3.0.0", - "solana-slot-history 3.0.0", - "solana-sysvar-id 3.1.0", + "solana-sysvar-id", ] [[package]] @@ -7662,18 +6802,8 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1" dependencies = [ - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", -] - -[[package]] -name = "solana-sysvar-id" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" -dependencies = [ - "solana-address 2.0.0", - "solana-sdk-ids 3.1.0", + "solana-pubkey", + "solana-sdk-ids", ] [[package]] @@ -7690,7 +6820,7 @@ checksum = "49d9eabdce318cb07c60a23f1cc367b43e177c79225b5c2a081869ad182172ad" dependencies = [ "eager", "enum-iterator", - "solana-pubkey 2.2.1", + "solana-pubkey", ] [[package]] @@ -7704,20 +6834,20 @@ dependencies = [ "serde_derive", "solana-bincode", "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-keypair", - "solana-message 2.2.1", + "solana-message", "solana-precompiles", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-reserved-account-keys", - "solana-sanitize 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-short-vec 2.2.1", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", "solana-signature", "solana-signer", - "solana-system-interface 1.0.0", - "solana-transaction-error 2.2.1", + "solana-system-interface", + "solana-transaction-error", "wasm-bindgen", ] @@ -7731,9 +6861,9 @@ dependencies = [ "serde", "serde_derive", "solana-account", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", + "solana-instruction", + "solana-pubkey", + "solana-rent", "solana-signature", ] @@ -7745,18 +6875,8 @@ checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" dependencies = [ "serde", "serde_derive", - "solana-instruction 2.2.1", - "solana-sanitize 2.2.1", -] - -[[package]] -name = "solana-transaction-error" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4222065402340d7e6aec9dc3e54d22992ddcf923d91edcd815443c2bfca3144a" -dependencies = [ - "solana-instruction-error", - "solana-sanitize 3.0.1", + "solana-instruction", + "solana-sanitize", ] [[package]] @@ -7776,20 +6896,20 @@ dependencies = [ "serde_derive", "serde_json", "solana-account-decoder", - "solana-clock 2.2.1", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-clock", + "solana-hash", + "solana-instruction", "solana-loader-v2-interface", - "solana-message 2.2.1", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-program", + "solana-pubkey", "solana-reserved-account-keys", "solana-reward-info", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-signature", - "solana-system-interface 1.0.0", + "solana-system-interface", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status-client-types", "spl-associated-token-account", "spl-memo", @@ -7814,12 +6934,12 @@ dependencies = [ "serde_json", "solana-account-decoder-client-types", "solana-commitment-config", - "solana-message 2.2.1", + "solana-message", "solana-reward-info", "solana-signature", "solana-transaction", "solana-transaction-context", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 2.0.17", ] @@ -7849,8 +6969,8 @@ dependencies = [ "serde", "serde_derive", "solana-feature-set", - "solana-sanitize 2.2.1", - "solana-serde-varint 2.2.1", + "solana-sanitize", + "solana-serde-varint", ] [[package]] @@ -7864,17 +6984,17 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-clock 2.2.1", + "solana-clock", "solana-decode-error", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-serde-varint 2.2.1", - "solana-serialize-utils 2.2.1", - "solana-short-vec 2.2.1", - "solana-system-interface 1.0.0", + "solana-hash", + "solana-instruction", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-serde-varint", + "solana-serialize-utils", + "solana-short-vec", + "solana-system-interface", ] [[package]] @@ -7891,19 +7011,19 @@ dependencies = [ "serde_derive", "solana-account", "solana-bincode", - "solana-clock 2.2.1", - "solana-epoch-schedule 2.2.1", + "solana-clock", + "solana-epoch-schedule", "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-keypair", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", "solana-signer", - "solana-slot-hashes 2.2.1", + "solana-slot-hashes", "solana-transaction", "solana-transaction-context", "solana-vote-interface", @@ -7934,9 +7054,9 @@ dependencies = [ "serde_json", "sha3", "solana-derivation-path", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", "solana-seed-derivable", "solana-seed-phrase", "solana-signature", @@ -7995,16 +7115,6 @@ dependencies = [ "lock_api", ] -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "spl-associated-token-account" version = "6.0.0" @@ -8014,7 +7124,7 @@ dependencies = [ "borsh 1.6.0", "num-derive", "num-traits", - "solana-program 2.2.1", + "solana-program", "spl-associated-token-account-client", "spl-token", "spl-token-2022 6.0.0", @@ -8027,8 +7137,8 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6f8349dbcbe575f354f9a533a21f272f3eb3808a49e2fdc1c34393b88ba76cb" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey", ] [[package]] @@ -8038,8 +7148,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7398da23554a31660f17718164e31d31900956054f54f52d5ec1be51cb4f4b3" dependencies = [ "bytemuck", - "solana-program-error 2.2.2", - "solana-sha256-hasher 2.2.1", + "solana-program-error", + "solana-sha256-hasher", "spl-discriminator-derive", ] @@ -8074,7 +7184,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce0f668975d2b0536e8a8fd60e56a05c467f06021dae037f1d0cfed0de2e231d" dependencies = [ "bytemuck", - "solana-program 2.2.1", + "solana-program", "solana-zk-sdk", "spl-pod", "spl-token-confidential-transfer-proof-extraction", @@ -8086,12 +7196,12 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f09647c0974e33366efeb83b8e2daebb329f0420149e74d3a4bd2c08cf9f7cb" dependencies = [ - "solana-account-info 2.2.1", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-entrypoint 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-account-info", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-pubkey", ] [[package]] @@ -8106,10 +7216,10 @@ dependencies = [ "num-derive", "num-traits", "solana-decode-error", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-program-option 2.2.1", - "solana-pubkey 2.2.1", + "solana-msg", + "solana-program-error", + "solana-program-option", + "solana-pubkey", "solana-zk-sdk", "thiserror 2.0.17", ] @@ -8122,7 +7232,7 @@ checksum = "9d39b5186f42b2b50168029d81e58e800b690877ef0b30580d107659250da1d1" dependencies = [ "num-derive", "num-traits", - "solana-program 2.2.1", + "solana-program", "spl-program-error-derive", "thiserror 1.0.69", ] @@ -8148,12 +7258,12 @@ dependencies = [ "bytemuck", "num-derive", "num-traits", - "solana-account-info 2.2.1", + "solana-account-info", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", "spl-discriminator", "spl-pod", "spl-program-error", @@ -8172,7 +7282,7 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-program 2.2.1", + "solana-program", "thiserror 1.0.69", ] @@ -8187,7 +7297,7 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-program 2.2.1", + "solana-program", "solana-security-txt", "solana-zk-sdk", "spl-elgamal-registry", @@ -8215,7 +7325,7 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-program 2.2.1", + "solana-program", "solana-security-txt", "solana-zk-sdk", "spl-elgamal-registry", @@ -8252,7 +7362,7 @@ checksum = "eff2d6a445a147c9d6dd77b8301b1e116c8299601794b558eafa409b342faf96" dependencies = [ "bytemuck", "solana-curve25519", - "solana-program 2.2.1", + "solana-program", "solana-zk-sdk", "spl-pod", "thiserror 2.0.17", @@ -8290,10 +7400,10 @@ dependencies = [ "num-derive", "num-traits", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", "spl-discriminator", "spl-pod", "thiserror 1.0.69", @@ -8308,12 +7418,12 @@ dependencies = [ "borsh 1.6.0", "num-derive", "num-traits", - "solana-borsh 2.2.1", + "solana-borsh", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", "spl-discriminator", "spl-pod", "spl-type-length-value", @@ -8330,13 +7440,13 @@ dependencies = [ "bytemuck", "num-derive", "num-traits", - "solana-account-info 2.2.1", - "solana-cpi 2.2.1", + "solana-account-info", + "solana-cpi", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", "spl-discriminator", "spl-pod", "spl-program-error", @@ -8354,10 +7464,10 @@ dependencies = [ "bytemuck", "num-derive", "num-traits", - "solana-account-info 2.2.1", + "solana-account-info", "solana-decode-error", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", + "solana-msg", + "solana-program-error", "spl-discriminator", "spl-pod", "thiserror 1.0.69", @@ -8411,6 +7521,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "subtle" version = "2.6.1" @@ -8535,9 +7666,9 @@ dependencies = [ "magicblock-ledger", "magicblock-processor", "solana-account", - "solana-instruction 2.2.1", + "solana-instruction", "solana-keypair", - "solana-program 2.2.1", + "solana-program", "solana-rpc-client", "solana-signature", "solana-signer", diff --git a/Cargo.toml b/Cargo.toml index 8e1c61281..ab48411ed 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -82,7 +82,7 @@ lazy_static = "1.4.0" libc = "0.2.153" log = { version = "0.4.20" } lru = "0.16.0" -magic-domain-program = { git = "https://github.com/magicblock-labs/magic-domain-program.git", rev = "ea04d46", default-features = false } +magic-domain-program = { git = "https://github.com/magicblock-labs/magic-domain-program.git", rev = "cffcfeb", default-features = false, features = ["modular-sdk"] } magicblock-account-cloner = { path = "./magicblock-account-cloner" } magicblock-accounts = { path = "./magicblock-accounts" } magicblock-accounts-db = { path = "./magicblock-accounts-db" } @@ -95,8 +95,8 @@ magicblock-committor-program = { path = "./magicblock-committor-program", featur magicblock-committor-service = { path = "./magicblock-committor-service" } magicblock-config = { path = "./magicblock-config" } magicblock-core = { path = "./magicblock-core" } -magicblock-delegation-program = { git = "https://github.com/magicblock-labs/delegation-program.git", rev = "aa1de56d90c", features = [ - "no-entrypoint", +magicblock-delegation-program = { git = "https://github.com/magicblock-labs/delegation-program.git", rev = "1bcaf4d", default-features = false, features = [ + "sdk", ] } magicblock-ledger = { path = "./magicblock-ledger" } magicblock-magic-program-api = { path = "./magicblock-magic-program-api" } diff --git a/test-integration/Cargo.lock b/test-integration/Cargo.lock index 1d38b2482..d7c0ff4b3 100644 --- a/test-integration/Cargo.lock +++ b/test-integration/Cargo.lock @@ -69,12 +69,12 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aba2aec0682aa448f93db9b93df8fb331c119cb4d66fe9ba61d6b42dd3a91105" dependencies = [ - "solana-hash 2.2.1", - "solana-message 2.2.1", + "solana-hash", + "solana-message", "solana-packet", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-short-vec 2.2.1", + "solana-pubkey", + "solana-sdk-ids", + "solana-short-vec", "solana-signature", "solana-svm-transaction", ] @@ -489,12 +489,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - [[package]] name = "base64" version = "0.12.3" @@ -521,9 +515,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.8.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bincode" @@ -1051,12 +1045,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - [[package]] name = "constant_time_eq" version = "0.3.1" @@ -1156,18 +1144,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - [[package]] name = "crypto-common" version = "0.1.7" @@ -1306,16 +1282,6 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" -[[package]] -name = "der" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" -dependencies = [ - "const-oid", - "zeroize", -] - [[package]] name = "der-parser" version = "8.2.0" @@ -1402,7 +1368,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer 0.10.4", - "const-oid", "crypto-common", "subtle", ] @@ -1480,27 +1445,13 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "abe71d579d1812060163dff96056261deb5bf6729b100fa2e36a68b9649ba3d3" -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest 0.10.7", - "elliptic-curve", - "rfc6979", - "signature 2.2.0", - "spki", -] - [[package]] name = "ed25519" version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ - "signature 1.6.4", + "signature", ] [[package]] @@ -1547,25 +1498,6 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest 0.10.7", - "ff", - "generic-array", - "group", - "pkcs8", - "rand_core 0.6.4", - "sec1", - "subtle", - "zeroize", -] - [[package]] name = "encode_unicode" version = "1.0.0" @@ -1652,22 +1584,42 @@ dependencies = [ [[package]] name = "ephemeral-rollups-sdk" -version = "0.3.4" -source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=2d0f16b#2d0f16bf18a8618dcac07a8dc271dd3a30096c7c" +version = "0.6.5" +source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=36f9485#36f94850e7763a1f02bf5ec36e1f2e8691dec8f8" dependencies = [ + "base64ct", "borsh 1.6.0", + "ephemeral-rollups-sdk-attribute-action", "ephemeral-rollups-sdk-attribute-commit", "ephemeral-rollups-sdk-attribute-delegate", "ephemeral-rollups-sdk-attribute-ephemeral", - "magicblock-delegation-program", - "magicblock-magic-program-api 0.2.3", - "solana-program 3.0.0", + "getrandom 0.2.16", + "magicblock-delegation-program 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "magicblock-magic-program-api 0.3.1", + "solana-account", + "solana-account-info", + "solana-cpi", + "solana-instruction", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", + "solana-system-interface", + "solana-sysvar", +] + +[[package]] +name = "ephemeral-rollups-sdk-attribute-action" +version = "0.6.5" +source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=36f9485#36f94850e7763a1f02bf5ec36e1f2e8691dec8f8" +dependencies = [ + "quote", + "syn 1.0.109", ] [[package]] name = "ephemeral-rollups-sdk-attribute-commit" -version = "0.3.4" -source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=2d0f16b#2d0f16bf18a8618dcac07a8dc271dd3a30096c7c" +version = "0.6.5" +source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=36f9485#36f94850e7763a1f02bf5ec36e1f2e8691dec8f8" dependencies = [ "quote", "syn 1.0.109", @@ -1675,8 +1627,8 @@ dependencies = [ [[package]] name = "ephemeral-rollups-sdk-attribute-delegate" -version = "0.3.4" -source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=2d0f16b#2d0f16bf18a8618dcac07a8dc271dd3a30096c7c" +version = "0.6.5" +source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=36f9485#36f94850e7763a1f02bf5ec36e1f2e8691dec8f8" dependencies = [ "proc-macro2", "quote", @@ -1685,8 +1637,8 @@ dependencies = [ [[package]] name = "ephemeral-rollups-sdk-attribute-ephemeral" -version = "0.3.4" -source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=2d0f16b#2d0f16bf18a8618dcac07a8dc271dd3a30096c7c" +version = "0.6.5" +source = "git+https://github.com/magicblock-labs/ephemeral-rollups-sdk.git?rev=36f9485#36f94850e7763a1f02bf5ec36e1f2e8691dec8f8" dependencies = [ "proc-macro2", "quote", @@ -1815,16 +1767,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" -[[package]] -name = "ff" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "fiat-crypto" version = "0.2.9" @@ -1863,31 +1805,13 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" -[[package]] -name = "five8" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23f76610e969fa1784327ded240f1e28a3fd9520c9cec93b636fcf62dd37f772" -dependencies = [ - "five8_core 1.0.0", -] - [[package]] name = "five8_const" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26dec3da8bc3ef08f2c04f61eab298c3ab334523e55f076354d6d6f613799a7b" dependencies = [ - "five8_core 0.1.2", -] - -[[package]] -name = "five8_const" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a0f1728185f277989ca573a402716ae0beaaea3f76a8ff87ef9dd8fb19436c5" -dependencies = [ - "five8_core 1.0.0", + "five8_core", ] [[package]] @@ -1896,12 +1820,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2551bf44bc5f776c15044b9b94153a00198be06743e262afaaa61f11ac7523a5" -[[package]] -name = "five8_core" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "059c31d7d36c43fe39d89e55711858b4da8be7eb6dabac23c7289b1a19489406" - [[package]] name = "fixedbitset" version = "0.4.2" @@ -2106,7 +2024,6 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", - "zeroize", ] [[package]] @@ -2211,17 +2128,6 @@ dependencies = [ "spinning_top", ] -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "guinea" version = "0.4.2" @@ -2229,7 +2135,7 @@ dependencies = [ "bincode", "magicblock-magic-program-api 0.4.2", "serde", - "solana-program 2.2.1", + "solana-program", ] [[package]] @@ -2802,11 +2708,11 @@ dependencies = [ "log", "magicblock-config", "magicblock-core", - "magicblock-delegation-program", + "magicblock-delegation-program 1.1.3 (git+https://github.com/magicblock-labs/delegation-program.git?rev=1bcaf4d)", "random-port", "rayon", "serde", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", @@ -2953,20 +2859,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "k256" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" -dependencies = [ - "cfg-if", - "ecdsa", - "elliptic-curve", - "once_cell", - "sha2 0.10.9", - "signature 2.2.0", -] - [[package]] name = "keccak" version = "0.1.5" @@ -3210,12 +3102,13 @@ dependencies = [ [[package]] name = "magic-domain-program" -version = "0.0.1" -source = "git+https://github.com/magicblock-labs/magic-domain-program.git?rev=ea04d46#ea04d4646ede8e19307683d288e582bf60a3547a" +version = "0.2.0" +source = "git+https://github.com/magicblock-labs/magic-domain-program.git?rev=cffcfeb#cffcfeb8290697dbc63b19ef48e6bc8cd844f10f" dependencies = [ "borsh 1.6.0", "bytemuck_derive", - "solana-program 3.0.0", + "solana-program", + "solana-system-interface", ] [[package]] @@ -3236,15 +3129,15 @@ dependencies = [ "magicblock-rpc-client", "rand 0.9.2", "solana-account", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-loader-v3-interface 3.0.0", "solana-loader-v4-interface", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", "solana-signature", "solana-signer", - "solana-sysvar 2.2.1", + "solana-sysvar", "solana-transaction", "thiserror 1.0.69", "tokio", @@ -3262,10 +3155,10 @@ dependencies = [ "magicblock-committor-service", "magicblock-core", "magicblock-program", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash", + "solana-pubkey", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 1.0.69", "tokio", "tokio-util 0.7.17", @@ -3284,7 +3177,7 @@ dependencies = [ "parking_lot", "reflink-copy", "solana-account", - "solana-pubkey 2.2.1", + "solana-pubkey", "thiserror 1.0.69", ] @@ -3320,13 +3213,13 @@ dependencies = [ "solana-fee", "solana-fee-structure", "solana-keypair", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-pubkey", "solana-rpc-client-api", "solana-signature", "solana-system-transaction", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status", "sonic-rs", "tokio", @@ -3360,29 +3253,29 @@ dependencies = [ "num_cpus", "paste", "solana-account", - "solana-clock 2.2.1", + "solana-clock", "solana-commitment-config", "solana-feature-gate-interface", "solana-feature-set", - "solana-fee-calculator 2.2.1", + "solana-fee-calculator", "solana-genesis-config", - "solana-hash 2.2.1", + "solana-hash", "solana-inline-spl", - "solana-instruction 2.2.1", + "solana-instruction", "solana-keypair", - "solana-message 2.2.1", - "solana-native-token 2.2.1", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", + "solana-message", + "solana-native-token", + "solana-program", + "solana-pubkey", + "solana-rent", "solana-rpc-client", - "solana-sha256-hasher 2.2.1", + "solana-sha256-hasher", "solana-signature", "solana-signer", "solana-system-program", - "solana-sysvar 2.2.1", + "solana-sysvar", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 1.0.69", "tokio", "tokio-util 0.7.17", @@ -3401,34 +3294,34 @@ dependencies = [ "lru", "magicblock-config", "magicblock-core", - "magicblock-delegation-program", + "magicblock-delegation-program 1.1.3 (git+https://github.com/magicblock-labs/delegation-program.git?rev=1bcaf4d)", "magicblock-magic-program-api 0.4.2", "magicblock-metrics", "solana-account", "solana-account-decoder", "solana-account-decoder-client-types", - "solana-address-lookup-table-interface 2.2.2", - "solana-clock 2.2.1", + "solana-address-lookup-table-interface", + "solana-clock", "solana-commitment-config", "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-keypair", "solana-loader-v3-interface 3.0.0", "solana-loader-v4-interface", - "solana-message 2.2.1", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-program", + "solana-pubkey", "solana-pubsub-client", "solana-rpc-client", "solana-rpc-client-api", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-signature", "solana-signer", - "solana-system-interface 1.0.0", - "solana-sysvar 2.2.1", + "solana-system-interface", + "solana-sysvar", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "spl-token", "spl-token-2022 7.0.0", "thiserror 1.0.69", @@ -3444,8 +3337,8 @@ dependencies = [ "borsh 1.6.0", "paste", "solana-account", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", + "solana-program", + "solana-pubkey", "thiserror 1.0.69", ] @@ -3462,29 +3355,29 @@ dependencies = [ "log", "lru", "magicblock-committor-program", - "magicblock-delegation-program", + "magicblock-delegation-program 1.1.3 (git+https://github.com/magicblock-labs/delegation-program.git?rev=1bcaf4d)", "magicblock-metrics", "magicblock-program", "magicblock-rpc-client", "magicblock-table-mania", "rusqlite", "solana-account", - "solana-address-lookup-table-interface 2.2.2", + "solana-address-lookup-table-interface", "solana-commitment-config", "solana-compute-budget-interface", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-keypair", - "solana-message 2.2.1", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-program", + "solana-pubkey", "solana-rpc-client", "solana-rpc-client-api", "solana-signature", "solana-signer", "solana-system-program", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status-client-types", "static_assertions", "thiserror 1.0.69", @@ -3504,7 +3397,7 @@ dependencies = [ "serde", "serde_with", "solana-keypair", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-signer", "toml 0.8.23", "url", @@ -3518,13 +3411,13 @@ dependencies = [ "magicblock-magic-program-api 0.4.2", "solana-account", "solana-account-decoder", - "solana-hash 2.2.1", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash", + "solana-program", + "solana-pubkey", "solana-signature", "solana-transaction", "solana-transaction-context", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "spl-token", "spl-token-2022 7.0.0", "tokio", @@ -3532,21 +3425,29 @@ dependencies = [ [[package]] name = "magicblock-delegation-program" -version = "1.1.0" -source = "git+https://github.com/magicblock-labs/delegation-program.git?rev=aa1de56d90c#aa1de56d90c8a242377accd59899f272f0131f8c" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0e25f9e37194cc27c0f1d3dbc00e83795f7f4012f1a99c20bc557bdeb62e13e" +dependencies = [ + "borsh 1.6.0", + "bytemuck", + "num_enum", + "solana-program", + "static_assertions", +] + +[[package]] +name = "magicblock-delegation-program" +version = "1.1.3" +source = "git+https://github.com/magicblock-labs/delegation-program.git?rev=1bcaf4d#1bcaf4d462d9414d543bfdf693130561a87d4af8" dependencies = [ "bincode", "borsh 1.6.0", "bytemuck", "num_enum", - "paste", - "pinocchio", - "pinocchio-log", - "pinocchio-pubkey", - "pinocchio-system", - "solana-curve25519", - "solana-program 2.2.1", - "solana-security-txt", + "solana-program", + "static_assertions", + "strum 0.27.2", "thiserror 1.0.69", ] @@ -3569,20 +3470,20 @@ dependencies = [ "scc", "serde", "solana-account-decoder", - "solana-clock 2.2.1", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-clock", + "solana-hash", + "solana-instruction", "solana-keypair", "solana-measure", - "solana-message 2.2.1", + "solana-message", "solana-metrics", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-signature", "solana-signer", "solana-storage-proto", "solana-transaction", "solana-transaction-context", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status", "thiserror 1.0.69", "tokio", @@ -3591,13 +3492,13 @@ dependencies = [ [[package]] name = "magicblock-magic-program-api" -version = "0.2.3" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1076e02cb9260b2400e8b7b21d6c5839e6054a0f5b9d75378811c66fa04d8d40" +checksum = "ce6ec80d63618a71bb4db324ec5fdca8f85552d0469a51aa063d290256d425f5" dependencies = [ "bincode", "serde", - "solana-program 3.0.0", + "solana-program", ] [[package]] @@ -3606,7 +3507,7 @@ version = "0.4.2" dependencies = [ "bincode", "serde", - "solana-program 2.2.1", + "solana-program", ] [[package]] @@ -3643,16 +3544,16 @@ dependencies = [ "solana-fee", "solana-fee-structure", "solana-loader-v4-program", - "solana-program 2.2.1", + "solana-program", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-rent-collector", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-svm 2.2.1 (git+https://github.com/magicblock-labs/magicblock-svm.git?rev=3e9456ec4)", "solana-svm-transaction", "solana-system-program", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status", "tokio", ] @@ -3670,20 +3571,20 @@ dependencies = [ "parking_lot", "serde", "solana-account", - "solana-account-info 2.2.1", - "solana-clock 2.2.1", - "solana-fee-calculator 2.2.1", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-account-info", + "solana-clock", + "solana-fee-calculator", + "solana-hash", + "solana-instruction", "solana-keypair", "solana-log-collector", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", "solana-seed-derivable", "solana-signature", "solana-signer", - "solana-sysvar 2.2.1", + "solana-sysvar", "solana-transaction", "solana-transaction-context", "thiserror 1.0.69", @@ -3695,16 +3596,16 @@ version = "0.4.2" dependencies = [ "log", "solana-account", - "solana-address-lookup-table-interface 2.2.2", - "solana-clock 2.2.1", + "solana-address-lookup-table-interface", + "solana-clock", "solana-commitment-config", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash", + "solana-instruction", + "solana-pubkey", "solana-rpc-client", "solana-rpc-client-api", "solana-signature", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status-client-types", "thiserror 1.0.69", "tokio", @@ -3720,17 +3621,17 @@ dependencies = [ "magicblock-rpc-client", "rand 0.9.2", "sha3", - "solana-address-lookup-table-interface 2.2.2", - "solana-clock 2.2.1", + "solana-address-lookup-table-interface", + "solana-clock", "solana-commitment-config", "solana-compute-budget-interface", - "solana-instruction 2.2.1", + "solana-instruction", "solana-keypair", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-pubkey", "solana-signature", "solana-signer", - "solana-slot-hashes 2.2.1", + "solana-slot-hashes", "solana-transaction", "thiserror 1.0.69", "tokio", @@ -3749,15 +3650,15 @@ dependencies = [ "magicblock-ledger", "magicblock-program", "rusqlite", - "solana-instruction 2.2.1", - "solana-message 2.2.1", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-message", + "solana-program", + "solana-pubkey", "solana-pubsub-client", "solana-rpc-client-api", "solana-signature", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 1.0.69", "tokio", "tokio-util 0.7.17", @@ -3768,7 +3669,7 @@ name = "magicblock-validator-admin" version = "0.4.2" dependencies = [ "log", - "magicblock-delegation-program", + "magicblock-delegation-program 1.1.3 (git+https://github.com/magicblock-labs/delegation-program.git?rev=1bcaf4d)", "magicblock-program", "magicblock-rpc-client", "solana-commitment-config", @@ -3791,7 +3692,7 @@ dependencies = [ "solana-feature-set", "solana-frozen-abi-macro", "solana-rpc-client-api", - "solana-sanitize 2.2.1", + "solana-sanitize", ] [[package]] @@ -4428,63 +4329,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "pinocchio" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b971851087bc3699b001954ad02389d50c41405ece3548cbcafc88b3e20017a" - -[[package]] -name = "pinocchio-log" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd11022408f312e6179ece321c1f7dc0d1b2aa7765fddd39b2a7378d65a899e8" -dependencies = [ - "pinocchio-log-macro", -] - -[[package]] -name = "pinocchio-log-macro" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69fb52edb3c5736b044cc462b0957b9767d0f574d138f4e2761438c498a4b467" -dependencies = [ - "quote", - "regex", - "syn 1.0.109", -] - -[[package]] -name = "pinocchio-pubkey" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0225638cadcbebae8932cb7f49cb5da7c15c21beb19f048f05a5ca7d93f065" -dependencies = [ - "five8_const 0.1.4", - "pinocchio", - "sha2-const-stable", -] - -[[package]] -name = "pinocchio-system" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "141ed5eafb4ab04568bb0e224e3dc9a9de13c933de4c004e0d1a553498be3a7c" -dependencies = [ - "pinocchio", - "pinocchio-pubkey", -] - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "pkg-config" version = "0.3.32" @@ -4652,18 +4496,18 @@ dependencies = [ "ephemeral-rollups-sdk", "magicblock-magic-program-api 0.4.2", "serde", - "solana-program 2.2.1", + "solana-program", ] [[package]] name = "program-mini" version = "0.0.0" dependencies = [ - "solana-program 2.2.1", + "solana-program", "solana-program-test", "solana-sdk", - "solana-sdk-ids 2.2.1", - "solana-system-interface 1.0.0", + "solana-sdk-ids", + "solana-system-interface", "tokio", ] @@ -4673,9 +4517,9 @@ version = "0.0.0" dependencies = [ "borsh 1.6.0", "ephemeral-rollups-sdk", - "magicblock-delegation-program", + "magicblock-delegation-program 1.1.3 (git+https://github.com/magicblock-labs/delegation-program.git?rev=1bcaf4d)", "magicblock-magic-program-api 0.4.2", - "solana-program 2.2.1", + "solana-program", ] [[package]] @@ -4685,7 +4529,7 @@ dependencies = [ "borsh 1.6.0", "ephemeral-rollups-sdk", "program-schedulecommit", - "solana-program 2.2.1", + "solana-program", ] [[package]] @@ -5201,16 +5045,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac 0.12.1", - "subtle", -] - [[package]] name = "ring" version = "0.17.14" @@ -5493,9 +5327,9 @@ dependencies = [ "integration-test-tools", "log", "magicblock-core", - "magicblock-delegation-program", + "magicblock-delegation-program 1.1.3 (git+https://github.com/magicblock-labs/delegation-program.git?rev=1bcaf4d)", "program-schedulecommit", - "solana-program 2.2.1", + "solana-program", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", @@ -5511,14 +5345,14 @@ dependencies = [ "log", "magicblock-committor-program", "magicblock-committor-service", - "magicblock-delegation-program", + "magicblock-delegation-program 1.1.3 (git+https://github.com/magicblock-labs/delegation-program.git?rev=1bcaf4d)", "magicblock-program", "magicblock-rpc-client", "magicblock-table-mania", "program-flexi-counter", "rand 0.8.5", "solana-account", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", @@ -5537,7 +5371,7 @@ dependencies = [ "magicblock-magic-program-api 0.4.2", "program-schedulecommit", "schedulecommit-client", - "solana-program 2.2.1", + "solana-program", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", @@ -5604,20 +5438,6 @@ version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca" -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - [[package]] name = "security-framework" version = "3.5.1" @@ -5831,12 +5651,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "sha2-const-stable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" - [[package]] name = "sha3" version = "0.10.8" @@ -5877,16 +5691,6 @@ version = "1.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - [[package]] name = "simd-adler32" version = "0.3.8" @@ -5963,12 +5767,12 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-account-info 2.2.1", - "solana-clock 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sysvar 2.2.1", + "solana-account-info", + "solana-clock", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-sysvar", ] [[package]] @@ -5988,20 +5792,20 @@ dependencies = [ "serde_json", "solana-account", "solana-account-decoder-client-types", - "solana-clock 2.2.1", + "solana-clock", "solana-config-program", - "solana-epoch-schedule 2.2.1", - "solana-fee-calculator 2.2.1", - "solana-instruction 2.2.1", - "solana-nonce 2.2.1", - "solana-program 2.2.1", - "solana-program-pack 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-slot-hashes 2.2.1", - "solana-slot-history 2.2.1", - "solana-sysvar 2.2.1", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-instruction", + "solana-nonce", + "solana-program", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-slot-history", + "solana-sysvar", "spl-token", "spl-token-2022 7.0.0", "spl-token-group-interface", @@ -6022,7 +5826,7 @@ dependencies = [ "serde_derive", "serde_json", "solana-account", - "solana-pubkey 2.2.1", + "solana-pubkey", "zstd", ] @@ -6034,22 +5838,9 @@ checksum = "e0c17d606a298a205fae325489fbed88ee6dc4463c111672172327e741c8905d" dependencies = [ "bincode", "serde", - "solana-program-error 2.2.2", - "solana-program-memory 2.2.1", - "solana-pubkey 2.2.1", -] - -[[package]] -name = "solana-account-info" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc3397241392f5756925029acaa8515dc70fcbe3d8059d4885d7d6533baf64fd" -dependencies = [ - "bincode", - "serde_core", - "solana-address 2.0.0", - "solana-program-error 3.0.0", - "solana-program-memory 3.1.0", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", ] [[package]] @@ -6084,14 +5875,14 @@ dependencies = [ "serde_derive", "smallvec", "solana-bucket-map", - "solana-clock 2.2.1", - "solana-hash 2.2.1", + "solana-clock", + "solana-hash", "solana-inline-spl", "solana-lattice-hash", "solana-measure", "solana-metrics", "solana-nohash-hasher", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-rayon-threadlimit", "solana-sdk", "solana-svm-transaction", @@ -6101,36 +5892,6 @@ dependencies = [ "thiserror 2.0.17", ] -[[package]] -name = "solana-address" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" -dependencies = [ - "solana-address 2.0.0", -] - -[[package]] -name = "solana-address" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e37320fd2945c5d654b2c6210624a52d66c3f1f73b653ed211ab91a703b35bdd" -dependencies = [ - "borsh 1.6.0", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek 4.1.3", - "five8", - "five8_const 1.0.0", - "serde", - "serde_derive", - "solana-atomic-u64 3.0.0", - "solana-define-syscall 4.0.1", - "solana-program-error 3.0.0", - "solana-sanitize 3.0.1", - "solana-sha256-hasher 3.1.0", -] - [[package]] name = "solana-address-lookup-table-interface" version = "2.2.2" @@ -6141,23 +5902,11 @@ dependencies = [ "bytemuck", "serde", "serde_derive", - "solana-clock 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-slot-hashes 2.2.1", -] - -[[package]] -name = "solana-address-lookup-table-interface" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2f56cac5e70517a2f27d05e5100b20de7182473ffd0035b23ea273307905987" -dependencies = [ - "solana-clock 3.0.0", - "solana-pubkey 3.0.0", - "solana-sdk-ids 3.1.0", - "solana-slot-hashes 3.0.0", + "solana-clock", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-slot-hashes", ] [[package]] @@ -6171,16 +5920,16 @@ dependencies = [ "log", "num-derive", "num-traits", - "solana-address-lookup-table-interface 2.2.2", + "solana-address-lookup-table-interface", "solana-bincode", - "solana-clock 2.2.1", + "solana-clock", "solana-feature-set", - "solana-instruction 2.2.1", + "solana-instruction", "solana-log-collector", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-system-interface 1.0.0", + "solana-pubkey", + "solana-system-interface", "solana-transaction-context", "thiserror 2.0.17", ] @@ -6194,15 +5943,6 @@ dependencies = [ "parking_lot", ] -[[package]] -name = "solana-atomic-u64" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a933ff1e50aff72d02173cfcd7511bd8540b027ee720b75f353f594f834216d0" -dependencies = [ - "parking_lot", -] - [[package]] name = "solana-banks-client" version = "2.2.1" @@ -6212,7 +5952,7 @@ dependencies = [ "borsh 1.6.0", "futures", "solana-banks-interface", - "solana-program 2.2.1", + "solana-program", "solana-sdk", "tarpc", "thiserror 2.0.17", @@ -6262,18 +6002,7 @@ checksum = "75db7f2bbac3e62cfd139065d15bcda9e2428883ba61fc8d27ccb251081e7567" dependencies = [ "num-bigint 0.4.6", "num-traits", - "solana-define-syscall 2.2.1", -] - -[[package]] -name = "solana-big-mod-exp" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c80fb6d791b3925d5ec4bf23a7c169ef5090c013059ec3ed7d0b2c04efa085" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "solana-define-syscall 3.0.0", + "solana-define-syscall", ] [[package]] @@ -6284,7 +6013,7 @@ checksum = "19a3787b8cf9c9fe3dd360800e8b70982b9e5a8af9e11c354b6665dd4a003adc" dependencies = [ "bincode", "serde", - "solana-instruction 2.2.1", + "solana-instruction", ] [[package]] @@ -6294,20 +6023,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1a0801e25a1b31a14494fc80882a036be0ffd290efc4c2d640bfcca120a4672" dependencies = [ "blake3", - "solana-define-syscall 2.2.1", - "solana-hash 2.2.1", - "solana-sanitize 2.2.1", -] - -[[package]] -name = "solana-blake3-hasher" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7116e1d942a2432ca3f514625104757ab8a56233787e95144c93950029e31176" -dependencies = [ - "blake3", - "solana-define-syscall 4.0.1", - "solana-hash 4.0.1", + "solana-define-syscall", + "solana-hash", + "solana-sanitize", ] [[package]] @@ -6321,7 +6039,7 @@ dependencies = [ "ark-ff", "ark-serialize", "bytemuck", - "solana-define-syscall 2.2.1", + "solana-define-syscall", "thiserror 2.0.17", ] @@ -6335,15 +6053,6 @@ dependencies = [ "borsh 1.6.0", ] -[[package]] -name = "solana-borsh" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc402b16657abbfa9991cd5cbfac5a11d809f7e7d28d3bb291baeb088b39060e" -dependencies = [ - "borsh 1.6.0", -] - [[package]] name = "solana-bpf-loader-program" version = "2.2.1" @@ -6355,19 +6064,19 @@ dependencies = [ "qualifier_attr", "scopeguard", "solana-account", - "solana-account-info 2.2.1", - "solana-big-mod-exp 2.2.1", + "solana-account-info", + "solana-big-mod-exp", "solana-bincode", - "solana-blake3-hasher 2.2.1", + "solana-blake3-hasher", "solana-bn254", - "solana-clock 2.2.1", + "solana-clock", "solana-compute-budget", - "solana-cpi 2.2.1", + "solana-cpi", "solana-curve25519", "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-keccak-hasher 2.2.1", + "solana-hash", + "solana-instruction", + "solana-keccak-hasher", "solana-loader-v3-interface 3.0.0", "solana-loader-v4-interface", "solana-log-collector", @@ -6375,18 +6084,18 @@ dependencies = [ "solana-packet", "solana-poseidon", "solana-precompiles", - "solana-program-entrypoint 2.2.1", - "solana-program-memory 2.2.1", + "solana-program-entrypoint", + "solana-program-memory", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-sbpf", - "solana-sdk-ids 2.2.1", - "solana-secp256k1-recover 2.2.1", - "solana-sha256-hasher 2.2.1", - "solana-stable-layout 2.2.1", - "solana-system-interface 1.0.0", - "solana-sysvar 2.2.1", - "solana-sysvar-id 2.2.1", + "solana-sdk-ids", + "solana-secp256k1-recover", + "solana-sha256-hasher", + "solana-stable-layout", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", "solana-timings", "solana-transaction-context", "solana-type-overrides", @@ -6407,9 +6116,9 @@ dependencies = [ "modular-bitfield", "num_enum", "rand 0.8.5", - "solana-clock 2.2.1", + "solana-clock", "solana-measure", - "solana-pubkey 2.2.1", + "solana-pubkey", "tempfile", ] @@ -6426,8 +6135,8 @@ dependencies = [ "solana-feature-set", "solana-loader-v4-program", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", "solana-stake-program", "solana-system-program", "solana-vote-program", @@ -6451,8 +6160,8 @@ dependencies = [ "solana-config-program", "solana-feature-set", "solana-loader-v4-program", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", "solana-stake-program", "solana-system-program", "solana-vote-program", @@ -6479,12 +6188,12 @@ dependencies = [ "solana-commitment-config", "solana-connection-cache", "solana-epoch-info", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-keypair", "solana-measure", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-pubkey", "solana-pubsub-client", "solana-quic-client", "solana-quic-definitions", @@ -6498,7 +6207,7 @@ dependencies = [ "solana-time-utils", "solana-tpu-client", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-udp-client", "thiserror 2.0.17", "tokio", @@ -6513,16 +6222,16 @@ dependencies = [ "solana-account", "solana-commitment-config", "solana-epoch-info", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-keypair", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-pubkey", "solana-signature", "solana-signer", - "solana-system-interface 1.0.0", + "solana-system-interface", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", ] [[package]] @@ -6533,22 +6242,9 @@ checksum = "67c2177a1b9fe8326004f1151a5acd124420b737811080b1035df31349e4d892" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-clock" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb62e9381182459a4520b5fe7fb22d423cae736239a6427fc398a88743d0ed59" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-ids 3.1.0", - "solana-sdk-macro 3.0.0", - "solana-sysvar-id 3.1.0", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", ] [[package]] @@ -6559,7 +6255,7 @@ checksum = "7ace9fea2daa28354d107ea879cff107181d85cd4e0f78a2bedb10e1a428c97e" dependencies = [ "serde", "serde_derive", - "solana-hash 2.2.1", + "solana-hash", ] [[package]] @@ -6579,7 +6275,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eab40b24943ca51f1214fcf7979807640ea82a8387745f864cf3cd93d1337b01" dependencies = [ "solana-fee-structure", - "solana-program-entrypoint 2.2.1", + "solana-program-entrypoint", ] [[package]] @@ -6589,17 +6285,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6ef2a514cde8dce77495aefd23671dc46f638f504765910424436bc745dc04" dependencies = [ "log", - "solana-borsh 2.2.1", + "solana-borsh", "solana-builtins-default-costs", "solana-compute-budget", "solana-compute-budget-interface", "solana-feature-set", - "solana-instruction 2.2.1", + "solana-instruction", "solana-packet", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", "solana-svm-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 2.0.17", ] @@ -6612,8 +6308,8 @@ dependencies = [ "borsh 1.6.0", "serde", "serde_derive", - "solana-instruction 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-instruction", + "solana-sdk-ids", ] [[package]] @@ -6638,15 +6334,15 @@ dependencies = [ "serde_derive", "solana-account", "solana-bincode", - "solana-instruction 2.2.1", + "solana-instruction", "solana-log-collector", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-short-vec 2.2.1", + "solana-pubkey", + "solana-sdk-ids", + "solana-short-vec", "solana-stake-interface", - "solana-system-interface 1.0.0", + "solana-system-interface", "solana-transaction-context", ] @@ -6669,7 +6365,7 @@ dependencies = [ "solana-metrics", "solana-net-utils", "solana-time-utils", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 2.0.17", "tokio", ] @@ -6684,9 +6380,9 @@ dependencies = [ "lazy_static", "log", "solana-bincode", - "solana-borsh 2.2.1", + "solana-borsh", "solana-builtins-default-costs", - "solana-clock 2.2.1", + "solana-clock", "solana-compute-budget", "solana-compute-budget-instruction", "solana-compute-budget-interface", @@ -6694,12 +6390,12 @@ dependencies = [ "solana-fee-structure", "solana-metrics", "solana-packet", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-runtime-transaction", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-svm-transaction", - "solana-system-interface 1.0.0", - "solana-transaction-error 2.2.1", + "solana-system-interface", + "solana-transaction-error", "solana-vote-program", ] @@ -6709,26 +6405,12 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dc71126edddc2ba014622fc32d0f5e2e78ec6c5a1e0eb511b85618c09e9ea11" dependencies = [ - "solana-account-info 2.2.1", - "solana-define-syscall 2.2.1", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-stable-layout 2.2.1", -] - -[[package]] -name = "solana-cpi" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dea26709d867aada85d0d3617db0944215c8bb28d3745b912de7db13a23280c" -dependencies = [ - "solana-account-info 3.1.0", - "solana-define-syscall 4.0.1", - "solana-instruction 3.1.0", - "solana-program-error 3.0.0", - "solana-pubkey 4.0.0", - "solana-stable-layout 3.0.0", + "solana-account-info", + "solana-define-syscall", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-stable-layout", ] [[package]] @@ -6740,7 +6422,7 @@ dependencies = [ "bytemuck", "bytemuck_derive", "curve25519-dalek 4.1.3", - "solana-define-syscall 2.2.1", + "solana-define-syscall", "subtle", "thiserror 2.0.17", ] @@ -6760,18 +6442,6 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf784bb2cb3e02cac9801813c30187344228d2ae952534902108f6150573a33d" -[[package]] -name = "solana-define-syscall" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9697086a4e102d28a156b8d6b521730335d6951bd39a5e766512bbe09007cee" - -[[package]] -name = "solana-define-syscall" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57e5b1c0bc1d4a4d10c88a4100499d954c09d3fecfae4912c1a074dff68b1738" - [[package]] name = "solana-derivation-path" version = "2.2.1" @@ -6793,9 +6463,9 @@ dependencies = [ "bytemuck_derive", "ed25519-dalek", "solana-feature-set", - "solana-instruction 2.2.1", + "solana-instruction", "solana-precompile-error", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", ] [[package]] @@ -6816,24 +6486,10 @@ checksum = "86b575d3dd323b9ea10bb6fe89bf6bf93e249b215ba8ed7f68f1a3633f384db7" dependencies = [ "serde", "serde_derive", - "solana-hash 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-epoch-rewards" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b319a4ed70390af911090c020571f0ff1f4ec432522d05ab89f5c08080381995" -dependencies = [ - "serde", - "serde_derive", - "solana-hash 3.1.0", - "solana-sdk-ids 3.1.0", - "solana-sdk-macro 3.0.0", - "solana-sysvar-id 3.1.0", + "solana-hash", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", ] [[package]] @@ -6843,8 +6499,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c5fd2662ae7574810904585fd443545ed2b568dbd304b25a31e79ccc76e81b" dependencies = [ "siphasher 0.3.11", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash", + "solana-pubkey", ] [[package]] @@ -6855,32 +6511,9 @@ checksum = "3fce071fbddecc55d727b1d7ed16a629afe4f6e4c217bc8d00af3b785f6f67ed" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-epoch-schedule" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5481e72cc4d52c169db73e4c0cd16de8bc943078aac587ec4817a75cc6388f" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-ids 3.1.0", - "solana-sdk-macro 3.0.0", - "solana-sysvar-id 3.1.0", -] - -[[package]] -name = "solana-epoch-stake" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc6693d0ea833b880514b9b88d95afb80b42762dca98b0712465d1fcbbcb89e" -dependencies = [ - "solana-define-syscall 3.0.0", - "solana-pubkey 3.0.0", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", ] [[package]] @@ -6891,37 +6524,16 @@ checksum = "84461d56cbb8bb8d539347151e0525b53910102e4bced875d49d5139708e39d3" dependencies = [ "serde", "serde_derive", - "solana-address-lookup-table-interface 2.2.2", - "solana-clock 2.2.1", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-keccak-hasher 2.2.1", - "solana-message 2.2.1", - "solana-nonce 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-system-interface 1.0.0", - "thiserror 2.0.17", -] - -[[package]] -name = "solana-example-mocks" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978855d164845c1b0235d4b4d101cadc55373fffaf0b5b6cfa2194d25b2ed658" -dependencies = [ - "serde", - "serde_derive", - "solana-address-lookup-table-interface 3.0.0", - "solana-clock 3.0.0", - "solana-hash 3.1.0", - "solana-instruction 3.1.0", - "solana-keccak-hasher 3.1.0", - "solana-message 3.0.1", - "solana-nonce 3.0.0", - "solana-pubkey 3.0.0", - "solana-sdk-ids 3.1.0", - "solana-system-interface 2.0.0", + "solana-address-lookup-table-interface", + "solana-clock", + "solana-hash", + "solana-instruction", + "solana-keccak-hasher", + "solana-message", + "solana-nonce", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", "thiserror 2.0.17", ] @@ -6935,13 +6547,13 @@ dependencies = [ "serde", "serde_derive", "solana-account", - "solana-account-info 2.2.1", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-system-interface 1.0.0", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-system-interface", ] [[package]] @@ -6952,10 +6564,10 @@ checksum = "89e1d3b52b4a014efeaaab67f14e40af3972a4be61c523d612860db8e3145529" dependencies = [ "ahash", "lazy_static", - "solana-epoch-schedule 2.2.1", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-epoch-schedule", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", ] [[package]] @@ -6980,17 +6592,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "solana-fee-calculator" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a73cc03ca4bed871ca174558108835f8323e85917bb38b9c81c7af2ab853efe" -dependencies = [ - "log", - "serde", - "serde_derive", -] - [[package]] name = "solana-fee-structure" version = "2.2.1" @@ -6999,8 +6600,8 @@ checksum = "f45f94a88efdb512805563181dfa1c85c60a21b6e6d602bf24a2ea88f9399d6e" dependencies = [ "serde", "serde_derive", - "solana-message 2.2.1", - "solana-native-token 2.2.1", + "solana-message", + "solana-native-token", ] [[package]] @@ -7026,20 +6627,20 @@ dependencies = [ "serde", "serde_derive", "solana-account", - "solana-clock 2.2.1", + "solana-clock", "solana-cluster-type", - "solana-epoch-schedule 2.2.1", - "solana-fee-calculator 2.2.1", - "solana-hash 2.2.1", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash", "solana-inflation", "solana-keypair", "solana-logger", - "solana-native-token 2.2.1", + "solana-native-token", "solana-poh-config", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-sha256-hasher", "solana-shred-version", "solana-signer", "solana-time-utils", @@ -7068,36 +6669,11 @@ dependencies = [ "js-sys", "serde", "serde_derive", - "solana-atomic-u64 2.2.1", - "solana-sanitize 2.2.1", + "solana-atomic-u64", + "solana-sanitize", "wasm-bindgen", ] -[[package]] -name = "solana-hash" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "337c246447142f660f778cf6cb582beba8e28deb05b3b24bfb9ffd7c562e5f41" -dependencies = [ - "solana-hash 4.0.1", -] - -[[package]] -name = "solana-hash" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a5d48a6ee7b91fc7b998944ab026ed7b3e2fc8ee3bc58452644a86c2648152f" -dependencies = [ - "borsh 1.6.0", - "bytemuck", - "bytemuck_derive", - "five8", - "serde", - "serde_derive", - "solana-atomic-u64 3.0.0", - "solana-sanitize 3.0.1", -] - [[package]] name = "solana-inflation" version = "2.2.1" @@ -7115,7 +6691,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "951545bd7d0ab4a878cfc7375ac9f1a475cb6936626677b2ba1d25e7b9f3910b" dependencies = [ "bytemuck", - "solana-pubkey 2.2.1", + "solana-pubkey", ] [[package]] @@ -7131,36 +6707,11 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-define-syscall 2.2.1", - "solana-pubkey 2.2.1", + "solana-define-syscall", + "solana-pubkey", "wasm-bindgen", ] -[[package]] -name = "solana-instruction" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee1b699a2c1518028a9982e255e0eca10c44d90006542d9d7f9f40dbce3f7c78" -dependencies = [ - "bincode", - "borsh 1.6.0", - "serde", - "serde_derive", - "solana-define-syscall 4.0.1", - "solana-instruction-error", - "solana-pubkey 4.0.0", -] - -[[package]] -name = "solana-instruction-error" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b04259e03c05faf38a8c24217b5cfe4c90572ae6184ab49cddb1584fdd756d3f" -dependencies = [ - "num-traits", - "solana-program-error 3.0.0", -] - [[package]] name = "solana-instructions-sysvar" version = "2.2.1" @@ -7168,32 +6719,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "427f2d0d6dc0bb49f16cef5e7f975180d2e80aab9bdd3b2af68e2d029ec63f43" dependencies = [ "bitflags 2.10.0", - "solana-account-info 2.2.1", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-serialize-utils 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-instructions-sysvar" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ddf67876c541aa1e21ee1acae35c95c6fbc61119814bfef70579317a5e26955" -dependencies = [ - "bitflags 2.10.0", - "solana-account-info 3.1.0", - "solana-instruction 3.1.0", - "solana-instruction-error", - "solana-program-error 3.0.0", - "solana-pubkey 3.0.0", - "solana-sanitize 3.0.1", - "solana-sdk-ids 3.1.0", - "solana-serialize-utils 3.1.0", - "solana-sysvar-id 3.1.0", + "solana-account-info", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-serialize-utils", + "solana-sysvar-id", ] [[package]] @@ -7203,20 +6736,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7aeb957fbd42a451b99235df4942d96db7ef678e8d5061ef34c9b34cae12f79" dependencies = [ "sha3", - "solana-define-syscall 2.2.1", - "solana-hash 2.2.1", - "solana-sanitize 2.2.1", -] - -[[package]] -name = "solana-keccak-hasher" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed1c0d16d6fdeba12291a1f068cdf0d479d9bff1141bf44afd7aa9d485f65ef8" -dependencies = [ - "sha3", - "solana-define-syscall 4.0.1", - "solana-hash 4.0.1", + "solana-define-syscall", + "solana-hash", + "solana-sanitize", ] [[package]] @@ -7230,7 +6752,7 @@ dependencies = [ "ed25519-dalek-bip32", "rand 0.7.3", "solana-derivation-path", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-seed-derivable", "solana-seed-phrase", "solana-signature", @@ -7246,22 +6768,9 @@ checksum = "4a6360ac2fdc72e7463565cd256eedcf10d7ef0c28a1249d261ec168c1b55cdd" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-last-restart-slot" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcda154ec827f5fc1e4da0af3417951b7e9b8157540f81f936c4a8b1156134d0" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-ids 3.1.0", - "solana-sdk-macro 3.0.0", - "solana-sysvar-id 3.1.0", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", ] [[package]] @@ -7285,9 +6794,9 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", ] [[package]] @@ -7299,10 +6808,10 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-system-interface 1.0.0", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", ] [[package]] @@ -7314,9 +6823,9 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", ] [[package]] @@ -7328,10 +6837,10 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-system-interface 1.0.0", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", ] [[package]] @@ -7346,16 +6855,16 @@ dependencies = [ "solana-bincode", "solana-bpf-loader-program", "solana-compute-budget", - "solana-instruction 2.2.1", + "solana-instruction", "solana-loader-v3-interface 3.0.0", "solana-loader-v4-interface", "solana-log-collector", "solana-measure", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-sbpf", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-transaction-context", "solana-type-overrides", ] @@ -7398,35 +6907,17 @@ dependencies = [ "serde", "serde_derive", "solana-bincode", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-short-vec 2.2.1", - "solana-system-interface 1.0.0", - "solana-transaction-error 2.2.1", + "solana-hash", + "solana-instruction", + "solana-pubkey", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", + "solana-system-interface", + "solana-transaction-error", "wasm-bindgen", ] -[[package]] -name = "solana-message" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85666605c9fd727f865ed381665db0a8fc29f984a030ecc1e40f43bfb2541623" -dependencies = [ - "lazy_static", - "serde", - "serde_derive", - "solana-address 1.1.0", - "solana-hash 3.1.0", - "solana-instruction 3.1.0", - "solana-sanitize 3.0.1", - "solana-sdk-ids 3.1.0", - "solana-short-vec 3.1.0", - "solana-transaction-error 3.0.0", -] - [[package]] name = "solana-metrics" version = "2.2.1" @@ -7438,9 +6929,9 @@ dependencies = [ "lazy_static", "log", "reqwest", - "solana-clock 2.2.1", + "solana-clock", "solana-cluster-type", - "solana-sha256-hasher 2.2.1", + "solana-sha256-hasher", "solana-time-utils", "thiserror 2.0.17", ] @@ -7451,16 +6942,7 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36a1a14399afaabc2781a1db09cb14ee4cc4ee5c7a5a3cfcc601811379a8092" dependencies = [ - "solana-define-syscall 2.2.1", -] - -[[package]] -name = "solana-msg" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "264275c556ea7e22b9d3f87d56305546a38d4eee8ec884f3b126236cb7dcbbb4" -dependencies = [ - "solana-define-syscall 3.0.0", + "solana-define-syscall", ] [[package]] @@ -7469,12 +6951,6 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33e9de00960197412e4be3902a6cd35e60817c511137aca6c34c66cd5d4017ec" -[[package]] -name = "solana-native-token" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8dd4c280dca9d046139eb5b7a5ac9ad10403fbd64964c7d7571214950d758f" - [[package]] name = "solana-net-utils" version = "2.2.1" @@ -7511,22 +6987,10 @@ checksum = "703e22eb185537e06204a5bd9d509b948f0066f2d1d814a6f475dafb3ddf1325" dependencies = [ "serde", "serde_derive", - "solana-fee-calculator 2.2.1", - "solana-hash 2.2.1", - "solana-pubkey 2.2.1", - "solana-sha256-hasher 2.2.1", -] - -[[package]] -name = "solana-nonce" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abbdc6c8caf1c08db9f36a50967539d0f72b9f1d4aea04fec5430f532e5afadc" -dependencies = [ - "solana-fee-calculator 3.0.0", - "solana-hash 3.1.0", - "solana-pubkey 3.0.0", - "solana-sha256-hasher 3.1.0", + "solana-fee-calculator", + "solana-hash", + "solana-pubkey", + "solana-sha256-hasher", ] [[package]] @@ -7536,9 +7000,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cde971a20b8dbf60144d6a84439dda86b5466e00e2843091fe731083cda614da" dependencies = [ "solana-account", - "solana-hash 2.2.1", - "solana-nonce 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-hash", + "solana-nonce", + "solana-sdk-ids", ] [[package]] @@ -7548,11 +7012,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b526398ade5dea37f1f147ce55dae49aa017a5d7326606359b0445ca8d946581" dependencies = [ "num_enum", - "solana-hash 2.2.1", + "solana-hash", "solana-packet", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-pubkey", + "solana-sanitize", + "solana-sha256-hasher", "solana-signature", "solana-signer", ] @@ -7591,14 +7055,14 @@ dependencies = [ "rand 0.8.5", "rayon", "serde", - "solana-hash 2.2.1", - "solana-message 2.2.1", + "solana-hash", + "solana-message", "solana-metrics", "solana-packet", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-rayon-threadlimit", - "solana-sdk-ids 2.2.1", - "solana-short-vec 2.2.1", + "solana-sdk-ids", + "solana-short-vec", "solana-signature", "solana-time-utils", ] @@ -7621,7 +7085,7 @@ checksum = "8ad1ea160d08dc423c35021fa3e437a5783eb256f5ab8bc3024e27db913acf42" dependencies = [ "ark-bn254", "light-poseidon", - "solana-define-syscall 2.2.1", + "solana-define-syscall", "thiserror 2.0.17", ] @@ -7644,10 +7108,10 @@ dependencies = [ "lazy_static", "solana-ed25519-program", "solana-feature-set", - "solana-message 2.2.1", + "solana-message", "solana-precompile-error", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", "solana-secp256k1-program", "solana-secp256r1-program", ] @@ -7658,7 +7122,7 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81a57a24e6a4125fc69510b6774cd93402b943191b6cddad05de7281491c90fe" dependencies = [ - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-signature", "solana-signer", ] @@ -7688,130 +7152,71 @@ dependencies = [ "serde", "serde_bytes", "serde_derive", - "solana-account-info 2.2.1", - "solana-address-lookup-table-interface 2.2.2", - "solana-atomic-u64 2.2.1", - "solana-big-mod-exp 2.2.1", + "solana-account-info", + "solana-address-lookup-table-interface", + "solana-atomic-u64", + "solana-big-mod-exp", "solana-bincode", - "solana-blake3-hasher 2.2.1", - "solana-borsh 2.2.1", - "solana-clock 2.2.1", - "solana-cpi 2.2.1", + "solana-blake3-hasher", + "solana-borsh", + "solana-clock", + "solana-cpi", "solana-decode-error", - "solana-define-syscall 2.2.1", - "solana-epoch-rewards 2.2.1", - "solana-epoch-schedule 2.2.1", - "solana-example-mocks 2.2.1", + "solana-define-syscall", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-example-mocks", "solana-feature-gate-interface", - "solana-fee-calculator 2.2.1", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-instructions-sysvar 2.2.1", - "solana-keccak-hasher 2.2.1", - "solana-last-restart-slot 2.2.1", + "solana-fee-calculator", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", + "solana-keccak-hasher", + "solana-last-restart-slot", "solana-loader-v2-interface", "solana-loader-v3-interface 3.0.0", "solana-loader-v4-interface", - "solana-message 2.2.1", - "solana-msg 2.2.1", - "solana-native-token 2.2.1", - "solana-nonce 2.2.1", - "solana-program-entrypoint 2.2.1", - "solana-program-error 2.2.2", - "solana-program-memory 2.2.1", - "solana-program-option 2.2.1", - "solana-program-pack 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sanitize 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-secp256k1-recover 2.2.1", - "solana-serde-varint 2.2.1", - "solana-serialize-utils 2.2.1", - "solana-sha256-hasher 2.2.1", - "solana-short-vec 2.2.1", - "solana-slot-hashes 2.2.1", - "solana-slot-history 2.2.1", - "solana-stable-layout 2.2.1", + "solana-message", + "solana-msg", + "solana-native-token", + "solana-nonce", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-rent", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-secp256k1-recover", + "solana-serde-varint", + "solana-serialize-utils", + "solana-sha256-hasher", + "solana-short-vec", + "solana-slot-hashes", + "solana-slot-history", + "solana-stable-layout", "solana-stake-interface", - "solana-system-interface 1.0.0", - "solana-sysvar 2.2.1", - "solana-sysvar-id 2.2.1", + "solana-system-interface", + "solana-sysvar", + "solana-sysvar-id", "solana-vote-interface", "thiserror 2.0.17", "wasm-bindgen", ] -[[package]] -name = "solana-program" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91b12305dd81045d705f427acd0435a2e46444b65367d7179d7bdcfc3bc5f5eb" -dependencies = [ - "memoffset", - "solana-account-info 3.1.0", - "solana-big-mod-exp 3.0.0", - "solana-blake3-hasher 3.1.0", - "solana-borsh 3.0.0", - "solana-clock 3.0.0", - "solana-cpi 3.1.0", - "solana-define-syscall 3.0.0", - "solana-epoch-rewards 3.0.0", - "solana-epoch-schedule 3.0.0", - "solana-epoch-stake", - "solana-example-mocks 3.0.0", - "solana-fee-calculator 3.0.0", - "solana-hash 3.1.0", - "solana-instruction 3.1.0", - "solana-instruction-error", - "solana-instructions-sysvar 3.0.0", - "solana-keccak-hasher 3.1.0", - "solana-last-restart-slot 3.0.0", - "solana-msg 3.0.0", - "solana-native-token 3.0.0", - "solana-program-entrypoint 3.1.1", - "solana-program-error 3.0.0", - "solana-program-memory 3.1.0", - "solana-program-option 3.0.0", - "solana-program-pack 3.0.0", - "solana-pubkey 3.0.0", - "solana-rent 3.1.0", - "solana-sdk-ids 3.1.0", - "solana-secp256k1-recover 3.1.0", - "solana-serde-varint 3.0.0", - "solana-serialize-utils 3.1.0", - "solana-sha256-hasher 3.1.0", - "solana-short-vec 3.1.0", - "solana-slot-hashes 3.0.0", - "solana-slot-history 3.0.0", - "solana-stable-layout 3.0.0", - "solana-sysvar 3.1.1", - "solana-sysvar-id 3.1.0", -] - [[package]] name = "solana-program-entrypoint" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "473ffe73c68d93e9f2aa726ad2985fe52760052709aaab188100a42c618060ec" dependencies = [ - "solana-account-info 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", -] - -[[package]] -name = "solana-program-entrypoint" -version = "3.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c9b0a1ff494e05f503a08b3d51150b73aa639544631e510279d6375f290997" -dependencies = [ - "solana-account-info 3.1.0", - "solana-define-syscall 4.0.1", - "solana-program-error 3.0.0", - "solana-pubkey 4.0.0", + "solana-account-info", + "solana-msg", + "solana-program-error", + "solana-pubkey", ] [[package]] @@ -7825,20 +7230,9 @@ dependencies = [ "serde", "serde_derive", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-pubkey 2.2.1", -] - -[[package]] -name = "solana-program-error" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1af32c995a7b692a915bb7414d5f8e838450cf7c70414e763d8abcae7b51f28" -dependencies = [ - "borsh 1.6.0", - "serde", - "serde_derive", + "solana-instruction", + "solana-msg", + "solana-pubkey", ] [[package]] @@ -7848,16 +7242,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b0268f6c89825fb634a34bd0c3b8fdaeaecfc3728be1d622a8ee6dd577b60d4" dependencies = [ "num-traits", - "solana-define-syscall 2.2.1", -] - -[[package]] -name = "solana-program-memory" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4068648649653c2c50546e9a7fb761791b5ab0cda054c771bb5808d3a4b9eb52" -dependencies = [ - "solana-define-syscall 4.0.1", + "solana-define-syscall", ] [[package]] @@ -7866,28 +7251,13 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc677a2e9bc616eda6dbdab834d463372b92848b2bfe4a1ed4e4b4adba3397d0" -[[package]] -name = "solana-program-option" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e7b4ddb464f274deb4a497712664c3b612e3f5f82471d4e47710fc4ab1c3095" - [[package]] name = "solana-program-pack" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "319f0ef15e6e12dc37c597faccb7d62525a509fec5f6975ecb9419efddeb277b" dependencies = [ - "solana-program-error 2.2.2", -] - -[[package]] -name = "solana-program-pack" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c169359de21f6034a63ebf96d6b380980307df17a8d371344ff04a883ec4e9d0" -dependencies = [ - "solana-program-error 3.0.0", + "solana-program-error", ] [[package]] @@ -7905,26 +7275,26 @@ dependencies = [ "rand 0.8.5", "serde", "solana-account", - "solana-clock 2.2.1", + "solana-clock", "solana-compute-budget", - "solana-epoch-rewards 2.2.1", - "solana-epoch-schedule 2.2.1", + "solana-epoch-rewards", + "solana-epoch-schedule", "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-last-restart-slot 2.2.1", + "solana-hash", + "solana-instruction", + "solana-last-restart-slot", "solana-log-collector", "solana-measure", "solana-metrics", "solana-precompiles", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", + "solana-pubkey", + "solana-rent", "solana-sbpf", - "solana-sdk-ids 2.2.1", - "solana-slot-hashes 2.2.1", - "solana-stable-layout 2.2.1", - "solana-sysvar 2.2.1", - "solana-sysvar-id 2.2.1", + "solana-sdk-ids", + "solana-slot-hashes", + "solana-stable-layout", + "solana-sysvar", + "solana-sysvar-id", "solana-timings", "solana-transaction-context", "solana-type-overrides", @@ -7953,14 +7323,14 @@ dependencies = [ "solana-compute-budget", "solana-feature-set", "solana-inline-spl", - "solana-instruction 2.2.1", + "solana-instruction", "solana-log-collector", "solana-logger", "solana-program-runtime", "solana-runtime", "solana-sbpf", "solana-sdk", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-svm 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "solana-timings", "solana-vote-program", @@ -7980,39 +7350,21 @@ dependencies = [ "bytemuck", "bytemuck_derive", "curve25519-dalek 4.1.3", - "five8_const 0.1.4", + "five8_const", "getrandom 0.2.16", "js-sys", "num-traits", "rand 0.8.5", "serde", "serde_derive", - "solana-atomic-u64 2.2.1", + "solana-atomic-u64", "solana-decode-error", - "solana-define-syscall 2.2.1", - "solana-sanitize 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-define-syscall", + "solana-sanitize", + "solana-sha256-hasher", "wasm-bindgen", ] -[[package]] -name = "solana-pubkey" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8909d399deb0851aa524420beeb5646b115fd253ef446e35fe4504c904da3941" -dependencies = [ - "solana-address 1.1.0", -] - -[[package]] -name = "solana-pubkey" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6f7104d456b58e1418c21a8581e89810278d1190f70f27ece7fc0b2c9282a57" -dependencies = [ - "solana-address 2.0.0", -] - [[package]] name = "solana-pubsub-client" version = "2.2.1" @@ -8028,8 +7380,8 @@ dependencies = [ "serde_derive", "serde_json", "solana-account-decoder-client-types", - "solana-clock 2.2.1", - "solana-pubkey 2.2.1", + "solana-clock", + "solana-pubkey", "solana-rpc-client-api", "solana-signature", "thiserror 2.0.17", @@ -8060,13 +7412,13 @@ dependencies = [ "solana-measure", "solana-metrics", "solana-net-utils", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-quic-definitions", "solana-rpc-client-api", "solana-signer", "solana-streamer", "solana-tls-utils", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 2.0.17", "tokio", ] @@ -8098,22 +7450,9 @@ checksum = "d1aea8fdea9de98ca6e8c2da5827707fb3842833521b528a713810ca685d2480" dependencies = [ "serde", "serde_derive", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-rent" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e860d5499a705369778647e97d760f7670adfb6fc8419dd3d568deccd46d5487" -dependencies = [ - "serde", - "serde_derive", - "solana-sdk-ids 3.1.0", - "solana-sdk-macro 3.0.0", - "solana-sysvar-id 3.1.0", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-sysvar-id", ] [[package]] @@ -8125,12 +7464,12 @@ dependencies = [ "serde", "serde_derive", "solana-account", - "solana-clock 2.2.1", - "solana-epoch-schedule 2.2.1", + "solana-clock", + "solana-epoch-schedule", "solana-genesis-config", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", ] [[package]] @@ -8139,7 +7478,7 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4f6f9113c6003492e74438d1288e30cffa8ccfdc2ef7b49b9e816d8034da18cd" dependencies = [ - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-reward-info", ] @@ -8151,8 +7490,8 @@ checksum = "2b293f4246626c0e0a991531f08848a713ada965612e99dc510963f04d12cae7" dependencies = [ "lazy_static", "solana-feature-set", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", ] [[package]] @@ -8185,19 +7524,19 @@ dependencies = [ "serde_json", "solana-account", "solana-account-decoder-client-types", - "solana-clock 2.2.1", + "solana-clock", "solana-commitment-config", "solana-epoch-info", - "solana-epoch-schedule 2.2.1", + "solana-epoch-schedule", "solana-feature-gate-interface", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash", + "solana-instruction", + "solana-message", + "solana-pubkey", "solana-rpc-client-api", "solana-signature", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status-client-types", "solana-version", "tokio", @@ -8221,14 +7560,14 @@ dependencies = [ "serde_json", "solana-account", "solana-account-decoder-client-types", - "solana-clock 2.2.1", + "solana-clock", "solana-commitment-config", - "solana-fee-calculator 2.2.1", + "solana-fee-calculator", "solana-inflation", "solana-inline-spl", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-signer", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status-client-types", "solana-version", "thiserror 2.0.17", @@ -8242,12 +7581,12 @@ checksum = "0244e2bf439ec424179414173cdc8b43e34371608752799c5610bf17430eee18" dependencies = [ "solana-account", "solana-commitment-config", - "solana-hash 2.2.1", - "solana-message 2.2.1", - "solana-nonce 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash", + "solana-message", + "solana-nonce", + "solana-pubkey", "solana-rpc-client", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "thiserror 2.0.17", ] @@ -8311,9 +7650,9 @@ dependencies = [ "solana-nohash-hasher", "solana-nonce-account", "solana-perf", - "solana-program 2.2.1", + "solana-program", "solana-program-runtime", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-rayon-threadlimit", "solana-runtime-transaction", "solana-sdk", @@ -8328,8 +7667,8 @@ dependencies = [ "solana-vote", "solana-vote-program", "static_assertions", - "strum", - "strum_macros", + "strum 0.24.1", + "strum_macros 0.24.3", "symlink", "tar", "tempfile", @@ -8347,14 +7686,14 @@ dependencies = [ "log", "solana-compute-budget", "solana-compute-budget-instruction", - "solana-hash 2.2.1", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-hash", + "solana-message", + "solana-pubkey", + "solana-sdk-ids", "solana-signature", "solana-svm-transaction", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 2.0.17", ] @@ -8364,12 +7703,6 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61f1bc1357b8188d9c4a3af3fc55276e56987265eb7ad073ae6f8180ee54cecf" -[[package]] -name = "solana-sanitize" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf09694a0fc14e5ffb18f9b7b7c0f15ecb6eac5b5610bf76a1853459d19daf9" - [[package]] name = "solana-sbpf" version = "0.10.0" @@ -8415,10 +7748,10 @@ dependencies = [ "solana-genesis-config", "solana-hard-forks", "solana-inflation", - "solana-instruction 2.2.1", + "solana-instruction", "solana-keypair", - "solana-message 2.2.1", - "solana-native-token 2.2.1", + "solana-message", + "solana-native-token", "solana-nonce-account", "solana-offchain-message", "solana-packet", @@ -8426,25 +7759,25 @@ dependencies = [ "solana-precompile-error", "solana-precompiles", "solana-presigner", - "solana-program 2.2.1", - "solana-program-memory 2.2.1", - "solana-pubkey 2.2.1", + "solana-program", + "solana-program-memory", + "solana-pubkey", "solana-quic-definitions", "solana-rent-collector", "solana-rent-debits", "solana-reserved-account-keys", "solana-reward-info", - "solana-sanitize 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", "solana-secp256k1-program", - "solana-secp256k1-recover 2.2.1", + "solana-secp256k1-recover", "solana-secp256r1-program", "solana-seed-derivable", "solana-seed-phrase", "solana-serde", - "solana-serde-varint 2.2.1", - "solana-short-vec 2.2.1", + "solana-serde-varint", + "solana-short-vec", "solana-shred-version", "solana-signature", "solana-signer", @@ -8452,7 +7785,7 @@ dependencies = [ "solana-time-utils", "solana-transaction", "solana-transaction-context", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-validator-exit", "thiserror 2.0.17", "wasm-bindgen", @@ -8464,16 +7797,7 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c5d8b9cc68d5c88b062a33e23a6466722467dde0035152d8fb1afbcdf350a5f" dependencies = [ - "solana-pubkey 2.2.1", -] - -[[package]] -name = "solana-sdk-ids" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def234c1956ff616d46c9dd953f251fa7096ddbaa6d52b165218de97882b7280" -dependencies = [ - "solana-address 2.0.0", + "solana-pubkey", ] [[package]] @@ -8488,18 +7812,6 @@ dependencies = [ "syn 2.0.111", ] -[[package]] -name = "solana-sdk-macro" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6430000e97083460b71d9fbadc52a2ab2f88f53b3a4c5e58c5ae3640a0e8c00" -dependencies = [ - "bs58", - "proc-macro2", - "quote", - "syn 2.0.111", -] - [[package]] name = "solana-secp256k1-program" version = "2.2.1" @@ -8513,9 +7825,9 @@ dependencies = [ "serde_derive", "sha3", "solana-feature-set", - "solana-instruction 2.2.1", + "solana-instruction", "solana-precompile-error", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", ] [[package]] @@ -8526,18 +7838,7 @@ checksum = "baa3120b6cdaa270f39444f5093a90a7b03d296d362878f7a6991d6de3bbe496" dependencies = [ "borsh 1.6.0", "libsecp256k1", - "solana-define-syscall 2.2.1", - "thiserror 2.0.17", -] - -[[package]] -name = "solana-secp256k1-recover" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de18cfdab99eeb940fbedd8c981fa130c0d76252da75d05446f22fae8b51932" -dependencies = [ - "k256", - "solana-define-syscall 4.0.1", + "solana-define-syscall", "thiserror 2.0.17", ] @@ -8550,9 +7851,9 @@ dependencies = [ "bytemuck", "openssl", "solana-feature-set", - "solana-instruction 2.2.1", + "solana-instruction", "solana-precompile-error", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", ] [[package]] @@ -8621,35 +7922,15 @@ dependencies = [ "serde", ] -[[package]] -name = "solana-serde-varint" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e5174c57d5ff3c1995f274d17156964664566e2cde18a07bba1586d35a70d3b" -dependencies = [ - "serde", -] - [[package]] name = "solana-serialize-utils" version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "817a284b63197d2b27afdba829c5ab34231da4a9b4e763466a003c40ca4f535e" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sanitize 2.2.1", -] - -[[package]] -name = "solana-serialize-utils" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e41dd8feea239516c623a02f0a81c2367f4b604d7965237fed0751aeec33ed" -dependencies = [ - "solana-instruction-error", - "solana-pubkey 3.0.0", - "solana-sanitize 3.0.1", + "solana-instruction", + "solana-pubkey", + "solana-sanitize", ] [[package]] @@ -8659,19 +7940,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0037386961c0d633421f53560ad7c80675c0447cba4d1bb66d60974dd486c7ea" dependencies = [ "sha2 0.10.9", - "solana-define-syscall 2.2.1", - "solana-hash 2.2.1", -] - -[[package]] -name = "solana-sha256-hasher" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" -dependencies = [ - "sha2 0.10.9", - "solana-define-syscall 4.0.1", - "solana-hash 4.0.1", + "solana-define-syscall", + "solana-hash", ] [[package]] @@ -8683,15 +7953,6 @@ dependencies = [ "serde", ] -[[package]] -name = "solana-short-vec" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79fb1809a32cfcf7d9c47b7070a92fa17cdb620ab5829e9a8a9ff9d138a7a175" -dependencies = [ - "serde_core", -] - [[package]] name = "solana-shred-version" version = "2.2.1" @@ -8699,8 +7960,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afd3db0461089d1ad1a78d9ba3f15b563899ca2386351d38428faa5350c60a98" dependencies = [ "solana-hard-forks", - "solana-hash 2.2.1", - "solana-sha256-hasher 2.2.1", + "solana-hash", + "solana-sha256-hasher", ] [[package]] @@ -8715,7 +7976,7 @@ dependencies = [ "serde", "serde-big-array", "serde_derive", - "solana-sanitize 2.2.1", + "solana-sanitize", ] [[package]] @@ -8724,9 +7985,9 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c41991508a4b02f021c1342ba00bcfa098630b213726ceadc7cb032e051975b" dependencies = [ - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-signature", - "solana-transaction-error 2.2.1", + "solana-transaction-error", ] [[package]] @@ -8737,22 +7998,9 @@ checksum = "0c8691982114513763e88d04094c9caa0376b867a29577939011331134c301ce" dependencies = [ "serde", "serde_derive", - "solana-hash 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-slot-hashes" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80a293f952293281443c04f4d96afd9d547721923d596e92b4377ed2360f1746" -dependencies = [ - "serde", - "serde_derive", - "solana-hash 3.1.0", - "solana-sdk-ids 3.1.0", - "solana-sysvar-id 3.1.0", + "solana-hash", + "solana-sdk-ids", + "solana-sysvar-id", ] [[package]] @@ -8764,21 +8012,8 @@ dependencies = [ "bv", "serde", "serde_derive", - "solana-sdk-ids 2.2.1", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-slot-history" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f914f6b108f5bba14a280b458d023e3621c9973f27f015a4d755b50e88d89e97" -dependencies = [ - "bv", - "serde", - "serde_derive", - "solana-sdk-ids 3.1.0", - "solana-sysvar-id 3.1.0", + "solana-sdk-ids", + "solana-sysvar-id", ] [[package]] @@ -8787,18 +8022,8 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f14f7d02af8f2bc1b5efeeae71bc1c2b7f0f65cd75bcc7d8180f2c762a57f54" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", -] - -[[package]] -name = "solana-stable-layout" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1da74507795b6e8fb60b7c7306c0c36e2c315805d16eaaf479452661234685ac" -dependencies = [ - "solana-instruction 3.1.0", - "solana-pubkey 3.0.0", + "solana-instruction", + "solana-pubkey", ] [[package]] @@ -8812,14 +8037,14 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-clock 2.2.1", - "solana-cpi 2.2.1", + "solana-clock", + "solana-cpi", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", - "solana-system-interface 1.0.0", - "solana-sysvar-id 2.2.1", + "solana-instruction", + "solana-program-error", + "solana-pubkey", + "solana-system-interface", + "solana-sysvar-id", ] [[package]] @@ -8832,20 +8057,20 @@ dependencies = [ "log", "solana-account", "solana-bincode", - "solana-clock 2.2.1", + "solana-clock", "solana-config-program", "solana-feature-set", "solana-genesis-config", - "solana-instruction 2.2.1", + "solana-instruction", "solana-log-collector", - "solana-native-token 2.2.1", + "solana-native-token", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", "solana-stake-interface", - "solana-sysvar 2.2.1", + "solana-sysvar", "solana-transaction-context", "solana-type-overrides", "solana-vote-interface", @@ -8861,14 +8086,14 @@ dependencies = [ "protobuf-src", "serde", "solana-account-decoder", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-hash", + "solana-instruction", + "solana-message", + "solana-pubkey", "solana-signature", "solana-transaction", "solana-transaction-context", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status", "tonic-build", ] @@ -8906,13 +8131,13 @@ dependencies = [ "solana-net-utils", "solana-packet", "solana-perf", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-quic-definitions", "solana-signature", "solana-signer", "solana-time-utils", "solana-tls-utils", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-metrics-tracker", "thiserror 2.0.17", "tokio", @@ -8934,33 +8159,33 @@ dependencies = [ "serde_derive", "solana-account", "solana-bpf-loader-program", - "solana-clock 2.2.1", + "solana-clock", "solana-compute-budget", "solana-compute-budget-instruction", "solana-feature-set", "solana-fee-structure", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-instructions-sysvar 2.2.1", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", "solana-loader-v4-program", "solana-log-collector", "solana-measure", - "solana-message 2.2.1", - "solana-nonce 2.2.1", + "solana-message", + "solana-nonce", "solana-nonce-account", "solana-precompiles", - "solana-program 2.2.1", + "solana-program", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", + "solana-pubkey", + "solana-rent", "solana-rent-debits", "solana-sdk", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-svm-rent-collector", "solana-svm-transaction", "solana-timings", "solana-transaction-context", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-type-overrides", "thiserror 2.0.17", ] @@ -8978,34 +8203,34 @@ dependencies = [ "serde_derive", "solana-account", "solana-bpf-loader-program", - "solana-clock 2.2.1", + "solana-clock", "solana-compute-budget", "solana-compute-budget-instruction", "solana-feature-set", "solana-fee-structure", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-instructions-sysvar 2.2.1", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", "solana-loader-v4-program", "solana-log-collector", "solana-measure", - "solana-message 2.2.1", - "solana-nonce 2.2.1", + "solana-message", + "solana-nonce", "solana-nonce-account", "solana-precompiles", - "solana-program 2.2.1", + "solana-program", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", + "solana-pubkey", + "solana-rent", "solana-rent-debits", "solana-reserved-account-keys", "solana-sdk", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-svm-rent-collector", "solana-svm-transaction", "solana-timings", "solana-transaction-context", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-type-overrides", "thiserror 2.0.17", ] @@ -9025,10 +8250,10 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fc4392f0eed412141a376e99dfb052069b96f13697a9abb335504babe29387a" dependencies = [ - "solana-hash 2.2.1", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-hash", + "solana-message", + "solana-pubkey", + "solana-sdk-ids", "solana-signature", "solana-transaction", ] @@ -9044,23 +8269,11 @@ dependencies = [ "serde", "serde_derive", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey", "wasm-bindgen", ] -[[package]] -name = "solana-system-interface" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e1790547bfc3061f1ee68ea9d8dc6c973c02a163697b24263a8e9f2e6d4afa2" -dependencies = [ - "num-traits", - "solana-msg 3.0.0", - "solana-program-error 3.0.0", - "solana-pubkey 3.0.0", -] - [[package]] name = "solana-system-program" version = "2.2.1" @@ -9073,16 +8286,16 @@ dependencies = [ "serde_derive", "solana-account", "solana-bincode", - "solana-instruction 2.2.1", + "solana-instruction", "solana-log-collector", - "solana-nonce 2.2.1", + "solana-nonce", "solana-nonce-account", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-system-interface 1.0.0", - "solana-sysvar 2.2.1", + "solana-pubkey", + "solana-sdk-ids", + "solana-system-interface", + "solana-sysvar", "solana-transaction-context", "solana-type-overrides", ] @@ -9093,12 +8306,12 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5bd98a25e5bcba8b6be8bcbb7b84b24c2a6a8178d7fb0e3077a916855ceba91a" dependencies = [ - "solana-hash 2.2.1", + "solana-hash", "solana-keypair", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-pubkey", "solana-signer", - "solana-system-interface 1.0.0", + "solana-system-interface", "solana-transaction", ] @@ -9115,62 +8328,28 @@ dependencies = [ "lazy_static", "serde", "serde_derive", - "solana-account-info 2.2.1", - "solana-clock 2.2.1", - "solana-define-syscall 2.2.1", - "solana-epoch-rewards 2.2.1", - "solana-epoch-schedule 2.2.1", - "solana-fee-calculator 2.2.1", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-instructions-sysvar 2.2.1", - "solana-last-restart-slot 2.2.1", - "solana-program-entrypoint 2.2.1", - "solana-program-error 2.2.2", - "solana-program-memory 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sanitize 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-sdk-macro 2.2.1", - "solana-slot-hashes 2.2.1", - "solana-slot-history 2.2.1", + "solana-account-info", + "solana-clock", + "solana-define-syscall", + "solana-epoch-rewards", + "solana-epoch-schedule", + "solana-fee-calculator", + "solana-hash", + "solana-instruction", + "solana-instructions-sysvar", + "solana-last-restart-slot", + "solana-program-entrypoint", + "solana-program-error", + "solana-program-memory", + "solana-pubkey", + "solana-rent", + "solana-sanitize", + "solana-sdk-ids", + "solana-sdk-macro", + "solana-slot-hashes", + "solana-slot-history", "solana-stake-interface", - "solana-sysvar-id 2.2.1", -] - -[[package]] -name = "solana-sysvar" -version = "3.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6690d3dd88f15c21edff68eb391ef8800df7a1f5cec84ee3e8d1abf05affdf74" -dependencies = [ - "base64 0.22.1", - "bincode", - "bytemuck", - "bytemuck_derive", - "lazy_static", - "serde", - "serde_derive", - "solana-account-info 3.1.0", - "solana-clock 3.0.0", - "solana-define-syscall 4.0.1", - "solana-epoch-rewards 3.0.0", - "solana-epoch-schedule 3.0.0", - "solana-fee-calculator 3.0.0", - "solana-hash 4.0.1", - "solana-instruction 3.1.0", - "solana-last-restart-slot 3.0.0", - "solana-program-entrypoint 3.1.1", - "solana-program-error 3.0.0", - "solana-program-memory 3.1.0", - "solana-pubkey 4.0.0", - "solana-rent 3.1.0", - "solana-sdk-ids 3.1.0", - "solana-sdk-macro 3.0.0", - "solana-slot-hashes 3.0.0", - "solana-slot-history 3.0.0", - "solana-sysvar-id 3.1.0", + "solana-sysvar-id", ] [[package]] @@ -9179,18 +8358,8 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5762b273d3325b047cfda250787f8d796d781746860d5d0a746ee29f3e8812c1" dependencies = [ - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", -] - -[[package]] -name = "solana-sysvar-id" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17358d1e9a13e5b9c2264d301102126cf11a47fd394cdf3dec174fe7bc96e1de" -dependencies = [ - "solana-address 2.0.0", - "solana-sdk-ids 3.1.0", + "solana-pubkey", + "solana-sdk-ids", ] [[package]] @@ -9204,22 +8373,22 @@ dependencies = [ "rayon", "solana-account", "solana-client-traits", - "solana-clock 2.2.1", + "solana-clock", "solana-commitment-config", "solana-connection-cache", "solana-epoch-info", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-keypair", - "solana-message 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-pubkey", "solana-rpc-client", "solana-rpc-client-api", "solana-signature", "solana-signer", - "solana-system-interface 1.0.0", + "solana-system-interface", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", ] [[package]] @@ -9236,7 +8405,7 @@ checksum = "49d9eabdce318cb07c60a23f1cc367b43e177c79225b5c2a081869ad182172ad" dependencies = [ "eager", "enum-iterator", - "solana-pubkey 2.2.1", + "solana-pubkey", ] [[package]] @@ -9247,7 +8416,7 @@ checksum = "a228df037e560a02aac132193f492bdd761e2f90188cd16a440f149882f589b1" dependencies = [ "rustls 0.23.35", "solana-keypair", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-signer", "x509-parser", ] @@ -9266,14 +8435,14 @@ dependencies = [ "log", "rayon", "solana-client-traits", - "solana-clock 2.2.1", + "solana-clock", "solana-commitment-config", "solana-connection-cache", "solana-epoch-info", "solana-measure", - "solana-message 2.2.1", + "solana-message", "solana-net-utils", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-pubsub-client", "solana-quic-definitions", "solana-rpc-client", @@ -9281,7 +8450,7 @@ dependencies = [ "solana-signature", "solana-signer", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 2.0.17", "tokio", ] @@ -9297,20 +8466,20 @@ dependencies = [ "serde_derive", "solana-bincode", "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-keypair", - "solana-message 2.2.1", + "solana-message", "solana-precompiles", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-reserved-account-keys", - "solana-sanitize 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-short-vec 2.2.1", + "solana-sanitize", + "solana-sdk-ids", + "solana-short-vec", "solana-signature", "solana-signer", - "solana-system-interface 1.0.0", - "solana-transaction-error 2.2.1", + "solana-system-interface", + "solana-transaction-error", "wasm-bindgen", ] @@ -9324,9 +8493,9 @@ dependencies = [ "serde", "serde_derive", "solana-account", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", + "solana-instruction", + "solana-pubkey", + "solana-rent", "solana-signature", ] @@ -9338,18 +8507,8 @@ checksum = "222a9dc8fdb61c6088baab34fc3a8b8473a03a7a5fd404ed8dd502fa79b67cb1" dependencies = [ "serde", "serde_derive", - "solana-instruction 2.2.1", - "solana-sanitize 2.2.1", -] - -[[package]] -name = "solana-transaction-error" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4222065402340d7e6aec9dc3e54d22992ddcf923d91edcd815443c2bfca3144a" -dependencies = [ - "solana-instruction-error", - "solana-sanitize 3.0.1", + "solana-instruction", + "solana-sanitize", ] [[package]] @@ -9365,7 +8524,7 @@ dependencies = [ "rand 0.8.5", "solana-packet", "solana-perf", - "solana-short-vec 2.2.1", + "solana-short-vec", "solana-signature", ] @@ -9386,20 +8545,20 @@ dependencies = [ "serde_derive", "serde_json", "solana-account-decoder", - "solana-clock 2.2.1", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-clock", + "solana-hash", + "solana-instruction", "solana-loader-v2-interface", - "solana-message 2.2.1", - "solana-program 2.2.1", - "solana-pubkey 2.2.1", + "solana-message", + "solana-program", + "solana-pubkey", "solana-reserved-account-keys", "solana-reward-info", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-signature", - "solana-system-interface 1.0.0", + "solana-system-interface", "solana-transaction", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "solana-transaction-status-client-types", "spl-associated-token-account", "spl-memo", @@ -9424,12 +8583,12 @@ dependencies = [ "serde_json", "solana-account-decoder-client-types", "solana-commitment-config", - "solana-message 2.2.1", + "solana-message", "solana-reward-info", "solana-signature", "solana-transaction", "solana-transaction-context", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 2.0.17", ] @@ -9454,7 +8613,7 @@ dependencies = [ "solana-keypair", "solana-net-utils", "solana-streamer", - "solana-transaction-error 2.2.1", + "solana-transaction-error", "thiserror 2.0.17", "tokio", ] @@ -9466,7 +8625,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe7e48cbf4e70c05199f50d5f14aafc58331ad39229747c795320bcb362ed063" dependencies = [ "assert_matches", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-runtime-transaction", "solana-transaction", "static_assertions", @@ -9488,8 +8647,8 @@ dependencies = [ "serde", "serde_derive", "solana-feature-set", - "solana-sanitize 2.2.1", - "solana-serde-varint 2.2.1", + "solana-sanitize", + "solana-serde-varint", ] [[package]] @@ -9504,12 +8663,12 @@ dependencies = [ "serde_derive", "solana-account", "solana-bincode", - "solana-clock 2.2.1", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-clock", + "solana-hash", + "solana-instruction", "solana-packet", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-sdk-ids", "solana-signature", "solana-svm-transaction", "solana-transaction", @@ -9528,17 +8687,17 @@ dependencies = [ "num-traits", "serde", "serde_derive", - "solana-clock 2.2.1", + "solana-clock", "solana-decode-error", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", - "solana-serde-varint 2.2.1", - "solana-serialize-utils 2.2.1", - "solana-short-vec 2.2.1", - "solana-system-interface 1.0.0", + "solana-hash", + "solana-instruction", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", + "solana-serde-varint", + "solana-serialize-utils", + "solana-short-vec", + "solana-system-interface", ] [[package]] @@ -9555,19 +8714,19 @@ dependencies = [ "serde_derive", "solana-account", "solana-bincode", - "solana-clock 2.2.1", - "solana-epoch-schedule 2.2.1", + "solana-clock", + "solana-epoch-schedule", "solana-feature-set", - "solana-hash 2.2.1", - "solana-instruction 2.2.1", + "solana-hash", + "solana-instruction", "solana-keypair", "solana-packet", "solana-program-runtime", - "solana-pubkey 2.2.1", - "solana-rent 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-pubkey", + "solana-rent", + "solana-sdk-ids", "solana-signer", - "solana-slot-hashes 2.2.1", + "solana-slot-hashes", "solana-transaction", "solana-transaction-context", "solana-vote-interface", @@ -9583,10 +8742,10 @@ dependencies = [ "bytemuck", "num-derive", "num-traits", - "solana-instruction 2.2.1", + "solana-instruction", "solana-log-collector", "solana-program-runtime", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-zk-sdk", ] @@ -9614,9 +8773,9 @@ dependencies = [ "serde_json", "sha3", "solana-derivation-path", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", "solana-seed-derivable", "solana-seed-phrase", "solana-signature", @@ -9637,10 +8796,10 @@ dependencies = [ "num-derive", "num-traits", "solana-feature-set", - "solana-instruction 2.2.1", + "solana-instruction", "solana-log-collector", "solana-program-runtime", - "solana-sdk-ids 2.2.1", + "solana-sdk-ids", "solana-zk-token-sdk", ] @@ -9668,9 +8827,9 @@ dependencies = [ "sha3", "solana-curve25519", "solana-derivation-path", - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", - "solana-sdk-ids 2.2.1", + "solana-instruction", + "solana-pubkey", + "solana-sdk-ids", "solana-seed-derivable", "solana-seed-phrase", "solana-signature", @@ -9737,16 +8896,6 @@ dependencies = [ "lock_api", ] -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "spl-associated-token-account" version = "6.0.0" @@ -9756,7 +8905,7 @@ dependencies = [ "borsh 1.6.0", "num-derive", "num-traits", - "solana-program 2.2.1", + "solana-program", "spl-associated-token-account-client", "spl-token", "spl-token-2022 6.0.0", @@ -9769,8 +8918,8 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6f8349dbcbe575f354f9a533a21f272f3eb3808a49e2fdc1c34393b88ba76cb" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey", ] [[package]] @@ -9780,8 +8929,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7398da23554a31660f17718164e31d31900956054f54f52d5ec1be51cb4f4b3" dependencies = [ "bytemuck", - "solana-program-error 2.2.2", - "solana-sha256-hasher 2.2.1", + "solana-program-error", + "solana-sha256-hasher", "spl-discriminator-derive", ] @@ -9816,7 +8965,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce0f668975d2b0536e8a8fd60e56a05c467f06021dae037f1d0cfed0de2e231d" dependencies = [ "bytemuck", - "solana-program 2.2.1", + "solana-program", "solana-zk-sdk", "spl-pod", "spl-token-confidential-transfer-proof-extraction", @@ -9828,12 +8977,12 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f09647c0974e33366efeb83b8e2daebb329f0420149e74d3a4bd2c08cf9f7cb" dependencies = [ - "solana-account-info 2.2.1", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-entrypoint 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-account-info", + "solana-instruction", + "solana-msg", + "solana-program-entrypoint", + "solana-program-error", + "solana-pubkey", ] [[package]] @@ -9842,8 +8991,8 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24af0730130fea732616be9425fe8eb77782e2aab2f0e76837b6a66aaba96c6b" dependencies = [ - "solana-instruction 2.2.1", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-pubkey", ] [[package]] @@ -9858,10 +9007,10 @@ dependencies = [ "num-derive", "num-traits", "solana-decode-error", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-program-option 2.2.1", - "solana-pubkey 2.2.1", + "solana-msg", + "solana-program-error", + "solana-program-option", + "solana-pubkey", "solana-zk-sdk", "thiserror 2.0.17", ] @@ -9874,7 +9023,7 @@ checksum = "9d39b5186f42b2b50168029d81e58e800b690877ef0b30580d107659250da1d1" dependencies = [ "num-derive", "num-traits", - "solana-program 2.2.1", + "solana-program", "spl-program-error-derive", "thiserror 1.0.69", ] @@ -9900,12 +9049,12 @@ dependencies = [ "bytemuck", "num-derive", "num-traits", - "solana-account-info 2.2.1", + "solana-account-info", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", "spl-discriminator", "spl-pod", "spl-program-error", @@ -9924,7 +9073,7 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-program 2.2.1", + "solana-program", "thiserror 1.0.69", ] @@ -9939,7 +9088,7 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-program 2.2.1", + "solana-program", "solana-security-txt", "solana-zk-sdk", "spl-elgamal-registry", @@ -9967,7 +9116,7 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-program 2.2.1", + "solana-program", "solana-security-txt", "solana-zk-sdk", "spl-elgamal-registry", @@ -10004,7 +9153,7 @@ checksum = "eff2d6a445a147c9d6dd77b8301b1e116c8299601794b558eafa409b342faf96" dependencies = [ "bytemuck", "solana-curve25519", - "solana-program 2.2.1", + "solana-program", "solana-zk-sdk", "spl-pod", "thiserror 2.0.17", @@ -10042,10 +9191,10 @@ dependencies = [ "num-derive", "num-traits", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", "spl-discriminator", "spl-pod", "thiserror 1.0.69", @@ -10060,12 +9209,12 @@ dependencies = [ "borsh 1.6.0", "num-derive", "num-traits", - "solana-borsh 2.2.1", + "solana-borsh", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", "spl-discriminator", "spl-pod", "spl-type-length-value", @@ -10082,13 +9231,13 @@ dependencies = [ "bytemuck", "num-derive", "num-traits", - "solana-account-info 2.2.1", - "solana-cpi 2.2.1", + "solana-account-info", + "solana-cpi", "solana-decode-error", - "solana-instruction 2.2.1", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", - "solana-pubkey 2.2.1", + "solana-instruction", + "solana-msg", + "solana-program-error", + "solana-pubkey", "spl-discriminator", "spl-pod", "spl-program-error", @@ -10106,10 +9255,10 @@ dependencies = [ "bytemuck", "num-derive", "num-traits", - "solana-account-info 2.2.1", + "solana-account-info", "solana-decode-error", - "solana-msg 2.2.1", - "solana-program-error 2.2.2", + "solana-msg", + "solana-program-error", "spl-discriminator", "spl-pod", "thiserror 1.0.69", @@ -10139,7 +9288,16 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" dependencies = [ - "strum_macros", + "strum_macros 0.24.3", +] + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", ] [[package]] @@ -10155,6 +9313,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "subtle" version = "2.6.1" @@ -10243,7 +9413,7 @@ dependencies = [ name = "sysvars" version = "0.0.0" dependencies = [ - "solana-program 2.2.1", + "solana-program", ] [[package]] @@ -10345,19 +9515,19 @@ dependencies = [ "log", "magicblock-chainlink", "magicblock-config", - "magicblock-delegation-program", + "magicblock-delegation-program 1.1.3 (git+https://github.com/magicblock-labs/delegation-program.git?rev=1bcaf4d)", "program-flexi-counter", "program-mini", "solana-account", "solana-loader-v2-interface", "solana-loader-v3-interface 4.0.1", "solana-loader-v4-interface", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", - "solana-sdk-ids 2.2.1", - "solana-system-interface 1.0.0", + "solana-sdk-ids", + "solana-system-interface", "spl-token", "tokio", ] @@ -10407,9 +9577,9 @@ dependencies = [ "magicblock-ledger", "magicblock-processor", "solana-account", - "solana-instruction 2.2.1", + "solana-instruction", "solana-keypair", - "solana-program 2.2.1", + "solana-program", "solana-rpc-client", "solana-signature", "solana-signer", @@ -10428,7 +9598,7 @@ dependencies = [ "log", "magicblock-accounts-db", "magicblock-config", - "magicblock-delegation-program", + "magicblock-delegation-program 1.1.3 (git+https://github.com/magicblock-labs/delegation-program.git?rev=1bcaf4d)", "program-flexi-counter", "solana-rpc-client", "solana-sdk", @@ -10449,7 +9619,7 @@ dependencies = [ "magic-domain-program", "magicblock-api", "magicblock-config", - "magicblock-delegation-program", + "magicblock-delegation-program 1.1.3 (git+https://github.com/magicblock-labs/delegation-program.git?rev=1bcaf4d)", "magicblock-program", "magicblock-validator-admin", "solana-rpc-client", @@ -10489,7 +9659,7 @@ version = "0.0.0" dependencies = [ "integration-test-tools", "log", - "magicblock-delegation-program", + "magicblock-delegation-program 1.1.3 (git+https://github.com/magicblock-labs/delegation-program.git?rev=1bcaf4d)", "program-flexi-counter", "solana-rpc-client-api", "solana-sdk", @@ -10504,7 +9674,7 @@ dependencies = [ "magicblock-rpc-client", "magicblock-table-mania", "paste", - "solana-pubkey 2.2.1", + "solana-pubkey", "solana-rpc-client", "solana-sdk", "test-kit", diff --git a/test-integration/Cargo.toml b/test-integration/Cargo.toml index 334253533..4d57fa42c 100644 --- a/test-integration/Cargo.toml +++ b/test-integration/Cargo.toml @@ -36,7 +36,7 @@ chrono = "0.4" cleanass = "0.0.1" color-backtrace = { version = "0.7" } ctrlc = "3.4.7" -ephemeral-rollups-sdk = { git = "https://github.com/magicblock-labs/ephemeral-rollups-sdk.git", rev = "2d0f16b" } +ephemeral-rollups-sdk = { git = "https://github.com/magicblock-labs/ephemeral-rollups-sdk.git", rev = "36f9485", default-features = false, features = ["modular-sdk"] } futures = "0.3.31" integration-test-tools = { path = "test-tools" } isocountry = "0.3.2" @@ -55,10 +55,10 @@ magicblock-committor-program = { path = "../magicblock-committor-program", featu magicblock-committor-service = { path = "../magicblock-committor-service" } magicblock-config = { path = "../magicblock-config" } magicblock-core = { path = "../magicblock-core" } -magic-domain-program = { git = "https://github.com/magicblock-labs/magic-domain-program.git", rev = "ea04d46", default-features = false } +magic-domain-program = { git = "https://github.com/magicblock-labs/magic-domain-program.git", rev = "cffcfeb", default-features = false, features = ["modular-sdk"] } magicblock_magic_program_api = { package = "magicblock-magic-program-api", path = "../magicblock-magic-program-api" } -magicblock-delegation-program = { git = "https://github.com/magicblock-labs/delegation-program.git", rev = "aa1de56d90c", features = [ - "no-entrypoint", +magicblock-delegation-program = { git = "https://github.com/magicblock-labs/delegation-program.git", rev = "1bcaf4d", default-features = false, features = [ + "sdk", ] } magicblock-program = { path = "../programs/magicblock" } magicblock-rpc-client = { path = "../magicblock-rpc-client" } diff --git a/test-integration/Makefile b/test-integration/Makefile index e42ebfcec..05dd99a64 100644 --- a/test-integration/Makefile +++ b/test-integration/Makefile @@ -210,11 +210,13 @@ deploy-flexi-counter: $(FLEXI_COUNTER_SO) fmt: cargo +nightly fmt -- --config-path ../rustfmt-nightly.toml +lint: + cargo clippy --all-targets -- -D warnings + ci-fmt: cargo +nightly fmt --check -- --config-path ../rustfmt-nightly.toml -ci-lint: - cargo clippy --all-targets -- -D warnings +ci-lint: lint .PHONY: \ ci-fmt \ diff --git a/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs b/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs index f2c5eecd5..f038adfa2 100644 --- a/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs +++ b/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs @@ -1,17 +1,20 @@ use log::debug; use magicblock_chainlink::{ - testing::{deleg::add_delegation_record_for, init_logger}, + testing::{ + deleg::add_delegation_record_for, + eatas::{ + create_ata_account, create_eata_account, derive_ata, derive_eata, + }, + init_logger, + }, AccountFetchOrigin, }; -use solana_account::{ReadableAccount}; +use solana_account::ReadableAccount; use solana_pubkey::{pubkey, Pubkey}; use solana_sdk::signature::{Keypair, Signer}; -use spl_token::solana_program::program_pack::Pack; -use spl_token::state::AccountState; -use magicblock_chainlink::testing::eatas::{create_ata_account, create_eata_account, derive_ata, derive_eata}; +use spl_token::{solana_program::program_pack::Pack, state::AccountState}; use test_chainlink::test_context::TestContext; - #[tokio::test] async fn ixtest_ata_eata_replace_when_delegated_to_us() { init_logger(); @@ -33,18 +36,17 @@ async fn ixtest_ata_eata_replace_when_delegated_to_us() { let ata = create_ata_account(&wallet_owner, &mint); let eata = create_eata_account(&wallet_owner, &mint, amount, true); - ctx.rpc_client.add_account( - ata_pubkey, - ata.clone(), - ); - ctx.rpc_client.add_account( - eata_pubkey, - eata.clone(), - ); + ctx.rpc_client.add_account(ata_pubkey, ata.clone()); + ctx.rpc_client.add_account(eata_pubkey, eata.clone()); // Add delegation record for ATA delegated to our validator let validator = ctx.validator_pubkey; - add_delegation_record_for(&ctx.rpc_client, eata_pubkey, validator, wallet_owner); + add_delegation_record_for( + &ctx.rpc_client, + eata_pubkey, + validator, + wallet_owner, + ); // Ensure account (this triggers fetch_cloner logic including ATA/eATA handling) let pubkeys = [ata_pubkey]; @@ -60,7 +62,8 @@ async fn ixtest_ata_eata_replace_when_delegated_to_us() { .cloner .get_account(&ata_pubkey) .expect("ATA should be cloned into bank"); - let spl_token_account = spl_token::state::Account::unpack_from_slice(cloned.data()).unwrap(); + let spl_token_account = + spl_token::state::Account::unpack_from_slice(cloned.data()).unwrap(); assert_eq!(spl_token_account.mint, mint); assert_eq!(spl_token_account.amount, amount); assert_eq!(spl_token_account.owner, wallet_owner); @@ -84,10 +87,7 @@ async fn ixtest_ata_eata_no_replace_when_not_delegated() { let ata_pubkey = derive_ata(&wallet_owner, &mint); let ata = create_ata_account(&wallet_owner, &mint); - ctx.rpc_client.add_account( - ata_pubkey, - ata.clone(), - ); + ctx.rpc_client.add_account(ata_pubkey, ata.clone()); // Note: No delegation record added here let pubkeys = [ata_pubkey]; @@ -128,17 +128,16 @@ async fn ixtest_ata_eata_no_replace_when_not_delegated_to_us() { let ata = create_ata_account(&wallet_owner, &mint); let eata = create_eata_account(&wallet_owner, &mint, amount, true); - ctx.rpc_client.add_account( - ata_pubkey, - ata.clone(), - ); - ctx.rpc_client.add_account( - eata_pubkey, - eata.clone(), - ); + ctx.rpc_client.add_account(ata_pubkey, ata.clone()); + ctx.rpc_client.add_account(eata_pubkey, eata.clone()); // Add delegation record to a random validator - add_delegation_record_for(&ctx.rpc_client, eata_pubkey, Keypair::new().pubkey(), wallet_owner); + add_delegation_record_for( + &ctx.rpc_client, + eata_pubkey, + Keypair::new().pubkey(), + wallet_owner, + ); // Ensure account (this triggers fetch_cloner logic including ATA/eATA handling) let pubkeys = [ata_pubkey]; From 37debe7c1ee348fa23c2d7d0e30362aa79832382 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Thu, 18 Dec 2025 14:09:02 +0100 Subject: [PATCH 11/15] chore: fix integration tests --- magicblock-api/src/domain_registry_manager.rs | 21 +++++++------------ magicblock-api/src/magic_validator.rs | 2 +- .../src/chainlink/fetch_cloner.rs | 8 +++---- magicblock-core/src/token_programs.rs | 1 - .../test-chainlink/src/ixtest_context.rs | 7 ++----- .../tests/ix_ata_eata_replace.rs | 3 ++- 6 files changed, 15 insertions(+), 27 deletions(-) diff --git a/magicblock-api/src/domain_registry_manager.rs b/magicblock-api/src/domain_registry_manager.rs index 949c7ce76..cf322a394 100644 --- a/magicblock-api/src/domain_registry_manager.rs +++ b/magicblock-api/src/domain_registry_manager.rs @@ -65,7 +65,7 @@ impl DomainRegistryManager { let (pda, _) = validator_info.pda(); self.send_instruction( payer, - pda.to_bytes().into(), + pda, mdp::instructions::Instruction::Register(validator_info), ) .context("Failed to send register tx")?; @@ -92,7 +92,7 @@ impl DomainRegistryManager { let (pda, _) = validator_info.pda(); self.send_instruction( payer, - pda.to_bytes().into(), + pda, mdp::instructions::Instruction::Sync(SyncInstruction::V0( sync_info, )), @@ -104,7 +104,7 @@ impl DomainRegistryManager { pub fn get_pda(pubkey: &Pubkey) -> (Pubkey, u8) { let seeds = [ER_RECORD_SEED, pubkey.as_ref()]; - Pubkey::find_program_address(&seeds, &ID.to_bytes().into()) + Pubkey::find_program_address(&seeds, &ID) } pub fn unregister(&self, payer: &Keypair) -> Result<(), Error> { @@ -117,9 +117,7 @@ impl DomainRegistryManager { self.send_instruction( payer, pda, - mdp::instructions::Instruction::Unregister( - payer.pubkey().to_bytes().into(), - ), + mdp::instructions::Instruction::Unregister(payer.pubkey()), ) .context("Failed to unregister")?; @@ -131,9 +129,7 @@ impl DomainRegistryManager { payer: &Keypair, validator_info: ErRecord, ) -> Result<(), Error> { - match self - .fetch_validator_info(&validator_info.pda().0.to_bytes().into())? - { + match self.fetch_validator_info(&validator_info.pda().0)? { Some(current_validator_info) => { if current_validator_info == validator_info { info!("Domain registry record for the validator is up to date, skipping sync"); @@ -171,11 +167,8 @@ impl DomainRegistryManager { AccountMeta::new_readonly(system_program::id(), false), ]; - let instruction = Instruction::new_with_borsh( - ID.to_bytes().into(), - &instruction, - accounts, - ); + let instruction = + Instruction::new_with_borsh(ID, &instruction, accounts); let recent_blockhash = self .client .get_latest_blockhash() diff --git a/magicblock-api/src/magic_validator.rs b/magicblock-api/src/magic_validator.rs index dcc3b8f71..9760030d5 100644 --- a/magicblock-api/src/magic_validator.rs +++ b/magicblock-api/src/magic_validator.rs @@ -526,7 +526,7 @@ impl MagicValidator { let country_code = CountryCode::from(config.country_code.alpha3()); let validator_keypair = validator_authority(); let validator_info = ErRecord::V0(RecordV0 { - identity: validator_keypair.pubkey().to_bytes().into(), + identity: validator_keypair.pubkey(), status: ErStatus::Active, block_time_ms: self.config.ledger.block_time_ms() as u16, base_fee: self.config.validator.basefee as u16, diff --git a/magicblock-chainlink/src/chainlink/fetch_cloner.rs b/magicblock-chainlink/src/chainlink/fetch_cloner.rs index e70be6478..b3de4ddda 100644 --- a/magicblock-chainlink/src/chainlink/fetch_cloner.rs +++ b/magicblock-chainlink/src/chainlink/fetch_cloner.rs @@ -1147,7 +1147,7 @@ where companion_pubkey: eata_pubkey, companion_account: maybe_eata_account, })) => { - // Convert to AccountSharedData using the bank snapshot + // Convert to AccountSharedData let mut account_to_clone = ata_account.account_shared_data_cloned(); let mut commit_frequency_ms = None; @@ -1162,10 +1162,8 @@ where ) .await { - let is_delegated_to_us = deleg - .authority - .eq(&self.validator_pubkey) - || deleg.authority.eq(&Pubkey::default()); + let is_delegated_to_us = + deleg.authority.eq(&self.validator_pubkey); if is_delegated_to_us { if let Some(projected_ata) = eata_shared.maybe_into_ata(deleg.owner) diff --git a/magicblock-core/src/token_programs.rs b/magicblock-core/src/token_programs.rs index 31d514976..ef22a121b 100644 --- a/magicblock-core/src/token_programs.rs +++ b/magicblock-core/src/token_programs.rs @@ -178,7 +178,6 @@ impl MaybeIntoAta for AccountSharedData { &self, owner_program: Pubkey, ) -> Option { - // Only proceed if the provided owner matches eATA program if owner_program != EATA_PROGRAM_ID { return None; } diff --git a/test-integration/test-chainlink/src/ixtest_context.rs b/test-integration/test-chainlink/src/ixtest_context.rs index 247a54d11..9717af779 100644 --- a/test-integration/test-chainlink/src/ixtest_context.rs +++ b/test-integration/test-chainlink/src/ixtest_context.rs @@ -94,11 +94,8 @@ impl IxtestContext { }]; // Add all native programs let native_programs = native_program_accounts(); - let program_stub = AccountSharedData::new( - 0, - 0, - &(native_loader::id().to_bytes().into()), - ); + let program_stub = + AccountSharedData::new(0, 0, &(native_loader::id())); for pubkey in native_programs { cloner .clone_account(AccountCloneRequest { diff --git a/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs b/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs index f038adfa2..526990aa6 100644 --- a/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs +++ b/test-integration/test-chainlink/tests/ix_ata_eata_replace.rs @@ -4,6 +4,7 @@ use magicblock_chainlink::{ deleg::add_delegation_record_for, eatas::{ create_ata_account, create_eata_account, derive_ata, derive_eata, + EATA_PROGRAM_ID, }, init_logger, }, @@ -45,7 +46,7 @@ async fn ixtest_ata_eata_replace_when_delegated_to_us() { &ctx.rpc_client, eata_pubkey, validator, - wallet_owner, + EATA_PROGRAM_ID, ); // Ensure account (this triggers fetch_cloner logic including ATA/eATA handling) From bb52962adaacf258e4fc7f6fcc67a81c8ddb154e Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Thu, 18 Dec 2025 14:11:11 +0100 Subject: [PATCH 12/15] chore: refactor --- magicblock-chainlink/src/testing/eatas.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/magicblock-chainlink/src/testing/eatas.rs b/magicblock-chainlink/src/testing/eatas.rs index 5d844957f..e9c65288b 100644 --- a/magicblock-chainlink/src/testing/eatas.rs +++ b/magicblock-chainlink/src/testing/eatas.rs @@ -8,6 +8,11 @@ use solana_pubkey::Pubkey; use solana_sysvar::rent::Rent; use spl_token::state::{Account as SplAccount, AccountState}; +/// Creates a test ATA (Associated Token Account) with initialized state and zero balance. +/// +/// # Arguments +/// * `owner` - The public key of the account owner +/// * `mint` - The public key of the token mint pub fn create_ata_account(owner: &Pubkey, mint: &Pubkey) -> Account { let token_account = SplAccount { mint: *mint, @@ -45,7 +50,7 @@ pub fn create_eata_account( data.extend_from_slice(&amount.to_le_bytes()); let lamports = Rent::default().minimum_balance(data.len()); - let account_owner = if delegate { dlp::ID } else { EATA_PROGRAM_ID }; + let account_owner = if delegate { dlp::id() } else { EATA_PROGRAM_ID }; Account { owner: account_owner, From c10e384478f97c8bac2d6b85b164e6c6a2812366 Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Thu, 18 Dec 2025 14:12:32 +0100 Subject: [PATCH 13/15] chore: refactor --- .../src/schedule_transactions/process_schedule_commit_tests.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs b/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs index 52fde328a..fe0d7d50e 100644 --- a/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs +++ b/programs/magicblock/src/schedule_transactions/process_schedule_commit_tests.rs @@ -267,7 +267,6 @@ mod tests { owner: &Pubkey, mint: &Pubkey, ) -> AccountSharedData { - // Use shared helper to create a valid SPL ATA account, then convert and mark delegated let ata_account = create_ata_account(owner, mint); let mut acc = AccountSharedData::from(ata_account); acc.set_delegated(true); From 3b6e840c0ff68af86d34a51d2447ea9649524b9a Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Thu, 18 Dec 2025 14:21:09 +0100 Subject: [PATCH 14/15] fix: flaky ledger test --- test-integration/Makefile | 1 + .../tests/14_restore_with_new_keypair.rs | 16 ---- .../src/integration_test_context.rs | 78 +++++++++++++++---- 3 files changed, 62 insertions(+), 33 deletions(-) diff --git a/test-integration/Makefile b/test-integration/Makefile index 05dd99a64..95ff8551e 100644 --- a/test-integration/Makefile +++ b/test-integration/Makefile @@ -220,6 +220,7 @@ ci-lint: lint .PHONY: \ ci-fmt \ + lint \ ci-lint \ deploy-flexi-counter \ fmt \ diff --git a/test-integration/test-ledger-restore/tests/14_restore_with_new_keypair.rs b/test-integration/test-ledger-restore/tests/14_restore_with_new_keypair.rs index 71d04b485..6ae3aad4a 100644 --- a/test-integration/test-ledger-restore/tests/14_restore_with_new_keypair.rs +++ b/test-integration/test-ledger-restore/tests/14_restore_with_new_keypair.rs @@ -39,14 +39,6 @@ fn test_restore_ledger_with_new_validator_authority() { fn write(ledger_path: &Path) -> (Child, u64) { let loaded_chain_accounts = LoadedAccounts::new_with_new_validator_authority(); - // Airdrop to the new validator authority - IntegrationTestContext::try_new_chain_only() - .unwrap() - .airdrop_chain( - &loaded_chain_accounts.validator_authority(), - 10 * LAMPORTS_PER_SOL, - ) - .unwrap(); let (_, mut validator, ctx) = setup_validator_with_local_remote( ledger_path, None, @@ -98,14 +90,6 @@ fn write(ledger_path: &Path) -> (Child, u64) { fn read(ledger_path: &Path) -> Child { let loaded_chain_accounts = LoadedAccounts::new_with_new_validator_authority(); - // Airdrop to the new validator authority - IntegrationTestContext::try_new_chain_only() - .unwrap() - .airdrop_chain( - &loaded_chain_accounts.validator_authority(), - 10 * LAMPORTS_PER_SOL, - ) - .unwrap(); let (_, mut validator, ctx) = setup_validator_with_local_remote( ledger_path, None, diff --git a/test-integration/test-tools/src/integration_test_context.rs b/test-integration/test-tools/src/integration_test_context.rs index fcfc346e5..e42a0b05a 100644 --- a/test-integration/test-tools/src/integration_test_context.rs +++ b/test-integration/test-tools/src/integration_test_context.rs @@ -615,25 +615,69 @@ impl IntegrationTestContext { lamports: u64, commitment_config: CommitmentConfig, ) -> anyhow::Result { - let sig = rpc_client.request_airdrop(pubkey, lamports).with_context( - || format!("Failed to airdrop chain account '{:?}'", pubkey), - )?; - - let succeeded = - confirm_transaction(&sig, rpc_client, commitment_config, None) - .with_context(|| { - format!( - "Failed to confirm airdrop chain account '{:?}'", - pubkey + // The chain RPC might not be immediately ready (especially in CI). + // Retry requesting the airdrop a few times before giving up. + const MAX_ATTEMPTS: u32 = 60; // Up to ~60s with adaptive backoff + const MILLIS_UNTIL_RETRY_NORMAL: u64 = 250; + const MILLIS_UNTIL_RETRY_RATE_LIMITED: u64 = 1500; + + let mut last_err: Option = None; + for attempt in 1..=MAX_ATTEMPTS { + match rpc_client.request_airdrop(pubkey, lamports) { + Ok(sig) => { + let succeeded = confirm_transaction( + &sig, + rpc_client, + commitment_config, + None, ) - })?; - if !succeeded { - return Err(anyhow::anyhow!( - "Failed to airdrop chain account '{:?}'", - pubkey - )); + .with_context(|| { + format!( + "Failed to confirm airdrop chain account '{:?}'", + pubkey + ) + })?; + if !succeeded { + return Err(anyhow::anyhow!( + "Failed to airdrop chain account '{:?}'", + pubkey + )); + } + return Ok(sig); + } + Err(err) => { + let err_msg = err.to_string(); + last_err = Some(err.into()); + let (reason, delay_ms) = if err_msg + .to_ascii_lowercase() + .contains("rate limit") + { + ("rate-limited", MILLIS_UNTIL_RETRY_RATE_LIMITED) + } else { + ("rpc-error", MILLIS_UNTIL_RETRY_NORMAL) + }; + debug!( + "Airdrop request failed for {} ({}; attempt {}/{}), retrying in {}ms...", + pubkey, + reason, + attempt, + MAX_ATTEMPTS, + delay_ms + ); + // Only sleep if we will retry again + if attempt < MAX_ATTEMPTS { + sleep(Duration::from_millis(delay_ms)); + } + } + } } - Ok(sig) + + Err(last_err.unwrap_or_else(|| { + anyhow::anyhow!( + "Failed to airdrop chain account '{:?}' (unknown error)", + pubkey + ) + })) } // ----------------- From 53461a06b6eca8058c4c0ceeab4ea93845ef111a Mon Sep 17 00:00:00 2001 From: Gabriele Picco Date: Thu, 18 Dec 2025 15:39:46 +0100 Subject: [PATCH 15/15] chore: lint --- magicblock-core/src/token_programs.rs | 36 ++++++++++++++++--- .../tests/14_restore_with_new_keypair.rs | 2 +- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/magicblock-core/src/token_programs.rs b/magicblock-core/src/token_programs.rs index ef22a121b..244c7a717 100644 --- a/magicblock-core/src/token_programs.rs +++ b/magicblock-core/src/token_programs.rs @@ -17,7 +17,14 @@ pub const ASSOCIATED_TOKEN_PROGRAM_ID: Pubkey = pub const EATA_PROGRAM_ID: Pubkey = pubkey!("5iC4wKZizyxrKh271Xzx3W4Vn2xUyYvSGHeoB2mdw5HA"); -// Derive the standard ATA address for a given wallet owner and mint. +/// Derives the standard Associated Token Account (ATA) address for the given wallet owner and token mint. +/// +/// # Arguments +/// * `owner` - The public key of the account owner +/// * `mint` - The public key of the token mint +/// +/// # Returns +/// The derived ATA address as `Pubkey`. pub fn derive_ata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { Pubkey::find_program_address( &[owner.as_ref(), SPL_TOKEN_PROGRAM_ID.as_ref(), mint.as_ref()], @@ -26,7 +33,14 @@ pub fn derive_ata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { .0 } -// Try to derive the ATA address returning both address and bump if derivation succeeds. +/// Attempts to derive the ATA address for the given wallet owner and token mint, returning the address and bump. +/// +/// # Arguments +/// * `owner` - The public key of the account owner +/// * `mint` - The public key of the token mint +/// +/// # Returns +/// `Option<(Pubkey, u8)>` — `Some((address, bump))` if derivation succeeds, `None` otherwise. pub fn try_derive_ata_address_and_bump( owner: &Pubkey, mint: &Pubkey, @@ -37,7 +51,14 @@ pub fn try_derive_ata_address_and_bump( ) } -// Derive the eATA PDA for a given wallet owner and mint. +/// Derives the Enhanced Associated Token Account (eATA) Program Derived Address (PDA) for the given wallet owner and token mint. +/// +/// # Arguments +/// * `owner` - The public key of the account owner +/// * `mint` - The public key of the token mint +/// +/// # Returns +/// The derived eATA PDA as `Pubkey`. pub fn derive_eata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { Pubkey::find_program_address( &[owner.as_ref(), mint.as_ref()], @@ -46,7 +67,14 @@ pub fn derive_eata(owner: &Pubkey, mint: &Pubkey) -> Pubkey { .0 } -// Try to derive the eATA PDA returning both address and bump if derivation succeeds. +/// Attempts to derive the eATA PDA for the given wallet owner and token mint, returning the address and bump. +/// +/// # Arguments +/// * `owner` - The public key of the account owner +/// * `mint` - The public key of the token mint +/// +/// # Returns +/// `Option<(Pubkey, u8)>` — `Some((address, bump))` if derivation succeeds, `None` otherwise. pub fn try_derive_eata_address_and_bump( owner: &Pubkey, mint: &Pubkey, diff --git a/test-integration/test-ledger-restore/tests/14_restore_with_new_keypair.rs b/test-integration/test-ledger-restore/tests/14_restore_with_new_keypair.rs index 6ae3aad4a..a14912ecc 100644 --- a/test-integration/test-ledger-restore/tests/14_restore_with_new_keypair.rs +++ b/test-integration/test-ledger-restore/tests/14_restore_with_new_keypair.rs @@ -3,7 +3,7 @@ use std::{path::Path, process::Child}; use cleanass::{assert, assert_eq}; use integration_test_tools::{ expect, loaded_accounts::LoadedAccounts, tmpdir::resolve_tmp_dir, - validator::cleanup, IntegrationTestContext, + validator::cleanup, }; use solana_sdk::{ account::Account, instruction::Instruction, loader_v4,