diff --git a/Cargo.lock b/Cargo.lock index 7d4ce4a3f5f109..93bcee7d3680ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7570,7 +7570,7 @@ dependencies = [ "solana-udp-client", "solana-version", "solana-vote-program", - "spl-memo", + "spl-memo-interface", "tempfile", "test-case", "thiserror 2.0.12", @@ -7634,7 +7634,7 @@ dependencies = [ "solana-transaction-status", "solana-transaction-status-client-types", "solana-vote-program", - "spl-memo", + "spl-memo-interface", ] [[package]] @@ -8040,7 +8040,7 @@ dependencies = [ "solana-vote", "solana-vote-program", "solana-wen-restart", - "spl-memo", + "spl-memo-interface", "static_assertions", "strum", "strum_macros", @@ -8383,7 +8383,7 @@ dependencies = [ "solana-system-transaction", "solana-transaction", "solana-version", - "spl-memo", + "spl-memo-interface", "thiserror 2.0.12", "tokio", ] @@ -11483,7 +11483,7 @@ dependencies = [ "solana-transaction-status-client-types", "solana-vote-interface", "spl-associated-token-account-interface", - "spl-memo", + "spl-memo-interface", "spl-token", "spl-token-2022", "spl-token-confidential-transfer-proof-extraction", @@ -12174,6 +12174,16 @@ dependencies = [ "solana-pubkey", ] +[[package]] +name = "spl-memo-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24af0730130fea732616be9425fe8eb77782e2aab2f0e76837b6a66aaba96c6b" +dependencies = [ + "solana-instruction", + "solana-pubkey", +] + [[package]] name = "spl-pod" version = "0.5.1" diff --git a/Cargo.toml b/Cargo.toml index 3d18fea8ad2c14..1bae67b6e42462 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -564,7 +564,7 @@ solana-zk-token-proof-program = { path = "programs/zk-token-proof", version = "= solana-zk-token-sdk = { path = "zk-token-sdk", version = "=3.0.0" } spl-associated-token-account-interface = "1.0.0" spl-generic-token = "1.0.1" -spl-memo = "6.0.0" +spl-memo-interface = "1.0.0" spl-pod = "0.5.1" spl-token = "8.0.0" spl-token-2022 = "8.0.1" @@ -643,9 +643,9 @@ crossbeam-epoch = { git = "https://github.com/anza-xyz/crossbeam", rev = "fd279d # We include the following crates as our dependencies above from crates.io: # -# * spl-associated-token-account +# * spl-associated-token-account-interface # * spl-instruction-padding -# * spl-memo +# * spl-memo-interface # * spl-pod # * spl-token # * spl-token-2022 diff --git a/cli-output/Cargo.toml b/cli-output/Cargo.toml index f35df3c5e3cdb8..f8a6b403636f10 100644 --- a/cli-output/Cargo.toml +++ b/cli-output/Cargo.toml @@ -48,7 +48,7 @@ solana-transaction-error = { workspace = true } solana-transaction-status = { workspace = true } solana-transaction-status-client-types = { workspace = true } solana-vote-program = { workspace = true } -spl-memo = { workspace = true, features = ["no-entrypoint"] } +spl-memo-interface = { workspace = true } [dev-dependencies] ed25519-dalek = { workspace = true } diff --git a/cli-output/src/display.rs b/cli-output/src/display.rs index 4245d9cfecf613..115471b76fad7f 100644 --- a/cli-output/src/display.rs +++ b/cli-output/src/display.rs @@ -19,7 +19,7 @@ use { Rewards, UiReturnDataEncoding, UiTransactionReturnData, UiTransactionStatusMeta, }, solana_transaction_status_client_types::UiTransactionError, - spl_memo::{id as spl_memo_id, v1::id as spl_memo_v1_id}, + spl_memo_interface::{v1::id as spl_memo_v1_id, v3::id as spl_memo_v3_id}, std::{collections::HashMap, fmt, io, time::Duration}, }; @@ -42,7 +42,7 @@ impl Default for BuildBalanceMessageConfig { fn is_memo_program(k: &Pubkey) -> bool { let k_str = k.to_string(); - (k_str == spl_memo_v1_id().to_string()) || (k_str == spl_memo_id().to_string()) + (k_str == spl_memo_v1_id().to_string()) || (k_str == spl_memo_v3_id().to_string()) } pub fn build_balance_message_with_config( diff --git a/cli/Cargo.toml b/cli/Cargo.toml index a96682864ee5aa..df533962f0f026 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -96,7 +96,7 @@ solana-transaction-status-client-types = { workspace = true } solana-udp-client = { workspace = true } solana-version = { workspace = true } solana-vote-program = { workspace = true } -spl-memo = { version = "=6.0.0", features = ["no-entrypoint"] } +spl-memo-interface = { version = "=1.0.0" } thiserror = { workspace = true } tiny-bip39 = { workspace = true } diff --git a/cli/src/memo.rs b/cli/src/memo.rs index d3b8fa4691bf49..a6455e4802c7f5 100644 --- a/cli/src/memo.rs +++ b/cli/src/memo.rs @@ -1,4 +1,4 @@ -use {solana_instruction::Instruction, solana_pubkey::Pubkey, spl_memo::id}; +use {solana_instruction::Instruction, solana_pubkey::Pubkey, spl_memo_interface::v3::id}; pub trait WithMemo { fn with_memo>(self, memo: Option) -> Self; diff --git a/core/Cargo.toml b/core/Cargo.toml index 177a42271cf94e..5ababa363c0539 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -207,7 +207,7 @@ solana-unified-scheduler-pool = { workspace = true, features = [ "dev-context-only-utils", ] } solana-vote = { workspace = true, features = ["dev-context-only-utils"] } -spl-memo = { workspace = true, features = ["no-entrypoint"] } +spl-memo-interface = { workspace = true } static_assertions = { workspace = true } test-case = { workspace = true } diff --git a/core/tests/scheduler_cost_adjustment.rs b/core/tests/scheduler_cost_adjustment.rs index d5d5d53661a94e..04ff1f49ad7a95 100644 --- a/core/tests/scheduler_cost_adjustment.rs +++ b/core/tests/scheduler_cost_adjustment.rs @@ -68,7 +68,7 @@ impl TestSetup { fn install_memo_program_account(&mut self) { self.genesis_config.accounts.insert( - spl_memo::id(), + spl_memo_interface::v3::id(), Account { lamports: u64::MAX, // borrows memo elf for executing memo ix in order to set up test condition @@ -150,7 +150,11 @@ impl TestSetup { fn memo_ix(&self) -> (Instruction, u32) { // construct a memo instruction that would consume more CU than DEFAULT_INSTRUCTION_COMPUTE_UNIT_LIMIT let memo = "The quick brown fox jumped over the lazy dog. ".repeat(22) + "!"; - let memo_ix = spl_memo::build_memo(memo.as_bytes(), &[]); + let memo_ix = spl_memo_interface::instruction::build_memo( + &spl_memo_interface::v3::id(), + memo.as_bytes(), + &[], + ); let memo_ix_cost = 356_963; (memo_ix, memo_ix_cost) diff --git a/faucet/Cargo.toml b/faucet/Cargo.toml index 86a4c41650b823..6e9f1ac247e0df 100644 --- a/faucet/Cargo.toml +++ b/faucet/Cargo.toml @@ -43,6 +43,6 @@ solana-system-interface = "=1.0" solana-system-transaction = "=2.2.1" solana-transaction = "=2.2.3" solana-version = { workspace = true } -spl-memo = { version = "=6.0.0", features = ["no-entrypoint"] } +spl-memo-interface = { version = "=1.0.0" } thiserror = { workspace = true } tokio = { workspace = true, features = ["full"] } diff --git a/faucet/src/faucet.rs b/faucet/src/faucet.rs index c207e37ed3fe1e..86a36e5624433a 100644 --- a/faucet/src/faucet.rs +++ b/faucet/src/faucet.rs @@ -200,7 +200,7 @@ impl Faucet { ) ); let memo_instruction = Instruction { - program_id: Pubkey::from(spl_memo::id().to_bytes()), + program_id: spl_memo_interface::v3::id(), accounts: vec![], data: memo.as_bytes().to_vec(), }; @@ -630,7 +630,7 @@ mod tests { assert_eq!(tx.signatures.len(), 1); assert_eq!( message.account_keys, - vec![mint_pubkey, Pubkey::from(spl_memo::id().to_bytes())] + vec![mint_pubkey, spl_memo_interface::v3::id()] ); assert_eq!(message.recent_blockhash, blockhash); diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index c27f11491e770b..d9d4e228c2c117 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -5892,7 +5892,7 @@ dependencies = [ "solana-transaction-status", "solana-transaction-status-client-types", "solana-vote-program", - "spl-memo", + "spl-memo-interface", ] [[package]] @@ -6463,7 +6463,7 @@ dependencies = [ "solana-system-transaction", "solana-transaction", "solana-version", - "spl-memo", + "spl-memo-interface", "thiserror 2.0.12", "tokio", ] @@ -9566,7 +9566,7 @@ dependencies = [ "solana-transaction-status-client-types", "solana-vote-interface", "spl-associated-token-account-interface", - "spl-memo", + "spl-memo-interface", "spl-token", "spl-token-2022", "spl-token-group-interface", @@ -10089,6 +10089,16 @@ dependencies = [ "solana-pubkey", ] +[[package]] +name = "spl-memo-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24af0730130fea732616be9425fe8eb77782e2aab2f0e76837b6a66aaba96c6b" +dependencies = [ + "solana-instruction", + "solana-pubkey", +] + [[package]] name = "spl-pod" version = "0.5.1" diff --git a/programs/sbf/Cargo.toml b/programs/sbf/Cargo.toml index 0eafcac4b52b9a..02344b5bf42f7f 100644 --- a/programs/sbf/Cargo.toml +++ b/programs/sbf/Cargo.toml @@ -261,9 +261,9 @@ name = "bpf_loader" [patch.crates-io] # We include the following crates as our dependencies from crates.io: # -# * spl-associated-token-account +# * spl-associated-token-account-interface # * spl-instruction-padding -# * spl-memo +# * spl-memo-interface # * spl-pod # * spl-token # * spl-token-2022 diff --git a/svm/examples/Cargo.lock b/svm/examples/Cargo.lock index a721adbb58751f..09590d8bd5640c 100644 --- a/svm/examples/Cargo.lock +++ b/svm/examples/Cargo.lock @@ -5727,7 +5727,7 @@ dependencies = [ "solana-transaction-status", "solana-transaction-status-client-types", "solana-vote-program", - "spl-memo", + "spl-memo-interface", ] [[package]] @@ -6287,7 +6287,7 @@ dependencies = [ "solana-system-transaction", "solana-transaction", "solana-version", - "spl-memo", + "spl-memo-interface", "thiserror 2.0.12", "tokio", ] @@ -8654,7 +8654,7 @@ dependencies = [ "solana-transaction-status-client-types", "solana-vote-interface", "spl-associated-token-account-interface", - "spl-memo", + "spl-memo-interface", "spl-token", "spl-token-2022", "spl-token-group-interface", @@ -9174,6 +9174,16 @@ dependencies = [ "solana-pubkey", ] +[[package]] +name = "spl-memo-interface" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24af0730130fea732616be9425fe8eb77782e2aab2f0e76837b6a66aaba96c6b" +dependencies = [ + "solana-instruction", + "solana-pubkey", +] + [[package]] name = "spl-pod" version = "0.5.1" diff --git a/transaction-status/Cargo.toml b/transaction-status/Cargo.toml index 43817c0af8dfae..19084ff2927e8f 100644 --- a/transaction-status/Cargo.toml +++ b/transaction-status/Cargo.toml @@ -43,7 +43,7 @@ solana-transaction-error = { workspace = true } solana-transaction-status-client-types = { workspace = true } solana-vote-interface = { workspace = true } spl-associated-token-account-interface = { workspace = true, features = ["borsh"] } -spl-memo = { workspace = true, features = ["no-entrypoint"] } +spl-memo-interface = { workspace = true } spl-token = { workspace = true, features = ["no-entrypoint"] } spl-token-2022 = { workspace = true, features = ["no-entrypoint"] } spl-token-group-interface = { workspace = true } diff --git a/transaction-status/benches/extract_memos.rs b/transaction-status/benches/extract_memos.rs index 9a7246ab178649..24b1688e9f3cf7 100644 --- a/transaction-status/benches/extract_memos.rs +++ b/transaction-status/benches/extract_memos.rs @@ -8,8 +8,8 @@ use { #[allow(clippy::arithmetic_side_effects)] fn bench_extract_memos(b: &mut Bencher) { let mut account_keys: Vec = (0..64).map(|_| Pubkey::new_unique()).collect(); - account_keys[62] = spl_memo::v1::id(); - account_keys[63] = spl_memo::id(); + account_keys[62] = spl_memo_interface::v1::id(); + account_keys[63] = spl_memo_interface::v3::id(); let memo = "Test memo"; let instructions: Vec<_> = (0..20) diff --git a/transaction-status/src/extract_memos.rs b/transaction-status/src/extract_memos.rs index d0fa03c0f6d7e1..d3b8d952348f46 100644 --- a/transaction-status/src/extract_memos.rs +++ b/transaction-status/src/extract_memos.rs @@ -69,7 +69,9 @@ fn extract_memos_inner( KeyType::MemoProgram => Some(&ix.data), KeyType::OtherProgram => None, KeyType::Unknown(program_id) => { - if **program_id == spl_memo::v1::id() || **program_id == spl_memo::id() { + if **program_id == spl_memo_interface::v1::id() + || **program_id == spl_memo_interface::v3::id() + { account_keys[index] = KeyType::MemoProgram; Some(&ix.data) } else { @@ -116,9 +118,9 @@ mod test { ]; let static_keys = vec![ fee_payer, - spl_memo::v1::id(), + spl_memo_interface::v1::id(), another_program_id, - spl_memo::id(), + spl_memo_interface::v3::id(), ]; let account_keys = AccountKeys::new(&static_keys, None); diff --git a/transaction-status/src/parse_instruction.rs b/transaction-status/src/parse_instruction.rs index 29e948f0740ab3..92457e89551052 100644 --- a/transaction-status/src/parse_instruction.rs +++ b/transaction-status/src/parse_instruction.rs @@ -33,8 +33,8 @@ static PARSABLE_PROGRAM_IDS: std::sync::LazyLock