Explorar el Código

second tranche of solana-sdk omnicrate dependency removals (#6169)

* remove solana-sdk dependency from solana-program-test

* remove solana-sdk dependency from solana-poh-bench

* remove solana-sdk dependency from monorepo programs

* remove solana-sdk dependency from solana-rpc

* remove solana-sdk dependency from solana-send-transaction-service

* remove solana-sdk dependency from svm

* remove solana-sdk dependency from solana-test-validator

* remove solana-sdk dependency from solana-tokens

* remove solana-sdk dependency from solana-transaction-dos

* remove solana-sdk dependency from solana-turbine

* remove solana-sdk dependency from agave-validator

* remove solana-sdk dependency from solana-vortexor

* remove solana-sdk dependency from misc docs and comments

* remove solana-sdk dependency from solana-core
Trent Nelson hace 6 meses
padre
commit
656955bbdf
Se han modificado 100 ficheros con 1401 adiciones y 743 borrados
  1. 1 1
      .github/ISSUE_TEMPLATE/2-feature-gate.yml
  2. 188 9
      Cargo.lock
  3. 1 1
      compute-budget/src/compute_budget.rs
  4. 1 0
      core/Cargo.toml
  5. 8 10
      core/benches/receive_and_buffer_utils.rs
  6. 1 1
      docs/src/implemented-proposals/installer.md
  7. 2 1
      docs/src/proposals/cluster-test-framework.md
  8. 1 1
      poh-bench/Cargo.toml
  9. 1 1
      poh-bench/src/main.rs
  10. 1 1
      program-runtime/src/execution_budget.rs
  11. 2 3
      program-runtime/src/sysvar_cache.rs
  12. 30 1
      program-test/Cargo.toml
  13. 25 22
      program-test/src/lib.rs
  14. 8 8
      program-test/src/programs.rs
  15. 5 7
      program-test/tests/bpf.rs
  16. 9 9
      program-test/tests/builtins.rs
  17. 6 7
      program-test/tests/compute_units.rs
  18. 5 4
      program-test/tests/core_bpf.rs
  19. 13 14
      program-test/tests/cpi.rs
  20. 11 12
      program-test/tests/fuzz.rs
  21. 5 8
      program-test/tests/genesis_accounts.rs
  22. 9 10
      program-test/tests/lamports.rs
  23. 7 8
      program-test/tests/panic.rs
  24. 10 11
      program-test/tests/realloc.rs
  25. 9 12
      program-test/tests/return_data.rs
  26. 9 10
      program-test/tests/setup.rs
  27. 8 10
      program-test/tests/spl.rs
  28. 12 5
      program-test/tests/sysvar.rs
  29. 9 11
      program-test/tests/sysvar_last_restart_slot.rs
  30. 19 20
      program-test/tests/warp.rs
  31. 10 1
      programs/bpf-loader-tests/Cargo.toml
  32. 9 9
      programs/bpf-loader-tests/tests/common.rs
  33. 12 9
      programs/bpf-loader-tests/tests/extend_program_ix.rs
  34. 6 1
      programs/ed25519-tests/Cargo.toml
  35. 4 9
      programs/ed25519-tests/tests/process_transaction.rs
  36. 130 3
      programs/sbf/Cargo.lock
  37. 24 2
      programs/sbf/Cargo.toml
  38. 9 12
      programs/sbf/benches/bpf_loader.rs
  39. 49 40
      programs/sbf/tests/programs.rs
  40. 7 8
      programs/sbf/tests/simulation.rs
  41. 5 6
      programs/sbf/tests/syscall_get_epoch_stake.rs
  42. 12 10
      programs/sbf/tests/sysvar.rs
  43. 11 1
      programs/stake-tests/Cargo.toml
  44. 15 17
      programs/stake-tests/tests/test_move_stake_and_lamports.rs
  45. 1 1
      programs/stake/src/stake_state.rs
  46. 1 1
      programs/system/Cargo.toml
  47. 1 1
      programs/system/src/system_instruction.rs
  48. 32 29
      programs/system/src/system_processor.rs
  49. 1 1
      programs/vote/Cargo.toml
  50. 1 2
      programs/vote/benches/vote_instructions.rs
  51. 35 1
      rpc/Cargo.toml
  52. 7 10
      rpc/src/cluster_tpu_info.rs
  53. 1 1
      rpc/src/filter.rs
  54. 2 1
      rpc/src/optimistically_confirmed_bank_tracker.rs
  55. 2 4
      rpc/src/parsed_token_accounts.rs
  56. 56 53
      rpc/src/rpc.rs
  57. 1 2
      rpc/src/rpc/account_resolver.rs
  58. 1 1
      rpc/src/rpc_completed_slots_service.rs
  59. 4 2
      rpc/src/rpc_health.rs
  60. 22 16
      rpc/src/rpc_pubsub.rs
  61. 1 1
      rpc/src/rpc_pubsub_service.rs
  62. 7 8
      rpc/src/rpc_service.rs
  63. 4 3
      rpc/src/rpc_subscription_tracker.rs
  64. 17 15
      rpc/src/rpc_subscriptions.rs
  65. 1 1
      rpc/src/slot_status_notifier.rs
  66. 3 3
      rpc/src/transaction_notifier_interface.rs
  67. 21 19
      rpc/src/transaction_status_service.rs
  68. 15 1
      send-transaction-service/Cargo.toml
  69. 16 15
      send-transaction-service/src/send_transaction_service.rs
  70. 1 1
      send-transaction-service/src/send_transaction_service_stats.rs
  71. 1 2
      send-transaction-service/src/tpu_info.rs
  72. 1 1
      send-transaction-service/src/transaction_client.rs
  73. 7 2
      svm/Cargo.toml
  74. 130 4
      svm/examples/Cargo.lock
  75. 23 1
      svm/examples/Cargo.toml
  76. 7 1
      svm/examples/json-rpc/client/Cargo.toml
  77. 6 8
      svm/examples/json-rpc/client/src/client.rs
  78. 3 5
      svm/examples/json-rpc/client/src/utils.rs
  79. 17 1
      svm/examples/json-rpc/server/Cargo.toml
  80. 32 26
      svm/examples/json-rpc/server/src/rpc_process.rs
  81. 1 1
      svm/examples/json-rpc/server/src/rpc_service.rs
  82. 17 14
      svm/examples/json-rpc/server/src/svm_bridge.rs
  83. 15 1
      svm/examples/paytube/Cargo.toml
  84. 4 3
      svm/examples/paytube/src/lib.rs
  85. 2 4
      svm/examples/paytube/src/loader.rs
  86. 6 2
      svm/examples/paytube/src/processor.rs
  87. 7 5
      svm/examples/paytube/src/settler.rs
  88. 6 7
      svm/examples/paytube/src/transaction.rs
  89. 2 1
      svm/examples/paytube/tests/native_sol.rs
  90. 6 8
      svm/examples/paytube/tests/setup.rs
  91. 3 1
      svm/examples/paytube/tests/spl_tokens.rs
  92. 6 8
      svm/tests/concurrent_tests.rs
  93. 11 12
      svm/tests/conformance.rs
  94. 32 28
      svm/tests/integration_test.rs
  95. 13 16
      svm/tests/mock_bank.rs
  96. 13 13
      svm/tests/transaction_builder.rs
  97. 17 1
      test-validator/Cargo.toml
  98. 25 26
      test-validator/src/lib.rs
  99. 14 1
      tokens/Cargo.toml
  100. 1 1
      tokens/src/arg_parser.rs

+ 1 - 1
.github/ISSUE_TEMPLATE/2-feature-gate.yml

@@ -21,7 +21,7 @@ body:
             person will generate the keypair, provide pubkey for PR, and ultimately enable the feature.
 
         2. Add a public module for the feature, specifying keypair pubkey as the id with
-        `solana_sdk::declare_id!()` within the module. Additionally, add an entry to `FEATURE_NAMES` map.
+        `solana_sdk_macro::declare_id!()` within the module. Additionally, add an entry to `FEATURE_NAMES` map.
 
         3. Add desired logic to check for and switch on feature availability.
   - type: input

+ 188 - 9
Cargo.lock

@@ -418,40 +418,55 @@ dependencies = [
  "serde_json",
  "serde_yaml 0.9.34+deprecated",
  "signal-hook",
+ "solana-account",
  "solana-account-decoder",
  "solana-accounts-db",
  "solana-clap-utils",
  "solana-cli-config",
  "solana-cli-output",
+ "solana-clock",
+ "solana-commitment-config",
  "solana-core",
  "solana-download-utils",
  "solana-entry",
+ "solana-epoch-schedule",
  "solana-faucet",
  "solana-genesis-utils",
  "solana-geyser-plugin-manager",
  "solana-gossip",
+ "solana-hash",
+ "solana-keypair",
  "solana-ledger",
  "solana-logger",
  "solana-metrics",
+ "solana-native-token",
  "solana-net-utils",
  "solana-perf",
  "solana-poh",
  "solana-program-option",
  "solana-program-pack",
  "solana-program-runtime",
+ "solana-pubkey",
+ "solana-quic-definitions",
  "solana-rayon-threadlimit",
+ "solana-rent",
  "solana-rpc",
  "solana-rpc-client",
  "solana-rpc-client-api",
  "solana-runtime",
  "solana-sdk",
+ "solana-sdk-ids",
  "solana-send-transaction-service",
+ "solana-signer",
  "solana-storage-bigtable",
  "solana-streamer",
+ "solana-system-interface",
  "solana-test-validator",
+ "solana-time-utils",
  "solana-tpu-client",
  "solana-turbine",
  "solana-unified-scheduler-pool",
+ "solana-validator-exit",
  "solana-version",
  "solana-vote-program",
  "spl-generic-token",
@@ -7120,9 +7135,18 @@ version = "2.3.0"
 dependencies = [
  "assert_matches",
  "bincode",
+ "solana-account",
  "solana-bpf-loader-program",
+ "solana-instruction",
+ "solana-keypair",
+ "solana-loader-v3-interface",
  "solana-program-test",
- "solana-sdk",
+ "solana-pubkey",
+ "solana-sdk-ids",
+ "solana-signer",
+ "solana-system-interface",
+ "solana-transaction",
+ "solana-transaction-error",
 ]
 
 [[package]]
@@ -8015,8 +8039,13 @@ dependencies = [
  "assert_matches",
  "ed25519-dalek",
  "rand 0.8.5",
+ "solana-ed25519-program",
+ "solana-instruction",
+ "solana-precompile-error",
  "solana-program-test",
- "solana-sdk",
+ "solana-signer",
+ "solana-transaction",
+ "solana-transaction-error",
 ]
 
 [[package]]
@@ -9194,7 +9223,7 @@ dependencies = [
  "solana-measure",
  "solana-perf",
  "solana-rayon-threadlimit",
- "solana-sdk",
+ "solana-sha256-hasher",
  "solana-version",
 ]
 
@@ -9453,23 +9482,52 @@ dependencies = [
  "crossbeam-channel",
  "log",
  "serde",
+ "solana-account",
+ "solana-account-info",
  "solana-accounts-db",
  "solana-banks-client",
  "solana-banks-interface",
  "solana-banks-server",
+ "solana-clock",
+ "solana-commitment-config",
  "solana-compute-budget",
+ "solana-cpi",
+ "solana-epoch-rewards",
+ "solana-epoch-schedule",
+ "solana-fee-calculator",
+ "solana-genesis-config",
+ "solana-hash",
  "solana-instruction",
+ "solana-keypair",
+ "solana-loader-v3-interface",
  "solana-log-collector",
  "solana-logger",
+ "solana-message",
+ "solana-msg",
+ "solana-native-token",
+ "solana-poh-config",
+ "solana-program-entrypoint",
+ "solana-program-error",
  "solana-program-runtime",
+ "solana-pubkey",
+ "solana-rent",
  "solana-runtime",
  "solana-sbpf",
  "solana-sdk",
  "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-signer",
+ "solana-stable-layout",
+ "solana-stake-interface",
  "solana-stake-program",
  "solana-svm",
+ "solana-system-interface",
+ "solana-sysvar",
+ "solana-sysvar-id",
  "solana-timings",
+ "solana-transaction",
  "solana-transaction-context 2.3.0",
+ "solana-transaction-error",
  "solana-vote-program",
  "spl-generic-token",
  "test-case",
@@ -9701,40 +9759,74 @@ dependencies = [
  "serde_json",
  "serial_test",
  "soketto",
+ "solana-account",
  "solana-account-decoder",
  "solana-accounts-db",
+ "solana-address-lookup-table-interface",
  "solana-client",
+ "solana-clock",
+ "solana-commitment-config",
+ "solana-compute-budget-interface",
  "solana-entry",
+ "solana-epoch-info",
+ "solana-epoch-rewards-hasher",
+ "solana-epoch-schedule",
  "solana-faucet",
+ "solana-fee-calculator",
+ "solana-fee-structure",
+ "solana-genesis-config",
  "solana-gossip",
+ "solana-hash",
+ "solana-instruction",
+ "solana-keypair",
  "solana-ledger",
  "solana-log-collector",
  "solana-measure",
+ "solana-message",
  "solana-metrics",
+ "solana-native-token",
  "solana-net-utils",
+ "solana-nonce",
+ "solana-nonce-account",
  "solana-perf",
  "solana-poh",
+ "solana-poh-config",
  "solana-program-option",
  "solana-program-pack",
  "solana-program-runtime",
  "solana-pubkey",
  "solana-quic-definitions",
  "solana-rayon-threadlimit",
+ "solana-rent",
+ "solana-rent-debits",
  "solana-rpc",
  "solana-rpc-client-api",
  "solana-runtime",
  "solana-runtime-transaction",
  "solana-sdk",
  "solana-send-transaction-service",
+ "solana-sha256-hasher",
+ "solana-signature",
+ "solana-signer",
+ "solana-slot-history",
+ "solana-stake-interface",
  "solana-stake-program",
  "solana-storage-bigtable",
  "solana-streamer",
  "solana-svm",
+ "solana-system-interface",
+ "solana-system-transaction",
+ "solana-sysvar",
+ "solana-time-utils",
  "solana-tpu-client",
+ "solana-transaction",
  "solana-transaction-context 2.3.0",
+ "solana-transaction-error",
  "solana-transaction-status",
+ "solana-validator-exit",
  "solana-version",
  "solana-vote",
+ "solana-vote-interface",
  "solana-vote-program",
  "spl-generic-token",
  "spl-pod",
@@ -10284,15 +10376,29 @@ dependencies = [
  "crossbeam-channel",
  "itertools 0.12.1",
  "log",
+ "solana-account",
  "solana-client",
+ "solana-clock",
  "solana-connection-cache",
+ "solana-fee-calculator",
+ "solana-genesis-config",
+ "solana-hash",
  "solana-keypair",
  "solana-logger",
  "solana-measure",
  "solana-metrics",
  "solana-net-utils",
+ "solana-nonce",
+ "solana-nonce-account",
+ "solana-pubkey",
+ "solana-quic-definitions",
  "solana-runtime",
  "solana-sdk",
+ "solana-signature",
+ "solana-signer",
+ "solana-system-interface",
+ "solana-system-transaction",
+ "solana-time-utils",
  "solana-tpu-client-next",
  "tokio",
  "tokio-util 0.7.15",
@@ -10521,8 +10627,18 @@ dependencies = [
  "agave-feature-set",
  "assert_matches",
  "bincode",
+ "solana-account",
+ "solana-instruction",
+ "solana-keypair",
+ "solana-program-error",
  "solana-program-test",
- "solana-sdk",
+ "solana-pubkey",
+ "solana-signer",
+ "solana-stake-interface",
+ "solana-system-interface",
+ "solana-sysvar",
+ "solana-transaction",
+ "solana-transaction-error",
  "solana-vote-program",
  "test-case",
 ]
@@ -10693,6 +10809,8 @@ dependencies = [
  "solana-nonce",
  "solana-nonce-account",
  "solana-precompile-error",
+ "solana-program-entrypoint",
+ "solana-program-pack",
  "solana-program-runtime",
  "solana-pubkey",
  "solana-rent",
@@ -10705,15 +10823,18 @@ dependencies = [
  "solana-secp256r1-program",
  "solana-signature",
  "solana-signer",
+ "solana-slot-hashes",
  "solana-svm",
  "solana-svm-callback",
  "solana-svm-conformance",
  "solana-svm-feature-set",
  "solana-svm-rent-collector",
  "solana-svm-transaction",
+ "solana-system-interface",
  "solana-system-program",
  "solana-system-transaction",
  "solana-sysvar",
+ "solana-sysvar-id",
  "solana-timings",
  "solana-transaction",
  "solana-transaction-context 2.3.0",
@@ -10808,6 +10929,7 @@ dependencies = [
  "solana-account",
  "solana-bincode",
  "solana-compute-budget",
+ "solana-fee-calculator",
  "solana-hash",
  "solana-instruction",
  "solana-log-collector",
@@ -10817,7 +10939,6 @@ dependencies = [
  "solana-program-runtime",
  "solana-pubkey",
  "solana-rent",
- "solana-sdk",
  "solana-sdk-ids",
  "solana-sha256-hasher",
  "solana-svm-callback",
@@ -10903,24 +11024,39 @@ dependencies = [
  "log",
  "serde_derive",
  "serde_json",
+ "solana-account",
  "solana-accounts-db",
  "solana-cli-output",
+ "solana-clock",
+ "solana-cluster-type",
+ "solana-commitment-config",
  "solana-compute-budget",
  "solana-core",
+ "solana-epoch-schedule",
+ "solana-feature-gate-interface",
+ "solana-fee-calculator",
  "solana-geyser-plugin-manager",
  "solana-gossip",
+ "solana-instruction",
+ "solana-keypair",
  "solana-ledger",
+ "solana-loader-v3-interface",
  "solana-logger",
+ "solana-message",
+ "solana-native-token",
  "solana-net-utils",
  "solana-program-test",
+ "solana-pubkey",
+ "solana-rent",
  "solana-rpc",
  "solana-rpc-client",
  "solana-rpc-client-api",
  "solana-runtime",
- "solana-sdk",
  "solana-sdk-ids",
+ "solana-signer",
  "solana-streamer",
  "solana-tpu-client",
+ "solana-validator-exit",
  "tokio",
 ]
 
@@ -10997,13 +11133,26 @@ dependencies = [
  "solana-account-decoder",
  "solana-clap-utils",
  "solana-cli-config",
+ "solana-clock",
+ "solana-commitment-config",
+ "solana-hash",
+ "solana-instruction",
+ "solana-keypair",
  "solana-logger",
+ "solana-message",
+ "solana-native-token",
+ "solana-pubkey",
  "solana-remote-wallet",
  "solana-rpc-client",
  "solana-rpc-client-api",
- "solana-sdk",
+ "solana-signature",
+ "solana-signer",
+ "solana-stake-interface",
  "solana-streamer",
+ "solana-system-interface",
  "solana-test-validator",
+ "solana-transaction",
+ "solana-transaction-error",
  "solana-transaction-status",
  "solana-version",
  "spl-associated-token-account",
@@ -11184,17 +11333,28 @@ dependencies = [
  "solana-clap-utils",
  "solana-cli",
  "solana-client",
+ "solana-commitment-config",
  "solana-core",
  "solana-faucet",
  "solana-gossip",
+ "solana-hash",
+ "solana-instruction",
+ "solana-keypair",
  "solana-local-cluster",
  "solana-logger",
  "solana-measure",
+ "solana-message",
  "solana-net-utils",
+ "solana-packet",
+ "solana-poh-config",
+ "solana-pubkey",
  "solana-rpc-client",
  "solana-runtime",
  "solana-sdk",
+ "solana-signer",
  "solana-streamer",
+ "solana-system-interface",
+ "solana-transaction",
  "solana-transaction-status",
  "solana-version",
 ]
@@ -11320,23 +11480,35 @@ dependencies = [
  "rand_chacha 0.3.1",
  "rayon",
  "rustls 0.23.27",
+ "solana-clock",
+ "solana-cluster-type",
  "solana-entry",
+ "solana-genesis-config",
  "solana-gossip",
+ "solana-hash",
+ "solana-keypair",
  "solana-ledger",
  "solana-logger",
  "solana-measure",
  "solana-metrics",
+ "solana-native-token",
  "solana-net-utils",
  "solana-perf",
  "solana-poh",
+ "solana-pubkey",
  "solana-quic-client",
  "solana-rayon-threadlimit",
  "solana-rpc",
  "solana-rpc-client-api",
  "solana-runtime",
- "solana-sdk",
+ "solana-signature",
+ "solana-signer",
  "solana-streamer",
+ "solana-system-transaction",
+ "solana-time-utils",
  "solana-tls-utils",
+ "solana-transaction",
+ "solana-transaction-error",
  "static_assertions",
  "test-case",
  "thiserror 2.0.12",
@@ -11482,14 +11654,21 @@ dependencies = [
  "socket2",
  "solana-clap-utils",
  "solana-client",
+ "solana-clock",
+ "solana-commitment-config",
  "solana-core",
+ "solana-keypair",
  "solana-local-cluster",
  "solana-logger",
  "solana-measure",
  "solana-metrics",
+ "solana-native-token",
  "solana-net-utils",
  "solana-perf",
+ "solana-pubkey",
+ "solana-quic-definitions",
  "solana-sdk",
+ "solana-signer",
  "solana-streamer",
  "solana-transaction-metrics-tracker",
  "solana-version",
@@ -11586,6 +11765,7 @@ dependencies = [
  "solana-bincode",
  "solana-clock",
  "solana-epoch-schedule",
+ "solana-fee-calculator",
  "solana-frozen-abi",
  "solana-frozen-abi-macro",
  "solana-hash",
@@ -11597,7 +11777,6 @@ dependencies = [
  "solana-program-runtime",
  "solana-pubkey",
  "solana-rent",
- "solana-sdk",
  "solana-sdk-ids",
  "solana-sha256-hasher",
  "solana-signer",

+ 1 - 1
compute-budget/src/compute_budget.rs

@@ -78,7 +78,7 @@ pub struct ComputeBudget {
     /// Number of compute units consumed for a multiscalar multiplication (msm) of ristretto points.
     /// The total cost is calculated as `msm_base_cost + (length - 1) * msm_incremental_cost`.
     pub curve25519_ristretto_msm_incremental_cost: u64,
-    /// program heap region size, default: solana_sdk::entrypoint::HEAP_LENGTH
+    /// program heap region size, default: solana_program_entrypoint::HEAP_LENGTH
     pub heap_size: u32,
     /// Number of compute units per additional 32k heap above the default (~.5
     /// us per 32k at 15 units/us rounded up)

+ 1 - 0
core/Cargo.toml

@@ -155,6 +155,7 @@ serde_json = { workspace = true }
 serial_test = { workspace = true }
 # See order-crates-for-publishing.py for using this unusual `path = "."`
 solana-bpf-loader-program = { workspace = true }
+solana-compute-budget-interface = { workspace = true }
 solana-compute-budget-program = { workspace = true }
 solana-core = { path = ".", features = ["dev-context-only-utils"] }
 solana-cost-model = { workspace = true, features = ["dev-context-only-utils"] }

+ 8 - 10
core/benches/receive_and_buffer_utils.rs

@@ -2,6 +2,8 @@ use {
     agave_banking_stage_ingress_types::BankingPacketBatch,
     crossbeam_channel::{unbounded, Receiver, Sender},
     rand::prelude::*,
+    solana_account::AccountSharedData,
+    solana_compute_budget_interface::ComputeBudgetInstruction,
     solana_core::banking_stage::{
         decision_maker::BufferedPacketsDecision,
         packet_deserializer::PacketDeserializer,
@@ -14,23 +16,19 @@ use {
         },
         TOTAL_BUFFERED_PACKETS,
     },
+    solana_genesis_config::GenesisConfig,
+    solana_hash::Hash,
+    solana_instruction::{AccountMeta, Instruction},
     solana_keypair::Keypair,
     solana_ledger::genesis_utils::{create_genesis_config, GenesisConfigInfo},
+    solana_message::{Message, VersionedMessage},
     solana_perf::packet::{to_packet_batches, PacketBatch, NUM_PACKETS},
     solana_poh::poh_recorder::BankStart,
     solana_pubkey::Pubkey,
     solana_runtime::{bank::Bank, bank_forks::BankForks},
-    solana_sdk::{
-        account::AccountSharedData,
-        compute_budget::ComputeBudgetInstruction,
-        genesis_config::GenesisConfig,
-        hash::Hash,
-        instruction::{AccountMeta, Instruction},
-        message::{Message, VersionedMessage},
-        signer::Signer,
-        transaction::VersionedTransaction,
-    },
     solana_sdk_ids::system_program,
+    solana_signer::Signer,
+    solana_transaction::versioned::VersionedTransaction,
     std::{
         sync::{Arc, RwLock},
         time::Instant,

+ 1 - 1
docs/src/implemented-proposals/installer.md

@@ -70,7 +70,7 @@ An update manifest is used to advertise the deployment of new release tarballs o
 The update tarball itself is hosted elsewhere, off-chain and can be fetched from the specified `download_url`.
 
 ```text
-use solana_sdk::signature::Signature;
+use solana_signature::Signature;
 
 /// Information required to download and apply a given update
 pub struct UpdateManifest {

+ 2 - 1
docs/src/proposals/cluster-test-framework.md

@@ -24,7 +24,8 @@ Each CTF test starts with an opaque entry point and a funded keypair. The test s
 
 ```text
 use crate::contact_info::ContactInfo;
-use solana_sdk::signature::{Keypair, Signer};
+use solana_keypair::Keypair;
+use solana_signer::Signer;
 pub fn test_this_behavior(
     entry_point_info: &ContactInfo,
     funding_keypair: &Keypair,

+ 1 - 1
poh-bench/Cargo.toml

@@ -18,7 +18,7 @@ solana-logger = { workspace = true }
 solana-measure = { workspace = true }
 solana-perf = { workspace = true }
 solana-rayon-threadlimit = { workspace = true }
-solana-sdk = { workspace = true }
+solana-sha256-hasher = { workspace = true }
 solana-version = { workspace = true }
 
 [package.metadata.docs.rs]

+ 1 - 1
poh-bench/src/main.rs

@@ -8,7 +8,7 @@ use {
     solana_measure::measure::Measure,
     solana_perf::perf_libs,
     solana_rayon_threadlimit::get_max_thread_count,
-    solana_sdk::hash::hash,
+    solana_sha256_hasher::hash,
 };
 
 fn main() {

+ 1 - 1
program-runtime/src/execution_budget.rs

@@ -50,7 +50,7 @@ pub struct SVMTransactionExecutionBudget {
     pub stack_frame_size: usize,
     /// Maximum cross-program invocation instruction size
     pub max_cpi_instruction_size: usize,
-    /// program heap region size, default: solana_sdk::entrypoint::HEAP_LENGTH
+    /// program heap region size, default: solana_program_entrypoint::HEAP_LENGTH
     pub heap_size: u32,
 }
 

+ 2 - 3
program-runtime/src/sysvar_cache.rs

@@ -278,9 +278,8 @@ impl SysvarCache {
 
 /// These methods facilitate a transition from fetching sysvars from keyed
 /// accounts to fetching from the sysvar cache without breaking consensus. In
-/// order to keep consistent behavior, they continue to enforce the same checks
-/// as `solana_sdk::keyed_account::from_keyed_account` despite dynamically
-/// loading them instead of deserializing from account data.
+/// order to keep consistent behavior, they continue to enforce legacy checks
+/// despite dynamically loading them instead of deserializing from account data.
 pub mod get_sysvar_with_account_check {
     use super::*;
 

+ 30 - 1
program-test/Cargo.toml

@@ -18,22 +18,51 @@ chrono-humanize = { workspace = true }
 crossbeam-channel = { workspace = true }
 log = { workspace = true }
 serde = { workspace = true }
+solana-account = { workspace = true }
+solana-account-info = { workspace = true }
 solana-accounts-db = { workspace = true }
 solana-banks-client = { workspace = true }
 solana-banks-interface = { workspace = true }
 solana-banks-server = { workspace = true }
+solana-clock = { workspace = true }
+solana-commitment-config = { workspace = true }
 solana-compute-budget = { workspace = true }
+solana-cpi = { workspace = true }
+solana-epoch-rewards = { workspace = true }
+solana-epoch-schedule = { workspace = true }
+solana-fee-calculator = { workspace = true }
+solana-genesis-config = { workspace = true }
+solana-hash = { workspace = true }
 solana-instruction = { workspace = true }
+solana-keypair = { workspace = true }
+solana-loader-v3-interface = { workspace = true }
 solana-log-collector = { workspace = true }
 solana-logger = { workspace = true }
+solana-message = { workspace = true }
+solana-msg = { workspace = true }
+solana-native-token = { workspace = true }
+solana-poh-config = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
 solana-program-runtime = { workspace = true }
+solana-pubkey = { workspace = true }
+solana-rent = { workspace = true }
 solana-runtime = { workspace = true }
 solana-sbpf = { workspace = true }
-solana-sdk = { workspace = true }
+solana-sdk = { workspace = true, default-features = false }
 solana-sdk-ids = { workspace = true }
+solana-sdk-macro = { workspace = true }
+solana-signer = { workspace = true }
+solana-stable-layout = { workspace = true }
+solana-stake-interface = { workspace = true }
 solana-svm = { workspace = true }
+solana-system-interface = { workspace = true }
+solana-sysvar = { workspace = true }
+solana-sysvar-id = { workspace = true }
 solana-timings = { workspace = true }
+solana-transaction = { workspace = true }
 solana-transaction-context = { workspace = true }
+solana-transaction-error = { workspace = true }
 solana-vote-program = { workspace = true }
 spl-generic-token = { workspace = true }
 thiserror = { workspace = true }

+ 25 - 22
program-test/src/lib.rs

@@ -9,16 +9,32 @@ use {
     base64::{prelude::BASE64_STANDARD, Engine},
     chrono_humanize::{Accuracy, HumanTime, Tense},
     log::*,
+    solana_account::{create_account_shared_data_for_test, Account, AccountSharedData},
+    solana_account_info::AccountInfo,
     solana_accounts_db::epoch_accounts_hash::EpochAccountsHash,
     solana_banks_client::start_client,
     solana_banks_server::banks_server::start_local_server,
+    solana_clock::{Epoch, Slot},
     solana_compute_budget::compute_budget::ComputeBudget,
-    solana_instruction::{error::InstructionError, Instruction},
+    solana_fee_calculator::{FeeRateGovernor, DEFAULT_TARGET_LAMPORTS_PER_SIGNATURE},
+    solana_genesis_config::{ClusterType, GenesisConfig},
+    solana_hash::Hash,
+    solana_instruction::{
+        error::{InstructionError, UNSUPPORTED_SYSVAR},
+        Instruction,
+    },
+    solana_keypair::Keypair,
     solana_log_collector::ic_msg,
+    solana_native_token::sol_to_lamports,
+    solana_poh_config::PohConfig,
+    solana_program_entrypoint::{deserialize, SUCCESS},
+    solana_program_error::{ProgramError, ProgramResult},
     solana_program_runtime::{
         invoke_context::BuiltinFunctionWithContext, loaded_programs::ProgramCacheEntry,
         serialization::serialize_parameters, stable_log,
     },
+    solana_pubkey::Pubkey,
+    solana_rent::Rent,
     solana_runtime::{
         accounts_background_service::SnapshotRequestKind,
         bank::Bank,
@@ -29,23 +45,10 @@ use {
         snapshot_config::SnapshotConfig,
         snapshot_controller::SnapshotController,
     },
-    solana_sdk::{
-        account::{create_account_shared_data_for_test, Account, AccountSharedData},
-        account_info::AccountInfo,
-        clock::{Epoch, Slot},
-        entrypoint::{deserialize, ProgramResult, SUCCESS},
-        fee_calculator::{FeeRateGovernor, DEFAULT_TARGET_LAMPORTS_PER_SIGNATURE},
-        genesis_config::{ClusterType, GenesisConfig},
-        hash::Hash,
-        native_token::sol_to_lamports,
-        poh_config::PohConfig,
-        program_error::{ProgramError, UNSUPPORTED_SYSVAR},
-        pubkey::Pubkey,
-        rent::Rent,
-        signature::{Keypair, Signer},
-        stable_layout::stable_instruction::StableInstruction,
-        sysvar::{Sysvar, SysvarId},
-    },
+    solana_signer::Signer,
+    solana_stable_layout::stable_instruction::StableInstruction,
+    solana_sysvar::Sysvar,
+    solana_sysvar_id::SysvarId,
     solana_timings::ExecuteTimings,
     solana_vote_program::vote_state::{self, VoteState, VoteStateVersions},
     std::{
@@ -105,7 +108,7 @@ fn get_invoke_context<'a, 'b>() -> &'a mut InvokeContext<'b> {
 }
 
 pub fn invoke_builtin_function(
-    builtin_function: solana_sdk::entrypoint::ProcessInstruction,
+    builtin_function: solana_program_entrypoint::ProcessInstruction,
     invoke_context: &mut InvokeContext,
 ) -> Result<u64, Box<dyn std::error::Error>> {
     set_invoke_context(invoke_context);
@@ -239,7 +242,7 @@ fn get_sysvar<T: Default + Sysvar + Sized + serde::de::DeserializeOwned + Clone>
 }
 
 struct SyscallStubs {}
-impl solana_sdk::program_stubs::SyscallStubs for SyscallStubs {
+impl solana_sysvar::program_stubs::SyscallStubs for SyscallStubs {
     fn sol_log(&self, message: &str) {
         let invoke_context = get_invoke_context();
         ic_msg!(invoke_context, "Program log: {}", message);
@@ -687,7 +690,7 @@ impl ProgramTest {
                 Account {
                     lamports: Rent::default().minimum_balance(data.len()).max(1),
                     data,
-                    owner: solana_sdk::bpf_loader::id(),
+                    owner: solana_sdk_ids::bpf_loader::id(),
                     executable: true,
                     rent_epoch: 0,
                 },
@@ -791,7 +794,7 @@ impl ProgramTest {
             static ONCE: Once = Once::new();
 
             ONCE.call_once(|| {
-                solana_sdk::program_stubs::set_syscall_stubs(Box::new(SyscallStubs {}));
+                solana_sysvar::program_stubs::set_syscall_stubs(Box::new(SyscallStubs {}));
             });
         }
 

+ 8 - 8
program-test/src/programs.rs

@@ -1,16 +1,16 @@
-use solana_sdk::{
-    account::{Account, AccountSharedData},
-    bpf_loader,
-    bpf_loader_upgradeable::{self, get_program_data_address, UpgradeableLoaderState},
-    pubkey::Pubkey,
-    rent::Rent,
+use {
+    solana_account::{Account, AccountSharedData},
+    solana_loader_v3_interface::{get_program_data_address, state::UpgradeableLoaderState},
+    solana_pubkey::Pubkey,
+    solana_rent::Rent,
+    solana_sdk_ids::{bpf_loader, bpf_loader_upgradeable},
 };
 
 mod spl_memo_1_0 {
-    solana_sdk::declare_id!("Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo");
+    solana_sdk_macro::declare_id!("Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo");
 }
 mod spl_memo_3_0 {
-    solana_sdk::declare_id!("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr");
+    solana_sdk_macro::declare_id!("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr");
 }
 
 static SPL_PROGRAMS: &[(Pubkey, Pubkey, &[u8])] = &[

+ 5 - 7
program-test/tests/bpf.rs

@@ -1,13 +1,11 @@
 use {
     agave_feature_set as feature_set,
+    solana_instruction::{AccountMeta, Instruction},
     solana_program_test::ProgramTest,
-    solana_sdk::{
-        bpf_loader,
-        instruction::{AccountMeta, Instruction},
-        pubkey::Pubkey,
-        signature::Signer,
-        transaction::Transaction,
-    },
+    solana_pubkey::Pubkey,
+    solana_sdk_ids::bpf_loader,
+    solana_signer::Signer,
+    solana_transaction::Transaction,
     test_case::test_case,
 };
 

+ 9 - 9
program-test/tests/builtins.rs

@@ -1,13 +1,13 @@
 use {
+    solana_keypair::Keypair,
+    solana_loader_v3_interface::state::UpgradeableLoaderState,
+    solana_message::{v0::Message, VersionedMessage},
     solana_program_test::ProgramTest,
-    solana_sdk::{
-        bpf_loader_upgradeable::{self, UpgradeableLoaderState},
-        message::{v0::Message, VersionedMessage},
-        pubkey::Pubkey,
-        signature::{Keypair, Signer},
-        system_instruction,
-        transaction::{Transaction, VersionedTransaction},
-    },
+    solana_pubkey::Pubkey,
+    solana_sdk_ids::bpf_loader_upgradeable,
+    solana_signer::Signer,
+    solana_system_interface::instruction as system_instruction,
+    solana_transaction::{versioned::VersionedTransaction, Transaction},
 };
 
 #[tokio::test]
@@ -21,7 +21,7 @@ async fn test_bpf_loader_upgradeable_present() {
     let rent = banks_client.get_rent().await.unwrap();
     let buffer_rent = rent.minimum_balance(UpgradeableLoaderState::size_of_programdata(1));
 
-    let create_buffer_instructions = bpf_loader_upgradeable::create_buffer(
+    let create_buffer_instructions = solana_loader_v3_interface::instruction::create_buffer(
         &payer.pubkey(),
         &buffer_keypair.pubkey(),
         &upgrade_authority_keypair.pubkey(),

+ 6 - 7
program-test/tests/compute_units.rs

@@ -1,12 +1,11 @@
 use {
+    solana_instruction::{AccountMeta, Instruction},
+    solana_keypair::Keypair,
     solana_program_test::ProgramTest,
-    solana_sdk::{
-        instruction::{AccountMeta, Instruction},
-        signature::{Keypair, Signer},
-        system_instruction,
-        sysvar::rent,
-        transaction::Transaction,
-    },
+    solana_signer::Signer,
+    solana_system_interface::instruction as system_instruction,
+    solana_sysvar::rent,
+    solana_transaction::Transaction,
 };
 
 #[should_panic]

+ 5 - 4
program-test/tests/core_bpf.rs

@@ -1,9 +1,10 @@
 use {
+    solana_instruction::Instruction,
     solana_program_test::{ProgramTest, ProgramTestContext},
-    solana_sdk::{
-        bpf_loader_upgradeable, instruction::Instruction, pubkey::Pubkey, signature::Signer,
-        transaction::Transaction,
-    },
+    solana_pubkey::Pubkey,
+    solana_sdk_ids::bpf_loader_upgradeable,
+    solana_signer::Signer,
+    solana_transaction::Transaction,
 };
 
 async fn assert_bpf_program(context: &ProgramTestContext, program_id: &Pubkey) {

+ 13 - 14
program-test/tests/cpi.rs

@@ -1,19 +1,18 @@
 use {
+    solana_account_info::{next_account_info, AccountInfo},
+    solana_cpi::invoke,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_keypair::Keypair,
+    solana_msg::msg,
+    solana_program_entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE},
     solana_program_test::{processor, ProgramTest},
-    solana_sdk::{
-        account_info::{next_account_info, AccountInfo},
-        entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE},
-        instruction::{get_stack_height, AccountMeta, Instruction},
-        msg,
-        program::invoke,
-        pubkey::Pubkey,
-        rent::Rent,
-        signature::Signer,
-        signer::keypair::Keypair,
-        system_instruction, system_program,
-        sysvar::Sysvar,
-        transaction::Transaction,
-    },
+    solana_pubkey::Pubkey,
+    solana_rent::Rent,
+    solana_sdk::instruction::get_stack_height,
+    solana_signer::Signer,
+    solana_system_interface::{instruction as system_instruction, program as system_program},
+    solana_sysvar::Sysvar,
+    solana_transaction::Transaction,
 };
 
 // Process instruction to invoke into another program

+ 11 - 12
program-test/tests/fuzz.rs

@@ -1,18 +1,17 @@
 use {
+    solana_account_info::AccountInfo,
     solana_banks_client::BanksClient,
+    solana_hash::Hash,
+    solana_instruction::Instruction,
+    solana_keypair::Keypair,
+    solana_msg::msg,
+    solana_program_error::ProgramResult,
     solana_program_test::{processor, ProgramTest},
-    solana_sdk::{
-        account_info::AccountInfo,
-        entrypoint::ProgramResult,
-        hash::Hash,
-        instruction::Instruction,
-        msg,
-        pubkey::Pubkey,
-        rent::Rent,
-        signature::{Keypair, Signer},
-        system_instruction,
-        transaction::Transaction,
-    },
+    solana_pubkey::Pubkey,
+    solana_rent::Rent,
+    solana_signer::Signer,
+    solana_system_interface::instruction as system_instruction,
+    solana_transaction::Transaction,
 };
 
 fn process_instruction(

+ 5 - 8
program-test/tests/genesis_accounts.rs

@@ -1,26 +1,23 @@
-use {
-    solana_program_test::ProgramTest,
-    solana_sdk::{account::Account, pubkey::Pubkey},
-};
+use {solana_account::Account, solana_program_test::ProgramTest, solana_pubkey::Pubkey};
 
 #[tokio::test]
 async fn genesis_accounts() {
     let my_genesis_accounts = [
         (
             Pubkey::new_unique(),
-            Account::new(1, 0, &solana_sdk::system_program::id()),
+            Account::new(1, 0, &solana_system_interface::program::id()),
         ),
         (
             Pubkey::new_unique(),
-            Account::new(1, 0, &solana_sdk::config::program::id()),
+            Account::new(1, 0, &solana_sdk_ids::config::id()),
         ),
         (
             Pubkey::new_unique(),
-            Account::new(1, 0, &solana_sdk::feature::id()),
+            Account::new(1, 0, &solana_sdk_ids::feature::id()),
         ),
         (
             Pubkey::new_unique(),
-            Account::new(1, 0, &solana_sdk::stake::program::id()),
+            Account::new(1, 0, &solana_stake_interface::program::id()),
         ),
     ];
 

+ 9 - 10
program-test/tests/lamports.rs

@@ -1,15 +1,14 @@
 use {
+    solana_account_info::{next_account_info, AccountInfo},
+    solana_instruction::{AccountMeta, Instruction},
+    solana_keypair::Keypair,
+    solana_msg::msg,
+    solana_program_error::ProgramResult,
     solana_program_test::{processor, ProgramTest},
-    solana_sdk::{
-        account_info::{next_account_info, AccountInfo},
-        entrypoint::ProgramResult,
-        instruction::{AccountMeta, Instruction},
-        msg,
-        pubkey::Pubkey,
-        signature::{Keypair, Signer},
-        system_instruction,
-        transaction::Transaction,
-    },
+    solana_pubkey::Pubkey,
+    solana_signer::Signer,
+    solana_system_interface::instruction as system_instruction,
+    solana_transaction::Transaction,
 };
 
 fn move_lamports_process_instruction(

+ 7 - 8
program-test/tests/panic.rs

@@ -1,13 +1,12 @@
 use {
+    solana_account_info::AccountInfo,
+    solana_instruction::{error::InstructionError, Instruction},
+    solana_program_error::ProgramResult,
     solana_program_test::{processor, ProgramTest},
-    solana_sdk::{
-        account_info::AccountInfo,
-        entrypoint::ProgramResult,
-        instruction::{Instruction, InstructionError},
-        pubkey::Pubkey,
-        signature::Signer,
-        transaction::{Transaction, TransactionError},
-    },
+    solana_pubkey::Pubkey,
+    solana_signer::Signer,
+    solana_transaction::Transaction,
+    solana_transaction_error::TransactionError,
 };
 
 fn panic(_program_id: &Pubkey, _accounts: &[AccountInfo], _input: &[u8]) -> ProgramResult {

+ 10 - 11
program-test/tests/realloc.rs

@@ -1,16 +1,15 @@
 use {
+    solana_account_info::{next_account_info, AccountInfo},
+    solana_cpi::invoke,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_keypair::Keypair,
+    solana_program_error::ProgramResult,
     solana_program_test::{processor, ProgramTest},
-    solana_sdk::{
-        account_info::{next_account_info, AccountInfo},
-        entrypoint::ProgramResult,
-        instruction::{AccountMeta, Instruction},
-        program::invoke,
-        pubkey::Pubkey,
-        signature::{Keypair, Signer},
-        system_instruction,
-        sysvar::rent,
-        transaction::Transaction,
-    },
+    solana_pubkey::Pubkey,
+    solana_signer::Signer,
+    solana_system_interface::instruction as system_instruction,
+    solana_sysvar::rent,
+    solana_transaction::Transaction,
 };
 
 fn process_instruction(

+ 9 - 12
program-test/tests/return_data.rs

@@ -1,19 +1,16 @@
 use {
     assert_matches::assert_matches,
+    solana_account_info::{next_account_info, AccountInfo},
     solana_banks_client::BanksClientError,
+    solana_commitment_config::CommitmentLevel,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_msg::msg,
+    solana_program_error::{ProgramError, ProgramResult},
     solana_program_test::{processor, ProgramTest},
-    solana_sdk::{
-        account_info::{next_account_info, AccountInfo},
-        commitment_config::CommitmentLevel,
-        entrypoint::ProgramResult,
-        instruction::{AccountMeta, Instruction},
-        msg,
-        program::{get_return_data, invoke, set_return_data},
-        program_error::ProgramError,
-        pubkey::Pubkey,
-        signature::Signer,
-        transaction::Transaction,
-    },
+    solana_pubkey::Pubkey,
+    solana_sdk::program::{get_return_data, invoke, set_return_data},
+    solana_signer::Signer,
+    solana_transaction::Transaction,
     solana_transaction_context::TransactionReturnData,
     std::str::from_utf8,
 };

+ 9 - 10
program-test/tests/setup.rs

@@ -1,16 +1,15 @@
 use {
+    solana_keypair::Keypair,
     solana_program_test::ProgramTestContext,
-    solana_sdk::{
-        pubkey::Pubkey,
-        rent::Rent,
-        signature::{Keypair, Signer},
-        stake::{
-            instruction as stake_instruction,
-            state::{Authorized, Lockup},
-        },
-        system_instruction, system_program,
-        transaction::Transaction,
+    solana_pubkey::Pubkey,
+    solana_rent::Rent,
+    solana_signer::Signer,
+    solana_stake_interface::{
+        instruction as stake_instruction,
+        state::{Authorized, Lockup},
     },
+    solana_system_interface::{instruction as system_instruction, program as system_program},
+    solana_transaction::Transaction,
     solana_vote_program::{
         vote_instruction,
         vote_state::{self, VoteInit, VoteState},

+ 8 - 10
program-test/tests/spl.rs

@@ -1,15 +1,13 @@
 use {
+    solana_instruction::{AccountMeta, Instruction},
+    solana_keypair::Keypair,
     solana_program_test::{programs::spl_programs, ProgramTest},
-    solana_sdk::{
-        bpf_loader, bpf_loader_upgradeable,
-        instruction::{AccountMeta, Instruction},
-        pubkey::Pubkey,
-        signature::Signer,
-        signer::keypair::Keypair,
-        system_instruction,
-        sysvar::rent,
-        transaction::Transaction,
-    },
+    solana_pubkey::Pubkey,
+    solana_sdk_ids::{bpf_loader, bpf_loader_upgradeable},
+    solana_signer::Signer,
+    solana_system_interface::instruction as system_instruction,
+    solana_sysvar::rent,
+    solana_transaction::Transaction,
 };
 
 #[tokio::test]

+ 12 - 5
program-test/tests/sysvar.rs

@@ -1,10 +1,17 @@
 use {
+    solana_account_info::AccountInfo,
+    solana_clock::Clock,
+    solana_epoch_rewards::EpochRewards,
+    solana_epoch_schedule::EpochSchedule,
+    solana_instruction::Instruction,
+    solana_msg::msg,
+    solana_program_error::ProgramResult,
     solana_program_test::{processor, ProgramTest},
-    solana_sdk::{
-        account_info::AccountInfo, clock::Clock, entrypoint::ProgramResult,
-        epoch_rewards::EpochRewards, epoch_schedule::EpochSchedule, instruction::Instruction, msg,
-        pubkey::Pubkey, rent::Rent, signature::Signer, sysvar::Sysvar, transaction::Transaction,
-    },
+    solana_pubkey::Pubkey,
+    solana_rent::Rent,
+    solana_signer::Signer,
+    solana_sysvar::Sysvar,
+    solana_transaction::Transaction,
 };
 
 // Process instruction to invoke into another program

+ 9 - 11
program-test/tests/sysvar_last_restart_slot.rs

@@ -1,16 +1,14 @@
 use {
+    solana_account_info::AccountInfo,
+    solana_clock::Slot,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_msg::msg,
+    solana_program_error::ProgramResult,
     solana_program_test::{processor, ProgramTest, ProgramTestContext},
-    solana_sdk::{
-        account_info::AccountInfo,
-        clock::Slot,
-        entrypoint::ProgramResult,
-        instruction::{AccountMeta, Instruction},
-        msg,
-        pubkey::Pubkey,
-        signature::Signer,
-        sysvar::{last_restart_slot, last_restart_slot::LastRestartSlot, Sysvar},
-        transaction::Transaction,
-    },
+    solana_pubkey::Pubkey,
+    solana_signer::Signer,
+    solana_sysvar::{last_restart_slot, last_restart_slot::LastRestartSlot, Sysvar},
+    solana_transaction::Transaction,
 };
 
 // program to check both syscall and sysvar

+ 19 - 20
program-test/tests/warp.rs

@@ -6,30 +6,29 @@ use {
     bincode::deserialize,
     log::debug,
     setup::{setup_stake, setup_vote},
+    solana_account::Account,
+    solana_account_info::{next_account_info, AccountInfo},
     solana_banks_client::BanksClient,
+    solana_clock::Clock,
+    solana_instruction::{error::InstructionError, AccountMeta, Instruction},
+    solana_keypair::Keypair,
+    solana_program_error::{ProgramError, ProgramResult},
     solana_program_test::{processor, ProgramTest, ProgramTestBanksClientExt, ProgramTestError},
-    solana_sdk::{
-        account::Account,
-        account_info::{next_account_info, AccountInfo},
-        clock::Clock,
-        entrypoint::ProgramResult,
-        instruction::{AccountMeta, Instruction, InstructionError},
-        program_error::ProgramError,
-        pubkey::Pubkey,
-        rent::Rent,
-        signature::{Keypair, Signer},
-        stake::{
-            instruction as stake_instruction,
-            state::{StakeActivationStatus, StakeStateV2},
-        },
-        sysvar::{
-            clock,
-            stake_history::{self, StakeHistory},
-            Sysvar,
-        },
-        transaction::{Transaction, TransactionError},
+    solana_pubkey::Pubkey,
+    solana_rent::Rent,
+    solana_signer::Signer,
+    solana_stake_interface::{
+        instruction as stake_instruction,
+        state::{StakeActivationStatus, StakeStateV2},
     },
     solana_stake_program::stake_state,
+    solana_sysvar::{
+        clock,
+        stake_history::{self, StakeHistory},
+        Sysvar,
+    },
+    solana_transaction::Transaction,
+    solana_transaction_error::TransactionError,
     solana_vote_program::vote_state,
     std::convert::TryInto,
 };

+ 10 - 1
programs/bpf-loader-tests/Cargo.toml

@@ -14,9 +14,18 @@ edition = { workspace = true }
 [dev-dependencies]
 assert_matches = { workspace = true }
 bincode = { workspace = true }
+solana-account = { workspace = true }
 solana-bpf-loader-program = { workspace = true }
+solana-instruction = { workspace = true }
+solana-keypair = { workspace = true }
+solana-loader-v3-interface = { workspace = true }
 solana-program-test = { workspace = true }
-solana-sdk = { workspace = true }
+solana-pubkey = { workspace = true }
+solana-sdk-ids = { workspace = true }
+solana-signer = { workspace = true }
+solana-system-interface = { workspace = true }
+solana-transaction = { workspace = true }
+solana-transaction-error = { workspace = true }
 
 [package.metadata.docs.rs]
 targets = ["x86_64-unknown-linux-gnu"]

+ 9 - 9
programs/bpf-loader-tests/tests/common.rs

@@ -1,16 +1,16 @@
 #![allow(dead_code)]
 
 use {
+    solana_account::{state_traits::StateMut, AccountSharedData},
+    solana_instruction::{error::InstructionError, Instruction},
+    solana_keypair::Keypair,
+    solana_loader_v3_interface::state::UpgradeableLoaderState,
     solana_program_test::*,
-    solana_sdk::{
-        account::AccountSharedData,
-        account_utils::StateMut,
-        bpf_loader_upgradeable::{id, UpgradeableLoaderState},
-        instruction::{Instruction, InstructionError},
-        pubkey::Pubkey,
-        signature::{Keypair, Signer},
-        transaction::{Transaction, TransactionError},
-    },
+    solana_pubkey::Pubkey,
+    solana_sdk_ids::bpf_loader_upgradeable::id,
+    solana_signer::Signer,
+    solana_transaction::Transaction,
+    solana_transaction_error::TransactionError,
 };
 
 pub async fn setup_test_context() -> ProgramTestContext {

+ 12 - 9
programs/bpf-loader-tests/tests/extend_program_ix.rs

@@ -1,17 +1,20 @@
 use {
     assert_matches::assert_matches,
     common::{add_upgradeable_loader_account, assert_ix_error, setup_test_context},
+    solana_account::{AccountSharedData, ReadableAccount, WritableAccount},
+    solana_instruction::error::InstructionError,
+    solana_keypair::Keypair,
+    solana_loader_v3_interface::{instruction::extend_program, state::UpgradeableLoaderState},
     solana_program_test::*,
-    solana_sdk::{
-        account::{AccountSharedData, ReadableAccount, WritableAccount},
-        bpf_loader_upgradeable::{extend_program, id, UpgradeableLoaderState},
-        instruction::InstructionError,
-        pubkey::Pubkey,
-        signature::{Keypair, Signer},
-        system_instruction::{self, SystemError, MAX_PERMITTED_DATA_LENGTH},
-        system_program,
-        transaction::{Transaction, TransactionError},
+    solana_pubkey::Pubkey,
+    solana_sdk_ids::bpf_loader_upgradeable::id,
+    solana_signer::Signer,
+    solana_system_interface::{
+        error::SystemError, instruction as system_instruction, program as system_program,
+        MAX_PERMITTED_DATA_LENGTH,
     },
+    solana_transaction::Transaction,
+    solana_transaction_error::TransactionError,
 };
 
 mod common;

+ 6 - 1
programs/ed25519-tests/Cargo.toml

@@ -12,8 +12,13 @@ edition = { workspace = true }
 assert_matches = { workspace = true }
 ed25519-dalek = { workspace = true }
 rand = { workspace = true }
+solana-ed25519-program = { workspace = true }
+solana-instruction = { workspace = true }
+solana-precompile-error = { workspace = true }
 solana-program-test = { workspace = true }
-solana-sdk = { workspace = true }
+solana-signer = { workspace = true }
+solana-transaction = { workspace = true }
+solana-transaction-error = { workspace = true }
 
 [package.metadata.docs.rs]
 targets = ["x86_64-unknown-linux-gnu"]

+ 4 - 9
programs/ed25519-tests/tests/process_transaction.rs

@@ -1,13 +1,8 @@
 use {
-    assert_matches::assert_matches,
-    solana_program_test::*,
-    solana_sdk::{
-        ed25519_instruction::new_ed25519_instruction,
-        instruction::InstructionError,
-        precompiles::PrecompileError,
-        signature::Signer,
-        transaction::{Transaction, TransactionError},
-    },
+    assert_matches::assert_matches, solana_ed25519_program::new_ed25519_instruction,
+    solana_instruction::error::InstructionError, solana_precompile_error::PrecompileError,
+    solana_program_test::*, solana_signer::Signer, solana_transaction::Transaction,
+    solana_transaction_error::TransactionError,
 };
 
 // Since ed25519_dalek is still using the old version of rand, this test

+ 130 - 3
programs/sbf/Cargo.lock

@@ -168,37 +168,51 @@ dependencies = [
  "serde_json",
  "serde_yaml",
  "signal-hook",
+ "solana-account",
  "solana-accounts-db",
  "solana-clap-utils",
  "solana-cli-config",
  "solana-cli-output",
+ "solana-clock",
+ "solana-commitment-config",
  "solana-core",
  "solana-download-utils",
  "solana-entry",
+ "solana-epoch-schedule",
  "solana-faucet",
  "solana-genesis-utils",
  "solana-geyser-plugin-manager",
  "solana-gossip",
+ "solana-hash",
+ "solana-keypair",
  "solana-ledger",
  "solana-logger",
  "solana-metrics",
+ "solana-native-token",
  "solana-net-utils",
  "solana-perf",
  "solana-poh",
  "solana-program-runtime",
+ "solana-pubkey",
+ "solana-quic-definitions",
  "solana-rayon-threadlimit",
+ "solana-rent",
  "solana-rpc",
  "solana-rpc-client",
  "solana-rpc-client-api",
  "solana-runtime",
  "solana-sdk",
+ "solana-sdk-ids",
  "solana-send-transaction-service",
+ "solana-signer",
  "solana-storage-bigtable",
  "solana-streamer",
+ "solana-system-interface",
  "solana-test-validator",
  "solana-tpu-client",
  "solana-turbine",
  "solana-unified-scheduler-pool",
+ "solana-validator-exit",
  "solana-version",
  "solana-vote-program",
  "symlink",
@@ -7298,22 +7312,51 @@ dependencies = [
  "crossbeam-channel",
  "log",
  "serde",
+ "solana-account",
+ "solana-account-info",
  "solana-accounts-db",
  "solana-banks-client",
  "solana-banks-interface",
  "solana-banks-server",
+ "solana-clock",
+ "solana-commitment-config",
  "solana-compute-budget",
+ "solana-cpi",
+ "solana-epoch-rewards",
+ "solana-epoch-schedule",
+ "solana-fee-calculator",
+ "solana-genesis-config",
+ "solana-hash",
  "solana-instruction",
+ "solana-keypair",
+ "solana-loader-v3-interface",
  "solana-log-collector",
  "solana-logger",
+ "solana-message",
+ "solana-msg",
+ "solana-native-token",
+ "solana-poh-config",
+ "solana-program-entrypoint",
+ "solana-program-error",
  "solana-program-runtime",
+ "solana-pubkey",
+ "solana-rent",
  "solana-runtime",
  "solana-sbpf",
  "solana-sdk",
  "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-signer",
+ "solana-stable-layout",
+ "solana-stake-interface",
  "solana-svm",
+ "solana-system-interface",
+ "solana-sysvar",
+ "solana-sysvar-id",
  "solana-timings",
+ "solana-transaction",
  "solana-transaction-context 2.3.0",
+ "solana-transaction-error",
  "solana-vote-program",
  "spl-generic-token",
  "thiserror 2.0.12",
@@ -7526,17 +7569,29 @@ dependencies = [
  "serde_derive",
  "serde_json",
  "soketto",
+ "solana-account",
  "solana-account-decoder",
  "solana-accounts-db",
  "solana-client",
+ "solana-clock",
+ "solana-commitment-config",
  "solana-entry",
+ "solana-epoch-info",
+ "solana-epoch-rewards-hasher",
+ "solana-epoch-schedule",
  "solana-faucet",
+ "solana-genesis-config",
  "solana-gossip",
+ "solana-hash",
+ "solana-keypair",
  "solana-ledger",
  "solana-measure",
+ "solana-message",
  "solana-metrics",
+ "solana-native-token",
  "solana-perf",
  "solana-poh",
+ "solana-poh-config",
  "solana-program-pack",
  "solana-pubkey",
  "solana-quic-definitions",
@@ -7546,13 +7601,23 @@ dependencies = [
  "solana-runtime-transaction",
  "solana-sdk",
  "solana-send-transaction-service",
+ "solana-signature",
+ "solana-signer",
+ "solana-slot-history",
  "solana-stake-program",
  "solana-storage-bigtable",
  "solana-streamer",
  "solana-svm",
+ "solana-system-interface",
+ "solana-system-transaction",
+ "solana-sysvar",
+ "solana-time-utils",
  "solana-tpu-client",
+ "solana-transaction",
  "solana-transaction-context 2.3.0",
+ "solana-transaction-error",
  "solana-transaction-status",
+ "solana-validator-exit",
  "solana-version",
  "solana-vote",
  "solana-vote-program",
@@ -7841,32 +7906,55 @@ dependencies = [
  "log",
  "miow",
  "net2",
+ "solana-account",
  "solana-account-decoder",
+ "solana-account-info",
  "solana-accounts-db",
  "solana-bpf-loader-program",
  "solana-cli-output",
+ "solana-client-traits",
+ "solana-clock",
  "solana-compute-budget",
  "solana-compute-budget-instruction",
+ "solana-compute-budget-interface",
  "solana-fee",
+ "solana-fee-calculator",
+ "solana-fee-structure",
+ "solana-genesis-config",
+ "solana-hash",
+ "solana-instruction",
+ "solana-keypair",
  "solana-ledger",
+ "solana-loader-v3-interface",
+ "solana-loader-v4-interface",
  "solana-log-collector",
  "solana-logger",
  "solana-measure",
+ "solana-message",
  "solana-program",
+ "solana-program-entrypoint",
  "solana-program-runtime",
+ "solana-pubkey",
+ "solana-rent",
  "solana-runtime",
  "solana-runtime-transaction",
  "solana-sbf-rust-invoke-dep",
  "solana-sbf-rust-realloc-dep",
  "solana-sbf-rust-realloc-invoke-dep",
  "solana-sbpf",
- "solana-sdk",
+ "solana-sdk-ids",
+ "solana-signer",
+ "solana-stake-interface",
  "solana-svm",
  "solana-svm-callback",
  "solana-svm-feature-set",
  "solana-svm-transaction",
+ "solana-system-interface",
+ "solana-sysvar",
  "solana-timings",
+ "solana-transaction",
  "solana-transaction-context 2.3.0",
+ "solana-transaction-error",
  "solana-transaction-status",
  "solana-type-overrides",
  "solana-vote",
@@ -8517,12 +8605,19 @@ dependencies = [
  "itertools 0.12.1",
  "log",
  "solana-client",
+ "solana-clock",
  "solana-connection-cache",
+ "solana-hash",
  "solana-keypair",
  "solana-measure",
  "solana-metrics",
+ "solana-nonce-account",
+ "solana-pubkey",
+ "solana-quic-definitions",
  "solana-runtime",
  "solana-sdk",
+ "solana-signature",
+ "solana-time-utils",
  "solana-tpu-client-next",
  "tokio",
  "tokio-util 0.7.15",
@@ -8831,16 +8926,21 @@ dependencies = [
  "solana-message",
  "solana-nonce",
  "solana-nonce-account",
+ "solana-program-entrypoint",
+ "solana-program-pack",
  "solana-program-runtime",
  "solana-pubkey",
  "solana-rent",
  "solana-rent-collector",
  "solana-rent-debits",
  "solana-sdk-ids",
+ "solana-slot-hashes",
  "solana-svm-callback",
  "solana-svm-feature-set",
  "solana-svm-rent-collector",
  "solana-svm-transaction",
+ "solana-system-interface",
+ "solana-sysvar-id",
  "solana-timings",
  "solana-transaction-context 2.3.0",
  "solana-transaction-error",
@@ -8914,6 +9014,7 @@ dependencies = [
  "serde_derive",
  "solana-account",
  "solana-bincode",
+ "solana-fee-calculator",
  "solana-instruction",
  "solana-log-collector",
  "solana-nonce",
@@ -9001,23 +9102,39 @@ dependencies = [
  "log",
  "serde_derive",
  "serde_json",
+ "solana-account",
  "solana-accounts-db",
  "solana-cli-output",
+ "solana-clock",
+ "solana-cluster-type",
+ "solana-commitment-config",
  "solana-compute-budget",
  "solana-core",
+ "solana-epoch-schedule",
+ "solana-feature-gate-interface",
+ "solana-fee-calculator",
  "solana-geyser-plugin-manager",
  "solana-gossip",
+ "solana-instruction",
+ "solana-keypair",
  "solana-ledger",
+ "solana-loader-v3-interface",
  "solana-logger",
+ "solana-message",
+ "solana-native-token",
  "solana-net-utils",
  "solana-program-test",
+ "solana-pubkey",
+ "solana-rent",
  "solana-rpc",
  "solana-rpc-client",
  "solana-rpc-client-api",
  "solana-runtime",
- "solana-sdk",
+ "solana-sdk-ids",
+ "solana-signer",
  "solana-streamer",
  "solana-tpu-client",
+ "solana-validator-exit",
  "tokio",
 ]
 
@@ -9300,22 +9417,32 @@ dependencies = [
  "rand_chacha 0.3.1",
  "rayon",
  "rustls 0.23.27",
+ "solana-clock",
+ "solana-cluster-type",
  "solana-entry",
  "solana-gossip",
+ "solana-hash",
+ "solana-keypair",
  "solana-ledger",
  "solana-measure",
  "solana-metrics",
+ "solana-native-token",
  "solana-net-utils",
  "solana-perf",
  "solana-poh",
+ "solana-pubkey",
  "solana-quic-client",
  "solana-rayon-threadlimit",
  "solana-rpc",
  "solana-rpc-client-api",
  "solana-runtime",
- "solana-sdk",
+ "solana-signature",
+ "solana-signer",
  "solana-streamer",
+ "solana-system-transaction",
+ "solana-time-utils",
  "solana-tls-utils",
+ "solana-transaction-error",
  "static_assertions",
  "thiserror 2.0.12",
  "tokio",

+ 24 - 2
programs/sbf/Cargo.toml

@@ -62,7 +62,6 @@ solana-sbf-rust-mem-dep = { path = "rust/mem_dep", version = "=2.3.0" }
 solana-sbf-rust-param-passing-dep = { path = "rust/param_passing_dep", version = "=2.3.0" }
 solana-sbf-rust-realloc-dep = { path = "rust/realloc_dep", version = "=2.3.0" }
 solana-sbf-rust-realloc-invoke-dep = { path = "rust/realloc_invoke_dep", version = "=2.3.0" }
-solana-sdk = "=2.2.2"
 solana-sbpf = "=0.11.0"
 solana-secp256k1-recover = "=2.2.1"
 solana-svm = { path = "../../svm", version = "=2.3.0" }
@@ -117,21 +116,38 @@ itertools = { workspace = true }
 log = { workspace = true }
 miow = { workspace = true }
 net2 = { workspace = true }
+solana-account = "2.2.1"
 solana-account-decoder = { workspace = true }
+solana-account-info = "2.2.1"
 solana-accounts-db = { workspace = true }
 solana-bpf-loader-program = { workspace = true }
 solana-cli-output = { workspace = true }
+solana-client-traits = "2.2.1"
+solana-clock = "2.2.1"
 solana-compute-budget = { workspace = true }
 solana-compute-budget-instruction = { workspace = true, features = [
     "dev-context-only-utils",
 ] }
+solana-compute-budget-interface = "2.2.2"
 solana-fee = { workspace = true }
+solana-fee-calculator = "2.2.1"
+solana-fee-structure = "2.2.1"
+solana-genesis-config = "2.2.1"
+solana-hash = "2.2.1"
+solana-instruction = "2.2.1"
+solana-keypair = "2.2.1"
 solana-ledger = { workspace = true }
+solana-loader-v3-interface = "3.0.0"
+solana-loader-v4-interface = "2.2.1"
 solana-log-collector = { workspace = true }
 solana-logger = { workspace = true }
 solana-measure = { workspace = true }
+solana-message = "2.3.0"
 solana-program = { workspace = true }
+solana-program-entrypoint = "2.2.1"
 solana-program-runtime = { workspace = true }
+solana-pubkey = "2.3.0"
+solana-rent = "2.2.1"
 solana-runtime = { workspace = true, features = ["dev-context-only-utils"] }
 solana-runtime-transaction = { workspace = true, features = [
     "dev-context-only-utils",
@@ -140,13 +156,19 @@ solana-sbf-rust-invoke-dep = { workspace = true }
 solana-sbf-rust-realloc-dep = { workspace = true }
 solana-sbf-rust-realloc-invoke-dep = { workspace = true }
 solana-sbpf = { workspace = true }
-solana-sdk = { workspace = true, features = ["dev-context-only-utils"] }
+solana-sdk-ids = "2.2.1"
+solana-signer = "2.2.1"
+solana-stake-interface = "1.2.1"
 solana-svm = { workspace = true }
 solana-svm-callback = { workspace = true }
 solana-svm-feature-set = { workspace = true }
 solana-svm-transaction = { workspace = true }
+solana-system-interface = "1.0"
+solana-sysvar = "2.2.1"
 solana-timings = { workspace = true }
+solana-transaction = "2.2.2"
 solana-transaction-context = { workspace = true, features = ["dev-context-only-utils"] }
+solana-transaction-error = "2.2.1"
 solana-transaction-status = { workspace = true }
 solana-type-overrides = { workspace = true }
 solana-vote = { workspace = true }

+ 9 - 12
programs/sbf/benches/bpf_loader.rs

@@ -7,18 +7,24 @@
     allow(dead_code, unused_imports)
 )]
 
-use {solana_sdk::signer::keypair::Keypair, std::slice};
+use {solana_keypair::Keypair, std::slice};
 
 extern crate test;
 
 use {
     byteorder::{ByteOrder, LittleEndian, WriteBytesExt},
+    solana_account::AccountSharedData,
     solana_bpf_loader_program::{create_vm, syscalls::create_program_runtime_environment_v1},
+    solana_client_traits::SyncClient,
+    solana_instruction::{AccountMeta, Instruction},
     solana_measure::measure::Measure,
+    solana_message::Message,
+    solana_program_entrypoint::SUCCESS,
     solana_program_runtime::{
         execution_budget::SVMTransactionExecutionBudget, invoke_context::InvokeContext,
         serialization::serialize_parameters,
     },
+    solana_pubkey::Pubkey,
     solana_runtime::{
         bank::Bank,
         bank_client::BankClient,
@@ -29,17 +35,8 @@ use {
         ebpf::MM_INPUT_START, elf::Executable, memory_region::MemoryRegion,
         verifier::RequisiteVerifier, vm::ContextObject,
     },
-    solana_sdk::{
-        account::AccountSharedData,
-        bpf_loader,
-        client::SyncClient,
-        entrypoint::SUCCESS,
-        instruction::{AccountMeta, Instruction},
-        message::Message,
-        native_loader,
-        pubkey::Pubkey,
-        signature::Signer,
-    },
+    solana_sdk_ids::{bpf_loader, native_loader},
+    solana_signer::Signer,
     solana_svm_feature_set::SVMFeatureSet,
     solana_transaction_context::InstructionAccount,
     std::{mem, sync::Arc},

+ 49 - 40
programs/sbf/tests/programs.rs

@@ -12,9 +12,25 @@ use {
     agave_feature_set::{self as feature_set, FeatureSet},
     agave_reserved_account_keys::ReservedAccountKeys,
     borsh::{from_slice, to_vec, BorshDeserialize, BorshSerialize},
+    solana_account::{AccountSharedData, ReadableAccount, WritableAccount},
+    solana_account_info::MAX_PERMITTED_DATA_INCREASE,
+    solana_client_traits::SyncClient,
+    solana_clock::{UnixTimestamp, MAX_PROCESSING_AGE},
     solana_compute_budget::compute_budget::ComputeBudget,
     solana_compute_budget_instruction::instructions_processor::process_compute_budget_instructions,
+    solana_compute_budget_interface::ComputeBudgetInstruction,
+    solana_fee_calculator::FeeRateGovernor,
+    solana_fee_structure::{FeeBudgetLimits, FeeStructure},
+    solana_genesis_config::ClusterType,
+    solana_hash::Hash,
+    solana_instruction::{error::InstructionError, AccountMeta, Instruction},
+    solana_keypair::Keypair,
+    solana_loader_v3_interface::instruction as loader_v3_instruction,
+    solana_loader_v4_interface::instruction as loader_v4_instruction,
+    solana_message::{Message, SanitizedMessage},
     solana_program_runtime::invoke_context::mock_process_instruction,
+    solana_pubkey::Pubkey,
+    solana_rent::Rent,
     solana_runtime::{
         bank::Bank,
         bank_client::BankClient,
@@ -32,36 +48,20 @@ use {
     solana_sbf_rust_realloc_dep::*,
     solana_sbf_rust_realloc_invoke_dep::*,
     solana_sbpf::vm::ContextObject,
-    solana_sdk::{
-        account::{AccountSharedData, ReadableAccount, WritableAccount},
-        bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable,
-        client::SyncClient,
-        clock::{UnixTimestamp, MAX_PROCESSING_AGE},
-        compute_budget::ComputeBudgetInstruction,
-        entrypoint::MAX_PERMITTED_DATA_INCREASE,
-        fee::{FeeBudgetLimits, FeeStructure},
-        fee_calculator::FeeRateGovernor,
-        genesis_config::ClusterType,
-        hash::Hash,
-        instruction::{AccountMeta, Instruction, InstructionError},
-        loader_v4,
-        message::{Message, SanitizedMessage},
-        pubkey::Pubkey,
-        rent::Rent,
-        signature::{Keypair, Signer},
-        stake,
-        system_instruction::MAX_PERMITTED_DATA_LENGTH,
-        system_program,
-        sysvar::{self, clock},
-        transaction::{Transaction, TransactionError},
-    },
+    solana_sdk_ids::sysvar::{self as sysvar, clock},
+    solana_sdk_ids::{bpf_loader, bpf_loader_deprecated, bpf_loader_upgradeable, loader_v4},
+    solana_signer::Signer,
+    solana_stake_interface as stake,
     solana_svm::{
         transaction_commit_result::{CommittedTransaction, TransactionCommitResult},
         transaction_execution_result::InnerInstruction,
         transaction_processor::ExecutionRecordingConfig,
     },
     solana_svm_transaction::svm_message::SVMMessage,
+    solana_system_interface::{program as system_program, MAX_PERMITTED_DATA_LENGTH},
     solana_timings::ExecuteTimings,
+    solana_transaction::Transaction,
+    solana_transaction_error::TransactionError,
     solana_type_overrides::rand,
     std::{assert_eq, cell::RefCell, str::FromStr, sync::Arc, time::Duration},
 };
@@ -674,7 +674,7 @@ fn test_program_sbf_invoke_sanity() {
             AccountMeta::new_readonly(derived_key3, false),
             AccountMeta::new_readonly(system_program::id(), false),
             AccountMeta::new(from_keypair.pubkey(), true),
-            AccountMeta::new_readonly(solana_sdk::ed25519_program::id(), false),
+            AccountMeta::new_readonly(solana_sdk_ids::ed25519_program::id(), false),
             AccountMeta::new_readonly(invoke_program_id, false),
             AccountMeta::new_readonly(unexecutable_program_keypair.pubkey(), false),
         ];
@@ -1549,7 +1549,7 @@ fn test_program_sbf_invoke_stable_genesis_and_bank() {
         &authority_keypair,
         "solana_sbf_rust_panic",
     );
-    let redeployment_instruction = bpf_loader_upgradeable::upgrade(
+    let redeployment_instruction = loader_v3_instruction::upgrade(
         &program_id,
         &buffer_keypair.pubkey(),
         &authority_keypair.pubkey(),
@@ -1585,7 +1585,7 @@ fn test_program_sbf_invoke_stable_genesis_and_bank() {
         &[program_keypair.pubkey().as_ref()],
         &bpf_loader_upgradeable::id(),
     );
-    let undeployment_instruction = bpf_loader_upgradeable::close_any(
+    let undeployment_instruction = loader_v3_instruction::close_any(
         &programdata_address,
         &mint_keypair.pubkey(),
         Some(&authority_keypair.pubkey()),
@@ -1753,7 +1753,8 @@ fn test_program_sbf_invoke_in_same_tx_as_redeployment() {
             None,
             Some(&program_id),
         );
-    let undeployment_instruction = loader_v4::retract(&program_id, &authority_keypair.pubkey());
+    let undeployment_instruction =
+        loader_v4_instruction::retract(&program_id, &authority_keypair.pubkey());
     let redeployment_instructions =
         deployment_instructions.split_off(deployment_instructions.len() - 3);
     let signers: &[&[&Keypair]] = &[
@@ -1872,7 +1873,8 @@ fn test_program_sbf_invoke_in_same_tx_as_undeployment() {
     );
 
     // Prepare undeployment
-    let undeployment_instruction = loader_v4::retract(&program_id, &authority_keypair.pubkey());
+    let undeployment_instruction =
+        loader_v4_instruction::retract(&program_id, &authority_keypair.pubkey());
 
     // Undeployment fails when top-level-instructions invoke the program because of write lock demotion
     // and the program becomes unavailable to CPI instructions
@@ -1954,6 +1956,7 @@ fn test_program_sbf_disguised_as_sbf_loader() {
 #[test]
 #[cfg(feature = "sbf_c")]
 fn test_program_reads_from_program_account() {
+    use solana_loader_v4_interface::state as loader_v4_state;
     solana_logger::setup();
 
     let GenesisConfigInfo {
@@ -1977,7 +1980,7 @@ fn test_program_reads_from_program_account() {
     let account_metas = vec![AccountMeta::new_readonly(program_id, false)];
     let instruction = Instruction::new_with_bytes(
         program_id,
-        &data[0..loader_v4::LoaderV4State::program_data_offset()],
+        &data[0..loader_v4_state::LoaderV4State::program_data_offset()],
         account_metas,
     );
     bank_client
@@ -2055,7 +2058,7 @@ fn test_program_sbf_upgrade() {
 
     // Set authority
     let new_authority_keypair = Keypair::new();
-    let authority_instruction = loader_v4::transfer_authority(
+    let authority_instruction = loader_v4_instruction::transfer_authority(
         &program_id,
         &authority_keypair.pubkey(),
         &new_authority_keypair.pubkey(),
@@ -2080,7 +2083,7 @@ fn test_program_sbf_upgrade() {
         );
     deployment_instructions.insert(
         deployment_instructions.len() - 3,
-        loader_v4::retract(&program_id, &new_authority_keypair.pubkey()),
+        loader_v4_instruction::retract(&program_id, &new_authority_keypair.pubkey()),
     );
     let signers: &[&[&Keypair]] = &[
         &[&mint_keypair, &source_program_keypair],
@@ -2157,7 +2160,7 @@ fn test_program_sbf_upgrade_via_cpi() {
 
     // Set authority via CPI
     let new_authority_keypair = Keypair::new();
-    let mut authority_instruction = loader_v4::transfer_authority(
+    let mut authority_instruction = loader_v4_instruction::transfer_authority(
         &program_id,
         &authority_keypair.pubkey(),
         &new_authority_keypair.pubkey(),
@@ -2186,7 +2189,7 @@ fn test_program_sbf_upgrade_via_cpi() {
         );
     deployment_instructions.insert(
         deployment_instructions.len() - 3,
-        loader_v4::retract(&program_id, &new_authority_keypair.pubkey()),
+        loader_v4_instruction::retract(&program_id, &new_authority_keypair.pubkey()),
     );
     let mut upgrade_instruction = deployment_instructions.pop().unwrap();
     let signers: &[&[&Keypair]] = &[
@@ -2588,7 +2591,7 @@ fn test_program_sbf_realloc() {
             )
             .unwrap();
         let account = bank.get_account(&pubkey).unwrap();
-        assert_eq!(&solana_sdk::system_program::id(), account.owner());
+        assert_eq!(&solana_system_interface::program::id(), account.owner());
         let data = bank_client.get_account_data(&pubkey).unwrap().unwrap();
         assert_eq!(MAX_PERMITTED_DATA_INCREASE, data.len());
 
@@ -2624,7 +2627,7 @@ fn test_program_sbf_realloc() {
                                 &[REALLOC_AND_ASSIGN_TO_SELF_VIA_SYSTEM_PROGRAM],
                                 vec![
                                     AccountMeta::new(pubkey, true),
-                                    AccountMeta::new(solana_sdk::system_program::id(), false),
+                                    AccountMeta::new(solana_system_interface::program::id(), false),
                                 ],
                             ),
                             ComputeBudgetInstruction::set_loaded_accounts_data_size_limit(
@@ -2650,7 +2653,7 @@ fn test_program_sbf_realloc() {
                             &[ASSIGN_TO_SELF_VIA_SYSTEM_PROGRAM_AND_REALLOC],
                             vec![
                                 AccountMeta::new(pubkey, true),
-                                AccountMeta::new(solana_sdk::system_program::id(), false),
+                                AccountMeta::new(solana_system_interface::program::id(), false),
                             ],
                         ),
                         ComputeBudgetInstruction::set_loaded_accounts_data_size_limit(
@@ -2896,7 +2899,7 @@ fn test_program_sbf_realloc_invoke() {
         )
         .unwrap();
     let account = bank.get_account(&pubkey).unwrap();
-    assert_eq!(&solana_sdk::system_program::id(), account.owner());
+    assert_eq!(&solana_system_interface::program::id(), account.owner());
     let data = bank_client.get_account_data(&pubkey).unwrap().unwrap();
     assert_eq!(MAX_PERMITTED_DATA_INCREASE, data.len());
 
@@ -2933,7 +2936,10 @@ fn test_program_sbf_realloc_invoke() {
                             vec![
                                 AccountMeta::new(pubkey, true),
                                 AccountMeta::new_readonly(realloc_program_id, false),
-                                AccountMeta::new_readonly(solana_sdk::system_program::id(), false),
+                                AccountMeta::new_readonly(
+                                    solana_system_interface::program::id(),
+                                    false
+                                ),
                             ],
                         ),
                         ComputeBudgetInstruction::set_loaded_accounts_data_size_limit(
@@ -2960,7 +2966,10 @@ fn test_program_sbf_realloc_invoke() {
                         vec![
                             AccountMeta::new(pubkey, true),
                             AccountMeta::new_readonly(realloc_program_id, false),
-                            AccountMeta::new_readonly(solana_sdk::system_program::id(), false),
+                            AccountMeta::new_readonly(
+                                solana_system_interface::program::id(),
+                                false,
+                            ),
                         ],
                     ),
                     ComputeBudgetInstruction::set_loaded_accounts_data_size_limit(
@@ -3047,7 +3056,7 @@ fn test_program_sbf_realloc_invoke() {
                         vec![
                             AccountMeta::new(mint_pubkey, true),
                             AccountMeta::new(new_pubkey, true),
-                            AccountMeta::new(solana_sdk::system_program::id(), false),
+                            AccountMeta::new(solana_system_interface::program::id(), false),
                             AccountMeta::new_readonly(realloc_invoke_program_id, false),
                         ],
                     ),

+ 7 - 8
programs/sbf/tests/simulation.rs

@@ -2,6 +2,10 @@
 
 use {
     agave_validator::test_validator::*,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_keypair::Keypair,
+    solana_message::Message,
+    solana_pubkey::Pubkey,
     solana_runtime::{
         bank::Bank,
         bank_client::BankClient,
@@ -9,14 +13,9 @@ use {
         loader_utils::load_program_of_loader_v4,
     },
     solana_runtime_transaction::runtime_transaction::RuntimeTransaction,
-    solana_sdk::{
-        instruction::{AccountMeta, Instruction},
-        message::Message,
-        pubkey::Pubkey,
-        signature::{Keypair, Signer},
-        sysvar::{clock, slot_history},
-        transaction::Transaction,
-    },
+    solana_signer::Signer,
+    solana_sysvar::{clock, slot_history},
+    solana_transaction::Transaction,
     std::{thread::sleep, time::Duration},
 };
 

+ 5 - 6
programs/sbf/tests/syscall_get_epoch_stake.rs

@@ -1,6 +1,9 @@
 #![cfg(feature = "sbf_rust")]
 
 use {
+    solana_instruction::{AccountMeta, Instruction},
+    solana_keypair::Keypair,
+    solana_message::Message,
     solana_runtime::{
         bank::Bank,
         bank_client::BankClient,
@@ -11,12 +14,8 @@ use {
         loader_utils::load_program_of_loader_v4,
     },
     solana_runtime_transaction::runtime_transaction::RuntimeTransaction,
-    solana_sdk::{
-        instruction::{AccountMeta, Instruction},
-        message::Message,
-        signature::{Keypair, Signer},
-        transaction::Transaction,
-    },
+    solana_signer::Signer,
+    solana_transaction::Transaction,
     solana_vote::vote_account::VoteAccount,
     solana_vote_program::vote_state::create_account_with_authorized,
     std::collections::HashMap,

+ 12 - 10
programs/sbf/tests/sysvar.rs

@@ -2,6 +2,10 @@
 
 use {
     agave_feature_set::disable_fees_sysvar,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_keypair::Keypair,
+    solana_message::Message,
+    solana_pubkey::Pubkey,
     solana_runtime::{
         bank::Bank,
         bank_client::BankClient,
@@ -9,18 +13,16 @@ use {
         loader_utils::load_program_of_loader_v4,
     },
     solana_runtime_transaction::runtime_transaction::RuntimeTransaction,
-    solana_sdk::{
-        instruction::{AccountMeta, Instruction},
-        message::Message,
-        pubkey::Pubkey,
-        signature::{Keypair, Signer},
+    solana_sdk_ids::sysvar::{
+        clock, epoch_schedule, instructions, recent_blockhashes, rent, slot_hashes, slot_history,
+        stake_history,
+    },
+    solana_signer::Signer,
+    solana_sysvar::{
+        epoch_rewards,
         stake_history::{StakeHistory, StakeHistoryEntry},
-        sysvar::{
-            clock, epoch_rewards, epoch_schedule, instructions, recent_blockhashes, rent,
-            slot_hashes, slot_history, stake_history,
-        },
-        transaction::Transaction,
     },
+    solana_transaction::Transaction,
 };
 
 #[test]

+ 11 - 1
programs/stake-tests/Cargo.toml

@@ -15,8 +15,18 @@ edition = { workspace = true }
 agave-feature-set = { workspace = true }
 assert_matches = { workspace = true }
 bincode = { workspace = true }
+solana-account = { workspace = true }
+solana-instruction = { workspace = true }
+solana-keypair = { workspace = true }
+solana-program-error = { workspace = true }
 solana-program-test = { workspace = true }
-solana-sdk = { workspace = true }
+solana-pubkey = { workspace = true }
+solana-signer = { workspace = true }
+solana-stake-interface = { workspace = true }
+solana-system-interface = { workspace = true }
+solana-sysvar = { workspace = true }
+solana-transaction = { workspace = true }
+solana-transaction-error = { workspace = true }
 solana-vote-program = { workspace = true }
 test-case = { workspace = true }
 

+ 15 - 17
programs/stake-tests/tests/test_move_stake_and_lamports.rs

@@ -7,25 +7,23 @@
 
 use {
     agave_feature_set::stake_raise_minimum_delegation_to_1_sol,
+    solana_account::Account as SolanaAccount,
+    solana_instruction::Instruction,
+    solana_keypair::Keypair,
+    solana_program_error::{ProgramError, ProgramResult},
     solana_program_test::*,
-    solana_sdk::{
-        account::Account as SolanaAccount,
-        entrypoint::ProgramResult,
-        instruction::Instruction,
-        program_error::ProgramError,
-        pubkey::Pubkey,
-        signature::{Keypair, Signer},
-        signers::Signers,
-        stake::{
-            self,
-            instruction::{self as ixn, StakeError},
-            program as stake_program,
-            state::{Authorized, Lockup, Meta, Stake, StakeStateV2},
-        },
-        system_instruction, system_program,
-        sysvar::{clock::Clock, stake_history::StakeHistory},
-        transaction::{Transaction, TransactionError},
+    solana_pubkey::Pubkey,
+    solana_signer::{signers::Signers, Signer},
+    solana_stake_interface::{
+        self as stake,
+        error::StakeError,
+        instruction as ixn, program as stake_program,
+        state::{Authorized, Lockup, Meta, Stake, StakeStateV2},
     },
+    solana_system_interface::{instruction as system_instruction, program as system_program},
+    solana_sysvar::{clock::Clock, stake_history::StakeHistory},
+    solana_transaction::Transaction,
+    solana_transaction_error::TransactionError,
     solana_vote_program::{
         self, vote_instruction,
         vote_state::{VoteInit, VoteState, VoteStateVersions},

+ 1 - 1
programs/stake/src/stake_state.rs

@@ -5,7 +5,7 @@
 
 #[deprecated(
     since = "1.8.0",
-    note = "Please use `solana_sdk::stake::state` or `solana_stake_interface::state` instead"
+    note = "Please use `solana_stake_interface::state` instead"
 )]
 pub use solana_stake_interface::state::*;
 use {

+ 1 - 1
programs/system/Cargo.toml

@@ -16,6 +16,7 @@ serde = { workspace = true }
 serde_derive = { workspace = true }
 solana-account = { workspace = true }
 solana-bincode = { workspace = true }
+solana-fee-calculator = { workspace = true }
 solana-instruction = { workspace = true }
 solana-log-collector = { workspace = true }
 solana-nonce = { workspace = true, features = ["serde"] }
@@ -37,7 +38,6 @@ solana-compute-budget = { workspace = true }
 solana-hash = { workspace = true }
 solana-nonce-account = { workspace = true }
 solana-rent = { workspace = true }
-solana-sdk = { workspace = true }
 solana-sha256-hasher = { workspace = true }
 solana-svm-callback = { workspace = true }
 solana-svm-feature-set = { workspace = true }

+ 1 - 1
programs/system/src/system_instruction.rs

@@ -253,8 +253,8 @@ mod test {
         assert_matches::assert_matches,
         solana_account::AccountSharedData,
         solana_nonce::{self as nonce, state::State},
+        solana_nonce_account::{create_account, verify_nonce_account},
         solana_program_runtime::with_mock_invoke_context,
-        solana_sdk::nonce_account::{create_account, verify_nonce_account},
         solana_sdk_ids::system_program,
         solana_sha256_hasher::hash,
         solana_transaction_context::InstructionAccount,

+ 32 - 29
programs/system/src/system_processor.rs

@@ -542,28 +542,6 @@ declare_process_instruction!(Entrypoint, DEFAULT_COMPUTE_UNITS, |invoke_context|
 
 #[cfg(test)]
 mod tests {
-    #[allow(deprecated)]
-    use solana_sdk::{
-        account::{
-            self, create_account_shared_data_with_fields, to_account, Account, AccountSharedData,
-            ReadableAccount, DUMMY_INHERITABLE_ACCOUNT_FIELDS,
-        },
-        fee_calculator::FeeCalculator,
-        hash::{hash, Hash},
-        instruction::{AccountMeta, Instruction, InstructionError},
-        nonce::{
-            self,
-            state::{
-                Data as NonceData, DurableNonce, State as NonceState, Versions as NonceVersions,
-            },
-        },
-        nonce_account, system_instruction, system_program,
-        sysvar::{
-            self,
-            recent_blockhashes::{IntoIterSorted, IterItem, RecentBlockhashes, MAX_ENTRIES},
-            rent::Rent,
-        },
-    };
     use {
         super::*,
         bincode::serialize,
@@ -573,6 +551,29 @@ mod tests {
         },
         std::collections::BinaryHeap,
     };
+    #[allow(deprecated)]
+    use {
+        solana_account::{
+            self as account, create_account_shared_data_with_fields, to_account, Account,
+            AccountSharedData, ReadableAccount, DUMMY_INHERITABLE_ACCOUNT_FIELDS,
+        },
+        solana_fee_calculator::FeeCalculator,
+        solana_hash::Hash,
+        solana_instruction::{error::InstructionError, AccountMeta, Instruction},
+        solana_nonce::{
+            self as nonce,
+            state::{Data as NonceData, DurableNonce, State as NonceState},
+            versions::Versions as NonceVersions,
+        },
+        solana_nonce_account as nonce_account,
+        solana_sha256_hasher::hash,
+        solana_system_interface::{instruction as system_instruction, program as system_program},
+        solana_sysvar::{
+            self as sysvar,
+            recent_blockhashes::{IntoIterSorted, IterItem, RecentBlockhashes, MAX_ENTRIES},
+            rent::Rent,
+        },
+    };
 
     impl From<Pubkey> for Address {
         fn from(address: Pubkey) -> Self {
@@ -1114,7 +1115,7 @@ mod tests {
             &bincode::serialize(&SystemInstruction::CreateAccount {
                 lamports: 50,
                 space: 2,
-                owner: sysvar::id(),
+                owner: solana_sdk_ids::sysvar::id(),
             })
             .unwrap(),
             vec![(from, from_account), (to, to_account)],
@@ -1175,7 +1176,9 @@ mod tests {
         let nonce = Pubkey::new_unique();
         let nonce_account = AccountSharedData::new_data(
             42,
-            &nonce::state::Versions::new(nonce::State::Initialized(nonce::state::Data::default())),
+            &nonce::versions::Versions::new(nonce::state::State::Initialized(
+                nonce::state::Data::default(),
+            )),
             &system_program::id(),
         )
         .unwrap();
@@ -1253,7 +1256,7 @@ mod tests {
         // assign to sysvar instead of system_program
         process_instruction(
             &bincode::serialize(&SystemInstruction::Assign {
-                owner: sysvar::id(),
+                owner: solana_sdk_ids::sysvar::id(),
             })
             .unwrap(),
             vec![(pubkey, account)],
@@ -1450,7 +1453,7 @@ mod tests {
         let from = Pubkey::new_unique();
         let from_account = AccountSharedData::new_data(
             100,
-            &nonce::state::Versions::new(nonce::State::Initialized(nonce::state::Data {
+            &nonce::versions::Versions::new(nonce::state::State::Initialized(nonce::state::Data {
                 authority: from,
                 ..nonce::state::Data::default()
             })),
@@ -2049,7 +2052,7 @@ mod tests {
             let account = AccountSharedData::new(100, size, &system_program::id());
             let accounts = process_instruction(
                 &bincode::serialize(&SystemInstruction::Assign {
-                    owner: solana_sdk::native_loader::id(),
+                    owner: solana_sdk_ids::native_loader::id(),
                 })
                 .unwrap(),
                 vec![(pubkey, account.clone())],
@@ -2060,7 +2063,7 @@ mod tests {
                 }],
                 Ok(()),
             );
-            assert_eq!(accounts[0].owner(), &solana_sdk::native_loader::id());
+            assert_eq!(accounts[0].owner(), &solana_sdk_ids::native_loader::id());
             assert_eq!(accounts[0].lamports(), 100);
 
             let pubkey2 = Pubkey::new_unique();
@@ -2087,7 +2090,7 @@ mod tests {
                 ],
                 Ok(()),
             );
-            assert_eq!(accounts[1].owner(), &solana_sdk::native_loader::id());
+            assert_eq!(accounts[1].owner(), &solana_sdk_ids::native_loader::id());
             assert_eq!(accounts[1].lamports(), 150);
         }
     }

+ 1 - 1
programs/vote/Cargo.toml

@@ -48,12 +48,12 @@ assert_matches = { workspace = true }
 criterion = { workspace = true }
 solana-account = { workspace = true }
 solana-clock = { workspace = true }
+solana-fee-calculator = { workspace = true }
 solana-instruction = { workspace = true }
 solana-logger = { workspace = true }
 solana-program-runtime = { workspace = true, features = ["dev-context-only-utils"] }
 solana-pubkey = { workspace = true, features = ["rand"] }
 solana-rent = { workspace = true }
-solana-sdk = { workspace = true }
 solana-sdk-ids = { workspace = true }
 solana-sha256-hasher = { workspace = true }
 test-case = { workspace = true }

+ 1 - 2
programs/vote/benches/vote_instructions.rs

@@ -12,8 +12,7 @@ use {
     },
     solana_pubkey::Pubkey,
     solana_rent::Rent,
-    solana_sdk::sysvar,
-    solana_sdk_ids::vote::id,
+    solana_sdk_ids::{sysvar, vote::id},
     solana_slot_hashes::{SlotHashes, MAX_ENTRIES},
     solana_transaction_context::TransactionAccount,
     solana_vote_program::{

+ 35 - 1
rpc/Cargo.toml

@@ -30,17 +30,29 @@ serde = { workspace = true }
 serde_derive = { workspace = true }
 serde_json = { workspace = true }
 soketto = { workspace = true }
+solana-account = { workspace = true }
 solana-account-decoder = { workspace = true }
 solana-accounts-db = { workspace = true }
 solana-client = { workspace = true }
+solana-clock = { workspace = true }
+solana-commitment-config = { workspace = true }
 solana-entry = { workspace = true }
+solana-epoch-info = { workspace = true }
+solana-epoch-rewards-hasher = { workspace = true }
+solana-epoch-schedule = { workspace = true }
 solana-faucet = { workspace = true }
+solana-genesis-config = { workspace = true }
 solana-gossip = { workspace = true }
+solana-hash = { workspace = true }
+solana-keypair = { workspace = true }
 solana-ledger = { workspace = true }
 solana-measure = { workspace = true }
+solana-message = { workspace = true }
 solana-metrics = { workspace = true }
+solana-native-token = { workspace = true }
 solana-perf = { workspace = true }
 solana-poh = { workspace = true }
+solana-poh-config = { workspace = true }
 solana-program-pack = { workspace = true }
 solana-pubkey = { workspace = true }
 solana-quic-definitions = { workspace = true }
@@ -48,15 +60,25 @@ solana-rayon-threadlimit = { workspace = true }
 solana-rpc-client-api = { workspace = true }
 solana-runtime = { workspace = true }
 solana-runtime-transaction = { workspace = true }
-solana-sdk = { workspace = true }
+solana-sdk = { workspace = true, default-features = false }
 solana-send-transaction-service = { workspace = true }
+solana-signature = { workspace = true }
+solana-signer = { workspace = true }
+solana-slot-history = { workspace = true }
 solana-stake-program = { workspace = true }
 solana-storage-bigtable = { workspace = true }
 solana-streamer = { workspace = true }
 solana-svm = { workspace = true }
+solana-system-interface = { workspace = true }
+solana-system-transaction = { workspace = true }
+solana-sysvar = { workspace = true }
+solana-time-utils = { workspace = true }
 solana-tpu-client = { workspace = true }
+solana-transaction = { workspace = true }
 solana-transaction-context = { workspace = true }
+solana-transaction-error = { workspace = true }
 solana-transaction-status = { workspace = true }
+solana-validator-exit = { workspace = true }
 solana-version = { workspace = true }
 solana-vote = { workspace = true }
 solana-vote-program = { workspace = true }
@@ -71,17 +93,29 @@ tokio-util = { workspace = true, features = ["codec", "compat"] }
 [dev-dependencies]
 agave-reserved-account-keys = { workspace = true }
 serial_test = { workspace = true }
+solana-address-lookup-table-interface = { workspace = true }
+solana-compute-budget-interface = { workspace = true }
+solana-fee-calculator = { workspace = true }
+solana-fee-structure = { workspace = true }
+solana-instruction = { workspace = true }
 solana-log-collector = { workspace = true }
 solana-net-utils = { workspace = true }
+solana-nonce = { workspace = true }
+solana-nonce-account = { workspace = true }
 solana-program-option = { workspace = true }
 solana-program-runtime = { workspace = true }
+solana-rent = { workspace = true }
+solana-rent-debits = { workspace = true }
 solana-rpc = { path = ".", features = ["dev-context-only-utils"] }
 solana-runtime = { workspace = true, features = ["dev-context-only-utils"] }
 solana-runtime-transaction = { workspace = true, features = [
     "dev-context-only-utils",
 ] }
 solana-send-transaction-service = { workspace = true, features = ["dev-context-only-utils"] }
+solana-sha256-hasher = { workspace = true }
+solana-stake-interface = { workspace = true }
 solana-stake-program = { workspace = true }
+solana-vote-interface = { workspace = true }
 spl-pod = { workspace = true }
 symlink = { workspace = true }
 test-case = { workspace = true }

+ 7 - 10
rpc/src/cluster_tpu_info.rs

@@ -1,10 +1,8 @@
 use {
+    solana_clock::{Slot, NUM_CONSECUTIVE_LEADER_SLOTS},
     solana_gossip::{cluster_info::ClusterInfo, contact_info::Protocol},
     solana_poh::poh_recorder::PohRecorder,
-    solana_sdk::{
-        clock::{Slot, NUM_CONSECUTIVE_LEADER_SLOTS},
-        pubkey::Pubkey,
-    },
+    solana_pubkey::Pubkey,
     solana_send_transaction_service::tpu_info::TpuInfo,
     std::{
         collections::HashMap,
@@ -125,23 +123,22 @@ mod test {
     use {
         super::*,
         solana_gossip::contact_info::ContactInfo,
+        solana_keypair::Keypair,
         solana_ledger::{
             blockstore::Blockstore, get_tmp_ledger_path_auto_delete,
             leader_schedule_cache::LeaderScheduleCache,
         },
+        solana_poh_config::PohConfig,
+        solana_quic_definitions::QUIC_PORT_OFFSET,
         solana_runtime::{
             bank::Bank,
             genesis_utils::{
                 create_genesis_config_with_vote_accounts, GenesisConfigInfo, ValidatorVoteKeypairs,
             },
         },
-        solana_sdk::{
-            poh_config::PohConfig,
-            quic::QUIC_PORT_OFFSET,
-            signature::{Keypair, Signer},
-            timing::timestamp,
-        },
+        solana_signer::Signer,
         solana_streamer::socket::SocketAddrSpace,
+        solana_time_utils::timestamp,
         std::{net::Ipv4Addr, sync::atomic::AtomicBool},
     };
 

+ 1 - 1
rpc/src/filter.rs

@@ -1,6 +1,6 @@
 use {
+    solana_account::{AccountSharedData, ReadableAccount},
     solana_rpc_client_api::filter::RpcFilterType,
-    solana_sdk::account::{AccountSharedData, ReadableAccount},
     spl_generic_token::{token::GenericTokenAccount, token_2022::Account},
 };
 

+ 2 - 1
rpc/src/optimistically_confirmed_bank_tracker.rs

@@ -11,11 +11,12 @@
 use {
     crate::rpc_subscriptions::RpcSubscriptions,
     crossbeam_channel::{Receiver, RecvTimeoutError, Sender},
+    solana_clock::Slot,
     solana_rpc_client_api::response::{SlotTransactionStats, SlotUpdate},
     solana_runtime::{
         bank::Bank, bank_forks::BankForks, prioritization_fee_cache::PrioritizationFeeCache,
     },
-    solana_sdk::{clock::Slot, timing::timestamp},
+    solana_time_utils::timestamp,
     std::{
         collections::HashSet,
         sync::{

+ 2 - 4
rpc/src/parsed_token_accounts.rs

@@ -1,18 +1,16 @@
 use {
     crate::rpc::account_resolver,
     jsonrpc_core::{Error, Result},
+    solana_account::{AccountSharedData, ReadableAccount},
     solana_account_decoder::{
         encode_ui_account,
         parse_account_data::{AccountAdditionalDataV3, SplTokenAdditionalDataV2},
         parse_token::get_token_account_mint,
         UiAccount, UiAccountData, UiAccountEncoding,
     },
+    solana_pubkey::Pubkey,
     solana_rpc_client_api::response::RpcKeyedAccount,
     solana_runtime::bank::Bank,
-    solana_sdk::{
-        account::{AccountSharedData, ReadableAccount},
-        pubkey::Pubkey,
-    },
     spl_token_2022::{
         extension::{
             interest_bearing_mint::InterestBearingConfig, scaled_ui_amount::ScaledUiAmountConfig,

+ 56 - 53
rpc/src/rpc.rs

@@ -16,6 +16,7 @@ use {
         BoxFuture, Error, Metadata, Result,
     },
     jsonrpc_derive::rpc,
+    solana_account::{AccountSharedData, ReadableAccount},
     solana_account_decoder::{
         encode_ui_account,
         parse_account_data::SplTokenAdditionalDataV2,
@@ -29,17 +30,26 @@ use {
         },
     },
     solana_client::connection_cache::Protocol,
+    solana_clock::{Slot, UnixTimestamp, MAX_PROCESSING_AGE},
+    solana_commitment_config::{CommitmentConfig, CommitmentLevel},
     solana_entry::entry::Entry,
+    solana_epoch_info::EpochInfo,
+    solana_epoch_rewards_hasher::EpochRewardsHasher,
+    solana_epoch_schedule::EpochSchedule,
     solana_faucet::faucet::request_airdrop_transaction,
     solana_gossip::cluster_info::ClusterInfo,
+    solana_hash::Hash,
+    solana_keypair::Keypair,
     solana_ledger::{
         blockstore::{Blockstore, BlockstoreError, SignatureInfosForAddress},
         blockstore_meta::{PerfSample, PerfSampleV1, PerfSampleV2},
         leader_schedule_cache::LeaderScheduleCache,
     },
+    solana_message::{AddressLoader, SanitizedMessage},
     solana_metrics::inc_new_counter_info,
     solana_perf::packet::PACKET_DATA_SIZE,
     solana_program_pack::Pack,
+    solana_pubkey::{Pubkey, PUBKEY_BYTES},
     solana_rpc_client_api::{
         config::*,
         custom_error::RpcCustomError,
@@ -63,28 +73,17 @@ use {
         snapshot_utils,
     },
     solana_runtime_transaction::runtime_transaction::RuntimeTransaction,
-    solana_sdk::{
-        account::{AccountSharedData, ReadableAccount},
-        clock::{Slot, UnixTimestamp, MAX_PROCESSING_AGE},
-        commitment_config::{CommitmentConfig, CommitmentLevel},
-        epoch_info::EpochInfo,
-        epoch_rewards_hasher::EpochRewardsHasher,
-        epoch_schedule::EpochSchedule,
-        exit::Exit,
-        hash::Hash,
-        message::SanitizedMessage,
-        pubkey::{Pubkey, PUBKEY_BYTES},
-        signature::{Keypair, Signature, Signer},
-        system_instruction,
-        transaction::{
-            self, AddressLoader, MessageHash, SanitizedTransaction, TransactionError,
-            VersionedTransaction, MAX_TX_ACCOUNT_LOCKS,
-        },
-    },
     solana_send_transaction_service::send_transaction_service::TransactionInfo,
+    solana_signature::Signature,
+    solana_signer::Signer,
     solana_stake_program,
     solana_storage_bigtable::Error as StorageError,
+    solana_transaction::{
+        sanitized::{MessageHash, SanitizedTransaction, MAX_TX_ACCOUNT_LOCKS},
+        versioned::VersionedTransaction,
+    },
     solana_transaction_context::TransactionAccount,
+    solana_transaction_error::TransactionError,
     solana_transaction_status::{
         map_inner_instructions, BlockEncodingOptions, ConfirmedBlock,
         ConfirmedTransactionStatusWithSignature, ConfirmedTransactionWithStatusMeta,
@@ -92,6 +91,7 @@ use {
         TransactionBinaryEncoding, TransactionConfirmationStatus, TransactionStatus,
         UiConfirmedBlock, UiTransactionEncoding,
     },
+    solana_validator_exit::Exit,
     solana_vote_program::vote_state::MAX_LOCKOUT_HISTORY,
     spl_generic_token::{
         token::{SPL_TOKEN_ACCOUNT_MINT_OFFSET, SPL_TOKEN_ACCOUNT_OWNER_OFFSET},
@@ -131,6 +131,10 @@ use {
     solana_streamer::socket::SocketAddrSpace,
 };
 
+mod transaction {
+    pub use solana_transaction_error::TransactionResult as Result;
+}
+
 pub mod account_resolver;
 
 type RpcCustomResult<T> = std::result::Result<T, RpcCustomError>;
@@ -460,7 +464,7 @@ impl JsonRpcRequestProcessor {
             let keypair = Arc::new(Keypair::new());
             let contact_info = ContactInfo::new_localhost(
                 &keypair.pubkey(),
-                solana_sdk::timing::timestamp(), // wallclock
+                solana_time_utils::timestamp(), // wallclock
             );
             ClusterInfo::new(contact_info, keypair, socket_addr_space)
         });
@@ -3009,7 +3013,7 @@ pub mod rpc_bank {
                 "get_minimum_balance_for_rent_exemption rpc request received: {:?}",
                 data_len
             );
-            if data_len as u64 > system_instruction::MAX_PERMITTED_DATA_LENGTH {
+            if data_len as u64 > solana_system_interface::MAX_PERMITTED_DATA_LENGTH {
                 return Err(Error::invalid_request());
             }
             Ok(meta.get_minimum_balance_for_rent_exemption(data_len, commitment))
@@ -3134,7 +3138,7 @@ pub mod rpc_bank {
                 }
 
                 let entry = block_production.entry(identity).or_default();
-                if slot_history.check(slot) == solana_sdk::slot_history::Check::Found {
+                if slot_history.check(slot) == solana_slot_history::Check::Found {
                     entry.1 += 1; // Increment blocks_produced
                 }
                 entry.0 += 1; // Increment leader_slots
@@ -3470,7 +3474,7 @@ pub mod rpc_accounts_scan {
 pub mod rpc_full {
     use {
         super::*,
-        solana_sdk::message::{SanitizedVersionedMessage, VersionedMessage},
+        solana_message::{SanitizedVersionedMessage, VersionedMessage},
         solana_transaction_status::parse_ui_inner_instructions,
     };
     #[rpc]
@@ -4410,7 +4414,7 @@ pub fn create_test_transaction_entries(
     let mut signatures = Vec::new();
     // Generate transactions for processing
     // Successful transaction
-    let success_tx = solana_sdk::system_transaction::transfer(
+    let success_tx = solana_system_transaction::transfer(
         mint_keypair,
         &keypair1.pubkey(),
         rent_exempt_amount,
@@ -4419,7 +4423,7 @@ pub fn create_test_transaction_entries(
     signatures.push(success_tx.signatures[0]);
     let entry_1 = solana_entry::entry::next_entry(&blockhash, 1, vec![success_tx]);
     // Failed transaction, InstructionError
-    let ix_error_tx = solana_sdk::system_transaction::transfer(
+    let ix_error_tx = solana_system_transaction::transfer(
         keypair2,
         &keypair3.pubkey(),
         2 * rent_exempt_amount,
@@ -4501,9 +4505,18 @@ pub mod tests {
         jsonrpc_core::{futures, ErrorCode, MetaIoHandler, Output, Response, Value},
         jsonrpc_core_client::transports::local,
         serde::de::DeserializeOwned,
+        solana_account::{Account, WritableAccount},
         solana_accounts_db::accounts_db::{AccountsDbConfig, ACCOUNTS_DB_CONFIG_FOR_TESTING},
+        solana_address_lookup_table_interface::{
+            self as address_lookup_table,
+            state::{AddressLookupTable, LookupTableMeta},
+        },
+        solana_compute_budget_interface::ComputeBudgetInstruction,
         solana_entry::entry::next_versioned_entry,
+        solana_fee_calculator::FeeRateGovernor,
         solana_gossip::{contact_info::ContactInfo, socketaddr},
+        solana_instruction::{error::InstructionError, AccountMeta, Instruction},
+        solana_keypair::Keypair,
         solana_ledger::{
             blockstore_meta::PerfSampleV2,
             blockstore_processor::fill_blockstore_slot_with_ticks,
@@ -4511,6 +4524,11 @@ pub mod tests {
             get_tmp_ledger_path,
         },
         solana_log_collector::ic_logger_msg,
+        solana_message::{
+            v0::{self, MessageAddressTableLookup},
+            Message, MessageHeader, SimpleAddressLoader, VersionedMessage,
+        },
+        solana_nonce::{self as nonce, state::DurableNonce},
         solana_program_option::COption,
         solana_program_runtime::{
             invoke_context::InvokeContext,
@@ -4530,39 +4548,24 @@ pub mod tests {
             commitment::{BlockCommitment, CommitmentSlots},
             non_circulating_supply::non_circulating_accounts,
         },
-        solana_sdk::{
-            account::{Account, WritableAccount},
-            address_lookup_table::{
-                self,
-                state::{AddressLookupTable, LookupTableMeta},
-            },
-            compute_budget::ComputeBudgetInstruction,
-            fee_calculator::FeeRateGovernor,
-            hash::{hash, Hash},
-            instruction::{AccountMeta, Instruction, InstructionError},
-            message::{
-                v0::{self, MessageAddressTableLookup},
-                Message, MessageHeader, VersionedMessage,
-            },
-            nonce::{self, state::DurableNonce},
-            rpc_port,
-            signature::{Keypair, Signer},
-            slot_hashes::SlotHashes,
-            system_program, system_transaction,
-            timing::slot_duration_from_slots_per_year,
-            transaction::{
-                self, SimpleAddressLoader, Transaction, TransactionError, TransactionVersion,
-            },
-            vote::state::VoteState,
-        },
+        solana_sdk::rpc_port,
         solana_send_transaction_service::{
             tpu_info::NullTpuInfo,
             transaction_client::{ConnectionCacheClient, TpuClientNextClient},
         },
+        solana_sha256_hasher::hash,
+        solana_signer::Signer,
+        solana_system_interface::{instruction as system_instruction, program as system_program},
+        solana_system_transaction as system_transaction,
+        solana_sysvar::slot_hashes::SlotHashes,
+        solana_time_utils::slot_duration_from_slots_per_year,
+        solana_transaction::{versioned::TransactionVersion, Transaction},
+        solana_transaction_error::TransactionError,
         solana_transaction_status::{
             EncodedConfirmedBlock, EncodedTransaction, EncodedTransactionWithStatusMeta,
             TransactionDetails,
         },
+        solana_vote_interface::state::VoteState,
         solana_vote_program::{
             vote_instruction,
             vote_state::{self, TowerSync, VoteInit, VoteStateVersions, MAX_LOCKOUT_HISTORY},
@@ -4588,7 +4591,7 @@ pub mod tests {
         let keypair = Arc::new(Keypair::new());
         let contact_info = ContactInfo::new_localhost(
             &keypair.pubkey(),
-            solana_sdk::timing::timestamp(), // wallclock
+            solana_time_utils::timestamp(), // wallclock
         );
         ClusterInfo::new(contact_info, keypair, SocketAddrSpace::Unspecified)
     }
@@ -4693,7 +4696,7 @@ pub mod tests {
         const COMPUTE_UNITS: u64 = 800;
         const NAME: &str = "test_builtin";
         const PROGRAM_ID: Pubkey =
-            solana_sdk::pubkey!("TestProgram11111111111111111111111111111111");
+            solana_pubkey::pubkey!("TestProgram11111111111111111111111111111111");
 
         fn cache_entry() -> ProgramCacheEntry {
             ProgramCacheEntry::new_builtin(0, Self::NAME.len(), Self::vm)
@@ -5846,7 +5849,7 @@ pub mod tests {
                 let authority = Pubkey::new_unique();
                 let account = AccountSharedData::new_data(
                     42,
-                    &nonce::state::Versions::new(nonce::State::new_initialized(
+                    &nonce::versions::Versions::new(nonce::state::State::new_initialized(
                         &authority,
                         DurableNonce::default(),
                         1000,
@@ -5895,7 +5898,7 @@ pub mod tests {
             "getProgramAccounts",
             Some(json!([
                 system_program::id().to_string(),
-                {"filters": [{"dataSize": nonce::State::size()}]},
+                {"filters": [{"dataSize": nonce::state::State::size()}]},
             ])),
         );
         let result: Vec<RpcKeyedAccount> = parse_success_result(rpc.handle_request_sync(request));

+ 1 - 2
rpc/src/rpc/account_resolver.rs

@@ -1,6 +1,5 @@
 use {
-    solana_runtime::bank::Bank,
-    solana_sdk::{account::AccountSharedData, pubkey::Pubkey},
+    solana_account::AccountSharedData, solana_pubkey::Pubkey, solana_runtime::bank::Bank,
     std::collections::HashMap,
 };
 

+ 1 - 1
rpc/src/rpc_completed_slots_service.rs

@@ -3,7 +3,7 @@ use {
     crossbeam_channel::RecvTimeoutError,
     solana_ledger::blockstore::CompletedSlotsReceiver,
     solana_rpc_client_api::response::SlotUpdate,
-    solana_sdk::timing::timestamp,
+    solana_time_utils::timestamp,
     std::{
         sync::{
             atomic::{AtomicBool, Ordering},

+ 4 - 2
rpc/src/rpc_health.rs

@@ -1,7 +1,7 @@
 use {
     crate::optimistically_confirmed_bank_tracker::OptimisticallyConfirmedBank,
+    solana_clock::Slot,
     solana_ledger::blockstore::Blockstore,
-    solana_sdk::clock::Slot,
     std::sync::{
         atomic::{AtomicBool, Ordering},
         Arc, RwLock,
@@ -136,12 +136,14 @@ impl RpcHealth {
 pub mod tests {
     use {
         super::*,
+        solana_clock::UnixTimestamp,
+        solana_hash::Hash,
         solana_ledger::{
             genesis_utils::{create_genesis_config, GenesisConfigInfo},
             get_tmp_ledger_path_auto_delete,
         },
+        solana_pubkey::Pubkey,
         solana_runtime::{bank::Bank, bank_forks::BankForks},
-        solana_sdk::{clock::UnixTimestamp, hash::Hash, pubkey::Pubkey},
     };
 
     #[test]

+ 22 - 16
rpc/src/rpc_pubsub.rs

@@ -17,6 +17,8 @@ use {
     jsonrpc_derive::rpc,
     jsonrpc_pubsub::{typed::Subscriber, SubscriptionId as PubSubSubscriptionId},
     solana_account_decoder::{UiAccount, UiAccountEncoding},
+    solana_clock::Slot,
+    solana_pubkey::Pubkey,
     solana_rpc_client_api::{
         config::{
             RpcAccountInfoConfig, RpcBlockSubscribeConfig, RpcBlockSubscribeFilter,
@@ -28,7 +30,7 @@ use {
             RpcSignatureResult, RpcVersionInfo, RpcVote, SlotInfo, SlotUpdate,
         },
     },
-    solana_sdk::{clock::Slot, pubkey::Pubkey, signature::Signature},
+    solana_signature::Signature,
     solana_transaction_status::UiTransactionEncoding,
     std::{str::FromStr, sync::Arc},
 };
@@ -619,7 +621,15 @@ mod tests {
         base64::{prelude::BASE64_STANDARD, Engine},
         jsonrpc_core::{IoHandler, Response},
         serial_test::serial,
+        solana_account::ReadableAccount,
         solana_account_decoder::{parse_account_data::parse_account_data_v3, UiAccountEncoding},
+        solana_clock::Slot,
+        solana_commitment_config::CommitmentConfig,
+        solana_hash::Hash,
+        solana_keypair::Keypair,
+        solana_message::Message,
+        solana_pubkey::Pubkey,
+        solana_rent::Rent,
         solana_rpc_client_api::response::{
             ProcessedSignatureResult, ReceivedSignatureResult, RpcSignatureResult, SlotInfo,
         },
@@ -632,23 +642,15 @@ mod tests {
                 create_genesis_config_with_vote_accounts, GenesisConfigInfo, ValidatorVoteKeypairs,
             },
         },
-        solana_sdk::{
-            account::ReadableAccount,
-            clock::Slot,
-            commitment_config::CommitmentConfig,
-            hash::Hash,
-            message::Message,
-            pubkey::Pubkey,
-            rent::Rent,
-            signature::{Keypair, Signer},
-            stake::{
-                self, instruction as stake_instruction,
-                state::{Authorized, Lockup, StakeAuthorize, StakeStateV2},
-            },
-            system_instruction, system_program, system_transaction,
-            transaction::{self, Transaction},
+        solana_signer::Signer,
+        solana_stake_interface::{
+            self as stake, instruction as stake_instruction,
+            state::{Authorized, Lockup, StakeAuthorize, StakeStateV2},
         },
         solana_stake_program::stake_state,
+        solana_system_interface::{instruction as system_instruction, program as system_program},
+        solana_system_transaction as system_transaction,
+        solana_transaction::Transaction,
         solana_vote::vote_transaction::VoteTransaction,
         solana_vote_program::vote_state::Vote,
         std::{
@@ -661,6 +663,10 @@ mod tests {
         },
     };
 
+    mod transaction {
+        pub use solana_transaction_error::TransactionResult as Result;
+    }
+
     fn process_transaction_and_notify(
         bank_forks: &RwLock<BankForks>,
         tx: &Transaction,

+ 1 - 1
rpc/src/rpc_pubsub_service.rs

@@ -13,7 +13,7 @@ use {
     soketto::handshake::{server, Server},
     solana_metrics::TokenCounter,
     solana_rayon_threadlimit::get_thread_count,
-    solana_sdk::timing::AtomicInterval,
+    solana_time_utils::AtomicInterval,
     std::{
         io,
         net::SocketAddr,

+ 7 - 8
rpc/src/rpc_service.rs

@@ -17,13 +17,17 @@ use {
     },
     regex::Regex,
     solana_client::connection_cache::{ConnectionCache, Protocol},
+    solana_genesis_config::DEFAULT_GENESIS_DOWNLOAD_PATH,
     solana_gossip::cluster_info::ClusterInfo,
+    solana_hash::Hash,
+    solana_keypair::Keypair,
     solana_ledger::{
         bigtable_upload::ConfirmedBlockUploadConfig,
         bigtable_upload_service::BigTableUploadService, blockstore::Blockstore,
         leader_schedule_cache::LeaderScheduleCache,
     },
     solana_metrics::inc_new_counter_info,
+    solana_native_token::lamports_to_sol,
     solana_perf::thread::renice_this_thread,
     solana_poh::poh_recorder::PohRecorder,
     solana_quic_definitions::NotifyKeyUpdate,
@@ -34,15 +38,12 @@ use {
         snapshot_archive_info::SnapshotArchiveInfoGetter, snapshot_config::SnapshotConfig,
         snapshot_utils,
     },
-    solana_sdk::{
-        exit::Exit, genesis_config::DEFAULT_GENESIS_DOWNLOAD_PATH, hash::Hash,
-        native_token::lamports_to_sol, signature::Keypair,
-    },
     solana_send_transaction_service::{
         send_transaction_service::{self, SendTransactionService},
         transaction_client::{ConnectionCacheClient, TpuClientNextClient, TransactionClient},
     },
     solana_storage_bigtable::CredentialType,
+    solana_validator_exit::Exit,
     std::{
         net::{SocketAddr, UdpSocket},
         path::{Path, PathBuf},
@@ -866,16 +867,14 @@ mod tests {
     use {
         super::*,
         crate::rpc::{create_validator_exit, tests::new_test_cluster_info},
+        solana_genesis_config::{ClusterType, DEFAULT_GENESIS_ARCHIVE},
         solana_ledger::{
             genesis_utils::{create_genesis_config, GenesisConfigInfo},
             get_tmp_ledger_path_auto_delete,
         },
         solana_rpc_client_api::config::RpcContextConfig,
         solana_runtime::bank::Bank,
-        solana_sdk::{
-            genesis_config::{ClusterType, DEFAULT_GENESIS_ARCHIVE},
-            signature::Signer,
-        },
+        solana_signer::Signer,
         std::{
             io::Write,
             net::{IpAddr, Ipv4Addr},

+ 4 - 3
rpc/src/rpc_subscription_tracker.rs

@@ -2,15 +2,16 @@ use {
     crate::rpc_subscriptions::{NotificationEntry, RpcNotification, TimestampedNotificationEntry},
     dashmap::{mapref::entry::Entry as DashEntry, DashMap},
     solana_account_decoder::{UiAccountEncoding, UiDataSliceConfig},
+    solana_clock::Slot,
+    solana_commitment_config::CommitmentConfig,
     solana_metrics::{CounterToken, TokenCounter},
+    solana_pubkey::Pubkey,
     solana_rpc_client_api::filter::RpcFilterType,
     solana_runtime::{
         bank::{TransactionLogCollectorConfig, TransactionLogCollectorFilter},
         bank_forks::BankForks,
     },
-    solana_sdk::{
-        clock::Slot, commitment_config::CommitmentConfig, pubkey::Pubkey, signature::Signature,
-    },
+    solana_signature::Signature,
     solana_transaction_status::{TransactionDetails, UiTransactionEncoding},
     std::{
         collections::hash_map::{Entry, HashMap},

+ 17 - 15
rpc/src/rpc_subscriptions.rs

@@ -17,11 +17,14 @@ use {
     itertools::Either,
     rayon::prelude::*,
     serde::Serialize,
+    solana_account::{AccountSharedData, ReadableAccount},
     solana_account_decoder::{
         encode_ui_account, parse_token::is_known_spl_token_id, UiAccount, UiAccountEncoding,
     },
+    solana_clock::Slot,
     solana_ledger::{blockstore::Blockstore, get_tmp_ledger_path},
     solana_measure::measure::Measure,
+    solana_pubkey::Pubkey,
     solana_rpc_client_api::response::{
         ProcessedSignatureResult, ReceivedSignatureResult, Response as RpcResponse, RpcBlockUpdate,
         RpcBlockUpdateError, RpcKeyedAccount, RpcLogsResponse, RpcResponseContext,
@@ -32,14 +35,8 @@ use {
         bank_forks::BankForks,
         commitment::{BlockCommitmentCache, CommitmentSlots},
     },
-    solana_sdk::{
-        account::{AccountSharedData, ReadableAccount},
-        clock::Slot,
-        pubkey::Pubkey,
-        signature::Signature,
-        timing::timestamp,
-        transaction,
-    },
+    solana_signature::Signature,
+    solana_time_utils::timestamp,
     solana_transaction_status::{
         BlockEncodingOptions, ConfirmedBlock, EncodeError, VersionedConfirmedBlock,
     },
@@ -59,6 +56,10 @@ use {
     tokio::sync::broadcast,
 };
 
+mod transaction {
+    pub use solana_transaction_error::TransactionResult as Result;
+}
+
 const RECEIVE_DELAY_MILLIS: u64 = 100;
 
 fn get_transaction_logs(
@@ -1236,7 +1237,10 @@ pub(crate) mod tests {
             rpc_pubsub_service,
         },
         serial_test::serial,
+        solana_commitment_config::CommitmentConfig,
+        solana_keypair::Keypair,
         solana_ledger::get_tmp_ledger_path_auto_delete,
+        solana_message::Message,
         solana_rpc_client_api::config::{
             RpcAccountInfoConfig, RpcBlockSubscribeConfig, RpcBlockSubscribeFilter,
             RpcProgramAccountsConfig, RpcSignatureSubscribeConfig, RpcTransactionLogsConfig,
@@ -1247,13 +1251,11 @@ pub(crate) mod tests {
             genesis_utils::{create_genesis_config, GenesisConfigInfo},
             prioritization_fee_cache::PrioritizationFeeCache,
         },
-        solana_sdk::{
-            commitment_config::CommitmentConfig,
-            message::Message,
-            signature::{Keypair, Signer},
-            stake, system_instruction, system_program, system_transaction,
-            transaction::Transaction,
-        },
+        solana_signer::Signer,
+        solana_stake_interface as stake,
+        solana_system_interface::{instruction as system_instruction, program as system_program},
+        solana_system_transaction as system_transaction,
+        solana_transaction::Transaction,
         solana_transaction_status::{TransactionDetails, UiTransactionEncoding},
         std::{
             collections::HashSet,

+ 1 - 1
rpc/src/slot_status_notifier.rs

@@ -1,5 +1,5 @@
 use {
-    solana_sdk::clock::Slot,
+    solana_clock::Slot,
     std::sync::{Arc, RwLock},
 };
 

+ 3 - 3
rpc/src/transaction_notifier_interface.rs

@@ -1,7 +1,7 @@
 use {
-    solana_sdk::{clock::Slot, signature::Signature, transaction::SanitizedTransaction},
-    solana_transaction_status::TransactionStatusMeta,
-    std::sync::Arc,
+    solana_clock::Slot, solana_signature::Signature,
+    solana_transaction::sanitized::SanitizedTransaction,
+    solana_transaction_status::TransactionStatusMeta, std::sync::Arc,
 };
 
 pub trait TransactionNotifier {

+ 21 - 19
rpc/src/transaction_status_service.rs

@@ -268,28 +268,30 @@ pub(crate) mod tests {
         agave_reserved_account_keys::ReservedAccountKeys,
         crossbeam_channel::unbounded,
         dashmap::DashMap,
+        solana_account::state_traits::StateMut,
         solana_account_decoder::{
             parse_account_data::SplTokenAdditionalDataV2, parse_token::token_amount_to_ui_amount_v3,
         },
+        solana_clock::Slot,
+        solana_fee_structure::FeeDetails,
+        solana_hash::Hash,
+        solana_keypair::Keypair,
         solana_ledger::{genesis_utils::create_genesis_config, get_tmp_ledger_path_auto_delete},
+        solana_message::SimpleAddressLoader,
+        solana_nonce::{self as nonce, state::DurableNonce},
+        solana_nonce_account as nonce_account,
+        solana_pubkey::Pubkey,
+        solana_rent_debits::RentDebits,
         solana_runtime::bank::{Bank, TransactionBalancesSet},
-        solana_sdk::{
-            account_utils::StateMut,
-            clock::Slot,
-            fee::FeeDetails,
-            hash::Hash,
-            nonce::{self, state::DurableNonce},
-            nonce_account,
-            pubkey::Pubkey,
-            rent_debits::RentDebits,
-            signature::{Keypair, Signature, Signer},
-            system_transaction,
-            transaction::{
-                MessageHash, SanitizedTransaction, SimpleAddressLoader, Transaction,
-                VersionedTransaction,
-            },
-        },
+        solana_signature::Signature,
+        solana_signer::Signer,
         solana_svm::transaction_execution_result::TransactionLoadedAccountsStats,
+        solana_system_transaction as system_transaction,
+        solana_transaction::{
+            sanitized::{MessageHash, SanitizedTransaction},
+            versioned::VersionedTransaction,
+            Transaction,
+        },
         solana_transaction_status::{
             token_balances::TransactionTokenBalancesSet, TransactionStatusMeta,
             TransactionTokenBalance,
@@ -380,9 +382,9 @@ pub(crate) mod tests {
         let durable_nonce = DurableNonce::from_blockhash(&Hash::new_from_array([42u8; 32]));
         let data = nonce::state::Data::new(Pubkey::from([1u8; 32]), durable_nonce, 42);
         nonce_account
-            .set_state(&nonce::state::Versions::new(nonce::State::Initialized(
-                data,
-            )))
+            .set_state(&nonce::versions::Versions::new(
+                nonce::state::State::Initialized(data),
+            ))
             .unwrap();
 
         let mut rent_debits = RentDebits::default();

+ 15 - 1
send-transaction-service/Cargo.toml

@@ -15,21 +15,35 @@ crossbeam-channel = { workspace = true }
 itertools = { workspace = true }
 log = { workspace = true }
 solana-client = { workspace = true }
+solana-clock = { workspace = true }
 solana-connection-cache = { workspace = true }
+solana-hash = { workspace = true }
 solana-keypair = { workspace = true }
 solana-measure = { workspace = true }
 solana-metrics = { workspace = true }
 solana-net-utils = { workspace = true, optional = true }
+solana-nonce-account = { workspace = true }
+solana-pubkey = { workspace = true }
+solana-quic-definitions = { workspace = true }
 solana-runtime = { workspace = true }
-solana-sdk = { workspace = true }
+solana-sdk = { workspace = true, default-features = false }
+solana-signature = { workspace = true }
+solana-time-utils = { workspace = true }
 solana-tpu-client-next = { workspace = true, features = ["metrics"] }
 tokio = { workspace = true, features = ["full"] }
 tokio-util = { workspace = true }
 
 [dev-dependencies]
+solana-account = { workspace = true }
+solana-fee-calculator = { workspace = true }
+solana-genesis-config = { workspace = true }
 solana-logger = { workspace = true }
 solana-net-utils = { workspace = true }
+solana-nonce = { workspace = true }
 solana-runtime = { workspace = true, features = ["dev-context-only-utils"] }
+solana-signer = { workspace = true }
+solana-system-interface = { workspace = true }
+solana-system-transaction = { workspace = true }
 
 [features]
 dev-context-only-utils = ["solana-net-utils"]

+ 16 - 15
send-transaction-service/src/send_transaction_service.rs

@@ -16,10 +16,12 @@ use {
     itertools::Itertools,
     log::*,
     solana_client::connection_cache::ConnectionCache,
+    solana_hash::Hash,
+    solana_nonce_account as nonce_account,
+    solana_pubkey::Pubkey,
     solana_runtime::{bank::Bank, bank_forks::BankForks},
-    solana_sdk::{
-        hash::Hash, nonce_account, pubkey::Pubkey, saturating_add_assign, signature::Signature,
-    },
+    solana_sdk::saturating_add_assign,
+    solana_signature::Signature,
     std::{
         collections::hash_map::{Entry, HashMap},
         net::SocketAddr,
@@ -572,14 +574,13 @@ mod test {
             transaction_client::TpuClientNextClient,
         },
         crossbeam_channel::{bounded, unbounded},
-        solana_sdk::{
-            account::AccountSharedData,
-            genesis_config::create_genesis_config,
-            nonce::{self, state::DurableNonce},
-            pubkey::Pubkey,
-            signature::Signer,
-            system_program, system_transaction,
-        },
+        solana_account::AccountSharedData,
+        solana_genesis_config::create_genesis_config,
+        solana_nonce::{self as nonce, state::DurableNonce},
+        solana_pubkey::Pubkey,
+        solana_signer::Signer,
+        solana_system_interface::program as system_program,
+        solana_system_transaction as system_transaction,
         std::ops::Sub,
         tokio::runtime::Handle,
     };
@@ -672,7 +673,7 @@ mod test {
         solana_logger::setup();
 
         let (mut genesis_config, mint_keypair) = create_genesis_config(4);
-        genesis_config.fee_rate_governor = solana_sdk::fee_calculator::FeeRateGovernor::new(0, 0);
+        genesis_config.fee_rate_governor = solana_fee_calculator::FeeRateGovernor::new(0, 0);
         let (_, bank_forks) = Bank::new_with_bank_forks_for_tests(&genesis_config);
 
         let leader_forward_count = 1;
@@ -931,7 +932,7 @@ mod test {
         solana_logger::setup();
 
         let (mut genesis_config, mint_keypair) = create_genesis_config(4);
-        genesis_config.fee_rate_governor = solana_sdk::fee_calculator::FeeRateGovernor::new(0, 0);
+        genesis_config.fee_rate_governor = solana_fee_calculator::FeeRateGovernor::new(0, 0);
         let (_, bank_forks) = Bank::new_with_bank_forks_for_tests(&genesis_config);
         let leader_forward_count = 1;
         let config = Config::default();
@@ -953,7 +954,7 @@ mod test {
 
         let nonce_address = Pubkey::new_unique();
         let durable_nonce = DurableNonce::from_blockhash(&Hash::new_unique());
-        let nonce_state = nonce::state::Versions::new(nonce::State::Initialized(
+        let nonce_state = nonce::versions::Versions::new(nonce::state::State::Initialized(
             nonce::state::Data::new(Pubkey::default(), durable_nonce, 42),
         ));
         let nonce_account =
@@ -1202,7 +1203,7 @@ mod test {
             transaction.last_sent_time = Some(Instant::now().sub(Duration::from_millis(4000)));
         }
         let new_durable_nonce = DurableNonce::from_blockhash(&Hash::new_unique());
-        let new_nonce_state = nonce::state::Versions::new(nonce::State::Initialized(
+        let new_nonce_state = nonce::versions::Versions::new(nonce::state::State::Initialized(
             nonce::state::Data::new(Pubkey::default(), new_durable_nonce, 42),
         ));
         let nonce_account =

+ 1 - 1
send-transaction-service/src/send_transaction_service_stats.rs

@@ -1,5 +1,5 @@
 use {
-    solana_sdk::timing::AtomicInterval,
+    solana_time_utils::AtomicInterval,
     std::sync::atomic::{AtomicU64, Ordering},
 };
 

+ 1 - 2
send-transaction-service/src/tpu_info.rs

@@ -1,6 +1,5 @@
 use {
-    solana_connection_cache::connection_cache::Protocol, solana_sdk::clock::Slot,
-    std::net::SocketAddr,
+    solana_clock::Slot, solana_connection_cache::connection_cache::Protocol, std::net::SocketAddr,
 };
 
 /// A trait to abstract out the leader estimation for the

+ 1 - 1
send-transaction-service/src/transaction_client.rs

@@ -6,7 +6,7 @@ use {
     solana_connection_cache::client_connection::ClientConnection as TpuConnection,
     solana_keypair::Keypair,
     solana_measure::measure::Measure,
-    solana_sdk::quic::NotifyKeyUpdate,
+    solana_quic_definitions::NotifyKeyUpdate,
     solana_tpu_client_next::{
         connection_workers_scheduler::{
             BindTarget, ConnectionWorkersSchedulerConfig, Fanout, StakeIdentity,

+ 7 - 2
svm/Cargo.toml

@@ -37,16 +37,21 @@ solana-measure = { workspace = true }
 solana-message = { workspace = true }
 solana-nonce = { workspace = true }
 solana-nonce-account = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-pack = { workspace = true }
 solana-program-runtime = { workspace = true, features = ["metrics"] }
 solana-pubkey = { workspace = true }
 solana-rent = { workspace = true }
 solana-rent-collector = { workspace = true }
 solana-rent-debits = { workspace = true }
 solana-sdk-ids = { workspace = true }
+solana-slot-hashes = { workspace = true }
 solana-svm-callback = { workspace = true }
 solana-svm-feature-set = { workspace = true }
 solana-svm-rent-collector = { workspace = true }
 solana-svm-transaction = { workspace = true }
+solana-system-interface = { workspace = true }
+solana-sysvar-id = { workspace = true }
 solana-timings = { workspace = true }
 solana-transaction-context = { workspace = true }
 solana-transaction-error = { workspace = true }
@@ -86,7 +91,7 @@ solana-program-runtime = { workspace = true, features = ["dev-context-only-utils
 solana-pubkey = { workspace = true }
 solana-rent = { workspace = true }
 solana-sbpf = { workspace = true }
-solana-sdk = { workspace = true, features = ["dev-context-only-utils"] }
+solana-sdk = { workspace = true, default-features = false }
 solana-secp256k1-program = { workspace = true }
 solana-secp256r1-program = { workspace = true, features = ["openssl-vendored"] }
 solana-signature = { workspace = true }
@@ -97,7 +102,7 @@ solana-svm-conformance = { workspace = true }
 solana-system-program = { workspace = true }
 solana-system-transaction = { workspace = true }
 solana-sysvar = { workspace = true }
-solana-transaction = { workspace = true }
+solana-transaction = { workspace = true, features = ["dev-context-only-utils"] }
 solana-transaction-context = { workspace = true, features = ["dev-context-only-utils"] }
 spl-token = { workspace = true }
 test-case = { workspace = true }

+ 130 - 4
svm/examples/Cargo.lock

@@ -2832,7 +2832,13 @@ dependencies = [
  "clap",
  "home",
  "solana-client",
- "solana-sdk",
+ "solana-commitment-config",
+ "solana-instruction",
+ "solana-keypair",
+ "solana-message",
+ "solana-pubkey",
+ "solana-signer",
+ "solana-transaction",
  "thiserror 1.0.69",
  "yaml-rust",
 ]
@@ -2856,18 +2862,34 @@ dependencies = [
  "log",
  "serde",
  "serde_json",
+ "solana-account",
  "solana-account-decoder",
  "solana-bpf-loader-program",
+ "solana-clock",
+ "solana-commitment-config",
  "solana-compute-budget",
+ "solana-compute-budget-interface",
+ "solana-hash",
+ "solana-message",
+ "solana-nonce",
  "solana-perf",
  "solana-program-runtime",
+ "solana-pubkey",
  "solana-rpc-client-api",
  "solana-sdk",
+ "solana-sdk-ids",
+ "solana-signature",
  "solana-svm",
  "solana-svm-callback",
+ "solana-system-interface",
  "solana-system-program",
+ "solana-sysvar",
+ "solana-sysvar-id",
+ "solana-transaction",
  "solana-transaction-context 2.3.0",
+ "solana-transaction-error",
  "solana-transaction-status",
+ "solana-validator-exit",
  "solana-version",
  "spl-token-2022",
  "tokio",
@@ -7100,22 +7122,51 @@ dependencies = [
  "crossbeam-channel",
  "log",
  "serde",
+ "solana-account",
+ "solana-account-info",
  "solana-accounts-db",
  "solana-banks-client",
  "solana-banks-interface",
  "solana-banks-server",
+ "solana-clock",
+ "solana-commitment-config",
  "solana-compute-budget",
+ "solana-cpi",
+ "solana-epoch-rewards",
+ "solana-epoch-schedule",
+ "solana-fee-calculator",
+ "solana-genesis-config",
+ "solana-hash",
  "solana-instruction",
+ "solana-keypair",
+ "solana-loader-v3-interface",
  "solana-log-collector",
  "solana-logger",
+ "solana-message",
+ "solana-msg",
+ "solana-native-token",
+ "solana-poh-config",
+ "solana-program-entrypoint",
+ "solana-program-error",
  "solana-program-runtime",
+ "solana-pubkey",
+ "solana-rent",
  "solana-runtime",
  "solana-sbpf",
  "solana-sdk",
  "solana-sdk-ids",
+ "solana-sdk-macro",
+ "solana-signer",
+ "solana-stable-layout",
+ "solana-stake-interface",
  "solana-svm",
+ "solana-system-interface",
+ "solana-sysvar",
+ "solana-sysvar-id",
  "solana-timings",
+ "solana-transaction",
  "solana-transaction-context 2.3.0",
+ "solana-transaction-error",
  "solana-vote-program",
  "spl-generic-token",
  "thiserror 2.0.12",
@@ -7328,17 +7379,29 @@ dependencies = [
  "serde_derive",
  "serde_json",
  "soketto",
+ "solana-account",
  "solana-account-decoder",
  "solana-accounts-db",
  "solana-client",
+ "solana-clock",
+ "solana-commitment-config",
  "solana-entry",
+ "solana-epoch-info",
+ "solana-epoch-rewards-hasher",
+ "solana-epoch-schedule",
  "solana-faucet",
+ "solana-genesis-config",
  "solana-gossip",
+ "solana-hash",
+ "solana-keypair",
  "solana-ledger",
  "solana-measure",
+ "solana-message",
  "solana-metrics",
+ "solana-native-token",
  "solana-perf",
  "solana-poh",
+ "solana-poh-config",
  "solana-program-pack",
  "solana-pubkey",
  "solana-quic-definitions",
@@ -7348,13 +7411,23 @@ dependencies = [
  "solana-runtime-transaction",
  "solana-sdk",
  "solana-send-transaction-service",
+ "solana-signature",
+ "solana-signer",
+ "solana-slot-history",
  "solana-stake-program",
  "solana-storage-bigtable",
  "solana-streamer",
  "solana-svm",
+ "solana-system-interface",
+ "solana-system-transaction",
+ "solana-sysvar",
+ "solana-time-utils",
  "solana-tpu-client",
+ "solana-transaction",
  "solana-transaction-context 2.3.0",
+ "solana-transaction-error",
  "solana-transaction-status",
+ "solana-validator-exit",
  "solana-version",
  "solana-vote",
  "solana-vote-program",
@@ -7815,12 +7888,19 @@ dependencies = [
  "itertools 0.12.1",
  "log",
  "solana-client",
+ "solana-clock",
  "solana-connection-cache",
+ "solana-hash",
  "solana-keypair",
  "solana-measure",
  "solana-metrics",
+ "solana-nonce-account",
+ "solana-pubkey",
+ "solana-quic-definitions",
  "solana-runtime",
  "solana-sdk",
+ "solana-signature",
+ "solana-time-utils",
  "solana-tpu-client-next",
  "tokio",
  "tokio-util 0.7.15",
@@ -8128,16 +8208,21 @@ dependencies = [
  "solana-message",
  "solana-nonce",
  "solana-nonce-account",
+ "solana-program-entrypoint",
+ "solana-program-pack",
  "solana-program-runtime",
  "solana-pubkey",
  "solana-rent",
  "solana-rent-collector",
  "solana-rent-debits",
  "solana-sdk-ids",
+ "solana-slot-hashes",
  "solana-svm-callback",
  "solana-svm-feature-set",
  "solana-svm-rent-collector",
  "solana-svm-transaction",
+ "solana-system-interface",
+ "solana-sysvar-id",
  "solana-timings",
  "solana-transaction-context 2.3.0",
  "solana-transaction-error",
@@ -8160,18 +8245,32 @@ name = "solana-svm-example-paytube"
 version = "2.3.0"
 dependencies = [
  "agave-feature-set",
+ "solana-account",
  "solana-bpf-loader-program",
  "solana-client",
+ "solana-clock",
+ "solana-commitment-config",
  "solana-compute-budget",
+ "solana-epoch-schedule",
  "solana-fee-structure",
+ "solana-hash",
+ "solana-instruction",
+ "solana-keypair",
  "solana-logger",
+ "solana-program-pack",
  "solana-program-runtime",
- "solana-sdk",
+ "solana-pubkey",
+ "solana-rent-collector",
+ "solana-sdk-ids",
+ "solana-signer",
  "solana-svm",
  "solana-svm-callback",
  "solana-svm-feature-set",
+ "solana-system-interface",
  "solana-system-program",
  "solana-test-validator",
+ "solana-transaction",
+ "solana-transaction-error",
  "spl-associated-token-account",
  "spl-token",
  "termcolor",
@@ -8233,6 +8332,7 @@ dependencies = [
  "serde_derive",
  "solana-account",
  "solana-bincode",
+ "solana-fee-calculator",
  "solana-instruction",
  "solana-log-collector",
  "solana-nonce",
@@ -8320,23 +8420,39 @@ dependencies = [
  "log",
  "serde_derive",
  "serde_json",
+ "solana-account",
  "solana-accounts-db",
  "solana-cli-output",
+ "solana-clock",
+ "solana-cluster-type",
+ "solana-commitment-config",
  "solana-compute-budget",
  "solana-core",
+ "solana-epoch-schedule",
+ "solana-feature-gate-interface",
+ "solana-fee-calculator",
  "solana-geyser-plugin-manager",
  "solana-gossip",
+ "solana-instruction",
+ "solana-keypair",
  "solana-ledger",
+ "solana-loader-v3-interface",
  "solana-logger",
+ "solana-message",
+ "solana-native-token",
  "solana-net-utils",
  "solana-program-test",
+ "solana-pubkey",
+ "solana-rent",
  "solana-rpc",
  "solana-rpc-client",
  "solana-rpc-client-api",
  "solana-runtime",
- "solana-sdk",
+ "solana-sdk-ids",
+ "solana-signer",
  "solana-streamer",
  "solana-tpu-client",
+ "solana-validator-exit",
  "tokio",
 ]
 
@@ -8619,22 +8735,32 @@ dependencies = [
  "rand_chacha 0.3.1",
  "rayon",
  "rustls 0.23.27",
+ "solana-clock",
+ "solana-cluster-type",
  "solana-entry",
  "solana-gossip",
+ "solana-hash",
+ "solana-keypair",
  "solana-ledger",
  "solana-measure",
  "solana-metrics",
+ "solana-native-token",
  "solana-net-utils",
  "solana-perf",
  "solana-poh",
+ "solana-pubkey",
  "solana-quic-client",
  "solana-rayon-threadlimit",
  "solana-rpc",
  "solana-rpc-client-api",
  "solana-runtime",
- "solana-sdk",
+ "solana-signature",
+ "solana-signer",
  "solana-streamer",
+ "solana-system-transaction",
+ "solana-time-utils",
  "solana-tls-utils",
+ "solana-transaction-error",
  "static_assertions",
  "thiserror 2.0.12",
  "tokio",

+ 23 - 1
svm/examples/Cargo.toml

@@ -37,7 +37,7 @@ solana-logger = "=2.3.1"
 solana-perf = { path = "../../perf" }
 solana-program-runtime = { path = "../../program-runtime" }
 solana-rpc-client-api = { path = "../../rpc-client-api" }
-solana-sdk = "=2.2.2"
+solana-sdk = { version = "=2.2.2", default-features = false }
 solana-svm = { path = "../" }
 solana-svm-callback = { path = "../../svm-callback" }
 solana-svm-feature-set = { path = "../../svm-feature-set" }
@@ -54,6 +54,28 @@ thiserror = "1.0.68"
 tokio = "1.29.1"
 tokio-util = "0.7"
 yaml-rust = "0.4"
+solana-account = "2.2.1"
+solana-clock = "2.2.1"
+solana-commitment-config = "2.2.1"
+solana-compute-budget-interface = "2.2.2"
+solana-message = "2.3.0"
+solana-nonce = "2.2.1"
+solana-pubkey = "2.3.0"
+solana-sdk-ids = "2.2.1"
+solana-signature = "2.2.1"
+solana-system-interface = "1.0"
+solana-sysvar = "2.2.1"
+solana-sysvar-id = "2.2.1"
+solana-transaction = "2.2.2"
+solana-transaction-error = "2.2.1"
+solana-validator-exit = "2.2.1"
+solana-instruction = "2.2.1"
+solana-keypair = "2.2.1"
+solana-signer = "2.2.1"
+solana-hash = "2.2.1"
+solana-rent-collector = "2.2.1"
+solana-epoch-schedule = "2.2.1"
+solana-program-pack = "2.2.1"
 
 [patch.crates-io]
 crossbeam-epoch = { git = "https://github.com/anza-xyz/crossbeam", rev = "fd279d707025f0e60951e429bf778b4813d1b6bf" }

+ 7 - 1
svm/examples/json-rpc/client/Cargo.toml

@@ -10,7 +10,13 @@ borsh = { workspace = true }
 clap = { workspace = true }
 home = { workspace = true }
 solana-client = { workspace = true }
-solana-sdk = { workspace = true }
+solana-commitment-config = { workspace = true }
+solana-instruction = { workspace = true }
+solana-keypair = { workspace = true }
+solana-message = { workspace = true }
+solana-pubkey = { workspace = true }
+solana-signer = { workspace = true }
+solana-transaction = { workspace = true }
 thiserror = { workspace = true }
 yaml-rust = { workspace = true }
 

+ 6 - 8
svm/examples/json-rpc/client/src/client.rs

@@ -1,14 +1,12 @@
 use {
     crate::utils,
     solana_client::rpc_client::RpcClient,
-    solana_sdk::{
-        commitment_config::CommitmentConfig,
-        instruction::{AccountMeta, Instruction},
-        message::Message,
-        signature::Signer,
-        signer::keypair::{read_keypair_file, Keypair},
-        transaction::Transaction,
-    },
+    solana_commitment_config::CommitmentConfig,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_keypair::{read_keypair_file, Keypair},
+    solana_message::Message,
+    solana_signer::Signer,
+    solana_transaction::Transaction,
 };
 
 /// Establishes a RPC connection with the Simulation server.

+ 3 - 5
svm/examples/json-rpc/client/src/utils.rs

@@ -1,9 +1,7 @@
 use {
     borsh::{BorshDeserialize, BorshSerialize},
-    solana_sdk::{
-        pubkey::Pubkey,
-        signer::keypair::{read_keypair_file, Keypair},
-    },
+    solana_keypair::{read_keypair_file, Keypair},
+    solana_pubkey::Pubkey,
     thiserror::Error,
     yaml_rust::YamlLoader,
 };
@@ -22,7 +20,7 @@ pub enum Error {
     Client(#[from] solana_client::client_error::ClientError),
 
     #[error("error in public key derivation: ({0})")]
-    KeyDerivation(#[from] solana_sdk::pubkey::PubkeyError),
+    KeyDerivation(#[from] solana_pubkey::PubkeyError),
 }
 
 pub type Result<T> = std::result::Result<T, Error>;

+ 17 - 1
svm/examples/json-rpc/server/Cargo.toml

@@ -21,18 +21,34 @@ jsonrpc-http-server = { workspace = true }
 log = { workspace = true }
 serde = { workspace = true }
 serde_json = { workspace = true }
+solana-account = { workspace = true }
 solana-account-decoder = { workspace = true }
 solana-bpf-loader-program = { workspace = true }
+solana-clock = { workspace = true }
+solana-commitment-config = { workspace = true }
 solana-compute-budget = { workspace = true }
+solana-compute-budget-interface = { workspace = true }
+solana-hash = { workspace = true }
+solana-message = { workspace = true }
+solana-nonce = { workspace = true }
 solana-perf = { workspace = true }
 solana-program-runtime = { workspace = true }
+solana-pubkey = { workspace = true }
 solana-rpc-client-api = { workspace = true }
-solana-sdk = { workspace = true }
+solana-sdk = { workspace = true, default-features = false }
+solana-sdk-ids = { workspace = true }
+solana-signature = { workspace = true }
 solana-svm = { workspace = true }
 solana-svm-callback = { workspace = true }
+solana-system-interface = { workspace = true }
 solana-system-program = { workspace = true }
+solana-sysvar = { workspace = true }
+solana-sysvar-id = { workspace = true }
+solana-transaction = { workspace = true }
 solana-transaction-context = { workspace = true }
+solana-transaction-error = { workspace = true }
 solana-transaction-status = { workspace = true }
+solana-validator-exit = { workspace = true }
 solana-version = { workspace = true }
 spl-token-2022 = { workspace = true, features = ["no-entrypoint"] }
 tokio = { workspace = true, features = ["full"] }

+ 32 - 26
svm/examples/json-rpc/server/src/rpc_process.rs

@@ -10,41 +10,33 @@ use {
     jsonrpc_derive::rpc,
     log::*,
     serde_json,
+    solana_account::{from_account, Account, AccountSharedData, ReadableAccount},
     solana_account_decoder::{
         encode_ui_account,
         parse_account_data::{AccountAdditionalDataV3, SplTokenAdditionalDataV2},
         parse_token::{get_token_account_mint, is_known_spl_token_id},
         UiAccount, UiAccountEncoding, UiDataSliceConfig, MAX_BASE58_BYTES,
     },
+    solana_clock::{Slot, MAX_PROCESSING_AGE, MAX_TRANSACTION_FORWARDING_DELAY},
+    solana_commitment_config::CommitmentConfig,
+    solana_hash::Hash,
+    solana_message::{
+        inner_instruction::InnerInstructions,
+        v0::{LoadedAddresses, MessageAddressTableLookup},
+        AddressLoader, AddressLoaderError,
+    },
+    solana_nonce::state::DurableNonce,
     solana_perf::packet::PACKET_DATA_SIZE,
     solana_program_runtime::{
         execution_budget::SVMTransactionExecutionAndFeeBudgetLimits,
         loaded_programs::ProgramCacheEntry,
     },
+    solana_pubkey::Pubkey,
     solana_rpc_client_api::{
         config::*,
         response::{Response as RpcResponse, *},
     },
-    solana_sdk::{
-        account::{from_account, Account, AccountSharedData, ReadableAccount},
-        clock::{Slot, MAX_PROCESSING_AGE, MAX_TRANSACTION_FORWARDING_DELAY},
-        commitment_config::CommitmentConfig,
-        exit::Exit,
-        hash::Hash,
-        inner_instruction::InnerInstructions,
-        message::{
-            v0::{LoadedAddresses, MessageAddressTableLookup},
-            AddressLoaderError,
-        },
-        nonce::state::DurableNonce,
-        pubkey::Pubkey,
-        signature::Signature,
-        system_instruction, sysvar,
-        transaction::{
-            AddressLoader, MessageHash, SanitizedTransaction, TransactionError,
-            VersionedTransaction,
-        },
-    },
+    solana_signature::Signature,
     solana_svm::{
         account_loader::{CheckedTransactionDetails, TransactionCheckResult},
         account_overrides::AccountOverrides,
@@ -58,11 +50,18 @@ use {
         },
     },
     solana_system_program::system_processor,
+    solana_sysvar as sysvar,
+    solana_transaction::{
+        sanitized::{MessageHash, SanitizedTransaction},
+        versioned::VersionedTransaction,
+    },
     solana_transaction_context::{TransactionAccount, TransactionReturnData},
+    solana_transaction_error::TransactionError,
     solana_transaction_status::{
         map_inner_instructions, parse_ui_inner_instructions, TransactionBinaryEncoding,
         UiTransactionEncoding,
     },
+    solana_validator_exit::Exit,
     spl_token_2022::{
         extension::{
             interest_bearing_mint::InterestBearingConfig, scaled_ui_amount::ScaledUiAmountConfig,
@@ -84,6 +83,13 @@ use {
     },
 };
 
+mod transaction {
+    pub use {
+        solana_transaction::sanitized::MAX_TX_ACCOUNT_LOCKS,
+        solana_transaction_error::TransactionResult as Result,
+    };
+}
+
 pub const MAX_REQUEST_BODY_SIZE: usize = 50 * (1 << 10); // 50kB
 
 const EXECUTION_SLOT: u64 = 5; // The execution slot must be greater than the deployment slot
@@ -116,7 +122,7 @@ pub struct JsonRpcRequestProcessor {
 }
 
 struct TransactionSimulationResult {
-    pub result: solana_sdk::transaction::Result<()>,
+    pub result: transaction::Result<()>,
     pub logs: TransactionLogMessages,
     pub post_simulation_accounts: Vec<TransactionAccount>,
     pub units_consumed: u64,
@@ -155,7 +161,7 @@ pub struct TransactionLogCollectorConfig {
 #[derive(Clone, Debug, PartialEq, Eq)]
 pub struct TransactionLogInfo {
     pub signature: Signature,
-    pub result: solana_sdk::transaction::Result<()>,
+    pub result: transaction::Result<()>,
     pub is_vote: bool,
     pub log_messages: TransactionLogMessages,
 }
@@ -303,7 +309,7 @@ impl JsonRpcRequestProcessor {
         // Add the BPF Loader v2 builtin, for the SPL Token program.
         transaction_processor.add_builtin(
             &mock_bank,
-            solana_sdk::bpf_loader_upgradeable::id(),
+            solana_sdk_ids::bpf_loader_upgradeable::id(),
             "solana_bpf_loader_upgradeable_program",
             ProgramCacheEntry::new_builtin(
                 0,
@@ -380,7 +386,7 @@ impl JsonRpcRequestProcessor {
         &'a self,
         transaction: &'a SanitizedTransaction,
     ) -> TransactionBatch<'a> {
-        let tx_account_lock_limit = solana_sdk::transaction::MAX_TX_ACCOUNT_LOCKS;
+        let tx_account_lock_limit = transaction::MAX_TX_ACCOUNT_LOCKS;
         let lock_result = transaction
             .get_account_locks(tx_account_lock_limit)
             .map(|_| ());
@@ -394,7 +400,7 @@ impl JsonRpcRequestProcessor {
     fn check_age(
         &self,
         sanitized_txs: &[impl core::borrow::Borrow<SanitizedTransaction>],
-        lock_results: &[solana_sdk::transaction::Result<()>],
+        lock_results: &[transaction::Result<()>],
         max_age: usize,
         error_counters: &mut TransactionErrorMetrics,
     ) -> Vec<TransactionCheckResult> {
@@ -789,7 +795,7 @@ pub mod rpc {
                 "get_minimum_balance_for_rent_exemption rpc request received: {:?}",
                 data_len
             );
-            if data_len as u64 > system_instruction::MAX_PERMITTED_DATA_LENGTH {
+            if data_len as u64 > solana_system_interface::MAX_PERMITTED_DATA_LENGTH {
                 return Err(Error::invalid_request());
             }
             Ok(meta.get_minimum_balance_for_rent_exemption(data_len, commitment))

+ 1 - 1
svm/examples/json-rpc/server/src/rpc_service.rs

@@ -7,7 +7,7 @@ use {
     },
     log::*,
     solana_perf::thread::renice_this_thread,
-    solana_sdk::exit::Exit,
+    solana_validator_exit::Exit,
     std::{
         net::SocketAddr,
         sync::{atomic::AtomicBool, Arc, RwLock},

+ 17 - 14
svm/examples/json-rpc/server/src/svm_bridge.rs

@@ -1,12 +1,15 @@
 use {
     agave_feature_set::FeatureSet,
     log::*,
+    solana_account::{AccountSharedData, ReadableAccount},
     solana_bpf_loader_program::syscalls::{
         SyscallAbort, SyscallGetClockSysvar, SyscallInvokeSignedRust, SyscallLog,
         SyscallLogBpfComputeUnits, SyscallLogPubkey, SyscallLogU64, SyscallMemcpy, SyscallMemset,
         SyscallSetReturnData,
     },
+    solana_clock::{Clock, Slot, UnixTimestamp},
     solana_compute_budget::compute_budget::ComputeBudget,
+    solana_message::AccountKeys,
     solana_program_runtime::{
         invoke_context::InvokeContext,
         loaded_programs::{
@@ -18,20 +21,15 @@ use {
             vm::Config,
         },
     },
-    solana_sdk::{
-        account::{AccountSharedData, ReadableAccount},
-        clock::{Clock, Slot, UnixTimestamp},
-        message::AccountKeys,
-        native_loader,
-        pubkey::Pubkey,
-        sysvar::SysvarId,
-        transaction::SanitizedTransaction,
-    },
+    solana_pubkey::Pubkey,
+    solana_sdk::native_loader,
     solana_svm::{
         transaction_processing_result::TransactionProcessingResult,
         transaction_processor::TransactionBatchProcessor,
     },
     solana_svm_callback::{InvokeContextCallback, TransactionProcessingCallback},
+    solana_sysvar_id::SysvarId,
+    solana_transaction::sanitized::SanitizedTransaction,
     std::{
         collections::HashMap,
         sync::{Arc, RwLock},
@@ -39,6 +37,10 @@ use {
     },
 };
 
+mod transaction {
+    pub use solana_transaction_error::TransactionResult as Result;
+}
+
 const DEPLOYMENT_SLOT: u64 = 0;
 const DEPLOYMENT_EPOCH: u64 = 0;
 
@@ -117,13 +119,13 @@ pub struct LoadAndExecuteTransactionsOutput {
 }
 
 pub struct TransactionBatch<'a> {
-    lock_results: Vec<solana_sdk::transaction::Result<()>>,
+    lock_results: Vec<transaction::Result<()>>,
     sanitized_txs: std::borrow::Cow<'a, [SanitizedTransaction]>,
 }
 
 impl<'a> TransactionBatch<'a> {
     pub fn new(
-        lock_results: Vec<solana_sdk::transaction::Result<()>>,
+        lock_results: Vec<transaction::Result<()>>,
         sanitized_txs: std::borrow::Cow<'a, [SanitizedTransaction]>,
     ) -> Self {
         assert_eq!(lock_results.len(), sanitized_txs.len());
@@ -133,7 +135,7 @@ impl<'a> TransactionBatch<'a> {
         }
     }
 
-    pub fn lock_results(&self) -> &Vec<solana_sdk::transaction::Result<()>> {
+    pub fn lock_results(&self) -> &Vec<transaction::Result<()>> {
         &self.lock_results
     }
 
@@ -214,7 +216,8 @@ pub fn create_executable_environment(
     // add programs to cache
     for key in account_keys.iter() {
         if let Some(account) = mock_bank.get_account_shared_data(key) {
-            if account.executable() && *account.owner() == solana_sdk::bpf_loader_upgradeable::id()
+            if account.executable()
+                && *account.owner() == solana_sdk_ids::bpf_loader_upgradeable::id()
             {
                 let data = account.data();
                 let program_data_account_key = Pubkey::try_from(data[4..].to_vec()).unwrap();
@@ -230,7 +233,7 @@ pub fn create_executable_environment(
                     *key,
                     Arc::new(
                         ProgramCacheEntry::new(
-                            &solana_sdk::bpf_loader_upgradeable::id(),
+                            &solana_sdk_ids::bpf_loader_upgradeable::id(),
                             program_runtime_environment,
                             0,
                             0,

+ 15 - 1
svm/examples/paytube/Cargo.toml

@@ -7,17 +7,31 @@ publish = false
 
 [dependencies]
 agave-feature-set = { workspace = true }
+solana-account = { workspace = true }
 solana-bpf-loader-program = { workspace = true }
 solana-client = { workspace = true }
+solana-clock = { workspace = true }
+solana-commitment-config = { workspace = true }
 solana-compute-budget = { workspace = true }
+solana-epoch-schedule = { workspace = true }
 solana-fee-structure = "=2.2.1"
+solana-hash = { workspace = true }
+solana-instruction = { workspace = true }
+solana-keypair = { workspace = true }
 solana-logger = { workspace = true }
+solana-program-pack = { workspace = true }
 solana-program-runtime = { workspace = true, features = ["dev-context-only-utils"] }
-solana-sdk = { workspace = true }
+solana-pubkey = { workspace = true }
+solana-rent-collector = { workspace = true }
+solana-sdk-ids = { workspace = true }
+solana-signer = { workspace = true }
 solana-svm = { workspace = true }
 solana-svm-callback = { workspace = true }
 solana-svm-feature-set = { workspace = true }
+solana-system-interface = { workspace = true }
 solana-system-program = { workspace = true }
+solana-transaction = { workspace = true }
+solana-transaction-error = { workspace = true }
 spl-associated-token-account = { workspace = true }
 spl-token = { workspace = true }
 termcolor = { workspace = true }

+ 4 - 3
svm/examples/paytube/src/lib.rs

@@ -67,10 +67,11 @@ use {
         create_transaction_batch_processor, get_transaction_check_results, PayTubeForkGraph,
     },
     solana_client::rpc_client::RpcClient,
+    solana_fee_structure::FeeStructure,
+    solana_hash::Hash,
+    solana_keypair::Keypair,
     solana_program_runtime::execution_budget::SVMTransactionExecutionBudget,
-    solana_sdk::{
-        fee::FeeStructure, hash::Hash, rent_collector::RentCollector, signature::Keypair,
-    },
+    solana_rent_collector::RentCollector,
     solana_svm::transaction_processor::{
         TransactionProcessingConfig, TransactionProcessingEnvironment,
     },

+ 2 - 4
svm/examples/paytube/src/loader.rs

@@ -6,11 +6,9 @@
 //! for the duration of the channel.
 
 use {
+    solana_account::{AccountSharedData, ReadableAccount},
     solana_client::rpc_client::RpcClient,
-    solana_sdk::{
-        account::{AccountSharedData, ReadableAccount},
-        pubkey::Pubkey,
-    },
+    solana_pubkey::Pubkey,
     solana_svm_callback::{InvokeContextCallback, TransactionProcessingCallback},
     std::{collections::HashMap, sync::RwLock},
 };

+ 6 - 2
svm/examples/paytube/src/processor.rs

@@ -2,13 +2,13 @@
 
 use {
     solana_bpf_loader_program::syscalls::create_program_runtime_environment_v1,
+    solana_clock::Slot,
     solana_compute_budget::compute_budget_limits::ComputeBudgetLimits,
     solana_fee_structure::FeeDetails,
     solana_program_runtime::{
         execution_budget::SVMTransactionExecutionBudget,
         loaded_programs::{BlockRelation, ForkGraph, ProgramCacheEntry},
     },
-    solana_sdk::{clock::Slot, transaction},
     solana_svm::{
         account_loader::CheckedTransactionDetails, transaction_processor::TransactionBatchProcessor,
     },
@@ -18,6 +18,10 @@ use {
     std::sync::{Arc, RwLock},
 };
 
+mod transaction {
+    pub use solana_transaction_error::TransactionResult as Result;
+}
+
 /// In order to use the `TransactionBatchProcessor`, another trait - Solana
 /// Program Runtime's `ForkGraph` - must be implemented, to tell the batch
 /// processor how to work across forks.
@@ -77,7 +81,7 @@ pub(crate) fn create_transaction_batch_processor<CB: TransactionProcessingCallba
     // Add the BPF Loader v2 builtin, for the SPL Token program.
     processor.add_builtin(
         callbacks,
-        solana_sdk::bpf_loader::id(),
+        solana_sdk_ids::bpf_loader::id(),
         "solana_bpf_loader_program",
         ProgramCacheEntry::new_builtin(
             0,

+ 7 - 5
svm/examples/paytube/src/settler.rs

@@ -13,15 +13,17 @@
 use {
     crate::transaction::PayTubeTransaction,
     solana_client::{rpc_client::RpcClient, rpc_config::RpcSendTransactionConfig},
-    solana_sdk::{
-        commitment_config::CommitmentConfig, instruction::Instruction as SolanaInstruction,
-        pubkey::Pubkey, signature::Keypair, signer::Signer, system_instruction,
-        transaction::Transaction as SolanaTransaction,
-    },
+    solana_commitment_config::CommitmentConfig,
+    solana_instruction::Instruction as SolanaInstruction,
+    solana_keypair::Keypair,
+    solana_pubkey::Pubkey,
+    solana_signer::Signer,
     solana_svm::{
         transaction_processing_result::TransactionProcessingResultExtensions,
         transaction_processor::LoadAndExecuteSanitizedTransactionsOutput,
     },
+    solana_system_interface::instruction as system_instruction,
+    solana_transaction::Transaction as SolanaTransaction,
     spl_associated_token_account::get_associated_token_address,
     std::collections::HashMap,
 };

+ 6 - 7
svm/examples/paytube/src/transaction.rs

@@ -7,13 +7,12 @@
 //! case Solana.
 
 use {
-    solana_sdk::{
-        instruction::Instruction as SolanaInstruction,
-        pubkey::Pubkey,
-        system_instruction,
-        transaction::{
-            SanitizedTransaction as SolanaSanitizedTransaction, Transaction as SolanaTransaction,
-        },
+    solana_instruction::Instruction as SolanaInstruction,
+    solana_pubkey::Pubkey,
+    solana_system_interface::instruction as system_instruction,
+    solana_transaction::{
+        sanitized::SanitizedTransaction as SolanaSanitizedTransaction,
+        Transaction as SolanaTransaction,
     },
     spl_associated_token_account::get_associated_token_address,
     std::collections::HashSet,

+ 2 - 1
svm/examples/paytube/tests/native_sol.rs

@@ -2,7 +2,8 @@ mod setup;
 
 use {
     setup::{system_account, TestValidatorContext},
-    solana_sdk::{signature::Keypair, signer::Signer},
+    solana_keypair::Keypair,
+    solana_signer::Signer,
     solana_svm_example_paytube::{transaction::PayTubeTransaction, PayTubeChannel},
 };
 

+ 6 - 8
svm/examples/paytube/tests/setup.rs

@@ -1,14 +1,12 @@
 #![allow(unused)]
 
 use {
-    solana_sdk::{
-        account::{Account, AccountSharedData, ReadableAccount},
-        epoch_schedule::EpochSchedule,
-        program_pack::Pack,
-        pubkey::Pubkey,
-        signature::Keypair,
-        system_program,
-    },
+    solana_account::{Account, AccountSharedData, ReadableAccount},
+    solana_epoch_schedule::EpochSchedule,
+    solana_keypair::Keypair,
+    solana_program_pack::Pack,
+    solana_pubkey::Pubkey,
+    solana_system_interface::program as system_program,
     solana_test_validator::{TestValidator, TestValidatorGenesis},
     spl_token::state::{Account as TokenAccount, Mint},
 };

+ 3 - 1
svm/examples/paytube/tests/spl_tokens.rs

@@ -5,7 +5,9 @@ use {
         get_token_account_balance, mint_account, system_account, token_account,
         TestValidatorContext,
     },
-    solana_sdk::{pubkey::Pubkey, signature::Keypair, signer::Signer},
+    solana_keypair::Keypair,
+    solana_pubkey::Pubkey,
+    solana_signer::Signer,
     solana_svm_example_paytube::{transaction::PayTubeTransaction, PayTubeChannel},
     spl_associated_token_account::get_associated_token_address,
 };

+ 6 - 8
svm/tests/concurrent_tests.rs

@@ -11,18 +11,16 @@ use {
         sync::{Arc, RwLock},
         thread, Runner,
     },
+    solana_account::{AccountSharedData, ReadableAccount, WritableAccount},
+    solana_hash::Hash,
+    solana_instruction::AccountMeta,
     solana_program_runtime::{
         execution_budget::SVMTransactionExecutionAndFeeBudgetLimits,
         loaded_programs::ProgramCacheEntryType,
     },
-    solana_sdk::{
-        account::{AccountSharedData, ReadableAccount, WritableAccount},
-        bpf_loader_upgradeable,
-        hash::Hash,
-        instruction::AccountMeta,
-        pubkey::Pubkey,
-        signature::Signature,
-    },
+    solana_pubkey::Pubkey,
+    solana_sdk_ids::bpf_loader_upgradeable,
+    solana_signature::Signature,
     solana_svm::{
         account_loader::{CheckedTransactionDetails, TransactionCheckResult},
         transaction_processing_result::{

+ 11 - 12
svm/tests/conformance.rs

@@ -6,28 +6,27 @@ use {
     agave_feature_set::{FeatureSet, FEATURE_NAMES},
     lazy_static::lazy_static,
     prost::Message,
+    solana_account::{AccountSharedData, ReadableAccount, WritableAccount},
     solana_bpf_loader_program::syscalls::create_program_runtime_environment_v1,
+    solana_clock::Clock,
+    solana_epoch_schedule::EpochSchedule,
+    solana_hash::Hash,
+    solana_instruction::AccountMeta,
     solana_log_collector::LogCollector,
+    solana_message::SanitizedMessage,
     solana_program_runtime::{
         execution_budget::{SVMTransactionExecutionBudget, SVMTransactionExecutionCost},
         invoke_context::{EnvironmentConfig, InvokeContext},
         loaded_programs::{ProgramCacheEntry, ProgramCacheForTxBatch},
     },
-    solana_sdk::{
-        account::{AccountSharedData, ReadableAccount, WritableAccount},
-        clock::Clock,
-        epoch_schedule::EpochSchedule,
-        hash::Hash,
-        instruction::AccountMeta,
-        message::SanitizedMessage,
-        pubkey::Pubkey,
-        rent::Rent,
-        signature::Signature,
-        sysvar::{last_restart_slot, SysvarId},
-    },
+    solana_pubkey::Pubkey,
+    solana_rent::Rent,
+    solana_signature::Signature,
     solana_svm::{program_loader, transaction_processor::TransactionBatchProcessor},
     solana_svm_callback::TransactionProcessingCallback,
     solana_svm_conformance::proto::{AcctState, InstrEffects, InstrFixture},
+    solana_sysvar::last_restart_slot,
+    solana_sysvar_id::SysvarId,
     solana_timings::ExecuteTimings,
     solana_transaction_context::{
         ExecutionRecord, IndexOfAccount, InstructionAccount, TransactionAccount, TransactionContext,

+ 32 - 28
svm/tests/integration_test.rs

@@ -8,28 +8,22 @@ use {
         WALLCLOCK_TIME,
     },
     agave_feature_set::{self as feature_set, FeatureSet},
-    solana_account::PROGRAM_OWNERS,
+    solana_account::{AccountSharedData, ReadableAccount, WritableAccount, PROGRAM_OWNERS},
+    solana_clock::Slot,
     solana_compute_budget_instruction::instructions_processor::process_compute_budget_instructions,
+    solana_compute_budget_interface::ComputeBudgetInstruction,
     solana_fee_structure::FeeDetails,
+    solana_hash::Hash,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_keypair::Keypair,
+    solana_loader_v3_interface as bpf_loader_upgradeable,
+    solana_native_token::LAMPORTS_PER_SOL,
+    solana_nonce::{self as nonce, state::DurableNonce},
+    solana_program_entrypoint::MAX_PERMITTED_DATA_INCREASE,
     solana_program_runtime::execution_budget::SVMTransactionExecutionAndFeeBudgetLimits,
     solana_pubkey::{pubkey, Pubkey},
-    solana_sdk::{
-        account::{AccountSharedData, ReadableAccount, WritableAccount},
-        bpf_loader_upgradeable,
-        clock::Slot,
-        compute_budget::ComputeBudgetInstruction,
-        entrypoint::MAX_PERMITTED_DATA_INCREASE,
-        hash::Hash,
-        instruction::{AccountMeta, Instruction},
-        native_loader,
-        native_token::LAMPORTS_PER_SOL,
-        nonce::{self, state::DurableNonce},
-        signature::Signer,
-        signer::keypair::Keypair,
-        system_instruction, system_program, system_transaction,
-        sysvar::rent::Rent,
-        transaction::{SanitizedTransaction, Transaction, TransactionError},
-    },
+    solana_sdk_ids::native_loader,
+    solana_signer::Signer,
     solana_svm::{
         account_loader::{CheckedTransactionDetails, TransactionCheckResult},
         nonce_info::NonceInfo,
@@ -43,7 +37,12 @@ use {
         },
     },
     solana_svm_transaction::svm_message::SVMMessage,
+    solana_system_interface::{instruction as system_instruction, program as system_program},
+    solana_system_transaction as system_transaction,
+    solana_sysvar::rent::Rent,
+    solana_transaction::{sanitized::SanitizedTransaction, Transaction},
     solana_transaction_context::TransactionReturnData,
+    solana_transaction_error::TransactionError,
     solana_type_overrides::sync::{Arc, RwLock},
     std::collections::HashMap,
     test_case::test_case,
@@ -981,7 +980,7 @@ fn simple_nonce(fee_paying_nonce: bool) -> Vec<SvmTestEntry> {
             Pubkey::new_unique()
         };
 
-        let nonce_size = nonce::State::size();
+        let nonce_size = nonce::state::State::size();
         let mut nonce_balance = Rent::default().minimum_balance(nonce_size);
 
         if !fake_fee_payer && !fee_paying_nonce {
@@ -1001,7 +1000,7 @@ fn simple_nonce(fee_paying_nonce: bool) -> Vec<SvmTestEntry> {
             nonce::state::Data::new(fee_payer, nonce_initial_hash, LAMPORTS_PER_SIGNATURE);
         let nonce_account = AccountSharedData::new_data(
             nonce_balance,
-            &nonce::state::Versions::new(nonce::State::Initialized(nonce_data.clone())),
+            &nonce::versions::Versions::new(nonce::state::State::Initialized(nonce_data.clone())),
             &system_program::id(),
         )
         .unwrap();
@@ -1433,13 +1432,15 @@ fn simd83_nonce_reuse(fee_paying_nonce: bool) -> Vec<SvmTestEntry> {
         non_fee_nonce_keypair.pubkey()
     };
 
-    let nonce_size = nonce::State::size();
+    let nonce_size = nonce::state::State::size();
     let initial_durable = DurableNonce::from_blockhash(&Hash::new_unique());
     let initial_nonce_data =
         nonce::state::Data::new(fee_payer, initial_durable, LAMPORTS_PER_SIGNATURE);
     let initial_nonce_account = AccountSharedData::new_data(
         LAMPORTS_PER_SOL,
-        &nonce::state::Versions::new(nonce::State::Initialized(initial_nonce_data.clone())),
+        &nonce::versions::Versions::new(nonce::state::State::Initialized(
+            initial_nonce_data.clone(),
+        )),
         &system_program::id(),
     )
     .unwrap();
@@ -1851,7 +1852,7 @@ fn simd83_nonce_reuse(fee_paying_nonce: bool) -> Vec<SvmTestEntry> {
             nonce::state::Data::new(new_authority, initial_durable, LAMPORTS_PER_SIGNATURE);
         let final_nonce_account = AccountSharedData::new_data(
             LAMPORTS_PER_SOL,
-            &nonce::state::Versions::new(nonce::State::Initialized(final_nonce_data)),
+            &nonce::versions::Versions::new(nonce::state::State::Initialized(final_nonce_data)),
             &system_program::id(),
         )
         .unwrap();
@@ -1900,7 +1901,7 @@ fn simd83_nonce_reuse(fee_paying_nonce: bool) -> Vec<SvmTestEntry> {
             nonce::state::Data::new(new_authority, advanced_durable, LAMPORTS_PER_SIGNATURE);
         let final_nonce_account = AccountSharedData::new_data(
             LAMPORTS_PER_SOL,
-            &nonce::state::Versions::new(nonce::State::Initialized(final_nonce_data)),
+            &nonce::versions::Versions::new(nonce::state::State::Initialized(final_nonce_data)),
             &system_program::id(),
         )
         .unwrap();
@@ -1939,7 +1940,7 @@ impl WriteProgramInstruction {
                 vec![2],
                 vec![
                     AccountMeta::new(target, false),
-                    AccountMeta::new(solana_sdk::incinerator::id(), false),
+                    AccountMeta::new(solana_sdk_ids::incinerator::id(), false),
                 ],
             ),
             Self::Realloc(new_size) => {
@@ -2141,7 +2142,9 @@ fn simd83_fee_payer_deallocate() -> Vec<SvmTestEntry> {
             nonce::state::Data::new(dealloc_fee_payer, initial_durable, LAMPORTS_PER_SIGNATURE);
         let initial_nonce_account = AccountSharedData::new_data(
             LAMPORTS_PER_SOL,
-            &nonce::state::Versions::new(nonce::State::Initialized(initial_nonce_data.clone())),
+            &nonce::versions::Versions::new(nonce::state::State::Initialized(
+                initial_nonce_data.clone(),
+            )),
             &system_program::id(),
         )
         .unwrap();
@@ -2295,7 +2298,7 @@ fn program_cache_update_tombstone() -> Vec<SvmTestEntry> {
         .push((program_name.to_string(), DEPLOYMENT_SLOT, Some(fee_payer)));
 
     // 0: close a deployed program
-    let instruction = bpf_loader_upgradeable::close_any(
+    let instruction = bpf_loader_upgradeable::instruction::close_any(
         &bpf_loader_upgradeable::get_program_data_address(&program_id),
         &Pubkey::new_unique(),
         Some(&fee_payer),
@@ -2648,7 +2651,8 @@ mod balance_collector {
     use {
         super::*,
         rand0_7::prelude::*,
-        solana_sdk::{bpf_loader, program_pack::Pack},
+        solana_program_pack::Pack,
+        solana_sdk_ids::bpf_loader,
         spl_generic_token::token_2022,
         spl_token::state::{Account as TokenAccount, AccountState as TokenAccountState, Mint},
         test_case::test_case,

+ 13 - 16
svm/tests/mock_bank.rs

@@ -1,14 +1,17 @@
 #![allow(unused)]
 
 #[allow(deprecated)]
-use solana_sdk::sysvar::recent_blockhashes::{Entry as BlockhashesEntry, RecentBlockhashes};
+use solana_sysvar::recent_blockhashes::{Entry as BlockhashesEntry, RecentBlockhashes};
 use {
+    solana_account::{AccountSharedData, ReadableAccount, WritableAccount},
     solana_bpf_loader_program::syscalls::{
         SyscallAbort, SyscallGetClockSysvar, SyscallGetRentSysvar, SyscallInvokeSignedRust,
         SyscallLog, SyscallMemcmp, SyscallMemcpy, SyscallMemmove, SyscallMemset,
         SyscallSetReturnData,
     },
+    solana_clock::{Clock, Slot, UnixTimestamp},
     solana_fee_structure::{FeeDetails, FeeStructure},
+    solana_loader_v3_interface::{self as bpf_loader_upgradeable, state::UpgradeableLoaderState},
     solana_program_runtime::{
         execution_budget::{SVMTransactionExecutionBudget, SVMTransactionExecutionCost},
         invoke_context::InvokeContext,
@@ -18,21 +21,14 @@ use {
             vm::Config,
         },
     },
-    solana_sdk::{
-        account::{AccountSharedData, ReadableAccount, WritableAccount},
-        bpf_loader, bpf_loader_deprecated,
-        bpf_loader_upgradeable::{self, UpgradeableLoaderState},
-        clock::{Clock, UnixTimestamp},
-        compute_budget, loader_v4, native_loader,
-        pubkey::Pubkey,
-        rent::Rent,
-        slot_hashes::Slot,
-        sysvar::SysvarId,
-    },
+    solana_pubkey::Pubkey,
+    solana_rent::Rent,
+    solana_sdk_ids::{bpf_loader, bpf_loader_deprecated, compute_budget, loader_v4},
     solana_svm::transaction_processor::TransactionBatchProcessor,
     solana_svm_callback::{AccountState, InvokeContextCallback, TransactionProcessingCallback},
     solana_svm_feature_set::SVMFeatureSet,
     solana_svm_transaction::svm_message::SVMMessage,
+    solana_sysvar_id::SysvarId,
     solana_type_overrides::sync::{Arc, RwLock},
     std::{
         cmp::Ordering,
@@ -92,7 +88,8 @@ impl TransactionProcessingCallback for MockBankCallback {
     }
 
     fn add_builtin_account(&self, name: &str, program_id: &Pubkey) {
-        let account_data = native_loader::create_loadable_account_with_fields(name, (5000, 0));
+        let account_data =
+            solana_sdk::native_loader::create_loadable_account_with_fields(name, (5000, 0));
 
         self.account_shared_data
             .write()
@@ -222,7 +219,7 @@ pub fn deploy_program_with_upgrade_authority(
     let mut account_data = AccountSharedData::default();
     let buffer = bincode::serialize(&state).unwrap();
     account_data.set_lamports(rent.minimum_balance(buffer.len()));
-    account_data.set_owner(bpf_loader_upgradeable::id());
+    account_data.set_owner(solana_sdk_ids::bpf_loader_upgradeable::id());
     account_data.set_executable(true);
     account_data.set_data(buffer);
     mock_bank
@@ -248,7 +245,7 @@ pub fn deploy_program_with_upgrade_authority(
     header.append(&mut complement);
     header.append(&mut buffer);
     account_data.set_lamports(rent.minimum_balance(header.len()));
-    account_data.set_owner(bpf_loader_upgradeable::id());
+    account_data.set_owner(solana_sdk_ids::bpf_loader_upgradeable::id());
     account_data.set_data(header);
     mock_bank
         .account_shared_data
@@ -269,7 +266,7 @@ pub fn register_builtins(
     let loader_v3_name = "solana_bpf_loader_upgradeable_program";
     batch_processor.add_builtin(
         mock_bank,
-        bpf_loader_upgradeable::id(),
+        solana_sdk_ids::bpf_loader_upgradeable::id(),
         loader_v3_name,
         ProgramCacheEntry::new_builtin(
             DEPLOYMENT_SLOT,

+ 13 - 13
svm/tests/transaction_builder.rs

@@ -1,19 +1,19 @@
 use {
     agave_reserved_account_keys::ReservedAccountKeys,
-    solana_sdk::{
-        hash::Hash,
-        instruction::{AccountMeta, CompiledInstruction},
-        message::{
-            v0::{self, LoadedAddresses, MessageAddressTableLookup},
-            AddressLoader, AddressLoaderError, Message, MessageHeader, VersionedMessage,
-        },
-        pubkey::Pubkey,
-        signature::Signature,
-        transaction::{
-            SanitizedTransaction, SanitizedVersionedTransaction, TransactionError,
-            VersionedTransaction,
-        },
+    solana_hash::Hash,
+    solana_instruction::AccountMeta,
+    solana_message::{
+        compiled_instruction::CompiledInstruction,
+        v0::{self, LoadedAddresses, MessageAddressTableLookup},
+        AddressLoader, AddressLoaderError, Message, MessageHeader, VersionedMessage,
     },
+    solana_pubkey::Pubkey,
+    solana_signature::Signature,
+    solana_transaction::{
+        sanitized::SanitizedTransaction,
+        versioned::{sanitized::SanitizedVersionedTransaction, VersionedTransaction},
+    },
+    solana_transaction_error::TransactionError,
     std::collections::{HashMap, HashSet},
 };
 

+ 17 - 1
test-validator/Cargo.toml

@@ -17,23 +17,39 @@ crossbeam-channel = { workspace = true }
 log = { workspace = true }
 serde_derive = { workspace = true }
 serde_json = { workspace = true }
+solana-account = { workspace = true }
 solana-accounts-db = { workspace = true }
 solana-cli-output = { workspace = true }
+solana-clock = { workspace = true }
+solana-cluster-type = { workspace = true }
+solana-commitment-config = { workspace = true }
 solana-compute-budget = { workspace = true }
 solana-core = { workspace = true }
+solana-epoch-schedule = { workspace = true }
+solana-feature-gate-interface = { workspace = true }
+solana-fee-calculator = { workspace = true }
 solana-geyser-plugin-manager = { workspace = true }
 solana-gossip = { workspace = true }
+solana-instruction = { workspace = true }
+solana-keypair = { workspace = true }
 solana-ledger = { workspace = true }
+solana-loader-v3-interface = { workspace = true }
 solana-logger = "=2.3.1"
+solana-message = { workspace = true }
+solana-native-token = { workspace = true }
 solana-net-utils = { workspace = true }
 solana-program-test = { workspace = true }
+solana-pubkey = { workspace = true }
+solana-rent = { workspace = true }
 solana-rpc = { workspace = true }
 solana-rpc-client = { workspace = true }
 solana-rpc-client-api = { workspace = true }
 solana-runtime = { workspace = true }
-solana-sdk = { version = "=2.2.2", features = ["openssl-vendored"] }
+solana-sdk-ids = { workspace = true }
+solana-signer = { workspace = true }
 solana-streamer = { workspace = true }
 solana-tpu-client = { workspace = true }
+solana-validator-exit = { workspace = true }
 tokio = { workspace = true, features = ["full"] }
 
 [dev-dependencies]

+ 25 - 26
test-validator/src/lib.rs

@@ -4,18 +4,23 @@ use {
     base64::{prelude::BASE64_STANDARD, Engine},
     crossbeam_channel::Receiver,
     log::*,
+    solana_account::{Account, AccountSharedData, ReadableAccount, WritableAccount},
     solana_accounts_db::{
         accounts_db::AccountsDbConfig, accounts_index::AccountsIndexConfig,
         hardened_unpack::MAX_GENESIS_ARCHIVE_UNPACKED_SIZE,
         utils::create_accounts_run_and_snapshot_dirs,
     },
     solana_cli_output::CliAccount,
+    solana_clock::{Slot, DEFAULT_MS_PER_SLOT},
+    solana_commitment_config::CommitmentConfig,
     solana_compute_budget::compute_budget::ComputeBudget,
     solana_core::{
         admin_rpc_post_init::AdminRpcRequestMetadataPostInit,
         consensus::tower_storage::TowerStorage,
         validator::{Validator, ValidatorConfig, ValidatorStartProgress, ValidatorTpuConfig},
     },
+    solana_epoch_schedule::EpochSchedule,
+    solana_fee_calculator::FeeRateGovernor,
     solana_geyser_plugin_manager::{
         geyser_plugin_manager::GeyserPluginManager, GeyserPluginManagerRequest,
     },
@@ -24,11 +29,18 @@ use {
         contact_info::Protocol,
         socketaddr,
     },
+    solana_instruction::{AccountMeta, Instruction},
+    solana_keypair::{read_keypair_file, write_keypair_file, Keypair},
     solana_ledger::{
         blockstore::create_new_ledger, blockstore_options::LedgerColumnOptions,
         create_new_tmp_ledger,
     },
+    solana_loader_v3_interface::state::UpgradeableLoaderState,
+    solana_message::Message,
+    solana_native_token::sol_to_lamports,
     solana_net_utils::PortRange,
+    solana_pubkey::Pubkey,
+    solana_rent::Rent,
     solana_rpc::{rpc::JsonRpcConfig, rpc_pubsub_service::PubSubConfig},
     solana_rpc_client::{nonblocking, rpc_client::RpcClient},
     solana_rpc_client_api::request::MAX_MULTIPLE_ACCOUNTS,
@@ -38,23 +50,10 @@ use {
         runtime_config::RuntimeConfig,
         snapshot_config::SnapshotConfig,
     },
-    solana_sdk::{
-        account::{Account, AccountSharedData, ReadableAccount, WritableAccount},
-        bpf_loader_upgradeable::UpgradeableLoaderState,
-        clock::{Slot, DEFAULT_MS_PER_SLOT},
-        commitment_config::CommitmentConfig,
-        epoch_schedule::EpochSchedule,
-        exit::Exit,
-        fee_calculator::FeeRateGovernor,
-        instruction::{AccountMeta, Instruction},
-        message::Message,
-        native_token::sol_to_lamports,
-        pubkey::Pubkey,
-        rent::Rent,
-        signature::{read_keypair_file, write_keypair_file, Keypair, Signer},
-    },
+    solana_signer::Signer,
     solana_streamer::socket::SocketAddrSpace,
     solana_tpu_client::tpu_client::DEFAULT_TPU_ENABLE_UDP,
+    solana_validator_exit::Exit,
     std::{
         collections::{HashMap, HashSet},
         ffi::OsStr,
@@ -175,7 +174,7 @@ fn try_transform_program_data(
     address: &Pubkey,
     account: &mut AccountSharedData,
 ) -> Result<(), String> {
-    if account.owner() == &solana_sdk::bpf_loader_upgradeable::id() {
+    if account.owner() == &solana_sdk_ids::bpf_loader_upgradeable::id() {
         let programdata_offset = UpgradeableLoaderState::size_of_programdata_metadata();
         let programdata_meta = account.data().get(0..programdata_offset).ok_or(format!(
             "Failed to get upgradeable programdata data from {address}"
@@ -441,7 +440,7 @@ impl TestValidatorGenesis {
                 .for_each(|(maybe_account, feature_id)| {
                     if maybe_account
                         .as_ref()
-                        .and_then(solana_sdk::feature::from_account)
+                        .and_then(solana_feature_gate_interface::from_account)
                         .and_then(|feature| feature.activated_at)
                         .is_none()
                     {
@@ -581,7 +580,7 @@ impl TestValidatorGenesis {
 
         self.upgradeable_programs.push(UpgradeableProgramInfo {
             program_id,
-            loader: solana_sdk::bpf_loader_upgradeable::id(),
+            loader: solana_sdk_ids::bpf_loader_upgradeable::id(),
             upgrade_authority: Pubkey::default(),
             program_path,
         });
@@ -857,7 +856,7 @@ impl TestValidator {
             validator_identity_lamports,
             config.fee_rate_governor.clone(),
             config.rent.clone(),
-            solana_sdk::genesis_config::ClusterType::Development,
+            solana_cluster_type::ClusterType::Development,
             accounts.into_iter().collect(),
         );
         genesis_config.epoch_schedule = config
@@ -1185,7 +1184,7 @@ impl Drop for TestValidator {
 
 #[cfg(test)]
 mod test {
-    use {super::*, solana_sdk::feature::Feature};
+    use {super::*, solana_feature_gate_interface::Feature};
 
     #[test]
     fn get_health() {
@@ -1215,8 +1214,8 @@ mod test {
         let mut control = FeatureSet::default().inactive().clone();
         let mut deactivate_features = Vec::new();
         [
-            solana_sdk::feature_set::deprecate_rewards_sysvar::id(),
-            solana_sdk::feature_set::disable_fees_sysvar::id(),
+            agave_feature_set::deprecate_rewards_sysvar::id(),
+            agave_feature_set::disable_fees_sysvar::id(),
         ]
         .into_iter()
         .for_each(|feature| {
@@ -1256,8 +1255,8 @@ mod test {
 
     #[tokio::test]
     async fn test_override_feature_account() {
-        let with_deactivate_flag = solana_sdk::feature_set::deprecate_rewards_sysvar::id();
-        let without_deactivate_flag = solana_sdk::feature_set::disable_fees_sysvar::id();
+        let with_deactivate_flag = agave_feature_set::deprecate_rewards_sysvar::id();
+        let without_deactivate_flag = agave_feature_set::disable_fees_sysvar::id();
 
         let owner = Pubkey::new_unique();
         let account = || AccountSharedData::new(100_000, 0, &owner);
@@ -1287,7 +1286,7 @@ mod test {
 
         // The second one should be a feature account.
         let feature_account = our_accounts[1].as_ref().unwrap();
-        assert_eq!(feature_account.owner, solana_sdk::feature::id());
+        assert_eq!(feature_account.owner, solana_sdk_ids::feature::id());
         let feature_state: Feature = bincode::deserialize(feature_account.data()).unwrap();
         assert!(feature_state.activated_at.is_some());
     }
@@ -1297,7 +1296,7 @@ mod test {
         let (test_validator, _payer) = TestValidatorGenesis::default()
             .deactivate_features(&[
                 // Don't migrate the stake program.
-                solana_sdk::feature_set::migrate_stake_program_to_core_bpf::id(),
+                agave_feature_set::migrate_stake_program_to_core_bpf::id(),
             ])
             .start_async()
             .await;

+ 14 - 1
tokens/Cargo.toml

@@ -23,10 +23,22 @@ serde_derive = { workspace = true }
 solana-account-decoder = { workspace = true }
 solana-clap-utils = { workspace = true }
 solana-cli-config = { workspace = true }
+solana-clock = { workspace = true }
+solana-commitment-config = { workspace = true }
+solana-hash = { workspace = true }
+solana-instruction = { workspace = true }
+solana-keypair = { workspace = true }
+solana-message = { workspace = true }
+solana-native-token = { workspace = true }
+solana-pubkey = { workspace = true, features = ["rand"] }
 solana-remote-wallet = { workspace = true, features = ["default"] }
 solana-rpc-client = { workspace = true, features = ["default"] }
 solana-rpc-client-api = { workspace = true }
-solana-sdk = "=2.2.2"
+solana-signature = { workspace = true }
+solana-signer = { workspace = true }
+solana-stake-interface = { workspace = true }
+solana-system-interface = { workspace = true }
+solana-transaction = { workspace = true }
 solana-transaction-status = { workspace = true }
 solana-version = { workspace = true }
 spl-associated-token-account = { version = "=7.0.0", features = ["no-entrypoint"] }
@@ -40,3 +52,4 @@ bincode = { workspace = true }
 solana-logger = { workspace = true }
 solana-streamer = { workspace = true }
 solana-test-validator = { workspace = true }
+solana-transaction-error = { workspace = true }

+ 1 - 1
tokens/src/arg_parser.rs

@@ -12,8 +12,8 @@ use {
         keypair::{pubkey_from_path, signer_from_path},
     },
     solana_cli_config::CONFIG_FILE,
+    solana_native_token::sol_to_lamports,
     solana_remote_wallet::remote_wallet::maybe_wallet_manager,
-    solana_sdk::native_token::sol_to_lamports,
     std::{error::Error, ffi::OsString, process::exit},
 };
 

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio