From 9d2ff2ea8cc8954c9ca3d5a5613864e884459cb1 Mon Sep 17 00:00:00 2001 From: rustopian <96253492+rustopian@users.noreply.github.com> Date: Mon, 4 Aug 2025 21:32:44 +0100 Subject: [PATCH 01/11] init --- Cargo.lock | 34 +++++++++++++++---- Cargo.toml | 2 +- account-decoder/Cargo.toml | 2 +- account-decoder/src/parse_account_data.rs | 2 +- accounts-cluster-bench/Cargo.toml | 2 +- accounts-cluster-bench/src/main.rs | 20 +++++------ programs/sbf/Cargo.toml | 30 +--------------- rpc/Cargo.toml | 2 +- rpc/src/parsed_token_accounts.rs | 6 ++-- rpc/src/rpc.rs | 26 +++++++------- scripts/patch-spl-crates-for-anchor.sh | 6 ++-- svm/Cargo.toml | 2 +- svm/examples/Cargo.toml | 2 +- svm/examples/paytube/Cargo.toml | 2 +- svm/examples/paytube/src/settler.rs | 4 +-- svm/examples/paytube/src/transaction.rs | 4 +-- svm/examples/paytube/tests/setup.rs | 8 ++--- svm/tests/integration_test.rs | 18 +++++----- tokens/Cargo.toml | 4 ++- tokens/src/commands.rs | 4 +-- tokens/src/main.rs | 4 +-- tokens/src/spl_token.rs | 10 +++--- transaction-status/Cargo.toml | 2 +- .../src/parse_associated_token.rs | 2 +- transaction-status/src/parse_token.rs | 6 ++-- 25 files changed, 100 insertions(+), 104 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 93bcee7d3680ef..d4a38af86b197e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6772,9 +6772,9 @@ dependencies = [ "solana-vote-interface", "spl-generic-token", "spl-pod", - "spl-token", "spl-token-2022", "spl-token-group-interface", + "spl-token-interface", "spl-token-metadata-interface", "thiserror 2.0.12", "zstd", @@ -6849,7 +6849,7 @@ dependencies = [ "solana-transaction-status", "solana-version", "spl-generic-token", - "spl-token", + "spl-token-interface", "tikv-jemallocator", ] @@ -9997,8 +9997,8 @@ dependencies = [ "solana-vote-program", "spl-generic-token", "spl-pod", - "spl-token", "spl-token-2022", + "spl-token-interface", "stream-cancel", "symlink", "test-case", @@ -10930,7 +10930,7 @@ dependencies = [ "solana-transaction-error", "solana-type-overrides", "spl-generic-token", - "spl-token", + "spl-token-interface", "test-case", "thiserror 2.0.12", ] @@ -11215,6 +11215,8 @@ dependencies = [ "solana-logger", "solana-message", "solana-native-token", + "solana-program-error", + "solana-program-pack", "solana-pubkey", "solana-remote-wallet", "solana-rpc-client", @@ -11230,7 +11232,7 @@ dependencies = [ "solana-transaction-status", "solana-version", "spl-associated-token-account-interface", - "spl-token", + "spl-token-interface", "tempfile", "thiserror 2.0.12", ] @@ -11484,10 +11486,10 @@ dependencies = [ "solana-vote-interface", "spl-associated-token-account-interface", "spl-memo-interface", - "spl-token", "spl-token-2022", "spl-token-confidential-transfer-proof-extraction", "spl-token-group-interface", + "spl-token-interface", "spl-token-metadata-interface", "thiserror 2.0.12", ] @@ -12387,6 +12389,26 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "spl-token-interface" +version = "1.0.0" +source = "git+https://github.com/rustopian/token?branch=split-spl-token-interface#3126dc2b4f04d7c38265ee18114c5231a5958478" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-instruction", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sdk-ids", + "spl-pod", + "thiserror 2.0.12", +] + [[package]] name = "spl-token-metadata-interface" version = "0.7.0" diff --git a/Cargo.toml b/Cargo.toml index 1bae67b6e42462..66ec26504a87aa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -566,7 +566,7 @@ spl-associated-token-account-interface = "1.0.0" spl-generic-token = "1.0.1" spl-memo-interface = "1.0.0" spl-pod = "0.5.1" -spl-token = "8.0.0" +spl-token-interface = { version = "1.0.0", git = "https://github.com/rustopian/token", branch = "split-spl-token-interface" } spl-token-2022 = "8.0.1" spl-token-confidential-transfer-proof-extraction = "0.3.0" spl-token-group-interface = "0.6.0" diff --git a/account-decoder/Cargo.toml b/account-decoder/Cargo.toml index eb8f97da89a49c..ac72ae261704c2 100644 --- a/account-decoder/Cargo.toml +++ b/account-decoder/Cargo.toml @@ -45,7 +45,7 @@ solana-stake-interface = { workspace = true } solana-sysvar = { workspace = true } solana-vote-interface = { workspace = true, features = ["bincode"] } spl-generic-token = { workspace = true } -spl-token = { workspace = true, features = ["no-entrypoint"] } +spl-token-interface = { workspace = true } spl-token-2022 = { workspace = true, features = ["no-entrypoint"] } spl-token-group-interface = { workspace = true } spl-token-metadata-interface = { workspace = true } diff --git a/account-decoder/src/parse_account_data.rs b/account-decoder/src/parse_account_data.rs index 6cf54d11c8fd93..4ca83eadab022d 100644 --- a/account-decoder/src/parse_account_data.rs +++ b/account-decoder/src/parse_account_data.rs @@ -33,7 +33,7 @@ pub static PARSABLE_PROGRAM_IDS: std::sync::LazyLock Result<(Pubkey, SplTokenAdditionalDataV2)> { - if mint == &spl_token::native_mint::id() { + if mint == &spl_token_interface::native_mint::id() { Ok(( - spl_token::id(), - SplTokenAdditionalDataV2::with_decimals(spl_token::native_mint::DECIMALS), + spl_token_interface::id(), + SplTokenAdditionalDataV2::with_decimals(spl_token_interface::native_mint::DECIMALS), )) } else { let mint_account = bank.get_account(mint).ok_or_else(|| { diff --git a/rpc/src/rpc.rs b/rpc/src/rpc.rs index 30473d4524cd4b..19be172160ec27 100644 --- a/rpc/src/rpc.rs +++ b/rpc/src/rpc.rs @@ -6255,11 +6255,11 @@ pub mod tests { // init mint let mint_rent_exempt_amount = - bank.get_minimum_balance_for_rent_exemption(spl_token::state::Mint::LEN); + bank.get_minimum_balance_for_rent_exemption(spl_token_interface::state::Mint::LEN); let mint_pubkey = Pubkey::from_str("mint111111111111111111111111111111111111111").unwrap(); - let mut mint_data = [0u8; spl_token::state::Mint::LEN]; + let mut mint_data = [0u8; spl_token_interface::state::Mint::LEN]; Pack::pack_into_slice( - &spl_token::state::Mint { + &spl_token_interface::state::Mint { mint_authority: COption::None, supply: 0, decimals: 8, @@ -6271,7 +6271,7 @@ pub mod tests { let account = AccountSharedData::create( mint_rent_exempt_amount, mint_data.into(), - spl_token::id(), + spl_token_interface::id(), false, 0, ); @@ -6279,17 +6279,17 @@ pub mod tests { // init token account let token_account_rent_exempt_amount = - bank.get_minimum_balance_for_rent_exemption(spl_token::state::Account::LEN); + bank.get_minimum_balance_for_rent_exemption(spl_token_interface::state::Account::LEN); let token_account_pubkey = Pubkey::new_unique(); let owner_pubkey = Pubkey::from_str("owner11111111111111111111111111111111111111").unwrap(); - let mut token_account_data = [0u8; spl_token::state::Account::LEN]; + let mut token_account_data = [0u8; spl_token_interface::state::Account::LEN]; Pack::pack_into_slice( - &spl_token::state::Account { + &spl_token_interface::state::Account { mint: mint_pubkey, owner: owner_pubkey, amount: 1, delegate: COption::None, - state: spl_token::state::AccountState::Initialized, + state: spl_token_interface::state::AccountState::Initialized, is_native: COption::None, delegated_amount: 0, close_authority: COption::None, @@ -6299,7 +6299,7 @@ pub mod tests { let account = AccountSharedData::create( token_account_rent_exempt_amount, token_account_data.into(), - spl_token::id(), + spl_token_interface::id(), false, 0, ); @@ -6366,9 +6366,9 @@ pub mod tests { }, "executable": false, "lamports": (token_account_rent_exempt_amount + 1), - "owner": bs58::encode(spl_token::id()).into_string(), + "owner": bs58::encode(spl_token_interface::id()).into_string(), "rentEpoch": u64::MAX, - "space": spl_token::state::Account::LEN + "space": spl_token_interface::state::Account::LEN }, ], "err": null, @@ -8296,7 +8296,7 @@ pub mod tests { } } - #[test_case(spl_token::id(), None, None; "spl_token")] + #[test_case(spl_token_interface::id(), None, None; "spl_token")] #[test_case(spl_token_2022::id(), Some(InterestBearingConfig { pre_update_average_rate: 500.into(), current_rate: 500.into(),..Default::default() }), None; "spl_token_2022_with _interest")] #[test_case(spl_token_2022::id(), None, Some(ScaledUiAmountConfig { new_multiplier: 2.0f64.into(), ..Default::default() }); "spl-token-2022 with multiplier")] fn test_token_parsing( @@ -8575,7 +8575,7 @@ pub mod tests { let owner = Pubkey::new_unique(); assert_eq!( get_spl_token_owner_filter( - &spl_token::id(), + &spl_token_interface::id(), &[ RpcFilterType::Memcmp(Memcmp::new_raw_bytes(32, owner.to_bytes().to_vec())), RpcFilterType::DataSize(165) diff --git a/scripts/patch-spl-crates-for-anchor.sh b/scripts/patch-spl-crates-for-anchor.sh index 3ef8672b19d588..af8c9ee3103ca4 100644 --- a/scripts/patch-spl-crates-for-anchor.sh +++ b/scripts/patch-spl-crates-for-anchor.sh @@ -38,8 +38,8 @@ update_spl_dependencies() { sed -i -e "s#\(spl-associated-token-account = { version = \"\)[^\"]*\(\"\)#\1$spl_associated_token_account_version\2#g" "${tomls[@]}" || return $? sed -i -e "s#\(spl-pod = \"\)[^\"]*\(\"\)#\1$spl_pod_version\2#g" "${tomls[@]}" || return $? sed -i -e "s#\(spl-pod = { version = \"\)[^\"]*\(\"\)#\1$spl_pod_version\2#g" "${tomls[@]}" || return $? - sed -i -e "s#\(spl-token = \"\)[^\"]*\(\"\)#\1$spl_token_version\2#g" "${tomls[@]}" || return $? - sed -i -e "s#\(spl-token = { version = \"\)[^\"]*\(\"\)#\1$spl_token_version\2#g" "${tomls[@]}" || return $? + sed -i -e "s#\(spl-token-interface = \"\)[^\"]*\(\"\)#\1$spl_token_version\2#g" "${tomls[@]}" || return $? + sed -i -e "s#\(spl-token-interface = { version = \"\)[^\"]*\(\"\)#\1$spl_token_version\2#g" "${tomls[@]}" || return $? sed -i -e "s#\(spl-token-2022 = \"\).*\(\"\)#\1$spl_token_2022_version\2#g" "${tomls[@]}" || return $? sed -i -e "s#\(spl-token-2022 = { version = \"\)[^\"]*\(\"\)#\1$spl_token_2022_version\2#g" "${tomls[@]}" || return $? sed -i -e "s#\(spl-token-group-interface = \"\)[^\"]*\(\"\)#\1=$spl_token_group_interface_version\2#g" "${tomls[@]}" || return $? @@ -64,7 +64,7 @@ patch_crates_io() { cat >> "$Cargo_toml" < for SolanaInstruction { if let Some(mint) = mint { let source_pubkey = get_associated_token_address(from, mint); let destination_pubkey = get_associated_token_address(to, mint); - return spl_token::instruction::transfer( - &spl_token::id(), + return spl_token_interface::instruction::transfer( + &spl_token_interface::id(), &source_pubkey, &destination_pubkey, from, diff --git a/svm/examples/paytube/tests/setup.rs b/svm/examples/paytube/tests/setup.rs index 6e7a923186bc40..f4ff327b8d5052 100644 --- a/svm/examples/paytube/tests/setup.rs +++ b/svm/examples/paytube/tests/setup.rs @@ -8,7 +8,7 @@ use { solana_pubkey::Pubkey, solana_system_interface::program as system_program, solana_test_validator::{TestValidator, TestValidatorGenesis}, - spl_token::state::{Account as TokenAccount, Mint}, + spl_token_interface::state::{Account as TokenAccount, Mint}, }; const SLOTS_PER_EPOCH: u64 = 50; @@ -54,7 +54,7 @@ pub fn mint_account() -> AccountSharedData { .unwrap(); data }; - let mut account = AccountSharedData::new(100_000_000, data.len(), &spl_token::id()); + let mut account = AccountSharedData::new(100_000_000, data.len(), &spl_token_interface::id()); account.set_data_from_slice(&data); account } @@ -71,7 +71,7 @@ pub fn token_account(owner: &Pubkey, mint: &Pubkey, amount: u64) -> AccountShare mint: *mint, owner: *owner, amount, - state: spl_token::state::AccountState::Initialized, + state: spl_token_interface::state::AccountState::Initialized, ..Default::default() }, &mut data, @@ -79,7 +79,7 @@ pub fn token_account(owner: &Pubkey, mint: &Pubkey, amount: u64) -> AccountShare .unwrap(); data }; - let mut account = AccountSharedData::new(100_000_000, data.len(), &spl_token::id()); + let mut account = AccountSharedData::new(100_000_000, data.len(), &spl_token_interface::id()); account.set_data_from_slice(&data); account } diff --git a/svm/tests/integration_test.rs b/svm/tests/integration_test.rs index c79c27d642dd83..c6a7c669b1b426 100644 --- a/svm/tests/integration_test.rs +++ b/svm/tests/integration_test.rs @@ -3020,7 +3020,7 @@ mod balance_collector { solana_program_pack::Pack, solana_sdk_ids::bpf_loader, spl_generic_token::token_2022, - spl_token::state::{Account as TokenAccount, AccountState as TokenAccountState, Mint}, + spl_token_interface::state::{Account as TokenAccount, AccountState as TokenAccountState, Mint}, test_case::test_case, }; @@ -3064,8 +3064,8 @@ mod balance_collector { // we use a common account owner, the fee-payer, to conveniently reuse account state // so why do we sign? to force the sender and receiver to be in a consistent order in account keys // which means we can grab them by index in our final test instead of searching by key - let mut instruction = spl_token::instruction::transfer( - &spl_token::id(), + let mut instruction = spl_token_interface::instruction::transfer( + &spl_token_interface::id(), &self.from, &self.to, fee_payer, @@ -3122,7 +3122,7 @@ mod balance_collector { .pack_into_slice(&mut mint_buf); let mint_state = - AccountSharedData::create(LAMPORTS_PER_SOL, mint_buf, spl_token::id(), false, u64::MAX); + AccountSharedData::create(LAMPORTS_PER_SOL, mint_buf, spl_token_interface::id(), false, u64::MAX); let token_account_for_tests = || TokenAccount { mint, @@ -3138,7 +3138,7 @@ mod balance_collector { let token_state = AccountSharedData::create( LAMPORTS_PER_SOL, token_buf, - spl_token::id(), + spl_token_interface::id(), false, u64::MAX, ); @@ -3156,7 +3156,7 @@ mod balance_collector { test_entry.add_initial_account(fee_payer, &native_state.clone()); if use_tokens { - test_entry.add_initial_account(spl_token::id(), &spl_token); + test_entry.add_initial_account(spl_token_interface::id(), &spl_token); test_entry.add_initial_account(mint, &mint_state); test_entry.add_initial_account(alice, &token_state); test_entry.add_initial_account(bob, &token_state); @@ -3273,7 +3273,7 @@ mod balance_collector { let final_token_state = AccountSharedData::create( LAMPORTS_PER_SOL, token_buf.clone(), - spl_token::id(), + spl_token_interface::id(), false, u64::MAX, ); @@ -3284,7 +3284,7 @@ mod balance_collector { let final_token_state = AccountSharedData::create( LAMPORTS_PER_SOL, token_buf.clone(), - spl_token::id(), + spl_token_interface::id(), false, u64::MAX, ); @@ -3295,7 +3295,7 @@ mod balance_collector { let final_token_state = AccountSharedData::create( LAMPORTS_PER_SOL, token_buf.clone(), - spl_token::id(), + spl_token_interface::id(), false, u64::MAX, ); diff --git a/tokens/Cargo.toml b/tokens/Cargo.toml index 069e659039abb2..a08001c9634e45 100644 --- a/tokens/Cargo.toml +++ b/tokens/Cargo.toml @@ -30,6 +30,8 @@ solana-instruction = { workspace = true } solana-keypair = { workspace = true } solana-message = { workspace = true } solana-native-token = { workspace = true } +solana-program-error = { workspace = true } +solana-program-pack = { workspace = true } solana-pubkey = { workspace = true, features = ["rand"] } solana-remote-wallet = { workspace = true, features = ["default"] } solana-rpc-client = { workspace = true, features = ["default"] } @@ -42,7 +44,7 @@ solana-transaction = { workspace = true } solana-transaction-status = { workspace = true } solana-version = { workspace = true } spl-associated-token-account-interface = { version = "=1.0.0" } -spl-token = { version = "=8.0.0", features = ["no-entrypoint"] } +spl-token-interface = { version = "=1.0.0", git = "https://github.com/rustopian/token", branch = "split-spl-token-interface" } tempfile = { workspace = true } thiserror = { workspace = true } diff --git a/tokens/src/commands.rs b/tokens/src/commands.rs index 9ac6057d89308a..d9eaeb224f3ceb 100644 --- a/tokens/src/commands.rs +++ b/tokens/src/commands.rs @@ -4,7 +4,6 @@ use { BalancesArgs, DistributeTokensArgs, SenderStakeArgs, StakeArgs, TransactionLogArgs, }, db::{self, TransactionInfo}, - spl_token::*, token_display::Token, }, chrono::prelude::*, @@ -21,6 +20,7 @@ use { solana_instruction::Instruction, solana_message::Message, solana_native_token::{lamports_to_sol, sol_to_lamports}, + solana_program_error::ProgramError, solana_rpc_client::rpc_client::RpcClient, solana_rpc_client_api::{ client_error::{Error as ClientError, Result as ClientResult}, @@ -37,7 +37,7 @@ use { solana_transaction::Transaction, solana_transaction_status::TransactionStatus, spl_associated_token_account_interface::address::get_associated_token_address, - spl_token::solana_program::program_error::ProgramError, + spl_token_interface::build_spl_token_instructions, std::{ cmp::{self}, io, diff --git a/tokens/src/main.rs b/tokens/src/main.rs index c97287671dace5..c74da42522c9e8 100644 --- a/tokens/src/main.rs +++ b/tokens/src/main.rs @@ -42,12 +42,12 @@ fn main() -> Result<(), Box> { match command_args.command { Command::DistributeTokens(mut args) => { - spl_token::update_token_args(&client, &mut args.spl_token_args)?; + spl_token_interface::update_token_args(&client, &mut args.spl_token_args)?; stake::update_stake_args(&client, &mut args.stake_args)?; commands::process_allocations(&client, &args, exit)?; } Command::Balances(mut args) => { - spl_token::update_decimals(&client, &mut args.spl_token_args)?; + spl_token_interface::update_decimals(&client, &mut args.spl_token_args)?; commands::process_balances(&client, &args, exit)?; } Command::TransactionLog(args) => { diff --git a/tokens/src/spl_token.rs b/tokens/src/spl_token.rs index 35ce39fc2d98ae..6dcaeb98cf0896 100644 --- a/tokens/src/spl_token.rs +++ b/tokens/src/spl_token.rs @@ -8,12 +8,12 @@ use { solana_instruction::Instruction, solana_message::Message, solana_native_token::lamports_to_sol, + solana_program_pack::Pack, solana_rpc_client::rpc_client::RpcClient, spl_associated_token_account_interface::{ address::get_associated_token_address, instruction::create_associated_token_account, }, - spl_token::{ - solana_program::program_pack::Pack, + spl_token_interface::{ state::{Account as SplTokenAccount, Mint}, }, }; @@ -56,12 +56,12 @@ pub(crate) fn build_spl_token_instructions( &args.fee_payer.pubkey(), &wallet_address, &spl_token_args.mint, - &spl_token::id(), + &spl_token_interface::id(), )); } instructions.push( - spl_token::instruction::transfer_checked( - &spl_token::id(), + spl_token_interface::instruction::transfer_checked( + &spl_token_interface::id(), &spl_token_args.token_account_address, &spl_token_args.mint, &associated_token_address, diff --git a/transaction-status/Cargo.toml b/transaction-status/Cargo.toml index 19084ff2927e8f..41c4b0e573ca5d 100644 --- a/transaction-status/Cargo.toml +++ b/transaction-status/Cargo.toml @@ -44,7 +44,7 @@ solana-transaction-status-client-types = { workspace = true } solana-vote-interface = { workspace = true } spl-associated-token-account-interface = { workspace = true, features = ["borsh"] } spl-memo-interface = { workspace = true } -spl-token = { workspace = true, features = ["no-entrypoint"] } +spl-token-interface = { workspace = true } spl-token-2022 = { workspace = true, features = ["no-entrypoint"] } spl-token-group-interface = { workspace = true } spl-token-metadata-interface = { workspace = true } diff --git a/transaction-status/src/parse_associated_token.rs b/transaction-status/src/parse_associated_token.rs index 4a770d5f546408..96052dff7fd1c8 100644 --- a/transaction-status/src/parse_associated_token.rs +++ b/transaction-status/src/parse_associated_token.rs @@ -105,7 +105,7 @@ mod test { let wallet_address = Pubkey::new_unique(); let mint = Pubkey::new_unique(); let associated_account_address = get_associated_token_address(&wallet_address, &mint); - let token_program_id = spl_token::id(); + let token_program_id = spl_token_interface::id(); // mimic the deprecated instruction let mut create_ix = create_associated_token_account(&funder, &wallet_address, &mint, &token_program_id); diff --git a/transaction-status/src/parse_token.rs b/transaction-status/src/parse_token.rs index 383872969ba85e..84dbdb8728ce4c 100644 --- a/transaction-status/src/parse_token.rs +++ b/transaction-status/src/parse_token.rs @@ -1684,7 +1684,7 @@ mod test { let get_account_data_size_ix = get_account_data_size( program_id, &mint_pubkey, - &[], // This emulates the packed data of spl_token::instruction::get_account_data_size + &[], // This emulates the packed data of spl_token_interface::instruction::get_account_data_size ) .unwrap(); let message = Message::new(&[get_account_data_size_ix], None); @@ -1771,7 +1771,7 @@ mod test { #[test] fn test_parse_token_v3() { - test_parse_token(&spl_token::id()); + test_parse_token(&spl_token_interface::id()); } #[test] @@ -2149,7 +2149,7 @@ mod test { #[test] fn test_not_enough_keys_token_v3() { - test_token_ix_not_enough_keys(&spl_token::id()); + test_token_ix_not_enough_keys(&spl_token_interface::id()); } #[test] From 82aacc266835dd1e96743776b65026f5e236e3de Mon Sep 17 00:00:00 2001 From: rustopian <96253492+rustopian@users.noreply.github.com> Date: Mon, 4 Aug 2025 21:40:12 +0100 Subject: [PATCH 02/11] restore use of local helpers --- svm/tests/integration_test.rs | 13 ++++++++++--- tokens/src/commands.rs | 2 +- tokens/src/main.rs | 4 ++-- tokens/src/spl_token.rs | 4 +--- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/svm/tests/integration_test.rs b/svm/tests/integration_test.rs index c6a7c669b1b426..3bc42610f435bb 100644 --- a/svm/tests/integration_test.rs +++ b/svm/tests/integration_test.rs @@ -3020,7 +3020,9 @@ mod balance_collector { solana_program_pack::Pack, solana_sdk_ids::bpf_loader, spl_generic_token::token_2022, - spl_token_interface::state::{Account as TokenAccount, AccountState as TokenAccountState, Mint}, + spl_token_interface::state::{ + Account as TokenAccount, AccountState as TokenAccountState, Mint, + }, test_case::test_case, }; @@ -3121,8 +3123,13 @@ mod balance_collector { } .pack_into_slice(&mut mint_buf); - let mint_state = - AccountSharedData::create(LAMPORTS_PER_SOL, mint_buf, spl_token_interface::id(), false, u64::MAX); + let mint_state = AccountSharedData::create( + LAMPORTS_PER_SOL, + mint_buf, + spl_token_interface::id(), + false, + u64::MAX, + ); let token_account_for_tests = || TokenAccount { mint, diff --git a/tokens/src/commands.rs b/tokens/src/commands.rs index d9eaeb224f3ceb..13ac1711b24c50 100644 --- a/tokens/src/commands.rs +++ b/tokens/src/commands.rs @@ -4,6 +4,7 @@ use { BalancesArgs, DistributeTokensArgs, SenderStakeArgs, StakeArgs, TransactionLogArgs, }, db::{self, TransactionInfo}, + spl_token::{build_spl_token_instructions, check_spl_token_balances, print_token_balances}, token_display::Token, }, chrono::prelude::*, @@ -37,7 +38,6 @@ use { solana_transaction::Transaction, solana_transaction_status::TransactionStatus, spl_associated_token_account_interface::address::get_associated_token_address, - spl_token_interface::build_spl_token_instructions, std::{ cmp::{self}, io, diff --git a/tokens/src/main.rs b/tokens/src/main.rs index c74da42522c9e8..c97287671dace5 100644 --- a/tokens/src/main.rs +++ b/tokens/src/main.rs @@ -42,12 +42,12 @@ fn main() -> Result<(), Box> { match command_args.command { Command::DistributeTokens(mut args) => { - spl_token_interface::update_token_args(&client, &mut args.spl_token_args)?; + spl_token::update_token_args(&client, &mut args.spl_token_args)?; stake::update_stake_args(&client, &mut args.stake_args)?; commands::process_allocations(&client, &args, exit)?; } Command::Balances(mut args) => { - spl_token_interface::update_decimals(&client, &mut args.spl_token_args)?; + spl_token::update_decimals(&client, &mut args.spl_token_args)?; commands::process_balances(&client, &args, exit)?; } Command::TransactionLog(args) => { diff --git a/tokens/src/spl_token.rs b/tokens/src/spl_token.rs index 6dcaeb98cf0896..fc2af66cf4fc40 100644 --- a/tokens/src/spl_token.rs +++ b/tokens/src/spl_token.rs @@ -13,9 +13,7 @@ use { spl_associated_token_account_interface::{ address::get_associated_token_address, instruction::create_associated_token_account, }, - spl_token_interface::{ - state::{Account as SplTokenAccount, Mint}, - }, + spl_token_interface::state::{Account as SplTokenAccount, Mint}, }; pub fn update_token_args(client: &RpcClient, args: &mut Option) -> Result<(), Error> { From a6e979b442e2ac7567bd2988c4eee32ba4024251 Mon Sep 17 00:00:00 2001 From: rustopian <96253492+rustopian@users.noreply.github.com> Date: Mon, 4 Aug 2025 21:44:42 +0100 Subject: [PATCH 03/11] Cargo.toml patch --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index 66ec26504a87aa..be8835151998df 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -640,6 +640,7 @@ opt-level = 3 [patch.crates-io] # for details, see https://github.com/anza-xyz/crossbeam/commit/fd279d707025f0e60951e429bf778b4813d1b6bf crossbeam-epoch = { git = "https://github.com/anza-xyz/crossbeam", rev = "fd279d707025f0e60951e429bf778b4813d1b6bf" } +spl-token-interface = { version = "1.0.0", git = "https://github.com/rustopian/token", branch = "split-spl-token-interface" } # We include the following crates as our dependencies above from crates.io: # From 5a07199c8dbb2000a6736a50981705a5ccf0aa22 Mon Sep 17 00:00:00 2001 From: rustopian <96253492+rustopian@users.noreply.github.com> Date: Tue, 5 Aug 2025 07:38:53 +0100 Subject: [PATCH 04/11] switch dep to crate, reset script, use solana_program_pack --- Cargo.lock | 6 +++--- Cargo.toml | 3 +-- accounts-cluster-bench/src/main.rs | 6 ++---- scripts/patch-spl-crates-for-anchor.sh | 6 +++--- tokens/Cargo.toml | 2 +- 5 files changed, 10 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d4a38af86b197e..ecdfa514fb1c69 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1368,7 +1368,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4114279215a005bc675e386011e594e1d9b800918cea18fcadadcce864a2046b" dependencies = [ "borsh-derive 0.10.3", - "hashbrown 0.13.2", + "hashbrown 0.12.3", ] [[package]] @@ -12392,7 +12392,8 @@ dependencies = [ [[package]] name = "spl-token-interface" version = "1.0.0" -source = "git+https://github.com/rustopian/token?branch=split-spl-token-interface#3126dc2b4f04d7c38265ee18114c5231a5958478" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e0c2d4e38ef5834cf7fb1b592b8a8c6eab8485f5ac7a04a151b502c63a0aaa" dependencies = [ "arrayref", "bytemuck", @@ -12405,7 +12406,6 @@ dependencies = [ "solana-program-pack", "solana-pubkey", "solana-sdk-ids", - "spl-pod", "thiserror 2.0.12", ] diff --git a/Cargo.toml b/Cargo.toml index be8835151998df..90239dd3c93c2e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -566,7 +566,7 @@ spl-associated-token-account-interface = "1.0.0" spl-generic-token = "1.0.1" spl-memo-interface = "1.0.0" spl-pod = "0.5.1" -spl-token-interface = { version = "1.0.0", git = "https://github.com/rustopian/token", branch = "split-spl-token-interface" } +spl-token-interface = "1.0.0" spl-token-2022 = "8.0.1" spl-token-confidential-transfer-proof-extraction = "0.3.0" spl-token-group-interface = "0.6.0" @@ -640,7 +640,6 @@ opt-level = 3 [patch.crates-io] # for details, see https://github.com/anza-xyz/crossbeam/commit/fd279d707025f0e60951e429bf778b4813d1b6bf crossbeam-epoch = { git = "https://github.com/anza-xyz/crossbeam", rev = "fd279d707025f0e60951e429bf778b4813d1b6bf" } -spl-token-interface = { version = "1.0.0", git = "https://github.com/rustopian/token", branch = "split-spl-token-interface" } # We include the following crates as our dependencies above from crates.io: # diff --git a/accounts-cluster-bench/src/main.rs b/accounts-cluster-bench/src/main.rs index dad2ac1b90d5f9..bdbe2cf4813cce 100644 --- a/accounts-cluster-bench/src/main.rs +++ b/accounts-cluster-bench/src/main.rs @@ -1422,11 +1422,9 @@ pub mod test { solana_measure::measure::Measure, solana_native_token::sol_to_lamports, solana_poh_config::PohConfig, + solana_program_pack::Pack, solana_test_validator::TestValidator, - spl_token_interface::{ - solana_program::program_pack::Pack, - state::{Account, Mint}, - }, + spl_token_interface::state::{Account, Mint}, }; fn initialize_and_add_secondary_indexes(validator_config: &mut ValidatorConfig) { diff --git a/scripts/patch-spl-crates-for-anchor.sh b/scripts/patch-spl-crates-for-anchor.sh index af8c9ee3103ca4..3ef8672b19d588 100644 --- a/scripts/patch-spl-crates-for-anchor.sh +++ b/scripts/patch-spl-crates-for-anchor.sh @@ -38,8 +38,8 @@ update_spl_dependencies() { sed -i -e "s#\(spl-associated-token-account = { version = \"\)[^\"]*\(\"\)#\1$spl_associated_token_account_version\2#g" "${tomls[@]}" || return $? sed -i -e "s#\(spl-pod = \"\)[^\"]*\(\"\)#\1$spl_pod_version\2#g" "${tomls[@]}" || return $? sed -i -e "s#\(spl-pod = { version = \"\)[^\"]*\(\"\)#\1$spl_pod_version\2#g" "${tomls[@]}" || return $? - sed -i -e "s#\(spl-token-interface = \"\)[^\"]*\(\"\)#\1$spl_token_version\2#g" "${tomls[@]}" || return $? - sed -i -e "s#\(spl-token-interface = { version = \"\)[^\"]*\(\"\)#\1$spl_token_version\2#g" "${tomls[@]}" || return $? + sed -i -e "s#\(spl-token = \"\)[^\"]*\(\"\)#\1$spl_token_version\2#g" "${tomls[@]}" || return $? + sed -i -e "s#\(spl-token = { version = \"\)[^\"]*\(\"\)#\1$spl_token_version\2#g" "${tomls[@]}" || return $? sed -i -e "s#\(spl-token-2022 = \"\).*\(\"\)#\1$spl_token_2022_version\2#g" "${tomls[@]}" || return $? sed -i -e "s#\(spl-token-2022 = { version = \"\)[^\"]*\(\"\)#\1$spl_token_2022_version\2#g" "${tomls[@]}" || return $? sed -i -e "s#\(spl-token-group-interface = \"\)[^\"]*\(\"\)#\1=$spl_token_group_interface_version\2#g" "${tomls[@]}" || return $? @@ -64,7 +64,7 @@ patch_crates_io() { cat >> "$Cargo_toml" < Date: Tue, 5 Aug 2025 08:18:55 +0100 Subject: [PATCH 05/11] lockfiles --- programs/sbf/Cargo.lock | 26 +++++++++++++++++++++++--- svm/examples/Cargo.lock | 28 ++++++++++++++++++++++++---- 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index d9d4e228c2c117..6cfacffa6cfc95 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -5463,9 +5463,9 @@ dependencies = [ "solana-sysvar", "solana-vote-interface", "spl-generic-token", - "spl-token", "spl-token-2022", "spl-token-group-interface", + "spl-token-interface", "spl-token-metadata-interface", "thiserror 2.0.12", "zstd", @@ -7714,8 +7714,8 @@ dependencies = [ "solana-vote", "solana-vote-program", "spl-generic-token", - "spl-token", "spl-token-2022", + "spl-token-interface", "stream-cancel", "thiserror 2.0.12", "tokio", @@ -9567,9 +9567,9 @@ dependencies = [ "solana-vote-interface", "spl-associated-token-account-interface", "spl-memo-interface", - "spl-token", "spl-token-2022", "spl-token-group-interface", + "spl-token-interface", "spl-token-metadata-interface", "thiserror 2.0.12", ] @@ -10302,6 +10302,26 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "spl-token-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e0c2d4e38ef5834cf7fb1b592b8a8c6eab8485f5ac7a04a151b502c63a0aaa" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-instruction", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sdk-ids", + "thiserror 2.0.12", +] + [[package]] name = "spl-token-metadata-interface" version = "0.7.0" diff --git a/svm/examples/Cargo.lock b/svm/examples/Cargo.lock index 09590d8bd5640c..2f1281a55447d9 100644 --- a/svm/examples/Cargo.lock +++ b/svm/examples/Cargo.lock @@ -5298,9 +5298,9 @@ dependencies = [ "solana-sysvar", "solana-vote-interface", "spl-generic-token", - "spl-token", "spl-token-2022", "spl-token-group-interface", + "spl-token-interface", "spl-token-metadata-interface", "thiserror 2.0.12", "zstd", @@ -7514,8 +7514,8 @@ dependencies = [ "solana-vote", "solana-vote-program", "spl-generic-token", - "spl-token", "spl-token-2022", + "spl-token-interface", "stream-cancel", "thiserror 2.0.12", "tokio", @@ -8271,7 +8271,7 @@ dependencies = [ "solana-transaction", "solana-transaction-error", "spl-associated-token-account-interface", - "spl-token", + "spl-token-interface", "termcolor", ] @@ -8655,9 +8655,9 @@ dependencies = [ "solana-vote-interface", "spl-associated-token-account-interface", "spl-memo-interface", - "spl-token", "spl-token-2022", "spl-token-group-interface", + "spl-token-interface", "spl-token-metadata-interface", "thiserror 2.0.12", ] @@ -9387,6 +9387,26 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "spl-token-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e0c2d4e38ef5834cf7fb1b592b8a8c6eab8485f5ac7a04a151b502c63a0aaa" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive", + "num-traits", + "num_enum", + "solana-instruction", + "solana-program-error", + "solana-program-option", + "solana-program-pack", + "solana-pubkey", + "solana-sdk-ids", + "thiserror 2.0.12", +] + [[package]] name = "spl-token-metadata-interface" version = "0.7.0" From 5a11174bb077e4415ea867dcb377b9f43c22d863 Mon Sep 17 00:00:00 2001 From: rustopian <96253492+rustopian@users.noreply.github.com> Date: Tue, 5 Aug 2025 08:34:46 +0100 Subject: [PATCH 06/11] sort --- Cargo.toml | 2 +- account-decoder/Cargo.toml | 2 +- rpc/Cargo.toml | 2 +- transaction-status/Cargo.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 90239dd3c93c2e..b1d11a5b8d1188 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -566,10 +566,10 @@ spl-associated-token-account-interface = "1.0.0" spl-generic-token = "1.0.1" spl-memo-interface = "1.0.0" spl-pod = "0.5.1" -spl-token-interface = "1.0.0" spl-token-2022 = "8.0.1" spl-token-confidential-transfer-proof-extraction = "0.3.0" spl-token-group-interface = "0.6.0" +spl-token-interface = "1.0.0" spl-token-metadata-interface = "0.7.0" static_assertions = "1.1.0" stream-cancel = "0.8.2" diff --git a/account-decoder/Cargo.toml b/account-decoder/Cargo.toml index ac72ae261704c2..103d970a3d11e0 100644 --- a/account-decoder/Cargo.toml +++ b/account-decoder/Cargo.toml @@ -45,9 +45,9 @@ solana-stake-interface = { workspace = true } solana-sysvar = { workspace = true } solana-vote-interface = { workspace = true, features = ["bincode"] } spl-generic-token = { workspace = true } -spl-token-interface = { workspace = true } spl-token-2022 = { workspace = true, features = ["no-entrypoint"] } spl-token-group-interface = { workspace = true } +spl-token-interface = { workspace = true } spl-token-metadata-interface = { workspace = true } thiserror = { workspace = true } zstd = { workspace = true } diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index 54a8148ca71a91..0bf3553cfdeb1a 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -95,8 +95,8 @@ solana-version = { workspace = true } solana-vote = { workspace = true } solana-vote-program = { workspace = true } spl-generic-token = { workspace = true } -spl-token-interface = { workspace = true } spl-token-2022 = { workspace = true, features = ["no-entrypoint"] } +spl-token-interface = { workspace = true } stream-cancel = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["full"] } diff --git a/transaction-status/Cargo.toml b/transaction-status/Cargo.toml index 41c4b0e573ca5d..b15299213d252b 100644 --- a/transaction-status/Cargo.toml +++ b/transaction-status/Cargo.toml @@ -44,9 +44,9 @@ solana-transaction-status-client-types = { workspace = true } solana-vote-interface = { workspace = true } spl-associated-token-account-interface = { workspace = true, features = ["borsh"] } spl-memo-interface = { workspace = true } -spl-token-interface = { workspace = true } spl-token-2022 = { workspace = true, features = ["no-entrypoint"] } spl-token-group-interface = { workspace = true } +spl-token-interface = { workspace = true } spl-token-metadata-interface = { workspace = true } thiserror = { workspace = true } From 137e135412a8b4b22cae17e638832a2f85a4a848 Mon Sep 17 00:00:00 2001 From: rustopian <96253492+rustopian@users.noreply.github.com> Date: Tue, 5 Aug 2025 10:26:11 +0100 Subject: [PATCH 07/11] sorting --- svm/examples/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/svm/examples/Cargo.toml b/svm/examples/Cargo.toml index 6d7e0dc457bf67..d65b8fd3dbc540 100644 --- a/svm/examples/Cargo.toml +++ b/svm/examples/Cargo.toml @@ -69,8 +69,8 @@ solana-transaction-status = { path = "../../transaction-status" } solana-validator-exit = "2.2.1" solana-version = { path = "../../version" } spl-associated-token-account-interface = "1.0.0" -spl-token-interface = "1.0.0" spl-token-2022 = "8.0.0" +spl-token-interface = "1.0.0" termcolor = "1.4.1" thiserror = "1.0.68" tokio = "1.29.1" From 9e060668d69e8d4137d2bf2afdf9086b801551c4 Mon Sep 17 00:00:00 2001 From: Peter Keay <96253492+rustopian@users.noreply.github.com> Date: Tue, 5 Aug 2025 06:16:01 -0400 Subject: [PATCH 08/11] rm comment on patches --- programs/sbf/Cargo.toml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/programs/sbf/Cargo.toml b/programs/sbf/Cargo.toml index e98aa4a86423c0..afe0065ee9b8b6 100644 --- a/programs/sbf/Cargo.toml +++ b/programs/sbf/Cargo.toml @@ -259,16 +259,4 @@ strip = true name = "bpf_loader" [patch.crates-io] -# We include the following crates as our dependencies from crates.io: -# -# * spl-associated-token-account-interface -# * spl-instruction-padding -# * spl-memo-interface -# * spl-pod -# * spl-token-interface -# * spl-token-2022 -# * spl-token-metadata-interface -# -# There is a similar override in `../../Cargo.toml`. Please keep both comments -# and the overrides in sync. solana-curve25519 = { path = "../../curves/curve25519" } From 985ed29d39e1b211237172c7aca181cd1bfb606c Mon Sep 17 00:00:00 2001 From: Peter Keay <96253492+rustopian@users.noreply.github.com> Date: Tue, 5 Aug 2025 06:17:49 -0400 Subject: [PATCH 09/11] rm comment from patches --- Cargo.toml | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b1d11a5b8d1188..5b49156a49e92c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -640,37 +640,4 @@ opt-level = 3 [patch.crates-io] # for details, see https://github.com/anza-xyz/crossbeam/commit/fd279d707025f0e60951e429bf778b4813d1b6bf crossbeam-epoch = { git = "https://github.com/anza-xyz/crossbeam", rev = "fd279d707025f0e60951e429bf778b4813d1b6bf" } - -# We include the following crates as our dependencies above from crates.io: -# -# * spl-associated-token-account-interface -# * spl-instruction-padding -# * spl-memo-interface -# * spl-pod -# * spl-token -# * spl-token-2022 -# * spl-token-metadata-interface -# -# They, in turn, depend on a number of crates that we also include directly -# using `path` specifications. For example, `spl-token` depends on -# `solana-program`. And we explicitly specify `solana-program` above as a local -# path dependency: -# -# solana-program = { path = "../../sdk/program", version = "=1.16.0" } -# -# Unfortunately, Cargo will try to resolve the `spl-token` `solana-program` -# dependency only using what is available on crates.io. Crates.io normally -# contains a previous version of these crates, and we end up with two versions -# of `solana-program` and `solana-zk-token-sdk` and all of their dependencies in -# our build tree. -# -# If you are developing downstream using non-crates-io solana-program (local or -# forked repo, or from github rev, eg), duplicate the following patch statements -# in your Cargo.toml. If you still hit duplicate-type errors with the patch -# statements in place, run `cargo update -p solana-program` and/or `cargo update -# -p solana-zk-token-sdk` to remove extraneous versions from your Cargo.lock -# file. -# -# There is a similar override in `programs/sbf/Cargo.toml`. Please keep both -# comments and the overrides in sync. solana-curve25519 = { path = "curves/curve25519" } From 21cceee0ed0b9f6de4f298928d33ce0cce66c806 Mon Sep 17 00:00:00 2001 From: rustopian <96253492+rustopian@users.noreply.github.com> Date: Tue, 5 Aug 2025 17:55:06 +0100 Subject: [PATCH 10/11] lockfiles --- Cargo.lock | 28 ---------------------------- programs/sbf/Cargo.lock | 28 ---------------------------- svm/examples/Cargo.lock | 28 ---------------------------- 3 files changed, 84 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a40f16c6076499..2e1cafdf3331c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12162,34 +12162,6 @@ dependencies = [ "thiserror 2.0.12", ] -[[package]] -name = "spl-token" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-cpi", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sysvar", - "thiserror 2.0.12", -] - [[package]] name = "spl-token-2022-interface" version = "1.0.0" diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index e7544a3c27212f..ff4a930e50e68c 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -10075,34 +10075,6 @@ dependencies = [ "thiserror 2.0.12", ] -[[package]] -name = "spl-token" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-cpi", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sysvar", - "thiserror 2.0.12", -] - [[package]] name = "spl-token-2022-interface" version = "1.0.0" diff --git a/svm/examples/Cargo.lock b/svm/examples/Cargo.lock index cea83b423c052e..0ecca6a9ff4c23 100644 --- a/svm/examples/Cargo.lock +++ b/svm/examples/Cargo.lock @@ -9160,34 +9160,6 @@ dependencies = [ "thiserror 2.0.12", ] -[[package]] -name = "spl-token" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053067c6a82c705004f91dae058b11b4780407e9ccd6799dc9e7d0fab5f242da" -dependencies = [ - "arrayref", - "bytemuck", - "num-derive", - "num-traits", - "num_enum", - "solana-account-info", - "solana-cpi", - "solana-decode-error", - "solana-instruction", - "solana-msg", - "solana-program-entrypoint", - "solana-program-error", - "solana-program-memory", - "solana-program-option", - "solana-program-pack", - "solana-pubkey", - "solana-rent", - "solana-sdk-ids", - "solana-sysvar", - "thiserror 2.0.12", -] - [[package]] name = "spl-token-2022-interface" version = "1.0.0" From 2eccc6f2e8af9424c3b8544b7c69aacbd78ec018 Mon Sep 17 00:00:00 2001 From: rustopian <96253492+rustopian@users.noreply.github.com> Date: Tue, 5 Aug 2025 18:37:38 +0100 Subject: [PATCH 11/11] revert rm comments yanked in another PR --- Cargo.toml | 33 +++++++++++++++++++++++++++++++++ programs/sbf/Cargo.toml | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 776b1cf5dcdbde..99b2dba4f14916 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -640,4 +640,37 @@ opt-level = 3 [patch.crates-io] # for details, see https://github.com/anza-xyz/crossbeam/commit/fd279d707025f0e60951e429bf778b4813d1b6bf crossbeam-epoch = { git = "https://github.com/anza-xyz/crossbeam", rev = "fd279d707025f0e60951e429bf778b4813d1b6bf" } + +# We include the following crates as our dependencies above from crates.io: +# +# * spl-associated-token-account-interface +# * spl-instruction-padding +# * spl-memo-interface +# * spl-pod +# * spl-token +# * spl-token-2022-interface +# * spl-token-metadata-interface +# +# They, in turn, depend on a number of crates that we also include directly +# using `path` specifications. For example, `spl-token` depends on +# `solana-program`. And we explicitly specify `solana-program` above as a local +# path dependency: +# +# solana-program = { path = "../../sdk/program", version = "=1.16.0" } +# +# Unfortunately, Cargo will try to resolve the `spl-token` `solana-program` +# dependency only using what is available on crates.io. Crates.io normally +# contains a previous version of these crates, and we end up with two versions +# of `solana-program` and `solana-zk-token-sdk` and all of their dependencies in +# our build tree. +# +# If you are developing downstream using non-crates-io solana-program (local or +# forked repo, or from github rev, eg), duplicate the following patch statements +# in your Cargo.toml. If you still hit duplicate-type errors with the patch +# statements in place, run `cargo update -p solana-program` and/or `cargo update +# -p solana-zk-token-sdk` to remove extraneous versions from your Cargo.lock +# file. +# +# There is a similar override in `programs/sbf/Cargo.toml`. Please keep both +# comments and the overrides in sync. solana-curve25519 = { path = "curves/curve25519" } diff --git a/programs/sbf/Cargo.toml b/programs/sbf/Cargo.toml index afe0065ee9b8b6..1e56c3032d233a 100644 --- a/programs/sbf/Cargo.toml +++ b/programs/sbf/Cargo.toml @@ -259,4 +259,44 @@ strip = true name = "bpf_loader" [patch.crates-io] +# We include the following crates as our dependencies from crates.io: +# +# * spl-associated-token-account-interface +# * spl-instruction-padding +# * spl-memo-interface +# * spl-pod +# * spl-token +# * spl-token-2022-interface +# * spl-token-metadata-interface +# +# They are included indirectly, for example, `account-decoder` depends on +# +# solana-sdk = { workspace = true } +# +# and that is specified as +# +# spl-token = "=3.5.0" +# +# in `../../Cargo.toml`. +# +# `spl-token`, in turn, depends on `solana-program`, which we explicitly specify +# above as a local path dependency: +# +# solana-program = { path = "../../sdk/program", version = "=1.16.0" } +# +# Unfortunately, Cargo will try to resolve the `spl-token` `solana-program` +# dependency only using what is available on crates.io. Crates.io normally +# contains a previous version of these crates, and we end up with two versions +# of `solana-program` and `solana-zk-token-sdk` and all of their dependencies in +# our build tree. +# +# If you are developing downstream using non-crates-io solana-program (local or +# forked repo, or from github rev, eg), duplicate the following patch statements +# in your Cargo.toml. If you still hit duplicate-type errors with the patch +# statements in place, run `cargo update -p solana-program` and/or `cargo update +# -p solana-zk-token-sdk` to remove extraneous versions from your Cargo.lock +# file. +# +# There is a similar override in `../../Cargo.toml`. Please keep both comments +# and the overrides in sync. solana-curve25519 = { path = "../../curves/curve25519" }