From 1634eb74afe1b8663f2569680068f3df5a045542 Mon Sep 17 00:00:00 2001 From: Pankaj Garg Date: Tue, 6 Feb 2024 14:00:09 -0800 Subject: [PATCH] add/update Cargo.toml and update dependencies --- Cargo.lock | 28 +++++++++++++ Cargo.toml | 2 + core/Cargo.toml | 1 + core/src/banking_stage/consume_worker.rs | 3 +- core/src/banking_stage/consumer.rs | 6 +-- core/src/banking_stage/leader_slot_metrics.rs | 2 +- .../scheduler_controller.rs | 5 +-- .../unprocessed_transaction_storage.rs | 3 +- core/src/validator.rs | 2 +- core/tests/epoch_accounts_hash.rs | 2 +- core/tests/snapshots.rs | 2 +- ledger-tool/Cargo.toml | 1 + ledger-tool/src/args.rs | 2 +- ledger/Cargo.toml | 1 + ledger/src/blockstore_processor.rs | 2 +- program-test/Cargo.toml | 1 + program-test/src/lib.rs | 2 +- programs/sbf/Cargo.lock | 26 ++++++++++++ runtime/Cargo.toml | 1 + runtime/src/bank.rs | 16 +++---- runtime/src/bank/fee_distribution.rs | 2 +- runtime/src/bank/serde_snapshot.rs | 2 +- runtime/src/bank/tests.rs | 9 ++-- runtime/src/lib.rs | 1 - runtime/src/serde_snapshot.rs | 2 +- runtime/src/snapshot_bank_utils.rs | 2 +- svm/Cargo.toml | 42 +++++++++++++++++++ svm/build.rs | 1 + svm/src/account_loader.rs | 4 +- svm/src/account_rent_state.rs | 2 +- svm/src/{mod.rs => lib.rs} | 9 ++++ svm/src/transaction_account_state_info.rs | 6 +-- svm/src/transaction_processor.rs | 2 +- test-validator/Cargo.toml | 1 + test-validator/src/lib.rs | 3 +- validator/Cargo.toml | 1 + validator/src/main.rs | 2 +- 37 files changed, 157 insertions(+), 42 deletions(-) create mode 100644 svm/Cargo.toml create mode 120000 svm/build.rs rename svm/src/{mod.rs => lib.rs} (50%) diff --git a/Cargo.lock b/Cargo.lock index 69ad4b3411c709..1409037320f776 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5924,6 +5924,7 @@ dependencies = [ "solana-send-transaction-service", "solana-stake-program", "solana-streamer", + "solana-svm", "solana-tpu-client", "solana-transaction-status", "solana-turbine", @@ -6328,6 +6329,7 @@ dependencies = [ "solana-stake-program", "solana-storage-bigtable", "solana-storage-proto", + "solana-svm", "solana-transaction-status", "solana-vote", "solana-vote-program", @@ -6386,6 +6388,7 @@ dependencies = [ "solana-stake-program", "solana-storage-bigtable", "solana-streamer", + "solana-svm", "solana-transaction-status", "solana-unified-scheduler-pool", "solana-version", @@ -6743,6 +6746,7 @@ dependencies = [ "solana-runtime", "solana-sdk", "solana-stake-program", + "solana-svm", "solana-vote-program", "solana_rbpf", "test-case", @@ -7046,6 +7050,7 @@ dependencies = [ "solana-runtime", "solana-sdk", "solana-stake-program", + "solana-svm", "solana-system-program", "solana-version", "solana-vote", @@ -7291,6 +7296,27 @@ dependencies = [ "x509-parser", ] +[[package]] +name = "solana-svm" +version = "1.18.0" +dependencies = [ + "itertools", + "log", + "percentage", + "rustc_version 0.4.0", + "solana-accounts-db", + "solana-bpf-loader-program", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-loader-v4-program", + "solana-logger", + "solana-measure", + "solana-metrics", + "solana-program-runtime", + "solana-sdk", + "solana-system-program", +] + [[package]] name = "solana-system-program" version = "1.18.0" @@ -7331,6 +7357,7 @@ dependencies = [ "solana-runtime", "solana-sdk", "solana-streamer", + "solana-svm", "solana-tpu-client", "tokio", ] @@ -7589,6 +7616,7 @@ dependencies = [ "solana-send-transaction-service", "solana-storage-bigtable", "solana-streamer", + "solana-svm", "solana-test-validator", "solana-tpu-client", "solana-version", diff --git a/Cargo.toml b/Cargo.toml index 52e342089375f9..64a64e58ddb31e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -100,6 +100,7 @@ members = [ "storage-bigtable/build-proto", "storage-proto", "streamer", + "svm", "test-validator", "thin-client", "tokens", @@ -373,6 +374,7 @@ solana-stake-program = { path = "programs/stake", version = "=1.18.0" } solana-storage-bigtable = { path = "storage-bigtable", version = "=1.18.0" } solana-storage-proto = { path = "storage-proto", version = "=1.18.0" } solana-streamer = { path = "streamer", version = "=1.18.0" } +solana-svm = { path = "svm", version = "=1.18.0" } solana-system-program = { path = "programs/system", version = "=1.18.0" } solana-test-validator = { path = "test-validator", version = "=1.18.0" } solana-thin-client = { path = "thin-client", version = "=1.18.0" } diff --git a/core/Cargo.toml b/core/Cargo.toml index fa6c7cd2052aea..e2a936cdabc4c1 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -65,6 +65,7 @@ solana-runtime = { workspace = true } solana-sdk = { workspace = true } solana-send-transaction-service = { workspace = true } solana-streamer = { workspace = true } +solana-svm = { workspace = true } solana-tpu-client = { workspace = true } solana-transaction-status = { workspace = true } solana-turbine = { workspace = true } diff --git a/core/src/banking_stage/consume_worker.rs b/core/src/banking_stage/consume_worker.rs index 930a9e8a47d605..92fb07ddfab18c 100644 --- a/core/src/banking_stage/consume_worker.rs +++ b/core/src/banking_stage/consume_worker.rs @@ -6,8 +6,9 @@ use { }, crossbeam_channel::{Receiver, RecvError, SendError, Sender}, solana_poh::leader_bank_notifier::LeaderBankNotifier, - solana_runtime::{bank::Bank, svm::transaction_error_metrics::TransactionErrorMetrics}, + solana_runtime::bank::Bank, solana_sdk::timing::AtomicInterval, + solana_svm::transaction_error_metrics::TransactionErrorMetrics, std::{ sync::{ atomic::{AtomicBool, AtomicU64, AtomicUsize, Ordering}, diff --git a/core/src/banking_stage/consumer.rs b/core/src/banking_stage/consumer.rs index 526acb57700964..01432baa447793 100644 --- a/core/src/banking_stage/consumer.rs +++ b/core/src/banking_stage/consumer.rs @@ -22,9 +22,6 @@ use { solana_runtime::{ bank::{Bank, LoadAndExecuteTransactionsOutput}, compute_budget_details::GetComputeBudgetDetails, - svm::{ - account_loader::validate_fee_payer, transaction_error_metrics::TransactionErrorMetrics, - }, transaction_batch::TransactionBatch, }, solana_sdk::{ @@ -35,6 +32,9 @@ use { timing::timestamp, transaction::{self, AddressLoader, SanitizedTransaction, TransactionError}, }, + solana_svm::{ + account_loader::validate_fee_payer, transaction_error_metrics::TransactionErrorMetrics, + }, std::{ sync::{atomic::Ordering, Arc}, time::Instant, diff --git a/core/src/banking_stage/leader_slot_metrics.rs b/core/src/banking_stage/leader_slot_metrics.rs index 33b6e7a55a631f..88ea6b5ee340cf 100644 --- a/core/src/banking_stage/leader_slot_metrics.rs +++ b/core/src/banking_stage/leader_slot_metrics.rs @@ -6,8 +6,8 @@ use { }, }, solana_poh::poh_recorder::BankStart, - solana_runtime::svm::transaction_error_metrics::*, solana_sdk::{clock::Slot, saturating_add_assign}, + solana_svm::transaction_error_metrics::*, std::time::Instant, }; diff --git a/core/src/banking_stage/transaction_scheduler/scheduler_controller.rs b/core/src/banking_stage/transaction_scheduler/scheduler_controller.rs index df58ccdaa3a6fa..aaf2753597b8ea 100644 --- a/core/src/banking_stage/transaction_scheduler/scheduler_controller.rs +++ b/core/src/banking_stage/transaction_scheduler/scheduler_controller.rs @@ -20,13 +20,12 @@ use { itertools::MinMaxResult, solana_cost_model::cost_model::CostModel, solana_measure::measure_us, - solana_runtime::{ - bank::Bank, bank_forks::BankForks, svm::transaction_error_metrics::TransactionErrorMetrics, - }, + solana_runtime::{bank::Bank, bank_forks::BankForks}, solana_sdk::{ clock::MAX_PROCESSING_AGE, saturating_add_assign, timing::AtomicInterval, transaction::SanitizedTransaction, }, + solana_svm::transaction_error_metrics::TransactionErrorMetrics, std::{ sync::{Arc, RwLock}, time::Duration, diff --git a/core/src/banking_stage/unprocessed_transaction_storage.rs b/core/src/banking_stage/unprocessed_transaction_storage.rs index 65a5b09f9667ac..adfb11f0b28fc2 100644 --- a/core/src/banking_stage/unprocessed_transaction_storage.rs +++ b/core/src/banking_stage/unprocessed_transaction_storage.rs @@ -18,11 +18,12 @@ use { itertools::Itertools, min_max_heap::MinMaxHeap, solana_measure::{measure, measure_us}, - solana_runtime::{bank::Bank, svm::transaction_error_metrics::TransactionErrorMetrics}, + solana_runtime::bank::Bank, solana_sdk::{ clock::FORWARD_TRANSACTIONS_TO_LEADER_AT_SLOT_OFFSET, feature_set::FeatureSet, hash::Hash, saturating_add_assign, transaction::SanitizedTransaction, }, + solana_svm::transaction_error_metrics::TransactionErrorMetrics, std::{ collections::HashMap, sync::{atomic::Ordering, Arc}, diff --git a/core/src/validator.rs b/core/src/validator.rs index aed2731b5298dc..a90044881ee458 100644 --- a/core/src/validator.rs +++ b/core/src/validator.rs @@ -101,7 +101,6 @@ use { snapshot_config::SnapshotConfig, snapshot_hash::StartingSnapshotHashes, snapshot_utils::{self, clean_orphaned_account_snapshot_dirs}, - svm::runtime_config::RuntimeConfig, }, solana_sdk::{ clock::Slot, @@ -116,6 +115,7 @@ use { }, solana_send_transaction_service::send_transaction_service, solana_streamer::{socket::SocketAddrSpace, streamer::StakedNodes}, + solana_svm::runtime_config::RuntimeConfig, solana_turbine::{self, broadcast_stage::BroadcastStageType}, solana_unified_scheduler_pool::DefaultSchedulerPool, solana_vote_program::vote_state, diff --git a/core/tests/epoch_accounts_hash.rs b/core/tests/epoch_accounts_hash.rs index af9c93ba147241..b0dd111676af79 100755 --- a/core/tests/epoch_accounts_hash.rs +++ b/core/tests/epoch_accounts_hash.rs @@ -27,7 +27,6 @@ use { snapshot_bank_utils, snapshot_config::SnapshotConfig, snapshot_utils, - svm::runtime_config::RuntimeConfig, }, solana_sdk::{ clock::Slot, @@ -39,6 +38,7 @@ use { timing::timestamp, }, solana_streamer::socket::SocketAddrSpace, + solana_svm::runtime_config::RuntimeConfig, std::{ mem::ManuallyDrop, sync::{ diff --git a/core/tests/snapshots.rs b/core/tests/snapshots.rs index 7aee26a742b79a..2694f7294a7217 100644 --- a/core/tests/snapshots.rs +++ b/core/tests/snapshots.rs @@ -35,7 +35,6 @@ use { SnapshotVersion::{self, V1_2_0}, }, status_cache::MAX_CACHE_ENTRIES, - svm::runtime_config::RuntimeConfig, }, solana_sdk::{ clock::Slot, @@ -50,6 +49,7 @@ use { timing::timestamp, }, solana_streamer::socket::SocketAddrSpace, + solana_svm::runtime_config::RuntimeConfig, std::{ collections::HashSet, fs, diff --git a/ledger-tool/Cargo.toml b/ledger-tool/Cargo.toml index ddc1ca9b564e94..6da42940a4ba7f 100644 --- a/ledger-tool/Cargo.toml +++ b/ledger-tool/Cargo.toml @@ -44,6 +44,7 @@ solana-sdk = { workspace = true } solana-stake-program = { workspace = true } solana-storage-bigtable = { workspace = true } solana-streamer = { workspace = true } +solana-svm = { workspace = true } solana-transaction-status = { workspace = true } solana-unified-scheduler-pool = { workspace = true } solana-version = { workspace = true } diff --git a/ledger-tool/src/args.rs b/ledger-tool/src/args.rs index 7ea5bed687f1a5..80ea6f9715bf35 100644 --- a/ledger-tool/src/args.rs +++ b/ledger-tool/src/args.rs @@ -12,8 +12,8 @@ use { blockstore_processor::ProcessOptions, use_snapshot_archives_at_startup::{self, UseSnapshotArchivesAtStartup}, }, - solana_runtime::svm::runtime_config::RuntimeConfig, solana_sdk::clock::Slot, + solana_svm::runtime_config::RuntimeConfig, std::{ collections::HashSet, path::{Path, PathBuf}, diff --git a/ledger/Cargo.toml b/ledger/Cargo.toml index 87ba0c39235a12..7665428981ed82 100644 --- a/ledger/Cargo.toml +++ b/ledger/Cargo.toml @@ -54,6 +54,7 @@ solana-sdk = { workspace = true } solana-stake-program = { workspace = true } solana-storage-bigtable = { workspace = true } solana-storage-proto = { workspace = true } +solana-svm = { workspace = true } solana-transaction-status = { workspace = true } solana-vote = { workspace = true } solana-vote-program = { workspace = true } diff --git a/ledger/src/blockstore_processor.rs b/ledger/src/blockstore_processor.rs index c30a3742f25662..ee66f697eb705a 100644 --- a/ledger/src/blockstore_processor.rs +++ b/ledger/src/blockstore_processor.rs @@ -41,7 +41,6 @@ use { commitment::VOTE_THRESHOLD_SIZE, installed_scheduler_pool::BankWithScheduler, prioritization_fee_cache::PrioritizationFeeCache, - svm::runtime_config::RuntimeConfig, transaction_batch::TransactionBatch, }, solana_sdk::{ @@ -58,6 +57,7 @@ use { VersionedTransaction, }, }, + solana_svm::runtime_config::RuntimeConfig, solana_transaction_status::token_balances::TransactionTokenBalancesSet, solana_vote::{vote_account::VoteAccountsHashMap, vote_sender_types::ReplayVoteSender}, std::{ diff --git a/program-test/Cargo.toml b/program-test/Cargo.toml index c4ab4507b27eae..b8b4fcdb332a09 100644 --- a/program-test/Cargo.toml +++ b/program-test/Cargo.toml @@ -26,6 +26,7 @@ solana-logger = { workspace = true } solana-program-runtime = { workspace = true } solana-runtime = { workspace = true } solana-sdk = { workspace = true } +solana-svm = { workspace = true } solana-vote-program = { workspace = true } solana_rbpf = { workspace = true } test-case = { workspace = true } diff --git a/program-test/src/lib.rs b/program-test/src/lib.rs index 09c55fe793efba..20b9f5806e29c3 100644 --- a/program-test/src/lib.rs +++ b/program-test/src/lib.rs @@ -25,7 +25,6 @@ use { bank_forks::BankForks, commitment::BlockCommitmentCache, genesis_utils::{create_genesis_config_with_leader_ex, GenesisConfigInfo}, - svm::runtime_config::RuntimeConfig, }, solana_sdk::{ account::{create_account_shared_data_for_test, Account, AccountSharedData}, @@ -46,6 +45,7 @@ use { stable_layout::stable_instruction::StableInstruction, sysvar::{Sysvar, SysvarId}, }, + solana_svm::runtime_config::RuntimeConfig, solana_vote_program::vote_state::{self, VoteState, VoteStateVersions}, std::{ cell::RefCell, diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index 016c30266ba038..fa0abfb607c3ea 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -4972,6 +4972,7 @@ dependencies = [ "solana-sdk", "solana-send-transaction-service", "solana-streamer", + "solana-svm", "solana-tpu-client", "solana-transaction-status", "solana-turbine", @@ -5243,6 +5244,7 @@ dependencies = [ "solana-stake-program", "solana-storage-bigtable", "solana-storage-proto", + "solana-svm", "solana-transaction-status", "solana-vote", "solana-vote-program", @@ -5476,6 +5478,7 @@ dependencies = [ "solana-program-runtime", "solana-runtime", "solana-sdk", + "solana-svm", "solana-vote-program", "solana_rbpf", "test-case", @@ -5724,6 +5727,7 @@ dependencies = [ "solana-rayon-threadlimit", "solana-sdk", "solana-stake-program", + "solana-svm", "solana-system-program", "solana-version", "solana-vote", @@ -6334,6 +6338,26 @@ dependencies = [ "x509-parser", ] +[[package]] +name = "solana-svm" +version = "1.18.0" +dependencies = [ + "itertools", + "log", + "percentage", + "rustc_version", + "solana-accounts-db", + "solana-bpf-loader-program", + "solana-frozen-abi", + "solana-frozen-abi-macro", + "solana-loader-v4-program", + "solana-measure", + "solana-metrics", + "solana-program-runtime", + "solana-sdk", + "solana-system-program", +] + [[package]] name = "solana-system-program" version = "1.18.0" @@ -6372,6 +6396,7 @@ dependencies = [ "solana-runtime", "solana-sdk", "solana-streamer", + "solana-svm", "solana-tpu-client", "tokio", ] @@ -6557,6 +6582,7 @@ dependencies = [ "solana-send-transaction-service", "solana-storage-bigtable", "solana-streamer", + "solana-svm", "solana-test-validator", "solana-tpu-client", "solana-version", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 355c858597895f..b14ffab2076ca3 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -64,6 +64,7 @@ solana-program-runtime = { workspace = true } solana-rayon-threadlimit = { workspace = true } solana-sdk = { workspace = true } solana-stake-program = { workspace = true } +solana-svm = { workspace = true } solana-system-program = { workspace = true } solana-version = { workspace = true } solana-vote = { workspace = true } diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index d035eb773fc3bf..eb040b3b79cade 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -58,14 +58,6 @@ use { }, stakes::{InvalidCacheEntryReason, Stakes, StakesCache, StakesEnum}, status_cache::{SlotDelta, StatusCache}, - svm::{ - account_overrides::AccountOverrides, - runtime_config::RuntimeConfig, - transaction_error_metrics::TransactionErrorMetrics, - transaction_processor::{ - TransactionBatchProcessor, TransactionLogMessages, TransactionProcessingCallback, - }, - }, transaction_batch::TransactionBatch, }, byteorder::{ByteOrder, LittleEndian}, @@ -168,6 +160,14 @@ use { solana_stake_program::stake_state::{ self, InflationPointCalculationEvent, PointValue, StakeStateV2, }, + solana_svm::{ + account_overrides::AccountOverrides, + runtime_config::RuntimeConfig, + transaction_error_metrics::TransactionErrorMetrics, + transaction_processor::{ + TransactionBatchProcessor, TransactionLogMessages, TransactionProcessingCallback, + }, + }, solana_system_program::{get_system_account_kind, SystemAccountKind}, solana_vote::vote_account::{VoteAccount, VoteAccounts, VoteAccountsHashMap}, solana_vote_program::vote_state::VoteState, diff --git a/runtime/src/bank/fee_distribution.rs b/runtime/src/bank/fee_distribution.rs index 85d68c07fd7448..fc6d16f3b5683d 100644 --- a/runtime/src/bank/fee_distribution.rs +++ b/runtime/src/bank/fee_distribution.rs @@ -1,6 +1,5 @@ use { super::Bank, - crate::svm::account_rent_state::RentState, log::{debug, warn}, solana_accounts_db::stake_rewards::RewardInfo, solana_sdk::{ @@ -9,6 +8,7 @@ use { reward_type::RewardType, system_program, }, + solana_svm::account_rent_state::RentState, solana_vote::vote_account::VoteAccountsHashMap, std::{result::Result, sync::atomic::Ordering::Relaxed}, thiserror::Error, diff --git a/runtime/src/bank/serde_snapshot.rs b/runtime/src/bank/serde_snapshot.rs index 7a3c1a2c62439a..ba2f24c553ceef 100644 --- a/runtime/src/bank/serde_snapshot.rs +++ b/runtime/src/bank/serde_snapshot.rs @@ -17,7 +17,6 @@ mod tests { StorageAndNextAppendVecId, BANK_SNAPSHOT_PRE_FILENAME_EXTENSION, }, status_cache::StatusCache, - svm::runtime_config::RuntimeConfig, }, assert_matches::assert_matches, solana_accounts_db::{ @@ -39,6 +38,7 @@ mod tests { pubkey::Pubkey, signature::{Keypair, Signer}, }, + solana_svm::runtime_config::RuntimeConfig, std::{ io::{Cursor, Read, Write}, num::NonZeroUsize, diff --git a/runtime/src/bank/tests.rs b/runtime/src/bank/tests.rs index 75d4a244639304..7a0c8336a78ff4 100644 --- a/runtime/src/bank/tests.rs +++ b/runtime/src/bank/tests.rs @@ -18,11 +18,6 @@ use { }, snapshot_bank_utils, snapshot_utils, status_cache::MAX_CACHE_ENTRIES, - svm::{ - account_loader::load_accounts, - transaction_account_state_info::TransactionAccountStateInfo, - transaction_error_metrics::TransactionErrorMetrics, - }, }, assert_matches::assert_matches, crossbeam_channel::{bounded, unbounded}, @@ -113,6 +108,10 @@ use { transaction_context::{TransactionAccount, TransactionContext}, }, solana_stake_program::stake_state::{self, StakeStateV2}, + solana_svm::{ + account_loader::load_accounts, transaction_account_state_info::TransactionAccountStateInfo, + transaction_error_metrics::TransactionErrorMetrics, + }, solana_vote_program::{ vote_instruction, vote_state::{ diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index ba6ca17d427931..fac4169301004d 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -36,7 +36,6 @@ pub mod stake_weighted_timestamp; pub mod stakes; pub mod static_ids; pub mod status_cache; -pub mod svm; pub mod transaction_batch; #[macro_use] diff --git a/runtime/src/serde_snapshot.rs b/runtime/src/serde_snapshot.rs index b9f8300e400789..e38ea904686b40 100644 --- a/runtime/src/serde_snapshot.rs +++ b/runtime/src/serde_snapshot.rs @@ -8,7 +8,6 @@ use { self, SnapshotError, StorageAndNextAppendVecId, BANK_SNAPSHOT_PRE_FILENAME_EXTENSION, }, stakes::Stakes, - svm::runtime_config::RuntimeConfig, }, bincode::{self, config::Options, Error}, log::*, @@ -40,6 +39,7 @@ use { inflation::Inflation, pubkey::Pubkey, }, + solana_svm::runtime_config::RuntimeConfig, std::{ collections::{HashMap, HashSet}, io::{self, BufReader, BufWriter, Read, Write}, diff --git a/runtime/src/snapshot_bank_utils.rs b/runtime/src/snapshot_bank_utils.rs index d932ab8408fdb4..dfeda8e59e0fe1 100644 --- a/runtime/src/snapshot_bank_utils.rs +++ b/runtime/src/snapshot_bank_utils.rs @@ -23,7 +23,6 @@ use { UnpackedSnapshotsDirAndVersion, VerifySlotDeltasError, }, status_cache, - svm::runtime_config::RuntimeConfig, }, bincode::{config::Options, serialize_into}, log::*, @@ -46,6 +45,7 @@ use { pubkey::Pubkey, slot_history::{Check, SlotHistory}, }, + solana_svm::runtime_config::RuntimeConfig, std::{ collections::HashSet, fs, diff --git a/svm/Cargo.toml b/svm/Cargo.toml new file mode 100644 index 00000000000000..3342d087f232b7 --- /dev/null +++ b/svm/Cargo.toml @@ -0,0 +1,42 @@ +[package] +name = "solana-svm" +description = "Solana SVM" +documentation = "https://docs.rs/solana-svm" +version = { workspace = true } +authors = { workspace = true } +repository = { workspace = true } +homepage = { workspace = true } +license = { workspace = true } +edition = { workspace = true } + +[dependencies] +itertools = { workspace = true } +log = { workspace = true } +percentage = { workspace = true } +solana-accounts-db = { workspace = true } +solana-bpf-loader-program = { workspace = true } +solana-frozen-abi = { workspace = true } +solana-frozen-abi-macro = { workspace = true } +solana-loader-v4-program = { workspace = true } +solana-measure = { workspace = true } +solana-metrics = { workspace = true } +solana-program-runtime = { workspace = true } +solana-sdk = { workspace = true } +solana-system-program = { workspace = true } + +[lib] +crate-type = ["lib"] +name = "solana_svm" + +[dev-dependencies] +solana-logger = { workspace = true } +solana-sdk = { workspace = true, features = ["dev-context-only-utils"] } + +[package.metadata.docs.rs] +targets = ["x86_64-unknown-linux-gnu"] + +[build-dependencies] +rustc_version = { workspace = true } + +[features] +dev-context-only-utils = [] diff --git a/svm/build.rs b/svm/build.rs new file mode 120000 index 00000000000000..ae66c237c5f4fd --- /dev/null +++ b/svm/build.rs @@ -0,0 +1 @@ +../frozen-abi/build.rs \ No newline at end of file diff --git a/svm/src/account_loader.rs b/svm/src/account_loader.rs index 19f59992410bf3..f945672169ca88 100644 --- a/svm/src/account_loader.rs +++ b/svm/src/account_loader.rs @@ -1,5 +1,5 @@ use { - crate::svm::{ + crate::{ account_overrides::AccountOverrides, account_rent_state::RentState, transaction_error_metrics::TransactionErrorMetrics, transaction_processor::TransactionProcessingCallback, @@ -38,7 +38,7 @@ use { std::{collections::HashMap, num::NonZeroUsize}, }; -pub(crate) fn load_accounts( +pub fn load_accounts( callbacks: &CB, txs: &[SanitizedTransaction], lock_results: &[TransactionCheckResult], diff --git a/svm/src/account_rent_state.rs b/svm/src/account_rent_state.rs index 3fc71ac6a27686..38cda820f8ceb7 100644 --- a/svm/src/account_rent_state.rs +++ b/svm/src/account_rent_state.rs @@ -10,7 +10,7 @@ use { }; #[derive(Debug, PartialEq, Eq)] -pub(crate) enum RentState { +pub enum RentState { /// account.lamports == 0 Uninitialized, /// 0 < account.lamports < rent-exempt-minimum diff --git a/svm/src/mod.rs b/svm/src/lib.rs similarity index 50% rename from svm/src/mod.rs rename to svm/src/lib.rs index 441989781dcf9c..ff28128edca36d 100644 --- a/svm/src/mod.rs +++ b/svm/src/lib.rs @@ -1,3 +1,6 @@ +#![cfg_attr(RUSTC_WITH_SPECIALIZATION, feature(min_specialization))] +#![allow(clippy::arithmetic_side_effects)] + pub mod account_loader; pub mod account_overrides; pub mod account_rent_state; @@ -5,3 +8,9 @@ pub mod runtime_config; pub mod transaction_account_state_info; pub mod transaction_error_metrics; pub mod transaction_processor; + +#[macro_use] +extern crate solana_metrics; + +#[macro_use] +extern crate solana_frozen_abi_macro; diff --git a/svm/src/transaction_account_state_info.rs b/svm/src/transaction_account_state_info.rs index 48a6a63994e341..02d6f0228de2a7 100644 --- a/svm/src/transaction_account_state_info.rs +++ b/svm/src/transaction_account_state_info.rs @@ -1,5 +1,5 @@ use { - crate::svm::account_rent_state::RentState, + crate::account_rent_state::RentState, solana_sdk::{ account::ReadableAccount, message::SanitizedMessage, @@ -10,12 +10,12 @@ use { }, }; -pub(crate) struct TransactionAccountStateInfo { +pub struct TransactionAccountStateInfo { rent_state: Option, // None: readonly account } impl TransactionAccountStateInfo { - pub(crate) fn new( + pub fn new( rent: &Rent, transaction_context: &TransactionContext, message: &SanitizedMessage, diff --git a/svm/src/transaction_processor.rs b/svm/src/transaction_processor.rs index 9768fb40e803da..f16891a85fb8b2 100644 --- a/svm/src/transaction_processor.rs +++ b/svm/src/transaction_processor.rs @@ -1,5 +1,5 @@ use { - crate::svm::{ + crate::{ account_loader::load_accounts, account_overrides::AccountOverrides, runtime_config::RuntimeConfig, transaction_account_state_info::TransactionAccountStateInfo, transaction_error_metrics::TransactionErrorMetrics, diff --git a/test-validator/Cargo.toml b/test-validator/Cargo.toml index 60f299d01e58a0..2bc8deb5fc200e 100644 --- a/test-validator/Cargo.toml +++ b/test-validator/Cargo.toml @@ -32,6 +32,7 @@ solana-rpc-client = { workspace = true } solana-runtime = { workspace = true } solana-sdk = { workspace = true } solana-streamer = { workspace = true } +solana-svm = { workspace = true } solana-tpu-client = { workspace = true } tokio = { workspace = true, features = ["full"] } diff --git a/test-validator/src/lib.rs b/test-validator/src/lib.rs index 270e8d9d816ffe..c658b53305bf74 100644 --- a/test-validator/src/lib.rs +++ b/test-validator/src/lib.rs @@ -34,7 +34,7 @@ use { solana_rpc_client::{nonblocking, rpc_client::RpcClient}, solana_runtime::{ bank_forks::BankForks, genesis_utils::create_genesis_config_with_leader_ex, - snapshot_config::SnapshotConfig, svm::runtime_config::RuntimeConfig, + snapshot_config::SnapshotConfig, }, solana_sdk::{ account::{Account, AccountSharedData}, @@ -54,6 +54,7 @@ use { signature::{read_keypair_file, write_keypair_file, Keypair, Signer}, }, solana_streamer::socket::SocketAddrSpace, + solana_svm::runtime_config::RuntimeConfig, solana_tpu_client::tpu_client::{ DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_ENABLE_UDP, DEFAULT_TPU_USE_QUIC, }, diff --git a/validator/Cargo.toml b/validator/Cargo.toml index 6c7f691c27b5fa..4028221cd7ce68 100644 --- a/validator/Cargo.toml +++ b/validator/Cargo.toml @@ -58,6 +58,7 @@ solana-sdk = { workspace = true } solana-send-transaction-service = { workspace = true } solana-storage-bigtable = { workspace = true } solana-streamer = { workspace = true } +solana-svm = { workspace = true } solana-test-validator = { workspace = true } solana-tpu-client = { workspace = true } solana-version = { workspace = true } diff --git a/validator/src/main.rs b/validator/src/main.rs index 0cff3139a9d22c..56b17e5d29c32e 100644 --- a/validator/src/main.rs +++ b/validator/src/main.rs @@ -48,7 +48,6 @@ use { snapshot_bank_utils::DISABLED_SNAPSHOT_ARCHIVE_INTERVAL, snapshot_config::{SnapshotConfig, SnapshotUsage}, snapshot_utils::{self, ArchiveFormat, SnapshotVersion}, - svm::runtime_config::RuntimeConfig, }, solana_sdk::{ clock::{Slot, DEFAULT_S_PER_SLOT}, @@ -59,6 +58,7 @@ use { }, solana_send_transaction_service::send_transaction_service, solana_streamer::socket::SocketAddrSpace, + solana_svm::runtime_config::RuntimeConfig, solana_tpu_client::tpu_client::DEFAULT_TPU_ENABLE_UDP, solana_validator::{ admin_rpc_service,