From 95ee9c1c6ca1e2bc83693b51332ffabad2f657df Mon Sep 17 00:00:00 2001 From: Alessandro Decina Date: Tue, 5 Nov 2024 23:39:16 +0700 Subject: [PATCH 01/33] svm: introduce filter_executable_us metric (#3472) (#3482) Split the time taken by filter_executable_accounts() outside of program_cache_us. Filtering takes a considerable amount of time because account_matches_owners is pretty slow. --- svm/src/transaction_processor.rs | 12 ++++++++---- timings/src/lib.rs | 8 ++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/svm/src/transaction_processor.rs b/svm/src/transaction_processor.rs index 7b54dfbf878297..551ff30076252d 100644 --- a/svm/src/transaction_processor.rs +++ b/svm/src/transaction_processor.rs @@ -278,13 +278,15 @@ impl TransactionBatchProcessor { &mut error_metrics )); - let (mut program_cache_for_tx_batch, program_cache_us) = measure_us!({ - let mut program_accounts_map = Self::filter_executable_program_accounts( + let (mut program_accounts_map, filter_executable_us) = + measure_us!(Self::filter_executable_program_accounts( callbacks, sanitized_txs, &validation_results, - PROGRAM_OWNERS, - ); + PROGRAM_OWNERS + )); + + let (mut program_cache_for_tx_batch, program_cache_us) = measure_us!({ for builtin_program in self.builtin_program_ids.read().unwrap().iter() { program_accounts_map.insert(*builtin_program, 0); } @@ -384,6 +386,8 @@ impl TransactionBatchProcessor { execute_timings .saturating_add_in_place(ExecuteTimingType::ValidateFeesUs, validate_fees_us); + execute_timings + .saturating_add_in_place(ExecuteTimingType::FilterExecutableUs, filter_executable_us); execute_timings .saturating_add_in_place(ExecuteTimingType::ProgramCacheUs, program_cache_us); execute_timings.saturating_add_in_place(ExecuteTimingType::LoadUs, load_accounts_us); diff --git a/timings/src/lib.rs b/timings/src/lib.rs index 46878559eb25cc..2cd7a498040de9 100644 --- a/timings/src/lib.rs +++ b/timings/src/lib.rs @@ -57,6 +57,7 @@ pub enum ExecuteTimingType { UpdateTransactionStatuses, ProgramCacheUs, CheckBlockLimitsUs, + FilterExecutableUs, } pub struct Metrics([u64; ExecuteTimingType::CARDINALITY]); @@ -107,6 +108,13 @@ eager_macro_rules! { $eager_1 .index(ExecuteTimingType::ValidateFeesUs), i64 ), + ( + "filter_executable_us", + *$self + .metrics + .index(ExecuteTimingType::FilterExecutableUs), + i64 + ), ( "program_cache_us", *$self From c1bddce28616c84c5513c610e5cfbd79ff2329d7 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 7 Nov 2024 15:48:28 +0100 Subject: [PATCH 02/33] v2.1: make new_from_bank to be only for tests (backport of #3455) (#3484) make new_from_bank to be only for tests (#3455) * make new_from_bank to be only for tests * moved unnecessary use to cfg(test) * remove new line which breaks checks (cherry picked from commit 4e7f7f76f453e126b171c800bbaca2cb28637535) Co-authored-by: kirill lykov --- rpc/src/rpc.rs | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/rpc/src/rpc.rs b/rpc/src/rpc.rs index 40bd47f71c0e16..b8acc07a860620 100644 --- a/rpc/src/rpc.rs +++ b/rpc/src/rpc.rs @@ -20,11 +20,11 @@ use { accounts::AccountAddressFilter, accounts_index::{AccountIndex, AccountSecondaryIndexes, IndexKey, ScanConfig}, }, - solana_client::connection_cache::{ConnectionCache, Protocol}, + solana_client::connection_cache::Protocol, solana_entry::entry::Entry, solana_faucet::faucet::request_airdrop_transaction, solana_feature_set as feature_set, - solana_gossip::{cluster_info::ClusterInfo, contact_info::ContactInfo}, + solana_gossip::cluster_info::ClusterInfo, solana_inline_spl::{ token::{SPL_TOKEN_ACCOUNT_MINT_OFFSET, SPL_TOKEN_ACCOUNT_OWNER_OFFSET}, token_2022::{self, ACCOUNTTYPE_ACCOUNT}, @@ -33,7 +33,6 @@ use { blockstore::{Blockstore, SignatureInfosForAddress}, blockstore_db::BlockstoreError, blockstore_meta::{PerfSample, PerfSampleV1, PerfSampleV2}, - get_tmp_ledger_path, leader_schedule_cache::LeaderScheduleCache, }, solana_metrics::inc_new_counter_info, @@ -54,7 +53,7 @@ use { solana_runtime::{ bank::{Bank, TransactionSimulationResult}, bank_forks::BankForks, - commitment::{BlockCommitmentArray, BlockCommitmentCache, CommitmentSlots}, + commitment::{BlockCommitmentArray, BlockCommitmentCache}, installed_scheduler_pool::BankWithScheduler, non_circulating_supply::calculate_non_circulating_supply, prioritization_fee_cache::PrioritizationFeeCache, @@ -80,13 +79,9 @@ use { VersionedTransaction, MAX_TX_ACCOUNT_LOCKS, }, }, - solana_send_transaction_service::{ - send_transaction_service::{SendTransactionService, TransactionInfo}, - tpu_info::NullTpuInfo, - }, + solana_send_transaction_service::send_transaction_service::TransactionInfo, solana_stake_program, solana_storage_bigtable::Error as StorageError, - solana_streamer::socket::SocketAddrSpace, solana_transaction_status::{ map_inner_instructions, BlockEncodingOptions, ConfirmedBlock, ConfirmedTransactionStatusWithSignature, ConfirmedTransactionWithStatusMeta, @@ -117,6 +112,17 @@ use { time::Duration, }, }; +#[cfg(test)] +use { + solana_client::connection_cache::ConnectionCache, + solana_gossip::contact_info::ContactInfo, + solana_ledger::get_tmp_ledger_path, + solana_runtime::commitment::CommitmentSlots, + solana_send_transaction_service::{ + send_transaction_service::SendTransactionService, tpu_info::NullTpuInfo, + }, + solana_streamer::socket::SocketAddrSpace, +}; pub mod account_resolver; @@ -348,7 +354,7 @@ impl JsonRpcRequestProcessor { ) } - // Useful for unit testing + #[cfg(test)] pub fn new_from_bank( bank: Bank, socket_addr_space: SocketAddrSpace, @@ -4332,11 +4338,12 @@ pub mod tests { serde::de::DeserializeOwned, solana_accounts_db::accounts_db::{AccountsDbConfig, ACCOUNTS_DB_CONFIG_FOR_TESTING}, solana_entry::entry::next_versioned_entry, - solana_gossip::socketaddr, + solana_gossip::{contact_info::ContactInfo, socketaddr}, solana_ledger::{ blockstore_meta::PerfSampleV2, blockstore_processor::fill_blockstore_slot_with_ticks, genesis_utils::{create_genesis_config, GenesisConfigInfo}, + get_tmp_ledger_path, }, solana_rpc_client_api::{ custom_error::{ @@ -4347,8 +4354,10 @@ pub mod tests { filter::MemcmpEncodedBytes, }, solana_runtime::{ - accounts_background_service::AbsRequestSender, bank::BankTestConfig, - commitment::BlockCommitment, non_circulating_supply::non_circulating_accounts, + accounts_background_service::AbsRequestSender, + bank::BankTestConfig, + commitment::{BlockCommitment, CommitmentSlots}, + non_circulating_supply::non_circulating_accounts, }, solana_sdk::{ account::{Account, WritableAccount}, @@ -4376,6 +4385,7 @@ pub mod tests { }, vote::state::VoteState, }, + solana_send_transaction_service::tpu_info::NullTpuInfo, solana_transaction_status::{ EncodedConfirmedBlock, EncodedTransaction, EncodedTransactionWithStatusMeta, TransactionDetails, From c6a7130b135d211fff6b845a05dc6bb5c26e1dcb Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 7 Nov 2024 09:01:10 -0600 Subject: [PATCH 03/33] v2.1: Store epoch in MaxAge (backport of #3485) (#3502) * Store epoch in MaxAge (#3485) (cherry picked from commit 5a6f518c6018ab0ebd101777045c5a1470cde5db) # Conflicts: # core/src/banking_stage/scheduler_messages.rs # core/src/banking_stage/transaction_scheduler/transaction_state.rs # core/src/banking_stage/transaction_scheduler/transaction_state_container.rs * resolve conflicts --------- Co-authored-by: Andrew Fitzgerald --- core/src/banking_stage/consume_worker.rs | 28 +++++++++------ core/src/banking_stage/consumer.rs | 4 +-- core/src/banking_stage/scheduler_messages.rs | 14 ++++++-- .../prio_graph_scheduler.rs | 9 ++--- .../scheduler_controller.rs | 33 ++++++++---------- .../transaction_state.rs | 34 ++++--------------- .../transaction_state_container.rs | 6 +--- 7 files changed, 56 insertions(+), 72 deletions(-) diff --git a/core/src/banking_stage/consume_worker.rs b/core/src/banking_stage/consume_worker.rs index 349f5b8a9d8e6d..9375e733aae1c4 100644 --- a/core/src/banking_stage/consume_worker.rs +++ b/core/src/banking_stage/consume_worker.rs @@ -783,7 +783,12 @@ mod tests { .. } = create_slow_genesis_config(10_000); let (bank, bank_forks) = Bank::new_no_wallclock_throttle_for_tests(&genesis_config); - let bank = Arc::new(Bank::new_from_parent(bank, &Pubkey::new_unique(), 1)); + // Warp to next epoch for MaxAge tests. + let bank = Arc::new(Bank::new_from_parent( + bank.clone(), + &Pubkey::new_unique(), + bank.get_epoch_info().slots_in_epoch, + )); let ledger_path = get_tmp_ledger_path_auto_delete!(); let blockstore = Blockstore::open(ledger_path.path()) @@ -863,7 +868,7 @@ mod tests { let bid = TransactionBatchId::new(0); let id = TransactionId::new(0); let max_age = MaxAge { - epoch_invalidation_slot: bank.slot(), + sanitized_epoch: bank.epoch(), alt_invalidation_slot: bank.slot(), }; let work = ConsumeWork { @@ -912,7 +917,7 @@ mod tests { let bid = TransactionBatchId::new(0); let id = TransactionId::new(0); let max_age = MaxAge { - epoch_invalidation_slot: bank.slot(), + sanitized_epoch: bank.epoch(), alt_invalidation_slot: bank.slot(), }; let work = ConsumeWork { @@ -962,7 +967,7 @@ mod tests { let id1 = TransactionId::new(1); let id2 = TransactionId::new(0); let max_age = MaxAge { - epoch_invalidation_slot: bank.slot(), + sanitized_epoch: bank.epoch(), alt_invalidation_slot: bank.slot(), }; consume_sender @@ -1023,7 +1028,7 @@ mod tests { let id1 = TransactionId::new(1); let id2 = TransactionId::new(0); let max_age = MaxAge { - epoch_invalidation_slot: bank.slot(), + sanitized_epoch: bank.epoch(), alt_invalidation_slot: bank.slot(), }; consume_sender @@ -1077,6 +1082,7 @@ mod tests { .unwrap() .set_bank_for_test(bank.clone()); assert!(bank.slot() > 0); + assert!(bank.epoch() > 0); // No conflicts between transactions. Test 6 cases. // 1. Epoch expiration, before slot => still succeeds due to resanitizing @@ -1161,27 +1167,27 @@ mod tests { transactions: txs, max_ages: vec![ MaxAge { - epoch_invalidation_slot: bank.slot() - 1, + sanitized_epoch: bank.epoch() - 1, alt_invalidation_slot: Slot::MAX, }, MaxAge { - epoch_invalidation_slot: bank.slot(), + sanitized_epoch: bank.epoch(), alt_invalidation_slot: Slot::MAX, }, MaxAge { - epoch_invalidation_slot: bank.slot() + 1, + sanitized_epoch: bank.epoch() + 1, alt_invalidation_slot: Slot::MAX, }, MaxAge { - epoch_invalidation_slot: u64::MAX, + sanitized_epoch: bank.epoch(), alt_invalidation_slot: bank.slot() - 1, }, MaxAge { - epoch_invalidation_slot: u64::MAX, + sanitized_epoch: bank.epoch(), alt_invalidation_slot: bank.slot(), }, MaxAge { - epoch_invalidation_slot: u64::MAX, + sanitized_epoch: bank.epoch(), alt_invalidation_slot: bank.slot() + 1, }, ], diff --git a/core/src/banking_stage/consumer.rs b/core/src/banking_stage/consumer.rs index f2ae4dc905841c..bb76753d77951e 100644 --- a/core/src/banking_stage/consumer.rs +++ b/core/src/banking_stage/consumer.rs @@ -442,8 +442,8 @@ impl Consumer { let pre_results = txs.iter().zip(max_ages).map(|(tx, max_age)| { // If the transaction was sanitized before this bank's epoch, // additional checks are necessary. - if bank.slot() > max_age.epoch_invalidation_slot { - // Reserved key set may have cahnged, so we must verify that + if bank.epoch() != max_age.sanitized_epoch { + // Reserved key set may have changed, so we must verify that // no writable keys are reserved. bank.check_reserved_keys(tx)?; } diff --git a/core/src/banking_stage/scheduler_messages.rs b/core/src/banking_stage/scheduler_messages.rs index 29e9b99f50588a..c5bc74880bb8d7 100644 --- a/core/src/banking_stage/scheduler_messages.rs +++ b/core/src/banking_stage/scheduler_messages.rs @@ -1,5 +1,8 @@ use { - solana_sdk::{clock::Slot, transaction::SanitizedTransaction}, + solana_sdk::{ + clock::{Epoch, Slot}, + transaction::SanitizedTransaction, + }, std::fmt::Display, }; @@ -37,10 +40,17 @@ impl Display for TransactionId { #[derive(Copy, Clone, Debug, PartialEq, Eq)] pub struct MaxAge { - pub epoch_invalidation_slot: Slot, + pub sanitized_epoch: Epoch, pub alt_invalidation_slot: Slot, } +impl MaxAge { + pub const MAX: Self = Self { + sanitized_epoch: Epoch::MAX, + alt_invalidation_slot: Slot::MAX, + }; +} + /// Message: [Scheduler -> Worker] /// Transactions to be consumed (i.e. executed, recorded, and committed) pub struct ConsumeWork { diff --git a/core/src/banking_stage/transaction_scheduler/prio_graph_scheduler.rs b/core/src/banking_stage/transaction_scheduler/prio_graph_scheduler.rs index 2687c04d271991..14c4d8a62ff62d 100644 --- a/core/src/banking_stage/transaction_scheduler/prio_graph_scheduler.rs +++ b/core/src/banking_stage/transaction_scheduler/prio_graph_scheduler.rs @@ -618,8 +618,8 @@ mod tests { crossbeam_channel::{unbounded, Receiver}, itertools::Itertools, solana_sdk::{ - clock::Slot, compute_budget::ComputeBudgetInstruction, hash::Hash, message::Message, - packet::Packet, pubkey::Pubkey, signature::Keypair, signer::Signer, system_instruction, + compute_budget::ComputeBudgetInstruction, hash::Hash, message::Message, packet::Packet, + pubkey::Pubkey, signature::Keypair, signer::Signer, system_instruction, transaction::Transaction, }, std::{borrow::Borrow, sync::Arc}, @@ -705,10 +705,7 @@ mod tests { ); let transaction_ttl = SanitizedTransactionTTL { transaction, - max_age: MaxAge { - epoch_invalidation_slot: Slot::MAX, - alt_invalidation_slot: Slot::MAX, - }, + max_age: MaxAge::MAX, }; const TEST_TRANSACTION_COST: u64 = 5000; container.insert_new_transaction( diff --git a/core/src/banking_stage/transaction_scheduler/scheduler_controller.rs b/core/src/banking_stage/transaction_scheduler/scheduler_controller.rs index 0ca1ee562dc535..4e9cceba472acb 100644 --- a/core/src/banking_stage/transaction_scheduler/scheduler_controller.rs +++ b/core/src/banking_stage/transaction_scheduler/scheduler_controller.rs @@ -32,7 +32,7 @@ use { solana_sdk::{ self, address_lookup_table::state::estimate_last_valid_slot, - clock::{Slot, FORWARD_TRANSACTIONS_TO_LEADER_AT_SLOT_OFFSET, MAX_PROCESSING_AGE}, + clock::{Epoch, Slot, FORWARD_TRANSACTIONS_TO_LEADER_AT_SLOT_OFFSET, MAX_PROCESSING_AGE}, fee::FeeBudgetLimits, saturating_add_assign, transaction::SanitizedTransaction, @@ -509,9 +509,7 @@ impl SchedulerController { (root_bank, working_bank) }; let alt_resolved_slot = root_bank.slot(); - let last_slot_in_epoch = working_bank - .epoch_schedule() - .get_last_slot_in_epoch(working_bank.epoch()); + let sanitized_epoch = root_bank.epoch(); let transaction_account_lock_limit = working_bank.get_transaction_account_lock_limit(); let vote_only = working_bank.vote_only_bank(); @@ -533,7 +531,7 @@ impl SchedulerController { .build_sanitized_transaction( vote_only, root_bank.as_ref(), - working_bank.get_reserved_account_keys(), + root_bank.get_reserved_account_keys(), ) .map(|(tx, deactivation_slot)| (packet.clone(), tx, deactivation_slot)) }) @@ -556,7 +554,7 @@ impl SchedulerController { arc_packets.push(packet); transactions.push(tx); max_ages.push(calculate_max_age( - last_slot_in_epoch, + sanitized_epoch, deactivation_slot, alt_resolved_slot, )); @@ -683,11 +681,10 @@ impl SchedulerController { } } -/// Given the last slot in the epoch, the minimum deactivation slot, -/// and the current slot, return the `MaxAge` that should be used for -/// the transaction. This is used to determine the maximum slot that a -/// transaction will be considered valid for, without re-resolving addresses -/// or resanitizing. +/// Given the epoch, the minimum deactivation slot, and the current slot, +/// return the `MaxAge` that should be used for the transaction. This is used +/// to determine the maximum slot that a transaction will be considered valid +/// for, without re-resolving addresses or resanitizing. /// /// This function considers the deactivation period of Address Table /// accounts. If the deactivation period runs past the end of the epoch, @@ -700,13 +697,13 @@ impl SchedulerController { /// period, i.e. the transaction's address lookups are valid until /// AT LEAST this slot. fn calculate_max_age( - last_slot_in_epoch: Slot, + sanitized_epoch: Epoch, deactivation_slot: Slot, current_slot: Slot, ) -> MaxAge { let alt_min_expire_slot = estimate_last_valid_slot(deactivation_slot.min(current_slot)); MaxAge { - epoch_invalidation_slot: last_slot_in_epoch, + sanitized_epoch, alt_invalidation_slot: alt_min_expire_slot, } } @@ -1218,13 +1215,13 @@ mod tests { #[test] fn test_calculate_max_age() { let current_slot = 100; - let last_slot_in_epoch = 1000; + let sanitized_epoch = 10; // ALT deactivation slot is delayed assert_eq!( - calculate_max_age(last_slot_in_epoch, current_slot - 1, current_slot), + calculate_max_age(sanitized_epoch, current_slot - 1, current_slot), MaxAge { - epoch_invalidation_slot: last_slot_in_epoch, + sanitized_epoch, alt_invalidation_slot: current_slot - 1 + solana_sdk::slot_hashes::get_entries() as u64, } @@ -1232,9 +1229,9 @@ mod tests { // no deactivation slot assert_eq!( - calculate_max_age(last_slot_in_epoch, u64::MAX, current_slot), + calculate_max_age(sanitized_epoch, u64::MAX, current_slot), MaxAge { - epoch_invalidation_slot: last_slot_in_epoch, + sanitized_epoch, alt_invalidation_slot: current_slot + solana_sdk::slot_hashes::get_entries() as u64, } ); diff --git a/core/src/banking_stage/transaction_scheduler/transaction_state.rs b/core/src/banking_stage/transaction_scheduler/transaction_state.rs index efb59be1b8b5b5..2c633294c4643e 100644 --- a/core/src/banking_stage/transaction_scheduler/transaction_state.rs +++ b/core/src/banking_stage/transaction_scheduler/transaction_state.rs @@ -209,9 +209,8 @@ mod tests { use { super::*, solana_sdk::{ - clock::Slot, compute_budget::ComputeBudgetInstruction, hash::Hash, message::Message, - packet::Packet, signature::Keypair, signer::Signer, system_instruction, - transaction::Transaction, + compute_budget::ComputeBudgetInstruction, hash::Hash, message::Message, packet::Packet, + signature::Keypair, signer::Signer, system_instruction, transaction::Transaction, }, }; @@ -233,10 +232,7 @@ mod tests { ); let transaction_ttl = SanitizedTransactionTTL { transaction: SanitizedTransaction::from_transaction_for_tests(tx), - max_age: MaxAge { - epoch_invalidation_slot: Slot::MAX, - alt_invalidation_slot: Slot::MAX, - }, + max_age: MaxAge::MAX, }; const TEST_TRANSACTION_COST: u64 = 5000; TransactionState::new( @@ -327,13 +323,7 @@ mod tests { transaction_state, TransactionState::Unprocessed { .. } )); - assert_eq!( - transaction_ttl.max_age, - MaxAge { - epoch_invalidation_slot: Slot::MAX, - alt_invalidation_slot: Slot::MAX, - } - ); + assert_eq!(transaction_ttl.max_age, MaxAge::MAX); let _ = transaction_state.transition_to_pending(); assert!(matches!( @@ -351,13 +341,7 @@ mod tests { transaction_state, TransactionState::Unprocessed { .. } )); - assert_eq!( - transaction_ttl.max_age, - MaxAge { - epoch_invalidation_slot: Slot::MAX, - alt_invalidation_slot: Slot::MAX, - } - ); + assert_eq!(transaction_ttl.max_age, MaxAge::MAX); // ensure transaction_ttl is not lost through state transitions let transaction_ttl = transaction_state.transition_to_pending(); @@ -372,12 +356,6 @@ mod tests { transaction_state, TransactionState::Unprocessed { .. } )); - assert_eq!( - transaction_ttl.max_age, - MaxAge { - epoch_invalidation_slot: Slot::MAX, - alt_invalidation_slot: Slot::MAX, - } - ); + assert_eq!(transaction_ttl.max_age, MaxAge::MAX); } } diff --git a/core/src/banking_stage/transaction_scheduler/transaction_state_container.rs b/core/src/banking_stage/transaction_scheduler/transaction_state_container.rs index 7d40c66ec1b673..7f9a913457d4db 100644 --- a/core/src/banking_stage/transaction_scheduler/transaction_state_container.rs +++ b/core/src/banking_stage/transaction_scheduler/transaction_state_container.rs @@ -161,7 +161,6 @@ mod tests { packet::Packet, signature::Keypair, signer::Signer, - slot_history::Slot, system_instruction, transaction::{SanitizedTransaction, Transaction}, }, @@ -199,10 +198,7 @@ mod tests { ); let transaction_ttl = SanitizedTransactionTTL { transaction: tx, - max_age: MaxAge { - epoch_invalidation_slot: Slot::MAX, - alt_invalidation_slot: Slot::MAX, - }, + max_age: MaxAge::MAX, }; const TEST_TRANSACTION_COST: u64 = 5000; (transaction_ttl, packet, priority, TEST_TRANSACTION_COST) From 248e0c755a1541e7af2ff943c61ec54bf028bcec Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 12:21:58 +0700 Subject: [PATCH 04/33] v2.1: program-runtime: double program cache size (backport of #3481) (#3492) program-runtime: double program cache size (#3481) The cache is currently getting thrashed and programs are getting reloaded pretty much at every single slot. Double the cache size, which makes reloading happen only due to random eviction sometimes picking a popular entry. The JIT code size with the new cache size is about 800MB. This change reduces jit time 15x. (cherry picked from commit fb4adda5a8a59d7eafe942157260c023b962925a) Co-authored-by: Alessandro Decina --- program-runtime/src/loaded_programs.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/program-runtime/src/loaded_programs.rs b/program-runtime/src/loaded_programs.rs index 181f5280db71d6..f8a0f2534b472f 100644 --- a/program-runtime/src/loaded_programs.rs +++ b/program-runtime/src/loaded_programs.rs @@ -33,7 +33,7 @@ use { }; pub type ProgramRuntimeEnvironment = Arc>>; -pub const MAX_LOADED_ENTRY_COUNT: usize = 256; +pub const MAX_LOADED_ENTRY_COUNT: usize = 512; pub const DELAY_VISIBILITY_SLOT_OFFSET: Slot = 1; /// Relationship between two fork IDs @@ -1624,7 +1624,7 @@ mod tests { assert_eq!(num_tombstones, num_tombstones_expected); // Evict entries from the cache - let eviction_pct = 2; + let eviction_pct = 1; let num_loaded_expected = Percentage::from(eviction_pct).apply_to(crate::loaded_programs::MAX_LOADED_ENTRY_COUNT); @@ -1707,7 +1707,7 @@ mod tests { assert_eq!(num_tombstones, num_tombstones_expected); // Evict entries from the cache - let eviction_pct = 2; + let eviction_pct = 1; let num_loaded_expected = Percentage::from(eviction_pct).apply_to(crate::loaded_programs::MAX_LOADED_ENTRY_COUNT); From 9913ee082a49d1f8a571b707671de1419ca79fcc Mon Sep 17 00:00:00 2001 From: Jon C Date: Fri, 8 Nov 2024 12:38:03 +0100 Subject: [PATCH 05/33] v2.1: Disable downstream SPL jobs (#3532) #### Problem The downstream jobs are failing on branch v2.1 due to https://github.com/solana-labs/solana-program-library/pull/7465. #### Summary of changes Disable them for now. --- .github/workflows/downstream-project-spl.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/downstream-project-spl.yml b/.github/workflows/downstream-project-spl.yml index 8097999ee8e8e9..ab9fc95d5f795f 100644 --- a/.github/workflows/downstream-project-spl.yml +++ b/.github/workflows/downstream-project-spl.yml @@ -37,7 +37,7 @@ env: jobs: check: - if: github.repository == 'anza-xyz/agave' + if: false runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -61,6 +61,7 @@ jobs: cargo check test: + if: false runs-on: ubuntu-latest strategy: matrix: @@ -123,6 +124,7 @@ jobs: done cargo-test-sbf: + if: false runs-on: ubuntu-latest strategy: matrix: From ee92535cfd87174a6ecb50d54e01facc0f7ecfb8 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 16:57:09 +0100 Subject: [PATCH 06/33] v2.1: Fix - SVM account_loader tests (backport of #3448) (#3520) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix - SVM account_loader tests (#3448) * Fixes test_load_transaction_accounts_program_account_executable_bypass. * Fixes test_load_transaction_accounts_data_sizes(). * Removes test_load_transaction_accounts_program_account_not_found_but_loaded(). (cherry picked from commit 74035490023c48bce51734cd4d74542ebcd38b32) Co-authored-by: Alexander Meißner --- Cargo.lock | 1 + svm/Cargo.toml | 1 + svm/src/account_loader.rs | 280 ++++++++++++++++++-------------------- 3 files changed, 133 insertions(+), 149 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 593950d228dc33..04f2c5bb5c1466 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8395,6 +8395,7 @@ dependencies = [ "solana-type-overrides", "solana-version", "solana-vote", + "solana_rbpf", "spl-token-2022", "test-case", "thiserror", diff --git a/svm/Cargo.toml b/svm/Cargo.toml index a6edc55fc1fca2..0366710646407e 100644 --- a/svm/Cargo.toml +++ b/svm/Cargo.toml @@ -81,6 +81,7 @@ solana-svm = { path = ".", features = ["dev-context-only-utils"] } solana-svm-conformance = { workspace = true } solana-transaction-status = { workspace = true } solana-version = { workspace = true } +solana_rbpf = { workspace = true } spl-token-2022 = { workspace = true, features = ["no-entrypoint"] } test-case = { workspace = true } tokio = { workspace = true, features = ["full"] } diff --git a/svm/src/account_loader.rs b/svm/src/account_loader.rs index 2e47957d7f31dd..9cc7eb6ecf37b6 100644 --- a/svm/src/account_loader.rs +++ b/svm/src/account_loader.rs @@ -572,11 +572,14 @@ mod tests { solana_compute_budget::{compute_budget::ComputeBudget, compute_budget_limits}, solana_feature_set::FeatureSet, solana_program_runtime::loaded_programs::{ - ProgramCacheEntry, ProgramCacheEntryOwner, ProgramCacheForTxBatch, + ProgramCacheEntry, ProgramCacheEntryOwner, ProgramCacheEntryType, + ProgramCacheForTxBatch, }, + solana_rbpf::program::BuiltinProgram, solana_sdk::{ account::{Account, AccountSharedData, ReadableAccount, WritableAccount}, - bpf_loader, bpf_loader_upgradeable, + bpf_loader, + bpf_loader_upgradeable::{self, UpgradeableLoaderState}, epoch_schedule::EpochSchedule, hash::Hash, instruction::{AccountMeta, CompiledInstruction, Instruction}, @@ -597,7 +600,7 @@ mod tests { transaction::{Result, SanitizedTransaction, Transaction, TransactionError}, transaction_context::{TransactionAccount, TransactionContext}, }, - std::{borrow::Cow, cell::RefCell, collections::HashMap, sync::Arc}, + std::{borrow::Cow, cell::RefCell, collections::HashMap, fs::File, io::Read, sync::Arc}, }; #[derive(Default)] @@ -1356,52 +1359,6 @@ mod tests { ); } - #[test] - fn test_load_transaction_accounts_program_account_not_found_but_loaded() { - let key1 = Keypair::new(); - let key2 = Keypair::new(); - - let message = Message { - account_keys: vec![key1.pubkey(), key2.pubkey()], - header: MessageHeader::default(), - instructions: vec![CompiledInstruction { - program_id_index: 1, - accounts: vec![0], - data: vec![], - }], - recent_blockhash: Hash::default(), - }; - - let sanitized_message = new_unchecked_sanitized_message(message); - let mut mock_bank = TestCallbacks::default(); - let mut account_data = AccountSharedData::default(); - account_data.set_lamports(200); - mock_bank.accounts_map.insert(key1.pubkey(), account_data); - - let mut error_metrics = TransactionErrorMetrics::default(); - let mut loaded_programs = ProgramCacheForTxBatch::default(); - loaded_programs.replenish(key2.pubkey(), Arc::new(ProgramCacheEntry::default())); - - let sanitized_transaction = SanitizedTransaction::new_for_tests( - sanitized_message, - vec![Signature::new_unique()], - false, - ); - let result = load_transaction_accounts( - &mock_bank, - sanitized_transaction.message(), - LoadedTransactionAccount::default(), - &ComputeBudgetLimits::default(), - &mut error_metrics, - None, - &FeatureSet::default(), - &RentCollector::default(), - &loaded_programs, - ); - - assert_eq!(result.err(), Some(TransactionError::AccountNotFound)); - } - #[test] fn test_load_transaction_accounts_program_account_executable_bypass() { // currently, the account loader retrieves read-only non-instruction accounts from the program cache @@ -1437,10 +1394,7 @@ mod tests { .insert(bpf_loader::id(), loader_data.clone()); mock_bank .accounts_map - .insert(native_loader::id(), loader_data); - - let mut error_metrics = TransactionErrorMetrics::default(); - let mut loaded_programs = ProgramCacheForTxBatch::default(); + .insert(native_loader::id(), loader_data.clone()); let transaction = SanitizedTransaction::from_transaction_for_tests(Transaction::new_signed_with_payer( @@ -1454,32 +1408,17 @@ mod tests { Hash::default(), )); - let result = load_transaction_accounts( - &mock_bank, - transaction.message(), - LoadedTransactionAccount { - account: account_data.clone(), - ..LoadedTransactionAccount::default() - }, - &ComputeBudgetLimits::default(), - &mut error_metrics, - None, - &FeatureSet::default(), - &RentCollector::default(), - &loaded_programs, - ); - - // without cache, program is invalid - assert_eq!( - result.err(), - Some(TransactionError::InvalidProgramForExecution) - ); - + let mut loaded_programs = ProgramCacheForTxBatch::default(); loaded_programs.replenish( program_keypair.pubkey(), - Arc::new(ProgramCacheEntry::default()), + Arc::new(ProgramCacheEntry::new_tombstone( + 0, + ProgramCacheEntryOwner::LoaderV2, + ProgramCacheEntryType::Closed, + )), ); + let mut error_metrics = TransactionErrorMetrics::default(); let result = load_transaction_accounts( &mock_bank, transaction.message(), @@ -1495,9 +1434,9 @@ mod tests { &loaded_programs, ); - // with cache, executable flag is bypassed + // Executable flag is bypassed let mut cached_program = AccountSharedData::default(); - cached_program.set_owner(native_loader::id()); + cached_program.set_owner(bpf_loader::id()); cached_program.set_executable(true); assert_eq!( @@ -1506,6 +1445,7 @@ mod tests { accounts: vec![ (account_keypair.pubkey(), account_data.clone()), (program_keypair.pubkey(), cached_program), + (bpf_loader::id(), loader_data), ], program_indices: vec![vec![1]], rent: 0, @@ -2415,6 +2355,42 @@ mod tests { fn test_load_transaction_accounts_data_sizes() { let mut mock_bank = TestCallbacks::default(); + let program1_keypair = Keypair::new(); + let program1 = program1_keypair.pubkey(); + let program2 = Pubkey::new_unique(); + let programdata2 = Pubkey::new_unique(); + use solana_sdk::account_utils::StateMut; + + let program2_size = std::mem::size_of::() as u32; + let mut program2_account = AccountSharedData::default(); + program2_account.set_owner(bpf_loader_upgradeable::id()); + program2_account.set_executable(true); + program2_account.set_data(vec![0; program2_size as usize]); + program2_account + .set_state(&UpgradeableLoaderState::Program { + programdata_address: programdata2, + }) + .unwrap(); + mock_bank.accounts_map.insert(program2, program2_account); + let mut programdata2_account = AccountSharedData::default(); + programdata2_account.set_owner(bpf_loader_upgradeable::id()); + programdata2_account.set_data(vec![0; program2_size as usize]); + programdata2_account + .set_state(&UpgradeableLoaderState::ProgramData { + slot: 0, + upgrade_authority_address: None, + }) + .unwrap(); + let mut programdata = programdata2_account.data().to_vec(); + let mut file = + File::open("tests/example-programs/hello-solana/hello_solana_program.so").unwrap(); + file.read_to_end(&mut programdata).unwrap(); + let programdata2_size = programdata.len() as u32; + programdata2_account.set_data(programdata); + mock_bank + .accounts_map + .insert(programdata2, programdata2_account); + let mut next_size = 1; let mut make_account = |pubkey, owner, executable| { let size = next_size; @@ -2435,22 +2411,6 @@ mod tests { (size as u32, account) }; - let (native_loader_size, _) = make_account(native_loader::id(), native_loader::id(), true); - let (bpf_loader_size, _) = make_account(bpf_loader::id(), native_loader::id(), true); - let (upgradeable_loader_size, _) = - make_account(bpf_loader_upgradeable::id(), native_loader::id(), true); - - let program1_keypair = Keypair::new(); - let program1 = program1_keypair.pubkey(); - let (program1_size, _) = make_account(program1, bpf_loader::id(), true); - - let program2 = Pubkey::new_unique(); - let (program2_size, _) = make_account(program2, bpf_loader_upgradeable::id(), true); - - let programdata2 = Pubkey::new_unique(); - let (programdata2_size, _) = - make_account(programdata2, bpf_loader_upgradeable::id(), false); - let fee_payer_keypair = Keypair::new(); let fee_payer = fee_payer_keypair.pubkey(); let (fee_payer_size, fee_payer_account) = @@ -2462,7 +2422,30 @@ mod tests { let account2 = Pubkey::new_unique(); let (account2_size, _) = make_account(account2, program2, false); - let test_transaction_data_size_with_cache = |transaction, cache, expected_size| { + let (native_loader_size, _) = make_account(native_loader::id(), native_loader::id(), true); + let (bpf_loader_size, _) = make_account(bpf_loader::id(), native_loader::id(), true); + let (upgradeable_loader_size, _) = + make_account(bpf_loader_upgradeable::id(), native_loader::id(), true); + + let (_program1_size, _) = make_account(program1, bpf_loader::id(), true); + + let mut program_cache = ProgramCacheForTxBatch::default(); + let program1_entry = ProgramCacheEntry { + account_size: 0, + account_owner: ProgramCacheEntryOwner::LoaderV2, + program: ProgramCacheEntryType::Closed, + ..ProgramCacheEntry::default() + }; + program_cache.replenish(program1, Arc::new(program1_entry)); + let program2_entry = ProgramCacheEntry { + account_size: (program2_size + programdata2_size) as usize, + account_owner: ProgramCacheEntryOwner::LoaderV3, + program: ProgramCacheEntryType::Unloaded(Arc::new(BuiltinProgram::new_mock())), + ..ProgramCacheEntry::default() + }; + program_cache.replenish(program2, Arc::new(program2_entry)); + + let test_transaction_data_size = |transaction, expected_size| { let loaded_transaction_accounts = load_transaction_accounts( &mock_bank, &transaction, @@ -2476,7 +2459,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), - &cache, + &program_cache, ) .unwrap(); @@ -2486,7 +2469,7 @@ mod tests { ); }; - let test_data_size_with_cache = |instructions: Vec<_>, cache, expected_size| { + let test_data_size = |instructions: Vec<_>, expected_size| { let transaction = SanitizedTransaction::from_transaction_for_tests( Transaction::new_signed_with_payer( &instructions, @@ -2496,21 +2479,13 @@ mod tests { ), ); - test_transaction_data_size_with_cache(transaction, cache, expected_size) + test_transaction_data_size(transaction, expected_size) }; for account_meta in [AccountMeta::new, AccountMeta::new_readonly] { - let test_data_size = |instructions, expected_size| { - test_data_size_with_cache( - instructions, - ProgramCacheForTxBatch::default(), - expected_size, - ) - }; - // one program plus loader let ixns = vec![Instruction::new_with_bytes(program1, &[], vec![])]; - test_data_size(ixns, program1_size + bpf_loader_size + fee_payer_size); + test_data_size(ixns, bpf_loader_size + fee_payer_size); // two programs, two loaders, two accounts let ixns = vec![ @@ -2521,8 +2496,8 @@ mod tests { ixns, account1_size + account2_size - + program1_size + program2_size + + programdata2_size + bpf_loader_size + upgradeable_loader_size + fee_payer_size, @@ -2534,17 +2509,17 @@ mod tests { &[], vec![account_meta(account2, false)], )]; - test_data_size( - ixns, - account2_size + program1_size + bpf_loader_size + fee_payer_size, - ); + test_data_size(ixns, account2_size + bpf_loader_size + fee_payer_size); // program and loader counted once let ixns = vec![ - Instruction::new_with_bytes(program1, &[], vec![]), - Instruction::new_with_bytes(program1, &[], vec![]), + Instruction::new_with_bytes(program2, &[], vec![]), + Instruction::new_with_bytes(program2, &[], vec![]), ]; - test_data_size(ixns, program1_size + bpf_loader_size + fee_payer_size); + test_data_size( + ixns, + upgradeable_loader_size + program2_size + programdata2_size + fee_payer_size, + ); // native loader not counted if loader let ixns = vec![Instruction::new_with_bytes(bpf_loader::id(), &[], vec![])]; @@ -2576,11 +2551,24 @@ mod tests { // loader counted twice if included in instruction let ixns = vec![Instruction::new_with_bytes( - program1, + program2, &[], - vec![account_meta(bpf_loader::id(), false)], + vec![account_meta(bpf_loader_upgradeable::id(), false)], )]; - test_data_size(ixns, program1_size + bpf_loader_size * 2 + fee_payer_size); + test_data_size( + ixns, + upgradeable_loader_size * 2 + program2_size + programdata2_size + fee_payer_size, + ); + + // loader counted twice even if included first + let ixns = vec![ + Instruction::new_with_bytes(bpf_loader_upgradeable::id(), &[], vec![]), + Instruction::new_with_bytes(program2, &[], vec![]), + ]; + test_data_size( + ixns, + upgradeable_loader_size * 2 + program2_size + programdata2_size + fee_payer_size, + ); // cover that case with multiple loaders to be sure let ixns = vec![ @@ -2602,43 +2590,25 @@ mod tests { test_data_size( ixns, account1_size - + program1_size + program2_size + + programdata2_size + bpf_loader_size * 2 + upgradeable_loader_size * 2 + fee_payer_size, ); - // loader counted twice even if included first - let ixns = vec![ - Instruction::new_with_bytes(bpf_loader::id(), &[], vec![]), - Instruction::new_with_bytes(program1, &[], vec![]), - ]; - test_data_size(ixns, program1_size + bpf_loader_size * 2 + fee_payer_size); - // fee-payer counted once let ixns = vec![Instruction::new_with_bytes( program1, &[], vec![account_meta(fee_payer, false)], )]; - test_data_size(ixns, program1_size + bpf_loader_size + fee_payer_size); - - // edge cases involving program cache - let mut program_cache = ProgramCacheForTxBatch::default(); - - let program2_entry = ProgramCacheEntry { - account_size: (program2_size + programdata2_size) as usize, - account_owner: ProgramCacheEntryOwner::LoaderV3, - ..ProgramCacheEntry::default() - }; - program_cache.replenish(program2, Arc::new(program2_entry)); + test_data_size(ixns, bpf_loader_size + fee_payer_size); // normal function call uses the combined cache size let ixns = vec![Instruction::new_with_bytes(program2, &[], vec![])]; - test_data_size_with_cache( + test_data_size( ixns, - program_cache.clone(), program2_size + programdata2_size + upgradeable_loader_size + fee_payer_size, ); @@ -2648,22 +2618,28 @@ mod tests { &[], vec![account_meta(program2, false)], )]; - test_data_size_with_cache( + test_data_size( ixns, - program_cache.clone(), program2_size + upgradeable_loader_size + fee_payer_size, ); - // programdata as instruction account double-counts it + // programdata as readonly instruction account double-counts it let ixns = vec![Instruction::new_with_bytes( program2, &[], vec![account_meta(programdata2, false)], )]; - test_data_size_with_cache( + let factor = if ixns[0].accounts[0].is_writable { + 1 + } else { + 2 + }; + test_data_size( ixns, - program_cache.clone(), - program2_size + programdata2_size * 2 + upgradeable_loader_size + fee_payer_size, + program2_size + + programdata2_size * factor + + upgradeable_loader_size + + fee_payer_size, ); // both as instruction accounts, for completeness @@ -2675,17 +2651,23 @@ mod tests { account_meta(programdata2, false), ], )]; - test_data_size_with_cache( + let factor = if ixns[0].accounts[0].is_writable { + 0 + } else { + 1 + }; + test_data_size( ixns, - program_cache.clone(), - program2_size + programdata2_size + upgradeable_loader_size + fee_payer_size, + program2_size + + programdata2_size * factor + + upgradeable_loader_size + + fee_payer_size, ); // writable program bypasses the cache let tx = new_unchecked_sanitized_transaction_with_writable_program(program2, fee_payer); - test_transaction_data_size_with_cache( + test_transaction_data_size( tx, - program_cache.clone(), program2_size + upgradeable_loader_size + fee_payer_size, ); From b6fc1676882fb203d7d005bf13ce579e1d6c0f4f Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 8 Nov 2024 18:27:12 +0100 Subject: [PATCH 07/33] v2.1: Revert - #879 and #768 (backport of #3521) (#3544) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert - #879 and #768 (#3521) * Revert "Cleanup - Removes the owner form the result of `filter_executable_program_accounts()` (#879)" This reverts commit 5fe30cb788232da8e853c7c70a3070395df6af0a. * Revert "Refactor - Remove `program_accounts_map` from account_loader (#768)" This reverts commit e7617a1b1fa53a3908a79270e0f4616a36d489c0. (cherry picked from commit 57bdb8e2e218e3ce791564954e48f27b43c845e1) Co-authored-by: Alexander Meißner --- svm/src/account_loader.rs | 77 ++++++++++++++++++++++++-------- svm/src/transaction_processor.rs | 61 ++++++++++++++----------- svm/tests/concurrent_tests.rs | 6 ++- 3 files changed, 96 insertions(+), 48 deletions(-) diff --git a/svm/src/account_loader.rs b/svm/src/account_loader.rs index 9cc7eb6ecf37b6..fbaa222e938a23 100644 --- a/svm/src/account_loader.rs +++ b/svm/src/account_loader.rs @@ -9,7 +9,7 @@ use { itertools::Itertools, solana_compute_budget::compute_budget_limits::ComputeBudgetLimits, solana_feature_set::{self as feature_set, FeatureSet}, - solana_program_runtime::loaded_programs::{ProgramCacheEntry, ProgramCacheForTxBatch}, + solana_program_runtime::loaded_programs::ProgramCacheForTxBatch, solana_sdk::{ account::{Account, AccountSharedData, ReadableAccount, WritableAccount}, fee::FeeDetails, @@ -30,7 +30,7 @@ use { solana_svm_rent_collector::svm_rent_collector::SVMRentCollector, solana_svm_transaction::svm_message::SVMMessage, solana_system_program::{get_system_account_kind, SystemAccountKind}, - std::num::NonZeroU32, + std::{collections::HashMap, num::NonZeroU32}, }; // for the load instructions @@ -194,6 +194,7 @@ pub(crate) fn load_accounts( account_overrides: Option<&AccountOverrides>, feature_set: &FeatureSet, rent_collector: &dyn SVMRentCollector, + program_accounts: &HashMap, loaded_programs: &ProgramCacheForTxBatch, ) -> Vec { txs.iter() @@ -207,6 +208,7 @@ pub(crate) fn load_accounts( account_overrides, feature_set, rent_collector, + program_accounts, loaded_programs, ) }) @@ -221,6 +223,7 @@ fn load_transaction( account_overrides: Option<&AccountOverrides>, feature_set: &FeatureSet, rent_collector: &dyn SVMRentCollector, + program_accounts: &HashMap, loaded_programs: &ProgramCacheForTxBatch, ) -> TransactionLoadResult { match validation_result { @@ -235,6 +238,7 @@ fn load_transaction( account_overrides, feature_set, rent_collector, + program_accounts, loaded_programs, ); @@ -268,6 +272,7 @@ struct LoadedTransactionAccounts { pub loaded_accounts_data_size: u32, } +#[allow(clippy::too_many_arguments)] fn load_transaction_accounts( callbacks: &CB, message: &impl SVMMessage, @@ -277,6 +282,7 @@ fn load_transaction_accounts( account_overrides: Option<&AccountOverrides>, feature_set: &FeatureSet, rent_collector: &dyn SVMRentCollector, + program_accounts: &HashMap, loaded_programs: &ProgramCacheForTxBatch, ) -> Result { let mut tx_rent: TransactionRent = 0; @@ -331,6 +337,7 @@ fn load_transaction_accounts( account_overrides, feature_set, rent_collector, + program_accounts, loaded_programs, )?; collect_loaded_account(account_key, (loaded_account, account_found))?; @@ -403,6 +410,7 @@ fn load_transaction_accounts( }) } +#[allow(clippy::too_many_arguments)] fn load_transaction_account( callbacks: &CB, message: &impl SVMMessage, @@ -412,6 +420,7 @@ fn load_transaction_account( account_overrides: Option<&AccountOverrides>, feature_set: &FeatureSet, rent_collector: &dyn SVMRentCollector, + program_accounts: &HashMap, loaded_programs: &ProgramCacheForTxBatch, ) -> Result<(LoadedTransactionAccount, bool)> { let mut account_found = true; @@ -439,14 +448,11 @@ fn load_transaction_account( .then_some(()) .and_then(|_| loaded_programs.find(account_key)) { - callbacks - .get_account_shared_data(account_key) - .ok_or(TransactionError::AccountNotFound)?; // Optimization to skip loading of accounts which are only used as // programs in top-level instructions and not passed as instruction accounts. LoadedTransactionAccount { loaded_size: program.account_size, - account: account_shared_data_from_program(&program), + account: account_shared_data_from_program(account_key, program_accounts)?, rent_collected: 0, } } else { @@ -496,14 +502,20 @@ fn load_transaction_account( Ok((loaded_account, account_found)) } -fn account_shared_data_from_program(loaded_program: &ProgramCacheEntry) -> AccountSharedData { +fn account_shared_data_from_program( + key: &Pubkey, + program_accounts: &HashMap, +) -> Result { // It's an executable program account. The program is already loaded in the cache. // So the account data is not needed. Return a dummy AccountSharedData with meta // information. let mut program_account = AccountSharedData::default(); - program_account.set_owner(loaded_program.account_owner()); + let (program_owner, _count) = program_accounts + .get(key) + .ok_or(TransactionError::AccountNotFound)?; + program_account.set_owner(**program_owner); program_account.set_executable(true); - program_account + Ok(program_account) } /// Accumulate loaded account data size into `accumulated_accounts_data_size`. @@ -670,6 +682,7 @@ mod tests { None, feature_set, rent_collector, + &HashMap::new(), &ProgramCacheForTxBatch::default(), ) } @@ -978,6 +991,7 @@ mod tests { account_overrides, &FeatureSet::all_enabled(), &RentCollector::default(), + &HashMap::new(), &ProgramCacheForTxBatch::default(), ) } @@ -1273,6 +1287,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &HashMap::new(), &loaded_programs, ); @@ -1338,6 +1353,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &HashMap::new(), &loaded_programs, ); @@ -1371,6 +1387,7 @@ mod tests { let mut mock_bank = TestCallbacks::default(); let account_keypair = Keypair::new(); let program_keypair = Keypair::new(); + let loader_v2 = bpf_loader::id(); let mut account_data = AccountSharedData::default(); account_data.set_lamports(200); @@ -1380,7 +1397,7 @@ mod tests { let mut program_data = AccountSharedData::default(); program_data.set_lamports(200); - program_data.set_owner(bpf_loader::id()); + program_data.set_owner(loader_v2); mock_bank .accounts_map .insert(program_keypair.pubkey(), program_data); @@ -1391,7 +1408,7 @@ mod tests { loader_data.set_owner(native_loader::id()); mock_bank .accounts_map - .insert(bpf_loader::id(), loader_data.clone()); + .insert(loader_v2, loader_data.clone()); mock_bank .accounts_map .insert(native_loader::id(), loader_data.clone()); @@ -1408,6 +1425,8 @@ mod tests { Hash::default(), )); + let mut program_accounts = HashMap::new(); + program_accounts.insert(program_keypair.pubkey(), (&loader_v2, 0)); let mut loaded_programs = ProgramCacheForTxBatch::default(); loaded_programs.replenish( program_keypair.pubkey(), @@ -1431,12 +1450,13 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &program_accounts, &loaded_programs, ); // Executable flag is bypassed let mut cached_program = AccountSharedData::default(); - cached_program.set_owner(bpf_loader::id()); + cached_program.set_owner(loader_v2); cached_program.set_executable(true); assert_eq!( @@ -1445,7 +1465,7 @@ mod tests { accounts: vec![ (account_keypair.pubkey(), account_data.clone()), (program_keypair.pubkey(), cached_program), - (bpf_loader::id(), loader_data), + (loader_v2, loader_data), ], program_indices: vec![vec![1]], rent: 0, @@ -1478,6 +1498,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &program_accounts, &loaded_programs, ); @@ -1504,6 +1525,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &program_accounts, &loaded_programs, ); @@ -1553,6 +1575,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &HashMap::new(), &loaded_programs, ); @@ -1598,6 +1621,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &HashMap::new(), &loaded_programs, ); @@ -1655,6 +1679,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &HashMap::new(), &loaded_programs, ); @@ -1718,6 +1743,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &HashMap::new(), &loaded_programs, ); @@ -1772,6 +1798,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &HashMap::new(), &loaded_programs, ); @@ -1836,6 +1863,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &HashMap::new(), &loaded_programs, ); @@ -1924,6 +1952,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &HashMap::new(), &loaded_programs, ); @@ -1989,6 +2018,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &HashMap::new(), &ProgramCacheForTxBatch::default(), ); @@ -2085,6 +2115,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &HashMap::new(), &loaded_programs, ); @@ -2157,6 +2188,7 @@ mod tests { None, &feature_set, &rent_collector, + &HashMap::new(), &ProgramCacheForTxBatch::default(), ); @@ -2178,6 +2210,7 @@ mod tests { None, &feature_set, &rent_collector, + &HashMap::new(), &ProgramCacheForTxBatch::default(), ); @@ -2328,6 +2361,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &HashMap::new(), &ProgramCacheForTxBatch::default(), ); @@ -2355,6 +2389,8 @@ mod tests { fn test_load_transaction_accounts_data_sizes() { let mut mock_bank = TestCallbacks::default(); + let loader_v2 = bpf_loader::id(); + let loader_v3 = bpf_loader_upgradeable::id(); let program1_keypair = Keypair::new(); let program1 = program1_keypair.pubkey(); let program2 = Pubkey::new_unique(); @@ -2363,7 +2399,7 @@ mod tests { let program2_size = std::mem::size_of::() as u32; let mut program2_account = AccountSharedData::default(); - program2_account.set_owner(bpf_loader_upgradeable::id()); + program2_account.set_owner(loader_v3); program2_account.set_executable(true); program2_account.set_data(vec![0; program2_size as usize]); program2_account @@ -2373,7 +2409,7 @@ mod tests { .unwrap(); mock_bank.accounts_map.insert(program2, program2_account); let mut programdata2_account = AccountSharedData::default(); - programdata2_account.set_owner(bpf_loader_upgradeable::id()); + programdata2_account.set_owner(loader_v3); programdata2_account.set_data(vec![0; program2_size as usize]); programdata2_account .set_state(&UpgradeableLoaderState::ProgramData { @@ -2423,12 +2459,14 @@ mod tests { let (account2_size, _) = make_account(account2, program2, false); let (native_loader_size, _) = make_account(native_loader::id(), native_loader::id(), true); - let (bpf_loader_size, _) = make_account(bpf_loader::id(), native_loader::id(), true); - let (upgradeable_loader_size, _) = - make_account(bpf_loader_upgradeable::id(), native_loader::id(), true); + let (bpf_loader_size, _) = make_account(loader_v2, native_loader::id(), true); + let (upgradeable_loader_size, _) = make_account(loader_v3, native_loader::id(), true); - let (_program1_size, _) = make_account(program1, bpf_loader::id(), true); + let (_program1_size, _) = make_account(program1, loader_v2, true); + let mut program_accounts = HashMap::new(); + program_accounts.insert(program1, (&loader_v2, 0)); + program_accounts.insert(program2, (&loader_v3, 0)); let mut program_cache = ProgramCacheForTxBatch::default(); let program1_entry = ProgramCacheEntry { account_size: 0, @@ -2459,6 +2497,7 @@ mod tests { None, &FeatureSet::default(), &RentCollector::default(), + &program_accounts, &program_cache, ) .unwrap(); diff --git a/svm/src/transaction_processor.rs b/svm/src/transaction_processor.rs index 551ff30076252d..14a67bc21702b8 100644 --- a/svm/src/transaction_processor.rs +++ b/svm/src/transaction_processor.rs @@ -45,6 +45,7 @@ use { hash::Hash, inner_instruction::{InnerInstruction, InnerInstructionsList}, instruction::{CompiledInstruction, TRANSACTION_LEVEL_STACK_HEIGHT}, + native_loader, pubkey::Pubkey, rent_collector::RentCollector, saturating_add_assign, @@ -278,19 +279,21 @@ impl TransactionBatchProcessor { &mut error_metrics )); - let (mut program_accounts_map, filter_executable_us) = - measure_us!(Self::filter_executable_program_accounts( + let native_loader = native_loader::id(); + let (program_accounts_map, filter_executable_us) = measure_us!({ + let mut program_accounts_map = Self::filter_executable_program_accounts( callbacks, sanitized_txs, &validation_results, - PROGRAM_OWNERS - )); - - let (mut program_cache_for_tx_batch, program_cache_us) = measure_us!({ + PROGRAM_OWNERS, + ); for builtin_program in self.builtin_program_ids.read().unwrap().iter() { - program_accounts_map.insert(*builtin_program, 0); + program_accounts_map.insert(*builtin_program, (&native_loader, 0)); } + program_accounts_map + }); + let (mut program_cache_for_tx_batch, program_cache_us) = measure_us!({ let program_cache_for_tx_batch = self.replenish_program_cache( callbacks, &program_accounts_map, @@ -321,6 +324,7 @@ impl TransactionBatchProcessor { environment .rent_collector .unwrap_or(&RentCollector::default()), + &program_accounts_map, &program_cache_for_tx_batch, )); @@ -529,28 +533,29 @@ impl TransactionBatchProcessor { /// Returns a map from executable program accounts (all accounts owned by any loader) /// to their usage counters, for the transactions with a valid blockhash or nonce. - fn filter_executable_program_accounts( + fn filter_executable_program_accounts<'a, CB: TransactionProcessingCallback>( callbacks: &CB, txs: &[impl SVMMessage], validation_results: &[TransactionValidationResult], - program_owners: &[Pubkey], - ) -> HashMap { - let mut result: HashMap = HashMap::new(); + program_owners: &'a [Pubkey], + ) -> HashMap { + let mut result: HashMap = HashMap::new(); validation_results.iter().zip(txs).for_each(|etx| { if let (Ok(_), tx) = etx { tx.account_keys() .iter() .for_each(|key| match result.entry(*key) { Entry::Occupied(mut entry) => { - let count = entry.get_mut(); + let (_, count) = entry.get_mut(); saturating_add_assign!(*count, 1); } Entry::Vacant(entry) => { - if callbacks - .account_matches_owners(key, program_owners) - .is_some() + if let Some(index) = + callbacks.account_matches_owners(key, program_owners) { - entry.insert(1); + if let Some(owner) = program_owners.get(index) { + entry.insert((owner, 1)); + } } } }); @@ -563,14 +568,14 @@ impl TransactionBatchProcessor { fn replenish_program_cache( &self, callback: &CB, - program_accounts_map: &HashMap, + program_accounts_map: &HashMap, check_program_modification_slot: bool, limit_to_load_programs: bool, ) -> ProgramCacheForTxBatch { let mut missing_programs: Vec<(Pubkey, (ProgramCacheMatchCriteria, u64))> = program_accounts_map .iter() - .map(|(pubkey, count)| { + .map(|(pubkey, (_, count))| { let match_criteria = if check_program_modification_slot { get_program_modification_slot(callback, pubkey) .map_or(ProgramCacheMatchCriteria::Tombstone, |slot| { @@ -1377,9 +1382,10 @@ mod tests { batch_processor.program_cache.write().unwrap().fork_graph = Some(Arc::downgrade(&fork_graph)); let key = Pubkey::new_unique(); + let owner = Pubkey::new_unique(); - let mut account_maps: HashMap = HashMap::new(); - account_maps.insert(key, 4); + let mut account_maps: HashMap = HashMap::new(); + account_maps.insert(key, (&owner, 4)); batch_processor.replenish_program_cache(&mock_bank, &account_maps, false, true); } @@ -1392,6 +1398,7 @@ mod tests { batch_processor.program_cache.write().unwrap().fork_graph = Some(Arc::downgrade(&fork_graph)); let key = Pubkey::new_unique(); + let owner = Pubkey::new_unique(); let mut account_data = AccountSharedData::default(); account_data.set_owner(bpf_loader::id()); @@ -1401,8 +1408,8 @@ mod tests { .unwrap() .insert(key, account_data); - let mut account_maps: HashMap = HashMap::new(); - account_maps.insert(key, 4); + let mut account_maps: HashMap = HashMap::new(); + account_maps.insert(key, (&owner, 4)); let mut loaded_missing = 0; for limit_to_load_programs in [false, true] { @@ -1511,8 +1518,8 @@ mod tests { ); assert_eq!(result.len(), 2); - assert_eq!(result[&key1], 2); - assert_eq!(result[&key2], 1); + assert_eq!(result[&key1], (&owner1, 2)); + assert_eq!(result[&key2], (&owner2, 1)); } #[test] @@ -1601,13 +1608,13 @@ mod tests { programs .get(&account3_pubkey) .expect("failed to find the program account"), - &2 + &(&program1_pubkey, 2) ); assert_eq!( programs .get(&account4_pubkey) .expect("failed to find the program account"), - &1 + &(&program2_pubkey, 1) ); } @@ -1699,7 +1706,7 @@ mod tests { programs .get(&account3_pubkey) .expect("failed to find the program account"), - &1 + &(&program1_pubkey, 1) ); } diff --git a/svm/tests/concurrent_tests.rs b/svm/tests/concurrent_tests.rs index 4d0a500b845bc7..021d91915f31e5 100644 --- a/svm/tests/concurrent_tests.rs +++ b/svm/tests/concurrent_tests.rs @@ -16,6 +16,7 @@ use { solana_program_runtime::loaded_programs::ProgramCacheEntryType, solana_sdk::{ account::{AccountSharedData, ReadableAccount, WritableAccount}, + bpf_loader_upgradeable, hash::Hash, instruction::AccountMeta, pubkey::Pubkey, @@ -44,16 +45,17 @@ fn program_cache_execution(threads: usize) { let fork_graph = Arc::new(RwLock::new(MockForkGraph {})); batch_processor.program_cache.write().unwrap().fork_graph = Some(Arc::downgrade(&fork_graph)); + const LOADER: Pubkey = bpf_loader_upgradeable::id(); let programs = vec![ deploy_program("hello-solana".to_string(), 0, &mut mock_bank), deploy_program("simple-transfer".to_string(), 0, &mut mock_bank), deploy_program("clock-sysvar".to_string(), 0, &mut mock_bank), ]; - let account_maps: HashMap = programs + let account_maps: HashMap = programs .iter() .enumerate() - .map(|(idx, key)| (*key, idx as u64)) + .map(|(idx, key)| (*key, (&LOADER, idx as u64))) .collect(); let ths: Vec<_> = (0..threads) From c6e88e43787f36b3f7b81bfa5d84cc59f3beadf7 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 16:50:18 +0100 Subject: [PATCH 08/33] v2.1: Feature - disable account loader special case (backport of #3548) (#3552) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Feature - disable account loader special case (#3548) Feature gate disable_account_loader_special_case. (cherry picked from commit f0d7e4f71cc1f0ed2d1f12614b4f254fb13f2303) Co-authored-by: Alexander Meißner --- runtime/src/bank/tests.rs | 10 ++-------- sdk/feature-set/src/lib.rs | 5 +++++ svm/src/account_loader.rs | 9 ++++++--- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/runtime/src/bank/tests.rs b/runtime/src/bank/tests.rs index 9903b3c3d66f1d..128ec740d2014e 100644 --- a/runtime/src/bank/tests.rs +++ b/runtime/src/bank/tests.rs @@ -7229,10 +7229,7 @@ fn test_bpf_loader_upgradeable_deploy_with_max_len() { ); assert_eq!( bank.process_transaction(&transaction), - Err(TransactionError::InstructionError( - 0, - InstructionError::InvalidAccountData - )), + Err(TransactionError::InvalidProgramForExecution), ); { let program_cache = bank.transaction_processor.program_cache.read().unwrap(); @@ -7253,10 +7250,7 @@ fn test_bpf_loader_upgradeable_deploy_with_max_len() { let transaction = Transaction::new(&[&binding], message, bank.last_blockhash()); assert_eq!( bank.process_transaction(&transaction), - Err(TransactionError::InstructionError( - 0, - InstructionError::InvalidAccountData, - )), + Err(TransactionError::InvalidProgramForExecution), ); { let program_cache = bank.transaction_processor.program_cache.read().unwrap(); diff --git a/sdk/feature-set/src/lib.rs b/sdk/feature-set/src/lib.rs index 83d59749758067..91ed7ae78fe2ba 100644 --- a/sdk/feature-set/src/lib.rs +++ b/sdk/feature-set/src/lib.rs @@ -869,6 +869,10 @@ pub mod reenable_sbpf_v1_execution { solana_pubkey::declare_id!("TestFeature21111111111111111111111111111111"); } +pub mod disable_account_loader_special_case { + solana_pubkey::declare_id!("EQUMpNFr7Nacb1sva56xn1aLfBxppEoSBH8RRVdkcD1x"); +} + lazy_static! { /// Map of feature identifiers to user-visible description pub static ref FEATURE_NAMES: HashMap = [ @@ -1081,6 +1085,7 @@ lazy_static! { (partitioned_epoch_rewards_superfeature::id(), "replaces enable_partitioned_epoch_reward to enable partitioned rewards at epoch boundary SIMD-0118"), (disable_sbpf_v1_execution::id(), "Disables execution of SBPFv1 programs"), (reenable_sbpf_v1_execution::id(), "Re-enables execution of SBPFv1 programs"), + (disable_account_loader_special_case::id(), "Disable account loader special case #3513"), /*************** ADD NEW FEATURES HERE ***************/ ] .iter() diff --git a/svm/src/account_loader.rs b/svm/src/account_loader.rs index fbaa222e938a23..2af7322b8f6090 100644 --- a/svm/src/account_loader.rs +++ b/svm/src/account_loader.rs @@ -424,6 +424,8 @@ fn load_transaction_account( loaded_programs: &ProgramCacheForTxBatch, ) -> Result<(LoadedTransactionAccount, bool)> { let mut account_found = true; + let disable_account_loader_special_case = + feature_set.is_active(&feature_set::disable_account_loader_special_case::id()); let is_instruction_account = u8::try_from(account_index) .map(|i| instruction_accounts.contains(&&i)) .unwrap_or(false); @@ -444,9 +446,10 @@ fn load_transaction_account( account: account_override.clone(), rent_collected: 0, } - } else if let Some(program) = (!is_instruction_account && !is_writable) - .then_some(()) - .and_then(|_| loaded_programs.find(account_key)) + } else if let Some(program) = + (!disable_account_loader_special_case && !is_instruction_account && !is_writable) + .then_some(()) + .and_then(|_| loaded_programs.find(account_key)) { // Optimization to skip loading of accounts which are only used as // programs in top-level instructions and not passed as instruction accounts. From 2d03f7e512f90d3a2c0baea134c809a58e9855a1 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 22:17:25 -0800 Subject: [PATCH 09/33] v2.1: svm: avoid rent collection in loader size test (backport of #3555) (#3560) svm: avoid rent collection in loader size test (#3555) (cherry picked from commit 7629a152d1c7748ebc3c3a11bf62445eae4c0e02) Co-authored-by: hana <81144685+2501babe@users.noreply.github.com> --- svm/src/account_loader.rs | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/svm/src/account_loader.rs b/svm/src/account_loader.rs index 2af7322b8f6090..d156e59329c2ee 100644 --- a/svm/src/account_loader.rs +++ b/svm/src/account_loader.rs @@ -2403,6 +2403,7 @@ mod tests { let program2_size = std::mem::size_of::() as u32; let mut program2_account = AccountSharedData::default(); program2_account.set_owner(loader_v3); + program2_account.set_lamports(LAMPORTS_PER_SOL); program2_account.set_executable(true); program2_account.set_data(vec![0; program2_size as usize]); program2_account @@ -2413,6 +2414,7 @@ mod tests { mock_bank.accounts_map.insert(program2, program2_account); let mut programdata2_account = AccountSharedData::default(); programdata2_account.set_owner(loader_v3); + programdata2_account.set_lamports(LAMPORTS_PER_SOL); programdata2_account.set_data(vec![0; program2_size as usize]); programdata2_account .set_state(&UpgradeableLoaderState::ProgramData { @@ -2665,23 +2667,16 @@ mod tests { program2_size + upgradeable_loader_size + fee_payer_size, ); - // programdata as readonly instruction account double-counts it + // programdata as instruction account double-counts it let ixns = vec![Instruction::new_with_bytes( program2, &[], vec![account_meta(programdata2, false)], )]; - let factor = if ixns[0].accounts[0].is_writable { - 1 - } else { - 2 - }; + test_data_size( ixns, - program2_size - + programdata2_size * factor - + upgradeable_loader_size - + fee_payer_size, + program2_size + programdata2_size * 2 + upgradeable_loader_size + fee_payer_size, ); // both as instruction accounts, for completeness @@ -2693,17 +2688,9 @@ mod tests { account_meta(programdata2, false), ], )]; - let factor = if ixns[0].accounts[0].is_writable { - 0 - } else { - 1 - }; test_data_size( ixns, - program2_size - + programdata2_size * factor - + upgradeable_loader_size - + fee_payer_size, + program2_size + programdata2_size + upgradeable_loader_size + fee_payer_size, ); // writable program bypasses the cache From 34e62d6698557ffac1c2d10d663aa06e1c5a467a Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 15 Nov 2024 15:07:04 -0600 Subject: [PATCH 10/33] v2.1: simplify forward packet batches (backport of #3642) (#3649) * simplify forward packet batches (#3642) simplify forward packet batches - nonzero, no branching (cherry picked from commit 2cb11a7e2cbe533d01f80cfa08f2c3b2a06ee01e) # Conflicts: # core/src/banking_stage/forward_packet_batches_by_accounts.rs * resolve conflicts --------- Co-authored-by: Andrew Fitzgerald --- .../forward_packet_batches_by_accounts.rs | 134 +++++------------- 1 file changed, 37 insertions(+), 97 deletions(-) diff --git a/core/src/banking_stage/forward_packet_batches_by_accounts.rs b/core/src/banking_stage/forward_packet_batches_by_accounts.rs index 67b323c2876a18..a6e372655c9e1d 100644 --- a/core/src/banking_stage/forward_packet_batches_by_accounts.rs +++ b/core/src/banking_stage/forward_packet_batches_by_accounts.rs @@ -1,15 +1,14 @@ use { super::immutable_deserialized_packet::ImmutableDeserializedPacket, + core::num::NonZeroU64, solana_cost_model::{ block_cost_limits, cost_model::CostModel, cost_tracker::{CostTracker, UpdatedCosts}, - transaction_cost::TransactionCost, }, solana_feature_set::FeatureSet, solana_perf::packet::Packet, solana_sdk::transaction::SanitizedTransaction, - solana_svm_transaction::svm_message::SVMMessage, std::sync::Arc, }; @@ -68,9 +67,8 @@ pub struct ForwardPacketBatchesByAccounts { cost_tracker: CostTracker, // Compute Unit limits for each batch - batch_vote_limit: u64, - batch_block_limit: u64, - batch_account_limit: u64, + batch_block_limit: NonZeroU64, + batch_account_limit: NonZeroU64, } impl ForwardPacketBatchesByAccounts { @@ -83,22 +81,32 @@ impl ForwardPacketBatchesByAccounts { .map(|_| ForwardBatch::default()) .collect(); - let batch_vote_limit = block_cost_limits::MAX_VOTE_UNITS.saturating_div(limit_ratio as u64); + let batch_vote_limit = + NonZeroU64::new(block_cost_limits::MAX_VOTE_UNITS.saturating_div(limit_ratio as u64)) + .expect("batch vote limit must not be zero"); let batch_block_limit = - block_cost_limits::MAX_BLOCK_UNITS.saturating_div(limit_ratio as u64); - let batch_account_limit = - block_cost_limits::MAX_WRITABLE_ACCOUNT_UNITS.saturating_div(limit_ratio as u64); + NonZeroU64::new(block_cost_limits::MAX_BLOCK_UNITS.saturating_div(limit_ratio as u64)) + .expect("batch block limit must not be zero"); + let batch_account_limit = NonZeroU64::new( + block_cost_limits::MAX_WRITABLE_ACCOUNT_UNITS.saturating_div(limit_ratio as u64), + ) + .expect("batch account limit must not be zero"); let mut cost_tracker = CostTracker::default(); cost_tracker.set_limits( - batch_account_limit.saturating_mul(number_of_batches as u64), - batch_block_limit.saturating_mul(number_of_batches as u64), - batch_vote_limit.saturating_mul(number_of_batches as u64), + batch_account_limit + .get() + .saturating_mul(number_of_batches as u64), + batch_block_limit + .get() + .saturating_mul(number_of_batches as u64), + batch_vote_limit + .get() + .saturating_mul(number_of_batches as u64), ); Self { forward_batches, cost_tracker, - batch_vote_limit, batch_block_limit, batch_account_limit, } @@ -113,7 +121,7 @@ impl ForwardPacketBatchesByAccounts { let tx_cost = CostModel::calculate_cost(sanitized_transaction, feature_set); if let Ok(updated_costs) = self.cost_tracker.try_add(&tx_cost) { - let batch_index = self.get_batch_index_by_updated_costs(&tx_cost, &updated_costs); + let batch_index = self.get_batch_index_by_updated_costs(&updated_costs); if let Some(forward_batch) = self.forward_batches.get_mut(batch_index) { forward_batch.forwardable_packets.push(immutable_packet); @@ -145,24 +153,12 @@ impl ForwardPacketBatchesByAccounts { // would be exceeded. Eg, if by block limit, it can be put into batch #1; by vote limit, it can // be put into batch #2; and by account limit, it can be put into batch #3; then it should be // put into batch #3 to satisfy all batch limits. - fn get_batch_index_by_updated_costs( - &self, - tx_cost: &TransactionCost, - updated_costs: &UpdatedCosts, - ) -> usize { - let Some(batch_index_by_block_limit) = - updated_costs.updated_block_cost.checked_div(match tx_cost { - TransactionCost::SimpleVote { .. } => self.batch_vote_limit, - TransactionCost::Transaction(_) => self.batch_block_limit, - }) - else { - unreachable!("batch vote limit or block limit must not be zero") - }; - + fn get_batch_index_by_updated_costs(&self, updated_costs: &UpdatedCosts) -> usize { + let batch_index_by_block_cost = + updated_costs.updated_block_cost / self.batch_block_limit.get(); let batch_index_by_account_limit = - updated_costs.updated_costliest_account_cost / self.batch_account_limit; - - batch_index_by_block_limit.max(batch_index_by_account_limit) as usize + updated_costs.updated_costliest_account_cost / self.batch_account_limit.get(); + batch_index_by_block_cost.max(batch_index_by_account_limit) as usize } } @@ -171,14 +167,10 @@ mod tests { use { super::*, crate::banking_stage::unprocessed_packet_batches::DeserializedPacket, - solana_cost_model::transaction_cost::{UsageCostDetails, WritableKeysTransaction}, solana_feature_set::FeatureSet, solana_sdk::{ - compute_budget::ComputeBudgetInstruction, - message::{Message, TransactionSignatureDetails}, - pubkey::Pubkey, - system_instruction, - transaction::Transaction, + compute_budget::ComputeBudgetInstruction, message::Message, pubkey::Pubkey, + system_instruction, transaction::Transaction, }, }; @@ -210,21 +202,6 @@ mod tests { (sanitized_transaction, deserialized_packet, limit_ratio) } - fn zero_transaction_cost() -> TransactionCost<'static, WritableKeysTransaction> { - static DUMMY_TRANSACTION: WritableKeysTransaction = WritableKeysTransaction(vec![]); - - TransactionCost::Transaction(UsageCostDetails { - transaction: &DUMMY_TRANSACTION, - signature_cost: 0, - write_lock_cost: 0, - data_bytes_cost: 0, - programs_execution_cost: 0, - loaded_accounts_data_size_cost: 0, - allocated_accounts_data_size: 0, - signature_details: TransactionSignatureDetails::new(0, 0, 0), - }) - } - #[test] fn test_try_add_packet_to_multiple_batches() { // setup two transactions, one has high priority that writes to hot account, the @@ -364,49 +341,16 @@ mod tests { fn test_get_batch_index_by_updated_costs() { let test_cost = 99; - // check against vote limit only - { - let mut forward_packet_batches_by_accounts = - ForwardPacketBatchesByAccounts::new_with_default_batch_limits(); - forward_packet_batches_by_accounts.batch_vote_limit = test_cost + 1; - - let dummy_transaction = WritableKeysTransaction(vec![]); - let transaction_cost = TransactionCost::SimpleVote { - transaction: &dummy_transaction, - }; - assert_eq!( - 0, - forward_packet_batches_by_accounts.get_batch_index_by_updated_costs( - &transaction_cost, - &UpdatedCosts { - updated_block_cost: test_cost, - updated_costliest_account_cost: 0 - } - ) - ); - assert_eq!( - 1, - forward_packet_batches_by_accounts.get_batch_index_by_updated_costs( - &transaction_cost, - &UpdatedCosts { - updated_block_cost: test_cost + 1, - updated_costliest_account_cost: 0 - } - ) - ); - } - // check against block limit only { let mut forward_packet_batches_by_accounts = ForwardPacketBatchesByAccounts::new_with_default_batch_limits(); - forward_packet_batches_by_accounts.batch_block_limit = test_cost + 1; + forward_packet_batches_by_accounts.batch_block_limit = + NonZeroU64::new(test_cost + 1).unwrap(); - let transaction_cost = zero_transaction_cost(); assert_eq!( 0, forward_packet_batches_by_accounts.get_batch_index_by_updated_costs( - &transaction_cost, &UpdatedCosts { updated_block_cost: test_cost, updated_costliest_account_cost: 0 @@ -416,7 +360,6 @@ mod tests { assert_eq!( 1, forward_packet_batches_by_accounts.get_batch_index_by_updated_costs( - &transaction_cost, &UpdatedCosts { updated_block_cost: test_cost + 1, updated_costliest_account_cost: 0 @@ -429,13 +372,12 @@ mod tests { { let mut forward_packet_batches_by_accounts = ForwardPacketBatchesByAccounts::new_with_default_batch_limits(); - forward_packet_batches_by_accounts.batch_account_limit = test_cost + 1; + forward_packet_batches_by_accounts.batch_account_limit = + NonZeroU64::new(test_cost + 1).unwrap(); - let transaction_cost = zero_transaction_cost(); assert_eq!( 0, forward_packet_batches_by_accounts.get_batch_index_by_updated_costs( - &transaction_cost, &UpdatedCosts { updated_block_cost: 0, updated_costliest_account_cost: test_cost @@ -445,7 +387,6 @@ mod tests { assert_eq!( 1, forward_packet_batches_by_accounts.get_batch_index_by_updated_costs( - &transaction_cost, &UpdatedCosts { updated_block_cost: 0, updated_costliest_account_cost: test_cost + 1 @@ -461,15 +402,14 @@ mod tests { { let mut forward_packet_batches_by_accounts = ForwardPacketBatchesByAccounts::new_with_default_batch_limits(); - forward_packet_batches_by_accounts.batch_block_limit = test_cost + 1; - forward_packet_batches_by_accounts.batch_vote_limit = test_cost / 2 + 1; - forward_packet_batches_by_accounts.batch_account_limit = test_cost / 3 + 1; + forward_packet_batches_by_accounts.batch_block_limit = + NonZeroU64::new(test_cost + 1).unwrap(); + forward_packet_batches_by_accounts.batch_account_limit = + NonZeroU64::new(test_cost / 3 + 1).unwrap(); - let transaction_cost = zero_transaction_cost(); assert_eq!( 2, forward_packet_batches_by_accounts.get_batch_index_by_updated_costs( - &transaction_cost, &UpdatedCosts { updated_block_cost: test_cost, updated_costliest_account_cost: test_cost From adeac02216dae627b90d7498a26e04276e88ed29 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 16 Nov 2024 07:28:35 +0900 Subject: [PATCH 11/33] v2.1: SIMD-0075: Precompile for Secp256r1 (backport of #3152) (#3662) * SIMD-0075: Precompile for Secp256r1 (#3152) * feat: secp256r1 precompile * add: num_signatures == 0 check from SIMD-0152 * rm: unnecessary comment * fix: legacy numeric constant * CI/fix: compilation for wasm32 target * Extract secp256r1 crate * rm: unnecessary import * update: sbf/Cargo.lock * rm: unnecesary re-exports * add: secp256r1 precompile to docs * add: docs/description to sdk/program/src/lib.rs * fix: alpha sort deps * fixes * docs fixes * add: solana-instruction std feature to deps * fix: lockfile from rebase * fix: target architecture * fix: workflow for client_target android * add: sudo to workflow perl install * fix: Cargo toml workspace member * modify: ranlib path in client-targets.yaml * fix: secp256r1/Cargo.toml formatting * add: openssl feature * fixes * add: precompile signature range error * more adjustments * change: feature id * fix: cargo format * Revert "add: precompile signature range error" This reverts commit fdf76739af10828d8c01d59b0cb912a1b044aaa2. * fix: cargo sanity * fix: client target openssl dep * fix: 31 byte r,s support in new_secp256r1_instruction * update: Cargo.lock * fix: unchecked math in new_secp256r1_instruction * fixes & increased test coverage * add: solana-sdk/openssl to all release binaries * update: comment to make openssl feature more clear * add: solana-sdk/openssl feature to dependencies * add: solana-sdk/openssl feature to dependencies * merge: master into secp256r1-precompile * fix: test-validator formatting * Revert "add: solana-sdk/openssl to all release binaries" This reverts commit 5c66b508be3a4324c9b7c8d93a81e41dc47c4312. * add: reserved key for secp256r1 program * modify: client-targets.yaml * modify: client/Cargo.toml solana-sdk dep * modify: ledger-tool/Cargo.toml solana-sdk * modify: test-validator/Cargo.toml solana-sdk dep * modify: validator/Cargo.toml solana-sdk dep * change: openssl feature to openssl-vendored * remove: solana-sdk dep from sdk/program * refactor: secp256r1 directory name * fmt * cargo.lock files * revert: rustc-demangle bump * cargo lock sanity * fix: faulty feature-set merge * fix: reserved keys pending feature id --------- Co-authored-by: Iceomatic <89707822+iceomatic@users.noreply.github.com> (cherry picked from commit da4f55ef4e04aebb5f3590127f98c03ca5881b28) # Conflicts: # Cargo.lock # Cargo.toml # ledger-tool/Cargo.toml # programs/sbf/Cargo.lock # sdk/Cargo.toml # sdk/feature-set/src/lib.rs # sdk/reserved-account-keys/Cargo.toml # sdk/src/reserved_account_keys.rs * Fix merge conflicts --------- Co-authored-by: Orion <89707822+0xRigel@users.noreply.github.com> Co-authored-by: Jon C --- .github/workflows/client-targets.yml | 5 + Cargo.lock | 15 + Cargo.toml | 2 + client/Cargo.toml | 2 +- docs/src/runtime/programs.md | 65 +++ ledger-tool/Cargo.toml | 2 +- programs/sbf/Cargo.lock | 13 + sdk/Cargo.toml | 3 + sdk/feature-set/src/lib.rs | 5 + sdk/secp256r1-program/Cargo.toml | 36 ++ sdk/secp256r1-program/src/lib.rs | 753 +++++++++++++++++++++++++++ sdk/src/precompiles.rs | 6 + sdk/src/reserved_account_keys.rs | 2 + test-validator/Cargo.toml | 2 +- validator/Cargo.toml | 2 +- 15 files changed, 909 insertions(+), 4 deletions(-) create mode 100644 sdk/secp256r1-program/Cargo.toml create mode 100644 sdk/secp256r1-program/src/lib.rs diff --git a/.github/workflows/client-targets.yml b/.github/workflows/client-targets.yml index 2147abde891089..ab15b9786c2162 100644 --- a/.github/workflows/client-targets.yml +++ b/.github/workflows/client-targets.yml @@ -34,6 +34,11 @@ jobs: steps: - uses: actions/checkout@v4 + # This can be removed once cargo-ndk >= 3.5.4 is used. + - name: Setup environment for Android NDK + run: | + echo "RANLIB=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib" >> $GITHUB_ENV + - run: cargo install cargo-ndk@2.12.2 - name: Setup Rust diff --git a/Cargo.lock b/Cargo.lock index 04f2c5bb5c1466..69e7c92db8349a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8052,6 +8052,7 @@ dependencies = [ "solana-sdk", "solana-sdk-macro", "solana-secp256k1-recover", + "solana-secp256r1-program", "solana-serde-varint", "solana-short-vec", "solana-signature", @@ -8086,6 +8087,20 @@ dependencies = [ "thiserror", ] +[[package]] +name = "solana-secp256r1-program" +version = "2.1.1" +dependencies = [ + "bytemuck", + "openssl", + "solana-feature-set", + "solana-instruction", + "solana-logger", + "solana-precompile-error", + "solana-pubkey", + "solana-sdk", +] + [[package]] name = "solana-security-txt" version = "1.1.1" diff --git a/Cargo.toml b/Cargo.toml index 9c5b178ab71821..5b629d3431d665 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -135,6 +135,7 @@ members = [ "sdk/pubkey", "sdk/rent", "sdk/sanitize", + "sdk/secp256r1-program", "sdk/serde-varint", "sdk/serialize-utils", "sdk/sha256-hasher", @@ -475,6 +476,7 @@ solana-rayon-threadlimit = { path = "rayon-threadlimit", version = "=2.1.1" } solana-remote-wallet = { path = "remote-wallet", version = "=2.1.1", default-features = false } solana-rent = { path = "sdk/rent", version = "=2.1.1", default-features = false } solana-sanitize = { path = "sdk/sanitize", version = "=2.1.1" } +solana-secp256r1-program = { path = "sdk/secp256r1-program", version = "=2.1.1", default-features = false } solana-serde-varint = { path = "sdk/serde-varint", version = "=2.1.1" } solana-serialize-utils = { path = "sdk/serialize-utils", version = "=2.1.1" } solana-sha256-hasher = { path = "sdk/sha256-hasher", version = "=2.1.1" } diff --git a/client/Cargo.toml b/client/Cargo.toml index d68ca8c22e36bf..f138b2e7a10cf2 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -27,7 +27,7 @@ solana-quic-client = { workspace = true } solana-rpc-client = { workspace = true, features = ["default"] } solana-rpc-client-api = { workspace = true } solana-rpc-client-nonce-utils = { workspace = true } -solana-sdk = { workspace = true } +solana-sdk = { workspace = true, features = ["openssl-vendored"] } solana-streamer = { workspace = true } solana-thin-client = { workspace = true } solana-tpu-client = { workspace = true, features = ["default"] } diff --git a/docs/src/runtime/programs.md b/docs/src/runtime/programs.md index bcb43b1ad51070..f7df53bed530ac 100644 --- a/docs/src/runtime/programs.md +++ b/docs/src/runtime/programs.md @@ -168,6 +168,71 @@ also receive data from the transaction itself. Cost of the transaction will count the number of signatures to verify multiplied by the signature cost verify multiplier. +## Secp256r1 Program + +The program for verifying secp256r1 signatures. It takes a secp256r1 signature, +a public key, and a message. Up to 8 signatures can be verified. If any of the +signatures fail to verify, an error is returned. + +- Program id: `Secp256r1SigVerify1111111111111111111111111` +- Instructions: [secp256r1_instruction](https://docs.rs/solana-secp256r1) + +The secp256r1 program processes an instruction. The first `u8` is a count of the number of signatures to check, followed by a single byte padding. After that, the following struct is serialized, one for each signature to check: + +```rust +struct Secp256r1SignatureOffsets { + signature_offset: u16, // offset to compact secp256r1 signature of 64 bytes + signature_instruction_index: u16, // instruction index to find signature + public_key_offset: u16, // offset to compressed public key of 33 bytes + public_key_instruction_index: u16, // instruction index to find public key + message_data_offset: u16, // offset to start of message data + message_data_size: u16, // size of message data + message_instruction_index: u16, // index of instruction data to get message data +} + +``` + +The pseudo code of the signature verification: +``` +process_instruction() { + if data.len() < SIGNATURE_OFFSETS_START { + return Error + } + + num_signatures = data[0] as usize + if num_signatures == 0 || num_signatures > 8 { + return Error + } + + expected_data_size = num_signatures * SIGNATURE_OFFSETS_SERIALIZED_SIZE + SIGNATURE_OFFSETS_START + if data.len() < expected_data_size { + return Error + } + + for i in 0..num_signatures { + offsets = parse_signature_offsets(data, i) + + signature = get_data_slice(data, instruction_datas, offsets.signature_instruction_index, offsets.signature_offset, SIGNATURE_SERIALIZED_SIZE) + + if s > half_curve_order { + return Error + } + + pubkey = get_data_slice(data, instruction_datas, offsets.public_key_instruction_index, offsets.public_key_offset, COMPRESSED_PUBKEY_SERIALIZED_SIZE) + + message = get_data_slice(data, instruction_datas, offsets.message_instruction_index, offsets.message_data_offset, offsets.message_data_size) + + if !verify_signature(signature, pubkey, message) { + return Error + } + } + + return Success +} +``` +Note: Low S values are enforced for all signatures to avoid accidental signature +malleability. + ### Optimization notes The operation will have to take place after (at least partial) deserialization, diff --git a/ledger-tool/Cargo.toml b/ledger-tool/Cargo.toml index abfa07ade49d38..d5f18defbc15f9 100644 --- a/ledger-tool/Cargo.toml +++ b/ledger-tool/Cargo.toml @@ -45,7 +45,7 @@ solana-measure = { workspace = true } solana-program-runtime = { workspace = true } solana-rpc = { workspace = true } solana-runtime = { workspace = true, features = ["dev-context-only-utils"] } -solana-sdk = { workspace = true } +solana-sdk = { workspace = true, features = ["openssl-vendored"] } solana-stake-program = { workspace = true } solana-storage-bigtable = { workspace = true } solana-streamer = { workspace = true } diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index 8322f0949e2fd1..8235d7e407adfe 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -6803,6 +6803,7 @@ dependencies = [ "solana-sanitize", "solana-sdk-macro", "solana-secp256k1-recover", + "solana-secp256r1-program", "solana-serde-varint", "solana-short-vec", "solana-signature", @@ -6831,6 +6832,18 @@ dependencies = [ "thiserror", ] +[[package]] +name = "solana-secp256r1-program" +version = "2.1.1" +dependencies = [ + "bytemuck", + "openssl", + "solana-feature-set", + "solana-instruction", + "solana-precompile-error", + "solana-pubkey", +] + [[package]] name = "solana-security-txt" version = "1.1.1" diff --git a/sdk/Cargo.toml b/sdk/Cargo.toml index 59e9cfabbbfe22..332fccab346d11 100644 --- a/sdk/Cargo.toml +++ b/sdk/Cargo.toml @@ -50,6 +50,8 @@ frozen-abi = [ "solana-signature/frozen-abi", "solana-transaction-error/frozen-abi" ] +# Enables the "vendored" feature of openssl inside of secp256r1-program +openssl-vendored = ["solana-secp256r1-program/openssl-vendored"] [dependencies] bincode = { workspace = true } @@ -111,6 +113,7 @@ solana-pubkey = { workspace = true, default-features = false, features = ["std"] solana-sanitize = { workspace = true } solana-sdk-macro = { workspace = true } solana-secp256k1-recover = { workspace = true } +solana-secp256r1-program = { workspace = true, default-features = false } solana-serde-varint = { workspace = true } solana-short-vec = { workspace = true } solana-signature = { workspace = true, features = [ diff --git a/sdk/feature-set/src/lib.rs b/sdk/feature-set/src/lib.rs index 91ed7ae78fe2ba..e7e41251e7bfd9 100644 --- a/sdk/feature-set/src/lib.rs +++ b/sdk/feature-set/src/lib.rs @@ -873,6 +873,10 @@ pub mod disable_account_loader_special_case { solana_pubkey::declare_id!("EQUMpNFr7Nacb1sva56xn1aLfBxppEoSBH8RRVdkcD1x"); } +pub mod enable_secp256r1_precompile { + solana_pubkey::declare_id!("sr11RdZWgbHTHxSroPALe6zgaT5A1K9LcE4nfsZS4gi"); +} + lazy_static! { /// Map of feature identifiers to user-visible description pub static ref FEATURE_NAMES: HashMap = [ @@ -1086,6 +1090,7 @@ lazy_static! { (disable_sbpf_v1_execution::id(), "Disables execution of SBPFv1 programs"), (reenable_sbpf_v1_execution::id(), "Re-enables execution of SBPFv1 programs"), (disable_account_loader_special_case::id(), "Disable account loader special case #3513"), + (enable_secp256r1_precompile::id(), "Enable secp256r1 precompile SIMD-0075"), /*************** ADD NEW FEATURES HERE ***************/ ] .iter() diff --git a/sdk/secp256r1-program/Cargo.toml b/sdk/secp256r1-program/Cargo.toml new file mode 100644 index 00000000000000..941bda03285f6a --- /dev/null +++ b/sdk/secp256r1-program/Cargo.toml @@ -0,0 +1,36 @@ +[package] +name = "solana-secp256r1-program" +description = "Precompile implementation for the secp256r1 elliptic curve." +documentation = "https://docs.rs/solana-secp256r1" +version = { workspace = true } +authors = { workspace = true } +repository = { workspace = true } +homepage = { workspace = true } +license = { workspace = true } +edition = { workspace = true } + +[dependencies] +bytemuck = { workspace = true, features = ["derive"] } +solana-feature-set = { workspace = true } +solana-precompile-error = { workspace = true } +solana-pubkey = { workspace = true } + +[target.'cfg(all(not(target_arch = "wasm32"), not(target_os = "solana")))'.dependencies] +solana-instruction = { workspace = true, features = ["std"] } +openssl = { workspace = true } + +[dev-dependencies] +solana-logger = { workspace = true } +solana-sdk = { path = "../" } + +[features] +default = [] +openssl-vendored = ["openssl/vendored"] + +[package.metadata.docs.rs] +targets = ["x86_64-unknown-linux-gnu"] +all-features = true +rustdoc-args = ["--cfg=docsrs"] + +[lints] +workspace = true diff --git a/sdk/secp256r1-program/src/lib.rs b/sdk/secp256r1-program/src/lib.rs new file mode 100644 index 00000000000000..334cbb78c4515c --- /dev/null +++ b/sdk/secp256r1-program/src/lib.rs @@ -0,0 +1,753 @@ +//! Instructions for the [secp256r1 native program][np]. +//! [np]: https://docs.solana.com/developing/runtime-facilities/programs#secp256r1-program +//! +//! Note on Signature Malleability: +//! This precompile requires low-S values in signatures (s <= half_curve_order) to prevent signature malleability. +//! Signature malleability means that for a valid signature (r,s), (r, order-s) is also valid for the +//! same message and public key. +//! +//! This property can be problematic for developers who assume each signature is unique. Without enforcing +//! low-S values, the same message and key can produce two different valid signatures, potentially breaking +//! replay protection schemes that rely on signature uniqueness. +solana_pubkey::declare_id!("Secp256r1SigVerify1111111111111111111111111"); + +use bytemuck::{Pod, Zeroable}; + +#[derive(Default, Debug, Copy, Clone, Zeroable, Pod, Eq, PartialEq)] +#[repr(C)] +pub struct Secp256r1SignatureOffsets { + /// Offset to compact secp256r1 signature of 64 bytes + pub signature_offset: u16, + + /// Instruction index where the signature can be found + pub signature_instruction_index: u16, + + /// Offset to compressed public key of 33 bytes + pub public_key_offset: u16, + + /// Instruction index where the public key can be found + pub public_key_instruction_index: u16, + + /// Offset to the start of message data + pub message_data_offset: u16, + + /// Size of message data in bytes + pub message_data_size: u16, + + /// Instruction index where the message data can be found + pub message_instruction_index: u16, +} + +#[cfg(all(not(target_arch = "wasm32"), not(target_os = "solana")))] +mod target_arch { + use { + crate::Secp256r1SignatureOffsets, + bytemuck::bytes_of, + openssl::{ + bn::{BigNum, BigNumContext}, + ec::{EcGroup, EcKey, EcPoint}, + ecdsa::EcdsaSig, + nid::Nid, + pkey::{PKey, Private}, + sign::{Signer, Verifier}, + }, + solana_feature_set::FeatureSet, + solana_instruction::Instruction, + solana_precompile_error::PrecompileError, + }; + + pub const COMPRESSED_PUBKEY_SERIALIZED_SIZE: usize = 33; + pub const SIGNATURE_SERIALIZED_SIZE: usize = 64; + pub const SIGNATURE_OFFSETS_SERIALIZED_SIZE: usize = 14; + pub const SIGNATURE_OFFSETS_START: usize = 2; + pub const DATA_START: usize = SIGNATURE_OFFSETS_SERIALIZED_SIZE + SIGNATURE_OFFSETS_START; + + // Order as defined in SEC2: 2.7.2 Recommended Parameters secp256r1 + pub const SECP256R1_ORDER: [u8; FIELD_SIZE] = [ + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBC, 0xE6, 0xFA, 0xAD, 0xA7, 0x17, 0x9E, 0x84, 0xF3, 0xB9, 0xCA, 0xC2, 0xFC, 0x63, + 0x25, 0x51, + ]; + + // Computed SECP256R1_ORDER - 1 + pub const SECP256R1_ORDER_MINUS_ONE: [u8; FIELD_SIZE] = [ + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBC, 0xE6, 0xFA, 0xAD, 0xA7, 0x17, 0x9E, 0x84, 0xF3, 0xB9, 0xCA, 0xC2, 0xFC, 0x63, + 0x25, 0x50, + ]; + + // Computed half order + const SECP256R1_HALF_ORDER: [u8; FIELD_SIZE] = [ + 0x7F, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xDE, 0x73, 0x7D, 0x56, 0xD3, 0x8B, 0xCF, 0x42, 0x79, 0xDC, 0xE5, 0x61, 0x7E, 0x31, + 0x92, 0xA8, + ]; + // Field size in bytes + const FIELD_SIZE: usize = 32; + + pub fn new_secp256r1_instruction( + message: &[u8], + signing_key: EcKey, + ) -> Result> { + let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1)?; + if signing_key.group().curve_name() != Some(Nid::X9_62_PRIME256V1) { + return Err(("Signing key must be on the secp256r1 curve".to_string()).into()); + } + + let mut ctx = BigNumContext::new()?; + let pubkey = signing_key.public_key().to_bytes( + &group, + openssl::ec::PointConversionForm::COMPRESSED, + &mut ctx, + )?; + + let signing_key_pkey = PKey::from_ec_key(signing_key)?; + + let mut signer = Signer::new(openssl::hash::MessageDigest::sha256(), &signing_key_pkey)?; + signer.update(message)?; + let signature = signer.sign_to_vec()?; + + let ecdsa_sig = EcdsaSig::from_der(&signature)?; + let r = ecdsa_sig.r().to_vec(); + let s = ecdsa_sig.s().to_vec(); + let mut signature = vec![0u8; SIGNATURE_SERIALIZED_SIZE]; + + // Incase of an r or s value of 31 bytes we need to pad it to 32 bytes + let mut padded_r = vec![0u8; FIELD_SIZE]; + let mut padded_s = vec![0u8; FIELD_SIZE]; + padded_r[FIELD_SIZE.saturating_sub(r.len())..].copy_from_slice(&r); + padded_s[FIELD_SIZE.saturating_sub(s.len())..].copy_from_slice(&s); + + signature[..FIELD_SIZE].copy_from_slice(&padded_r); + signature[FIELD_SIZE..].copy_from_slice(&padded_s); + + // Check if s > half_order, if so, compute s = order - s + let s_bignum = BigNum::from_slice(&s)?; + let half_order = BigNum::from_slice(&SECP256R1_HALF_ORDER)?; + let order = BigNum::from_slice(&SECP256R1_ORDER)?; + if s_bignum > half_order { + let mut new_s = BigNum::new()?; + new_s.checked_sub(&order, &s_bignum)?; + let new_s_bytes = new_s.to_vec(); + + // Incase the new s value is 31 bytes we need to pad it to 32 bytes + let mut new_padded_s = vec![0u8; FIELD_SIZE]; + new_padded_s[FIELD_SIZE.saturating_sub(new_s_bytes.len())..] + .copy_from_slice(&new_s_bytes); + + signature[FIELD_SIZE..].copy_from_slice(&new_padded_s); + } + + assert_eq!(pubkey.len(), COMPRESSED_PUBKEY_SERIALIZED_SIZE); + assert_eq!(signature.len(), SIGNATURE_SERIALIZED_SIZE); + + let mut instruction_data = Vec::with_capacity( + DATA_START + .saturating_add(SIGNATURE_SERIALIZED_SIZE) + .saturating_add(COMPRESSED_PUBKEY_SERIALIZED_SIZE) + .saturating_add(message.len()), + ); + + let num_signatures: u8 = 1; + let public_key_offset = DATA_START; + let signature_offset = public_key_offset.saturating_add(COMPRESSED_PUBKEY_SERIALIZED_SIZE); + let message_data_offset = signature_offset.saturating_add(SIGNATURE_SERIALIZED_SIZE); + + instruction_data.extend_from_slice(bytes_of(&[num_signatures, 0])); + + let offsets = Secp256r1SignatureOffsets { + signature_offset: signature_offset as u16, + signature_instruction_index: u16::MAX, + public_key_offset: public_key_offset as u16, + public_key_instruction_index: u16::MAX, + message_data_offset: message_data_offset as u16, + message_data_size: message.len() as u16, + message_instruction_index: u16::MAX, + }; + + instruction_data.extend_from_slice(bytes_of(&offsets)); + instruction_data.extend_from_slice(&pubkey); + instruction_data.extend_from_slice(&signature); + instruction_data.extend_from_slice(message); + + Ok(Instruction { + program_id: crate::id(), + accounts: vec![], + data: instruction_data, + }) + } + + pub fn verify( + data: &[u8], + instruction_datas: &[&[u8]], + _feature_set: &FeatureSet, + ) -> Result<(), PrecompileError> { + if data.len() < SIGNATURE_OFFSETS_START { + return Err(PrecompileError::InvalidInstructionDataSize); + } + let num_signatures = data[0] as usize; + if num_signatures == 0 { + return Err(PrecompileError::InvalidInstructionDataSize); + } + if num_signatures > 8 { + return Err(PrecompileError::InvalidInstructionDataSize); + } + + let expected_data_size = num_signatures + .saturating_mul(SIGNATURE_OFFSETS_SERIALIZED_SIZE) + .saturating_add(SIGNATURE_OFFSETS_START); + + // We do not check or use the byte at data[1] + if data.len() < expected_data_size { + return Err(PrecompileError::InvalidInstructionDataSize); + } + + // Parse half order from constant + let half_order: BigNum = BigNum::from_slice(&SECP256R1_HALF_ORDER) + .map_err(|_| PrecompileError::InvalidSignature)?; + + // Parse order - 1 from constant + let order_minus_one: BigNum = BigNum::from_slice(&SECP256R1_ORDER_MINUS_ONE) + .map_err(|_| PrecompileError::InvalidSignature)?; + + // Create a BigNum for 1 + let one = BigNum::from_u32(1).map_err(|_| PrecompileError::InvalidSignature)?; + + // Define curve group + let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1) + .map_err(|_| PrecompileError::InvalidSignature)?; + let mut ctx = BigNumContext::new().map_err(|_| PrecompileError::InvalidSignature)?; + + for i in 0..num_signatures { + let start = i + .saturating_mul(SIGNATURE_OFFSETS_SERIALIZED_SIZE) + .saturating_add(SIGNATURE_OFFSETS_START); + let end = start.saturating_add(SIGNATURE_OFFSETS_SERIALIZED_SIZE); + + // bytemuck wants structures aligned + let offsets: &Secp256r1SignatureOffsets = + bytemuck::try_from_bytes(&data[start..end]) + .map_err(|_| PrecompileError::InvalidDataOffsets)?; + + // Parse out signature + let signature = get_data_slice( + data, + instruction_datas, + offsets.signature_instruction_index, + offsets.signature_offset, + SIGNATURE_SERIALIZED_SIZE, + )?; + + // Parse out pubkey + let pubkey = get_data_slice( + data, + instruction_datas, + offsets.public_key_instruction_index, + offsets.public_key_offset, + COMPRESSED_PUBKEY_SERIALIZED_SIZE, + )?; + + // Parse out message + let message = get_data_slice( + data, + instruction_datas, + offsets.message_instruction_index, + offsets.message_data_offset, + offsets.message_data_size as usize, + )?; + + let r_bignum = BigNum::from_slice(&signature[..FIELD_SIZE]) + .map_err(|_| PrecompileError::InvalidSignature)?; + let s_bignum = BigNum::from_slice(&signature[FIELD_SIZE..]) + .map_err(|_| PrecompileError::InvalidSignature)?; + + // Check that the signature is generally in range + let within_range = r_bignum >= one + && r_bignum <= order_minus_one + && s_bignum >= one + && s_bignum <= half_order; + + if !within_range { + return Err(PrecompileError::InvalidSignature); + } + + // Create an ECDSA signature object from the ASN.1 integers + let ecdsa_sig = openssl::ecdsa::EcdsaSig::from_private_components(r_bignum, s_bignum) + .and_then(|sig| sig.to_der()) + .map_err(|_| PrecompileError::InvalidSignature)?; + + let public_key_point = EcPoint::from_bytes(&group, pubkey, &mut ctx) + .map_err(|_| PrecompileError::InvalidPublicKey)?; + let public_key = EcKey::from_public_key(&group, &public_key_point) + .map_err(|_| PrecompileError::InvalidPublicKey)?; + let public_key_as_pkey = + PKey::from_ec_key(public_key).map_err(|_| PrecompileError::InvalidPublicKey)?; + + let mut verifier = + Verifier::new(openssl::hash::MessageDigest::sha256(), &public_key_as_pkey) + .map_err(|_| PrecompileError::InvalidSignature)?; + verifier + .update(message) + .map_err(|_| PrecompileError::InvalidSignature)?; + + if !verifier + .verify(&ecdsa_sig) + .map_err(|_| PrecompileError::InvalidSignature)? + { + return Err(PrecompileError::InvalidSignature); + } + } + Ok(()) + } + + fn get_data_slice<'a>( + data: &'a [u8], + instruction_datas: &'a [&[u8]], + instruction_index: u16, + offset_start: u16, + size: usize, + ) -> Result<&'a [u8], PrecompileError> { + let instruction = if instruction_index == u16::MAX { + data + } else { + let signature_index = instruction_index as usize; + if signature_index >= instruction_datas.len() { + return Err(PrecompileError::InvalidDataOffsets); + } + instruction_datas[signature_index] + }; + + let start = offset_start as usize; + let end = start.saturating_add(size); + if end > instruction.len() { + return Err(PrecompileError::InvalidDataOffsets); + } + + Ok(&instruction[start..end]) + } + + #[cfg(test)] + mod test { + use { + super::*, + solana_feature_set::FeatureSet, + solana_sdk::{ + hash::Hash, + signature::{Keypair, Signer}, + transaction::Transaction, + }, + }; + + fn test_case( + num_signatures: u16, + offsets: &Secp256r1SignatureOffsets, + ) -> Result<(), PrecompileError> { + assert_eq!( + bytemuck::bytes_of(offsets).len(), + SIGNATURE_OFFSETS_SERIALIZED_SIZE + ); + + let mut instruction_data = vec![0u8; DATA_START]; + instruction_data[0..SIGNATURE_OFFSETS_START].copy_from_slice(bytes_of(&num_signatures)); + instruction_data[SIGNATURE_OFFSETS_START..DATA_START] + .copy_from_slice(bytes_of(offsets)); + verify( + &instruction_data, + &[&[0u8; 100]], + &FeatureSet::all_enabled(), + ) + } + + #[test] + fn test_invalid_offsets() { + solana_logger::setup(); + + let mut instruction_data = vec![0u8; DATA_START]; + let offsets = Secp256r1SignatureOffsets::default(); + instruction_data[0..SIGNATURE_OFFSETS_START].copy_from_slice(bytes_of(&1u16)); + instruction_data[SIGNATURE_OFFSETS_START..DATA_START] + .copy_from_slice(bytes_of(&offsets)); + instruction_data.truncate(instruction_data.len() - 1); + + assert_eq!( + verify( + &instruction_data, + &[&[0u8; 100]], + &FeatureSet::all_enabled() + ), + Err(PrecompileError::InvalidInstructionDataSize) + ); + + let offsets = Secp256r1SignatureOffsets { + signature_instruction_index: 1, + ..Secp256r1SignatureOffsets::default() + }; + assert_eq!( + test_case(1, &offsets), + Err(PrecompileError::InvalidDataOffsets) + ); + + let offsets = Secp256r1SignatureOffsets { + message_instruction_index: 1, + ..Secp256r1SignatureOffsets::default() + }; + assert_eq!( + test_case(1, &offsets), + Err(PrecompileError::InvalidDataOffsets) + ); + + let offsets = Secp256r1SignatureOffsets { + public_key_instruction_index: 1, + ..Secp256r1SignatureOffsets::default() + }; + assert_eq!( + test_case(1, &offsets), + Err(PrecompileError::InvalidDataOffsets) + ); + } + + #[test] + fn test_invalid_signature_data_size() { + solana_logger::setup(); + + // Test data.len() < SIGNATURE_OFFSETS_START + let small_data = vec![0u8; SIGNATURE_OFFSETS_START - 1]; + assert_eq!( + verify(&small_data, &[&[]], &FeatureSet::all_enabled()), + Err(PrecompileError::InvalidInstructionDataSize) + ); + + // Test num_signatures == 0 + let mut zero_sigs_data = vec![0u8; DATA_START]; + zero_sigs_data[0] = 0; // Set num_signatures to 0 + assert_eq!( + verify(&zero_sigs_data, &[&[]], &FeatureSet::all_enabled()), + Err(PrecompileError::InvalidInstructionDataSize) + ); + + // Test num_signatures > 8 + let mut too_many_sigs = vec![0u8; DATA_START]; + too_many_sigs[0] = 9; // Set num_signatures to 9 + assert_eq!( + verify(&too_many_sigs, &[&[]], &FeatureSet::all_enabled()), + Err(PrecompileError::InvalidInstructionDataSize) + ); + } + #[test] + fn test_message_data_offsets() { + let offsets = Secp256r1SignatureOffsets { + message_data_offset: 99, + message_data_size: 1, + ..Secp256r1SignatureOffsets::default() + }; + assert_eq!( + test_case(1, &offsets), + Err(PrecompileError::InvalidSignature) + ); + + let offsets = Secp256r1SignatureOffsets { + message_data_offset: 100, + message_data_size: 1, + ..Secp256r1SignatureOffsets::default() + }; + assert_eq!( + test_case(1, &offsets), + Err(PrecompileError::InvalidDataOffsets) + ); + + let offsets = Secp256r1SignatureOffsets { + message_data_offset: 100, + message_data_size: 1000, + ..Secp256r1SignatureOffsets::default() + }; + assert_eq!( + test_case(1, &offsets), + Err(PrecompileError::InvalidDataOffsets) + ); + + let offsets = Secp256r1SignatureOffsets { + message_data_offset: u16::MAX, + message_data_size: u16::MAX, + ..Secp256r1SignatureOffsets::default() + }; + assert_eq!( + test_case(1, &offsets), + Err(PrecompileError::InvalidDataOffsets) + ); + } + + #[test] + fn test_pubkey_offset() { + let offsets = Secp256r1SignatureOffsets { + public_key_offset: u16::MAX, + ..Secp256r1SignatureOffsets::default() + }; + assert_eq!( + test_case(1, &offsets), + Err(PrecompileError::InvalidDataOffsets) + ); + + let offsets = Secp256r1SignatureOffsets { + public_key_offset: 100 - (COMPRESSED_PUBKEY_SERIALIZED_SIZE as u16) + 1, + ..Secp256r1SignatureOffsets::default() + }; + assert_eq!( + test_case(1, &offsets), + Err(PrecompileError::InvalidDataOffsets) + ); + } + + #[test] + fn test_signature_offset() { + let offsets = Secp256r1SignatureOffsets { + signature_offset: u16::MAX, + ..Secp256r1SignatureOffsets::default() + }; + assert_eq!( + test_case(1, &offsets), + Err(PrecompileError::InvalidDataOffsets) + ); + + let offsets = Secp256r1SignatureOffsets { + signature_offset: 100 - (SIGNATURE_SERIALIZED_SIZE as u16) + 1, + ..Secp256r1SignatureOffsets::default() + }; + assert_eq!( + test_case(1, &offsets), + Err(PrecompileError::InvalidDataOffsets) + ); + } + + #[test] + fn test_secp256r1() { + solana_logger::setup(); + let message_arr = b"hello"; + let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap(); + let signing_key = EcKey::generate(&group).unwrap(); + let mut instruction = new_secp256r1_instruction(message_arr, signing_key).unwrap(); + let mint_keypair = Keypair::new(); + let feature_set = FeatureSet::all_enabled(); + + let tx = Transaction::new_signed_with_payer( + &[instruction.clone()], + Some(&mint_keypair.pubkey()), + &[&mint_keypair], + Hash::default(), + ); + + assert!(tx.verify_precompiles(&feature_set).is_ok()); + + // The message is the last field in the instruction data so + // changing its last byte will also change the signature validity + let message_byte_index = instruction.data.len() - 1; + instruction.data[message_byte_index] = + instruction.data[message_byte_index].wrapping_add(12); + let tx = Transaction::new_signed_with_payer( + &[instruction.clone()], + Some(&mint_keypair.pubkey()), + &[&mint_keypair], + Hash::default(), + ); + + assert!(tx.verify_precompiles(&feature_set).is_err()); + } + + #[test] + fn test_secp256r1_high_s() { + solana_logger::setup(); + let message_arr = b"hello"; + let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap(); + let signing_key = EcKey::generate(&group).unwrap(); + let mut instruction = new_secp256r1_instruction(message_arr, signing_key).unwrap(); + + // To double check that the untampered low-S value signature passes + let feature_set = FeatureSet::all_enabled(); + let tx_pass = verify( + instruction.data.as_slice(), + &[instruction.data.as_slice()], + &feature_set, + ); + assert!(tx_pass.is_ok()); + + // Determine offsets at which to perform the S-value manipulation + let public_key_offset = DATA_START; + let signature_offset = public_key_offset + COMPRESSED_PUBKEY_SERIALIZED_SIZE; + let s_offset = signature_offset + FIELD_SIZE; + + // Create a high S value by doing order - s + let order = BigNum::from_slice(&SECP256R1_ORDER).unwrap(); + let current_s = + BigNum::from_slice(&instruction.data[s_offset..s_offset + FIELD_SIZE]).unwrap(); + let mut high_s = BigNum::new().unwrap(); + high_s.checked_sub(&order, ¤t_s).unwrap(); + + // Replace the S value in the signature with our high S + instruction.data[s_offset..s_offset + FIELD_SIZE].copy_from_slice(&high_s.to_vec()); + + // Since Transaction::verify_precompiles only returns a vague + // `InvalidAccountIndex` error on precompile failure, we use verify() + // here direclty to check for the specific + // InvalidSignatureValueRange error + let tx_fail = verify( + instruction.data.as_slice(), + &[instruction.data.as_slice()], + &feature_set, + ); + assert!(tx_fail.unwrap_err() == PrecompileError::InvalidSignature); + } + #[test] + fn test_new_secp256r1_instruction_31byte_components() { + solana_logger::setup(); + let message_arr = b"hello"; + let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap(); + let signing_key = EcKey::generate(&group).unwrap(); + + // Keep generating signatures until we get one with a 31-byte component + loop { + let instruction = + new_secp256r1_instruction(message_arr, signing_key.clone()).unwrap(); + + // Extract r and s from the signature + let signature_offset = DATA_START + COMPRESSED_PUBKEY_SERIALIZED_SIZE; + let r = &instruction.data[signature_offset..signature_offset + FIELD_SIZE]; + let s = &instruction.data + [signature_offset + FIELD_SIZE..signature_offset + 2 * FIELD_SIZE]; + + // Convert to BigNum and back to get byte representation + let r_bn = BigNum::from_slice(r).unwrap(); + let s_bn = BigNum::from_slice(s).unwrap(); + let r_bytes = r_bn.to_vec(); + let s_bytes = s_bn.to_vec(); + + if r_bytes.len() == 31 || s_bytes.len() == 31 { + // Once found, verify the signature and break out of the loop + let mint_keypair = Keypair::new(); + let tx = Transaction::new_signed_with_payer( + &[instruction], + Some(&mint_keypair.pubkey()), + &[&mint_keypair], + Hash::default(), + ); + + let feature_set = FeatureSet::all_enabled(); + assert!(tx.verify_precompiles(&feature_set).is_ok()); + break; + } + } + } + + #[test] + fn test_new_secp256r1_instruction_signing_key() { + solana_logger::setup(); + let message_arr = b"hello"; + let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap(); + let signing_key = EcKey::generate(&group).unwrap(); + assert!(new_secp256r1_instruction(message_arr, signing_key).is_ok()); + + let incorrect_group = EcGroup::from_curve_name(Nid::X9_62_PRIME192V1).unwrap(); + let incorrect_key = EcKey::generate(&incorrect_group).unwrap(); + assert!(new_secp256r1_instruction(message_arr, incorrect_key).is_err()); + } + #[test] + fn test_secp256r1_order() { + let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap(); + let mut ctx = BigNumContext::new().unwrap(); + let mut openssl_order = BigNum::new().unwrap(); + group.order(&mut openssl_order, &mut ctx).unwrap(); + + let our_order = BigNum::from_slice(&SECP256R1_ORDER).unwrap(); + assert_eq!(our_order, openssl_order); + } + + #[test] + fn test_secp256r1_order_minus_one() { + let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap(); + let mut ctx = BigNumContext::new().unwrap(); + let mut openssl_order = BigNum::new().unwrap(); + group.order(&mut openssl_order, &mut ctx).unwrap(); + + let mut expected_order_minus_one = BigNum::new().unwrap(); + expected_order_minus_one + .checked_sub(&openssl_order, &BigNum::from_u32(1).unwrap()) + .unwrap(); + + let our_order_minus_one = BigNum::from_slice(&SECP256R1_ORDER_MINUS_ONE).unwrap(); + assert_eq!(our_order_minus_one, expected_order_minus_one); + } + + #[test] + fn test_secp256r1_half_order() { + // Get the secp256r1 curve group + let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap(); + + // Get the order from OpenSSL + let mut ctx = BigNumContext::new().unwrap(); + let mut openssl_order = BigNum::new().unwrap(); + group.order(&mut openssl_order, &mut ctx).unwrap(); + + // Calculate half order + let mut calculated_half_order = BigNum::new().unwrap(); + let two = BigNum::from_u32(2).unwrap(); + calculated_half_order + .checked_div(&openssl_order, &two, &mut ctx) + .unwrap(); + + // Get our constant half order + let our_half_order = BigNum::from_slice(&SECP256R1_HALF_ORDER).unwrap(); + + // Compare the calculated half order with our constant + assert_eq!(calculated_half_order, our_half_order); + } + + #[test] + fn test_secp256r1_order_relationships() { + let group = EcGroup::from_curve_name(Nid::X9_62_PRIME256V1).unwrap(); + let mut ctx = BigNumContext::new().unwrap(); + let mut openssl_order = BigNum::new().unwrap(); + group.order(&mut openssl_order, &mut ctx).unwrap(); + + let our_order = BigNum::from_slice(&SECP256R1_ORDER).unwrap(); + let our_order_minus_one = BigNum::from_slice(&SECP256R1_ORDER_MINUS_ONE).unwrap(); + let our_half_order = BigNum::from_slice(&SECP256R1_HALF_ORDER).unwrap(); + + // Verify our order matches OpenSSL's order + assert_eq!(our_order, openssl_order); + + // Verify order - 1 + let mut expected_order_minus_one = BigNum::new().unwrap(); + expected_order_minus_one + .checked_sub(&openssl_order, &BigNum::from_u32(1).unwrap()) + .unwrap(); + assert_eq!(our_order_minus_one, expected_order_minus_one); + + // Verify half order + let mut expected_half_order = BigNum::new().unwrap(); + expected_half_order + .checked_div(&openssl_order, &BigNum::from_u32(2).unwrap(), &mut ctx) + .unwrap(); + assert_eq!(our_half_order, expected_half_order); + + // Verify half order * 2 = order - 1 + let mut double_half_order = BigNum::new().unwrap(); + double_half_order + .checked_mul(&our_half_order, &BigNum::from_u32(2).unwrap(), &mut ctx) + .unwrap(); + assert_eq!(double_half_order, expected_order_minus_one); + } + } +} + +#[cfg(any(target_arch = "wasm32", target_os = "solana"))] +mod target_arch { + use {solana_feature_set::FeatureSet, solana_precompile_error::PrecompileError}; + + pub fn verify( + _data: &[u8], + _instruction_datas: &[&[u8]], + _feature_set: &FeatureSet, + ) -> Result<(), PrecompileError> { + Err(PrecompileError::InvalidSignature) + } +} + +pub use self::target_arch::*; diff --git a/sdk/src/precompiles.rs b/sdk/src/precompiles.rs index 4812b81e347717..5b40397bb75301 100644 --- a/sdk/src/precompiles.rs +++ b/sdk/src/precompiles.rs @@ -7,6 +7,7 @@ pub use solana_precompile_error::PrecompileError; use { lazy_static::lazy_static, solana_feature_set::FeatureSet, solana_program::instruction::CompiledInstruction, solana_pubkey::Pubkey, + solana_secp256r1_program as secp256r1_program, }; /// All precompiled programs must implement the `Verify` function @@ -63,6 +64,11 @@ lazy_static! { None, // always enabled crate::ed25519_instruction::verify, ), + Precompile::new( + secp256r1_program::id(), + Some(solana_feature_set::enable_secp256r1_precompile::id()), + secp256r1_program::verify, + ) ]; } diff --git a/sdk/src/reserved_account_keys.rs b/sdk/src/reserved_account_keys.rs index 49cde7fd9bcd79..d985f76f16b8d3 100644 --- a/sdk/src/reserved_account_keys.rs +++ b/sdk/src/reserved_account_keys.rs @@ -12,6 +12,7 @@ use { }, lazy_static::lazy_static, solana_feature_set::{self as feature_set, FeatureSet}, + solana_secp256r1_program as secp256r1_program, std::collections::{HashMap, HashSet}, }; @@ -160,6 +161,7 @@ lazy_static! { ReservedAccount::new_active(feature::id()), ReservedAccount::new_pending(loader_v4::id(), feature_set::add_new_reserved_account_keys::id()), ReservedAccount::new_pending(secp256k1_program::id(), feature_set::add_new_reserved_account_keys::id()), + ReservedAccount::new_pending(secp256r1_program::id(), feature_set::enable_secp256r1_precompile::id()), #[allow(deprecated)] ReservedAccount::new_active(stake::config::id()), ReservedAccount::new_active(stake::program::id()), diff --git a/test-validator/Cargo.toml b/test-validator/Cargo.toml index 4fa4330f90be00..33e542540058a6 100644 --- a/test-validator/Cargo.toml +++ b/test-validator/Cargo.toml @@ -31,7 +31,7 @@ solana-rpc = { workspace = true } solana-rpc-client = { workspace = true } solana-rpc-client-api = { workspace = true } solana-runtime = { workspace = true } -solana-sdk = { workspace = true } +solana-sdk = { workspace = true, features = ["openssl-vendored"] } solana-streamer = { workspace = true } solana-tpu-client = { workspace = true } tokio = { workspace = true, features = ["full"] } diff --git a/validator/Cargo.toml b/validator/Cargo.toml index 39e5c4d1b19d0e..2adfd48845b45d 100644 --- a/validator/Cargo.toml +++ b/validator/Cargo.toml @@ -55,7 +55,7 @@ solana-rpc = { workspace = true } solana-rpc-client = { workspace = true } solana-rpc-client-api = { workspace = true } solana-runtime = { workspace = true } -solana-sdk = { workspace = true } +solana-sdk = { workspace = true, features = ["openssl-vendored"] } solana-send-transaction-service = { workspace = true } solana-storage-bigtable = { workspace = true } solana-streamer = { workspace = true } From 7d7a9f60d1951c862e18e4ed47ebb40f8bbfeea7 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sun, 17 Nov 2024 10:20:29 -0500 Subject: [PATCH 12/33] v2.1: Startup only sets latest_full_snapshot_slot if generating snapshots (backport of #3633) (#3668) Startup only sets latest_full_snapshot_slot if generating snapshots (#3633) (cherry picked from commit 4ea10c224ae4a360db0011fb08d4b58d60d3a5a6) Co-authored-by: Brooks --- accounts-db/src/accounts_db.rs | 1 + ledger/src/bank_forks_utils.rs | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/accounts-db/src/accounts_db.rs b/accounts-db/src/accounts_db.rs index c735e84b65c489..3a63139ad893ab 100644 --- a/accounts-db/src/accounts_db.rs +++ b/accounts-db/src/accounts_db.rs @@ -1548,6 +1548,7 @@ pub struct AccountsDb { pub epoch_accounts_hash_manager: EpochAccountsHashManager, /// The latest full snapshot slot dictates how to handle zero lamport accounts + /// Note, this is None if we're told to *not* take snapshots latest_full_snapshot_slot: SeqLock>, /// Flag to indicate if the experimental accounts lattice hash is enabled. diff --git a/ledger/src/bank_forks_utils.rs b/ledger/src/bank_forks_utils.rs index 3afacad873951f..9112130e1bffb3 100644 --- a/ledger/src/bank_forks_utils.rs +++ b/ledger/src/bank_forks_utils.rs @@ -335,10 +335,20 @@ fn bank_forks_from_snapshot( // We must inform accounts-db of the latest full snapshot slot, which is used by the background // processes to handle zero lamport accounts. Since we've now successfully loaded the bank // from snapshots, this is a good time to do that update. - bank.rc - .accounts - .accounts_db - .set_latest_full_snapshot_slot(full_snapshot_archive_info.slot()); + // Note, this must only be set if we should generate snapshots. + if snapshot_config.should_generate_snapshots() { + bank.rc + .accounts + .accounts_db + .set_latest_full_snapshot_slot(full_snapshot_archive_info.slot()); + } else { + assert!(bank + .rc + .accounts + .accounts_db + .latest_full_snapshot_slot() + .is_none()); + } let full_snapshot_hash = FullSnapshotHash(( full_snapshot_archive_info.slot(), From 7dd23ab8fa323ab081314e96ae72b1d5530838c7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 12:30:51 +0800 Subject: [PATCH 13/33] Bump version to v2.1.2 (#3679) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- Cargo.lock | 362 ++++++++--------- Cargo.toml | 292 ++++++------- programs/sbf/Cargo.lock | 382 +++++++++--------- programs/sbf/Cargo.toml | 78 ++-- .../tests/crates/fail/Cargo.toml | 4 +- .../tests/crates/noop/Cargo.toml | 4 +- .../tests/crates/package-metadata/Cargo.toml | 6 +- .../crates/workspace-metadata/Cargo.toml | 4 +- svm/examples/json-rpc/program/Cargo.toml | 4 +- .../example-programs/clock-sysvar/Cargo.toml | 4 +- .../example-programs/hello-solana/Cargo.toml | 4 +- .../simple-transfer/Cargo.toml | 4 +- .../transfer-from-account/Cargo.toml | 4 +- .../write-to-account/Cargo.toml | 4 +- 14 files changed, 578 insertions(+), 578 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 69e7c92db8349a..561bb586115e08 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "agave-accounts-hash-cache-tool" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ahash 0.8.11", "bytemuck", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "agave-cargo-registry" -version = "2.1.1" +version = "2.1.2" dependencies = [ "clap 2.33.3", "flate2", @@ -109,7 +109,7 @@ dependencies = [ [[package]] name = "agave-geyser-plugin-interface" -version = "2.1.1" +version = "2.1.2" dependencies = [ "log", "solana-sdk", @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "agave-install" -version = "2.1.1" +version = "2.1.2" dependencies = [ "atty", "bincode", @@ -155,7 +155,7 @@ dependencies = [ [[package]] name = "agave-ledger-tool" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_cmd", "bs58", @@ -212,7 +212,7 @@ dependencies = [ [[package]] name = "agave-store-histogram" -version = "2.1.1" +version = "2.1.2" dependencies = [ "clap 2.33.3", "solana-version", @@ -220,7 +220,7 @@ dependencies = [ [[package]] name = "agave-store-tool" -version = "2.1.1" +version = "2.1.2" dependencies = [ "clap 2.33.3", "solana-accounts-db", @@ -230,7 +230,7 @@ dependencies = [ [[package]] name = "agave-transaction-view" -version = "2.1.1" +version = "2.1.2" dependencies = [ "agave-transaction-view", "bincode", @@ -241,7 +241,7 @@ dependencies = [ [[package]] name = "agave-validator" -version = "2.1.1" +version = "2.1.2" dependencies = [ "agave-geyser-plugin-interface", "assert_cmd", @@ -312,7 +312,7 @@ dependencies = [ [[package]] name = "agave-watchtower" -version = "2.1.1" +version = "2.1.2" dependencies = [ "clap 2.33.3", "humantime", @@ -2518,7 +2518,7 @@ dependencies = [ [[package]] name = "gen-headers" -version = "2.1.1" +version = "2.1.2" dependencies = [ "log", "regex", @@ -2526,7 +2526,7 @@ dependencies = [ [[package]] name = "gen-syscall-list" -version = "2.1.1" +version = "2.1.2" dependencies = [ "regex", ] @@ -4487,7 +4487,7 @@ dependencies = [ [[package]] name = "proto" -version = "2.1.1" +version = "2.1.2" dependencies = [ "protobuf-src", "tonic-build", @@ -4764,7 +4764,7 @@ dependencies = [ [[package]] name = "rbpf-cli" -version = "2.1.1" +version = "2.1.2" [[package]] name = "rdrand" @@ -5656,7 +5656,7 @@ dependencies = [ [[package]] name = "solana-account" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "qualifier_attr", @@ -5674,7 +5674,7 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "2.1.1" +version = "2.1.2" dependencies = [ "Inflector", "assert_matches", @@ -5700,7 +5700,7 @@ dependencies = [ [[package]] name = "solana-account-decoder-client-types" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "bs58", @@ -5714,7 +5714,7 @@ dependencies = [ [[package]] name = "solana-account-info" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "serde", @@ -5725,7 +5725,7 @@ dependencies = [ [[package]] name = "solana-accounts-bench" -version = "2.1.1" +version = "2.1.2" dependencies = [ "clap 2.33.3", "log", @@ -5739,7 +5739,7 @@ dependencies = [ [[package]] name = "solana-accounts-cluster-bench" -version = "2.1.1" +version = "2.1.2" dependencies = [ "clap 2.33.3", "log", @@ -5771,7 +5771,7 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ahash 0.8.11", "assert_matches", @@ -5832,7 +5832,7 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "bytemuck", @@ -5849,7 +5849,7 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program-tests" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -5861,14 +5861,14 @@ dependencies = [ [[package]] name = "solana-atomic-u64" -version = "2.1.1" +version = "2.1.2" dependencies = [ "parking_lot 0.12.3", ] [[package]] name = "solana-banking-bench" -version = "2.1.1" +version = "2.1.2" dependencies = [ "clap 3.2.23", "crossbeam-channel", @@ -5892,7 +5892,7 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "borsh 1.5.1", "futures 0.3.31", @@ -5909,7 +5909,7 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -5919,7 +5919,7 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "crossbeam-channel", @@ -5938,7 +5938,7 @@ dependencies = [ [[package]] name = "solana-bench-streamer" -version = "2.1.1" +version = "2.1.2" dependencies = [ "clap 3.2.23", "crossbeam-channel", @@ -5949,7 +5949,7 @@ dependencies = [ [[package]] name = "solana-bench-tps" -version = "2.1.1" +version = "2.1.2" dependencies = [ "chrono", "clap 2.33.3", @@ -5996,7 +5996,7 @@ dependencies = [ [[package]] name = "solana-bincode" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "serde", @@ -6006,7 +6006,7 @@ dependencies = [ [[package]] name = "solana-bloom" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bv", "fnv", @@ -6023,7 +6023,7 @@ dependencies = [ [[package]] name = "solana-bn254" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ark-bn254", "ark-ec", @@ -6040,7 +6040,7 @@ dependencies = [ [[package]] name = "solana-borsh" -version = "2.1.1" +version = "2.1.2" dependencies = [ "borsh 0.10.3", "borsh 1.5.1", @@ -6048,7 +6048,7 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -6078,7 +6078,7 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program-tests" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -6089,7 +6089,7 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bv", "bytemuck", @@ -6109,7 +6109,7 @@ dependencies = [ [[package]] name = "solana-builtins-default-costs" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ahash 0.8.11", "lazy_static", @@ -6129,7 +6129,7 @@ dependencies = [ [[package]] name = "solana-cargo-build-sbf" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_cmd", "bzip2", @@ -6150,7 +6150,7 @@ dependencies = [ [[package]] name = "solana-cargo-test-sbf" -version = "2.1.1" +version = "2.1.2" dependencies = [ "cargo_metadata", "clap 3.2.23", @@ -6162,7 +6162,7 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "chrono", @@ -6180,7 +6180,7 @@ dependencies = [ [[package]] name = "solana-clap-v3-utils" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "chrono", @@ -6199,7 +6199,7 @@ dependencies = [ [[package]] name = "solana-cli" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -6261,7 +6261,7 @@ dependencies = [ [[package]] name = "solana-cli-config" -version = "2.1.1" +version = "2.1.2" dependencies = [ "anyhow", "dirs-next", @@ -6276,7 +6276,7 @@ dependencies = [ [[package]] name = "solana-cli-output" -version = "2.1.1" +version = "2.1.2" dependencies = [ "Inflector", "base64 0.22.1", @@ -6302,7 +6302,7 @@ dependencies = [ [[package]] name = "solana-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "async-trait", "bincode", @@ -6333,7 +6333,7 @@ dependencies = [ [[package]] name = "solana-client-test" -version = "2.1.1" +version = "2.1.2" dependencies = [ "futures-util", "rand 0.8.5", @@ -6362,7 +6362,7 @@ dependencies = [ [[package]] name = "solana-clock" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -6374,7 +6374,7 @@ dependencies = [ [[package]] name = "solana-compute-budget" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-frozen-abi", "solana-sdk", @@ -6382,7 +6382,7 @@ dependencies = [ [[package]] name = "solana-compute-budget-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -6390,7 +6390,7 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "chrono", @@ -6405,7 +6405,7 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "2.1.1" +version = "2.1.2" dependencies = [ "async-trait", "bincode", @@ -6428,7 +6428,7 @@ dependencies = [ [[package]] name = "solana-core" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ahash 0.8.11", "anyhow", @@ -6525,7 +6525,7 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ahash 0.8.11", "itertools 0.12.1", @@ -6551,7 +6551,7 @@ dependencies = [ [[package]] name = "solana-cpi" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-account-info", "solana-define-syscall", @@ -6566,7 +6566,7 @@ dependencies = [ [[package]] name = "solana-curve25519" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bytemuck", "bytemuck_derive", @@ -6577,7 +6577,7 @@ dependencies = [ [[package]] name = "solana-decode-error" -version = "2.1.1" +version = "2.1.2" dependencies = [ "num-derive", "num-traits", @@ -6585,11 +6585,11 @@ dependencies = [ [[package]] name = "solana-define-syscall" -version = "2.1.1" +version = "2.1.2" [[package]] name = "solana-derivation-path" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "derivation-path", @@ -6599,7 +6599,7 @@ dependencies = [ [[package]] name = "solana-dos" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "clap 3.2.23", @@ -6632,7 +6632,7 @@ dependencies = [ [[package]] name = "solana-download-utils" -version = "2.1.1" +version = "2.1.2" dependencies = [ "console", "indicatif", @@ -6644,7 +6644,7 @@ dependencies = [ [[package]] name = "solana-ed25519-program-tests" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "ed25519-dalek", @@ -6655,7 +6655,7 @@ dependencies = [ [[package]] name = "solana-entry" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -6677,7 +6677,7 @@ dependencies = [ [[package]] name = "solana-epoch-schedule" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -6692,7 +6692,7 @@ dependencies = [ [[package]] name = "solana-faucet" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "byteorder", @@ -6714,7 +6714,7 @@ dependencies = [ [[package]] name = "solana-feature-set" -version = "2.1.1" +version = "2.1.2" dependencies = [ "lazy_static", "solana-clock", @@ -6728,7 +6728,7 @@ dependencies = [ [[package]] name = "solana-fee" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-sdk", "solana-svm-transaction", @@ -6736,7 +6736,7 @@ dependencies = [ [[package]] name = "solana-fee-calculator" -version = "2.1.1" +version = "2.1.2" dependencies = [ "log", "serde", @@ -6750,7 +6750,7 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bitflags 2.6.0", "bs58", @@ -6771,7 +6771,7 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "2.1.1" +version = "2.1.2" dependencies = [ "proc-macro2", "quote", @@ -6780,7 +6780,7 @@ dependencies = [ [[package]] name = "solana-genesis" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "bincode", @@ -6807,7 +6807,7 @@ dependencies = [ [[package]] name = "solana-genesis-utils" -version = "2.1.1" +version = "2.1.2" dependencies = [ "log", "solana-accounts-db", @@ -6818,7 +6818,7 @@ dependencies = [ [[package]] name = "solana-geyser-plugin-manager" -version = "2.1.1" +version = "2.1.2" dependencies = [ "agave-geyser-plugin-interface", "bs58", @@ -6843,7 +6843,7 @@ dependencies = [ [[package]] name = "solana-gossip" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -6897,7 +6897,7 @@ dependencies = [ [[package]] name = "solana-hash" -version = "2.1.1" +version = "2.1.2" dependencies = [ "borsh 1.5.1", "bs58", @@ -6916,7 +6916,7 @@ dependencies = [ [[package]] name = "solana-inflation" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -6926,7 +6926,7 @@ dependencies = [ [[package]] name = "solana-inline-spl" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bytemuck", "solana-pubkey", @@ -6934,7 +6934,7 @@ dependencies = [ [[package]] name = "solana-instruction" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "borsh 1.5.1", @@ -6953,7 +6953,7 @@ dependencies = [ [[package]] name = "solana-keygen" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bs58", "clap 3.2.23", @@ -6972,7 +6972,7 @@ dependencies = [ [[package]] name = "solana-last-restart-slot" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -6982,7 +6982,7 @@ dependencies = [ [[package]] name = "solana-lattice-hash" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "blake3", @@ -6995,7 +6995,7 @@ dependencies = [ [[package]] name = "solana-ledger" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -7072,7 +7072,7 @@ dependencies = [ [[package]] name = "solana-loader-v4-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "log", @@ -7088,7 +7088,7 @@ dependencies = [ [[package]] name = "solana-local-cluster" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "crossbeam-channel", @@ -7130,7 +7130,7 @@ dependencies = [ [[package]] name = "solana-log-analyzer" -version = "2.1.1" +version = "2.1.2" dependencies = [ "byte-unit", "clap 3.2.23", @@ -7143,14 +7143,14 @@ dependencies = [ [[package]] name = "solana-log-collector" -version = "2.1.1" +version = "2.1.2" dependencies = [ "log", ] [[package]] name = "solana-logger" -version = "2.1.1" +version = "2.1.2" dependencies = [ "env_logger", "lazy_static", @@ -7159,15 +7159,15 @@ dependencies = [ [[package]] name = "solana-measure" -version = "2.1.1" +version = "2.1.2" [[package]] name = "solana-memory-management" -version = "2.1.1" +version = "2.1.2" [[package]] name = "solana-merkle-root-bench" -version = "2.1.1" +version = "2.1.2" dependencies = [ "clap 2.33.3", "log", @@ -7180,7 +7180,7 @@ dependencies = [ [[package]] name = "solana-merkle-tree" -version = "2.1.1" +version = "2.1.2" dependencies = [ "fast-math", "hex", @@ -7190,7 +7190,7 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "2.1.1" +version = "2.1.2" dependencies = [ "crossbeam-channel", "env_logger", @@ -7206,18 +7206,18 @@ dependencies = [ [[package]] name = "solana-msg" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-define-syscall", ] [[package]] name = "solana-native-token" -version = "2.1.1" +version = "2.1.2" [[package]] name = "solana-net-shaper" -version = "2.1.1" +version = "2.1.2" dependencies = [ "clap 3.2.23", "rand 0.8.5", @@ -7229,7 +7229,7 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "clap 3.2.23", @@ -7255,7 +7255,7 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-notifier" -version = "2.1.1" +version = "2.1.2" dependencies = [ "log", "reqwest", @@ -7265,7 +7265,7 @@ dependencies = [ [[package]] name = "solana-package-metadata" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-package-metadata-macro", "solana-pubkey", @@ -7273,7 +7273,7 @@ dependencies = [ [[package]] name = "solana-package-metadata-macro" -version = "2.1.1" +version = "2.1.2" dependencies = [ "proc-macro2", "quote", @@ -7283,7 +7283,7 @@ dependencies = [ [[package]] name = "solana-packet" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "bitflags 2.6.0", @@ -7299,7 +7299,7 @@ dependencies = [ [[package]] name = "solana-perf" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ahash 0.8.11", "assert_matches", @@ -7330,7 +7330,7 @@ dependencies = [ [[package]] name = "solana-poh" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -7352,7 +7352,7 @@ dependencies = [ [[package]] name = "solana-poh-bench" -version = "2.1.1" +version = "2.1.2" dependencies = [ "clap 3.2.23", "log", @@ -7368,7 +7368,7 @@ dependencies = [ [[package]] name = "solana-poseidon" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ark-bn254", "light-poseidon", @@ -7378,7 +7378,7 @@ dependencies = [ [[package]] name = "solana-precompile-error" -version = "2.1.1" +version = "2.1.2" dependencies = [ "num-traits", "solana-decode-error", @@ -7386,7 +7386,7 @@ dependencies = [ [[package]] name = "solana-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "anyhow", "arbitrary", @@ -7471,7 +7471,7 @@ dependencies = [ [[package]] name = "solana-program-entrypoint" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-account-info", "solana-msg", @@ -7481,7 +7481,7 @@ dependencies = [ [[package]] name = "solana-program-error" -version = "2.1.1" +version = "2.1.2" dependencies = [ "borsh 1.5.1", "num-traits", @@ -7495,7 +7495,7 @@ dependencies = [ [[package]] name = "solana-program-memory" -version = "2.1.1" +version = "2.1.2" dependencies = [ "num-traits", "solana-define-syscall", @@ -7503,18 +7503,18 @@ dependencies = [ [[package]] name = "solana-program-option" -version = "2.1.1" +version = "2.1.2" [[package]] name = "solana-program-pack" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program-error", ] [[package]] name = "solana-program-runtime" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "base64 0.22.1", @@ -7547,7 +7547,7 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "async-trait", @@ -7583,7 +7583,7 @@ dependencies = [ [[package]] name = "solana-pubkey" -version = "2.1.1" +version = "2.1.2" dependencies = [ "anyhow", "arbitrary", @@ -7616,7 +7616,7 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "anyhow", "crossbeam-channel", @@ -7640,7 +7640,7 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "async-lock", "async-trait", @@ -7667,7 +7667,7 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "2.1.1" +version = "2.1.2" dependencies = [ "lazy_static", "num_cpus", @@ -7675,7 +7675,7 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "console", @@ -7695,7 +7695,7 @@ dependencies = [ [[package]] name = "solana-rent" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -7709,7 +7709,7 @@ dependencies = [ [[package]] name = "solana-rpc" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "bincode", @@ -7771,7 +7771,7 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "async-trait", @@ -7802,7 +7802,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "2.1.1" +version = "2.1.2" dependencies = [ "anyhow", "base64 0.22.1", @@ -7825,7 +7825,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "2.1.1" +version = "2.1.2" dependencies = [ "anyhow", "clap 2.33.3", @@ -7842,7 +7842,7 @@ dependencies = [ [[package]] name = "solana-rpc-test" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "bs58", @@ -7870,7 +7870,7 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "2.1.1" +version = "2.1.2" dependencies = [ "agave-transaction-view", "ahash 0.8.11", @@ -7969,7 +7969,7 @@ dependencies = [ [[package]] name = "solana-runtime-transaction" -version = "2.1.1" +version = "2.1.2" dependencies = [ "agave-transaction-view", "bincode", @@ -7987,11 +7987,11 @@ dependencies = [ [[package]] name = "solana-sanitize" -version = "2.1.1" +version = "2.1.2" [[package]] name = "solana-sdk" -version = "2.1.1" +version = "2.1.2" dependencies = [ "anyhow", "assert_matches", @@ -8065,7 +8065,7 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bs58", "proc-macro2", @@ -8075,7 +8075,7 @@ dependencies = [ [[package]] name = "solana-secp256k1-recover" -version = "2.1.1" +version = "2.1.2" dependencies = [ "anyhow", "borsh 1.5.1", @@ -8089,7 +8089,7 @@ dependencies = [ [[package]] name = "solana-secp256r1-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bytemuck", "openssl", @@ -8109,7 +8109,7 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "2.1.1" +version = "2.1.2" dependencies = [ "crossbeam-channel", "log", @@ -8125,7 +8125,7 @@ dependencies = [ [[package]] name = "solana-serde-varint" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "rand 0.8.5", @@ -8136,7 +8136,7 @@ dependencies = [ [[package]] name = "solana-serialize-utils" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "borsh 1.5.1", @@ -8149,7 +8149,7 @@ dependencies = [ [[package]] name = "solana-sha256-hasher" -version = "2.1.1" +version = "2.1.2" dependencies = [ "sha2 0.10.8", "solana-define-syscall", @@ -8158,7 +8158,7 @@ dependencies = [ [[package]] name = "solana-short-vec" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -8170,7 +8170,7 @@ dependencies = [ [[package]] name = "solana-signature" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bs58", "curve25519-dalek 4.1.3", @@ -8187,7 +8187,7 @@ dependencies = [ [[package]] name = "solana-slot-hashes" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -8198,7 +8198,7 @@ dependencies = [ [[package]] name = "solana-slot-history" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bv", "serde", @@ -8208,7 +8208,7 @@ dependencies = [ [[package]] name = "solana-stable-layout" -version = "2.1.1" +version = "2.1.2" dependencies = [ "memoffset 0.9.1", "solana-instruction", @@ -8217,7 +8217,7 @@ dependencies = [ [[package]] name = "solana-stake-accounts" -version = "2.1.1" +version = "2.1.2" dependencies = [ "clap 2.33.3", "solana-clap-utils", @@ -8233,7 +8233,7 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -8253,7 +8253,7 @@ dependencies = [ [[package]] name = "solana-stake-program-tests" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -8266,7 +8266,7 @@ dependencies = [ [[package]] name = "solana-storage-bigtable" -version = "2.1.1" +version = "2.1.2" dependencies = [ "backoff", "bincode", @@ -8298,7 +8298,7 @@ dependencies = [ [[package]] name = "solana-storage-proto" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "bs58", @@ -8314,7 +8314,7 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "async-channel", @@ -8352,7 +8352,7 @@ dependencies = [ [[package]] name = "solana-svm" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "base64 0.22.1", @@ -8421,7 +8421,7 @@ dependencies = [ [[package]] name = "solana-svm-conformance" -version = "2.1.1" +version = "2.1.2" dependencies = [ "prost", "prost-build", @@ -8430,7 +8430,7 @@ dependencies = [ [[package]] name = "solana-svm-example-paytube" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-bpf-loader-program", "solana-client", @@ -8448,21 +8448,21 @@ dependencies = [ [[package]] name = "solana-svm-rent-collector" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-sdk", ] [[package]] name = "solana-svm-transaction" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-sdk", ] [[package]] name = "solana-system-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -8480,14 +8480,14 @@ dependencies = [ [[package]] name = "solana-sysvar-id" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-pubkey", ] [[package]] name = "solana-test-validator" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "bincode", @@ -8518,7 +8518,7 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "log", @@ -8532,7 +8532,7 @@ dependencies = [ [[package]] name = "solana-timings" -version = "2.1.1" +version = "2.1.2" dependencies = [ "eager", "enum-iterator", @@ -8541,7 +8541,7 @@ dependencies = [ [[package]] name = "solana-tokens" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -8575,7 +8575,7 @@ dependencies = [ [[package]] name = "solana-tps-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "log", "serial_test", @@ -8596,7 +8596,7 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "async-trait", "bincode", @@ -8617,7 +8617,7 @@ dependencies = [ [[package]] name = "solana-tpu-client-next" -version = "2.1.1" +version = "2.1.2" dependencies = [ "async-trait", "crossbeam-channel", @@ -8641,7 +8641,7 @@ dependencies = [ [[package]] name = "solana-transaction-dos" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "clap 2.33.3", @@ -8668,7 +8668,7 @@ dependencies = [ [[package]] name = "solana-transaction-error" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -8680,7 +8680,7 @@ dependencies = [ [[package]] name = "solana-transaction-metrics-tracker" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "bincode", @@ -8694,7 +8694,7 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "2.1.1" +version = "2.1.2" dependencies = [ "Inflector", "base64 0.22.1", @@ -8720,7 +8720,7 @@ dependencies = [ [[package]] name = "solana-transaction-status-client-types" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "bincode", @@ -8736,7 +8736,7 @@ dependencies = [ [[package]] name = "solana-turbine" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -8777,7 +8777,7 @@ dependencies = [ [[package]] name = "solana-type-overrides" -version = "2.1.1" +version = "2.1.2" dependencies = [ "futures 0.3.31", "lazy_static", @@ -8787,7 +8787,7 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "async-trait", "solana-connection-cache", @@ -8800,7 +8800,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-logic" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "solana-sdk", @@ -8809,7 +8809,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-pool" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "crossbeam-channel", @@ -8831,7 +8831,7 @@ dependencies = [ [[package]] name = "solana-upload-perf" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde_json", "solana-metrics", @@ -8839,7 +8839,7 @@ dependencies = [ [[package]] name = "solana-version" -version = "2.1.1" +version = "2.1.2" dependencies = [ "semver 1.0.23", "serde", @@ -8853,7 +8853,7 @@ dependencies = [ [[package]] name = "solana-vote" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "itertools 0.12.1", @@ -8869,7 +8869,7 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -8892,7 +8892,7 @@ dependencies = [ [[package]] name = "solana-wen-restart" -version = "2.1.1" +version = "2.1.2" dependencies = [ "anyhow", "assert_matches", @@ -8921,7 +8921,7 @@ dependencies = [ [[package]] name = "solana-zk-elgamal-proof-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bytemuck", "num-derive", @@ -8934,7 +8934,7 @@ dependencies = [ [[package]] name = "solana-zk-keygen" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bs58", "clap 3.2.23", @@ -8951,7 +8951,7 @@ dependencies = [ [[package]] name = "solana-zk-sdk" -version = "2.1.1" +version = "2.1.2" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -8982,7 +8982,7 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bytemuck", "criterion", @@ -8998,7 +8998,7 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program-tests" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bytemuck", "curve25519-dalek 4.1.3", @@ -9010,7 +9010,7 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "2.1.1" +version = "2.1.2" dependencies = [ "aes-gcm-siv", "base64 0.22.1", diff --git a/Cargo.toml b/Cargo.toml index 5b629d3431d665..f6d42942390df9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -190,7 +190,7 @@ exclude = ["programs/sbf", "svm/tests/example-programs"] resolver = "2" [workspace.package] -version = "2.1.1" +version = "2.1.2" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" homepage = "https://anza.xyz/" @@ -206,7 +206,7 @@ check-cfg = [ [workspace.dependencies] Inflector = "0.11.4" -agave-transaction-view = { path = "transaction-view", version = "=2.1.1" } +agave-transaction-view = { path = "transaction-view", version = "=2.1.2" } aquamarine = "0.3.3" aes-gcm-siv = "0.11.1" ahash = "0.8.11" @@ -383,151 +383,151 @@ smallvec = "1.13.2" smpl_jwt = "0.7.1" socket2 = "0.5.7" soketto = "0.7" -solana-account = { path = "sdk/account", version = "=2.1.1" } -solana-account-decoder = { path = "account-decoder", version = "=2.1.1" } -solana-account-decoder-client-types = { path = "account-decoder-client-types", version = "=2.1.1" } -solana-account-info = { path = "sdk/account-info", version = "=2.1.1" } -solana-accounts-db = { path = "accounts-db", version = "=2.1.1" } -solana-address-lookup-table-program = { path = "programs/address-lookup-table", version = "=2.1.1" } -solana-atomic-u64 = { path = "sdk/atomic-u64", version = "=2.1.1" } -solana-banks-client = { path = "banks-client", version = "=2.1.1" } -solana-banks-interface = { path = "banks-interface", version = "=2.1.1" } -solana-banks-server = { path = "banks-server", version = "=2.1.1" } -solana-bench-tps = { path = "bench-tps", version = "=2.1.1" } -solana-bincode = { path = "sdk/bincode", version = "=2.1.1" } -solana-bloom = { path = "bloom", version = "=2.1.1" } -solana-bn254 = { path = "curves/bn254", version = "=2.1.1" } -solana-borsh = { path = "sdk/borsh", version = "=2.1.1" } -solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=2.1.1" } -solana-bucket-map = { path = "bucket_map", version = "=2.1.1" } -solana-builtins-default-costs = { path = "builtins-default-costs", version = "=2.1.1" } -agave-cargo-registry = { path = "cargo-registry", version = "=2.1.1" } -solana-clap-utils = { path = "clap-utils", version = "=2.1.1" } -solana-clap-v3-utils = { path = "clap-v3-utils", version = "=2.1.1" } -solana-cli = { path = "cli", version = "=2.1.1" } -solana-cli-config = { path = "cli-config", version = "=2.1.1" } -solana-cli-output = { path = "cli-output", version = "=2.1.1" } -solana-client = { path = "client", version = "=2.1.1" } -solana-clock = { path = "sdk/clock", version = "=2.1.1" } -solana-compute-budget = { path = "compute-budget", version = "=2.1.1" } -solana-compute-budget-program = { path = "programs/compute-budget", version = "=2.1.1" } -solana-config-program = { path = "programs/config", version = "=2.1.1" } -solana-connection-cache = { path = "connection-cache", version = "=2.1.1", default-features = false } -solana-core = { path = "core", version = "=2.1.1" } -solana-cost-model = { path = "cost-model", version = "=2.1.1" } -solana-cpi = { path = "sdk/cpi", version = "=2.1.1" } -solana-curve25519 = { path = "curves/curve25519", version = "=2.1.1" } -solana-decode-error = { path = "sdk/decode-error", version = "=2.1.1" } -solana-define-syscall = { path = "define-syscall", version = "=2.1.1" } -solana-derivation-path = { path = "sdk/derivation-path", version = "=2.1.1" } -solana-download-utils = { path = "download-utils", version = "=2.1.1" } -solana-entry = { path = "entry", version = "=2.1.1" } -solana-program-entrypoint = { path = "sdk/program-entrypoint", version = "=2.1.1" } -solana-epoch-schedule = { path = "sdk/epoch-schedule", version = "=2.1.1" } -solana-faucet = { path = "faucet", version = "=2.1.1" } -solana-feature-set = { path = "sdk/feature-set", version = "=2.1.1" } -solana-fee-calculator = { path = "sdk/fee-calculator", version = "=2.1.1" } -solana-fee = { path = "fee", version = "=2.1.1" } -solana-frozen-abi = { path = "frozen-abi", version = "=2.1.1" } -solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=2.1.1" } -solana-tps-client = { path = "tps-client", version = "=2.1.1" } -solana-genesis = { path = "genesis", version = "=2.1.1" } -solana-genesis-utils = { path = "genesis-utils", version = "=2.1.1" } -agave-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=2.1.1" } -solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=2.1.1" } -solana-gossip = { path = "gossip", version = "=2.1.1" } -solana-hash = { path = "sdk/hash", version = "=2.1.1", default-features = false } -solana-inflation = { path = "sdk/inflation", version = "=2.1.1" } -solana-inline-spl = { path = "inline-spl", version = "=2.1.1" } -solana-instruction = { path = "sdk/instruction", version = "=2.1.1", default-features = false } -solana-last-restart-slot = { path = "sdk/last-restart-slot", version = "=2.1.1" } -solana-lattice-hash = { path = "lattice-hash", version = "=2.1.1" } -solana-ledger = { path = "ledger", version = "=2.1.1" } -solana-loader-v4-program = { path = "programs/loader-v4", version = "=2.1.1" } -solana-local-cluster = { path = "local-cluster", version = "=2.1.1" } -solana-log-collector = { path = "log-collector", version = "=2.1.1" } -solana-logger = { path = "logger", version = "=2.1.1" } -solana-measure = { path = "measure", version = "=2.1.1" } -solana-merkle-tree = { path = "merkle-tree", version = "=2.1.1" } -solana-metrics = { path = "metrics", version = "=2.1.1" } -solana-msg = { path = "sdk/msg", version = "=2.1.1" } -solana-native-token = { path = "sdk/native-token", version = "=2.1.1" } -solana-net-utils = { path = "net-utils", version = "=2.1.1" } +solana-account = { path = "sdk/account", version = "=2.1.2" } +solana-account-decoder = { path = "account-decoder", version = "=2.1.2" } +solana-account-decoder-client-types = { path = "account-decoder-client-types", version = "=2.1.2" } +solana-account-info = { path = "sdk/account-info", version = "=2.1.2" } +solana-accounts-db = { path = "accounts-db", version = "=2.1.2" } +solana-address-lookup-table-program = { path = "programs/address-lookup-table", version = "=2.1.2" } +solana-atomic-u64 = { path = "sdk/atomic-u64", version = "=2.1.2" } +solana-banks-client = { path = "banks-client", version = "=2.1.2" } +solana-banks-interface = { path = "banks-interface", version = "=2.1.2" } +solana-banks-server = { path = "banks-server", version = "=2.1.2" } +solana-bench-tps = { path = "bench-tps", version = "=2.1.2" } +solana-bincode = { path = "sdk/bincode", version = "=2.1.2" } +solana-bloom = { path = "bloom", version = "=2.1.2" } +solana-bn254 = { path = "curves/bn254", version = "=2.1.2" } +solana-borsh = { path = "sdk/borsh", version = "=2.1.2" } +solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=2.1.2" } +solana-bucket-map = { path = "bucket_map", version = "=2.1.2" } +solana-builtins-default-costs = { path = "builtins-default-costs", version = "=2.1.2" } +agave-cargo-registry = { path = "cargo-registry", version = "=2.1.2" } +solana-clap-utils = { path = "clap-utils", version = "=2.1.2" } +solana-clap-v3-utils = { path = "clap-v3-utils", version = "=2.1.2" } +solana-cli = { path = "cli", version = "=2.1.2" } +solana-cli-config = { path = "cli-config", version = "=2.1.2" } +solana-cli-output = { path = "cli-output", version = "=2.1.2" } +solana-client = { path = "client", version = "=2.1.2" } +solana-clock = { path = "sdk/clock", version = "=2.1.2" } +solana-compute-budget = { path = "compute-budget", version = "=2.1.2" } +solana-compute-budget-program = { path = "programs/compute-budget", version = "=2.1.2" } +solana-config-program = { path = "programs/config", version = "=2.1.2" } +solana-connection-cache = { path = "connection-cache", version = "=2.1.2", default-features = false } +solana-core = { path = "core", version = "=2.1.2" } +solana-cost-model = { path = "cost-model", version = "=2.1.2" } +solana-cpi = { path = "sdk/cpi", version = "=2.1.2" } +solana-curve25519 = { path = "curves/curve25519", version = "=2.1.2" } +solana-decode-error = { path = "sdk/decode-error", version = "=2.1.2" } +solana-define-syscall = { path = "define-syscall", version = "=2.1.2" } +solana-derivation-path = { path = "sdk/derivation-path", version = "=2.1.2" } +solana-download-utils = { path = "download-utils", version = "=2.1.2" } +solana-entry = { path = "entry", version = "=2.1.2" } +solana-program-entrypoint = { path = "sdk/program-entrypoint", version = "=2.1.2" } +solana-epoch-schedule = { path = "sdk/epoch-schedule", version = "=2.1.2" } +solana-faucet = { path = "faucet", version = "=2.1.2" } +solana-feature-set = { path = "sdk/feature-set", version = "=2.1.2" } +solana-fee-calculator = { path = "sdk/fee-calculator", version = "=2.1.2" } +solana-fee = { path = "fee", version = "=2.1.2" } +solana-frozen-abi = { path = "frozen-abi", version = "=2.1.2" } +solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=2.1.2" } +solana-tps-client = { path = "tps-client", version = "=2.1.2" } +solana-genesis = { path = "genesis", version = "=2.1.2" } +solana-genesis-utils = { path = "genesis-utils", version = "=2.1.2" } +agave-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=2.1.2" } +solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=2.1.2" } +solana-gossip = { path = "gossip", version = "=2.1.2" } +solana-hash = { path = "sdk/hash", version = "=2.1.2", default-features = false } +solana-inflation = { path = "sdk/inflation", version = "=2.1.2" } +solana-inline-spl = { path = "inline-spl", version = "=2.1.2" } +solana-instruction = { path = "sdk/instruction", version = "=2.1.2", default-features = false } +solana-last-restart-slot = { path = "sdk/last-restart-slot", version = "=2.1.2" } +solana-lattice-hash = { path = "lattice-hash", version = "=2.1.2" } +solana-ledger = { path = "ledger", version = "=2.1.2" } +solana-loader-v4-program = { path = "programs/loader-v4", version = "=2.1.2" } +solana-local-cluster = { path = "local-cluster", version = "=2.1.2" } +solana-log-collector = { path = "log-collector", version = "=2.1.2" } +solana-logger = { path = "logger", version = "=2.1.2" } +solana-measure = { path = "measure", version = "=2.1.2" } +solana-merkle-tree = { path = "merkle-tree", version = "=2.1.2" } +solana-metrics = { path = "metrics", version = "=2.1.2" } +solana-msg = { path = "sdk/msg", version = "=2.1.2" } +solana-native-token = { path = "sdk/native-token", version = "=2.1.2" } +solana-net-utils = { path = "net-utils", version = "=2.1.2" } solana-nohash-hasher = "0.2.1" -solana-notifier = { path = "notifier", version = "=2.1.1" } -solana-package-metadata = { path = "sdk/package-metadata", version = "=2.1.1" } -solana-package-metadata-macro = { path = "sdk/package-metadata-macro", version = "=2.1.1" } -solana-packet = { path = "sdk/packet", version = "=2.1.1" } -solana-perf = { path = "perf", version = "=2.1.1" } -solana-poh = { path = "poh", version = "=2.1.1" } -solana-poseidon = { path = "poseidon", version = "=2.1.1" } -solana-precompile-error = { path = "sdk/precompile-error", version = "=2.1.1" } -solana-program = { path = "sdk/program", version = "=2.1.1", default-features = false } -solana-program-error = { path = "sdk/program-error", version = "=2.1.1" } -solana-program-memory = { path = "sdk/program-memory", version = "=2.1.1" } -solana-program-option = { path = "sdk/program-option", version = "=2.1.1" } -solana-program-pack = { path = "sdk/program-pack", version = "=2.1.1" } -solana-program-runtime = { path = "program-runtime", version = "=2.1.1" } -solana-program-test = { path = "program-test", version = "=2.1.1" } -solana-pubkey = { path = "sdk/pubkey", version = "=2.1.1", default-features = false } -solana-pubsub-client = { path = "pubsub-client", version = "=2.1.1" } -solana-quic-client = { path = "quic-client", version = "=2.1.1" } -solana-rayon-threadlimit = { path = "rayon-threadlimit", version = "=2.1.1" } -solana-remote-wallet = { path = "remote-wallet", version = "=2.1.1", default-features = false } -solana-rent = { path = "sdk/rent", version = "=2.1.1", default-features = false } -solana-sanitize = { path = "sdk/sanitize", version = "=2.1.1" } -solana-secp256r1-program = { path = "sdk/secp256r1-program", version = "=2.1.1", default-features = false } -solana-serde-varint = { path = "sdk/serde-varint", version = "=2.1.1" } -solana-serialize-utils = { path = "sdk/serialize-utils", version = "=2.1.1" } -solana-sha256-hasher = { path = "sdk/sha256-hasher", version = "=2.1.1" } -solana-signature = { path = "sdk/signature", version = "=2.1.1", default-features = false } -solana-slot-hashes = { path = "sdk/slot-hashes", version = "=2.1.1" } -solana-slot-history = { path = "sdk/slot-history", version = "=2.1.1" } -solana-timings = { path = "timings", version = "=2.1.1" } -solana-unified-scheduler-logic = { path = "unified-scheduler-logic", version = "=2.1.1" } -solana-unified-scheduler-pool = { path = "unified-scheduler-pool", version = "=2.1.1" } -solana-rpc = { path = "rpc", version = "=2.1.1" } -solana-rpc-client = { path = "rpc-client", version = "=2.1.1", default-features = false } -solana-rpc-client-api = { path = "rpc-client-api", version = "=2.1.1" } -solana-rpc-client-nonce-utils = { path = "rpc-client-nonce-utils", version = "=2.1.1" } -solana-runtime = { path = "runtime", version = "=2.1.1" } -solana-runtime-transaction = { path = "runtime-transaction", version = "=2.1.1" } -solana-sdk = { path = "sdk", version = "=2.1.1" } -solana-sdk-macro = { path = "sdk/macro", version = "=2.1.1" } -solana-secp256k1-recover = { path = "curves/secp256k1-recover", version = "=2.1.1", default-features = false } -solana-send-transaction-service = { path = "send-transaction-service", version = "=2.1.1" } -solana-short-vec = { path = "short-vec", version = "=2.1.1" } -solana-stable-layout = { path = "sdk/stable-layout", version = "=2.1.1" } -solana-stake-program = { path = "programs/stake", version = "=2.1.1" } -solana-storage-bigtable = { path = "storage-bigtable", version = "=2.1.1" } -solana-storage-proto = { path = "storage-proto", version = "=2.1.1" } -solana-streamer = { path = "streamer", version = "=2.1.1" } -solana-svm = { path = "svm", version = "=2.1.1" } -solana-svm-conformance = { path = "svm-conformance", version = "=2.1.1" } -solana-svm-example-paytube = { path = "svm/examples/paytube", version = "=2.1.1" } -solana-svm-rent-collector = { path = "svm-rent-collector", version = "=2.1.1" } -solana-svm-transaction = { path = "svm-transaction", version = "=2.1.1" } -solana-system-program = { path = "programs/system", version = "=2.1.1" } -solana-sysvar-id = { path = "sdk/sysvar-id", version = "=2.1.1" } -solana-test-validator = { path = "test-validator", version = "=2.1.1" } -solana-thin-client = { path = "thin-client", version = "=2.1.1" } -solana-transaction-error = { path = "sdk/transaction-error", version = "=2.1.1" } -solana-tpu-client = { path = "tpu-client", version = "=2.1.1", default-features = false } -solana-transaction-status = { path = "transaction-status", version = "=2.1.1" } -solana-transaction-status-client-types = { path = "transaction-status-client-types", version = "=2.1.1" } -solana-transaction-metrics-tracker = { path = "transaction-metrics-tracker", version = "=2.1.1" } -solana-turbine = { path = "turbine", version = "=2.1.1" } -solana-type-overrides = { path = "type-overrides", version = "=2.1.1" } -solana-udp-client = { path = "udp-client", version = "=2.1.1" } -solana-version = { path = "version", version = "=2.1.1" } -solana-vote = { path = "vote", version = "=2.1.1" } -solana-vote-program = { path = "programs/vote", version = "=2.1.1" } -solana-wen-restart = { path = "wen-restart", version = "=2.1.1" } -solana-zk-elgamal-proof-program = { path = "programs/zk-elgamal-proof", version = "=2.1.1" } -solana-zk-keygen = { path = "zk-keygen", version = "=2.1.1" } -solana-zk-sdk = { path = "zk-sdk", version = "=2.1.1" } -solana-zk-token-proof-program = { path = "programs/zk-token-proof", version = "=2.1.1" } -solana-zk-token-sdk = { path = "zk-token-sdk", version = "=2.1.1" } +solana-notifier = { path = "notifier", version = "=2.1.2" } +solana-package-metadata = { path = "sdk/package-metadata", version = "=2.1.2" } +solana-package-metadata-macro = { path = "sdk/package-metadata-macro", version = "=2.1.2" } +solana-packet = { path = "sdk/packet", version = "=2.1.2" } +solana-perf = { path = "perf", version = "=2.1.2" } +solana-poh = { path = "poh", version = "=2.1.2" } +solana-poseidon = { path = "poseidon", version = "=2.1.2" } +solana-precompile-error = { path = "sdk/precompile-error", version = "=2.1.2" } +solana-program = { path = "sdk/program", version = "=2.1.2", default-features = false } +solana-program-error = { path = "sdk/program-error", version = "=2.1.2" } +solana-program-memory = { path = "sdk/program-memory", version = "=2.1.2" } +solana-program-option = { path = "sdk/program-option", version = "=2.1.2" } +solana-program-pack = { path = "sdk/program-pack", version = "=2.1.2" } +solana-program-runtime = { path = "program-runtime", version = "=2.1.2" } +solana-program-test = { path = "program-test", version = "=2.1.2" } +solana-pubkey = { path = "sdk/pubkey", version = "=2.1.2", default-features = false } +solana-pubsub-client = { path = "pubsub-client", version = "=2.1.2" } +solana-quic-client = { path = "quic-client", version = "=2.1.2" } +solana-rayon-threadlimit = { path = "rayon-threadlimit", version = "=2.1.2" } +solana-remote-wallet = { path = "remote-wallet", version = "=2.1.2", default-features = false } +solana-rent = { path = "sdk/rent", version = "=2.1.2", default-features = false } +solana-sanitize = { path = "sdk/sanitize", version = "=2.1.2" } +solana-secp256r1-program = { path = "sdk/secp256r1-program", version = "=2.1.2", default-features = false } +solana-serde-varint = { path = "sdk/serde-varint", version = "=2.1.2" } +solana-serialize-utils = { path = "sdk/serialize-utils", version = "=2.1.2" } +solana-sha256-hasher = { path = "sdk/sha256-hasher", version = "=2.1.2" } +solana-signature = { path = "sdk/signature", version = "=2.1.2", default-features = false } +solana-slot-hashes = { path = "sdk/slot-hashes", version = "=2.1.2" } +solana-slot-history = { path = "sdk/slot-history", version = "=2.1.2" } +solana-timings = { path = "timings", version = "=2.1.2" } +solana-unified-scheduler-logic = { path = "unified-scheduler-logic", version = "=2.1.2" } +solana-unified-scheduler-pool = { path = "unified-scheduler-pool", version = "=2.1.2" } +solana-rpc = { path = "rpc", version = "=2.1.2" } +solana-rpc-client = { path = "rpc-client", version = "=2.1.2", default-features = false } +solana-rpc-client-api = { path = "rpc-client-api", version = "=2.1.2" } +solana-rpc-client-nonce-utils = { path = "rpc-client-nonce-utils", version = "=2.1.2" } +solana-runtime = { path = "runtime", version = "=2.1.2" } +solana-runtime-transaction = { path = "runtime-transaction", version = "=2.1.2" } +solana-sdk = { path = "sdk", version = "=2.1.2" } +solana-sdk-macro = { path = "sdk/macro", version = "=2.1.2" } +solana-secp256k1-recover = { path = "curves/secp256k1-recover", version = "=2.1.2", default-features = false } +solana-send-transaction-service = { path = "send-transaction-service", version = "=2.1.2" } +solana-short-vec = { path = "short-vec", version = "=2.1.2" } +solana-stable-layout = { path = "sdk/stable-layout", version = "=2.1.2" } +solana-stake-program = { path = "programs/stake", version = "=2.1.2" } +solana-storage-bigtable = { path = "storage-bigtable", version = "=2.1.2" } +solana-storage-proto = { path = "storage-proto", version = "=2.1.2" } +solana-streamer = { path = "streamer", version = "=2.1.2" } +solana-svm = { path = "svm", version = "=2.1.2" } +solana-svm-conformance = { path = "svm-conformance", version = "=2.1.2" } +solana-svm-example-paytube = { path = "svm/examples/paytube", version = "=2.1.2" } +solana-svm-rent-collector = { path = "svm-rent-collector", version = "=2.1.2" } +solana-svm-transaction = { path = "svm-transaction", version = "=2.1.2" } +solana-system-program = { path = "programs/system", version = "=2.1.2" } +solana-sysvar-id = { path = "sdk/sysvar-id", version = "=2.1.2" } +solana-test-validator = { path = "test-validator", version = "=2.1.2" } +solana-thin-client = { path = "thin-client", version = "=2.1.2" } +solana-transaction-error = { path = "sdk/transaction-error", version = "=2.1.2" } +solana-tpu-client = { path = "tpu-client", version = "=2.1.2", default-features = false } +solana-transaction-status = { path = "transaction-status", version = "=2.1.2" } +solana-transaction-status-client-types = { path = "transaction-status-client-types", version = "=2.1.2" } +solana-transaction-metrics-tracker = { path = "transaction-metrics-tracker", version = "=2.1.2" } +solana-turbine = { path = "turbine", version = "=2.1.2" } +solana-type-overrides = { path = "type-overrides", version = "=2.1.2" } +solana-udp-client = { path = "udp-client", version = "=2.1.2" } +solana-version = { path = "version", version = "=2.1.2" } +solana-vote = { path = "vote", version = "=2.1.2" } +solana-vote-program = { path = "programs/vote", version = "=2.1.2" } +solana-wen-restart = { path = "wen-restart", version = "=2.1.2" } +solana-zk-elgamal-proof-program = { path = "programs/zk-elgamal-proof", version = "=2.1.2" } +solana-zk-keygen = { path = "zk-keygen", version = "=2.1.2" } +solana-zk-sdk = { path = "zk-sdk", version = "=2.1.2" } +solana-zk-token-proof-program = { path = "programs/zk-token-proof", version = "=2.1.2" } +solana-zk-token-sdk = { path = "zk-token-sdk", version = "=2.1.2" } solana_rbpf = "=0.8.5" spl-associated-token-account = "=4.0.0" spl-instruction-padding = "0.2" diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index 8235d7e407adfe..abcd2f32544393 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "agave-geyser-plugin-interface" -version = "2.1.1" +version = "2.1.2" dependencies = [ "log", "solana-sdk", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "agave-transaction-view" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-sdk", "solana-svm-transaction", @@ -83,7 +83,7 @@ dependencies = [ [[package]] name = "agave-validator" -version = "2.1.1" +version = "2.1.2" dependencies = [ "agave-geyser-plugin-interface", "chrono", @@ -4719,7 +4719,7 @@ dependencies = [ [[package]] name = "solana-account" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "qualifier_attr", @@ -4732,7 +4732,7 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "2.1.1" +version = "2.1.2" dependencies = [ "Inflector", "base64 0.22.1", @@ -4756,7 +4756,7 @@ dependencies = [ [[package]] name = "solana-account-decoder-client-types" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "bs58", @@ -4770,7 +4770,7 @@ dependencies = [ [[package]] name = "solana-account-info" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "serde", @@ -4781,7 +4781,7 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ahash 0.8.11", "bincode", @@ -4825,7 +4825,7 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "bytemuck", @@ -4842,14 +4842,14 @@ dependencies = [ [[package]] name = "solana-atomic-u64" -version = "2.1.1" +version = "2.1.2" dependencies = [ "parking_lot 0.12.2", ] [[package]] name = "solana-banks-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "borsh 1.5.1", "futures 0.3.31", @@ -4864,7 +4864,7 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -4874,7 +4874,7 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "crossbeam-channel", @@ -4893,7 +4893,7 @@ dependencies = [ [[package]] name = "solana-bincode" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "serde", @@ -4902,7 +4902,7 @@ dependencies = [ [[package]] name = "solana-bloom" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bv", "fnv", @@ -4916,7 +4916,7 @@ dependencies = [ [[package]] name = "solana-bn254" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ark-bn254", "ark-ec", @@ -4929,7 +4929,7 @@ dependencies = [ [[package]] name = "solana-borsh" -version = "2.1.1" +version = "2.1.2" dependencies = [ "borsh 0.10.3", "borsh 1.5.1", @@ -4937,7 +4937,7 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "byteorder 1.5.0", @@ -4962,7 +4962,7 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bv", "bytemuck", @@ -4979,7 +4979,7 @@ dependencies = [ [[package]] name = "solana-builtins-default-costs" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ahash 0.8.11", "lazy_static", @@ -4997,7 +4997,7 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "2.1.1" +version = "2.1.2" dependencies = [ "chrono", "clap", @@ -5013,7 +5013,7 @@ dependencies = [ [[package]] name = "solana-cli-config" -version = "2.1.1" +version = "2.1.2" dependencies = [ "dirs-next", "lazy_static", @@ -5027,7 +5027,7 @@ dependencies = [ [[package]] name = "solana-cli-output" -version = "2.1.1" +version = "2.1.2" dependencies = [ "Inflector", "base64 0.22.1", @@ -5052,7 +5052,7 @@ dependencies = [ [[package]] name = "solana-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "async-trait", "bincode", @@ -5082,7 +5082,7 @@ dependencies = [ [[package]] name = "solana-clock" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -5092,14 +5092,14 @@ dependencies = [ [[package]] name = "solana-compute-budget" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-sdk", ] [[package]] name = "solana-compute-budget-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -5107,7 +5107,7 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "chrono", @@ -5121,7 +5121,7 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "2.1.1" +version = "2.1.2" dependencies = [ "async-trait", "bincode", @@ -5140,7 +5140,7 @@ dependencies = [ [[package]] name = "solana-core" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ahash 0.8.11", "anyhow", @@ -5224,7 +5224,7 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ahash 0.8.11", "lazy_static", @@ -5241,7 +5241,7 @@ dependencies = [ [[package]] name = "solana-cpi" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-account-info", "solana-define-syscall", @@ -5253,7 +5253,7 @@ dependencies = [ [[package]] name = "solana-curve25519" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bytemuck", "bytemuck_derive", @@ -5264,18 +5264,18 @@ dependencies = [ [[package]] name = "solana-decode-error" -version = "2.1.1" +version = "2.1.2" dependencies = [ "num-traits", ] [[package]] name = "solana-define-syscall" -version = "2.1.1" +version = "2.1.2" [[package]] name = "solana-derivation-path" -version = "2.1.1" +version = "2.1.2" dependencies = [ "derivation-path", "qstring", @@ -5284,7 +5284,7 @@ dependencies = [ [[package]] name = "solana-download-utils" -version = "2.1.1" +version = "2.1.2" dependencies = [ "console", "indicatif", @@ -5296,7 +5296,7 @@ dependencies = [ [[package]] name = "solana-entry" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "crossbeam-channel", @@ -5316,7 +5316,7 @@ dependencies = [ [[package]] name = "solana-epoch-schedule" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -5326,7 +5326,7 @@ dependencies = [ [[package]] name = "solana-faucet" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "byteorder 1.5.0", @@ -5348,7 +5348,7 @@ dependencies = [ [[package]] name = "solana-feature-set" -version = "2.1.1" +version = "2.1.2" dependencies = [ "lazy_static", "solana-clock", @@ -5360,7 +5360,7 @@ dependencies = [ [[package]] name = "solana-fee" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-sdk", "solana-svm-transaction", @@ -5368,7 +5368,7 @@ dependencies = [ [[package]] name = "solana-fee-calculator" -version = "2.1.1" +version = "2.1.2" dependencies = [ "log", "serde", @@ -5377,7 +5377,7 @@ dependencies = [ [[package]] name = "solana-genesis-utils" -version = "2.1.1" +version = "2.1.2" dependencies = [ "log", "solana-accounts-db", @@ -5388,7 +5388,7 @@ dependencies = [ [[package]] name = "solana-geyser-plugin-manager" -version = "2.1.1" +version = "2.1.2" dependencies = [ "agave-geyser-plugin-interface", "bs58", @@ -5413,7 +5413,7 @@ dependencies = [ [[package]] name = "solana-gossip" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -5462,7 +5462,7 @@ dependencies = [ [[package]] name = "solana-hash" -version = "2.1.1" +version = "2.1.2" dependencies = [ "borsh 1.5.1", "bs58", @@ -5478,7 +5478,7 @@ dependencies = [ [[package]] name = "solana-inflation" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -5486,7 +5486,7 @@ dependencies = [ [[package]] name = "solana-inline-spl" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bytemuck", "solana-pubkey", @@ -5494,7 +5494,7 @@ dependencies = [ [[package]] name = "solana-instruction" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "borsh 1.5.1", @@ -5510,7 +5510,7 @@ dependencies = [ [[package]] name = "solana-last-restart-slot" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -5520,7 +5520,7 @@ dependencies = [ [[package]] name = "solana-lattice-hash" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "blake3", @@ -5530,7 +5530,7 @@ dependencies = [ [[package]] name = "solana-ledger" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "bincode", @@ -5601,7 +5601,7 @@ dependencies = [ [[package]] name = "solana-loader-v4-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "log", "solana-bpf-loader-program", @@ -5616,14 +5616,14 @@ dependencies = [ [[package]] name = "solana-log-collector" -version = "2.1.1" +version = "2.1.2" dependencies = [ "log", ] [[package]] name = "solana-logger" -version = "2.1.1" +version = "2.1.2" dependencies = [ "env_logger", "lazy_static", @@ -5632,11 +5632,11 @@ dependencies = [ [[package]] name = "solana-measure" -version = "2.1.1" +version = "2.1.2" [[package]] name = "solana-merkle-tree" -version = "2.1.1" +version = "2.1.2" dependencies = [ "fast-math", "solana-hash", @@ -5645,7 +5645,7 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "2.1.1" +version = "2.1.2" dependencies = [ "crossbeam-channel", "gethostname", @@ -5658,18 +5658,18 @@ dependencies = [ [[package]] name = "solana-msg" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-define-syscall", ] [[package]] name = "solana-native-token" -version = "2.1.1" +version = "2.1.2" [[package]] name = "solana-net-utils" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "crossbeam-channel", @@ -5692,7 +5692,7 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-packet" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "bitflags 2.6.0", @@ -5704,7 +5704,7 @@ dependencies = [ [[package]] name = "solana-perf" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ahash 0.8.11", "bincode", @@ -5729,7 +5729,7 @@ dependencies = [ [[package]] name = "solana-poh" -version = "2.1.1" +version = "2.1.2" dependencies = [ "core_affinity", "crossbeam-channel", @@ -5745,7 +5745,7 @@ dependencies = [ [[package]] name = "solana-poseidon" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ark-bn254", "light-poseidon", @@ -5755,7 +5755,7 @@ dependencies = [ [[package]] name = "solana-precompile-error" -version = "2.1.1" +version = "2.1.2" dependencies = [ "num-traits", "solana-decode-error", @@ -5763,7 +5763,7 @@ dependencies = [ [[package]] name = "solana-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "bincode", @@ -5834,7 +5834,7 @@ dependencies = [ [[package]] name = "solana-program-entrypoint" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-account-info", "solana-msg", @@ -5844,7 +5844,7 @@ dependencies = [ [[package]] name = "solana-program-error" -version = "2.1.1" +version = "2.1.2" dependencies = [ "borsh 1.5.1", "num-traits", @@ -5858,7 +5858,7 @@ dependencies = [ [[package]] name = "solana-program-memory" -version = "2.1.1" +version = "2.1.2" dependencies = [ "num-traits", "solana-define-syscall", @@ -5866,18 +5866,18 @@ dependencies = [ [[package]] name = "solana-program-option" -version = "2.1.1" +version = "2.1.2" [[package]] name = "solana-program-pack" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program-error", ] [[package]] name = "solana-program-runtime" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "bincode", @@ -5905,7 +5905,7 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "async-trait", @@ -5939,7 +5939,7 @@ dependencies = [ [[package]] name = "solana-pubkey" -version = "2.1.1" +version = "2.1.2" dependencies = [ "borsh 0.10.3", "borsh 1.5.1", @@ -5964,7 +5964,7 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "crossbeam-channel", "futures-util", @@ -5987,7 +5987,7 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "async-lock", "async-trait", @@ -6011,7 +6011,7 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "2.1.1" +version = "2.1.2" dependencies = [ "lazy_static", "num_cpus", @@ -6019,7 +6019,7 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "2.1.1" +version = "2.1.2" dependencies = [ "console", "dialoguer", @@ -6037,7 +6037,7 @@ dependencies = [ [[package]] name = "solana-rent" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -6047,7 +6047,7 @@ dependencies = [ [[package]] name = "solana-rpc" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "bincode", @@ -6105,7 +6105,7 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "async-trait", "base64 0.22.1", @@ -6130,7 +6130,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "2.1.1" +version = "2.1.2" dependencies = [ "anyhow", "base64 0.22.1", @@ -6152,7 +6152,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-rpc-client", "solana-sdk", @@ -6161,7 +6161,7 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "2.1.1" +version = "2.1.2" dependencies = [ "ahash 0.8.11", "aquamarine", @@ -6248,7 +6248,7 @@ dependencies = [ [[package]] name = "solana-runtime-transaction" -version = "2.1.1" +version = "2.1.2" dependencies = [ "agave-transaction-view", "log", @@ -6262,11 +6262,11 @@ dependencies = [ [[package]] name = "solana-sanitize" -version = "2.1.1" +version = "2.1.2" [[package]] name = "solana-sbf-programs" -version = "2.1.1" +version = "2.1.2" dependencies = [ "agave-validator", "bincode", @@ -6308,7 +6308,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-128bit" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", "solana-sbf-rust-128bit-dep", @@ -6316,21 +6316,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-128bit-dep" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-alloc" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-alt-bn128" -version = "2.1.1" +version = "2.1.2" dependencies = [ "array-bytes", "solana-bn254", @@ -6339,7 +6339,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-alt-bn128-compression" -version = "2.1.1" +version = "2.1.2" dependencies = [ "array-bytes", "solana-bn254", @@ -6348,7 +6348,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-big-mod-exp" -version = "2.1.1" +version = "2.1.2" dependencies = [ "array-bytes", "serde", @@ -6359,7 +6359,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-call-args" -version = "2.1.1" +version = "2.1.2" dependencies = [ "borsh 1.5.1", "solana-program", @@ -6367,21 +6367,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-call-depth" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-caller-access" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-curve25519" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-curve25519", "solana-program", @@ -6390,14 +6390,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-custom-heap" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-dep-crate" -version = "2.1.1" +version = "2.1.2" dependencies = [ "byteorder 1.5.0", "solana-program", @@ -6405,21 +6405,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-deprecated-loader" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-dup-accounts" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-error-handling" -version = "2.1.1" +version = "2.1.2" dependencies = [ "num-derive", "num-traits", @@ -6430,42 +6430,42 @@ dependencies = [ [[package]] name = "solana-sbf-rust-external-spend" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-finalize" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-get-minimum-delegation" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-inner_instruction_alignment_check" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-instruction-introspection" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", "solana-sbf-rust-invoke-dep", @@ -6475,32 +6475,32 @@ dependencies = [ [[package]] name = "solana-sbf-rust-invoke-and-error" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke-and-ok" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke-and-return" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke-dep" -version = "2.1.1" +version = "2.1.2" [[package]] name = "solana-sbf-rust-invoked" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", "solana-sbf-rust-invoked-dep", @@ -6508,28 +6508,28 @@ dependencies = [ [[package]] name = "solana-sbf-rust-invoked-dep" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-iter" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-log-data" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-many-args" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", "solana-sbf-rust-many-args-dep", @@ -6537,14 +6537,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-many-args-dep" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-mem" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", "solana-sbf-rust-mem-dep", @@ -6552,14 +6552,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-mem-dep" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-membuiltins" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", "solana-sbf-rust-mem-dep", @@ -6567,21 +6567,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-noop" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-panic" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-param-passing" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", "solana-sbf-rust-param-passing-dep", @@ -6589,14 +6589,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-param-passing-dep" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-poseidon" -version = "2.1.1" +version = "2.1.2" dependencies = [ "array-bytes", "solana-poseidon", @@ -6605,7 +6605,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-rand" -version = "2.1.1" +version = "2.1.2" dependencies = [ "getrandom 0.2.10", "rand 0.8.5", @@ -6614,7 +6614,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-realloc" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", "solana-sbf-rust-realloc-dep", @@ -6622,14 +6622,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-realloc-dep" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-realloc-invoke" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", "solana-sbf-rust-realloc-dep", @@ -6638,39 +6638,39 @@ dependencies = [ [[package]] name = "solana-sbf-rust-realloc-invoke-dep" -version = "2.1.1" +version = "2.1.2" [[package]] name = "solana-sbf-rust-remaining-compute-units" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-ro-account_modify" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-ro-modify" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-sanity" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-secp256k1-recover" -version = "2.1.1" +version = "2.1.2" dependencies = [ "libsecp256k1 0.7.0", "solana-program", @@ -6679,7 +6679,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-sha" -version = "2.1.1" +version = "2.1.2" dependencies = [ "blake3", "solana-program", @@ -6687,42 +6687,42 @@ dependencies = [ [[package]] name = "solana-sbf-rust-sibling-inner-instructions" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-sibling-instructions" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-simulation" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-spoof1" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-spoof1-system" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-sysvar" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "solana-program", @@ -6730,28 +6730,28 @@ dependencies = [ [[package]] name = "solana-sbf-rust-upgradeable" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-upgraded" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-syscall-get-epoch-stake" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-program", ] [[package]] name = "solana-sdk" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "bitflags 2.6.0", @@ -6814,7 +6814,7 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bs58", "proc-macro2", @@ -6824,7 +6824,7 @@ dependencies = [ [[package]] name = "solana-secp256k1-recover" -version = "2.1.1" +version = "2.1.2" dependencies = [ "borsh 1.5.1", "libsecp256k1 0.6.0", @@ -6834,7 +6834,7 @@ dependencies = [ [[package]] name = "solana-secp256r1-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bytemuck", "openssl", @@ -6852,7 +6852,7 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "2.1.1" +version = "2.1.2" dependencies = [ "crossbeam-channel", "log", @@ -6867,14 +6867,14 @@ dependencies = [ [[package]] name = "solana-serde-varint" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", ] [[package]] name = "solana-serialize-utils" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-instruction", "solana-pubkey", @@ -6883,7 +6883,7 @@ dependencies = [ [[package]] name = "solana-sha256-hasher" -version = "2.1.1" +version = "2.1.2" dependencies = [ "sha2 0.10.8", "solana-define-syscall", @@ -6892,14 +6892,14 @@ dependencies = [ [[package]] name = "solana-short-vec" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", ] [[package]] name = "solana-signature" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bs58", "ed25519-dalek", @@ -6912,7 +6912,7 @@ dependencies = [ [[package]] name = "solana-slot-hashes" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -6922,7 +6922,7 @@ dependencies = [ [[package]] name = "solana-slot-history" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bv", "serde", @@ -6932,7 +6932,7 @@ dependencies = [ [[package]] name = "solana-stable-layout" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-instruction", "solana-pubkey", @@ -6940,7 +6940,7 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "log", @@ -6955,7 +6955,7 @@ dependencies = [ [[package]] name = "solana-storage-bigtable" -version = "2.1.1" +version = "2.1.2" dependencies = [ "backoff", "bincode", @@ -6987,7 +6987,7 @@ dependencies = [ [[package]] name = "solana-storage-proto" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "bs58", @@ -7002,7 +7002,7 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "2.1.1" +version = "2.1.2" dependencies = [ "async-channel", "bytes", @@ -7038,7 +7038,7 @@ dependencies = [ [[package]] name = "solana-svm" -version = "2.1.1" +version = "2.1.2" dependencies = [ "itertools 0.12.1", "log", @@ -7067,21 +7067,21 @@ dependencies = [ [[package]] name = "solana-svm-rent-collector" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-sdk", ] [[package]] name = "solana-svm-transaction" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-sdk", ] [[package]] name = "solana-system-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "log", @@ -7095,14 +7095,14 @@ dependencies = [ [[package]] name = "solana-sysvar-id" -version = "2.1.1" +version = "2.1.2" dependencies = [ "solana-pubkey", ] [[package]] name = "solana-test-validator" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "bincode", @@ -7133,7 +7133,7 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "log", @@ -7146,7 +7146,7 @@ dependencies = [ [[package]] name = "solana-timings" -version = "2.1.1" +version = "2.1.2" dependencies = [ "eager", "enum-iterator", @@ -7155,7 +7155,7 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "async-trait", "bincode", @@ -7176,7 +7176,7 @@ dependencies = [ [[package]] name = "solana-transaction-error" -version = "2.1.1" +version = "2.1.2" dependencies = [ "serde", "serde_derive", @@ -7186,7 +7186,7 @@ dependencies = [ [[package]] name = "solana-transaction-metrics-tracker" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "bincode", @@ -7200,7 +7200,7 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "2.1.1" +version = "2.1.2" dependencies = [ "Inflector", "base64 0.22.1", @@ -7226,7 +7226,7 @@ dependencies = [ [[package]] name = "solana-transaction-status-client-types" -version = "2.1.1" +version = "2.1.2" dependencies = [ "base64 0.22.1", "bincode", @@ -7242,7 +7242,7 @@ dependencies = [ [[package]] name = "solana-turbine" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "bytes", @@ -7280,7 +7280,7 @@ dependencies = [ [[package]] name = "solana-type-overrides" -version = "2.1.1" +version = "2.1.2" dependencies = [ "lazy_static", "rand 0.8.5", @@ -7288,7 +7288,7 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "2.1.1" +version = "2.1.2" dependencies = [ "async-trait", "solana-connection-cache", @@ -7301,7 +7301,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-logic" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "solana-sdk", @@ -7310,7 +7310,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-pool" -version = "2.1.1" +version = "2.1.2" dependencies = [ "assert_matches", "crossbeam-channel", @@ -7330,7 +7330,7 @@ dependencies = [ [[package]] name = "solana-version" -version = "2.1.1" +version = "2.1.2" dependencies = [ "semver", "serde", @@ -7342,7 +7342,7 @@ dependencies = [ [[package]] name = "solana-vote" -version = "2.1.1" +version = "2.1.2" dependencies = [ "itertools 0.12.1", "log", @@ -7354,7 +7354,7 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bincode", "log", @@ -7372,7 +7372,7 @@ dependencies = [ [[package]] name = "solana-wen-restart" -version = "2.1.1" +version = "2.1.2" dependencies = [ "anyhow", "log", @@ -7393,7 +7393,7 @@ dependencies = [ [[package]] name = "solana-zk-elgamal-proof-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bytemuck", "num-derive", @@ -7406,7 +7406,7 @@ dependencies = [ [[package]] name = "solana-zk-sdk" -version = "2.1.1" +version = "2.1.2" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -7436,7 +7436,7 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "2.1.1" +version = "2.1.2" dependencies = [ "bytemuck", "num-derive", @@ -7450,7 +7450,7 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "2.1.1" +version = "2.1.2" dependencies = [ "aes-gcm-siv", "base64 0.22.1", diff --git a/programs/sbf/Cargo.toml b/programs/sbf/Cargo.toml index 21598dde1df611..d06d3d851563cf 100644 --- a/programs/sbf/Cargo.toml +++ b/programs/sbf/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "2.1.1" +version = "2.1.2" description = "Solana SBF test program written in Rust" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -30,44 +30,44 @@ rand = "0.8" serde = "1.0.112" # must match the serde_derive version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251 serde_derive = "1.0.112" # must match the serde version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251 serde_json = "1.0.56" -solana-account-decoder = { path = "../../account-decoder", version = "=2.1.1" } -solana-accounts-db = { path = "../../accounts-db", version = "=2.1.1" } -solana-bn254 = { path = "../../curves/bn254", version = "=2.1.1" } -solana-bpf-loader-program = { path = "../bpf_loader", version = "=2.1.1" } -solana-cli-output = { path = "../../cli-output", version = "=2.1.1" } -solana-compute-budget = { path = "../../compute-budget", version = "=2.1.1" } -solana-curve25519 = { path = "../../curves/curve25519", version = "=2.1.1" } -solana-decode-error = { path = "../../sdk/decode-error", version = "=2.1.1" } -solana-feature-set = { path = "../../sdk/feature-set", version = "=2.1.1" } -solana-fee = { path = "../../fee", version = "=2.1.1" } -solana-ledger = { path = "../../ledger", version = "=2.1.1" } -solana-log-collector = { path = "../../log-collector", version = "=2.1.1" } -solana-logger = { path = "../../logger", version = "=2.1.1" } -solana-measure = { path = "../../measure", version = "=2.1.1" } -solana-poseidon = { path = "../../poseidon/", version = "=2.1.1" } -solana-program = { path = "../../sdk/program", version = "=2.1.1" } -solana-program-runtime = { path = "../../program-runtime", version = "=2.1.1" } -solana-runtime = { path = "../../runtime", version = "=2.1.1" } -solana-runtime-transaction = { path = "../../runtime-transaction", version = "=2.1.1" } -solana-sbf-rust-128bit-dep = { path = "rust/128bit_dep", version = "=2.1.1" } -solana-sbf-rust-invoke-dep = { path = "rust/invoke_dep", version = "=2.1.1" } -solana-sbf-rust-invoked-dep = { path = "rust/invoked_dep", version = "=2.1.1" } -solana-sbf-rust-many-args-dep = { path = "rust/many_args_dep", version = "=2.1.1" } -solana-sbf-rust-mem-dep = { path = "rust/mem_dep", version = "=2.1.1" } -solana-sbf-rust-param-passing-dep = { path = "rust/param_passing_dep", version = "=2.1.1" } -solana-sbf-rust-realloc-dep = { path = "rust/realloc_dep", version = "=2.1.1" } -solana-sbf-rust-realloc-invoke-dep = { path = "rust/realloc_invoke_dep", version = "=2.1.1" } -solana-sdk = { path = "../../sdk", version = "=2.1.1" } -solana-secp256k1-recover = { path = "../../curves/secp256k1-recover", version = "=2.1.1" } -solana-svm = { path = "../../svm", version = "=2.1.1" } -solana-svm-transaction = { path = "../../svm-transaction", version = "=2.1.1" } -solana-timings = { path = "../../timings", version = "=2.1.1" } -solana-transaction-status = { path = "../../transaction-status", version = "=2.1.1" } -solana-type-overrides = { path = "../../type-overrides", version = "=2.1.1" } -solana-vote = { path = "../../vote", version = "=2.1.1" } -solana-vote-program = { path = "../../programs/vote", version = "=2.1.1" } -agave-validator = { path = "../../validator", version = "=2.1.1" } -solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=2.1.1" } +solana-account-decoder = { path = "../../account-decoder", version = "=2.1.2" } +solana-accounts-db = { path = "../../accounts-db", version = "=2.1.2" } +solana-bn254 = { path = "../../curves/bn254", version = "=2.1.2" } +solana-bpf-loader-program = { path = "../bpf_loader", version = "=2.1.2" } +solana-cli-output = { path = "../../cli-output", version = "=2.1.2" } +solana-compute-budget = { path = "../../compute-budget", version = "=2.1.2" } +solana-curve25519 = { path = "../../curves/curve25519", version = "=2.1.2" } +solana-decode-error = { path = "../../sdk/decode-error", version = "=2.1.2" } +solana-feature-set = { path = "../../sdk/feature-set", version = "=2.1.2" } +solana-fee = { path = "../../fee", version = "=2.1.2" } +solana-ledger = { path = "../../ledger", version = "=2.1.2" } +solana-log-collector = { path = "../../log-collector", version = "=2.1.2" } +solana-logger = { path = "../../logger", version = "=2.1.2" } +solana-measure = { path = "../../measure", version = "=2.1.2" } +solana-poseidon = { path = "../../poseidon/", version = "=2.1.2" } +solana-program = { path = "../../sdk/program", version = "=2.1.2" } +solana-program-runtime = { path = "../../program-runtime", version = "=2.1.2" } +solana-runtime = { path = "../../runtime", version = "=2.1.2" } +solana-runtime-transaction = { path = "../../runtime-transaction", version = "=2.1.2" } +solana-sbf-rust-128bit-dep = { path = "rust/128bit_dep", version = "=2.1.2" } +solana-sbf-rust-invoke-dep = { path = "rust/invoke_dep", version = "=2.1.2" } +solana-sbf-rust-invoked-dep = { path = "rust/invoked_dep", version = "=2.1.2" } +solana-sbf-rust-many-args-dep = { path = "rust/many_args_dep", version = "=2.1.2" } +solana-sbf-rust-mem-dep = { path = "rust/mem_dep", version = "=2.1.2" } +solana-sbf-rust-param-passing-dep = { path = "rust/param_passing_dep", version = "=2.1.2" } +solana-sbf-rust-realloc-dep = { path = "rust/realloc_dep", version = "=2.1.2" } +solana-sbf-rust-realloc-invoke-dep = { path = "rust/realloc_invoke_dep", version = "=2.1.2" } +solana-sdk = { path = "../../sdk", version = "=2.1.2" } +solana-secp256k1-recover = { path = "../../curves/secp256k1-recover", version = "=2.1.2" } +solana-svm = { path = "../../svm", version = "=2.1.2" } +solana-svm-transaction = { path = "../../svm-transaction", version = "=2.1.2" } +solana-timings = { path = "../../timings", version = "=2.1.2" } +solana-transaction-status = { path = "../../transaction-status", version = "=2.1.2" } +solana-type-overrides = { path = "../../type-overrides", version = "=2.1.2" } +solana-vote = { path = "../../vote", version = "=2.1.2" } +solana-vote-program = { path = "../../programs/vote", version = "=2.1.2" } +agave-validator = { path = "../../validator", version = "=2.1.2" } +solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=2.1.2" } solana_rbpf = "=0.8.5" thiserror = "1.0" diff --git a/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml index f17bcdc57ef601..9a7970ed20604b 100644 --- a/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fail" -version = "2.1.1" +version = "2.1.2" description = "Solana SBF test program written in Rust" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -10,7 +10,7 @@ edition = "2021" publish = false [dependencies] -solana-program = { path = "../../../../program", version = "=2.1.1" } +solana-program = { path = "../../../../program", version = "=2.1.2" } [lib] crate-type = ["cdylib"] diff --git a/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml index 814bb52a5deaa1..07a18d6e7f876d 100644 --- a/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "noop" -version = "2.1.1" +version = "2.1.2" description = "Solana SBF test program written in Rust" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -10,7 +10,7 @@ edition = "2021" publish = false [dependencies] -solana-program = { path = "../../../../program", version = "=2.1.1" } +solana-program = { path = "../../../../program", version = "=2.1.2" } [lib] crate-type = ["cdylib"] diff --git a/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml index 1f3023b3e932fd..48964fb7b693ec 100644 --- a/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "package-metadata" -version = "2.1.1" +version = "2.1.2" description = "Solana SBF test program with tools version in package metadata" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -14,8 +14,8 @@ tools-version = "v1.43" program-id = "MyProgram1111111111111111111111111111111111" [dependencies] -solana-package-metadata = { path = "../../../../package-metadata", version = "=2.1.1" } -solana-program = { path = "../../../../program", version = "=2.1.1" } +solana-package-metadata = { path = "../../../../package-metadata", version = "=2.1.2" } +solana-program = { path = "../../../../program", version = "=2.1.2" } [lib] crate-type = ["cdylib"] diff --git a/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml index 68091218aca378..f749767d994002 100644 --- a/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "workspace-metadata" -version = "2.1.1" +version = "2.1.2" description = "Solana SBF test program with tools version in workspace metadata" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -10,7 +10,7 @@ edition = "2021" publish = false [dependencies] -solana-program = { path = "../../../../program", version = "=2.1.1" } +solana-program = { path = "../../../../program", version = "=2.1.2" } [lib] crate-type = ["cdylib"] diff --git a/svm/examples/json-rpc/program/Cargo.toml b/svm/examples/json-rpc/program/Cargo.toml index c53d1df8a208cb..6a1465cdc992d0 100644 --- a/svm/examples/json-rpc/program/Cargo.toml +++ b/svm/examples/json-rpc/program/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "json-rpc-example-program" -version = "2.1.1" +version = "2.1.2" edition = "2021" [features] @@ -10,7 +10,7 @@ frozen-abi = [] [dependencies] borsh = "0.9" -solana-program = { path = "../../../../sdk/program", version = "=2.1.1" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.2" } [lib] name = "program" diff --git a/svm/tests/example-programs/clock-sysvar/Cargo.toml b/svm/tests/example-programs/clock-sysvar/Cargo.toml index 850726df6f4fb9..3272ac8e07ade9 100644 --- a/svm/tests/example-programs/clock-sysvar/Cargo.toml +++ b/svm/tests/example-programs/clock-sysvar/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "clock-sysvar-program" -version = "2.1.1" +version = "2.1.2" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.1" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.2" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/hello-solana/Cargo.toml b/svm/tests/example-programs/hello-solana/Cargo.toml index 29be447a786ee0..c2284dfbf40fb6 100644 --- a/svm/tests/example-programs/hello-solana/Cargo.toml +++ b/svm/tests/example-programs/hello-solana/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "hello-solana-program" -version = "2.1.1" +version = "2.1.2" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.1" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.2" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/simple-transfer/Cargo.toml b/svm/tests/example-programs/simple-transfer/Cargo.toml index 5158b8e9f03397..63bdf63867b5d5 100644 --- a/svm/tests/example-programs/simple-transfer/Cargo.toml +++ b/svm/tests/example-programs/simple-transfer/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "simple-transfer-program" -version = "2.1.1" +version = "2.1.2" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.1" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.2" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/transfer-from-account/Cargo.toml b/svm/tests/example-programs/transfer-from-account/Cargo.toml index aa438e4884bc0b..07a3f096c4688b 100644 --- a/svm/tests/example-programs/transfer-from-account/Cargo.toml +++ b/svm/tests/example-programs/transfer-from-account/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "transfer-from-account" -version = "2.1.1" +version = "2.1.2" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.1" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.2" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/write-to-account/Cargo.toml b/svm/tests/example-programs/write-to-account/Cargo.toml index 877d476ad0e70f..0ec135c16d18cc 100644 --- a/svm/tests/example-programs/write-to-account/Cargo.toml +++ b/svm/tests/example-programs/write-to-account/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "write-to-account" -version = "2.1.1" +version = "2.1.2" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.1" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.2" } [lib] crate-type = ["cdylib", "rlib"] From 3bbabb38c5800b197841eb79037a82e88e174440 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 17:15:24 +0100 Subject: [PATCH 14/33] v2.1: instruction: Derive everything for wasm build (backport of #3606) (#3610) instruction: Derive everything for wasm build (#3606) #### Problem As noticed in https://github.com/solana-labs/solana-program-library/pull/7489, the wasm build for `Instruction` doesn't contain `Clone`. This is because we missed the derivations for the wasm version of `Instruction` in https://github.com/anza-xyz/agave/pull/1658. #### Summary of changes Looking back through that PR, I noticed that we only missed those additional derives on `Instruction`, so just fix those in `Instruction`. Since this is fixing a small regression for wasm builds, I think we should backport the change to v2.1. (cherry picked from commit d3bce9f02414e47b7f498d71503f8061a75d72b0) Co-authored-by: Jon C --- sdk/instruction/src/lib.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sdk/instruction/src/lib.rs b/sdk/instruction/src/lib.rs index b94ebf9df7ea2d..3f3cdc00d9b352 100644 --- a/sdk/instruction/src/lib.rs +++ b/sdk/instruction/src/lib.rs @@ -105,6 +105,11 @@ pub struct Instruction { /// is fixed. This must not diverge from the regular non-wasm Instruction struct. #[cfg(all(feature = "std", target_arch = "wasm32"))] #[wasm_bindgen::prelude::wasm_bindgen] +#[cfg_attr( + feature = "serde", + derive(serde_derive::Serialize, serde_derive::Deserialize) +)] +#[derive(Debug, PartialEq, Eq, Clone)] pub struct Instruction { #[wasm_bindgen(skip)] pub program_id: Pubkey, From 0e50e66a30b3676b9de2b6a081f48cbd8c83f56b Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 23:19:04 +0100 Subject: [PATCH 15/33] v2.1: test-validator: Fix upgradeable programs at genesis (backport of #3692) (#3694) test-validator: Fix upgradeable programs at genesis (#3692) #### Problem As noted in https://solana.stackexchange.com/questions/17478/solana-localnet-error-while-upgrading-a-program-loaded-at-genesis-using-solan, an upgradeable program loaded at genesis is not actually upgradeable, failing with `instruction changed executable accounts data`. This is because the program-data account is incorrectly set as "executable", which it isn't really. #### Summary of changes Don't set the program-data account as executable. This is the only place in the repo where we were doing this incorrectly. (cherry picked from commit 73f54a05ac38228b1d86504041a17efcb46d6468) Co-authored-by: Jon C --- test-validator/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-validator/src/lib.rs b/test-validator/src/lib.rs index 8f25086d2f6ef1..ab480854203368 100644 --- a/test-validator/src/lib.rs +++ b/test-validator/src/lib.rs @@ -808,7 +808,7 @@ impl TestValidator { lamports: Rent::default().minimum_balance(program_data.len()).max(1), data: program_data, owner: upgradeable_program.loader, - executable: true, + executable: false, rent_epoch: 0, }), ); From d1528689b2c5743dcfb7182a782c0076a408f502 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 12:11:44 +0900 Subject: [PATCH 16/33] v2.1: [zk-sdk] Expose ElGamal decryption and proof program to wasm target (backport of #3601) (#3630) --- zk-sdk/src/encryption/discrete_log.rs | 1 + zk-sdk/src/encryption/elgamal.rs | 66 +++++++++++++-------------- zk-sdk/src/encryption/mod.rs | 2 +- zk-sdk/src/lib.rs | 1 - 4 files changed, 33 insertions(+), 37 deletions(-) diff --git a/zk-sdk/src/encryption/discrete_log.rs b/zk-sdk/src/encryption/discrete_log.rs index 2e96a952029284..b5cd83f99172d3 100644 --- a/zk-sdk/src/encryption/discrete_log.rs +++ b/zk-sdk/src/encryption/discrete_log.rs @@ -146,6 +146,7 @@ impl DiscreteLog { /// Solves the discrete log problem under the assumption that the solution /// is a positive 32-bit number. pub fn decode_u32(self) -> Option { + #[allow(unused_variables)] if let Some(num_threads) = self.num_threads { #[cfg(not(target_arch = "wasm32"))] { diff --git a/zk-sdk/src/encryption/elgamal.rs b/zk-sdk/src/encryption/elgamal.rs index 9df73d6b199b85..b391e5f22973bd 100644 --- a/zk-sdk/src/encryption/elgamal.rs +++ b/zk-sdk/src/encryption/elgamal.rs @@ -20,27 +20,10 @@ use wasm_bindgen::prelude::*; // types and functions exported for wasm targets in all of its dependencies // (https://github.com/rustwasm/wasm-bindgen/issues/3759). We specifically exclude some of the // dependencies that will cause unnecessary bloat to the wasm binary. -#[cfg(not(target_arch = "wasm32"))] -use { - crate::encryption::discrete_log::DiscreteLog, - sha3::Digest, - solana_derivation_path::DerivationPath, - solana_sdk::{ - signature::Signature, - signer::{ - keypair::generate_seed_from_seed_phrase_and_passphrase, EncodableKey, EncodableKeypair, - SeedDerivable, Signer, SignerError, - }, - }, - std::{ - error, - io::{Read, Write}, - path::Path, - }, -}; use { crate::{ encryption::{ + discrete_log::DiscreteLog, pedersen::{Pedersen, PedersenCommitment, PedersenOpening, G, H}, DECRYPT_HANDLE_LEN, ELGAMAL_CIPHERTEXT_LEN, ELGAMAL_KEYPAIR_LEN, ELGAMAL_PUBKEY_LEN, ELGAMAL_SECRET_KEY_LEN, PEDERSEN_COMMITMENT_LEN, @@ -61,6 +44,23 @@ use { subtle::{Choice, ConstantTimeEq}, zeroize::Zeroize, }; +#[cfg(not(target_arch = "wasm32"))] +use { + sha3::Digest, + solana_derivation_path::DerivationPath, + solana_sdk::{ + signature::Signature, + signer::{ + keypair::generate_seed_from_seed_phrase_and_passphrase, EncodableKey, EncodableKeypair, + SeedDerivable, Signer, SignerError, + }, + }, + std::{ + error, + io::{Read, Write}, + path::Path, + }, +}; /// Algorithm handle for the twisted ElGamal encryption scheme pub struct ElGamal; @@ -126,7 +126,6 @@ impl ElGamal { /// /// The output of this function is of type `DiscreteLog`. To recover, the originally encrypted /// amount, use `DiscreteLog::decode`. - #[cfg(not(target_arch = "wasm32"))] fn decrypt(secret: &ElGamalSecretKey, ciphertext: &ElGamalCiphertext) -> DiscreteLog { DiscreteLog::new( *G, @@ -139,7 +138,6 @@ impl ElGamal { /// /// If the originally encrypted amount is not a positive 32-bit number, then the function /// returns `None`. - #[cfg(not(target_arch = "wasm32"))] fn decrypt_u32(secret: &ElGamalSecretKey, ciphertext: &ElGamalCiphertext) -> Option { let discrete_log_instance = Self::decrypt(secret, ciphertext); discrete_log_instance.decode_u32() @@ -467,6 +465,19 @@ impl ElGamalSecretKey { pub fn as_bytes(&self) -> &[u8; ELGAMAL_SECRET_KEY_LEN] { self.0.as_bytes() } + + /// Decrypts a ciphertext using the ElGamal secret key. + /// + /// The output of this function is of type `DiscreteLog`. To recover, the originally encrypted + /// message, use `DiscreteLog::decode`. + pub fn decrypt(&self, ciphertext: &ElGamalCiphertext) -> DiscreteLog { + ElGamal::decrypt(self, ciphertext) + } + + /// Decrypts a ciphertext using the ElGamal secret key interpretting the message as type `u32`. + pub fn decrypt_u32(&self, ciphertext: &ElGamalCiphertext) -> Option { + ElGamal::decrypt_u32(self, ciphertext) + } } #[cfg(not(target_arch = "wasm32"))] @@ -517,19 +528,6 @@ impl ElGamalSecretKey { result.to_vec() } - - /// Decrypts a ciphertext using the ElGamal secret key. - /// - /// The output of this function is of type `DiscreteLog`. To recover, the originally encrypted - /// message, use `DiscreteLog::decode`. - pub fn decrypt(&self, ciphertext: &ElGamalCiphertext) -> DiscreteLog { - ElGamal::decrypt(self, ciphertext) - } - - /// Decrypts a ciphertext using the ElGamal secret key interpretting the message as type `u32`. - pub fn decrypt_u32(&self, ciphertext: &ElGamalCiphertext) -> Option { - ElGamal::decrypt_u32(self, ciphertext) - } } #[cfg(not(target_arch = "wasm32"))] @@ -666,7 +664,6 @@ impl ElGamalCiphertext { /// /// The output of this function is of type `DiscreteLog`. To recover, the originally encrypted /// amount, use `DiscreteLog::decode`. - #[cfg(not(target_arch = "wasm32"))] pub fn decrypt(&self, secret: &ElGamalSecretKey) -> DiscreteLog { ElGamal::decrypt(secret, self) } @@ -676,7 +673,6 @@ impl ElGamalCiphertext { /// /// If the originally encrypted amount is not a positive 32-bit number, then the function /// returns `None`. - #[cfg(not(target_arch = "wasm32"))] pub fn decrypt_u32(&self, secret: &ElGamalSecretKey) -> Option { ElGamal::decrypt_u32(secret, self) } diff --git a/zk-sdk/src/encryption/mod.rs b/zk-sdk/src/encryption/mod.rs index 28a9ae6bf7fded..8cad6217fc4c68 100644 --- a/zk-sdk/src/encryption/mod.rs +++ b/zk-sdk/src/encryption/mod.rs @@ -17,7 +17,7 @@ use crate::{RISTRETTO_POINT_LEN, SCALAR_LEN}; pub(crate) mod macros; #[cfg(not(target_os = "solana"))] pub mod auth_encryption; -#[cfg(all(not(target_os = "solana"), not(target_arch = "wasm32")))] +#[cfg(not(target_os = "solana"))] pub mod discrete_log; #[cfg(not(target_os = "solana"))] pub mod elgamal; diff --git a/zk-sdk/src/lib.rs b/zk-sdk/src/lib.rs index 8d7388475f2f36..824a4718f14c5c 100644 --- a/zk-sdk/src/lib.rs +++ b/zk-sdk/src/lib.rs @@ -25,7 +25,6 @@ pub mod pod; mod range_proof; mod sigma_proofs; mod transcript; -#[cfg(not(target_arch = "wasm32"))] pub mod zk_elgamal_proof_program; /// Byte length of a compressed Ristretto point or scalar in Curve255519 From 245716f90bcca5dbf1461700c110bf54d96fb5f5 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 20 Nov 2024 22:10:25 +0000 Subject: [PATCH 17/33] v2.1: rolls out chained Merkle shreds to devnet (backport of #3722) (#3726) rolls out chained Merkle shreds to devnet (#3722) (cherry picked from commit 8030d2dfd977cf3897500728149537118d2869cc) Co-authored-by: behzad nouri --- turbine/src/broadcast_stage/standard_broadcast_run.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/turbine/src/broadcast_stage/standard_broadcast_run.rs b/turbine/src/broadcast_stage/standard_broadcast_run.rs index 6696db6fb039ef..6723ed6f32aafe 100644 --- a/turbine/src/broadcast_stage/standard_broadcast_run.rs +++ b/turbine/src/broadcast_stage/standard_broadcast_run.rs @@ -506,7 +506,7 @@ impl BroadcastRun for StandardBroadcastRun { fn should_chain_merkle_shreds(_slot: Slot, cluster_type: ClusterType) -> bool { match cluster_type { ClusterType::Development => true, - ClusterType::Devnet => false, + ClusterType::Devnet => true, ClusterType::MainnetBeta => false, ClusterType::Testnet => false, } From da67a7754c6f64e26d0d4cfcaa820252ae3ae0df Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:13:30 +0800 Subject: [PATCH 18/33] v2.1: remove ntapi patch (backport of #3584) (#3666) remove ntapi patch (#3584) * use anza-xyz/ntapi instead of the labs one * remove ntapi patch * fix shellcheck (cherry picked from commit da90cbee49d0e08d5124f0888d82b2f6774c27be) Co-authored-by: Yihau Chen --- scripts/cargo-install-all.sh | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/scripts/cargo-install-all.sh b/scripts/cargo-install-all.sh index 3a25fb75892ff1..e6dd54f5194099 100755 --- a/scripts/cargo-install-all.sh +++ b/scripts/cargo-install-all.sh @@ -201,12 +201,8 @@ check_dcou() { # shellcheck source=scripts/spl-token-cli-version.sh source "$SOLANA_ROOT"/scripts/spl-token-cli-version.sh - # the patch-related configs are needed for rust 1.69+ on Windows; see Cargo.toml - # shellcheck disable=SC2086 # Don't want to double quote $rust_version - "$cargo" $maybeRustVersion \ - --config 'patch.crates-io.ntapi.git="https://github.com/solana-labs/ntapi"' \ - --config 'patch.crates-io.ntapi.rev="97ede981a1777883ff86d142b75024b023f04fad"' \ - install --locked spl-token-cli --root "$installDir" $maybeSplTokenCliVersionArg + # shellcheck disable=SC2086 + "$cargo" $maybeRustVersion install --locked spl-token-cli --root "$installDir" $maybeSplTokenCliVersionArg fi ) From 4804ee8295cd2aa015deff41addc80846d111c08 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 20 Nov 2024 23:14:42 -0800 Subject: [PATCH 19/33] v2.1: runtime: migrate stake program to core bpf (backport of #3655) (#3714) runtime: migrate stake program to core bpf (#3655) (cherry picked from commit 14bb15f3bb107a0a70e67ad3dc05254c1f5bf9fa) Co-authored-by: hana <81144685+2501babe@users.noreply.github.com> --- runtime/src/bank/builtins/mod.rs | 42 ++++++++++++-------------------- sdk/feature-set/src/lib.rs | 5 ++++ 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/runtime/src/bank/builtins/mod.rs b/runtime/src/bank/builtins/mod.rs index 99dfa5a0cfa836..46a11849758f78 100644 --- a/runtime/src/bank/builtins/mod.rs +++ b/runtime/src/bank/builtins/mod.rs @@ -46,13 +46,19 @@ pub static BUILTINS: &[BuiltinPrototype] = &[ program_id: solana_vote_program::id(), entrypoint: solana_vote_program::vote_processor::Entrypoint::vm, }), - testable_prototype!(BuiltinPrototype { - core_bpf_migration_config: None, - name: stake_program, + BuiltinPrototype { + core_bpf_migration_config: Some(CoreBpfMigrationConfig { + source_buffer_address: buffer_accounts::stake_program::id(), + upgrade_authority_address: None, + feature_id: solana_feature_set::migrate_stake_program_to_core_bpf::id(), + migration_target: core_bpf_migration::CoreBpfMigrationTargetType::Builtin, + datapoint_name: "migrate_builtin_to_core_bpf_stake_program", + }), + name: "stake_program", enable_feature_id: None, program_id: solana_stake_program::id(), entrypoint: solana_stake_program::stake_instruction::Entrypoint::vm, - }), + }, BuiltinPrototype { core_bpf_migration_config: Some(CoreBpfMigrationConfig { source_buffer_address: buffer_accounts::config_program::id(), @@ -153,6 +159,9 @@ mod buffer_accounts { pub mod feature_gate_program { solana_sdk::declare_id!("3D3ydPWvmEszrSjrickCtnyRSJm1rzbbSsZog8Ub6vLh"); } + pub mod stake_program { + solana_sdk::declare_id!("8t3vv6v99tQA6Gp7fVdsBH66hQMaswH5qsJVqJqo8xvG"); + } } // This module contains a number of arbitrary addresses used for testing Core @@ -203,25 +212,6 @@ mod test_only { }; } - pub mod stake_program { - pub mod feature { - solana_sdk::declare_id!("5gp5YKtNEirX45igBvp39bN6nEwhkNMRS7m2c63D1xPM"); - } - pub mod source_buffer { - solana_sdk::declare_id!("2a3XnUr4Xfxd8hBST8wd4D3Qbiu339XKessYsDwabCED"); - } - pub mod upgrade_authority { - solana_sdk::declare_id!("F7K7ADSDzReQAgXYL1KE3u1UBjBtytxQ8bke7BF1Uegg"); - } - pub const CONFIG: super::CoreBpfMigrationConfig = super::CoreBpfMigrationConfig { - source_buffer_address: source_buffer::id(), - upgrade_authority_address: Some(upgrade_authority::id()), - feature_id: feature::id(), - migration_target: super::CoreBpfMigrationTargetType::Builtin, - datapoint_name: "migrate_builtin_to_core_bpf_stake_program", - }; - } - pub mod solana_bpf_loader_deprecated_program { pub mod feature { solana_sdk::declare_id!("8gpakCv5Pk5PZGv9RUjzdkk2GVQPGx12cNRUDMQ3bP86"); @@ -371,10 +361,8 @@ mod tests { &super::BUILTINS[1].core_bpf_migration_config, &Some(super::test_only::vote_program::CONFIG) ); - assert_eq!( - &super::BUILTINS[2].core_bpf_migration_config, - &Some(super::test_only::stake_program::CONFIG) - ); + // Stake has a live migration config, so it has no test-only configs + // to test here. // Config has a live migration config, so it has no test-only configs // to test here. assert_eq!( diff --git a/sdk/feature-set/src/lib.rs b/sdk/feature-set/src/lib.rs index e7e41251e7bfd9..2f6a41a3e72813 100644 --- a/sdk/feature-set/src/lib.rs +++ b/sdk/feature-set/src/lib.rs @@ -877,6 +877,10 @@ pub mod enable_secp256r1_precompile { solana_pubkey::declare_id!("sr11RdZWgbHTHxSroPALe6zgaT5A1K9LcE4nfsZS4gi"); } +pub mod migrate_stake_program_to_core_bpf { + solana_pubkey::declare_id!("6M4oQ6eXneVhtLoiAr4yRYQY43eVLjrKbiDZDJc892yk"); +} + lazy_static! { /// Map of feature identifiers to user-visible description pub static ref FEATURE_NAMES: HashMap = [ @@ -1091,6 +1095,7 @@ lazy_static! { (reenable_sbpf_v1_execution::id(), "Re-enables execution of SBPFv1 programs"), (disable_account_loader_special_case::id(), "Disable account loader special case #3513"), (enable_secp256r1_precompile::id(), "Enable secp256r1 precompile SIMD-0075"), + (migrate_stake_program_to_core_bpf::id(), "Migrate Stake program to Core BPF SIMD-0196 #3655"), /*************** ADD NEW FEATURES HERE ***************/ ] .iter() From f0e17c63e1f7bff4603b5453381a4ea2b7ba4222 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 22:59:36 +1100 Subject: [PATCH 20/33] v2.1: update quinn-proto to 0.11.9 (backport of #3643) (#3672) * update quinn-proto to 0.11.9 (#3643) (cherry picked from commit 2c6e41cc362c9ffa6f1d5a0584e9ebf03e9b0d30) # Conflicts: # Cargo.toml * fixed merge issues --------- Co-authored-by: Lijun Wang <83639177+lijunwangs@users.noreply.github.com> --- Cargo.lock | 332 ++++++++++++++++++++++------------------ Cargo.toml | 4 +- programs/sbf/Cargo.lock | 294 +++++++++++++++++++---------------- 3 files changed, 351 insertions(+), 279 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 561bb586115e08..3a99eb04b62656 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -114,7 +114,7 @@ dependencies = [ "log", "solana-sdk", "solana-transaction-status", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -205,7 +205,7 @@ dependencies = [ "solana-version", "solana-vote-program", "solana_rbpf", - "thiserror", + "thiserror 1.0.65", "tikv-jemallocator", "tokio", ] @@ -305,7 +305,7 @@ dependencies = [ "spl-token-2022", "symlink", "tempfile", - "thiserror", + "thiserror 1.0.65", "tikv-jemallocator", "tokio", ] @@ -616,7 +616,7 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror", + "thiserror 1.0.65", "time", ] @@ -734,7 +734,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -887,7 +887,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1037,7 +1037,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", "syn_derive", ] @@ -1169,7 +1169,7 @@ checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1227,7 +1227,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" dependencies = [ "libc", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -1250,7 +1250,7 @@ dependencies = [ "semver 1.0.23", "serde", "serde_json", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -1320,7 +1320,7 @@ checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1573,9 +1573,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "core-foundation" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6888e10551bb93e424d8df1d07f1a8b4fceb0001a3a4b048bfc47554946f47b3" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -1583,9 +1583,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core_affinity" @@ -1813,7 +1813,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1837,7 +1837,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1848,7 +1848,7 @@ checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" dependencies = [ "darling_core", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1910,7 +1910,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -2034,7 +2034,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -2140,7 +2140,7 @@ checksum = "03cdc46ec28bd728e67540c528013c6a10eb69a02eb31078a1bda695438cbfb8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -2279,7 +2279,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed3d8a5e20435ff00469e51a0d82049bae66504b5c429920dadf9bb54d47b3f" dependencies = [ "libc", - "thiserror", + "thiserror 1.0.65", "winapi 0.3.9", ] @@ -2452,7 +2452,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3154,7 +3154,7 @@ dependencies = [ "combine 4.6.7", "jni-sys", "log", - "thiserror", + "thiserror 1.0.65", "walkdir", ] @@ -3458,7 +3458,7 @@ dependencies = [ "ark-bn254", "ark-ff", "num-bigint 0.4.6", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -3812,7 +3812,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3885,7 +3885,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -4015,7 +4015,7 @@ dependencies = [ "percent-encoding 2.3.1", "pin-project", "rand 0.8.5", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -4519,7 +4519,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -4545,38 +4545,41 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" dependencies = [ "bytes", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash 2.0.0", - "rustls 0.23.15", + "rustls 0.23.17", "socket2 0.5.7", - "thiserror", + "thiserror 2.0.3", "tokio", "tracing", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", + "getrandom 0.2.10", "rand 0.8.5", "ring 0.17.3", "rustc-hash 2.0.0", - "rustls 0.23.15", + "rustls 0.23.17", + "rustls-pki-types", "rustls-platform-verifier", "slab", - "thiserror", + "thiserror 2.0.3", "tinyvec", "tracing", + "web-time", ] [[package]] @@ -4912,7 +4915,7 @@ dependencies = [ "reqwest", "serde", "task-local-extensions", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -5056,9 +5059,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.15" +version = "0.23.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" +checksum = "7f1a745511c54ba6d4465e8d5dfbd81b45791756de28d4981af70d6dca128f1e" dependencies = [ "once_cell", "ring 0.17.3", @@ -5105,26 +5108,29 @@ name = "rustls-pki-types" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +dependencies = [ + "web-time", +] [[package]] name = "rustls-platform-verifier" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034f511ae2823d6a657925d5f7cf821d7458367ce0a54fbe743c471fdddd8111" +checksum = "a4c7dc240fec5517e6c4eab3310438636cfe6391dfc345ba013109909a90d136" dependencies = [ "core-foundation", "core-foundation-sys", "jni", "log", "once_cell", - "rustls 0.23.15", + "rustls 0.23.17", "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki 0.102.8", "security-framework", "security-framework-sys", - "webpki-roots 0.26.6", - "winapi 0.3.9", + "webpki-root-certs", + "windows-sys 0.52.0", ] [[package]] @@ -5227,11 +5233,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.6.1" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -5241,9 +5247,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" dependencies = [ "core-foundation-sys", "libc", @@ -5311,7 +5317,7 @@ checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -5367,7 +5373,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -5417,7 +5423,7 @@ checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -5694,7 +5700,7 @@ dependencies = [ "spl-token-2022", "spl-token-group-interface", "spl-token-metadata-interface", - "thiserror", + "thiserror 1.0.65", "zstd", ] @@ -5827,7 +5833,7 @@ dependencies = [ "tar", "tempfile", "test-case", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -5844,7 +5850,7 @@ dependencies = [ "solana-program", "solana-program-runtime", "solana-sdk", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -5902,7 +5908,7 @@ dependencies = [ "solana-runtime", "solana-sdk", "tarpc", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-serde", ] @@ -5991,7 +5997,7 @@ dependencies = [ "solana-version", "spl-instruction-padding", "tempfile", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -6035,7 +6041,7 @@ dependencies = [ "serde_derive", "serde_json", "solana-program", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -6073,7 +6079,7 @@ dependencies = [ "solana-vote", "solana_rbpf", "test-case", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -6172,7 +6178,7 @@ dependencies = [ "solana-remote-wallet", "solana-sdk", "tempfile", - "thiserror", + "thiserror 1.0.65", "tiny-bip39", "uriparse", "url 2.5.2", @@ -6191,7 +6197,7 @@ dependencies = [ "solana-sdk", "solana-zk-token-sdk", "tempfile", - "thiserror", + "thiserror 1.0.65", "tiny-bip39", "uriparse", "url 2.5.2", @@ -6255,7 +6261,7 @@ dependencies = [ "spl-memo", "tempfile", "test-case", - "thiserror", + "thiserror 1.0.65", "tiny-bip39", ] @@ -6327,7 +6333,7 @@ dependencies = [ "solana-thin-client", "solana-tpu-client", "solana-udp-client", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -6422,7 +6428,7 @@ dependencies = [ "solana-metrics", "solana-net-utils", "solana-sdk", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -6458,7 +6464,7 @@ dependencies = [ "rand_chacha 0.3.1", "rayon", "rolling-file", - "rustls 0.23.15", + "rustls 0.23.17", "serde", "serde_bytes", "serde_derive", @@ -6518,7 +6524,7 @@ dependencies = [ "systemstat", "tempfile", "test-case", - "thiserror", + "thiserror 1.0.65", "tokio", "trees", ] @@ -6572,7 +6578,7 @@ dependencies = [ "bytemuck_derive", "curve25519-dalek 4.1.3", "solana-program", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -6708,7 +6714,7 @@ dependencies = [ "solana-sdk", "solana-version", "spl-memo", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -6766,7 +6772,7 @@ dependencies = [ "sha2 0.10.8", "solana-frozen-abi-macro", "solana-logger", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -6775,7 +6781,7 @@ version = "2.1.2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -6837,7 +6843,7 @@ dependencies = [ "solana-runtime", "solana-sdk", "solana-transaction-status", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -6892,7 +6898,7 @@ dependencies = [ "solana-vote-program", "static_assertions", "test-case", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7064,7 +7070,7 @@ dependencies = [ "tar", "tempfile", "test-case", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-stream", "trees", @@ -7201,7 +7207,7 @@ dependencies = [ "reqwest", "serial_test", "solana-sdk", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7277,7 +7283,7 @@ version = "2.1.2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", "toml 0.8.12", ] @@ -7347,7 +7353,7 @@ dependencies = [ "solana-poh", "solana-runtime", "solana-sdk", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7373,7 +7379,7 @@ dependencies = [ "ark-bn254", "light-poseidon", "solana-define-syscall", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7465,7 +7471,7 @@ dependencies = [ "solana-transaction-error", "static_assertions", "test-case", - "thiserror", + "thiserror 1.0.65", "wasm-bindgen", ] @@ -7542,7 +7548,7 @@ dependencies = [ "solana-vote", "solana_rbpf", "test-case", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7577,7 +7583,7 @@ dependencies = [ "solana-vote-program", "solana_rbpf", "test-case", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -7630,7 +7636,7 @@ dependencies = [ "solana-account-decoder", "solana-rpc-client-api", "solana-sdk", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-stream", "tokio-tungstenite", @@ -7651,7 +7657,7 @@ dependencies = [ "log", "quinn", "quinn-proto", - "rustls 0.23.15", + "rustls 0.23.17", "solana-connection-cache", "solana-logger", "solana-measure", @@ -7661,7 +7667,7 @@ dependencies = [ "solana-rpc-client-api", "solana-sdk", "solana-streamer", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -7689,7 +7695,7 @@ dependencies = [ "semver 1.0.23", "solana-derivation-path", "solana-sdk", - "thiserror", + "thiserror 1.0.65", "uriparse", ] @@ -7764,7 +7770,7 @@ dependencies = [ "spl-token-2022", "stream-cancel", "symlink", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-util 0.7.12", ] @@ -7820,7 +7826,7 @@ dependencies = [ "solana-sdk", "solana-transaction-status-client-types", "solana-version", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7836,7 +7842,7 @@ dependencies = [ "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -7963,7 +7969,7 @@ dependencies = [ "tar", "tempfile", "test-case", - "thiserror", + "thiserror 1.0.65", "zstd", ] @@ -7982,7 +7988,7 @@ dependencies = [ "solana-pubkey", "solana-sdk", "solana-svm-transaction", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -8058,7 +8064,7 @@ dependencies = [ "solana-signature", "solana-transaction-error", "static_assertions", - "thiserror", + "thiserror 1.0.65", "tiny-bip39", "wasm-bindgen", ] @@ -8070,7 +8076,7 @@ dependencies = [ "bs58", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -8084,7 +8090,7 @@ dependencies = [ "solana-frozen-abi", "solana-frozen-abi-macro", "solana-program", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -8290,7 +8296,7 @@ dependencies = [ "solana-sdk", "solana-storage-proto", "solana-transaction-status", - "thiserror", + "thiserror 1.0.65", "tokio", "tonic", "zstd", @@ -8335,7 +8341,7 @@ dependencies = [ "quinn", "quinn-proto", "rand 0.8.5", - "rustls 0.23.15", + "rustls 0.23.17", "smallvec", "socket2 0.5.7", "solana-logger", @@ -8344,7 +8350,7 @@ dependencies = [ "solana-perf", "solana-sdk", "solana-transaction-metrics-tracker", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-util 0.7.12", "x509-parser", @@ -8413,7 +8419,7 @@ dependencies = [ "solana_rbpf", "spl-token-2022", "test-case", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-util 0.7.12", "yaml-rust", @@ -8570,7 +8576,7 @@ dependencies = [ "spl-associated-token-account", "spl-token", "tempfile", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -8591,7 +8597,7 @@ dependencies = [ "solana-tpu-client", "solana-transaction-status", "tempfile", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -8611,7 +8617,7 @@ dependencies = [ "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -8625,7 +8631,7 @@ dependencies = [ "log", "lru", "quinn", - "rustls 0.23.15", + "rustls 0.23.17", "solana-cli-config", "solana-connection-cache", "solana-logger", @@ -8634,7 +8640,7 @@ dependencies = [ "solana-sdk", "solana-streamer", "solana-tpu-client", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-util 0.7.12", ] @@ -8715,7 +8721,7 @@ dependencies = [ "spl-token-2022", "spl-token-group-interface", "spl-token-metadata-interface", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -8731,7 +8737,7 @@ dependencies = [ "solana-account-decoder-client-types", "solana-sdk", "solana-signature", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -8751,7 +8757,7 @@ dependencies = [ "rand 0.8.5", "rand_chacha 0.3.1", "rayon", - "rustls 0.23.15", + "rustls 0.23.17", "solana-entry", "solana-feature-set", "solana-geyser-plugin-manager", @@ -8771,7 +8777,7 @@ dependencies = [ "solana-streamer", "static_assertions", "test-case", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -8794,7 +8800,7 @@ dependencies = [ "solana-net-utils", "solana-sdk", "solana-streamer", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -8864,7 +8870,7 @@ dependencies = [ "solana-frozen-abi", "solana-frozen-abi-macro", "solana-sdk", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -8887,7 +8893,7 @@ dependencies = [ "solana-program-runtime", "solana-sdk", "test-case", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -8945,7 +8951,7 @@ dependencies = [ "solana-version", "solana-zk-token-sdk", "tempfile", - "thiserror", + "thiserror 1.0.65", "tiny-bip39", ] @@ -8974,7 +8980,7 @@ dependencies = [ "solana-program", "solana-sdk", "subtle", - "thiserror", + "thiserror 1.0.65", "tiny-bip39", "wasm-bindgen", "zeroize", @@ -9034,7 +9040,7 @@ dependencies = [ "solana-program", "solana-sdk", "subtle", - "thiserror", + "thiserror 1.0.65", "tiny-bip39", "zeroize", ] @@ -9055,7 +9061,7 @@ dependencies = [ "rustc-demangle", "scroll", "shuttle", - "thiserror", + "thiserror 1.0.65", "winapi 0.3.9", ] @@ -9093,7 +9099,7 @@ dependencies = [ "solana-program", "spl-token", "spl-token-2022", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -9115,7 +9121,7 @@ checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -9127,8 +9133,8 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.85", - "thiserror", + "syn 2.0.87", + "thiserror 1.0.65", ] [[package]] @@ -9174,7 +9180,7 @@ dependencies = [ "num-traits", "solana-program", "spl-program-error-derive", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -9186,7 +9192,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -9215,7 +9221,7 @@ dependencies = [ "num-traits", "num_enum", "solana-program", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -9239,7 +9245,7 @@ dependencies = [ "spl-token-metadata-interface", "spl-transfer-hook-interface", "spl-type-length-value", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -9374,9 +9380,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.85" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -9392,7 +9398,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -9432,7 +9438,7 @@ dependencies = [ "bitflags 1.3.2", "byteorder", "libc", - "thiserror", + "thiserror 1.0.65", "walkdir", ] @@ -9504,7 +9510,7 @@ dependencies = [ "serde", "static_assertions", "tarpc-plugins", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-serde", "tokio-util 0.6.10", @@ -9579,7 +9585,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -9591,7 +9597,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", "test-case-core", ] @@ -9616,7 +9622,16 @@ version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.65", +] + +[[package]] +name = "thiserror" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +dependencies = [ + "thiserror-impl 2.0.3", ] [[package]] @@ -9627,7 +9642,18 @@ checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] @@ -9697,7 +9723,7 @@ dependencies = [ "rand 0.7.3", "rustc-hash 1.1.0", "sha2 0.9.9", - "thiserror", + "thiserror 1.0.65", "unicode-normalization", "wasm-bindgen", "zeroize", @@ -9764,7 +9790,7 @@ source = "git+https://github.com/anza-xyz/solana-tokio.git?rev=7cf47705faacf7bf0 dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -10008,7 +10034,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -10071,7 +10097,7 @@ dependencies = [ "rand 0.8.5", "rustls 0.21.12", "sha1", - "thiserror", + "thiserror 1.0.65", "url 2.5.2", "utf-8", "webpki-roots 0.24.0", @@ -10318,7 +10344,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -10352,7 +10378,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -10373,6 +10399,25 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-root-certs" +version = "0.26.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c6dfa3ac045bc517de14c7b1384298de1dbd229d38e08e169d9ae8c170937c" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "webpki-roots" version = "0.24.0" @@ -10388,15 +10433,6 @@ version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" -[[package]] -name = "webpki-roots" -version = "0.26.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "which" version = "4.2.2" @@ -10679,7 +10715,7 @@ dependencies = [ "nom", "oid-registry", "rusticata-macros", - "thiserror", + "thiserror 1.0.65", "time", ] @@ -10720,7 +10756,7 @@ checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -10740,7 +10776,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index f6d42942390df9..e89c5e54ee1368 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -351,8 +351,8 @@ prost-types = "0.11.9" protobuf-src = "1.1.0" qstring = "0.7.2" qualifier_attr = { version = "0.2.2", default-features = false } -quinn = "0.11.4" -quinn-proto = "0.11.7" +quinn = "0.11.6" +quinn-proto = "0.11.9" quote = "1.0" rand = "0.8.5" rand_chacha = "0.3.1" diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index abcd2f32544393..f9117866230cc5 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -70,7 +70,7 @@ dependencies = [ "log", "solana-sdk", "solana-transaction-status", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -141,7 +141,7 @@ dependencies = [ "solana-version", "solana-vote-program", "symlink", - "thiserror", + "thiserror 1.0.65", "tikv-jemallocator", "tokio", ] @@ -412,7 +412,7 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror", + "thiserror 1.0.65", "time", ] @@ -500,7 +500,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -511,7 +511,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -664,7 +664,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -766,7 +766,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", "syn_derive", ] @@ -865,7 +865,7 @@ checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -914,7 +914,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" dependencies = [ "libc", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -969,7 +969,7 @@ checksum = "45565fc9416b9896014f5732ac776f810ee53a66730c17e4020c3ec064a8f88f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1272,7 +1272,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1296,7 +1296,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1307,7 +1307,7 @@ checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" dependencies = [ "darling_core", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1459,7 +1459,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1482,7 +1482,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1591,7 +1591,7 @@ checksum = "03cdc46ec28bd728e67540c528013c6a10eb69a02eb31078a1bda695438cbfb8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1604,7 +1604,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1874,7 +1874,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -2467,7 +2467,7 @@ dependencies = [ "combine 4.6.7", "jni-sys", "log", - "thiserror", + "thiserror 1.0.65", "walkdir", ] @@ -2826,7 +2826,7 @@ dependencies = [ "ark-bn254", "ark-ff", "num-bigint 0.4.6", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -3175,7 +3175,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3247,7 +3247,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3309,7 +3309,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3356,7 +3356,7 @@ dependencies = [ "percent-encoding 2.3.1", "pin-project", "rand 0.8.5", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -3488,7 +3488,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.65", "ucd-trie", ] @@ -3512,7 +3512,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3553,7 +3553,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3790,7 +3790,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3810,38 +3810,41 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" dependencies = [ "bytes", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash 2.0.0", - "rustls 0.23.15", + "rustls 0.23.17", "socket2 0.5.7", - "thiserror", + "thiserror 2.0.3", "tokio", "tracing", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" dependencies = [ "bytes", + "getrandom 0.2.10", "rand 0.8.5", "ring 0.17.3", "rustc-hash 2.0.0", - "rustls 0.23.15", + "rustls 0.23.17", + "rustls-pki-types", "rustls-platform-verifier", "slab", - "thiserror", + "thiserror 2.0.3", "tinyvec", "tracing", + "web-time", ] [[package]] @@ -4112,7 +4115,7 @@ dependencies = [ "reqwest", "serde", "task-local-extensions", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -4247,9 +4250,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.15" +version = "0.23.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbb44d7acc4e873d613422379f69f237a1b141928c02f6bc6ccfddddc2d7993" +checksum = "7f1a745511c54ba6d4465e8d5dfbd81b45791756de28d4981af70d6dca128f1e" dependencies = [ "once_cell", "ring 0.17.3", @@ -4296,26 +4299,29 @@ name = "rustls-pki-types" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +dependencies = [ + "web-time", +] [[package]] name = "rustls-platform-verifier" -version = "0.3.4" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490" +checksum = "a4c7dc240fec5517e6c4eab3310438636cfe6391dfc345ba013109909a90d136" dependencies = [ "core-foundation", "core-foundation-sys", "jni", "log", "once_cell", - "rustls 0.23.15", + "rustls 0.23.17", "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki 0.102.8", "security-framework", "security-framework-sys", - "webpki-roots 0.26.5", - "winapi 0.3.9", + "webpki-root-certs", + "windows-sys 0.52.0", ] [[package]] @@ -4462,7 +4468,7 @@ checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -4509,7 +4515,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -4750,7 +4756,7 @@ dependencies = [ "spl-token-2022", "spl-token-group-interface", "spl-token-metadata-interface", - "thiserror", + "thiserror 1.0.65", "zstd", ] @@ -4820,7 +4826,7 @@ dependencies = [ "static_assertions", "tar", "tempfile", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -4837,7 +4843,7 @@ dependencies = [ "solana-program", "solana-program-runtime", "solana-sdk", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -4857,7 +4863,7 @@ dependencies = [ "solana-program", "solana-sdk", "tarpc", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-serde", ] @@ -4924,7 +4930,7 @@ dependencies = [ "ark-serialize", "bytemuck", "solana-program", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -4957,7 +4963,7 @@ dependencies = [ "solana-timings", "solana-type-overrides", "solana_rbpf", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -5005,7 +5011,7 @@ dependencies = [ "solana-derivation-path", "solana-remote-wallet", "solana-sdk", - "thiserror", + "thiserror 1.0.65", "tiny-bip39", "uriparse", "url 2.5.2", @@ -5076,7 +5082,7 @@ dependencies = [ "solana-thin-client", "solana-tpu-client", "solana-udp-client", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -5134,7 +5140,7 @@ dependencies = [ "solana-measure", "solana-metrics", "solana-sdk", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -5168,7 +5174,7 @@ dependencies = [ "rand_chacha 0.3.1", "rayon", "rolling-file", - "rustls 0.23.15", + "rustls 0.23.17", "serde", "serde_bytes", "serde_derive", @@ -5217,7 +5223,7 @@ dependencies = [ "sys-info", "sysctl", "tempfile", - "thiserror", + "thiserror 1.0.65", "tokio", "trees", ] @@ -5259,7 +5265,7 @@ dependencies = [ "bytemuck_derive", "curve25519-dalek 4.1.3", "solana-program", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -5342,7 +5348,7 @@ dependencies = [ "solana-sdk", "solana-version", "spl-memo", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -5407,7 +5413,7 @@ dependencies = [ "solana-runtime", "solana-sdk", "solana-transaction-status", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -5457,7 +5463,7 @@ dependencies = [ "solana-vote", "solana-vote-program", "static_assertions", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -5593,7 +5599,7 @@ dependencies = [ "strum_macros", "tar", "tempfile", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-stream", "trees", @@ -5653,7 +5659,7 @@ dependencies = [ "log", "reqwest", "solana-sdk", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -5740,7 +5746,7 @@ dependencies = [ "solana-metrics", "solana-runtime", "solana-sdk", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -5750,7 +5756,7 @@ dependencies = [ "ark-bn254", "light-poseidon", "solana-define-syscall", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -5828,7 +5834,7 @@ dependencies = [ "solana-stable-layout", "solana-sysvar-id", "solana-transaction-error", - "thiserror", + "thiserror 1.0.65", "wasm-bindgen", ] @@ -5900,7 +5906,7 @@ dependencies = [ "solana-type-overrides", "solana-vote", "solana_rbpf", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -5933,7 +5939,7 @@ dependencies = [ "solana-timings", "solana-vote-program", "solana_rbpf", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -5977,7 +5983,7 @@ dependencies = [ "solana-account-decoder", "solana-rpc-client-api", "solana-sdk", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-stream", "tokio-tungstenite", @@ -5997,7 +6003,7 @@ dependencies = [ "log", "quinn", "quinn-proto", - "rustls 0.23.15", + "rustls 0.23.17", "solana-connection-cache", "solana-measure", "solana-metrics", @@ -6005,7 +6011,7 @@ dependencies = [ "solana-rpc-client-api", "solana-sdk", "solana-streamer", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -6031,7 +6037,7 @@ dependencies = [ "semver", "solana-derivation-path", "solana-sdk", - "thiserror", + "thiserror 1.0.65", "uriparse", ] @@ -6098,7 +6104,7 @@ dependencies = [ "spl-token", "spl-token-2022", "stream-cancel", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-util 0.7.1", ] @@ -6147,7 +6153,7 @@ dependencies = [ "solana-sdk", "solana-transaction-status-client-types", "solana-version", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -6156,7 +6162,7 @@ version = "2.1.2" dependencies = [ "solana-rpc-client", "solana-sdk", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -6242,7 +6248,7 @@ dependencies = [ "symlink", "tar", "tempfile", - "thiserror", + "thiserror 1.0.65", "zstd", ] @@ -6257,7 +6263,7 @@ dependencies = [ "solana-pubkey", "solana-sdk", "solana-svm-transaction", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -6425,7 +6431,7 @@ dependencies = [ "num-traits", "solana-decode-error", "solana-program", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -6808,7 +6814,7 @@ dependencies = [ "solana-short-vec", "solana-signature", "solana-transaction-error", - "thiserror", + "thiserror 1.0.65", "wasm-bindgen", ] @@ -6819,7 +6825,7 @@ dependencies = [ "bs58", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -6829,7 +6835,7 @@ dependencies = [ "borsh 1.5.1", "libsecp256k1 0.6.0", "solana-define-syscall", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -6979,7 +6985,7 @@ dependencies = [ "solana-sdk", "solana-storage-proto", "solana-transaction-status", - "thiserror", + "thiserror 1.0.65", "tokio", "tonic", "zstd", @@ -7022,7 +7028,7 @@ dependencies = [ "quinn", "quinn-proto", "rand 0.8.5", - "rustls 0.23.15", + "rustls 0.23.17", "smallvec", "socket2 0.5.7", "solana-measure", @@ -7030,7 +7036,7 @@ dependencies = [ "solana-perf", "solana-sdk", "solana-transaction-metrics-tracker", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-util 0.7.1", "x509-parser", @@ -7062,7 +7068,7 @@ dependencies = [ "solana-timings", "solana-type-overrides", "solana-vote", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7170,7 +7176,7 @@ dependencies = [ "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -7221,7 +7227,7 @@ dependencies = [ "spl-token-2022", "spl-token-group-interface", "spl-token-metadata-interface", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7237,7 +7243,7 @@ dependencies = [ "solana-account-decoder-client-types", "solana-sdk", "solana-signature", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7256,7 +7262,7 @@ dependencies = [ "rand 0.8.5", "rand_chacha 0.3.1", "rayon", - "rustls 0.23.15", + "rustls 0.23.17", "solana-entry", "solana-feature-set", "solana-geyser-plugin-manager", @@ -7274,7 +7280,7 @@ dependencies = [ "solana-sdk", "solana-streamer", "static_assertions", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -7295,7 +7301,7 @@ dependencies = [ "solana-net-utils", "solana-sdk", "solana-streamer", - "thiserror", + "thiserror 1.0.65", "tokio", ] @@ -7349,7 +7355,7 @@ dependencies = [ "serde", "serde_derive", "solana-sdk", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7367,7 +7373,7 @@ dependencies = [ "solana-program", "solana-program-runtime", "solana-sdk", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7429,7 +7435,7 @@ dependencies = [ "solana-program", "solana-sdk", "subtle", - "thiserror", + "thiserror 1.0.65", "wasm-bindgen", "zeroize", ] @@ -7474,7 +7480,7 @@ dependencies = [ "solana-program", "solana-sdk", "subtle", - "thiserror", + "thiserror 1.0.65", "zeroize", ] @@ -7492,7 +7498,7 @@ dependencies = [ "rand 0.8.5", "rustc-demangle", "scroll", - "thiserror", + "thiserror 1.0.65", "winapi 0.3.9", ] @@ -7530,7 +7536,7 @@ dependencies = [ "solana-program", "spl-token", "spl-token-2022", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7552,7 +7558,7 @@ checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -7564,8 +7570,8 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.85", - "thiserror", + "syn 2.0.87", + "thiserror 1.0.65", ] [[package]] @@ -7601,7 +7607,7 @@ dependencies = [ "num-traits", "solana-program", "spl-program-error-derive", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7613,7 +7619,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -7642,7 +7648,7 @@ dependencies = [ "num-traits", "num_enum", "solana-program", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7666,7 +7672,7 @@ dependencies = [ "spl-token-metadata-interface", "spl-transfer-hook-interface", "spl-type-length-value", - "thiserror", + "thiserror 1.0.65", ] [[package]] @@ -7801,9 +7807,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.85" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -7819,7 +7825,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -7859,7 +7865,7 @@ dependencies = [ "bitflags 1.3.2", "byteorder 1.5.0", "libc", - "thiserror", + "thiserror 1.0.65", "walkdir", ] @@ -7911,7 +7917,7 @@ dependencies = [ "serde", "static_assertions", "tarpc-plugins", - "thiserror", + "thiserror 1.0.65", "tokio", "tokio-serde", "tokio-util 0.6.10", @@ -7982,7 +7988,16 @@ version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.65", +] + +[[package]] +name = "thiserror" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +dependencies = [ + "thiserror-impl 2.0.3", ] [[package]] @@ -7993,7 +8008,18 @@ checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] @@ -8071,7 +8097,7 @@ dependencies = [ "rand 0.7.3", "rustc-hash 1.1.0", "sha2 0.9.9", - "thiserror", + "thiserror 1.0.65", "unicode-normalization", "wasm-bindgen", "zeroize", @@ -8130,7 +8156,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -8348,7 +8374,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -8412,7 +8438,7 @@ dependencies = [ "rand 0.8.5", "rustls 0.21.12", "sha1", - "thiserror", + "thiserror 1.0.65", "url 2.5.2", "utf-8", "webpki-roots 0.24.0", @@ -8638,7 +8664,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -8672,7 +8698,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -8693,6 +8719,25 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-root-certs" +version = "0.26.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c6dfa3ac045bc517de14c7b1384298de1dbd229d38e08e169d9ae8c170937c" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "webpki-roots" version = "0.24.0" @@ -8708,15 +8753,6 @@ version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" -[[package]] -name = "webpki-roots" -version = "0.26.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "which" version = "4.2.5" @@ -8952,7 +8988,7 @@ dependencies = [ "nom", "oid-registry", "rusticata-macros", - "thiserror", + "thiserror 1.0.65", "time", ] @@ -8984,7 +9020,7 @@ checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -9004,7 +9040,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] From cefd3f13a2b8c1f3f8332ebeea3d7bf44d547a9a Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 23:01:57 +1100 Subject: [PATCH 21/33] v2.1: Add not unique leader discovery (backport of #3546) (#3658) Add not unique leader discovery (#3546) * rename get_leader_sockets to get_unique_leader_sockets * Add methods for getting not unique tpu sockets (cherry picked from commit dffcdb4fbcd9704639c7d36dc6f558b037ae0c6f) Co-authored-by: kirill lykov --- tpu-client/src/nonblocking/tpu_client.rs | 47 +++++++++++++++++++----- tpu-client/src/tpu_client.rs | 2 +- 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/tpu-client/src/nonblocking/tpu_client.rs b/tpu-client/src/nonblocking/tpu_client.rs index 1b63059a6b8c86..75886b250bd2fd 100644 --- a/tpu-client/src/nonblocking/tpu_client.rs +++ b/tpu-client/src/nonblocking/tpu_client.rs @@ -19,7 +19,7 @@ use { response::{RpcContactInfo, SlotUpdate}, }, solana_sdk::{ - clock::{Slot, DEFAULT_MS_PER_SLOT}, + clock::{Slot, DEFAULT_MS_PER_SLOT, NUM_CONSECUTIVE_LEADER_SLOTS}, commitment_config::CommitmentConfig, epoch_info::EpochInfo, pubkey::Pubkey, @@ -122,24 +122,43 @@ impl LeaderTpuCache { ) } - // Get the TPU sockets for the current leader and upcoming leaders according to fanout size + // Get the TPU sockets for the current leader and upcoming *unique* leaders according to fanout size. + fn get_unique_leader_sockets( + &self, + estimated_current_slot: Slot, + fanout_slots: u64, + ) -> Vec { + let all_leader_sockets = self.get_leader_sockets(estimated_current_slot, fanout_slots); + + let mut unique_sockets = Vec::new(); + let mut seen = HashSet::new(); + + for socket in all_leader_sockets { + if seen.insert(socket) { + unique_sockets.push(socket); + } + } + + unique_sockets + } + + // Get the TPU sockets for the current leader and upcoming leaders according to fanout size. fn get_leader_sockets( &self, estimated_current_slot: Slot, fanout_slots: u64, ) -> Vec { - let mut leader_set = HashSet::new(); let mut leader_sockets = Vec::new(); // `first_slot` might have been advanced since caller last read the `estimated_current_slot` // value. Take the greater of the two values to ensure we are reading from the latest // leader schedule. let current_slot = std::cmp::max(estimated_current_slot, self.first_slot); - for leader_slot in current_slot..current_slot + fanout_slots { + for leader_slot in (current_slot..current_slot + fanout_slots) + .step_by(NUM_CONSECUTIVE_LEADER_SLOTS as usize) + { if let Some(leader) = self.get_slot_leader(leader_slot) { if let Some(tpu_socket) = self.leader_tpu_map.get(leader) { - if leader_set.insert(*leader) { - leader_sockets.push(*tpu_socket); - } + leader_sockets.push(*tpu_socket); } else { // The leader is probably delinquent trace!("TPU not available for leader {}", leader); @@ -411,7 +430,7 @@ where ) -> TransportResult<()> { let leaders = self .leader_tpu_service - .leader_tpu_sockets(self.fanout_slots); + .unique_leader_tpu_sockets(self.fanout_slots); let futures = leaders .iter() .map(|addr| { @@ -455,7 +474,7 @@ where ) -> TransportResult<()> { let leaders = self .leader_tpu_service - .leader_tpu_sockets(self.fanout_slots); + .unique_leader_tpu_sockets(self.fanout_slots); let futures = leaders .iter() .map(|addr| { @@ -568,7 +587,7 @@ where let wire_transaction = serialize(transaction).unwrap(); let leaders = self .leader_tpu_service - .leader_tpu_sockets(self.fanout_slots); + .unique_leader_tpu_sockets(self.fanout_slots); futures.extend(send_wire_transaction_futures( &progress_bar, &progress, @@ -803,6 +822,14 @@ impl LeaderTpuService { self.recent_slots.estimated_current_slot() } + pub fn unique_leader_tpu_sockets(&self, fanout_slots: u64) -> Vec { + let current_slot = self.recent_slots.estimated_current_slot(); + self.leader_tpu_cache + .read() + .unwrap() + .get_unique_leader_sockets(current_slot, fanout_slots) + } + pub fn leader_tpu_sockets(&self, fanout_slots: u64) -> Vec { let current_slot = self.recent_slots.estimated_current_slot(); self.leader_tpu_cache diff --git a/tpu-client/src/tpu_client.rs b/tpu-client/src/tpu_client.rs index 469b4105fe27ec..3fecab0941771b 100644 --- a/tpu-client/src/tpu_client.rs +++ b/tpu-client/src/tpu_client.rs @@ -119,7 +119,7 @@ where let leaders = self .tpu_client .get_leader_tpu_service() - .leader_tpu_sockets(self.tpu_client.get_fanout_slots()); + .unique_leader_tpu_sockets(self.tpu_client.get_fanout_slots()); for tpu_address in &leaders { let cache = self.tpu_client.get_connection_cache(); From 46a259595a07b85fab0d856aa7083493766a2f9d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 Nov 2024 19:29:16 -0600 Subject: [PATCH 22/33] Bump version to v2.1.3 (#3754) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- Cargo.lock | 362 ++++++++--------- Cargo.toml | 292 ++++++------- programs/sbf/Cargo.lock | 382 +++++++++--------- programs/sbf/Cargo.toml | 78 ++-- .../tests/crates/fail/Cargo.toml | 4 +- .../tests/crates/noop/Cargo.toml | 4 +- .../tests/crates/package-metadata/Cargo.toml | 6 +- .../crates/workspace-metadata/Cargo.toml | 4 +- svm/examples/json-rpc/program/Cargo.toml | 4 +- .../example-programs/clock-sysvar/Cargo.toml | 4 +- .../example-programs/hello-solana/Cargo.toml | 4 +- .../simple-transfer/Cargo.toml | 4 +- .../transfer-from-account/Cargo.toml | 4 +- .../write-to-account/Cargo.toml | 4 +- 14 files changed, 578 insertions(+), 578 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3a99eb04b62656..44fa98541e1829 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "agave-accounts-hash-cache-tool" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ahash 0.8.11", "bytemuck", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "agave-cargo-registry" -version = "2.1.2" +version = "2.1.3" dependencies = [ "clap 2.33.3", "flate2", @@ -109,7 +109,7 @@ dependencies = [ [[package]] name = "agave-geyser-plugin-interface" -version = "2.1.2" +version = "2.1.3" dependencies = [ "log", "solana-sdk", @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "agave-install" -version = "2.1.2" +version = "2.1.3" dependencies = [ "atty", "bincode", @@ -155,7 +155,7 @@ dependencies = [ [[package]] name = "agave-ledger-tool" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_cmd", "bs58", @@ -212,7 +212,7 @@ dependencies = [ [[package]] name = "agave-store-histogram" -version = "2.1.2" +version = "2.1.3" dependencies = [ "clap 2.33.3", "solana-version", @@ -220,7 +220,7 @@ dependencies = [ [[package]] name = "agave-store-tool" -version = "2.1.2" +version = "2.1.3" dependencies = [ "clap 2.33.3", "solana-accounts-db", @@ -230,7 +230,7 @@ dependencies = [ [[package]] name = "agave-transaction-view" -version = "2.1.2" +version = "2.1.3" dependencies = [ "agave-transaction-view", "bincode", @@ -241,7 +241,7 @@ dependencies = [ [[package]] name = "agave-validator" -version = "2.1.2" +version = "2.1.3" dependencies = [ "agave-geyser-plugin-interface", "assert_cmd", @@ -312,7 +312,7 @@ dependencies = [ [[package]] name = "agave-watchtower" -version = "2.1.2" +version = "2.1.3" dependencies = [ "clap 2.33.3", "humantime", @@ -2518,7 +2518,7 @@ dependencies = [ [[package]] name = "gen-headers" -version = "2.1.2" +version = "2.1.3" dependencies = [ "log", "regex", @@ -2526,7 +2526,7 @@ dependencies = [ [[package]] name = "gen-syscall-list" -version = "2.1.2" +version = "2.1.3" dependencies = [ "regex", ] @@ -4487,7 +4487,7 @@ dependencies = [ [[package]] name = "proto" -version = "2.1.2" +version = "2.1.3" dependencies = [ "protobuf-src", "tonic-build", @@ -4767,7 +4767,7 @@ dependencies = [ [[package]] name = "rbpf-cli" -version = "2.1.2" +version = "2.1.3" [[package]] name = "rdrand" @@ -5662,7 +5662,7 @@ dependencies = [ [[package]] name = "solana-account" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "qualifier_attr", @@ -5680,7 +5680,7 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "2.1.2" +version = "2.1.3" dependencies = [ "Inflector", "assert_matches", @@ -5706,7 +5706,7 @@ dependencies = [ [[package]] name = "solana-account-decoder-client-types" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "bs58", @@ -5720,7 +5720,7 @@ dependencies = [ [[package]] name = "solana-account-info" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "serde", @@ -5731,7 +5731,7 @@ dependencies = [ [[package]] name = "solana-accounts-bench" -version = "2.1.2" +version = "2.1.3" dependencies = [ "clap 2.33.3", "log", @@ -5745,7 +5745,7 @@ dependencies = [ [[package]] name = "solana-accounts-cluster-bench" -version = "2.1.2" +version = "2.1.3" dependencies = [ "clap 2.33.3", "log", @@ -5777,7 +5777,7 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ahash 0.8.11", "assert_matches", @@ -5838,7 +5838,7 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "bytemuck", @@ -5855,7 +5855,7 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program-tests" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -5867,14 +5867,14 @@ dependencies = [ [[package]] name = "solana-atomic-u64" -version = "2.1.2" +version = "2.1.3" dependencies = [ "parking_lot 0.12.3", ] [[package]] name = "solana-banking-bench" -version = "2.1.2" +version = "2.1.3" dependencies = [ "clap 3.2.23", "crossbeam-channel", @@ -5898,7 +5898,7 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "borsh 1.5.1", "futures 0.3.31", @@ -5915,7 +5915,7 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -5925,7 +5925,7 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "crossbeam-channel", @@ -5944,7 +5944,7 @@ dependencies = [ [[package]] name = "solana-bench-streamer" -version = "2.1.2" +version = "2.1.3" dependencies = [ "clap 3.2.23", "crossbeam-channel", @@ -5955,7 +5955,7 @@ dependencies = [ [[package]] name = "solana-bench-tps" -version = "2.1.2" +version = "2.1.3" dependencies = [ "chrono", "clap 2.33.3", @@ -6002,7 +6002,7 @@ dependencies = [ [[package]] name = "solana-bincode" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "serde", @@ -6012,7 +6012,7 @@ dependencies = [ [[package]] name = "solana-bloom" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bv", "fnv", @@ -6029,7 +6029,7 @@ dependencies = [ [[package]] name = "solana-bn254" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ark-bn254", "ark-ec", @@ -6046,7 +6046,7 @@ dependencies = [ [[package]] name = "solana-borsh" -version = "2.1.2" +version = "2.1.3" dependencies = [ "borsh 0.10.3", "borsh 1.5.1", @@ -6054,7 +6054,7 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -6084,7 +6084,7 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program-tests" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -6095,7 +6095,7 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bv", "bytemuck", @@ -6115,7 +6115,7 @@ dependencies = [ [[package]] name = "solana-builtins-default-costs" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ahash 0.8.11", "lazy_static", @@ -6135,7 +6135,7 @@ dependencies = [ [[package]] name = "solana-cargo-build-sbf" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_cmd", "bzip2", @@ -6156,7 +6156,7 @@ dependencies = [ [[package]] name = "solana-cargo-test-sbf" -version = "2.1.2" +version = "2.1.3" dependencies = [ "cargo_metadata", "clap 3.2.23", @@ -6168,7 +6168,7 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "chrono", @@ -6186,7 +6186,7 @@ dependencies = [ [[package]] name = "solana-clap-v3-utils" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "chrono", @@ -6205,7 +6205,7 @@ dependencies = [ [[package]] name = "solana-cli" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -6267,7 +6267,7 @@ dependencies = [ [[package]] name = "solana-cli-config" -version = "2.1.2" +version = "2.1.3" dependencies = [ "anyhow", "dirs-next", @@ -6282,7 +6282,7 @@ dependencies = [ [[package]] name = "solana-cli-output" -version = "2.1.2" +version = "2.1.3" dependencies = [ "Inflector", "base64 0.22.1", @@ -6308,7 +6308,7 @@ dependencies = [ [[package]] name = "solana-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "async-trait", "bincode", @@ -6339,7 +6339,7 @@ dependencies = [ [[package]] name = "solana-client-test" -version = "2.1.2" +version = "2.1.3" dependencies = [ "futures-util", "rand 0.8.5", @@ -6368,7 +6368,7 @@ dependencies = [ [[package]] name = "solana-clock" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -6380,7 +6380,7 @@ dependencies = [ [[package]] name = "solana-compute-budget" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-frozen-abi", "solana-sdk", @@ -6388,7 +6388,7 @@ dependencies = [ [[package]] name = "solana-compute-budget-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -6396,7 +6396,7 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "chrono", @@ -6411,7 +6411,7 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "2.1.2" +version = "2.1.3" dependencies = [ "async-trait", "bincode", @@ -6434,7 +6434,7 @@ dependencies = [ [[package]] name = "solana-core" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ahash 0.8.11", "anyhow", @@ -6531,7 +6531,7 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ahash 0.8.11", "itertools 0.12.1", @@ -6557,7 +6557,7 @@ dependencies = [ [[package]] name = "solana-cpi" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-account-info", "solana-define-syscall", @@ -6572,7 +6572,7 @@ dependencies = [ [[package]] name = "solana-curve25519" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bytemuck", "bytemuck_derive", @@ -6583,7 +6583,7 @@ dependencies = [ [[package]] name = "solana-decode-error" -version = "2.1.2" +version = "2.1.3" dependencies = [ "num-derive", "num-traits", @@ -6591,11 +6591,11 @@ dependencies = [ [[package]] name = "solana-define-syscall" -version = "2.1.2" +version = "2.1.3" [[package]] name = "solana-derivation-path" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "derivation-path", @@ -6605,7 +6605,7 @@ dependencies = [ [[package]] name = "solana-dos" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "clap 3.2.23", @@ -6638,7 +6638,7 @@ dependencies = [ [[package]] name = "solana-download-utils" -version = "2.1.2" +version = "2.1.3" dependencies = [ "console", "indicatif", @@ -6650,7 +6650,7 @@ dependencies = [ [[package]] name = "solana-ed25519-program-tests" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "ed25519-dalek", @@ -6661,7 +6661,7 @@ dependencies = [ [[package]] name = "solana-entry" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -6683,7 +6683,7 @@ dependencies = [ [[package]] name = "solana-epoch-schedule" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -6698,7 +6698,7 @@ dependencies = [ [[package]] name = "solana-faucet" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "byteorder", @@ -6720,7 +6720,7 @@ dependencies = [ [[package]] name = "solana-feature-set" -version = "2.1.2" +version = "2.1.3" dependencies = [ "lazy_static", "solana-clock", @@ -6734,7 +6734,7 @@ dependencies = [ [[package]] name = "solana-fee" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-sdk", "solana-svm-transaction", @@ -6742,7 +6742,7 @@ dependencies = [ [[package]] name = "solana-fee-calculator" -version = "2.1.2" +version = "2.1.3" dependencies = [ "log", "serde", @@ -6756,7 +6756,7 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bitflags 2.6.0", "bs58", @@ -6777,7 +6777,7 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "2.1.2" +version = "2.1.3" dependencies = [ "proc-macro2", "quote", @@ -6786,7 +6786,7 @@ dependencies = [ [[package]] name = "solana-genesis" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "bincode", @@ -6813,7 +6813,7 @@ dependencies = [ [[package]] name = "solana-genesis-utils" -version = "2.1.2" +version = "2.1.3" dependencies = [ "log", "solana-accounts-db", @@ -6824,7 +6824,7 @@ dependencies = [ [[package]] name = "solana-geyser-plugin-manager" -version = "2.1.2" +version = "2.1.3" dependencies = [ "agave-geyser-plugin-interface", "bs58", @@ -6849,7 +6849,7 @@ dependencies = [ [[package]] name = "solana-gossip" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -6903,7 +6903,7 @@ dependencies = [ [[package]] name = "solana-hash" -version = "2.1.2" +version = "2.1.3" dependencies = [ "borsh 1.5.1", "bs58", @@ -6922,7 +6922,7 @@ dependencies = [ [[package]] name = "solana-inflation" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -6932,7 +6932,7 @@ dependencies = [ [[package]] name = "solana-inline-spl" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bytemuck", "solana-pubkey", @@ -6940,7 +6940,7 @@ dependencies = [ [[package]] name = "solana-instruction" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "borsh 1.5.1", @@ -6959,7 +6959,7 @@ dependencies = [ [[package]] name = "solana-keygen" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bs58", "clap 3.2.23", @@ -6978,7 +6978,7 @@ dependencies = [ [[package]] name = "solana-last-restart-slot" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -6988,7 +6988,7 @@ dependencies = [ [[package]] name = "solana-lattice-hash" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "blake3", @@ -7001,7 +7001,7 @@ dependencies = [ [[package]] name = "solana-ledger" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -7078,7 +7078,7 @@ dependencies = [ [[package]] name = "solana-loader-v4-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "log", @@ -7094,7 +7094,7 @@ dependencies = [ [[package]] name = "solana-local-cluster" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "crossbeam-channel", @@ -7136,7 +7136,7 @@ dependencies = [ [[package]] name = "solana-log-analyzer" -version = "2.1.2" +version = "2.1.3" dependencies = [ "byte-unit", "clap 3.2.23", @@ -7149,14 +7149,14 @@ dependencies = [ [[package]] name = "solana-log-collector" -version = "2.1.2" +version = "2.1.3" dependencies = [ "log", ] [[package]] name = "solana-logger" -version = "2.1.2" +version = "2.1.3" dependencies = [ "env_logger", "lazy_static", @@ -7165,15 +7165,15 @@ dependencies = [ [[package]] name = "solana-measure" -version = "2.1.2" +version = "2.1.3" [[package]] name = "solana-memory-management" -version = "2.1.2" +version = "2.1.3" [[package]] name = "solana-merkle-root-bench" -version = "2.1.2" +version = "2.1.3" dependencies = [ "clap 2.33.3", "log", @@ -7186,7 +7186,7 @@ dependencies = [ [[package]] name = "solana-merkle-tree" -version = "2.1.2" +version = "2.1.3" dependencies = [ "fast-math", "hex", @@ -7196,7 +7196,7 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "2.1.2" +version = "2.1.3" dependencies = [ "crossbeam-channel", "env_logger", @@ -7212,18 +7212,18 @@ dependencies = [ [[package]] name = "solana-msg" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-define-syscall", ] [[package]] name = "solana-native-token" -version = "2.1.2" +version = "2.1.3" [[package]] name = "solana-net-shaper" -version = "2.1.2" +version = "2.1.3" dependencies = [ "clap 3.2.23", "rand 0.8.5", @@ -7235,7 +7235,7 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "clap 3.2.23", @@ -7261,7 +7261,7 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-notifier" -version = "2.1.2" +version = "2.1.3" dependencies = [ "log", "reqwest", @@ -7271,7 +7271,7 @@ dependencies = [ [[package]] name = "solana-package-metadata" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-package-metadata-macro", "solana-pubkey", @@ -7279,7 +7279,7 @@ dependencies = [ [[package]] name = "solana-package-metadata-macro" -version = "2.1.2" +version = "2.1.3" dependencies = [ "proc-macro2", "quote", @@ -7289,7 +7289,7 @@ dependencies = [ [[package]] name = "solana-packet" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "bitflags 2.6.0", @@ -7305,7 +7305,7 @@ dependencies = [ [[package]] name = "solana-perf" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ahash 0.8.11", "assert_matches", @@ -7336,7 +7336,7 @@ dependencies = [ [[package]] name = "solana-poh" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -7358,7 +7358,7 @@ dependencies = [ [[package]] name = "solana-poh-bench" -version = "2.1.2" +version = "2.1.3" dependencies = [ "clap 3.2.23", "log", @@ -7374,7 +7374,7 @@ dependencies = [ [[package]] name = "solana-poseidon" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ark-bn254", "light-poseidon", @@ -7384,7 +7384,7 @@ dependencies = [ [[package]] name = "solana-precompile-error" -version = "2.1.2" +version = "2.1.3" dependencies = [ "num-traits", "solana-decode-error", @@ -7392,7 +7392,7 @@ dependencies = [ [[package]] name = "solana-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "anyhow", "arbitrary", @@ -7477,7 +7477,7 @@ dependencies = [ [[package]] name = "solana-program-entrypoint" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-account-info", "solana-msg", @@ -7487,7 +7487,7 @@ dependencies = [ [[package]] name = "solana-program-error" -version = "2.1.2" +version = "2.1.3" dependencies = [ "borsh 1.5.1", "num-traits", @@ -7501,7 +7501,7 @@ dependencies = [ [[package]] name = "solana-program-memory" -version = "2.1.2" +version = "2.1.3" dependencies = [ "num-traits", "solana-define-syscall", @@ -7509,18 +7509,18 @@ dependencies = [ [[package]] name = "solana-program-option" -version = "2.1.2" +version = "2.1.3" [[package]] name = "solana-program-pack" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program-error", ] [[package]] name = "solana-program-runtime" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "base64 0.22.1", @@ -7553,7 +7553,7 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "async-trait", @@ -7589,7 +7589,7 @@ dependencies = [ [[package]] name = "solana-pubkey" -version = "2.1.2" +version = "2.1.3" dependencies = [ "anyhow", "arbitrary", @@ -7622,7 +7622,7 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "anyhow", "crossbeam-channel", @@ -7646,7 +7646,7 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "async-lock", "async-trait", @@ -7673,7 +7673,7 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "2.1.2" +version = "2.1.3" dependencies = [ "lazy_static", "num_cpus", @@ -7681,7 +7681,7 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "console", @@ -7701,7 +7701,7 @@ dependencies = [ [[package]] name = "solana-rent" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -7715,7 +7715,7 @@ dependencies = [ [[package]] name = "solana-rpc" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "bincode", @@ -7777,7 +7777,7 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "async-trait", @@ -7808,7 +7808,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "2.1.2" +version = "2.1.3" dependencies = [ "anyhow", "base64 0.22.1", @@ -7831,7 +7831,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "2.1.2" +version = "2.1.3" dependencies = [ "anyhow", "clap 2.33.3", @@ -7848,7 +7848,7 @@ dependencies = [ [[package]] name = "solana-rpc-test" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "bs58", @@ -7876,7 +7876,7 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "2.1.2" +version = "2.1.3" dependencies = [ "agave-transaction-view", "ahash 0.8.11", @@ -7975,7 +7975,7 @@ dependencies = [ [[package]] name = "solana-runtime-transaction" -version = "2.1.2" +version = "2.1.3" dependencies = [ "agave-transaction-view", "bincode", @@ -7993,11 +7993,11 @@ dependencies = [ [[package]] name = "solana-sanitize" -version = "2.1.2" +version = "2.1.3" [[package]] name = "solana-sdk" -version = "2.1.2" +version = "2.1.3" dependencies = [ "anyhow", "assert_matches", @@ -8071,7 +8071,7 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bs58", "proc-macro2", @@ -8081,7 +8081,7 @@ dependencies = [ [[package]] name = "solana-secp256k1-recover" -version = "2.1.2" +version = "2.1.3" dependencies = [ "anyhow", "borsh 1.5.1", @@ -8095,7 +8095,7 @@ dependencies = [ [[package]] name = "solana-secp256r1-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bytemuck", "openssl", @@ -8115,7 +8115,7 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "2.1.2" +version = "2.1.3" dependencies = [ "crossbeam-channel", "log", @@ -8131,7 +8131,7 @@ dependencies = [ [[package]] name = "solana-serde-varint" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "rand 0.8.5", @@ -8142,7 +8142,7 @@ dependencies = [ [[package]] name = "solana-serialize-utils" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "borsh 1.5.1", @@ -8155,7 +8155,7 @@ dependencies = [ [[package]] name = "solana-sha256-hasher" -version = "2.1.2" +version = "2.1.3" dependencies = [ "sha2 0.10.8", "solana-define-syscall", @@ -8164,7 +8164,7 @@ dependencies = [ [[package]] name = "solana-short-vec" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -8176,7 +8176,7 @@ dependencies = [ [[package]] name = "solana-signature" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bs58", "curve25519-dalek 4.1.3", @@ -8193,7 +8193,7 @@ dependencies = [ [[package]] name = "solana-slot-hashes" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -8204,7 +8204,7 @@ dependencies = [ [[package]] name = "solana-slot-history" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bv", "serde", @@ -8214,7 +8214,7 @@ dependencies = [ [[package]] name = "solana-stable-layout" -version = "2.1.2" +version = "2.1.3" dependencies = [ "memoffset 0.9.1", "solana-instruction", @@ -8223,7 +8223,7 @@ dependencies = [ [[package]] name = "solana-stake-accounts" -version = "2.1.2" +version = "2.1.3" dependencies = [ "clap 2.33.3", "solana-clap-utils", @@ -8239,7 +8239,7 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -8259,7 +8259,7 @@ dependencies = [ [[package]] name = "solana-stake-program-tests" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -8272,7 +8272,7 @@ dependencies = [ [[package]] name = "solana-storage-bigtable" -version = "2.1.2" +version = "2.1.3" dependencies = [ "backoff", "bincode", @@ -8304,7 +8304,7 @@ dependencies = [ [[package]] name = "solana-storage-proto" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "bs58", @@ -8320,7 +8320,7 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "async-channel", @@ -8358,7 +8358,7 @@ dependencies = [ [[package]] name = "solana-svm" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "base64 0.22.1", @@ -8427,7 +8427,7 @@ dependencies = [ [[package]] name = "solana-svm-conformance" -version = "2.1.2" +version = "2.1.3" dependencies = [ "prost", "prost-build", @@ -8436,7 +8436,7 @@ dependencies = [ [[package]] name = "solana-svm-example-paytube" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-bpf-loader-program", "solana-client", @@ -8454,21 +8454,21 @@ dependencies = [ [[package]] name = "solana-svm-rent-collector" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-sdk", ] [[package]] name = "solana-svm-transaction" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-sdk", ] [[package]] name = "solana-system-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -8486,14 +8486,14 @@ dependencies = [ [[package]] name = "solana-sysvar-id" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-pubkey", ] [[package]] name = "solana-test-validator" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "bincode", @@ -8524,7 +8524,7 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "log", @@ -8538,7 +8538,7 @@ dependencies = [ [[package]] name = "solana-timings" -version = "2.1.2" +version = "2.1.3" dependencies = [ "eager", "enum-iterator", @@ -8547,7 +8547,7 @@ dependencies = [ [[package]] name = "solana-tokens" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -8581,7 +8581,7 @@ dependencies = [ [[package]] name = "solana-tps-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "log", "serial_test", @@ -8602,7 +8602,7 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "async-trait", "bincode", @@ -8623,7 +8623,7 @@ dependencies = [ [[package]] name = "solana-tpu-client-next" -version = "2.1.2" +version = "2.1.3" dependencies = [ "async-trait", "crossbeam-channel", @@ -8647,7 +8647,7 @@ dependencies = [ [[package]] name = "solana-transaction-dos" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "clap 2.33.3", @@ -8674,7 +8674,7 @@ dependencies = [ [[package]] name = "solana-transaction-error" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -8686,7 +8686,7 @@ dependencies = [ [[package]] name = "solana-transaction-metrics-tracker" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "bincode", @@ -8700,7 +8700,7 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "2.1.2" +version = "2.1.3" dependencies = [ "Inflector", "base64 0.22.1", @@ -8726,7 +8726,7 @@ dependencies = [ [[package]] name = "solana-transaction-status-client-types" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "bincode", @@ -8742,7 +8742,7 @@ dependencies = [ [[package]] name = "solana-turbine" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -8783,7 +8783,7 @@ dependencies = [ [[package]] name = "solana-type-overrides" -version = "2.1.2" +version = "2.1.3" dependencies = [ "futures 0.3.31", "lazy_static", @@ -8793,7 +8793,7 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "async-trait", "solana-connection-cache", @@ -8806,7 +8806,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-logic" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "solana-sdk", @@ -8815,7 +8815,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-pool" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "crossbeam-channel", @@ -8837,7 +8837,7 @@ dependencies = [ [[package]] name = "solana-upload-perf" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde_json", "solana-metrics", @@ -8845,7 +8845,7 @@ dependencies = [ [[package]] name = "solana-version" -version = "2.1.2" +version = "2.1.3" dependencies = [ "semver 1.0.23", "serde", @@ -8859,7 +8859,7 @@ dependencies = [ [[package]] name = "solana-vote" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "itertools 0.12.1", @@ -8875,7 +8875,7 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -8898,7 +8898,7 @@ dependencies = [ [[package]] name = "solana-wen-restart" -version = "2.1.2" +version = "2.1.3" dependencies = [ "anyhow", "assert_matches", @@ -8927,7 +8927,7 @@ dependencies = [ [[package]] name = "solana-zk-elgamal-proof-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bytemuck", "num-derive", @@ -8940,7 +8940,7 @@ dependencies = [ [[package]] name = "solana-zk-keygen" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bs58", "clap 3.2.23", @@ -8957,7 +8957,7 @@ dependencies = [ [[package]] name = "solana-zk-sdk" -version = "2.1.2" +version = "2.1.3" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -8988,7 +8988,7 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bytemuck", "criterion", @@ -9004,7 +9004,7 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program-tests" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bytemuck", "curve25519-dalek 4.1.3", @@ -9016,7 +9016,7 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "2.1.2" +version = "2.1.3" dependencies = [ "aes-gcm-siv", "base64 0.22.1", diff --git a/Cargo.toml b/Cargo.toml index e89c5e54ee1368..6bcd06d237fa56 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -190,7 +190,7 @@ exclude = ["programs/sbf", "svm/tests/example-programs"] resolver = "2" [workspace.package] -version = "2.1.2" +version = "2.1.3" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" homepage = "https://anza.xyz/" @@ -206,7 +206,7 @@ check-cfg = [ [workspace.dependencies] Inflector = "0.11.4" -agave-transaction-view = { path = "transaction-view", version = "=2.1.2" } +agave-transaction-view = { path = "transaction-view", version = "=2.1.3" } aquamarine = "0.3.3" aes-gcm-siv = "0.11.1" ahash = "0.8.11" @@ -383,151 +383,151 @@ smallvec = "1.13.2" smpl_jwt = "0.7.1" socket2 = "0.5.7" soketto = "0.7" -solana-account = { path = "sdk/account", version = "=2.1.2" } -solana-account-decoder = { path = "account-decoder", version = "=2.1.2" } -solana-account-decoder-client-types = { path = "account-decoder-client-types", version = "=2.1.2" } -solana-account-info = { path = "sdk/account-info", version = "=2.1.2" } -solana-accounts-db = { path = "accounts-db", version = "=2.1.2" } -solana-address-lookup-table-program = { path = "programs/address-lookup-table", version = "=2.1.2" } -solana-atomic-u64 = { path = "sdk/atomic-u64", version = "=2.1.2" } -solana-banks-client = { path = "banks-client", version = "=2.1.2" } -solana-banks-interface = { path = "banks-interface", version = "=2.1.2" } -solana-banks-server = { path = "banks-server", version = "=2.1.2" } -solana-bench-tps = { path = "bench-tps", version = "=2.1.2" } -solana-bincode = { path = "sdk/bincode", version = "=2.1.2" } -solana-bloom = { path = "bloom", version = "=2.1.2" } -solana-bn254 = { path = "curves/bn254", version = "=2.1.2" } -solana-borsh = { path = "sdk/borsh", version = "=2.1.2" } -solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=2.1.2" } -solana-bucket-map = { path = "bucket_map", version = "=2.1.2" } -solana-builtins-default-costs = { path = "builtins-default-costs", version = "=2.1.2" } -agave-cargo-registry = { path = "cargo-registry", version = "=2.1.2" } -solana-clap-utils = { path = "clap-utils", version = "=2.1.2" } -solana-clap-v3-utils = { path = "clap-v3-utils", version = "=2.1.2" } -solana-cli = { path = "cli", version = "=2.1.2" } -solana-cli-config = { path = "cli-config", version = "=2.1.2" } -solana-cli-output = { path = "cli-output", version = "=2.1.2" } -solana-client = { path = "client", version = "=2.1.2" } -solana-clock = { path = "sdk/clock", version = "=2.1.2" } -solana-compute-budget = { path = "compute-budget", version = "=2.1.2" } -solana-compute-budget-program = { path = "programs/compute-budget", version = "=2.1.2" } -solana-config-program = { path = "programs/config", version = "=2.1.2" } -solana-connection-cache = { path = "connection-cache", version = "=2.1.2", default-features = false } -solana-core = { path = "core", version = "=2.1.2" } -solana-cost-model = { path = "cost-model", version = "=2.1.2" } -solana-cpi = { path = "sdk/cpi", version = "=2.1.2" } -solana-curve25519 = { path = "curves/curve25519", version = "=2.1.2" } -solana-decode-error = { path = "sdk/decode-error", version = "=2.1.2" } -solana-define-syscall = { path = "define-syscall", version = "=2.1.2" } -solana-derivation-path = { path = "sdk/derivation-path", version = "=2.1.2" } -solana-download-utils = { path = "download-utils", version = "=2.1.2" } -solana-entry = { path = "entry", version = "=2.1.2" } -solana-program-entrypoint = { path = "sdk/program-entrypoint", version = "=2.1.2" } -solana-epoch-schedule = { path = "sdk/epoch-schedule", version = "=2.1.2" } -solana-faucet = { path = "faucet", version = "=2.1.2" } -solana-feature-set = { path = "sdk/feature-set", version = "=2.1.2" } -solana-fee-calculator = { path = "sdk/fee-calculator", version = "=2.1.2" } -solana-fee = { path = "fee", version = "=2.1.2" } -solana-frozen-abi = { path = "frozen-abi", version = "=2.1.2" } -solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=2.1.2" } -solana-tps-client = { path = "tps-client", version = "=2.1.2" } -solana-genesis = { path = "genesis", version = "=2.1.2" } -solana-genesis-utils = { path = "genesis-utils", version = "=2.1.2" } -agave-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=2.1.2" } -solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=2.1.2" } -solana-gossip = { path = "gossip", version = "=2.1.2" } -solana-hash = { path = "sdk/hash", version = "=2.1.2", default-features = false } -solana-inflation = { path = "sdk/inflation", version = "=2.1.2" } -solana-inline-spl = { path = "inline-spl", version = "=2.1.2" } -solana-instruction = { path = "sdk/instruction", version = "=2.1.2", default-features = false } -solana-last-restart-slot = { path = "sdk/last-restart-slot", version = "=2.1.2" } -solana-lattice-hash = { path = "lattice-hash", version = "=2.1.2" } -solana-ledger = { path = "ledger", version = "=2.1.2" } -solana-loader-v4-program = { path = "programs/loader-v4", version = "=2.1.2" } -solana-local-cluster = { path = "local-cluster", version = "=2.1.2" } -solana-log-collector = { path = "log-collector", version = "=2.1.2" } -solana-logger = { path = "logger", version = "=2.1.2" } -solana-measure = { path = "measure", version = "=2.1.2" } -solana-merkle-tree = { path = "merkle-tree", version = "=2.1.2" } -solana-metrics = { path = "metrics", version = "=2.1.2" } -solana-msg = { path = "sdk/msg", version = "=2.1.2" } -solana-native-token = { path = "sdk/native-token", version = "=2.1.2" } -solana-net-utils = { path = "net-utils", version = "=2.1.2" } +solana-account = { path = "sdk/account", version = "=2.1.3" } +solana-account-decoder = { path = "account-decoder", version = "=2.1.3" } +solana-account-decoder-client-types = { path = "account-decoder-client-types", version = "=2.1.3" } +solana-account-info = { path = "sdk/account-info", version = "=2.1.3" } +solana-accounts-db = { path = "accounts-db", version = "=2.1.3" } +solana-address-lookup-table-program = { path = "programs/address-lookup-table", version = "=2.1.3" } +solana-atomic-u64 = { path = "sdk/atomic-u64", version = "=2.1.3" } +solana-banks-client = { path = "banks-client", version = "=2.1.3" } +solana-banks-interface = { path = "banks-interface", version = "=2.1.3" } +solana-banks-server = { path = "banks-server", version = "=2.1.3" } +solana-bench-tps = { path = "bench-tps", version = "=2.1.3" } +solana-bincode = { path = "sdk/bincode", version = "=2.1.3" } +solana-bloom = { path = "bloom", version = "=2.1.3" } +solana-bn254 = { path = "curves/bn254", version = "=2.1.3" } +solana-borsh = { path = "sdk/borsh", version = "=2.1.3" } +solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=2.1.3" } +solana-bucket-map = { path = "bucket_map", version = "=2.1.3" } +solana-builtins-default-costs = { path = "builtins-default-costs", version = "=2.1.3" } +agave-cargo-registry = { path = "cargo-registry", version = "=2.1.3" } +solana-clap-utils = { path = "clap-utils", version = "=2.1.3" } +solana-clap-v3-utils = { path = "clap-v3-utils", version = "=2.1.3" } +solana-cli = { path = "cli", version = "=2.1.3" } +solana-cli-config = { path = "cli-config", version = "=2.1.3" } +solana-cli-output = { path = "cli-output", version = "=2.1.3" } +solana-client = { path = "client", version = "=2.1.3" } +solana-clock = { path = "sdk/clock", version = "=2.1.3" } +solana-compute-budget = { path = "compute-budget", version = "=2.1.3" } +solana-compute-budget-program = { path = "programs/compute-budget", version = "=2.1.3" } +solana-config-program = { path = "programs/config", version = "=2.1.3" } +solana-connection-cache = { path = "connection-cache", version = "=2.1.3", default-features = false } +solana-core = { path = "core", version = "=2.1.3" } +solana-cost-model = { path = "cost-model", version = "=2.1.3" } +solana-cpi = { path = "sdk/cpi", version = "=2.1.3" } +solana-curve25519 = { path = "curves/curve25519", version = "=2.1.3" } +solana-decode-error = { path = "sdk/decode-error", version = "=2.1.3" } +solana-define-syscall = { path = "define-syscall", version = "=2.1.3" } +solana-derivation-path = { path = "sdk/derivation-path", version = "=2.1.3" } +solana-download-utils = { path = "download-utils", version = "=2.1.3" } +solana-entry = { path = "entry", version = "=2.1.3" } +solana-program-entrypoint = { path = "sdk/program-entrypoint", version = "=2.1.3" } +solana-epoch-schedule = { path = "sdk/epoch-schedule", version = "=2.1.3" } +solana-faucet = { path = "faucet", version = "=2.1.3" } +solana-feature-set = { path = "sdk/feature-set", version = "=2.1.3" } +solana-fee-calculator = { path = "sdk/fee-calculator", version = "=2.1.3" } +solana-fee = { path = "fee", version = "=2.1.3" } +solana-frozen-abi = { path = "frozen-abi", version = "=2.1.3" } +solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=2.1.3" } +solana-tps-client = { path = "tps-client", version = "=2.1.3" } +solana-genesis = { path = "genesis", version = "=2.1.3" } +solana-genesis-utils = { path = "genesis-utils", version = "=2.1.3" } +agave-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=2.1.3" } +solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=2.1.3" } +solana-gossip = { path = "gossip", version = "=2.1.3" } +solana-hash = { path = "sdk/hash", version = "=2.1.3", default-features = false } +solana-inflation = { path = "sdk/inflation", version = "=2.1.3" } +solana-inline-spl = { path = "inline-spl", version = "=2.1.3" } +solana-instruction = { path = "sdk/instruction", version = "=2.1.3", default-features = false } +solana-last-restart-slot = { path = "sdk/last-restart-slot", version = "=2.1.3" } +solana-lattice-hash = { path = "lattice-hash", version = "=2.1.3" } +solana-ledger = { path = "ledger", version = "=2.1.3" } +solana-loader-v4-program = { path = "programs/loader-v4", version = "=2.1.3" } +solana-local-cluster = { path = "local-cluster", version = "=2.1.3" } +solana-log-collector = { path = "log-collector", version = "=2.1.3" } +solana-logger = { path = "logger", version = "=2.1.3" } +solana-measure = { path = "measure", version = "=2.1.3" } +solana-merkle-tree = { path = "merkle-tree", version = "=2.1.3" } +solana-metrics = { path = "metrics", version = "=2.1.3" } +solana-msg = { path = "sdk/msg", version = "=2.1.3" } +solana-native-token = { path = "sdk/native-token", version = "=2.1.3" } +solana-net-utils = { path = "net-utils", version = "=2.1.3" } solana-nohash-hasher = "0.2.1" -solana-notifier = { path = "notifier", version = "=2.1.2" } -solana-package-metadata = { path = "sdk/package-metadata", version = "=2.1.2" } -solana-package-metadata-macro = { path = "sdk/package-metadata-macro", version = "=2.1.2" } -solana-packet = { path = "sdk/packet", version = "=2.1.2" } -solana-perf = { path = "perf", version = "=2.1.2" } -solana-poh = { path = "poh", version = "=2.1.2" } -solana-poseidon = { path = "poseidon", version = "=2.1.2" } -solana-precompile-error = { path = "sdk/precompile-error", version = "=2.1.2" } -solana-program = { path = "sdk/program", version = "=2.1.2", default-features = false } -solana-program-error = { path = "sdk/program-error", version = "=2.1.2" } -solana-program-memory = { path = "sdk/program-memory", version = "=2.1.2" } -solana-program-option = { path = "sdk/program-option", version = "=2.1.2" } -solana-program-pack = { path = "sdk/program-pack", version = "=2.1.2" } -solana-program-runtime = { path = "program-runtime", version = "=2.1.2" } -solana-program-test = { path = "program-test", version = "=2.1.2" } -solana-pubkey = { path = "sdk/pubkey", version = "=2.1.2", default-features = false } -solana-pubsub-client = { path = "pubsub-client", version = "=2.1.2" } -solana-quic-client = { path = "quic-client", version = "=2.1.2" } -solana-rayon-threadlimit = { path = "rayon-threadlimit", version = "=2.1.2" } -solana-remote-wallet = { path = "remote-wallet", version = "=2.1.2", default-features = false } -solana-rent = { path = "sdk/rent", version = "=2.1.2", default-features = false } -solana-sanitize = { path = "sdk/sanitize", version = "=2.1.2" } -solana-secp256r1-program = { path = "sdk/secp256r1-program", version = "=2.1.2", default-features = false } -solana-serde-varint = { path = "sdk/serde-varint", version = "=2.1.2" } -solana-serialize-utils = { path = "sdk/serialize-utils", version = "=2.1.2" } -solana-sha256-hasher = { path = "sdk/sha256-hasher", version = "=2.1.2" } -solana-signature = { path = "sdk/signature", version = "=2.1.2", default-features = false } -solana-slot-hashes = { path = "sdk/slot-hashes", version = "=2.1.2" } -solana-slot-history = { path = "sdk/slot-history", version = "=2.1.2" } -solana-timings = { path = "timings", version = "=2.1.2" } -solana-unified-scheduler-logic = { path = "unified-scheduler-logic", version = "=2.1.2" } -solana-unified-scheduler-pool = { path = "unified-scheduler-pool", version = "=2.1.2" } -solana-rpc = { path = "rpc", version = "=2.1.2" } -solana-rpc-client = { path = "rpc-client", version = "=2.1.2", default-features = false } -solana-rpc-client-api = { path = "rpc-client-api", version = "=2.1.2" } -solana-rpc-client-nonce-utils = { path = "rpc-client-nonce-utils", version = "=2.1.2" } -solana-runtime = { path = "runtime", version = "=2.1.2" } -solana-runtime-transaction = { path = "runtime-transaction", version = "=2.1.2" } -solana-sdk = { path = "sdk", version = "=2.1.2" } -solana-sdk-macro = { path = "sdk/macro", version = "=2.1.2" } -solana-secp256k1-recover = { path = "curves/secp256k1-recover", version = "=2.1.2", default-features = false } -solana-send-transaction-service = { path = "send-transaction-service", version = "=2.1.2" } -solana-short-vec = { path = "short-vec", version = "=2.1.2" } -solana-stable-layout = { path = "sdk/stable-layout", version = "=2.1.2" } -solana-stake-program = { path = "programs/stake", version = "=2.1.2" } -solana-storage-bigtable = { path = "storage-bigtable", version = "=2.1.2" } -solana-storage-proto = { path = "storage-proto", version = "=2.1.2" } -solana-streamer = { path = "streamer", version = "=2.1.2" } -solana-svm = { path = "svm", version = "=2.1.2" } -solana-svm-conformance = { path = "svm-conformance", version = "=2.1.2" } -solana-svm-example-paytube = { path = "svm/examples/paytube", version = "=2.1.2" } -solana-svm-rent-collector = { path = "svm-rent-collector", version = "=2.1.2" } -solana-svm-transaction = { path = "svm-transaction", version = "=2.1.2" } -solana-system-program = { path = "programs/system", version = "=2.1.2" } -solana-sysvar-id = { path = "sdk/sysvar-id", version = "=2.1.2" } -solana-test-validator = { path = "test-validator", version = "=2.1.2" } -solana-thin-client = { path = "thin-client", version = "=2.1.2" } -solana-transaction-error = { path = "sdk/transaction-error", version = "=2.1.2" } -solana-tpu-client = { path = "tpu-client", version = "=2.1.2", default-features = false } -solana-transaction-status = { path = "transaction-status", version = "=2.1.2" } -solana-transaction-status-client-types = { path = "transaction-status-client-types", version = "=2.1.2" } -solana-transaction-metrics-tracker = { path = "transaction-metrics-tracker", version = "=2.1.2" } -solana-turbine = { path = "turbine", version = "=2.1.2" } -solana-type-overrides = { path = "type-overrides", version = "=2.1.2" } -solana-udp-client = { path = "udp-client", version = "=2.1.2" } -solana-version = { path = "version", version = "=2.1.2" } -solana-vote = { path = "vote", version = "=2.1.2" } -solana-vote-program = { path = "programs/vote", version = "=2.1.2" } -solana-wen-restart = { path = "wen-restart", version = "=2.1.2" } -solana-zk-elgamal-proof-program = { path = "programs/zk-elgamal-proof", version = "=2.1.2" } -solana-zk-keygen = { path = "zk-keygen", version = "=2.1.2" } -solana-zk-sdk = { path = "zk-sdk", version = "=2.1.2" } -solana-zk-token-proof-program = { path = "programs/zk-token-proof", version = "=2.1.2" } -solana-zk-token-sdk = { path = "zk-token-sdk", version = "=2.1.2" } +solana-notifier = { path = "notifier", version = "=2.1.3" } +solana-package-metadata = { path = "sdk/package-metadata", version = "=2.1.3" } +solana-package-metadata-macro = { path = "sdk/package-metadata-macro", version = "=2.1.3" } +solana-packet = { path = "sdk/packet", version = "=2.1.3" } +solana-perf = { path = "perf", version = "=2.1.3" } +solana-poh = { path = "poh", version = "=2.1.3" } +solana-poseidon = { path = "poseidon", version = "=2.1.3" } +solana-precompile-error = { path = "sdk/precompile-error", version = "=2.1.3" } +solana-program = { path = "sdk/program", version = "=2.1.3", default-features = false } +solana-program-error = { path = "sdk/program-error", version = "=2.1.3" } +solana-program-memory = { path = "sdk/program-memory", version = "=2.1.3" } +solana-program-option = { path = "sdk/program-option", version = "=2.1.3" } +solana-program-pack = { path = "sdk/program-pack", version = "=2.1.3" } +solana-program-runtime = { path = "program-runtime", version = "=2.1.3" } +solana-program-test = { path = "program-test", version = "=2.1.3" } +solana-pubkey = { path = "sdk/pubkey", version = "=2.1.3", default-features = false } +solana-pubsub-client = { path = "pubsub-client", version = "=2.1.3" } +solana-quic-client = { path = "quic-client", version = "=2.1.3" } +solana-rayon-threadlimit = { path = "rayon-threadlimit", version = "=2.1.3" } +solana-remote-wallet = { path = "remote-wallet", version = "=2.1.3", default-features = false } +solana-rent = { path = "sdk/rent", version = "=2.1.3", default-features = false } +solana-sanitize = { path = "sdk/sanitize", version = "=2.1.3" } +solana-secp256r1-program = { path = "sdk/secp256r1-program", version = "=2.1.3", default-features = false } +solana-serde-varint = { path = "sdk/serde-varint", version = "=2.1.3" } +solana-serialize-utils = { path = "sdk/serialize-utils", version = "=2.1.3" } +solana-sha256-hasher = { path = "sdk/sha256-hasher", version = "=2.1.3" } +solana-signature = { path = "sdk/signature", version = "=2.1.3", default-features = false } +solana-slot-hashes = { path = "sdk/slot-hashes", version = "=2.1.3" } +solana-slot-history = { path = "sdk/slot-history", version = "=2.1.3" } +solana-timings = { path = "timings", version = "=2.1.3" } +solana-unified-scheduler-logic = { path = "unified-scheduler-logic", version = "=2.1.3" } +solana-unified-scheduler-pool = { path = "unified-scheduler-pool", version = "=2.1.3" } +solana-rpc = { path = "rpc", version = "=2.1.3" } +solana-rpc-client = { path = "rpc-client", version = "=2.1.3", default-features = false } +solana-rpc-client-api = { path = "rpc-client-api", version = "=2.1.3" } +solana-rpc-client-nonce-utils = { path = "rpc-client-nonce-utils", version = "=2.1.3" } +solana-runtime = { path = "runtime", version = "=2.1.3" } +solana-runtime-transaction = { path = "runtime-transaction", version = "=2.1.3" } +solana-sdk = { path = "sdk", version = "=2.1.3" } +solana-sdk-macro = { path = "sdk/macro", version = "=2.1.3" } +solana-secp256k1-recover = { path = "curves/secp256k1-recover", version = "=2.1.3", default-features = false } +solana-send-transaction-service = { path = "send-transaction-service", version = "=2.1.3" } +solana-short-vec = { path = "short-vec", version = "=2.1.3" } +solana-stable-layout = { path = "sdk/stable-layout", version = "=2.1.3" } +solana-stake-program = { path = "programs/stake", version = "=2.1.3" } +solana-storage-bigtable = { path = "storage-bigtable", version = "=2.1.3" } +solana-storage-proto = { path = "storage-proto", version = "=2.1.3" } +solana-streamer = { path = "streamer", version = "=2.1.3" } +solana-svm = { path = "svm", version = "=2.1.3" } +solana-svm-conformance = { path = "svm-conformance", version = "=2.1.3" } +solana-svm-example-paytube = { path = "svm/examples/paytube", version = "=2.1.3" } +solana-svm-rent-collector = { path = "svm-rent-collector", version = "=2.1.3" } +solana-svm-transaction = { path = "svm-transaction", version = "=2.1.3" } +solana-system-program = { path = "programs/system", version = "=2.1.3" } +solana-sysvar-id = { path = "sdk/sysvar-id", version = "=2.1.3" } +solana-test-validator = { path = "test-validator", version = "=2.1.3" } +solana-thin-client = { path = "thin-client", version = "=2.1.3" } +solana-transaction-error = { path = "sdk/transaction-error", version = "=2.1.3" } +solana-tpu-client = { path = "tpu-client", version = "=2.1.3", default-features = false } +solana-transaction-status = { path = "transaction-status", version = "=2.1.3" } +solana-transaction-status-client-types = { path = "transaction-status-client-types", version = "=2.1.3" } +solana-transaction-metrics-tracker = { path = "transaction-metrics-tracker", version = "=2.1.3" } +solana-turbine = { path = "turbine", version = "=2.1.3" } +solana-type-overrides = { path = "type-overrides", version = "=2.1.3" } +solana-udp-client = { path = "udp-client", version = "=2.1.3" } +solana-version = { path = "version", version = "=2.1.3" } +solana-vote = { path = "vote", version = "=2.1.3" } +solana-vote-program = { path = "programs/vote", version = "=2.1.3" } +solana-wen-restart = { path = "wen-restart", version = "=2.1.3" } +solana-zk-elgamal-proof-program = { path = "programs/zk-elgamal-proof", version = "=2.1.3" } +solana-zk-keygen = { path = "zk-keygen", version = "=2.1.3" } +solana-zk-sdk = { path = "zk-sdk", version = "=2.1.3" } +solana-zk-token-proof-program = { path = "programs/zk-token-proof", version = "=2.1.3" } +solana-zk-token-sdk = { path = "zk-token-sdk", version = "=2.1.3" } solana_rbpf = "=0.8.5" spl-associated-token-account = "=4.0.0" spl-instruction-padding = "0.2" diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index f9117866230cc5..37bf7e462775ed 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "agave-geyser-plugin-interface" -version = "2.1.2" +version = "2.1.3" dependencies = [ "log", "solana-sdk", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "agave-transaction-view" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-sdk", "solana-svm-transaction", @@ -83,7 +83,7 @@ dependencies = [ [[package]] name = "agave-validator" -version = "2.1.2" +version = "2.1.3" dependencies = [ "agave-geyser-plugin-interface", "chrono", @@ -4725,7 +4725,7 @@ dependencies = [ [[package]] name = "solana-account" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "qualifier_attr", @@ -4738,7 +4738,7 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "2.1.2" +version = "2.1.3" dependencies = [ "Inflector", "base64 0.22.1", @@ -4762,7 +4762,7 @@ dependencies = [ [[package]] name = "solana-account-decoder-client-types" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "bs58", @@ -4776,7 +4776,7 @@ dependencies = [ [[package]] name = "solana-account-info" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "serde", @@ -4787,7 +4787,7 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ahash 0.8.11", "bincode", @@ -4831,7 +4831,7 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "bytemuck", @@ -4848,14 +4848,14 @@ dependencies = [ [[package]] name = "solana-atomic-u64" -version = "2.1.2" +version = "2.1.3" dependencies = [ "parking_lot 0.12.2", ] [[package]] name = "solana-banks-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "borsh 1.5.1", "futures 0.3.31", @@ -4870,7 +4870,7 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -4880,7 +4880,7 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "crossbeam-channel", @@ -4899,7 +4899,7 @@ dependencies = [ [[package]] name = "solana-bincode" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "serde", @@ -4908,7 +4908,7 @@ dependencies = [ [[package]] name = "solana-bloom" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bv", "fnv", @@ -4922,7 +4922,7 @@ dependencies = [ [[package]] name = "solana-bn254" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ark-bn254", "ark-ec", @@ -4935,7 +4935,7 @@ dependencies = [ [[package]] name = "solana-borsh" -version = "2.1.2" +version = "2.1.3" dependencies = [ "borsh 0.10.3", "borsh 1.5.1", @@ -4943,7 +4943,7 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "byteorder 1.5.0", @@ -4968,7 +4968,7 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bv", "bytemuck", @@ -4985,7 +4985,7 @@ dependencies = [ [[package]] name = "solana-builtins-default-costs" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ahash 0.8.11", "lazy_static", @@ -5003,7 +5003,7 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "2.1.2" +version = "2.1.3" dependencies = [ "chrono", "clap", @@ -5019,7 +5019,7 @@ dependencies = [ [[package]] name = "solana-cli-config" -version = "2.1.2" +version = "2.1.3" dependencies = [ "dirs-next", "lazy_static", @@ -5033,7 +5033,7 @@ dependencies = [ [[package]] name = "solana-cli-output" -version = "2.1.2" +version = "2.1.3" dependencies = [ "Inflector", "base64 0.22.1", @@ -5058,7 +5058,7 @@ dependencies = [ [[package]] name = "solana-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "async-trait", "bincode", @@ -5088,7 +5088,7 @@ dependencies = [ [[package]] name = "solana-clock" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -5098,14 +5098,14 @@ dependencies = [ [[package]] name = "solana-compute-budget" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-sdk", ] [[package]] name = "solana-compute-budget-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -5113,7 +5113,7 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "chrono", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "2.1.2" +version = "2.1.3" dependencies = [ "async-trait", "bincode", @@ -5146,7 +5146,7 @@ dependencies = [ [[package]] name = "solana-core" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ahash 0.8.11", "anyhow", @@ -5230,7 +5230,7 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ahash 0.8.11", "lazy_static", @@ -5247,7 +5247,7 @@ dependencies = [ [[package]] name = "solana-cpi" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-account-info", "solana-define-syscall", @@ -5259,7 +5259,7 @@ dependencies = [ [[package]] name = "solana-curve25519" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bytemuck", "bytemuck_derive", @@ -5270,18 +5270,18 @@ dependencies = [ [[package]] name = "solana-decode-error" -version = "2.1.2" +version = "2.1.3" dependencies = [ "num-traits", ] [[package]] name = "solana-define-syscall" -version = "2.1.2" +version = "2.1.3" [[package]] name = "solana-derivation-path" -version = "2.1.2" +version = "2.1.3" dependencies = [ "derivation-path", "qstring", @@ -5290,7 +5290,7 @@ dependencies = [ [[package]] name = "solana-download-utils" -version = "2.1.2" +version = "2.1.3" dependencies = [ "console", "indicatif", @@ -5302,7 +5302,7 @@ dependencies = [ [[package]] name = "solana-entry" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "crossbeam-channel", @@ -5322,7 +5322,7 @@ dependencies = [ [[package]] name = "solana-epoch-schedule" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -5332,7 +5332,7 @@ dependencies = [ [[package]] name = "solana-faucet" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "byteorder 1.5.0", @@ -5354,7 +5354,7 @@ dependencies = [ [[package]] name = "solana-feature-set" -version = "2.1.2" +version = "2.1.3" dependencies = [ "lazy_static", "solana-clock", @@ -5366,7 +5366,7 @@ dependencies = [ [[package]] name = "solana-fee" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-sdk", "solana-svm-transaction", @@ -5374,7 +5374,7 @@ dependencies = [ [[package]] name = "solana-fee-calculator" -version = "2.1.2" +version = "2.1.3" dependencies = [ "log", "serde", @@ -5383,7 +5383,7 @@ dependencies = [ [[package]] name = "solana-genesis-utils" -version = "2.1.2" +version = "2.1.3" dependencies = [ "log", "solana-accounts-db", @@ -5394,7 +5394,7 @@ dependencies = [ [[package]] name = "solana-geyser-plugin-manager" -version = "2.1.2" +version = "2.1.3" dependencies = [ "agave-geyser-plugin-interface", "bs58", @@ -5419,7 +5419,7 @@ dependencies = [ [[package]] name = "solana-gossip" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -5468,7 +5468,7 @@ dependencies = [ [[package]] name = "solana-hash" -version = "2.1.2" +version = "2.1.3" dependencies = [ "borsh 1.5.1", "bs58", @@ -5484,7 +5484,7 @@ dependencies = [ [[package]] name = "solana-inflation" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -5492,7 +5492,7 @@ dependencies = [ [[package]] name = "solana-inline-spl" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bytemuck", "solana-pubkey", @@ -5500,7 +5500,7 @@ dependencies = [ [[package]] name = "solana-instruction" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "borsh 1.5.1", @@ -5516,7 +5516,7 @@ dependencies = [ [[package]] name = "solana-last-restart-slot" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -5526,7 +5526,7 @@ dependencies = [ [[package]] name = "solana-lattice-hash" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "blake3", @@ -5536,7 +5536,7 @@ dependencies = [ [[package]] name = "solana-ledger" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "bincode", @@ -5607,7 +5607,7 @@ dependencies = [ [[package]] name = "solana-loader-v4-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "log", "solana-bpf-loader-program", @@ -5622,14 +5622,14 @@ dependencies = [ [[package]] name = "solana-log-collector" -version = "2.1.2" +version = "2.1.3" dependencies = [ "log", ] [[package]] name = "solana-logger" -version = "2.1.2" +version = "2.1.3" dependencies = [ "env_logger", "lazy_static", @@ -5638,11 +5638,11 @@ dependencies = [ [[package]] name = "solana-measure" -version = "2.1.2" +version = "2.1.3" [[package]] name = "solana-merkle-tree" -version = "2.1.2" +version = "2.1.3" dependencies = [ "fast-math", "solana-hash", @@ -5651,7 +5651,7 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "2.1.2" +version = "2.1.3" dependencies = [ "crossbeam-channel", "gethostname", @@ -5664,18 +5664,18 @@ dependencies = [ [[package]] name = "solana-msg" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-define-syscall", ] [[package]] name = "solana-native-token" -version = "2.1.2" +version = "2.1.3" [[package]] name = "solana-net-utils" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "crossbeam-channel", @@ -5698,7 +5698,7 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-packet" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "bitflags 2.6.0", @@ -5710,7 +5710,7 @@ dependencies = [ [[package]] name = "solana-perf" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ahash 0.8.11", "bincode", @@ -5735,7 +5735,7 @@ dependencies = [ [[package]] name = "solana-poh" -version = "2.1.2" +version = "2.1.3" dependencies = [ "core_affinity", "crossbeam-channel", @@ -5751,7 +5751,7 @@ dependencies = [ [[package]] name = "solana-poseidon" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ark-bn254", "light-poseidon", @@ -5761,7 +5761,7 @@ dependencies = [ [[package]] name = "solana-precompile-error" -version = "2.1.2" +version = "2.1.3" dependencies = [ "num-traits", "solana-decode-error", @@ -5769,7 +5769,7 @@ dependencies = [ [[package]] name = "solana-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "bincode", @@ -5840,7 +5840,7 @@ dependencies = [ [[package]] name = "solana-program-entrypoint" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-account-info", "solana-msg", @@ -5850,7 +5850,7 @@ dependencies = [ [[package]] name = "solana-program-error" -version = "2.1.2" +version = "2.1.3" dependencies = [ "borsh 1.5.1", "num-traits", @@ -5864,7 +5864,7 @@ dependencies = [ [[package]] name = "solana-program-memory" -version = "2.1.2" +version = "2.1.3" dependencies = [ "num-traits", "solana-define-syscall", @@ -5872,18 +5872,18 @@ dependencies = [ [[package]] name = "solana-program-option" -version = "2.1.2" +version = "2.1.3" [[package]] name = "solana-program-pack" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program-error", ] [[package]] name = "solana-program-runtime" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "bincode", @@ -5911,7 +5911,7 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "async-trait", @@ -5945,7 +5945,7 @@ dependencies = [ [[package]] name = "solana-pubkey" -version = "2.1.2" +version = "2.1.3" dependencies = [ "borsh 0.10.3", "borsh 1.5.1", @@ -5970,7 +5970,7 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "crossbeam-channel", "futures-util", @@ -5993,7 +5993,7 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "async-lock", "async-trait", @@ -6017,7 +6017,7 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "2.1.2" +version = "2.1.3" dependencies = [ "lazy_static", "num_cpus", @@ -6025,7 +6025,7 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "2.1.2" +version = "2.1.3" dependencies = [ "console", "dialoguer", @@ -6043,7 +6043,7 @@ dependencies = [ [[package]] name = "solana-rent" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -6053,7 +6053,7 @@ dependencies = [ [[package]] name = "solana-rpc" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "bincode", @@ -6111,7 +6111,7 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "async-trait", "base64 0.22.1", @@ -6136,7 +6136,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "2.1.2" +version = "2.1.3" dependencies = [ "anyhow", "base64 0.22.1", @@ -6158,7 +6158,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-rpc-client", "solana-sdk", @@ -6167,7 +6167,7 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "2.1.2" +version = "2.1.3" dependencies = [ "ahash 0.8.11", "aquamarine", @@ -6254,7 +6254,7 @@ dependencies = [ [[package]] name = "solana-runtime-transaction" -version = "2.1.2" +version = "2.1.3" dependencies = [ "agave-transaction-view", "log", @@ -6268,11 +6268,11 @@ dependencies = [ [[package]] name = "solana-sanitize" -version = "2.1.2" +version = "2.1.3" [[package]] name = "solana-sbf-programs" -version = "2.1.2" +version = "2.1.3" dependencies = [ "agave-validator", "bincode", @@ -6314,7 +6314,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-128bit" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", "solana-sbf-rust-128bit-dep", @@ -6322,21 +6322,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-128bit-dep" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-alloc" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-alt-bn128" -version = "2.1.2" +version = "2.1.3" dependencies = [ "array-bytes", "solana-bn254", @@ -6345,7 +6345,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-alt-bn128-compression" -version = "2.1.2" +version = "2.1.3" dependencies = [ "array-bytes", "solana-bn254", @@ -6354,7 +6354,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-big-mod-exp" -version = "2.1.2" +version = "2.1.3" dependencies = [ "array-bytes", "serde", @@ -6365,7 +6365,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-call-args" -version = "2.1.2" +version = "2.1.3" dependencies = [ "borsh 1.5.1", "solana-program", @@ -6373,21 +6373,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-call-depth" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-caller-access" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-curve25519" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-curve25519", "solana-program", @@ -6396,14 +6396,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-custom-heap" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-dep-crate" -version = "2.1.2" +version = "2.1.3" dependencies = [ "byteorder 1.5.0", "solana-program", @@ -6411,21 +6411,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-deprecated-loader" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-dup-accounts" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-error-handling" -version = "2.1.2" +version = "2.1.3" dependencies = [ "num-derive", "num-traits", @@ -6436,42 +6436,42 @@ dependencies = [ [[package]] name = "solana-sbf-rust-external-spend" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-finalize" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-get-minimum-delegation" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-inner_instruction_alignment_check" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-instruction-introspection" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", "solana-sbf-rust-invoke-dep", @@ -6481,32 +6481,32 @@ dependencies = [ [[package]] name = "solana-sbf-rust-invoke-and-error" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke-and-ok" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke-and-return" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke-dep" -version = "2.1.2" +version = "2.1.3" [[package]] name = "solana-sbf-rust-invoked" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", "solana-sbf-rust-invoked-dep", @@ -6514,28 +6514,28 @@ dependencies = [ [[package]] name = "solana-sbf-rust-invoked-dep" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-iter" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-log-data" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-many-args" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", "solana-sbf-rust-many-args-dep", @@ -6543,14 +6543,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-many-args-dep" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-mem" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", "solana-sbf-rust-mem-dep", @@ -6558,14 +6558,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-mem-dep" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-membuiltins" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", "solana-sbf-rust-mem-dep", @@ -6573,21 +6573,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-noop" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-panic" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-param-passing" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", "solana-sbf-rust-param-passing-dep", @@ -6595,14 +6595,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-param-passing-dep" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-poseidon" -version = "2.1.2" +version = "2.1.3" dependencies = [ "array-bytes", "solana-poseidon", @@ -6611,7 +6611,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-rand" -version = "2.1.2" +version = "2.1.3" dependencies = [ "getrandom 0.2.10", "rand 0.8.5", @@ -6620,7 +6620,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-realloc" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", "solana-sbf-rust-realloc-dep", @@ -6628,14 +6628,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-realloc-dep" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-realloc-invoke" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", "solana-sbf-rust-realloc-dep", @@ -6644,39 +6644,39 @@ dependencies = [ [[package]] name = "solana-sbf-rust-realloc-invoke-dep" -version = "2.1.2" +version = "2.1.3" [[package]] name = "solana-sbf-rust-remaining-compute-units" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-ro-account_modify" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-ro-modify" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-sanity" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-secp256k1-recover" -version = "2.1.2" +version = "2.1.3" dependencies = [ "libsecp256k1 0.7.0", "solana-program", @@ -6685,7 +6685,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-sha" -version = "2.1.2" +version = "2.1.3" dependencies = [ "blake3", "solana-program", @@ -6693,42 +6693,42 @@ dependencies = [ [[package]] name = "solana-sbf-rust-sibling-inner-instructions" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-sibling-instructions" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-simulation" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-spoof1" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-spoof1-system" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-sysvar" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "solana-program", @@ -6736,28 +6736,28 @@ dependencies = [ [[package]] name = "solana-sbf-rust-upgradeable" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-upgraded" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-syscall-get-epoch-stake" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-program", ] [[package]] name = "solana-sdk" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "bitflags 2.6.0", @@ -6820,7 +6820,7 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bs58", "proc-macro2", @@ -6830,7 +6830,7 @@ dependencies = [ [[package]] name = "solana-secp256k1-recover" -version = "2.1.2" +version = "2.1.3" dependencies = [ "borsh 1.5.1", "libsecp256k1 0.6.0", @@ -6840,7 +6840,7 @@ dependencies = [ [[package]] name = "solana-secp256r1-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bytemuck", "openssl", @@ -6858,7 +6858,7 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "2.1.2" +version = "2.1.3" dependencies = [ "crossbeam-channel", "log", @@ -6873,14 +6873,14 @@ dependencies = [ [[package]] name = "solana-serde-varint" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", ] [[package]] name = "solana-serialize-utils" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-instruction", "solana-pubkey", @@ -6889,7 +6889,7 @@ dependencies = [ [[package]] name = "solana-sha256-hasher" -version = "2.1.2" +version = "2.1.3" dependencies = [ "sha2 0.10.8", "solana-define-syscall", @@ -6898,14 +6898,14 @@ dependencies = [ [[package]] name = "solana-short-vec" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", ] [[package]] name = "solana-signature" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bs58", "ed25519-dalek", @@ -6918,7 +6918,7 @@ dependencies = [ [[package]] name = "solana-slot-hashes" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -6928,7 +6928,7 @@ dependencies = [ [[package]] name = "solana-slot-history" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bv", "serde", @@ -6938,7 +6938,7 @@ dependencies = [ [[package]] name = "solana-stable-layout" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-instruction", "solana-pubkey", @@ -6946,7 +6946,7 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "log", @@ -6961,7 +6961,7 @@ dependencies = [ [[package]] name = "solana-storage-bigtable" -version = "2.1.2" +version = "2.1.3" dependencies = [ "backoff", "bincode", @@ -6993,7 +6993,7 @@ dependencies = [ [[package]] name = "solana-storage-proto" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "bs58", @@ -7008,7 +7008,7 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "2.1.2" +version = "2.1.3" dependencies = [ "async-channel", "bytes", @@ -7044,7 +7044,7 @@ dependencies = [ [[package]] name = "solana-svm" -version = "2.1.2" +version = "2.1.3" dependencies = [ "itertools 0.12.1", "log", @@ -7073,21 +7073,21 @@ dependencies = [ [[package]] name = "solana-svm-rent-collector" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-sdk", ] [[package]] name = "solana-svm-transaction" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-sdk", ] [[package]] name = "solana-system-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "log", @@ -7101,14 +7101,14 @@ dependencies = [ [[package]] name = "solana-sysvar-id" -version = "2.1.2" +version = "2.1.3" dependencies = [ "solana-pubkey", ] [[package]] name = "solana-test-validator" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "bincode", @@ -7139,7 +7139,7 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "log", @@ -7152,7 +7152,7 @@ dependencies = [ [[package]] name = "solana-timings" -version = "2.1.2" +version = "2.1.3" dependencies = [ "eager", "enum-iterator", @@ -7161,7 +7161,7 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "async-trait", "bincode", @@ -7182,7 +7182,7 @@ dependencies = [ [[package]] name = "solana-transaction-error" -version = "2.1.2" +version = "2.1.3" dependencies = [ "serde", "serde_derive", @@ -7192,7 +7192,7 @@ dependencies = [ [[package]] name = "solana-transaction-metrics-tracker" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "bincode", @@ -7206,7 +7206,7 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "2.1.2" +version = "2.1.3" dependencies = [ "Inflector", "base64 0.22.1", @@ -7232,7 +7232,7 @@ dependencies = [ [[package]] name = "solana-transaction-status-client-types" -version = "2.1.2" +version = "2.1.3" dependencies = [ "base64 0.22.1", "bincode", @@ -7248,7 +7248,7 @@ dependencies = [ [[package]] name = "solana-turbine" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "bytes", @@ -7286,7 +7286,7 @@ dependencies = [ [[package]] name = "solana-type-overrides" -version = "2.1.2" +version = "2.1.3" dependencies = [ "lazy_static", "rand 0.8.5", @@ -7294,7 +7294,7 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "2.1.2" +version = "2.1.3" dependencies = [ "async-trait", "solana-connection-cache", @@ -7307,7 +7307,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-logic" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "solana-sdk", @@ -7316,7 +7316,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-pool" -version = "2.1.2" +version = "2.1.3" dependencies = [ "assert_matches", "crossbeam-channel", @@ -7336,7 +7336,7 @@ dependencies = [ [[package]] name = "solana-version" -version = "2.1.2" +version = "2.1.3" dependencies = [ "semver", "serde", @@ -7348,7 +7348,7 @@ dependencies = [ [[package]] name = "solana-vote" -version = "2.1.2" +version = "2.1.3" dependencies = [ "itertools 0.12.1", "log", @@ -7360,7 +7360,7 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bincode", "log", @@ -7378,7 +7378,7 @@ dependencies = [ [[package]] name = "solana-wen-restart" -version = "2.1.2" +version = "2.1.3" dependencies = [ "anyhow", "log", @@ -7399,7 +7399,7 @@ dependencies = [ [[package]] name = "solana-zk-elgamal-proof-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bytemuck", "num-derive", @@ -7412,7 +7412,7 @@ dependencies = [ [[package]] name = "solana-zk-sdk" -version = "2.1.2" +version = "2.1.3" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -7442,7 +7442,7 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "2.1.2" +version = "2.1.3" dependencies = [ "bytemuck", "num-derive", @@ -7456,7 +7456,7 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "2.1.2" +version = "2.1.3" dependencies = [ "aes-gcm-siv", "base64 0.22.1", diff --git a/programs/sbf/Cargo.toml b/programs/sbf/Cargo.toml index d06d3d851563cf..0326db6cb36bcf 100644 --- a/programs/sbf/Cargo.toml +++ b/programs/sbf/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "2.1.2" +version = "2.1.3" description = "Solana SBF test program written in Rust" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -30,44 +30,44 @@ rand = "0.8" serde = "1.0.112" # must match the serde_derive version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251 serde_derive = "1.0.112" # must match the serde version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251 serde_json = "1.0.56" -solana-account-decoder = { path = "../../account-decoder", version = "=2.1.2" } -solana-accounts-db = { path = "../../accounts-db", version = "=2.1.2" } -solana-bn254 = { path = "../../curves/bn254", version = "=2.1.2" } -solana-bpf-loader-program = { path = "../bpf_loader", version = "=2.1.2" } -solana-cli-output = { path = "../../cli-output", version = "=2.1.2" } -solana-compute-budget = { path = "../../compute-budget", version = "=2.1.2" } -solana-curve25519 = { path = "../../curves/curve25519", version = "=2.1.2" } -solana-decode-error = { path = "../../sdk/decode-error", version = "=2.1.2" } -solana-feature-set = { path = "../../sdk/feature-set", version = "=2.1.2" } -solana-fee = { path = "../../fee", version = "=2.1.2" } -solana-ledger = { path = "../../ledger", version = "=2.1.2" } -solana-log-collector = { path = "../../log-collector", version = "=2.1.2" } -solana-logger = { path = "../../logger", version = "=2.1.2" } -solana-measure = { path = "../../measure", version = "=2.1.2" } -solana-poseidon = { path = "../../poseidon/", version = "=2.1.2" } -solana-program = { path = "../../sdk/program", version = "=2.1.2" } -solana-program-runtime = { path = "../../program-runtime", version = "=2.1.2" } -solana-runtime = { path = "../../runtime", version = "=2.1.2" } -solana-runtime-transaction = { path = "../../runtime-transaction", version = "=2.1.2" } -solana-sbf-rust-128bit-dep = { path = "rust/128bit_dep", version = "=2.1.2" } -solana-sbf-rust-invoke-dep = { path = "rust/invoke_dep", version = "=2.1.2" } -solana-sbf-rust-invoked-dep = { path = "rust/invoked_dep", version = "=2.1.2" } -solana-sbf-rust-many-args-dep = { path = "rust/many_args_dep", version = "=2.1.2" } -solana-sbf-rust-mem-dep = { path = "rust/mem_dep", version = "=2.1.2" } -solana-sbf-rust-param-passing-dep = { path = "rust/param_passing_dep", version = "=2.1.2" } -solana-sbf-rust-realloc-dep = { path = "rust/realloc_dep", version = "=2.1.2" } -solana-sbf-rust-realloc-invoke-dep = { path = "rust/realloc_invoke_dep", version = "=2.1.2" } -solana-sdk = { path = "../../sdk", version = "=2.1.2" } -solana-secp256k1-recover = { path = "../../curves/secp256k1-recover", version = "=2.1.2" } -solana-svm = { path = "../../svm", version = "=2.1.2" } -solana-svm-transaction = { path = "../../svm-transaction", version = "=2.1.2" } -solana-timings = { path = "../../timings", version = "=2.1.2" } -solana-transaction-status = { path = "../../transaction-status", version = "=2.1.2" } -solana-type-overrides = { path = "../../type-overrides", version = "=2.1.2" } -solana-vote = { path = "../../vote", version = "=2.1.2" } -solana-vote-program = { path = "../../programs/vote", version = "=2.1.2" } -agave-validator = { path = "../../validator", version = "=2.1.2" } -solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=2.1.2" } +solana-account-decoder = { path = "../../account-decoder", version = "=2.1.3" } +solana-accounts-db = { path = "../../accounts-db", version = "=2.1.3" } +solana-bn254 = { path = "../../curves/bn254", version = "=2.1.3" } +solana-bpf-loader-program = { path = "../bpf_loader", version = "=2.1.3" } +solana-cli-output = { path = "../../cli-output", version = "=2.1.3" } +solana-compute-budget = { path = "../../compute-budget", version = "=2.1.3" } +solana-curve25519 = { path = "../../curves/curve25519", version = "=2.1.3" } +solana-decode-error = { path = "../../sdk/decode-error", version = "=2.1.3" } +solana-feature-set = { path = "../../sdk/feature-set", version = "=2.1.3" } +solana-fee = { path = "../../fee", version = "=2.1.3" } +solana-ledger = { path = "../../ledger", version = "=2.1.3" } +solana-log-collector = { path = "../../log-collector", version = "=2.1.3" } +solana-logger = { path = "../../logger", version = "=2.1.3" } +solana-measure = { path = "../../measure", version = "=2.1.3" } +solana-poseidon = { path = "../../poseidon/", version = "=2.1.3" } +solana-program = { path = "../../sdk/program", version = "=2.1.3" } +solana-program-runtime = { path = "../../program-runtime", version = "=2.1.3" } +solana-runtime = { path = "../../runtime", version = "=2.1.3" } +solana-runtime-transaction = { path = "../../runtime-transaction", version = "=2.1.3" } +solana-sbf-rust-128bit-dep = { path = "rust/128bit_dep", version = "=2.1.3" } +solana-sbf-rust-invoke-dep = { path = "rust/invoke_dep", version = "=2.1.3" } +solana-sbf-rust-invoked-dep = { path = "rust/invoked_dep", version = "=2.1.3" } +solana-sbf-rust-many-args-dep = { path = "rust/many_args_dep", version = "=2.1.3" } +solana-sbf-rust-mem-dep = { path = "rust/mem_dep", version = "=2.1.3" } +solana-sbf-rust-param-passing-dep = { path = "rust/param_passing_dep", version = "=2.1.3" } +solana-sbf-rust-realloc-dep = { path = "rust/realloc_dep", version = "=2.1.3" } +solana-sbf-rust-realloc-invoke-dep = { path = "rust/realloc_invoke_dep", version = "=2.1.3" } +solana-sdk = { path = "../../sdk", version = "=2.1.3" } +solana-secp256k1-recover = { path = "../../curves/secp256k1-recover", version = "=2.1.3" } +solana-svm = { path = "../../svm", version = "=2.1.3" } +solana-svm-transaction = { path = "../../svm-transaction", version = "=2.1.3" } +solana-timings = { path = "../../timings", version = "=2.1.3" } +solana-transaction-status = { path = "../../transaction-status", version = "=2.1.3" } +solana-type-overrides = { path = "../../type-overrides", version = "=2.1.3" } +solana-vote = { path = "../../vote", version = "=2.1.3" } +solana-vote-program = { path = "../../programs/vote", version = "=2.1.3" } +agave-validator = { path = "../../validator", version = "=2.1.3" } +solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=2.1.3" } solana_rbpf = "=0.8.5" thiserror = "1.0" diff --git a/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml index 9a7970ed20604b..6d9c93f0350ed0 100644 --- a/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fail" -version = "2.1.2" +version = "2.1.3" description = "Solana SBF test program written in Rust" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -10,7 +10,7 @@ edition = "2021" publish = false [dependencies] -solana-program = { path = "../../../../program", version = "=2.1.2" } +solana-program = { path = "../../../../program", version = "=2.1.3" } [lib] crate-type = ["cdylib"] diff --git a/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml index 07a18d6e7f876d..8fa0bb1413a9f0 100644 --- a/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "noop" -version = "2.1.2" +version = "2.1.3" description = "Solana SBF test program written in Rust" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -10,7 +10,7 @@ edition = "2021" publish = false [dependencies] -solana-program = { path = "../../../../program", version = "=2.1.2" } +solana-program = { path = "../../../../program", version = "=2.1.3" } [lib] crate-type = ["cdylib"] diff --git a/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml index 48964fb7b693ec..d4067e27193786 100644 --- a/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "package-metadata" -version = "2.1.2" +version = "2.1.3" description = "Solana SBF test program with tools version in package metadata" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -14,8 +14,8 @@ tools-version = "v1.43" program-id = "MyProgram1111111111111111111111111111111111" [dependencies] -solana-package-metadata = { path = "../../../../package-metadata", version = "=2.1.2" } -solana-program = { path = "../../../../program", version = "=2.1.2" } +solana-package-metadata = { path = "../../../../package-metadata", version = "=2.1.3" } +solana-program = { path = "../../../../program", version = "=2.1.3" } [lib] crate-type = ["cdylib"] diff --git a/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml index f749767d994002..11c953ac0c414d 100644 --- a/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "workspace-metadata" -version = "2.1.2" +version = "2.1.3" description = "Solana SBF test program with tools version in workspace metadata" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -10,7 +10,7 @@ edition = "2021" publish = false [dependencies] -solana-program = { path = "../../../../program", version = "=2.1.2" } +solana-program = { path = "../../../../program", version = "=2.1.3" } [lib] crate-type = ["cdylib"] diff --git a/svm/examples/json-rpc/program/Cargo.toml b/svm/examples/json-rpc/program/Cargo.toml index 6a1465cdc992d0..39b5e7a055dcbd 100644 --- a/svm/examples/json-rpc/program/Cargo.toml +++ b/svm/examples/json-rpc/program/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "json-rpc-example-program" -version = "2.1.2" +version = "2.1.3" edition = "2021" [features] @@ -10,7 +10,7 @@ frozen-abi = [] [dependencies] borsh = "0.9" -solana-program = { path = "../../../../sdk/program", version = "=2.1.2" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.3" } [lib] name = "program" diff --git a/svm/tests/example-programs/clock-sysvar/Cargo.toml b/svm/tests/example-programs/clock-sysvar/Cargo.toml index 3272ac8e07ade9..113aeca75f55b1 100644 --- a/svm/tests/example-programs/clock-sysvar/Cargo.toml +++ b/svm/tests/example-programs/clock-sysvar/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "clock-sysvar-program" -version = "2.1.2" +version = "2.1.3" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.2" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.3" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/hello-solana/Cargo.toml b/svm/tests/example-programs/hello-solana/Cargo.toml index c2284dfbf40fb6..85dc8ef3fa1e78 100644 --- a/svm/tests/example-programs/hello-solana/Cargo.toml +++ b/svm/tests/example-programs/hello-solana/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "hello-solana-program" -version = "2.1.2" +version = "2.1.3" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.2" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.3" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/simple-transfer/Cargo.toml b/svm/tests/example-programs/simple-transfer/Cargo.toml index 63bdf63867b5d5..717ff9ca85459c 100644 --- a/svm/tests/example-programs/simple-transfer/Cargo.toml +++ b/svm/tests/example-programs/simple-transfer/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "simple-transfer-program" -version = "2.1.2" +version = "2.1.3" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.2" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.3" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/transfer-from-account/Cargo.toml b/svm/tests/example-programs/transfer-from-account/Cargo.toml index 07a3f096c4688b..91a7013c3e44ab 100644 --- a/svm/tests/example-programs/transfer-from-account/Cargo.toml +++ b/svm/tests/example-programs/transfer-from-account/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "transfer-from-account" -version = "2.1.2" +version = "2.1.3" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.2" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.3" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/write-to-account/Cargo.toml b/svm/tests/example-programs/write-to-account/Cargo.toml index 0ec135c16d18cc..e9dcaf0dbf8bb0 100644 --- a/svm/tests/example-programs/write-to-account/Cargo.toml +++ b/svm/tests/example-programs/write-to-account/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "write-to-account" -version = "2.1.2" +version = "2.1.3" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.2" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.3" } [lib] crate-type = ["cdylib", "rlib"] From 970606e842d1027b5a34211219aacf3d39bb468d Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 15:27:46 -0500 Subject: [PATCH 23/33] v2.1: Marks old storages as dirty and uncleaned in clean_accounts() (backport of #3737) (#3748) * Marks old storages as dirty and uncleaned in clean_accounts() (#3737) (cherry picked from commit 31742ca61e7eff18570d7987b3fc7af9050d3303) # Conflicts: # accounts-db/src/accounts_db/tests.rs * fixes merge conflict --------- Co-authored-by: Brooks --- accounts-db/src/accounts_db.rs | 166 +++++++++++++++++++++++---------- runtime/src/bank.rs | 35 +++++-- 2 files changed, 142 insertions(+), 59 deletions(-) diff --git a/accounts-db/src/accounts_db.rs b/accounts-db/src/accounts_db.rs index 3a63139ad893ab..8eba4a89cf1046 100644 --- a/accounts-db/src/accounts_db.rs +++ b/accounts-db/src/accounts_db.rs @@ -2457,11 +2457,30 @@ impl AccountsDb { is_startup: bool, timings: &mut CleanKeyTimings, epoch_schedule: &EpochSchedule, + old_storages_policy: OldStoragesPolicy, ) -> CleaningCandidates { let oldest_non_ancient_slot = self.get_oldest_non_ancient_slot(epoch_schedule); let mut dirty_store_processing_time = Measure::start("dirty_store_processing"); - let max_slot_inclusive = - max_clean_root_inclusive.unwrap_or_else(|| self.accounts_index.max_root_inclusive()); + let max_root_inclusive = self.accounts_index.max_root_inclusive(); + let max_slot_inclusive = max_clean_root_inclusive.unwrap_or(max_root_inclusive); + + if old_storages_policy == OldStoragesPolicy::Clean { + let slot_one_epoch_old = + max_root_inclusive.saturating_sub(epoch_schedule.slots_per_epoch); + // do nothing special for these 100 old storages that will likely get cleaned up shortly + let acceptable_straggler_slot_count = 100; + let old_slot_cutoff = + slot_one_epoch_old.saturating_sub(acceptable_straggler_slot_count); + let (old_storages, old_slots) = self.get_snapshot_storages(..old_slot_cutoff); + let num_old_storages = old_storages.len(); + self.accounts_index + .add_uncleaned_roots(old_slots.iter().copied()); + for (old_slot, old_storage) in std::iter::zip(old_slots, old_storages) { + self.dirty_stores.entry(old_slot).or_insert(old_storage); + } + info!("Marked {num_old_storages} old storages as dirty"); + } + let mut dirty_stores = Vec::with_capacity(self.dirty_stores.len()); // find the oldest dirty slot // we'll add logging if that append vec cannot be marked dead @@ -2573,7 +2592,16 @@ impl AccountsDb { /// Call clean_accounts() with the common parameters that tests/benches use. pub fn clean_accounts_for_tests(&self) { - self.clean_accounts(None, false, &EpochSchedule::default()) + self.clean_accounts( + None, + false, + &EpochSchedule::default(), + if self.ancient_append_vec_offset.is_some() { + OldStoragesPolicy::Leave + } else { + OldStoragesPolicy::Clean + }, + ) } /// called with cli argument to verify refcounts are correct on all accounts @@ -2680,6 +2708,7 @@ impl AccountsDb { max_clean_root_inclusive: Option, is_startup: bool, epoch_schedule: &EpochSchedule, + old_storages_policy: OldStoragesPolicy, ) { if self.exhaustively_verify_refcounts { self.exhaustively_verify_refcounts(max_clean_root_inclusive); @@ -2701,6 +2730,7 @@ impl AccountsDb { is_startup, &mut key_timings, epoch_schedule, + old_storages_policy, ); let num_candidates = Self::count_pubkeys(&candidates); @@ -4561,7 +4591,15 @@ impl AccountsDb { let maybe_clean = || { if self.dirty_stores.len() > DIRTY_STORES_CLEANING_THRESHOLD { let latest_full_snapshot_slot = self.latest_full_snapshot_slot(); - self.clean_accounts(latest_full_snapshot_slot, is_startup, epoch_schedule); + self.clean_accounts( + latest_full_snapshot_slot, + is_startup, + epoch_schedule, + // Leave any old storages alone for now. Once the validator is running + // normal, calls to clean_accounts() will have the correct policy based + // on if ancient storages are enabled or not. + OldStoragesPolicy::Leave, + ); } }; @@ -6738,40 +6776,6 @@ impl AccountsDb { true } - /// storages are sorted by slot and have range info. - /// add all stores older than slots_per_epoch to dirty_stores so clean visits these slots - fn mark_old_slots_as_dirty( - &self, - storages: &SortedStorages, - slots_per_epoch: Slot, - stats: &mut crate::accounts_hash::HashStats, - ) { - // Nothing to do if ancient append vecs are enabled. - // Ancient slots will be visited by the ancient append vec code and dealt with correctly. - // we expect these ancient append vecs to be old and keeping accounts - // We can expect the normal processes will keep them cleaned. - // If we included them here then ALL accounts in ALL ancient append vecs will be visited by clean each time. - if self.ancient_append_vec_offset.is_some() { - return; - } - - let mut mark_time = Measure::start("mark_time"); - let mut num_dirty_slots: usize = 0; - let max = storages.max_slot_inclusive(); - let acceptable_straggler_slot_count = 100; // do nothing special for these old stores which will likely get cleaned up shortly - let sub = slots_per_epoch + acceptable_straggler_slot_count; - let in_epoch_range_start = max.saturating_sub(sub); - for (slot, storage) in storages.iter_range(&(..in_epoch_range_start)) { - if let Some(storage) = storage { - self.dirty_stores.insert(slot, storage.clone()); - num_dirty_slots += 1; - } - } - mark_time.stop(); - stats.mark_time_us = mark_time.as_us(); - stats.num_dirty_slots = num_dirty_slots; - } - pub fn calculate_accounts_hash_from( &self, data_source: CalcAccountsHashDataSource, @@ -7112,8 +7116,6 @@ impl AccountsDb { let storages_start_slot = storages.range().start; stats.oldest_root = storages_start_slot; - self.mark_old_slots_as_dirty(storages, config.epoch_schedule.slots_per_epoch, &mut stats); - let slot = storages.max_slot_inclusive(); let use_bg_thread_pool = config.use_bg_thread_pool; let accounts_hash_cache_path = self.accounts_hash_cache_path.clone(); @@ -9080,6 +9082,20 @@ pub(crate) enum UpdateIndexThreadSelection { PoolWithThreshold, } +/// How should old storages be handled in clean_accounts()? +#[derive(Debug, Copy, Clone, Eq, PartialEq)] +pub enum OldStoragesPolicy { + /// Clean all old storages, even if they were not explictly marked as dirty. + /// + /// This is the default behavior when not skipping rewrites. + Clean, + /// Leave all old storages. + /// + /// When skipping rewrites, we intentionally will have ancient storages. + /// Do not clean them up automatically in clean_accounts(). + Leave, +} + // These functions/fields are only usable from a dev context (i.e. tests and benches) #[cfg(feature = "dev-context-only-utils")] impl AccountStorageEntry { @@ -11304,13 +11320,23 @@ pub mod tests { // updates in later slots in slot 1 assert_eq!(accounts.alive_account_count_in_slot(0), 1); assert_eq!(accounts.alive_account_count_in_slot(1), 1); - accounts.clean_accounts(Some(0), false, &EpochSchedule::default()); + accounts.clean_accounts( + Some(0), + false, + &EpochSchedule::default(), + OldStoragesPolicy::Leave, + ); assert_eq!(accounts.alive_account_count_in_slot(0), 1); assert_eq!(accounts.alive_account_count_in_slot(1), 1); assert!(accounts.accounts_index.contains_with(&pubkey, None, None)); // Now the account can be cleaned up - accounts.clean_accounts(Some(1), false, &EpochSchedule::default()); + accounts.clean_accounts( + Some(1), + false, + &EpochSchedule::default(), + OldStoragesPolicy::Leave, + ); assert_eq!(accounts.alive_account_count_in_slot(0), 0); assert_eq!(accounts.alive_account_count_in_slot(1), 0); @@ -12842,7 +12868,12 @@ pub mod tests { db.add_root_and_flush_write_cache(1); // Only clean zero lamport accounts up to slot 0 - db.clean_accounts(Some(0), false, &EpochSchedule::default()); + db.clean_accounts( + Some(0), + false, + &EpochSchedule::default(), + OldStoragesPolicy::Leave, + ); // Should still be able to find zero lamport account in slot 1 assert_eq!( @@ -13996,7 +14027,12 @@ pub mod tests { db.calculate_accounts_delta_hash(1); // Clean to remove outdated entry from slot 0 - db.clean_accounts(Some(1), false, &EpochSchedule::default()); + db.clean_accounts( + Some(1), + false, + &EpochSchedule::default(), + OldStoragesPolicy::Leave, + ); // Shrink Slot 0 { @@ -14015,7 +14051,12 @@ pub mod tests { // Should be one store before clean for slot 0 db.get_and_assert_single_storage(0); db.calculate_accounts_delta_hash(2); - db.clean_accounts(Some(2), false, &EpochSchedule::default()); + db.clean_accounts( + Some(2), + false, + &EpochSchedule::default(), + OldStoragesPolicy::Leave, + ); // No stores should exist for slot 0 after clean assert_no_storages_at_slot(&db, 0); @@ -14862,15 +14903,30 @@ pub mod tests { assert_eq!(accounts_db.ref_count_for_pubkey(&pubkey), 3); accounts_db.set_latest_full_snapshot_slot(slot2); - accounts_db.clean_accounts(Some(slot2), false, &EpochSchedule::default()); + accounts_db.clean_accounts( + Some(slot2), + false, + &EpochSchedule::default(), + OldStoragesPolicy::Leave, + ); assert_eq!(accounts_db.ref_count_for_pubkey(&pubkey), 2); accounts_db.set_latest_full_snapshot_slot(slot2); - accounts_db.clean_accounts(None, false, &EpochSchedule::default()); + accounts_db.clean_accounts( + None, + false, + &EpochSchedule::default(), + OldStoragesPolicy::Leave, + ); assert_eq!(accounts_db.ref_count_for_pubkey(&pubkey), 1); accounts_db.set_latest_full_snapshot_slot(slot3); - accounts_db.clean_accounts(None, false, &EpochSchedule::default()); + accounts_db.clean_accounts( + None, + false, + &EpochSchedule::default(), + OldStoragesPolicy::Leave, + ); assert_eq!(accounts_db.ref_count_for_pubkey(&pubkey), 0); } ); @@ -17189,7 +17245,12 @@ pub mod tests { // calculate the full accounts hash let full_accounts_hash = { - accounts_db.clean_accounts(Some(slot - 1), false, &EpochSchedule::default()); + accounts_db.clean_accounts( + Some(slot - 1), + false, + &EpochSchedule::default(), + OldStoragesPolicy::Leave, + ); let (storages, _) = accounts_db.get_snapshot_storages(..=slot); let storages = SortedStorages::new(&storages); accounts_db.calculate_accounts_hash( @@ -17255,7 +17316,12 @@ pub mod tests { // calculate the incremental accounts hash let incremental_accounts_hash = { accounts_db.set_latest_full_snapshot_slot(full_accounts_hash_slot); - accounts_db.clean_accounts(Some(slot - 1), false, &EpochSchedule::default()); + accounts_db.clean_accounts( + Some(slot - 1), + false, + &EpochSchedule::default(), + OldStoragesPolicy::Leave, + ); let (storages, _) = accounts_db.get_snapshot_storages(full_accounts_hash_slot + 1..=slot); let storages = SortedStorages::new(&storages); diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index a358f8d94e093a..6ca1593d88b7f3 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -75,7 +75,8 @@ use { accounts::{AccountAddressFilter, Accounts, PubkeyAccountSlot}, accounts_db::{ AccountStorageEntry, AccountsDb, AccountsDbConfig, CalcAccountsHashDataSource, - DuplicatesLtHash, PubkeyHashAccount, VerifyAccountsHashAndLamportsConfig, + DuplicatesLtHash, OldStoragesPolicy, PubkeyHashAccount, + VerifyAccountsHashAndLamportsConfig, }, accounts_hash::{ AccountHash, AccountsHash, AccountsLtHash, CalcAccountsHashConfig, HashStats, @@ -6114,7 +6115,7 @@ impl Bank { let should_clean = force_clean || (!skip_shrink && self.slot() > 0); if should_clean { info!("Cleaning..."); - // We cannot clean past the last full snapshot's slot because we are about to + // We cannot clean past the latest full snapshot's slot because we are about to // perform an accounts hash calculation *up to that slot*. If we cleaned *past* // that slot, then accounts could be removed from older storages, which would // change the accounts hash. @@ -6122,6 +6123,7 @@ impl Bank { Some(latest_full_snapshot_slot), true, self.epoch_schedule(), + self.clean_accounts_old_storages_policy(), ); info!("Cleaning... Done."); } else { @@ -6457,6 +6459,7 @@ impl Bank { Some(highest_slot_to_clean), false, self.epoch_schedule(), + self.clean_accounts_old_storages_policy(), ); } @@ -6472,16 +6475,10 @@ impl Bank { } pub(crate) fn shrink_ancient_slots(&self) { - let can_skip_rewrites = self.bank_hash_skips_rent_rewrites(); - let test_skip_rewrites_but_include_in_bank_hash = self - .rc - .accounts - .accounts_db - .test_skip_rewrites_but_include_in_bank_hash; // Invoke ancient slot shrinking only when the validator is // explicitly configured to do so. This condition may be // removed when the skip rewrites feature is enabled. - if can_skip_rewrites || test_skip_rewrites_but_include_in_bank_hash { + if self.are_ancient_storages_enabled() { self.rc .accounts .accounts_db @@ -6489,6 +6486,26 @@ impl Bank { } } + /// Returns if ancient storages are enabled or not + pub fn are_ancient_storages_enabled(&self) -> bool { + let can_skip_rewrites = self.bank_hash_skips_rent_rewrites(); + let test_skip_rewrites_but_include_in_bank_hash = self + .rc + .accounts + .accounts_db + .test_skip_rewrites_but_include_in_bank_hash; + can_skip_rewrites || test_skip_rewrites_but_include_in_bank_hash + } + + /// Returns how clean_accounts() should handle old storages + fn clean_accounts_old_storages_policy(&self) -> OldStoragesPolicy { + if self.are_ancient_storages_enabled() { + OldStoragesPolicy::Leave + } else { + OldStoragesPolicy::Clean + } + } + pub fn read_cost_tracker(&self) -> LockResult> { self.cost_tracker.read() } From 92f639b40c9f1ce92d5fc23131b06ed4548d453e Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 09:03:57 +1100 Subject: [PATCH 24/33] v2.1: add fanout to tpu-client-next (backport of #3478) (#3523) * add fanout to tpu-client-next (#3478) * Add tpu-client-next to the root Cargo.toml * Change LeaderUpdater trait to accept mut self * add fanout to the tpu-client-next * Shutdown in separate task * Use try_send instead, minor impromenets * fix LeaderUpdaterError traits * improve lifetimes in split_leaders Co-authored-by: Illia Bobyr * address PR comments * create connections in advance * removed lookahead_slots --------- Co-authored-by: Illia Bobyr (cherry picked from commit 2a618b5e01d898af63e0922454b6b0f0eed93528) # Conflicts: # Cargo.toml * resolve the conflict --------- Co-authored-by: kirill lykov --- Cargo.toml | 1 + tpu-client-next/src/connection_worker.rs | 26 +-- .../src/connection_workers_scheduler.rs | 122 ++++++++---- tpu-client-next/src/leader_updater.rs | 15 +- tpu-client-next/src/send_transaction_stats.rs | 186 +++++++++++------- tpu-client-next/src/workers_cache.rs | 168 ++++++++-------- .../connection_workers_scheduler_test.rs | 42 ++-- 7 files changed, 336 insertions(+), 224 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6bcd06d237fa56..cd056e7746cc5a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -513,6 +513,7 @@ solana-test-validator = { path = "test-validator", version = "=2.1.3" } solana-thin-client = { path = "thin-client", version = "=2.1.3" } solana-transaction-error = { path = "sdk/transaction-error", version = "=2.1.3" } solana-tpu-client = { path = "tpu-client", version = "=2.1.3", default-features = false } +solana-tpu-client-next = { path = "tpu-client-next", version = "=2.1.3" } solana-transaction-status = { path = "transaction-status", version = "=2.1.3" } solana-transaction-status-client-types = { path = "transaction-status-client-types", version = "=2.1.3" } solana-transaction-metrics-tracker = { path = "transaction-metrics-tracker", version = "=2.1.3" } diff --git a/tpu-client-next/src/connection_worker.rs b/tpu-client-next/src/connection_worker.rs index 7d77bc3f6ed2a2..25d2a087c0f8e6 100644 --- a/tpu-client-next/src/connection_worker.rs +++ b/tpu-client-next/src/connection_worker.rs @@ -14,7 +14,10 @@ use { clock::{DEFAULT_MS_PER_SLOT, MAX_PROCESSING_AGE, NUM_CONSECUTIVE_LEADER_SLOTS}, timing::timestamp, }, - std::net::SocketAddr, + std::{ + net::SocketAddr, + sync::{atomic::Ordering, Arc}, + }, tokio::{ sync::mpsc, time::{sleep, Duration}, @@ -72,7 +75,7 @@ pub(crate) struct ConnectionWorker { connection: ConnectionState, skip_check_transaction_age: bool, max_reconnect_attempts: usize, - send_txs_stats: SendTransactionStats, + send_txs_stats: Arc, cancel: CancellationToken, } @@ -93,6 +96,7 @@ impl ConnectionWorker { transactions_receiver: mpsc::Receiver, skip_check_transaction_age: bool, max_reconnect_attempts: usize, + send_txs_stats: Arc, ) -> (Self, CancellationToken) { let cancel = CancellationToken::new(); @@ -103,7 +107,7 @@ impl ConnectionWorker { connection: ConnectionState::NotSetup, skip_check_transaction_age, max_reconnect_attempts, - send_txs_stats: SendTransactionStats::default(), + send_txs_stats, cancel: cancel.clone(), }; @@ -155,11 +159,6 @@ impl ConnectionWorker { } } - /// Retrieves the statistics for transactions sent by this worker. - pub fn transaction_stats(&self) -> &SendTransactionStats { - &self.send_txs_stats - } - /// Sends a batch of transactions using the provided `connection`. /// /// Each transaction in the batch is sent over the QUIC streams one at the @@ -183,11 +182,12 @@ impl ConnectionWorker { if let Err(error) = result { trace!("Failed to send transaction over stream with error: {error}."); - record_error(error, &mut self.send_txs_stats); + record_error(error, &self.send_txs_stats); self.connection = ConnectionState::Retry(0); } else { - self.send_txs_stats.successfully_sent = - self.send_txs_stats.successfully_sent.saturating_add(1); + self.send_txs_stats + .successfully_sent + .fetch_add(1, Ordering::Relaxed); } } measure_send.stop(); @@ -221,14 +221,14 @@ impl ConnectionWorker { } Err(err) => { warn!("Connection error {}: {}", self.peer, err); - record_error(err.into(), &mut self.send_txs_stats); + record_error(err.into(), &self.send_txs_stats); self.connection = ConnectionState::Retry(max_retries_attempt.saturating_add(1)); } } } Err(connecting_error) => { - record_error(connecting_error.clone().into(), &mut self.send_txs_stats); + record_error(connecting_error.clone().into(), &self.send_txs_stats); match connecting_error { ConnectError::EndpointStopping => { debug!("Endpoint stopping, exit connection worker."); diff --git a/tpu-client-next/src/connection_workers_scheduler.rs b/tpu-client-next/src/connection_workers_scheduler.rs index 82b038827b48eb..e42040316c139a 100644 --- a/tpu-client-next/src/connection_workers_scheduler.rs +++ b/tpu-client-next/src/connection_workers_scheduler.rs @@ -9,7 +9,8 @@ use { create_client_config, create_client_endpoint, QuicClientCertificate, QuicError, }, transaction_batch::TransactionBatch, - workers_cache::{WorkerInfo, WorkersCache, WorkersCacheError}, + workers_cache::{maybe_shutdown_worker, WorkerInfo, WorkersCache, WorkersCacheError}, + SendTransactionStats, }, log::*, quinn::Endpoint, @@ -39,6 +40,25 @@ pub enum ConnectionWorkersSchedulerError { LeaderReceiverDropped, } +/// [`Fanout`] is a configuration struct that specifies how many leaders should +/// be targeted when sending transactions and connecting. +/// +/// Note, that the unit is number of leaders per +/// [`NUM_CONSECUTIVE_LEADER_SLOTS`]. It means that if the leader schedule is +/// [L1, L1, L1, L1, L1, L1, L1, L1, L2, L2, L2, L2], the leaders per +/// consecutive leader slots are [L1, L1, L2], so there are 3 of them. +/// +/// The idea of having a separate `connect` parameter is to create a set of +/// nodes to connect to in advance in order to hide the latency of opening new +/// connection. Hence, `connect` must be greater or equal to `send` +pub struct Fanout { + /// The number of leaders to target for sending transactions. + pub send: usize, + + /// The number of leaders to target for establishing connections. + pub connect: usize, +} + /// Configuration for the [`ConnectionWorkersScheduler`]. /// /// This struct holds the necessary settings to initialize and manage connection @@ -66,10 +86,8 @@ pub struct ConnectionWorkersSchedulerConfig { /// connection failure. pub max_reconnect_attempts: usize, - /// The number of slots to look ahead during the leader estimation - /// procedure. Determines how far into the future leaders are estimated, - /// allowing connections to be established with those leaders in advance. - pub lookahead_slots: u64, + /// Configures the number of leaders to connect to and send transactions to. + pub leaders_fanout: Fanout, } impl ConnectionWorkersScheduler { @@ -90,7 +108,7 @@ impl ConnectionWorkersScheduler { skip_check_transaction_age, worker_channel_size, max_reconnect_attempts, - lookahead_slots, + leaders_fanout, }: ConnectionWorkersSchedulerConfig, mut leader_updater: Box, mut transaction_receiver: mpsc::Receiver, @@ -99,6 +117,7 @@ impl ConnectionWorkersScheduler { let endpoint = Self::setup_endpoint(bind, validator_identity)?; debug!("Client endpoint bind address: {:?}", endpoint.local_addr()); let mut workers = WorkersCache::new(num_connections, cancel.clone()); + let mut send_stats_per_addr = SendTransactionStatsPerAddr::new(); loop { let transaction_batch = tokio::select! { @@ -114,50 +133,49 @@ impl ConnectionWorkersScheduler { break; } }; - let updated_leaders = leader_updater.next_leaders(lookahead_slots); - let new_leader = &updated_leaders[0]; - let future_leaders = &updated_leaders[1..]; - if !workers.contains(new_leader) { - debug!("No existing workers for {new_leader:?}, starting a new one."); - let worker = Self::spawn_worker( - &endpoint, - new_leader, - worker_channel_size, - skip_check_transaction_age, - max_reconnect_attempts, - ); - workers.push(*new_leader, worker).await; - } - tokio::select! { - send_res = workers.send_transactions_to_address(new_leader, transaction_batch) => match send_res { - Ok(()) => (), - Err(WorkersCacheError::ShutdownError) => { - debug!("Connection to {new_leader} was closed, worker cache shutdown"); - } - Err(err) => { - warn!("Connection to {new_leader} was closed, worker error: {err}"); - // If we has failed to send batch, it will be dropped. - } - }, - () = cancel.cancelled() => { - debug!("Cancelled: Shutting down"); - break; - } - }; + let updated_leaders = leader_updater.next_leaders(leaders_fanout.connect); - // Regardless of who is leader, add future leaders to the cache to - // hide the latency of opening the connection. - for peer in future_leaders { + let (fanout_leaders, connect_leaders) = + split_leaders(&updated_leaders, &leaders_fanout); + // add future leaders to the cache to hide the latency of opening + // the connection. + for peer in connect_leaders { if !workers.contains(peer) { + let stats = send_stats_per_addr.entry(peer.ip()).or_default(); let worker = Self::spawn_worker( &endpoint, peer, worker_channel_size, skip_check_transaction_age, max_reconnect_attempts, + stats.clone(), ); - workers.push(*peer, worker).await; + maybe_shutdown_worker(workers.push(*peer, worker)); + } + } + + for new_leader in fanout_leaders { + if !workers.contains(new_leader) { + warn!("No existing worker for {new_leader:?}, skip sending to this leader."); + continue; + } + + let send_res = + workers.try_send_transactions_to_address(new_leader, transaction_batch.clone()); + match send_res { + Ok(()) => (), + Err(WorkersCacheError::ShutdownError) => { + debug!("Connection to {new_leader} was closed, worker cache shutdown"); + } + Err(WorkersCacheError::ReceiverDropped) => { + // Remove the worker from the cache, if the peer has disconnected. + maybe_shutdown_worker(workers.pop(*new_leader)); + } + Err(err) => { + warn!("Connection to {new_leader} was closed, worker error: {err}"); + // If we has failed to send batch, it will be dropped. + } } } } @@ -166,7 +184,7 @@ impl ConnectionWorkersScheduler { endpoint.close(0u32.into(), b"Closing connection"); leader_updater.stop().await; - Ok(workers.transaction_stats().clone()) + Ok(send_stats_per_addr) } /// Sets up the QUIC endpoint for the scheduler to handle connections. @@ -191,6 +209,7 @@ impl ConnectionWorkersScheduler { worker_channel_size: usize, skip_check_transaction_age: bool, max_reconnect_attempts: usize, + stats: Arc, ) -> WorkerInfo { let (txs_sender, txs_receiver) = mpsc::channel(worker_channel_size); let endpoint = endpoint.clone(); @@ -202,12 +221,31 @@ impl ConnectionWorkersScheduler { txs_receiver, skip_check_transaction_age, max_reconnect_attempts, + stats, ); let handle = tokio::spawn(async move { worker.run().await; - worker.transaction_stats().clone() }); WorkerInfo::new(txs_sender, handle, cancel) } } + +/// Splits `leaders` into two slices based on the `fanout` configuration: +/// * the first slice contains the leaders to which transactions will be sent, +/// * the second vector contains the leaders, used to warm up connections. This +/// slice includes the the first set. +fn split_leaders<'leaders>( + leaders: &'leaders [SocketAddr], + fanout: &Fanout, +) -> (&'leaders [SocketAddr], &'leaders [SocketAddr]) { + let Fanout { send, connect } = fanout; + assert!(send <= connect); + let send_count = (*send).min(leaders.len()); + let connect_count = (*connect).min(leaders.len()); + + let send_slice = &leaders[..send_count]; + let connect_slice = &leaders[..connect_count]; + + (send_slice, connect_slice) +} diff --git a/tpu-client-next/src/leader_updater.rs b/tpu-client-next/src/leader_updater.rs index 5e07b9b0bfe612..1c7d16cd2acb2d 100644 --- a/tpu-client-next/src/leader_updater.rs +++ b/tpu-client-next/src/leader_updater.rs @@ -13,6 +13,7 @@ use { log::*, solana_connection_cache::connection_cache::Protocol, solana_rpc_client::nonblocking::rpc_client::RpcClient, + solana_sdk::clock::NUM_CONSECUTIVE_LEADER_SLOTS, solana_tpu_client::nonblocking::tpu_client::LeaderTpuService, std::{ fmt, @@ -22,6 +23,7 @@ use { Arc, }, }, + thiserror::Error, }; /// [`LeaderUpdater`] trait abstracts out functionality required for the @@ -29,19 +31,22 @@ use { /// identify next leaders to send transactions to. #[async_trait] pub trait LeaderUpdater: Send { - /// Returns next unique leaders for the next `lookahead_slots` starting from + /// Returns next leaders for the next `lookahead_leaders` starting from /// current estimated slot. /// + /// Leaders are returned per [`NUM_CONSECUTIVE_LEADER_SLOTS`] to avoid unnecessary repetition. + /// /// If the current leader estimation is incorrect and transactions are sent to /// only one estimated leader, there is a risk of losing all the transactions, /// depending on the forwarding policy. - fn next_leaders(&self, lookahead_slots: u64) -> Vec; + fn next_leaders(&mut self, lookahead_leaders: usize) -> Vec; /// Stop [`LeaderUpdater`] and releases all associated resources. async fn stop(&mut self); } /// Error type for [`LeaderUpdater`]. +#[derive(Error, PartialEq)] pub struct LeaderUpdaterError; impl fmt::Display for LeaderUpdaterError { @@ -98,7 +103,9 @@ struct LeaderUpdaterService { #[async_trait] impl LeaderUpdater for LeaderUpdaterService { - fn next_leaders(&self, lookahead_slots: u64) -> Vec { + fn next_leaders(&mut self, lookahead_leaders: usize) -> Vec { + let lookahead_slots = + (lookahead_leaders as u64).saturating_mul(NUM_CONSECUTIVE_LEADER_SLOTS); self.leader_tpu_service.leader_tpu_sockets(lookahead_slots) } @@ -116,7 +123,7 @@ struct PinnedLeaderUpdater { #[async_trait] impl LeaderUpdater for PinnedLeaderUpdater { - fn next_leaders(&self, _lookahead_slots: u64) -> Vec { + fn next_leaders(&mut self, _lookahead_leaders: usize) -> Vec { self.address.clone() } diff --git a/tpu-client-next/src/send_transaction_stats.rs b/tpu-client-next/src/send_transaction_stats.rs index abe68b8bf60213..fe16e2546ea411 100644 --- a/tpu-client-next/src/send_transaction_stats.rs +++ b/tpu-client-next/src/send_transaction_stats.rs @@ -4,86 +4,118 @@ use { super::QuicError, quinn::{ConnectError, ConnectionError, WriteError}, - std::{collections::HashMap, fmt, net::IpAddr}, + std::{ + collections::HashMap, + fmt, + net::IpAddr, + sync::{ + atomic::{AtomicU64, Ordering}, + Arc, + }, + }, }; /// [`SendTransactionStats`] aggregates counters related to sending transactions. -#[derive(Debug, Default, Clone, PartialEq)] +#[derive(Debug, Default)] pub struct SendTransactionStats { - pub successfully_sent: u64, - pub connect_error_cids_exhausted: u64, - pub connect_error_invalid_remote_address: u64, - pub connect_error_other: u64, - pub connection_error_application_closed: u64, - pub connection_error_cids_exhausted: u64, - pub connection_error_connection_closed: u64, - pub connection_error_locally_closed: u64, - pub connection_error_reset: u64, - pub connection_error_timed_out: u64, - pub connection_error_transport_error: u64, - pub connection_error_version_mismatch: u64, - pub write_error_closed_stream: u64, - pub write_error_connection_lost: u64, - pub write_error_stopped: u64, - pub write_error_zero_rtt_rejected: u64, + pub successfully_sent: AtomicU64, + pub connect_error_cids_exhausted: AtomicU64, + pub connect_error_invalid_remote_address: AtomicU64, + pub connect_error_other: AtomicU64, + pub connection_error_application_closed: AtomicU64, + pub connection_error_cids_exhausted: AtomicU64, + pub connection_error_connection_closed: AtomicU64, + pub connection_error_locally_closed: AtomicU64, + pub connection_error_reset: AtomicU64, + pub connection_error_timed_out: AtomicU64, + pub connection_error_transport_error: AtomicU64, + pub connection_error_version_mismatch: AtomicU64, + pub write_error_closed_stream: AtomicU64, + pub write_error_connection_lost: AtomicU64, + pub write_error_stopped: AtomicU64, + pub write_error_zero_rtt_rejected: AtomicU64, } #[allow(clippy::arithmetic_side_effects)] -pub fn record_error(err: QuicError, stats: &mut SendTransactionStats) { +pub fn record_error(err: QuicError, stats: &SendTransactionStats) { match err { QuicError::Connect(ConnectError::EndpointStopping) => { - stats.connect_error_other += 1; + stats.connect_error_other.fetch_add(1, Ordering::Relaxed); } QuicError::Connect(ConnectError::CidsExhausted) => { - stats.connect_error_cids_exhausted += 1; + stats + .connect_error_cids_exhausted + .fetch_add(1, Ordering::Relaxed); } QuicError::Connect(ConnectError::InvalidServerName(_)) => { - stats.connect_error_other += 1; + stats.connect_error_other.fetch_add(1, Ordering::Relaxed); } QuicError::Connect(ConnectError::InvalidRemoteAddress(_)) => { - stats.connect_error_invalid_remote_address += 1; + stats + .connect_error_invalid_remote_address + .fetch_add(1, Ordering::Relaxed); } QuicError::Connect(ConnectError::NoDefaultClientConfig) => { - stats.connect_error_other += 1; + stats.connect_error_other.fetch_add(1, Ordering::Relaxed); } QuicError::Connect(ConnectError::UnsupportedVersion) => { - stats.connect_error_other += 1; + stats.connect_error_other.fetch_add(1, Ordering::Relaxed); } QuicError::Connection(ConnectionError::VersionMismatch) => { - stats.connection_error_version_mismatch += 1; + stats + .connection_error_version_mismatch + .fetch_add(1, Ordering::Relaxed); } QuicError::Connection(ConnectionError::TransportError(_)) => { - stats.connection_error_transport_error += 1; + stats + .connection_error_transport_error + .fetch_add(1, Ordering::Relaxed); } QuicError::Connection(ConnectionError::ConnectionClosed(_)) => { - stats.connection_error_connection_closed += 1; + stats + .connection_error_connection_closed + .fetch_add(1, Ordering::Relaxed); } QuicError::Connection(ConnectionError::ApplicationClosed(_)) => { - stats.connection_error_application_closed += 1; + stats + .connection_error_application_closed + .fetch_add(1, Ordering::Relaxed); } QuicError::Connection(ConnectionError::Reset) => { - stats.connection_error_reset += 1; + stats.connection_error_reset.fetch_add(1, Ordering::Relaxed); } QuicError::Connection(ConnectionError::TimedOut) => { - stats.connection_error_timed_out += 1; + stats + .connection_error_timed_out + .fetch_add(1, Ordering::Relaxed); } QuicError::Connection(ConnectionError::LocallyClosed) => { - stats.connection_error_locally_closed += 1; + stats + .connection_error_locally_closed + .fetch_add(1, Ordering::Relaxed); } QuicError::Connection(ConnectionError::CidsExhausted) => { - stats.connection_error_cids_exhausted += 1; + stats + .connection_error_cids_exhausted + .fetch_add(1, Ordering::Relaxed); } QuicError::StreamWrite(WriteError::Stopped(_)) => { - stats.write_error_stopped += 1; + stats.write_error_stopped.fetch_add(1, Ordering::Relaxed); } QuicError::StreamWrite(WriteError::ConnectionLost(_)) => { - stats.write_error_connection_lost += 1; + stats + .write_error_connection_lost + .fetch_add(1, Ordering::Relaxed); } QuicError::StreamWrite(WriteError::ClosedStream) => { - stats.write_error_closed_stream += 1; + stats + .write_error_closed_stream + .fetch_add(1, Ordering::Relaxed); } QuicError::StreamWrite(WriteError::ZeroRttRejected) => { - stats.write_error_zero_rtt_rejected += 1; + stats + .write_error_zero_rtt_rejected + .fetch_add(1, Ordering::Relaxed); } // Endpoint is created on the scheduler level and handled separately // No counters are used for this case. @@ -91,39 +123,7 @@ pub fn record_error(err: QuicError, stats: &mut SendTransactionStats) { } } -pub type SendTransactionStatsPerAddr = HashMap; - -macro_rules! add_fields { - ($self:ident += $other:ident for: $( $field:ident ),* $(,)? ) => { - $( - $self.$field = $self.$field.saturating_add($other.$field); - )* - }; -} - -impl SendTransactionStats { - pub fn add(&mut self, other: &SendTransactionStats) { - add_fields!( - self += other for: - successfully_sent, - connect_error_cids_exhausted, - connect_error_invalid_remote_address, - connect_error_other, - connection_error_application_closed, - connection_error_cids_exhausted, - connection_error_connection_closed, - connection_error_locally_closed, - connection_error_reset, - connection_error_timed_out, - connection_error_transport_error, - connection_error_version_mismatch, - write_error_closed_stream, - write_error_connection_lost, - write_error_stopped, - write_error_zero_rtt_rejected, - ); - } -} +pub type SendTransactionStatsPerAddr = HashMap>; macro_rules! display_send_transaction_stats_body { ($self:ident, $f:ident, $($field:ident),* $(,)?) => { @@ -135,7 +135,7 @@ macro_rules! display_send_transaction_stats_body { "\x20 ", stringify!($field), ": {},\n", )* ), - $($self.$field),* + $($self.$field.load(Ordering::Relaxed)),* ) }; } @@ -164,3 +164,47 @@ impl fmt::Display for SendTransactionStats { ) } } + +/// For tests it is useful to be have PartialEq but we cannot have it on top of +/// atomics. This macro creates a structure with the same attributes but of type +/// u64. +macro_rules! define_non_atomic_struct_for { + ($name:ident, $atomic_name:ident, {$($field:ident),* $(,)?}) => { + #[derive(Debug, Default, PartialEq)] + pub struct $name { + $(pub $field: u64),* + } + + impl $atomic_name { + pub fn to_non_atomic(&self) -> $name { + $name { + $($field: self.$field.load(Ordering::Relaxed)),* + } + } + } + }; +} + +// Define the non-atomic struct and the `to_non_atomic` conversion method +define_non_atomic_struct_for!( + SendTransactionStatsNonAtomic, + SendTransactionStats, + { + successfully_sent, + connect_error_cids_exhausted, + connect_error_invalid_remote_address, + connect_error_other, + connection_error_application_closed, + connection_error_cids_exhausted, + connection_error_connection_closed, + connection_error_locally_closed, + connection_error_reset, + connection_error_timed_out, + connection_error_transport_error, + connection_error_version_mismatch, + write_error_closed_stream, + write_error_connection_lost, + write_error_stopped, + write_error_zero_rtt_rejected + } +); diff --git a/tpu-client-next/src/workers_cache.rs b/tpu-client-next/src/workers_cache.rs index 90d2954b669d7f..d3d25223dfcbfd 100644 --- a/tpu-client-next/src/workers_cache.rs +++ b/tpu-client-next/src/workers_cache.rs @@ -3,31 +3,30 @@ //! batches, and gathering send transaction statistics. use { - super::SendTransactionStats, crate::transaction_batch::TransactionBatch, log::*, lru::LruCache, - std::{ - collections::HashMap, - net::{IpAddr, SocketAddr}, - }, + std::net::SocketAddr, thiserror::Error, - tokio::{sync::mpsc, task::JoinHandle}, + tokio::{ + sync::mpsc::{self, error::TrySendError}, + task::JoinHandle, + }, tokio_util::sync::CancellationToken, }; /// [`WorkerInfo`] holds information about a worker responsible for sending /// transaction batches. pub(crate) struct WorkerInfo { - pub sender: mpsc::Sender, - pub handle: JoinHandle, - pub cancel: CancellationToken, + sender: mpsc::Sender, + handle: JoinHandle<()>, + cancel: CancellationToken, } impl WorkerInfo { pub fn new( sender: mpsc::Sender, - handle: JoinHandle, + handle: JoinHandle<()>, cancel: CancellationToken, ) -> Self { Self { @@ -37,27 +36,23 @@ impl WorkerInfo { } } - async fn send_transactions( - &self, - txs_batch: TransactionBatch, - ) -> Result<(), WorkersCacheError> { - self.sender - .send(txs_batch) - .await - .map_err(|_| WorkersCacheError::ReceiverDropped)?; + fn try_send_transactions(&self, txs_batch: TransactionBatch) -> Result<(), WorkersCacheError> { + self.sender.try_send(txs_batch).map_err(|err| match err { + TrySendError::Full(_) => WorkersCacheError::FullChannel, + TrySendError::Closed(_) => WorkersCacheError::ReceiverDropped, + })?; Ok(()) } /// Closes the worker by dropping the sender and awaiting the worker's /// statistics. - async fn shutdown(self) -> Result { + async fn shutdown(self) -> Result<(), WorkersCacheError> { self.cancel.cancel(); drop(self.sender); - let stats = self - .handle + self.handle .await .map_err(|_| WorkersCacheError::TaskJoinFailure)?; - Ok(stats) + Ok(()) } } @@ -65,7 +60,6 @@ impl WorkerInfo { /// manage workers. It also tracks transaction statistics for each peer. pub(crate) struct WorkersCache { workers: LruCache, - send_stats_per_addr: HashMap, /// Indicates that the `WorkersCache` is been `shutdown()`, interrupting any outstanding /// `send_txs()` invocations. @@ -78,6 +72,9 @@ pub enum WorkersCacheError { #[error("Work receiver has been dropped unexpectedly.")] ReceiverDropped, + #[error("Worker's channel is full.")] + FullChannel, + #[error("Task failed to join.")] TaskJoinFailure, @@ -86,32 +83,45 @@ pub enum WorkersCacheError { } impl WorkersCache { - pub fn new(capacity: usize, cancel: CancellationToken) -> Self { + pub(crate) fn new(capacity: usize, cancel: CancellationToken) -> Self { Self { workers: LruCache::new(capacity), - send_stats_per_addr: HashMap::new(), cancel, } } - pub fn contains(&self, peer: &SocketAddr) -> bool { + pub(crate) fn contains(&self, peer: &SocketAddr) -> bool { self.workers.contains(peer) } - pub async fn push(&mut self, peer: SocketAddr, peer_worker: WorkerInfo) { - // Although there might be concerns about the performance implications - // of waiting for the worker to be closed when trying to add a new - // worker, the idea is that these workers are almost always created in - // advance so the latency is hidden. - if let Some((leader, popped_worker)) = self.workers.push(peer, peer_worker) { - self.shutdown_worker(leader, popped_worker).await; + pub(crate) fn push( + &mut self, + leader: SocketAddr, + peer_worker: WorkerInfo, + ) -> Option { + if let Some((leader, popped_worker)) = self.workers.push(leader, peer_worker) { + return Some(ShutdownWorker { + leader, + worker: popped_worker, + }); + } + None + } + + pub(crate) fn pop(&mut self, leader: SocketAddr) -> Option { + if let Some(popped_worker) = self.workers.pop(&leader) { + return Some(ShutdownWorker { + leader, + worker: popped_worker, + }); } + None } /// Sends a batch of transactions to the worker for a given peer. If the /// worker for the peer is disconnected or fails, it is removed from the /// cache. - pub async fn send_transactions_to_address( + pub(crate) fn try_send_transactions_to_address( &mut self, peer: &SocketAddr, txs_batch: TransactionBatch, @@ -119,66 +129,68 @@ impl WorkersCache { let Self { workers, cancel, .. } = self; + if cancel.is_cancelled() { + return Err(WorkersCacheError::ShutdownError); + } - let body = async move { - let current_worker = workers.get(peer).expect( - "Failed to fetch worker for peer {peer}.\n\ + let current_worker = workers.get(peer).expect( + "Failed to fetch worker for peer {peer}.\n\ Peer existence must be checked before this call using `contains` method.", - ); - let send_res = current_worker.send_transactions(txs_batch).await; - - if let Err(WorkersCacheError::ReceiverDropped) = send_res { - // Remove the worker from the cache, if the peer has disconnected. - if let Some(current_worker) = workers.pop(peer) { - // To avoid obscuring the error from send, ignore a possible - // `TaskJoinFailure`. - let close_result = current_worker.shutdown().await; - if let Err(error) = close_result { - error!("Error while closing worker: {error}."); - } - } - } + ); + let send_res = current_worker.try_send_transactions(txs_batch); - send_res - }; - - tokio::select! { - send_res = body => send_res, - () = cancel.cancelled() => Err(WorkersCacheError::ShutdownError), + if let Err(WorkersCacheError::ReceiverDropped) = send_res { + warn!( + "Failed to deliver transaction batch for leader {}, drop batch.", + peer.ip() + ); } - } - pub fn transaction_stats(&self) -> &HashMap { - &self.send_stats_per_addr + send_res } /// Closes and removes all workers in the cache. This is typically done when /// shutting down the system. - pub async fn shutdown(&mut self) { - // Interrupt any outstanding `send_txs()` calls. + pub(crate) async fn shutdown(&mut self) { + // Interrupt any outstanding `send_transactions()` calls. self.cancel.cancel(); while let Some((leader, worker)) = self.workers.pop_lru() { - self.shutdown_worker(leader, worker).await; + let res = worker.shutdown().await; + if let Err(err) = res { + debug!("Error while shutting down worker for {leader}: {err}"); + } } } +} - /// Shuts down a worker for a given peer by closing the worker and gathering - /// its transaction statistics. - async fn shutdown_worker(&mut self, leader: SocketAddr, worker: WorkerInfo) { - let res = worker.shutdown().await; +/// [`ShutdownWorker`] takes care of stopping the worker. It's method +/// `shutdown()` should be executed in a separate task to hide the latency of +/// finishing worker gracefully. +pub(crate) struct ShutdownWorker { + leader: SocketAddr, + worker: WorkerInfo, +} - let stats = match res { - Ok(stats) => stats, - Err(err) => { - debug!("Error while shutting down worker for {leader}: {err}"); - return; - } - }; +impl ShutdownWorker { + pub(crate) fn leader(&self) -> SocketAddr { + self.leader + } - self.send_stats_per_addr - .entry(leader.ip()) - .and_modify(|e| e.add(&stats)) - .or_insert(stats); + pub(crate) async fn shutdown(self) -> Result<(), WorkersCacheError> { + self.worker.shutdown().await } } + +pub(crate) fn maybe_shutdown_worker(worker: Option) { + let Some(worker) = worker else { + return; + }; + tokio::spawn(async move { + let leader = worker.leader(); + let res = worker.shutdown().await; + if let Err(err) = res { + debug!("Error while shutting down worker for {leader}: {err}"); + } + }); +} diff --git a/tpu-client-next/tests/connection_workers_scheduler_test.rs b/tpu-client-next/tests/connection_workers_scheduler_test.rs index 0ffabb6640f7a3..5406a242b73f8a 100644 --- a/tpu-client-next/tests/connection_workers_scheduler_test.rs +++ b/tpu-client-next/tests/connection_workers_scheduler_test.rs @@ -16,10 +16,11 @@ use { streamer::StakedNodes, }, solana_tpu_client_next::{ - connection_workers_scheduler::ConnectionWorkersSchedulerConfig, - leader_updater::create_leader_updater, transaction_batch::TransactionBatch, - ConnectionWorkersScheduler, ConnectionWorkersSchedulerError, SendTransactionStats, - SendTransactionStatsPerAddr, + connection_workers_scheduler::{ConnectionWorkersSchedulerConfig, Fanout}, + leader_updater::create_leader_updater, + send_transaction_stats::SendTransactionStatsNonAtomic, + transaction_batch::TransactionBatch, + ConnectionWorkersScheduler, ConnectionWorkersSchedulerError, SendTransactionStatsPerAddr, }, std::{ collections::HashMap, @@ -46,9 +47,17 @@ fn test_config(validator_identity: Option) -> ConnectionWorkersSchedule stake_identity: validator_identity, num_connections: 1, skip_check_transaction_age: false, - worker_channel_size: 2, + // At the moment we have only one strategy to send transactions: we try + // to put to worker channel transaction batch and in case of failure + // just drop it. This requires to use large channels here. In the + // future, we are planning to add an option to send with backpressure at + // the speed of fastest leader. + worker_channel_size: 100, max_reconnect_attempts: 4, - lookahead_slots: 1, + leaders_fanout: Fanout { + send: 1, + connect: 1, + }, } } @@ -89,7 +98,7 @@ async fn join_scheduler( scheduler_handle: JoinHandle< Result, >, -) -> SendTransactionStats { +) -> SendTransactionStatsNonAtomic { let stats_per_ip = scheduler_handle .await .unwrap() @@ -97,7 +106,7 @@ async fn join_scheduler( stats_per_ip .get(&IpAddr::from_str("127.0.0.1").unwrap()) .expect("setup_connection_worker_scheduler() connected to a leader at 127.0.0.1") - .clone() + .to_non_atomic() } // Specify the pessimistic time to finish generation and result checks. @@ -239,7 +248,7 @@ async fn test_basic_transactions_sending() { let localhost_stats = join_scheduler(scheduler_handle).await; assert_eq!( localhost_stats, - SendTransactionStats { + SendTransactionStatsNonAtomic { successfully_sent: expected_num_txs as u64, ..Default::default() } @@ -436,7 +445,7 @@ async fn test_staked_connection() { let localhost_stats = join_scheduler(scheduler_handle).await; assert_eq!( localhost_stats, - SendTransactionStats { + SendTransactionStatsNonAtomic { successfully_sent: expected_num_txs as u64, ..Default::default() } @@ -483,7 +492,7 @@ async fn test_connection_throttling() { let localhost_stats = join_scheduler(scheduler_handle).await; assert_eq!( localhost_stats, - SendTransactionStats { + SendTransactionStatsNonAtomic { successfully_sent: expected_num_txs as u64, ..Default::default() } @@ -524,13 +533,14 @@ async fn test_no_host() { tx_sender_shutdown.await; // While attempting to establish a connection with a nonexistent host, we fill the worker's - // channel. Transactions from this channel will never be sent and will eventually be dropped - // without increasing the `SendTransactionStats` counters. + // channel. let stats = scheduler_handle .await .expect("Scheduler should stop successfully") .expect("Scheduler execution was successful"); - assert_eq!(stats, HashMap::new()); + let stats = stats.get(&server_ip).unwrap().to_non_atomic(); + // `5` because `config.max_reconnect_attempts` is 4 + assert_eq!(stats.connect_error_invalid_remote_address, 5); } // Check that when the client is rate-limited by server, we update counters @@ -586,7 +596,7 @@ async fn test_rate_limiting() { // do the shutdown. If we increase the time we wait in `count_received_packets_for`, we would // start seeing a `connection_error_timed_out` incremented to 1. Potentially, we may want to // accept both 0 and 1 as valid values for it. - assert_eq!(localhost_stats, SendTransactionStats::default()); + assert_eq!(localhost_stats, SendTransactionStatsNonAtomic::default()); // Stop the server. exit.store(true, Ordering::Relaxed); @@ -663,7 +673,7 @@ async fn test_rate_limiting_establish_connection() { // All the rest of the error counters should be 0. localhost_stats.connection_error_timed_out = 0; localhost_stats.successfully_sent = 0; - assert_eq!(localhost_stats, SendTransactionStats::default()); + assert_eq!(localhost_stats, SendTransactionStatsNonAtomic::default()); // Stop the server. exit.store(true, Ordering::Relaxed); From 8dadea5c58aebb28228769f103411262a374814c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 10:13:59 -0600 Subject: [PATCH 25/33] Bump version to v2.1.4 (#3782) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Will Hickey --- Cargo.lock | 362 ++++++++--------- Cargo.toml | 294 +++++++------- programs/sbf/Cargo.lock | 382 +++++++++--------- programs/sbf/Cargo.toml | 78 ++-- .../tests/crates/fail/Cargo.toml | 4 +- .../tests/crates/noop/Cargo.toml | 4 +- .../tests/crates/package-metadata/Cargo.toml | 6 +- .../crates/workspace-metadata/Cargo.toml | 4 +- svm/examples/json-rpc/program/Cargo.toml | 4 +- .../example-programs/clock-sysvar/Cargo.toml | 4 +- .../example-programs/hello-solana/Cargo.toml | 4 +- .../simple-transfer/Cargo.toml | 4 +- .../transfer-from-account/Cargo.toml | 4 +- .../write-to-account/Cargo.toml | 4 +- 14 files changed, 579 insertions(+), 579 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 44fa98541e1829..9a3590dfd69599 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "agave-accounts-hash-cache-tool" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ahash 0.8.11", "bytemuck", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "agave-cargo-registry" -version = "2.1.3" +version = "2.1.4" dependencies = [ "clap 2.33.3", "flate2", @@ -109,7 +109,7 @@ dependencies = [ [[package]] name = "agave-geyser-plugin-interface" -version = "2.1.3" +version = "2.1.4" dependencies = [ "log", "solana-sdk", @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "agave-install" -version = "2.1.3" +version = "2.1.4" dependencies = [ "atty", "bincode", @@ -155,7 +155,7 @@ dependencies = [ [[package]] name = "agave-ledger-tool" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_cmd", "bs58", @@ -212,7 +212,7 @@ dependencies = [ [[package]] name = "agave-store-histogram" -version = "2.1.3" +version = "2.1.4" dependencies = [ "clap 2.33.3", "solana-version", @@ -220,7 +220,7 @@ dependencies = [ [[package]] name = "agave-store-tool" -version = "2.1.3" +version = "2.1.4" dependencies = [ "clap 2.33.3", "solana-accounts-db", @@ -230,7 +230,7 @@ dependencies = [ [[package]] name = "agave-transaction-view" -version = "2.1.3" +version = "2.1.4" dependencies = [ "agave-transaction-view", "bincode", @@ -241,7 +241,7 @@ dependencies = [ [[package]] name = "agave-validator" -version = "2.1.3" +version = "2.1.4" dependencies = [ "agave-geyser-plugin-interface", "assert_cmd", @@ -312,7 +312,7 @@ dependencies = [ [[package]] name = "agave-watchtower" -version = "2.1.3" +version = "2.1.4" dependencies = [ "clap 2.33.3", "humantime", @@ -2518,7 +2518,7 @@ dependencies = [ [[package]] name = "gen-headers" -version = "2.1.3" +version = "2.1.4" dependencies = [ "log", "regex", @@ -2526,7 +2526,7 @@ dependencies = [ [[package]] name = "gen-syscall-list" -version = "2.1.3" +version = "2.1.4" dependencies = [ "regex", ] @@ -4487,7 +4487,7 @@ dependencies = [ [[package]] name = "proto" -version = "2.1.3" +version = "2.1.4" dependencies = [ "protobuf-src", "tonic-build", @@ -4767,7 +4767,7 @@ dependencies = [ [[package]] name = "rbpf-cli" -version = "2.1.3" +version = "2.1.4" [[package]] name = "rdrand" @@ -5662,7 +5662,7 @@ dependencies = [ [[package]] name = "solana-account" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "qualifier_attr", @@ -5680,7 +5680,7 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "2.1.3" +version = "2.1.4" dependencies = [ "Inflector", "assert_matches", @@ -5706,7 +5706,7 @@ dependencies = [ [[package]] name = "solana-account-decoder-client-types" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "bs58", @@ -5720,7 +5720,7 @@ dependencies = [ [[package]] name = "solana-account-info" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "serde", @@ -5731,7 +5731,7 @@ dependencies = [ [[package]] name = "solana-accounts-bench" -version = "2.1.3" +version = "2.1.4" dependencies = [ "clap 2.33.3", "log", @@ -5745,7 +5745,7 @@ dependencies = [ [[package]] name = "solana-accounts-cluster-bench" -version = "2.1.3" +version = "2.1.4" dependencies = [ "clap 2.33.3", "log", @@ -5777,7 +5777,7 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ahash 0.8.11", "assert_matches", @@ -5838,7 +5838,7 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "bytemuck", @@ -5855,7 +5855,7 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program-tests" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -5867,14 +5867,14 @@ dependencies = [ [[package]] name = "solana-atomic-u64" -version = "2.1.3" +version = "2.1.4" dependencies = [ "parking_lot 0.12.3", ] [[package]] name = "solana-banking-bench" -version = "2.1.3" +version = "2.1.4" dependencies = [ "clap 3.2.23", "crossbeam-channel", @@ -5898,7 +5898,7 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "borsh 1.5.1", "futures 0.3.31", @@ -5915,7 +5915,7 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -5925,7 +5925,7 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "crossbeam-channel", @@ -5944,7 +5944,7 @@ dependencies = [ [[package]] name = "solana-bench-streamer" -version = "2.1.3" +version = "2.1.4" dependencies = [ "clap 3.2.23", "crossbeam-channel", @@ -5955,7 +5955,7 @@ dependencies = [ [[package]] name = "solana-bench-tps" -version = "2.1.3" +version = "2.1.4" dependencies = [ "chrono", "clap 2.33.3", @@ -6002,7 +6002,7 @@ dependencies = [ [[package]] name = "solana-bincode" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "serde", @@ -6012,7 +6012,7 @@ dependencies = [ [[package]] name = "solana-bloom" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bv", "fnv", @@ -6029,7 +6029,7 @@ dependencies = [ [[package]] name = "solana-bn254" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ark-bn254", "ark-ec", @@ -6046,7 +6046,7 @@ dependencies = [ [[package]] name = "solana-borsh" -version = "2.1.3" +version = "2.1.4" dependencies = [ "borsh 0.10.3", "borsh 1.5.1", @@ -6054,7 +6054,7 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -6084,7 +6084,7 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program-tests" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -6095,7 +6095,7 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bv", "bytemuck", @@ -6115,7 +6115,7 @@ dependencies = [ [[package]] name = "solana-builtins-default-costs" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ahash 0.8.11", "lazy_static", @@ -6135,7 +6135,7 @@ dependencies = [ [[package]] name = "solana-cargo-build-sbf" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_cmd", "bzip2", @@ -6156,7 +6156,7 @@ dependencies = [ [[package]] name = "solana-cargo-test-sbf" -version = "2.1.3" +version = "2.1.4" dependencies = [ "cargo_metadata", "clap 3.2.23", @@ -6168,7 +6168,7 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "chrono", @@ -6186,7 +6186,7 @@ dependencies = [ [[package]] name = "solana-clap-v3-utils" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "chrono", @@ -6205,7 +6205,7 @@ dependencies = [ [[package]] name = "solana-cli" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -6267,7 +6267,7 @@ dependencies = [ [[package]] name = "solana-cli-config" -version = "2.1.3" +version = "2.1.4" dependencies = [ "anyhow", "dirs-next", @@ -6282,7 +6282,7 @@ dependencies = [ [[package]] name = "solana-cli-output" -version = "2.1.3" +version = "2.1.4" dependencies = [ "Inflector", "base64 0.22.1", @@ -6308,7 +6308,7 @@ dependencies = [ [[package]] name = "solana-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "async-trait", "bincode", @@ -6339,7 +6339,7 @@ dependencies = [ [[package]] name = "solana-client-test" -version = "2.1.3" +version = "2.1.4" dependencies = [ "futures-util", "rand 0.8.5", @@ -6368,7 +6368,7 @@ dependencies = [ [[package]] name = "solana-clock" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -6380,7 +6380,7 @@ dependencies = [ [[package]] name = "solana-compute-budget" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-frozen-abi", "solana-sdk", @@ -6388,7 +6388,7 @@ dependencies = [ [[package]] name = "solana-compute-budget-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -6396,7 +6396,7 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "chrono", @@ -6411,7 +6411,7 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "2.1.3" +version = "2.1.4" dependencies = [ "async-trait", "bincode", @@ -6434,7 +6434,7 @@ dependencies = [ [[package]] name = "solana-core" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ahash 0.8.11", "anyhow", @@ -6531,7 +6531,7 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ahash 0.8.11", "itertools 0.12.1", @@ -6557,7 +6557,7 @@ dependencies = [ [[package]] name = "solana-cpi" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-account-info", "solana-define-syscall", @@ -6572,7 +6572,7 @@ dependencies = [ [[package]] name = "solana-curve25519" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bytemuck", "bytemuck_derive", @@ -6583,7 +6583,7 @@ dependencies = [ [[package]] name = "solana-decode-error" -version = "2.1.3" +version = "2.1.4" dependencies = [ "num-derive", "num-traits", @@ -6591,11 +6591,11 @@ dependencies = [ [[package]] name = "solana-define-syscall" -version = "2.1.3" +version = "2.1.4" [[package]] name = "solana-derivation-path" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "derivation-path", @@ -6605,7 +6605,7 @@ dependencies = [ [[package]] name = "solana-dos" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "clap 3.2.23", @@ -6638,7 +6638,7 @@ dependencies = [ [[package]] name = "solana-download-utils" -version = "2.1.3" +version = "2.1.4" dependencies = [ "console", "indicatif", @@ -6650,7 +6650,7 @@ dependencies = [ [[package]] name = "solana-ed25519-program-tests" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "ed25519-dalek", @@ -6661,7 +6661,7 @@ dependencies = [ [[package]] name = "solana-entry" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -6683,7 +6683,7 @@ dependencies = [ [[package]] name = "solana-epoch-schedule" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -6698,7 +6698,7 @@ dependencies = [ [[package]] name = "solana-faucet" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "byteorder", @@ -6720,7 +6720,7 @@ dependencies = [ [[package]] name = "solana-feature-set" -version = "2.1.3" +version = "2.1.4" dependencies = [ "lazy_static", "solana-clock", @@ -6734,7 +6734,7 @@ dependencies = [ [[package]] name = "solana-fee" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-sdk", "solana-svm-transaction", @@ -6742,7 +6742,7 @@ dependencies = [ [[package]] name = "solana-fee-calculator" -version = "2.1.3" +version = "2.1.4" dependencies = [ "log", "serde", @@ -6756,7 +6756,7 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bitflags 2.6.0", "bs58", @@ -6777,7 +6777,7 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "2.1.3" +version = "2.1.4" dependencies = [ "proc-macro2", "quote", @@ -6786,7 +6786,7 @@ dependencies = [ [[package]] name = "solana-genesis" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "bincode", @@ -6813,7 +6813,7 @@ dependencies = [ [[package]] name = "solana-genesis-utils" -version = "2.1.3" +version = "2.1.4" dependencies = [ "log", "solana-accounts-db", @@ -6824,7 +6824,7 @@ dependencies = [ [[package]] name = "solana-geyser-plugin-manager" -version = "2.1.3" +version = "2.1.4" dependencies = [ "agave-geyser-plugin-interface", "bs58", @@ -6849,7 +6849,7 @@ dependencies = [ [[package]] name = "solana-gossip" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -6903,7 +6903,7 @@ dependencies = [ [[package]] name = "solana-hash" -version = "2.1.3" +version = "2.1.4" dependencies = [ "borsh 1.5.1", "bs58", @@ -6922,7 +6922,7 @@ dependencies = [ [[package]] name = "solana-inflation" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -6932,7 +6932,7 @@ dependencies = [ [[package]] name = "solana-inline-spl" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bytemuck", "solana-pubkey", @@ -6940,7 +6940,7 @@ dependencies = [ [[package]] name = "solana-instruction" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "borsh 1.5.1", @@ -6959,7 +6959,7 @@ dependencies = [ [[package]] name = "solana-keygen" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bs58", "clap 3.2.23", @@ -6978,7 +6978,7 @@ dependencies = [ [[package]] name = "solana-last-restart-slot" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -6988,7 +6988,7 @@ dependencies = [ [[package]] name = "solana-lattice-hash" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "blake3", @@ -7001,7 +7001,7 @@ dependencies = [ [[package]] name = "solana-ledger" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -7078,7 +7078,7 @@ dependencies = [ [[package]] name = "solana-loader-v4-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "log", @@ -7094,7 +7094,7 @@ dependencies = [ [[package]] name = "solana-local-cluster" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "crossbeam-channel", @@ -7136,7 +7136,7 @@ dependencies = [ [[package]] name = "solana-log-analyzer" -version = "2.1.3" +version = "2.1.4" dependencies = [ "byte-unit", "clap 3.2.23", @@ -7149,14 +7149,14 @@ dependencies = [ [[package]] name = "solana-log-collector" -version = "2.1.3" +version = "2.1.4" dependencies = [ "log", ] [[package]] name = "solana-logger" -version = "2.1.3" +version = "2.1.4" dependencies = [ "env_logger", "lazy_static", @@ -7165,15 +7165,15 @@ dependencies = [ [[package]] name = "solana-measure" -version = "2.1.3" +version = "2.1.4" [[package]] name = "solana-memory-management" -version = "2.1.3" +version = "2.1.4" [[package]] name = "solana-merkle-root-bench" -version = "2.1.3" +version = "2.1.4" dependencies = [ "clap 2.33.3", "log", @@ -7186,7 +7186,7 @@ dependencies = [ [[package]] name = "solana-merkle-tree" -version = "2.1.3" +version = "2.1.4" dependencies = [ "fast-math", "hex", @@ -7196,7 +7196,7 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "2.1.3" +version = "2.1.4" dependencies = [ "crossbeam-channel", "env_logger", @@ -7212,18 +7212,18 @@ dependencies = [ [[package]] name = "solana-msg" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-define-syscall", ] [[package]] name = "solana-native-token" -version = "2.1.3" +version = "2.1.4" [[package]] name = "solana-net-shaper" -version = "2.1.3" +version = "2.1.4" dependencies = [ "clap 3.2.23", "rand 0.8.5", @@ -7235,7 +7235,7 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "clap 3.2.23", @@ -7261,7 +7261,7 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-notifier" -version = "2.1.3" +version = "2.1.4" dependencies = [ "log", "reqwest", @@ -7271,7 +7271,7 @@ dependencies = [ [[package]] name = "solana-package-metadata" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-package-metadata-macro", "solana-pubkey", @@ -7279,7 +7279,7 @@ dependencies = [ [[package]] name = "solana-package-metadata-macro" -version = "2.1.3" +version = "2.1.4" dependencies = [ "proc-macro2", "quote", @@ -7289,7 +7289,7 @@ dependencies = [ [[package]] name = "solana-packet" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "bitflags 2.6.0", @@ -7305,7 +7305,7 @@ dependencies = [ [[package]] name = "solana-perf" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ahash 0.8.11", "assert_matches", @@ -7336,7 +7336,7 @@ dependencies = [ [[package]] name = "solana-poh" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -7358,7 +7358,7 @@ dependencies = [ [[package]] name = "solana-poh-bench" -version = "2.1.3" +version = "2.1.4" dependencies = [ "clap 3.2.23", "log", @@ -7374,7 +7374,7 @@ dependencies = [ [[package]] name = "solana-poseidon" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ark-bn254", "light-poseidon", @@ -7384,7 +7384,7 @@ dependencies = [ [[package]] name = "solana-precompile-error" -version = "2.1.3" +version = "2.1.4" dependencies = [ "num-traits", "solana-decode-error", @@ -7392,7 +7392,7 @@ dependencies = [ [[package]] name = "solana-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "anyhow", "arbitrary", @@ -7477,7 +7477,7 @@ dependencies = [ [[package]] name = "solana-program-entrypoint" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-account-info", "solana-msg", @@ -7487,7 +7487,7 @@ dependencies = [ [[package]] name = "solana-program-error" -version = "2.1.3" +version = "2.1.4" dependencies = [ "borsh 1.5.1", "num-traits", @@ -7501,7 +7501,7 @@ dependencies = [ [[package]] name = "solana-program-memory" -version = "2.1.3" +version = "2.1.4" dependencies = [ "num-traits", "solana-define-syscall", @@ -7509,18 +7509,18 @@ dependencies = [ [[package]] name = "solana-program-option" -version = "2.1.3" +version = "2.1.4" [[package]] name = "solana-program-pack" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program-error", ] [[package]] name = "solana-program-runtime" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "base64 0.22.1", @@ -7553,7 +7553,7 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "async-trait", @@ -7589,7 +7589,7 @@ dependencies = [ [[package]] name = "solana-pubkey" -version = "2.1.3" +version = "2.1.4" dependencies = [ "anyhow", "arbitrary", @@ -7622,7 +7622,7 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "anyhow", "crossbeam-channel", @@ -7646,7 +7646,7 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "async-lock", "async-trait", @@ -7673,7 +7673,7 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "2.1.3" +version = "2.1.4" dependencies = [ "lazy_static", "num_cpus", @@ -7681,7 +7681,7 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "console", @@ -7701,7 +7701,7 @@ dependencies = [ [[package]] name = "solana-rent" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -7715,7 +7715,7 @@ dependencies = [ [[package]] name = "solana-rpc" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "bincode", @@ -7777,7 +7777,7 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "async-trait", @@ -7808,7 +7808,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "2.1.3" +version = "2.1.4" dependencies = [ "anyhow", "base64 0.22.1", @@ -7831,7 +7831,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "2.1.3" +version = "2.1.4" dependencies = [ "anyhow", "clap 2.33.3", @@ -7848,7 +7848,7 @@ dependencies = [ [[package]] name = "solana-rpc-test" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "bs58", @@ -7876,7 +7876,7 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "2.1.3" +version = "2.1.4" dependencies = [ "agave-transaction-view", "ahash 0.8.11", @@ -7975,7 +7975,7 @@ dependencies = [ [[package]] name = "solana-runtime-transaction" -version = "2.1.3" +version = "2.1.4" dependencies = [ "agave-transaction-view", "bincode", @@ -7993,11 +7993,11 @@ dependencies = [ [[package]] name = "solana-sanitize" -version = "2.1.3" +version = "2.1.4" [[package]] name = "solana-sdk" -version = "2.1.3" +version = "2.1.4" dependencies = [ "anyhow", "assert_matches", @@ -8071,7 +8071,7 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bs58", "proc-macro2", @@ -8081,7 +8081,7 @@ dependencies = [ [[package]] name = "solana-secp256k1-recover" -version = "2.1.3" +version = "2.1.4" dependencies = [ "anyhow", "borsh 1.5.1", @@ -8095,7 +8095,7 @@ dependencies = [ [[package]] name = "solana-secp256r1-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bytemuck", "openssl", @@ -8115,7 +8115,7 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "2.1.3" +version = "2.1.4" dependencies = [ "crossbeam-channel", "log", @@ -8131,7 +8131,7 @@ dependencies = [ [[package]] name = "solana-serde-varint" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "rand 0.8.5", @@ -8142,7 +8142,7 @@ dependencies = [ [[package]] name = "solana-serialize-utils" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "borsh 1.5.1", @@ -8155,7 +8155,7 @@ dependencies = [ [[package]] name = "solana-sha256-hasher" -version = "2.1.3" +version = "2.1.4" dependencies = [ "sha2 0.10.8", "solana-define-syscall", @@ -8164,7 +8164,7 @@ dependencies = [ [[package]] name = "solana-short-vec" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -8176,7 +8176,7 @@ dependencies = [ [[package]] name = "solana-signature" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bs58", "curve25519-dalek 4.1.3", @@ -8193,7 +8193,7 @@ dependencies = [ [[package]] name = "solana-slot-hashes" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -8204,7 +8204,7 @@ dependencies = [ [[package]] name = "solana-slot-history" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bv", "serde", @@ -8214,7 +8214,7 @@ dependencies = [ [[package]] name = "solana-stable-layout" -version = "2.1.3" +version = "2.1.4" dependencies = [ "memoffset 0.9.1", "solana-instruction", @@ -8223,7 +8223,7 @@ dependencies = [ [[package]] name = "solana-stake-accounts" -version = "2.1.3" +version = "2.1.4" dependencies = [ "clap 2.33.3", "solana-clap-utils", @@ -8239,7 +8239,7 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -8259,7 +8259,7 @@ dependencies = [ [[package]] name = "solana-stake-program-tests" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -8272,7 +8272,7 @@ dependencies = [ [[package]] name = "solana-storage-bigtable" -version = "2.1.3" +version = "2.1.4" dependencies = [ "backoff", "bincode", @@ -8304,7 +8304,7 @@ dependencies = [ [[package]] name = "solana-storage-proto" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "bs58", @@ -8320,7 +8320,7 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "async-channel", @@ -8358,7 +8358,7 @@ dependencies = [ [[package]] name = "solana-svm" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "base64 0.22.1", @@ -8427,7 +8427,7 @@ dependencies = [ [[package]] name = "solana-svm-conformance" -version = "2.1.3" +version = "2.1.4" dependencies = [ "prost", "prost-build", @@ -8436,7 +8436,7 @@ dependencies = [ [[package]] name = "solana-svm-example-paytube" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-bpf-loader-program", "solana-client", @@ -8454,21 +8454,21 @@ dependencies = [ [[package]] name = "solana-svm-rent-collector" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-sdk", ] [[package]] name = "solana-svm-transaction" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-sdk", ] [[package]] name = "solana-system-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -8486,14 +8486,14 @@ dependencies = [ [[package]] name = "solana-sysvar-id" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-pubkey", ] [[package]] name = "solana-test-validator" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "bincode", @@ -8524,7 +8524,7 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "log", @@ -8538,7 +8538,7 @@ dependencies = [ [[package]] name = "solana-timings" -version = "2.1.3" +version = "2.1.4" dependencies = [ "eager", "enum-iterator", @@ -8547,7 +8547,7 @@ dependencies = [ [[package]] name = "solana-tokens" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -8581,7 +8581,7 @@ dependencies = [ [[package]] name = "solana-tps-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "log", "serial_test", @@ -8602,7 +8602,7 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "async-trait", "bincode", @@ -8623,7 +8623,7 @@ dependencies = [ [[package]] name = "solana-tpu-client-next" -version = "2.1.3" +version = "2.1.4" dependencies = [ "async-trait", "crossbeam-channel", @@ -8647,7 +8647,7 @@ dependencies = [ [[package]] name = "solana-transaction-dos" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "clap 2.33.3", @@ -8674,7 +8674,7 @@ dependencies = [ [[package]] name = "solana-transaction-error" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -8686,7 +8686,7 @@ dependencies = [ [[package]] name = "solana-transaction-metrics-tracker" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "bincode", @@ -8700,7 +8700,7 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "2.1.3" +version = "2.1.4" dependencies = [ "Inflector", "base64 0.22.1", @@ -8726,7 +8726,7 @@ dependencies = [ [[package]] name = "solana-transaction-status-client-types" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "bincode", @@ -8742,7 +8742,7 @@ dependencies = [ [[package]] name = "solana-turbine" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -8783,7 +8783,7 @@ dependencies = [ [[package]] name = "solana-type-overrides" -version = "2.1.3" +version = "2.1.4" dependencies = [ "futures 0.3.31", "lazy_static", @@ -8793,7 +8793,7 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "async-trait", "solana-connection-cache", @@ -8806,7 +8806,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-logic" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "solana-sdk", @@ -8815,7 +8815,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-pool" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "crossbeam-channel", @@ -8837,7 +8837,7 @@ dependencies = [ [[package]] name = "solana-upload-perf" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde_json", "solana-metrics", @@ -8845,7 +8845,7 @@ dependencies = [ [[package]] name = "solana-version" -version = "2.1.3" +version = "2.1.4" dependencies = [ "semver 1.0.23", "serde", @@ -8859,7 +8859,7 @@ dependencies = [ [[package]] name = "solana-vote" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "itertools 0.12.1", @@ -8875,7 +8875,7 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -8898,7 +8898,7 @@ dependencies = [ [[package]] name = "solana-wen-restart" -version = "2.1.3" +version = "2.1.4" dependencies = [ "anyhow", "assert_matches", @@ -8927,7 +8927,7 @@ dependencies = [ [[package]] name = "solana-zk-elgamal-proof-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bytemuck", "num-derive", @@ -8940,7 +8940,7 @@ dependencies = [ [[package]] name = "solana-zk-keygen" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bs58", "clap 3.2.23", @@ -8957,7 +8957,7 @@ dependencies = [ [[package]] name = "solana-zk-sdk" -version = "2.1.3" +version = "2.1.4" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -8988,7 +8988,7 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bytemuck", "criterion", @@ -9004,7 +9004,7 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program-tests" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bytemuck", "curve25519-dalek 4.1.3", @@ -9016,7 +9016,7 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "2.1.3" +version = "2.1.4" dependencies = [ "aes-gcm-siv", "base64 0.22.1", diff --git a/Cargo.toml b/Cargo.toml index cd056e7746cc5a..ff60d908e5defe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -190,7 +190,7 @@ exclude = ["programs/sbf", "svm/tests/example-programs"] resolver = "2" [workspace.package] -version = "2.1.3" +version = "2.1.4" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" homepage = "https://anza.xyz/" @@ -206,7 +206,7 @@ check-cfg = [ [workspace.dependencies] Inflector = "0.11.4" -agave-transaction-view = { path = "transaction-view", version = "=2.1.3" } +agave-transaction-view = { path = "transaction-view", version = "=2.1.4" } aquamarine = "0.3.3" aes-gcm-siv = "0.11.1" ahash = "0.8.11" @@ -383,152 +383,152 @@ smallvec = "1.13.2" smpl_jwt = "0.7.1" socket2 = "0.5.7" soketto = "0.7" -solana-account = { path = "sdk/account", version = "=2.1.3" } -solana-account-decoder = { path = "account-decoder", version = "=2.1.3" } -solana-account-decoder-client-types = { path = "account-decoder-client-types", version = "=2.1.3" } -solana-account-info = { path = "sdk/account-info", version = "=2.1.3" } -solana-accounts-db = { path = "accounts-db", version = "=2.1.3" } -solana-address-lookup-table-program = { path = "programs/address-lookup-table", version = "=2.1.3" } -solana-atomic-u64 = { path = "sdk/atomic-u64", version = "=2.1.3" } -solana-banks-client = { path = "banks-client", version = "=2.1.3" } -solana-banks-interface = { path = "banks-interface", version = "=2.1.3" } -solana-banks-server = { path = "banks-server", version = "=2.1.3" } -solana-bench-tps = { path = "bench-tps", version = "=2.1.3" } -solana-bincode = { path = "sdk/bincode", version = "=2.1.3" } -solana-bloom = { path = "bloom", version = "=2.1.3" } -solana-bn254 = { path = "curves/bn254", version = "=2.1.3" } -solana-borsh = { path = "sdk/borsh", version = "=2.1.3" } -solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=2.1.3" } -solana-bucket-map = { path = "bucket_map", version = "=2.1.3" } -solana-builtins-default-costs = { path = "builtins-default-costs", version = "=2.1.3" } -agave-cargo-registry = { path = "cargo-registry", version = "=2.1.3" } -solana-clap-utils = { path = "clap-utils", version = "=2.1.3" } -solana-clap-v3-utils = { path = "clap-v3-utils", version = "=2.1.3" } -solana-cli = { path = "cli", version = "=2.1.3" } -solana-cli-config = { path = "cli-config", version = "=2.1.3" } -solana-cli-output = { path = "cli-output", version = "=2.1.3" } -solana-client = { path = "client", version = "=2.1.3" } -solana-clock = { path = "sdk/clock", version = "=2.1.3" } -solana-compute-budget = { path = "compute-budget", version = "=2.1.3" } -solana-compute-budget-program = { path = "programs/compute-budget", version = "=2.1.3" } -solana-config-program = { path = "programs/config", version = "=2.1.3" } -solana-connection-cache = { path = "connection-cache", version = "=2.1.3", default-features = false } -solana-core = { path = "core", version = "=2.1.3" } -solana-cost-model = { path = "cost-model", version = "=2.1.3" } -solana-cpi = { path = "sdk/cpi", version = "=2.1.3" } -solana-curve25519 = { path = "curves/curve25519", version = "=2.1.3" } -solana-decode-error = { path = "sdk/decode-error", version = "=2.1.3" } -solana-define-syscall = { path = "define-syscall", version = "=2.1.3" } -solana-derivation-path = { path = "sdk/derivation-path", version = "=2.1.3" } -solana-download-utils = { path = "download-utils", version = "=2.1.3" } -solana-entry = { path = "entry", version = "=2.1.3" } -solana-program-entrypoint = { path = "sdk/program-entrypoint", version = "=2.1.3" } -solana-epoch-schedule = { path = "sdk/epoch-schedule", version = "=2.1.3" } -solana-faucet = { path = "faucet", version = "=2.1.3" } -solana-feature-set = { path = "sdk/feature-set", version = "=2.1.3" } -solana-fee-calculator = { path = "sdk/fee-calculator", version = "=2.1.3" } -solana-fee = { path = "fee", version = "=2.1.3" } -solana-frozen-abi = { path = "frozen-abi", version = "=2.1.3" } -solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=2.1.3" } -solana-tps-client = { path = "tps-client", version = "=2.1.3" } -solana-genesis = { path = "genesis", version = "=2.1.3" } -solana-genesis-utils = { path = "genesis-utils", version = "=2.1.3" } -agave-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=2.1.3" } -solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=2.1.3" } -solana-gossip = { path = "gossip", version = "=2.1.3" } -solana-hash = { path = "sdk/hash", version = "=2.1.3", default-features = false } -solana-inflation = { path = "sdk/inflation", version = "=2.1.3" } -solana-inline-spl = { path = "inline-spl", version = "=2.1.3" } -solana-instruction = { path = "sdk/instruction", version = "=2.1.3", default-features = false } -solana-last-restart-slot = { path = "sdk/last-restart-slot", version = "=2.1.3" } -solana-lattice-hash = { path = "lattice-hash", version = "=2.1.3" } -solana-ledger = { path = "ledger", version = "=2.1.3" } -solana-loader-v4-program = { path = "programs/loader-v4", version = "=2.1.3" } -solana-local-cluster = { path = "local-cluster", version = "=2.1.3" } -solana-log-collector = { path = "log-collector", version = "=2.1.3" } -solana-logger = { path = "logger", version = "=2.1.3" } -solana-measure = { path = "measure", version = "=2.1.3" } -solana-merkle-tree = { path = "merkle-tree", version = "=2.1.3" } -solana-metrics = { path = "metrics", version = "=2.1.3" } -solana-msg = { path = "sdk/msg", version = "=2.1.3" } -solana-native-token = { path = "sdk/native-token", version = "=2.1.3" } -solana-net-utils = { path = "net-utils", version = "=2.1.3" } +solana-account = { path = "sdk/account", version = "=2.1.4" } +solana-account-decoder = { path = "account-decoder", version = "=2.1.4" } +solana-account-decoder-client-types = { path = "account-decoder-client-types", version = "=2.1.4" } +solana-account-info = { path = "sdk/account-info", version = "=2.1.4" } +solana-accounts-db = { path = "accounts-db", version = "=2.1.4" } +solana-address-lookup-table-program = { path = "programs/address-lookup-table", version = "=2.1.4" } +solana-atomic-u64 = { path = "sdk/atomic-u64", version = "=2.1.4" } +solana-banks-client = { path = "banks-client", version = "=2.1.4" } +solana-banks-interface = { path = "banks-interface", version = "=2.1.4" } +solana-banks-server = { path = "banks-server", version = "=2.1.4" } +solana-bench-tps = { path = "bench-tps", version = "=2.1.4" } +solana-bincode = { path = "sdk/bincode", version = "=2.1.4" } +solana-bloom = { path = "bloom", version = "=2.1.4" } +solana-bn254 = { path = "curves/bn254", version = "=2.1.4" } +solana-borsh = { path = "sdk/borsh", version = "=2.1.4" } +solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=2.1.4" } +solana-bucket-map = { path = "bucket_map", version = "=2.1.4" } +solana-builtins-default-costs = { path = "builtins-default-costs", version = "=2.1.4" } +agave-cargo-registry = { path = "cargo-registry", version = "=2.1.4" } +solana-clap-utils = { path = "clap-utils", version = "=2.1.4" } +solana-clap-v3-utils = { path = "clap-v3-utils", version = "=2.1.4" } +solana-cli = { path = "cli", version = "=2.1.4" } +solana-cli-config = { path = "cli-config", version = "=2.1.4" } +solana-cli-output = { path = "cli-output", version = "=2.1.4" } +solana-client = { path = "client", version = "=2.1.4" } +solana-clock = { path = "sdk/clock", version = "=2.1.4" } +solana-compute-budget = { path = "compute-budget", version = "=2.1.4" } +solana-compute-budget-program = { path = "programs/compute-budget", version = "=2.1.4" } +solana-config-program = { path = "programs/config", version = "=2.1.4" } +solana-connection-cache = { path = "connection-cache", version = "=2.1.4", default-features = false } +solana-core = { path = "core", version = "=2.1.4" } +solana-cost-model = { path = "cost-model", version = "=2.1.4" } +solana-cpi = { path = "sdk/cpi", version = "=2.1.4" } +solana-curve25519 = { path = "curves/curve25519", version = "=2.1.4" } +solana-decode-error = { path = "sdk/decode-error", version = "=2.1.4" } +solana-define-syscall = { path = "define-syscall", version = "=2.1.4" } +solana-derivation-path = { path = "sdk/derivation-path", version = "=2.1.4" } +solana-download-utils = { path = "download-utils", version = "=2.1.4" } +solana-entry = { path = "entry", version = "=2.1.4" } +solana-program-entrypoint = { path = "sdk/program-entrypoint", version = "=2.1.4" } +solana-epoch-schedule = { path = "sdk/epoch-schedule", version = "=2.1.4" } +solana-faucet = { path = "faucet", version = "=2.1.4" } +solana-feature-set = { path = "sdk/feature-set", version = "=2.1.4" } +solana-fee-calculator = { path = "sdk/fee-calculator", version = "=2.1.4" } +solana-fee = { path = "fee", version = "=2.1.4" } +solana-frozen-abi = { path = "frozen-abi", version = "=2.1.4" } +solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=2.1.4" } +solana-tps-client = { path = "tps-client", version = "=2.1.4" } +solana-genesis = { path = "genesis", version = "=2.1.4" } +solana-genesis-utils = { path = "genesis-utils", version = "=2.1.4" } +agave-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=2.1.4" } +solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=2.1.4" } +solana-gossip = { path = "gossip", version = "=2.1.4" } +solana-hash = { path = "sdk/hash", version = "=2.1.4", default-features = false } +solana-inflation = { path = "sdk/inflation", version = "=2.1.4" } +solana-inline-spl = { path = "inline-spl", version = "=2.1.4" } +solana-instruction = { path = "sdk/instruction", version = "=2.1.4", default-features = false } +solana-last-restart-slot = { path = "sdk/last-restart-slot", version = "=2.1.4" } +solana-lattice-hash = { path = "lattice-hash", version = "=2.1.4" } +solana-ledger = { path = "ledger", version = "=2.1.4" } +solana-loader-v4-program = { path = "programs/loader-v4", version = "=2.1.4" } +solana-local-cluster = { path = "local-cluster", version = "=2.1.4" } +solana-log-collector = { path = "log-collector", version = "=2.1.4" } +solana-logger = { path = "logger", version = "=2.1.4" } +solana-measure = { path = "measure", version = "=2.1.4" } +solana-merkle-tree = { path = "merkle-tree", version = "=2.1.4" } +solana-metrics = { path = "metrics", version = "=2.1.4" } +solana-msg = { path = "sdk/msg", version = "=2.1.4" } +solana-native-token = { path = "sdk/native-token", version = "=2.1.4" } +solana-net-utils = { path = "net-utils", version = "=2.1.4" } solana-nohash-hasher = "0.2.1" -solana-notifier = { path = "notifier", version = "=2.1.3" } -solana-package-metadata = { path = "sdk/package-metadata", version = "=2.1.3" } -solana-package-metadata-macro = { path = "sdk/package-metadata-macro", version = "=2.1.3" } -solana-packet = { path = "sdk/packet", version = "=2.1.3" } -solana-perf = { path = "perf", version = "=2.1.3" } -solana-poh = { path = "poh", version = "=2.1.3" } -solana-poseidon = { path = "poseidon", version = "=2.1.3" } -solana-precompile-error = { path = "sdk/precompile-error", version = "=2.1.3" } -solana-program = { path = "sdk/program", version = "=2.1.3", default-features = false } -solana-program-error = { path = "sdk/program-error", version = "=2.1.3" } -solana-program-memory = { path = "sdk/program-memory", version = "=2.1.3" } -solana-program-option = { path = "sdk/program-option", version = "=2.1.3" } -solana-program-pack = { path = "sdk/program-pack", version = "=2.1.3" } -solana-program-runtime = { path = "program-runtime", version = "=2.1.3" } -solana-program-test = { path = "program-test", version = "=2.1.3" } -solana-pubkey = { path = "sdk/pubkey", version = "=2.1.3", default-features = false } -solana-pubsub-client = { path = "pubsub-client", version = "=2.1.3" } -solana-quic-client = { path = "quic-client", version = "=2.1.3" } -solana-rayon-threadlimit = { path = "rayon-threadlimit", version = "=2.1.3" } -solana-remote-wallet = { path = "remote-wallet", version = "=2.1.3", default-features = false } -solana-rent = { path = "sdk/rent", version = "=2.1.3", default-features = false } -solana-sanitize = { path = "sdk/sanitize", version = "=2.1.3" } -solana-secp256r1-program = { path = "sdk/secp256r1-program", version = "=2.1.3", default-features = false } -solana-serde-varint = { path = "sdk/serde-varint", version = "=2.1.3" } -solana-serialize-utils = { path = "sdk/serialize-utils", version = "=2.1.3" } -solana-sha256-hasher = { path = "sdk/sha256-hasher", version = "=2.1.3" } -solana-signature = { path = "sdk/signature", version = "=2.1.3", default-features = false } -solana-slot-hashes = { path = "sdk/slot-hashes", version = "=2.1.3" } -solana-slot-history = { path = "sdk/slot-history", version = "=2.1.3" } -solana-timings = { path = "timings", version = "=2.1.3" } -solana-unified-scheduler-logic = { path = "unified-scheduler-logic", version = "=2.1.3" } -solana-unified-scheduler-pool = { path = "unified-scheduler-pool", version = "=2.1.3" } -solana-rpc = { path = "rpc", version = "=2.1.3" } -solana-rpc-client = { path = "rpc-client", version = "=2.1.3", default-features = false } -solana-rpc-client-api = { path = "rpc-client-api", version = "=2.1.3" } -solana-rpc-client-nonce-utils = { path = "rpc-client-nonce-utils", version = "=2.1.3" } -solana-runtime = { path = "runtime", version = "=2.1.3" } -solana-runtime-transaction = { path = "runtime-transaction", version = "=2.1.3" } -solana-sdk = { path = "sdk", version = "=2.1.3" } -solana-sdk-macro = { path = "sdk/macro", version = "=2.1.3" } -solana-secp256k1-recover = { path = "curves/secp256k1-recover", version = "=2.1.3", default-features = false } -solana-send-transaction-service = { path = "send-transaction-service", version = "=2.1.3" } -solana-short-vec = { path = "short-vec", version = "=2.1.3" } -solana-stable-layout = { path = "sdk/stable-layout", version = "=2.1.3" } -solana-stake-program = { path = "programs/stake", version = "=2.1.3" } -solana-storage-bigtable = { path = "storage-bigtable", version = "=2.1.3" } -solana-storage-proto = { path = "storage-proto", version = "=2.1.3" } -solana-streamer = { path = "streamer", version = "=2.1.3" } -solana-svm = { path = "svm", version = "=2.1.3" } -solana-svm-conformance = { path = "svm-conformance", version = "=2.1.3" } -solana-svm-example-paytube = { path = "svm/examples/paytube", version = "=2.1.3" } -solana-svm-rent-collector = { path = "svm-rent-collector", version = "=2.1.3" } -solana-svm-transaction = { path = "svm-transaction", version = "=2.1.3" } -solana-system-program = { path = "programs/system", version = "=2.1.3" } -solana-sysvar-id = { path = "sdk/sysvar-id", version = "=2.1.3" } -solana-test-validator = { path = "test-validator", version = "=2.1.3" } -solana-thin-client = { path = "thin-client", version = "=2.1.3" } -solana-transaction-error = { path = "sdk/transaction-error", version = "=2.1.3" } -solana-tpu-client = { path = "tpu-client", version = "=2.1.3", default-features = false } -solana-tpu-client-next = { path = "tpu-client-next", version = "=2.1.3" } -solana-transaction-status = { path = "transaction-status", version = "=2.1.3" } -solana-transaction-status-client-types = { path = "transaction-status-client-types", version = "=2.1.3" } -solana-transaction-metrics-tracker = { path = "transaction-metrics-tracker", version = "=2.1.3" } -solana-turbine = { path = "turbine", version = "=2.1.3" } -solana-type-overrides = { path = "type-overrides", version = "=2.1.3" } -solana-udp-client = { path = "udp-client", version = "=2.1.3" } -solana-version = { path = "version", version = "=2.1.3" } -solana-vote = { path = "vote", version = "=2.1.3" } -solana-vote-program = { path = "programs/vote", version = "=2.1.3" } -solana-wen-restart = { path = "wen-restart", version = "=2.1.3" } -solana-zk-elgamal-proof-program = { path = "programs/zk-elgamal-proof", version = "=2.1.3" } -solana-zk-keygen = { path = "zk-keygen", version = "=2.1.3" } -solana-zk-sdk = { path = "zk-sdk", version = "=2.1.3" } -solana-zk-token-proof-program = { path = "programs/zk-token-proof", version = "=2.1.3" } -solana-zk-token-sdk = { path = "zk-token-sdk", version = "=2.1.3" } +solana-notifier = { path = "notifier", version = "=2.1.4" } +solana-package-metadata = { path = "sdk/package-metadata", version = "=2.1.4" } +solana-package-metadata-macro = { path = "sdk/package-metadata-macro", version = "=2.1.4" } +solana-packet = { path = "sdk/packet", version = "=2.1.4" } +solana-perf = { path = "perf", version = "=2.1.4" } +solana-poh = { path = "poh", version = "=2.1.4" } +solana-poseidon = { path = "poseidon", version = "=2.1.4" } +solana-precompile-error = { path = "sdk/precompile-error", version = "=2.1.4" } +solana-program = { path = "sdk/program", version = "=2.1.4", default-features = false } +solana-program-error = { path = "sdk/program-error", version = "=2.1.4" } +solana-program-memory = { path = "sdk/program-memory", version = "=2.1.4" } +solana-program-option = { path = "sdk/program-option", version = "=2.1.4" } +solana-program-pack = { path = "sdk/program-pack", version = "=2.1.4" } +solana-program-runtime = { path = "program-runtime", version = "=2.1.4" } +solana-program-test = { path = "program-test", version = "=2.1.4" } +solana-pubkey = { path = "sdk/pubkey", version = "=2.1.4", default-features = false } +solana-pubsub-client = { path = "pubsub-client", version = "=2.1.4" } +solana-quic-client = { path = "quic-client", version = "=2.1.4" } +solana-rayon-threadlimit = { path = "rayon-threadlimit", version = "=2.1.4" } +solana-remote-wallet = { path = "remote-wallet", version = "=2.1.4", default-features = false } +solana-rent = { path = "sdk/rent", version = "=2.1.4", default-features = false } +solana-sanitize = { path = "sdk/sanitize", version = "=2.1.4" } +solana-secp256r1-program = { path = "sdk/secp256r1-program", version = "=2.1.4", default-features = false } +solana-serde-varint = { path = "sdk/serde-varint", version = "=2.1.4" } +solana-serialize-utils = { path = "sdk/serialize-utils", version = "=2.1.4" } +solana-sha256-hasher = { path = "sdk/sha256-hasher", version = "=2.1.4" } +solana-signature = { path = "sdk/signature", version = "=2.1.4", default-features = false } +solana-slot-hashes = { path = "sdk/slot-hashes", version = "=2.1.4" } +solana-slot-history = { path = "sdk/slot-history", version = "=2.1.4" } +solana-timings = { path = "timings", version = "=2.1.4" } +solana-unified-scheduler-logic = { path = "unified-scheduler-logic", version = "=2.1.4" } +solana-unified-scheduler-pool = { path = "unified-scheduler-pool", version = "=2.1.4" } +solana-rpc = { path = "rpc", version = "=2.1.4" } +solana-rpc-client = { path = "rpc-client", version = "=2.1.4", default-features = false } +solana-rpc-client-api = { path = "rpc-client-api", version = "=2.1.4" } +solana-rpc-client-nonce-utils = { path = "rpc-client-nonce-utils", version = "=2.1.4" } +solana-runtime = { path = "runtime", version = "=2.1.4" } +solana-runtime-transaction = { path = "runtime-transaction", version = "=2.1.4" } +solana-sdk = { path = "sdk", version = "=2.1.4" } +solana-sdk-macro = { path = "sdk/macro", version = "=2.1.4" } +solana-secp256k1-recover = { path = "curves/secp256k1-recover", version = "=2.1.4", default-features = false } +solana-send-transaction-service = { path = "send-transaction-service", version = "=2.1.4" } +solana-short-vec = { path = "short-vec", version = "=2.1.4" } +solana-stable-layout = { path = "sdk/stable-layout", version = "=2.1.4" } +solana-stake-program = { path = "programs/stake", version = "=2.1.4" } +solana-storage-bigtable = { path = "storage-bigtable", version = "=2.1.4" } +solana-storage-proto = { path = "storage-proto", version = "=2.1.4" } +solana-streamer = { path = "streamer", version = "=2.1.4" } +solana-svm = { path = "svm", version = "=2.1.4" } +solana-svm-conformance = { path = "svm-conformance", version = "=2.1.4" } +solana-svm-example-paytube = { path = "svm/examples/paytube", version = "=2.1.4" } +solana-svm-rent-collector = { path = "svm-rent-collector", version = "=2.1.4" } +solana-svm-transaction = { path = "svm-transaction", version = "=2.1.4" } +solana-system-program = { path = "programs/system", version = "=2.1.4" } +solana-sysvar-id = { path = "sdk/sysvar-id", version = "=2.1.4" } +solana-test-validator = { path = "test-validator", version = "=2.1.4" } +solana-thin-client = { path = "thin-client", version = "=2.1.4" } +solana-transaction-error = { path = "sdk/transaction-error", version = "=2.1.4" } +solana-tpu-client = { path = "tpu-client", version = "=2.1.4", default-features = false } +solana-tpu-client-next = { path = "tpu-client-next", version = "=2.1.4" } +solana-transaction-status = { path = "transaction-status", version = "=2.1.4" } +solana-transaction-status-client-types = { path = "transaction-status-client-types", version = "=2.1.4" } +solana-transaction-metrics-tracker = { path = "transaction-metrics-tracker", version = "=2.1.4" } +solana-turbine = { path = "turbine", version = "=2.1.4" } +solana-type-overrides = { path = "type-overrides", version = "=2.1.4" } +solana-udp-client = { path = "udp-client", version = "=2.1.4" } +solana-version = { path = "version", version = "=2.1.4" } +solana-vote = { path = "vote", version = "=2.1.4" } +solana-vote-program = { path = "programs/vote", version = "=2.1.4" } +solana-wen-restart = { path = "wen-restart", version = "=2.1.4" } +solana-zk-elgamal-proof-program = { path = "programs/zk-elgamal-proof", version = "=2.1.4" } +solana-zk-keygen = { path = "zk-keygen", version = "=2.1.4" } +solana-zk-sdk = { path = "zk-sdk", version = "=2.1.4" } +solana-zk-token-proof-program = { path = "programs/zk-token-proof", version = "=2.1.4" } +solana-zk-token-sdk = { path = "zk-token-sdk", version = "=2.1.4" } solana_rbpf = "=0.8.5" spl-associated-token-account = "=4.0.0" spl-instruction-padding = "0.2" diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index 37bf7e462775ed..65f10f245a3abb 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "agave-geyser-plugin-interface" -version = "2.1.3" +version = "2.1.4" dependencies = [ "log", "solana-sdk", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "agave-transaction-view" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-sdk", "solana-svm-transaction", @@ -83,7 +83,7 @@ dependencies = [ [[package]] name = "agave-validator" -version = "2.1.3" +version = "2.1.4" dependencies = [ "agave-geyser-plugin-interface", "chrono", @@ -4725,7 +4725,7 @@ dependencies = [ [[package]] name = "solana-account" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "qualifier_attr", @@ -4738,7 +4738,7 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "2.1.3" +version = "2.1.4" dependencies = [ "Inflector", "base64 0.22.1", @@ -4762,7 +4762,7 @@ dependencies = [ [[package]] name = "solana-account-decoder-client-types" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "bs58", @@ -4776,7 +4776,7 @@ dependencies = [ [[package]] name = "solana-account-info" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "serde", @@ -4787,7 +4787,7 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ahash 0.8.11", "bincode", @@ -4831,7 +4831,7 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "bytemuck", @@ -4848,14 +4848,14 @@ dependencies = [ [[package]] name = "solana-atomic-u64" -version = "2.1.3" +version = "2.1.4" dependencies = [ "parking_lot 0.12.2", ] [[package]] name = "solana-banks-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "borsh 1.5.1", "futures 0.3.31", @@ -4870,7 +4870,7 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -4880,7 +4880,7 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "crossbeam-channel", @@ -4899,7 +4899,7 @@ dependencies = [ [[package]] name = "solana-bincode" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "serde", @@ -4908,7 +4908,7 @@ dependencies = [ [[package]] name = "solana-bloom" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bv", "fnv", @@ -4922,7 +4922,7 @@ dependencies = [ [[package]] name = "solana-bn254" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ark-bn254", "ark-ec", @@ -4935,7 +4935,7 @@ dependencies = [ [[package]] name = "solana-borsh" -version = "2.1.3" +version = "2.1.4" dependencies = [ "borsh 0.10.3", "borsh 1.5.1", @@ -4943,7 +4943,7 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "byteorder 1.5.0", @@ -4968,7 +4968,7 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bv", "bytemuck", @@ -4985,7 +4985,7 @@ dependencies = [ [[package]] name = "solana-builtins-default-costs" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ahash 0.8.11", "lazy_static", @@ -5003,7 +5003,7 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "2.1.3" +version = "2.1.4" dependencies = [ "chrono", "clap", @@ -5019,7 +5019,7 @@ dependencies = [ [[package]] name = "solana-cli-config" -version = "2.1.3" +version = "2.1.4" dependencies = [ "dirs-next", "lazy_static", @@ -5033,7 +5033,7 @@ dependencies = [ [[package]] name = "solana-cli-output" -version = "2.1.3" +version = "2.1.4" dependencies = [ "Inflector", "base64 0.22.1", @@ -5058,7 +5058,7 @@ dependencies = [ [[package]] name = "solana-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "async-trait", "bincode", @@ -5088,7 +5088,7 @@ dependencies = [ [[package]] name = "solana-clock" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -5098,14 +5098,14 @@ dependencies = [ [[package]] name = "solana-compute-budget" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-sdk", ] [[package]] name = "solana-compute-budget-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -5113,7 +5113,7 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "chrono", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "2.1.3" +version = "2.1.4" dependencies = [ "async-trait", "bincode", @@ -5146,7 +5146,7 @@ dependencies = [ [[package]] name = "solana-core" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ahash 0.8.11", "anyhow", @@ -5230,7 +5230,7 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ahash 0.8.11", "lazy_static", @@ -5247,7 +5247,7 @@ dependencies = [ [[package]] name = "solana-cpi" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-account-info", "solana-define-syscall", @@ -5259,7 +5259,7 @@ dependencies = [ [[package]] name = "solana-curve25519" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bytemuck", "bytemuck_derive", @@ -5270,18 +5270,18 @@ dependencies = [ [[package]] name = "solana-decode-error" -version = "2.1.3" +version = "2.1.4" dependencies = [ "num-traits", ] [[package]] name = "solana-define-syscall" -version = "2.1.3" +version = "2.1.4" [[package]] name = "solana-derivation-path" -version = "2.1.3" +version = "2.1.4" dependencies = [ "derivation-path", "qstring", @@ -5290,7 +5290,7 @@ dependencies = [ [[package]] name = "solana-download-utils" -version = "2.1.3" +version = "2.1.4" dependencies = [ "console", "indicatif", @@ -5302,7 +5302,7 @@ dependencies = [ [[package]] name = "solana-entry" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "crossbeam-channel", @@ -5322,7 +5322,7 @@ dependencies = [ [[package]] name = "solana-epoch-schedule" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -5332,7 +5332,7 @@ dependencies = [ [[package]] name = "solana-faucet" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "byteorder 1.5.0", @@ -5354,7 +5354,7 @@ dependencies = [ [[package]] name = "solana-feature-set" -version = "2.1.3" +version = "2.1.4" dependencies = [ "lazy_static", "solana-clock", @@ -5366,7 +5366,7 @@ dependencies = [ [[package]] name = "solana-fee" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-sdk", "solana-svm-transaction", @@ -5374,7 +5374,7 @@ dependencies = [ [[package]] name = "solana-fee-calculator" -version = "2.1.3" +version = "2.1.4" dependencies = [ "log", "serde", @@ -5383,7 +5383,7 @@ dependencies = [ [[package]] name = "solana-genesis-utils" -version = "2.1.3" +version = "2.1.4" dependencies = [ "log", "solana-accounts-db", @@ -5394,7 +5394,7 @@ dependencies = [ [[package]] name = "solana-geyser-plugin-manager" -version = "2.1.3" +version = "2.1.4" dependencies = [ "agave-geyser-plugin-interface", "bs58", @@ -5419,7 +5419,7 @@ dependencies = [ [[package]] name = "solana-gossip" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -5468,7 +5468,7 @@ dependencies = [ [[package]] name = "solana-hash" -version = "2.1.3" +version = "2.1.4" dependencies = [ "borsh 1.5.1", "bs58", @@ -5484,7 +5484,7 @@ dependencies = [ [[package]] name = "solana-inflation" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -5492,7 +5492,7 @@ dependencies = [ [[package]] name = "solana-inline-spl" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bytemuck", "solana-pubkey", @@ -5500,7 +5500,7 @@ dependencies = [ [[package]] name = "solana-instruction" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "borsh 1.5.1", @@ -5516,7 +5516,7 @@ dependencies = [ [[package]] name = "solana-last-restart-slot" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -5526,7 +5526,7 @@ dependencies = [ [[package]] name = "solana-lattice-hash" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "blake3", @@ -5536,7 +5536,7 @@ dependencies = [ [[package]] name = "solana-ledger" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "bincode", @@ -5607,7 +5607,7 @@ dependencies = [ [[package]] name = "solana-loader-v4-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "log", "solana-bpf-loader-program", @@ -5622,14 +5622,14 @@ dependencies = [ [[package]] name = "solana-log-collector" -version = "2.1.3" +version = "2.1.4" dependencies = [ "log", ] [[package]] name = "solana-logger" -version = "2.1.3" +version = "2.1.4" dependencies = [ "env_logger", "lazy_static", @@ -5638,11 +5638,11 @@ dependencies = [ [[package]] name = "solana-measure" -version = "2.1.3" +version = "2.1.4" [[package]] name = "solana-merkle-tree" -version = "2.1.3" +version = "2.1.4" dependencies = [ "fast-math", "solana-hash", @@ -5651,7 +5651,7 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "2.1.3" +version = "2.1.4" dependencies = [ "crossbeam-channel", "gethostname", @@ -5664,18 +5664,18 @@ dependencies = [ [[package]] name = "solana-msg" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-define-syscall", ] [[package]] name = "solana-native-token" -version = "2.1.3" +version = "2.1.4" [[package]] name = "solana-net-utils" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "crossbeam-channel", @@ -5698,7 +5698,7 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-packet" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "bitflags 2.6.0", @@ -5710,7 +5710,7 @@ dependencies = [ [[package]] name = "solana-perf" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ahash 0.8.11", "bincode", @@ -5735,7 +5735,7 @@ dependencies = [ [[package]] name = "solana-poh" -version = "2.1.3" +version = "2.1.4" dependencies = [ "core_affinity", "crossbeam-channel", @@ -5751,7 +5751,7 @@ dependencies = [ [[package]] name = "solana-poseidon" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ark-bn254", "light-poseidon", @@ -5761,7 +5761,7 @@ dependencies = [ [[package]] name = "solana-precompile-error" -version = "2.1.3" +version = "2.1.4" dependencies = [ "num-traits", "solana-decode-error", @@ -5769,7 +5769,7 @@ dependencies = [ [[package]] name = "solana-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "bincode", @@ -5840,7 +5840,7 @@ dependencies = [ [[package]] name = "solana-program-entrypoint" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-account-info", "solana-msg", @@ -5850,7 +5850,7 @@ dependencies = [ [[package]] name = "solana-program-error" -version = "2.1.3" +version = "2.1.4" dependencies = [ "borsh 1.5.1", "num-traits", @@ -5864,7 +5864,7 @@ dependencies = [ [[package]] name = "solana-program-memory" -version = "2.1.3" +version = "2.1.4" dependencies = [ "num-traits", "solana-define-syscall", @@ -5872,18 +5872,18 @@ dependencies = [ [[package]] name = "solana-program-option" -version = "2.1.3" +version = "2.1.4" [[package]] name = "solana-program-pack" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program-error", ] [[package]] name = "solana-program-runtime" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "bincode", @@ -5911,7 +5911,7 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "async-trait", @@ -5945,7 +5945,7 @@ dependencies = [ [[package]] name = "solana-pubkey" -version = "2.1.3" +version = "2.1.4" dependencies = [ "borsh 0.10.3", "borsh 1.5.1", @@ -5970,7 +5970,7 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "crossbeam-channel", "futures-util", @@ -5993,7 +5993,7 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "async-lock", "async-trait", @@ -6017,7 +6017,7 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "2.1.3" +version = "2.1.4" dependencies = [ "lazy_static", "num_cpus", @@ -6025,7 +6025,7 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "2.1.3" +version = "2.1.4" dependencies = [ "console", "dialoguer", @@ -6043,7 +6043,7 @@ dependencies = [ [[package]] name = "solana-rent" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -6053,7 +6053,7 @@ dependencies = [ [[package]] name = "solana-rpc" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "bincode", @@ -6111,7 +6111,7 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "async-trait", "base64 0.22.1", @@ -6136,7 +6136,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "2.1.3" +version = "2.1.4" dependencies = [ "anyhow", "base64 0.22.1", @@ -6158,7 +6158,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-rpc-client", "solana-sdk", @@ -6167,7 +6167,7 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "2.1.3" +version = "2.1.4" dependencies = [ "ahash 0.8.11", "aquamarine", @@ -6254,7 +6254,7 @@ dependencies = [ [[package]] name = "solana-runtime-transaction" -version = "2.1.3" +version = "2.1.4" dependencies = [ "agave-transaction-view", "log", @@ -6268,11 +6268,11 @@ dependencies = [ [[package]] name = "solana-sanitize" -version = "2.1.3" +version = "2.1.4" [[package]] name = "solana-sbf-programs" -version = "2.1.3" +version = "2.1.4" dependencies = [ "agave-validator", "bincode", @@ -6314,7 +6314,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-128bit" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", "solana-sbf-rust-128bit-dep", @@ -6322,21 +6322,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-128bit-dep" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-alloc" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-alt-bn128" -version = "2.1.3" +version = "2.1.4" dependencies = [ "array-bytes", "solana-bn254", @@ -6345,7 +6345,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-alt-bn128-compression" -version = "2.1.3" +version = "2.1.4" dependencies = [ "array-bytes", "solana-bn254", @@ -6354,7 +6354,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-big-mod-exp" -version = "2.1.3" +version = "2.1.4" dependencies = [ "array-bytes", "serde", @@ -6365,7 +6365,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-call-args" -version = "2.1.3" +version = "2.1.4" dependencies = [ "borsh 1.5.1", "solana-program", @@ -6373,21 +6373,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-call-depth" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-caller-access" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-curve25519" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-curve25519", "solana-program", @@ -6396,14 +6396,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-custom-heap" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-dep-crate" -version = "2.1.3" +version = "2.1.4" dependencies = [ "byteorder 1.5.0", "solana-program", @@ -6411,21 +6411,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-deprecated-loader" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-dup-accounts" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-error-handling" -version = "2.1.3" +version = "2.1.4" dependencies = [ "num-derive", "num-traits", @@ -6436,42 +6436,42 @@ dependencies = [ [[package]] name = "solana-sbf-rust-external-spend" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-finalize" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-get-minimum-delegation" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-inner_instruction_alignment_check" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-instruction-introspection" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", "solana-sbf-rust-invoke-dep", @@ -6481,32 +6481,32 @@ dependencies = [ [[package]] name = "solana-sbf-rust-invoke-and-error" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke-and-ok" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke-and-return" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke-dep" -version = "2.1.3" +version = "2.1.4" [[package]] name = "solana-sbf-rust-invoked" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", "solana-sbf-rust-invoked-dep", @@ -6514,28 +6514,28 @@ dependencies = [ [[package]] name = "solana-sbf-rust-invoked-dep" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-iter" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-log-data" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-many-args" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", "solana-sbf-rust-many-args-dep", @@ -6543,14 +6543,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-many-args-dep" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-mem" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", "solana-sbf-rust-mem-dep", @@ -6558,14 +6558,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-mem-dep" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-membuiltins" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", "solana-sbf-rust-mem-dep", @@ -6573,21 +6573,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-noop" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-panic" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-param-passing" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", "solana-sbf-rust-param-passing-dep", @@ -6595,14 +6595,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-param-passing-dep" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-poseidon" -version = "2.1.3" +version = "2.1.4" dependencies = [ "array-bytes", "solana-poseidon", @@ -6611,7 +6611,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-rand" -version = "2.1.3" +version = "2.1.4" dependencies = [ "getrandom 0.2.10", "rand 0.8.5", @@ -6620,7 +6620,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-realloc" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", "solana-sbf-rust-realloc-dep", @@ -6628,14 +6628,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-realloc-dep" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-realloc-invoke" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", "solana-sbf-rust-realloc-dep", @@ -6644,39 +6644,39 @@ dependencies = [ [[package]] name = "solana-sbf-rust-realloc-invoke-dep" -version = "2.1.3" +version = "2.1.4" [[package]] name = "solana-sbf-rust-remaining-compute-units" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-ro-account_modify" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-ro-modify" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-sanity" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-secp256k1-recover" -version = "2.1.3" +version = "2.1.4" dependencies = [ "libsecp256k1 0.7.0", "solana-program", @@ -6685,7 +6685,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-sha" -version = "2.1.3" +version = "2.1.4" dependencies = [ "blake3", "solana-program", @@ -6693,42 +6693,42 @@ dependencies = [ [[package]] name = "solana-sbf-rust-sibling-inner-instructions" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-sibling-instructions" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-simulation" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-spoof1" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-spoof1-system" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-sysvar" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "solana-program", @@ -6736,28 +6736,28 @@ dependencies = [ [[package]] name = "solana-sbf-rust-upgradeable" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-upgraded" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-syscall-get-epoch-stake" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-program", ] [[package]] name = "solana-sdk" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "bitflags 2.6.0", @@ -6820,7 +6820,7 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bs58", "proc-macro2", @@ -6830,7 +6830,7 @@ dependencies = [ [[package]] name = "solana-secp256k1-recover" -version = "2.1.3" +version = "2.1.4" dependencies = [ "borsh 1.5.1", "libsecp256k1 0.6.0", @@ -6840,7 +6840,7 @@ dependencies = [ [[package]] name = "solana-secp256r1-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bytemuck", "openssl", @@ -6858,7 +6858,7 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "2.1.3" +version = "2.1.4" dependencies = [ "crossbeam-channel", "log", @@ -6873,14 +6873,14 @@ dependencies = [ [[package]] name = "solana-serde-varint" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", ] [[package]] name = "solana-serialize-utils" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-instruction", "solana-pubkey", @@ -6889,7 +6889,7 @@ dependencies = [ [[package]] name = "solana-sha256-hasher" -version = "2.1.3" +version = "2.1.4" dependencies = [ "sha2 0.10.8", "solana-define-syscall", @@ -6898,14 +6898,14 @@ dependencies = [ [[package]] name = "solana-short-vec" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", ] [[package]] name = "solana-signature" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bs58", "ed25519-dalek", @@ -6918,7 +6918,7 @@ dependencies = [ [[package]] name = "solana-slot-hashes" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -6928,7 +6928,7 @@ dependencies = [ [[package]] name = "solana-slot-history" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bv", "serde", @@ -6938,7 +6938,7 @@ dependencies = [ [[package]] name = "solana-stable-layout" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-instruction", "solana-pubkey", @@ -6946,7 +6946,7 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "log", @@ -6961,7 +6961,7 @@ dependencies = [ [[package]] name = "solana-storage-bigtable" -version = "2.1.3" +version = "2.1.4" dependencies = [ "backoff", "bincode", @@ -6993,7 +6993,7 @@ dependencies = [ [[package]] name = "solana-storage-proto" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "bs58", @@ -7008,7 +7008,7 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "2.1.3" +version = "2.1.4" dependencies = [ "async-channel", "bytes", @@ -7044,7 +7044,7 @@ dependencies = [ [[package]] name = "solana-svm" -version = "2.1.3" +version = "2.1.4" dependencies = [ "itertools 0.12.1", "log", @@ -7073,21 +7073,21 @@ dependencies = [ [[package]] name = "solana-svm-rent-collector" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-sdk", ] [[package]] name = "solana-svm-transaction" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-sdk", ] [[package]] name = "solana-system-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "log", @@ -7101,14 +7101,14 @@ dependencies = [ [[package]] name = "solana-sysvar-id" -version = "2.1.3" +version = "2.1.4" dependencies = [ "solana-pubkey", ] [[package]] name = "solana-test-validator" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "bincode", @@ -7139,7 +7139,7 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "log", @@ -7152,7 +7152,7 @@ dependencies = [ [[package]] name = "solana-timings" -version = "2.1.3" +version = "2.1.4" dependencies = [ "eager", "enum-iterator", @@ -7161,7 +7161,7 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "async-trait", "bincode", @@ -7182,7 +7182,7 @@ dependencies = [ [[package]] name = "solana-transaction-error" -version = "2.1.3" +version = "2.1.4" dependencies = [ "serde", "serde_derive", @@ -7192,7 +7192,7 @@ dependencies = [ [[package]] name = "solana-transaction-metrics-tracker" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "bincode", @@ -7206,7 +7206,7 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "2.1.3" +version = "2.1.4" dependencies = [ "Inflector", "base64 0.22.1", @@ -7232,7 +7232,7 @@ dependencies = [ [[package]] name = "solana-transaction-status-client-types" -version = "2.1.3" +version = "2.1.4" dependencies = [ "base64 0.22.1", "bincode", @@ -7248,7 +7248,7 @@ dependencies = [ [[package]] name = "solana-turbine" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "bytes", @@ -7286,7 +7286,7 @@ dependencies = [ [[package]] name = "solana-type-overrides" -version = "2.1.3" +version = "2.1.4" dependencies = [ "lazy_static", "rand 0.8.5", @@ -7294,7 +7294,7 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "2.1.3" +version = "2.1.4" dependencies = [ "async-trait", "solana-connection-cache", @@ -7307,7 +7307,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-logic" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "solana-sdk", @@ -7316,7 +7316,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-pool" -version = "2.1.3" +version = "2.1.4" dependencies = [ "assert_matches", "crossbeam-channel", @@ -7336,7 +7336,7 @@ dependencies = [ [[package]] name = "solana-version" -version = "2.1.3" +version = "2.1.4" dependencies = [ "semver", "serde", @@ -7348,7 +7348,7 @@ dependencies = [ [[package]] name = "solana-vote" -version = "2.1.3" +version = "2.1.4" dependencies = [ "itertools 0.12.1", "log", @@ -7360,7 +7360,7 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bincode", "log", @@ -7378,7 +7378,7 @@ dependencies = [ [[package]] name = "solana-wen-restart" -version = "2.1.3" +version = "2.1.4" dependencies = [ "anyhow", "log", @@ -7399,7 +7399,7 @@ dependencies = [ [[package]] name = "solana-zk-elgamal-proof-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bytemuck", "num-derive", @@ -7412,7 +7412,7 @@ dependencies = [ [[package]] name = "solana-zk-sdk" -version = "2.1.3" +version = "2.1.4" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -7442,7 +7442,7 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "2.1.3" +version = "2.1.4" dependencies = [ "bytemuck", "num-derive", @@ -7456,7 +7456,7 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "2.1.3" +version = "2.1.4" dependencies = [ "aes-gcm-siv", "base64 0.22.1", diff --git a/programs/sbf/Cargo.toml b/programs/sbf/Cargo.toml index 0326db6cb36bcf..735a10c06a90ee 100644 --- a/programs/sbf/Cargo.toml +++ b/programs/sbf/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "2.1.3" +version = "2.1.4" description = "Solana SBF test program written in Rust" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -30,44 +30,44 @@ rand = "0.8" serde = "1.0.112" # must match the serde_derive version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251 serde_derive = "1.0.112" # must match the serde version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251 serde_json = "1.0.56" -solana-account-decoder = { path = "../../account-decoder", version = "=2.1.3" } -solana-accounts-db = { path = "../../accounts-db", version = "=2.1.3" } -solana-bn254 = { path = "../../curves/bn254", version = "=2.1.3" } -solana-bpf-loader-program = { path = "../bpf_loader", version = "=2.1.3" } -solana-cli-output = { path = "../../cli-output", version = "=2.1.3" } -solana-compute-budget = { path = "../../compute-budget", version = "=2.1.3" } -solana-curve25519 = { path = "../../curves/curve25519", version = "=2.1.3" } -solana-decode-error = { path = "../../sdk/decode-error", version = "=2.1.3" } -solana-feature-set = { path = "../../sdk/feature-set", version = "=2.1.3" } -solana-fee = { path = "../../fee", version = "=2.1.3" } -solana-ledger = { path = "../../ledger", version = "=2.1.3" } -solana-log-collector = { path = "../../log-collector", version = "=2.1.3" } -solana-logger = { path = "../../logger", version = "=2.1.3" } -solana-measure = { path = "../../measure", version = "=2.1.3" } -solana-poseidon = { path = "../../poseidon/", version = "=2.1.3" } -solana-program = { path = "../../sdk/program", version = "=2.1.3" } -solana-program-runtime = { path = "../../program-runtime", version = "=2.1.3" } -solana-runtime = { path = "../../runtime", version = "=2.1.3" } -solana-runtime-transaction = { path = "../../runtime-transaction", version = "=2.1.3" } -solana-sbf-rust-128bit-dep = { path = "rust/128bit_dep", version = "=2.1.3" } -solana-sbf-rust-invoke-dep = { path = "rust/invoke_dep", version = "=2.1.3" } -solana-sbf-rust-invoked-dep = { path = "rust/invoked_dep", version = "=2.1.3" } -solana-sbf-rust-many-args-dep = { path = "rust/many_args_dep", version = "=2.1.3" } -solana-sbf-rust-mem-dep = { path = "rust/mem_dep", version = "=2.1.3" } -solana-sbf-rust-param-passing-dep = { path = "rust/param_passing_dep", version = "=2.1.3" } -solana-sbf-rust-realloc-dep = { path = "rust/realloc_dep", version = "=2.1.3" } -solana-sbf-rust-realloc-invoke-dep = { path = "rust/realloc_invoke_dep", version = "=2.1.3" } -solana-sdk = { path = "../../sdk", version = "=2.1.3" } -solana-secp256k1-recover = { path = "../../curves/secp256k1-recover", version = "=2.1.3" } -solana-svm = { path = "../../svm", version = "=2.1.3" } -solana-svm-transaction = { path = "../../svm-transaction", version = "=2.1.3" } -solana-timings = { path = "../../timings", version = "=2.1.3" } -solana-transaction-status = { path = "../../transaction-status", version = "=2.1.3" } -solana-type-overrides = { path = "../../type-overrides", version = "=2.1.3" } -solana-vote = { path = "../../vote", version = "=2.1.3" } -solana-vote-program = { path = "../../programs/vote", version = "=2.1.3" } -agave-validator = { path = "../../validator", version = "=2.1.3" } -solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=2.1.3" } +solana-account-decoder = { path = "../../account-decoder", version = "=2.1.4" } +solana-accounts-db = { path = "../../accounts-db", version = "=2.1.4" } +solana-bn254 = { path = "../../curves/bn254", version = "=2.1.4" } +solana-bpf-loader-program = { path = "../bpf_loader", version = "=2.1.4" } +solana-cli-output = { path = "../../cli-output", version = "=2.1.4" } +solana-compute-budget = { path = "../../compute-budget", version = "=2.1.4" } +solana-curve25519 = { path = "../../curves/curve25519", version = "=2.1.4" } +solana-decode-error = { path = "../../sdk/decode-error", version = "=2.1.4" } +solana-feature-set = { path = "../../sdk/feature-set", version = "=2.1.4" } +solana-fee = { path = "../../fee", version = "=2.1.4" } +solana-ledger = { path = "../../ledger", version = "=2.1.4" } +solana-log-collector = { path = "../../log-collector", version = "=2.1.4" } +solana-logger = { path = "../../logger", version = "=2.1.4" } +solana-measure = { path = "../../measure", version = "=2.1.4" } +solana-poseidon = { path = "../../poseidon/", version = "=2.1.4" } +solana-program = { path = "../../sdk/program", version = "=2.1.4" } +solana-program-runtime = { path = "../../program-runtime", version = "=2.1.4" } +solana-runtime = { path = "../../runtime", version = "=2.1.4" } +solana-runtime-transaction = { path = "../../runtime-transaction", version = "=2.1.4" } +solana-sbf-rust-128bit-dep = { path = "rust/128bit_dep", version = "=2.1.4" } +solana-sbf-rust-invoke-dep = { path = "rust/invoke_dep", version = "=2.1.4" } +solana-sbf-rust-invoked-dep = { path = "rust/invoked_dep", version = "=2.1.4" } +solana-sbf-rust-many-args-dep = { path = "rust/many_args_dep", version = "=2.1.4" } +solana-sbf-rust-mem-dep = { path = "rust/mem_dep", version = "=2.1.4" } +solana-sbf-rust-param-passing-dep = { path = "rust/param_passing_dep", version = "=2.1.4" } +solana-sbf-rust-realloc-dep = { path = "rust/realloc_dep", version = "=2.1.4" } +solana-sbf-rust-realloc-invoke-dep = { path = "rust/realloc_invoke_dep", version = "=2.1.4" } +solana-sdk = { path = "../../sdk", version = "=2.1.4" } +solana-secp256k1-recover = { path = "../../curves/secp256k1-recover", version = "=2.1.4" } +solana-svm = { path = "../../svm", version = "=2.1.4" } +solana-svm-transaction = { path = "../../svm-transaction", version = "=2.1.4" } +solana-timings = { path = "../../timings", version = "=2.1.4" } +solana-transaction-status = { path = "../../transaction-status", version = "=2.1.4" } +solana-type-overrides = { path = "../../type-overrides", version = "=2.1.4" } +solana-vote = { path = "../../vote", version = "=2.1.4" } +solana-vote-program = { path = "../../programs/vote", version = "=2.1.4" } +agave-validator = { path = "../../validator", version = "=2.1.4" } +solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=2.1.4" } solana_rbpf = "=0.8.5" thiserror = "1.0" diff --git a/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml index 6d9c93f0350ed0..afa20e97a5aca6 100644 --- a/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fail" -version = "2.1.3" +version = "2.1.4" description = "Solana SBF test program written in Rust" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -10,7 +10,7 @@ edition = "2021" publish = false [dependencies] -solana-program = { path = "../../../../program", version = "=2.1.3" } +solana-program = { path = "../../../../program", version = "=2.1.4" } [lib] crate-type = ["cdylib"] diff --git a/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml index 8fa0bb1413a9f0..55e6f97495b1df 100644 --- a/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "noop" -version = "2.1.3" +version = "2.1.4" description = "Solana SBF test program written in Rust" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -10,7 +10,7 @@ edition = "2021" publish = false [dependencies] -solana-program = { path = "../../../../program", version = "=2.1.3" } +solana-program = { path = "../../../../program", version = "=2.1.4" } [lib] crate-type = ["cdylib"] diff --git a/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml index d4067e27193786..1e1cd404710b60 100644 --- a/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "package-metadata" -version = "2.1.3" +version = "2.1.4" description = "Solana SBF test program with tools version in package metadata" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -14,8 +14,8 @@ tools-version = "v1.43" program-id = "MyProgram1111111111111111111111111111111111" [dependencies] -solana-package-metadata = { path = "../../../../package-metadata", version = "=2.1.3" } -solana-program = { path = "../../../../program", version = "=2.1.3" } +solana-package-metadata = { path = "../../../../package-metadata", version = "=2.1.4" } +solana-program = { path = "../../../../program", version = "=2.1.4" } [lib] crate-type = ["cdylib"] diff --git a/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml index 11c953ac0c414d..11ddde1ff565fa 100644 --- a/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "workspace-metadata" -version = "2.1.3" +version = "2.1.4" description = "Solana SBF test program with tools version in workspace metadata" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -10,7 +10,7 @@ edition = "2021" publish = false [dependencies] -solana-program = { path = "../../../../program", version = "=2.1.3" } +solana-program = { path = "../../../../program", version = "=2.1.4" } [lib] crate-type = ["cdylib"] diff --git a/svm/examples/json-rpc/program/Cargo.toml b/svm/examples/json-rpc/program/Cargo.toml index 39b5e7a055dcbd..6c7e2b26fd90c0 100644 --- a/svm/examples/json-rpc/program/Cargo.toml +++ b/svm/examples/json-rpc/program/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "json-rpc-example-program" -version = "2.1.3" +version = "2.1.4" edition = "2021" [features] @@ -10,7 +10,7 @@ frozen-abi = [] [dependencies] borsh = "0.9" -solana-program = { path = "../../../../sdk/program", version = "=2.1.3" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.4" } [lib] name = "program" diff --git a/svm/tests/example-programs/clock-sysvar/Cargo.toml b/svm/tests/example-programs/clock-sysvar/Cargo.toml index 113aeca75f55b1..598820685f4fe2 100644 --- a/svm/tests/example-programs/clock-sysvar/Cargo.toml +++ b/svm/tests/example-programs/clock-sysvar/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "clock-sysvar-program" -version = "2.1.3" +version = "2.1.4" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.3" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.4" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/hello-solana/Cargo.toml b/svm/tests/example-programs/hello-solana/Cargo.toml index 85dc8ef3fa1e78..d3263be1b3d39a 100644 --- a/svm/tests/example-programs/hello-solana/Cargo.toml +++ b/svm/tests/example-programs/hello-solana/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "hello-solana-program" -version = "2.1.3" +version = "2.1.4" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.3" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.4" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/simple-transfer/Cargo.toml b/svm/tests/example-programs/simple-transfer/Cargo.toml index 717ff9ca85459c..b975fd573dbe4e 100644 --- a/svm/tests/example-programs/simple-transfer/Cargo.toml +++ b/svm/tests/example-programs/simple-transfer/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "simple-transfer-program" -version = "2.1.3" +version = "2.1.4" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.3" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.4" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/transfer-from-account/Cargo.toml b/svm/tests/example-programs/transfer-from-account/Cargo.toml index 91a7013c3e44ab..2e286d3fde0774 100644 --- a/svm/tests/example-programs/transfer-from-account/Cargo.toml +++ b/svm/tests/example-programs/transfer-from-account/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "transfer-from-account" -version = "2.1.3" +version = "2.1.4" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.3" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.4" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/write-to-account/Cargo.toml b/svm/tests/example-programs/write-to-account/Cargo.toml index e9dcaf0dbf8bb0..5691bb4242b682 100644 --- a/svm/tests/example-programs/write-to-account/Cargo.toml +++ b/svm/tests/example-programs/write-to-account/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "write-to-account" -version = "2.1.3" +version = "2.1.4" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.3" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.4" } [lib] crate-type = ["cdylib", "rlib"] From 006c92114997122d2bbd475ff6dad0fdedb770ba Mon Sep 17 00:00:00 2001 From: Yihau Chen Date: Tue, 26 Nov 2024 02:32:15 +0800 Subject: [PATCH 26/33] ci: introduce ci/docker/env.sh (#3774) Co-authored-by: sakridge (cherry picked from commit f3201756b76880857630ef47933aa675e1343c6e) --- ci/docker-run-default-image.sh | 4 ++-- ci/docker/Dockerfile | 3 ++- ci/docker/build.sh | 17 +++++++++++------ ci/docker/env.sh | 34 ++++++++++++++++++++++++++++++++++ ci/rust-version.sh | 2 -- net/net.sh | 6 +++--- 6 files changed, 52 insertions(+), 14 deletions(-) create mode 100755 ci/docker/env.sh diff --git a/ci/docker-run-default-image.sh b/ci/docker-run-default-image.sh index 927167cc8ef1ac..d6c536ddb6b992 100755 --- a/ci/docker-run-default-image.sh +++ b/ci/docker-run-default-image.sh @@ -5,6 +5,6 @@ set -e here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck disable=SC1091 -source "$here/rust-version.sh" +source "$here/docker/env.sh" -"$here/docker-run.sh" "${ci_docker_image:?}" "$@" +"$here/docker-run.sh" "${CI_DOCKER_IMAGE:?}" "$@" diff --git a/ci/docker/Dockerfile b/ci/docker/Dockerfile index 7f7b69c30ce68f..b99b8ee5ff25b2 100644 --- a/ci/docker/Dockerfile +++ b/ci/docker/Dockerfile @@ -1,4 +1,5 @@ -FROM ubuntu:20.04 +ARG BASE_IMAGE= +FROM ${BASE_IMAGE} ARG \ RUST_VERSION= \ diff --git a/ci/docker/build.sh b/ci/docker/build.sh index 0c20c5e928d94d..c37a821673577c 100755 --- a/ci/docker/build.sh +++ b/ci/docker/build.sh @@ -5,7 +5,7 @@ set -e here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # shellcheck disable=SC1091 -source "$here/../rust-version.sh" +source "$here/env.sh" platform=() if [[ $(uname -m) = arm64 ]]; then @@ -13,11 +13,16 @@ if [[ $(uname -m) = arm64 ]]; then platform+=(--platform linux/amd64) fi -echo "build image: ${ci_docker_image:?}" +echo "build image: ${CI_DOCKER_IMAGE:?}" docker build "${platform[@]}" \ -f "$here/Dockerfile" \ - --build-arg "RUST_VERSION=${rust_stable:?}" \ - --build-arg "RUST_NIGHTLY_VERSION=${rust_nightly:?}" \ - -t "$ci_docker_image" . + --build-arg "BASE_IMAGE=${BASE_IMAGE}" \ + --build-arg "RUST_VERSION=${RUST_VERSION}" \ + --build-arg "RUST_NIGHTLY_VERSION=${RUST_NIGHTLY_VERSION}" \ + --build-arg "GOLANG_VERSION=${GOLANG_VERSION}" \ + --build-arg "NODE_MAJOR=${NODE_MAJOR}" \ + --build-arg "SCCACHE_VERSION=${SCCACHE_VERSION}" \ + --build-arg "GRCOV_VERSION=${GRCOV_VERSION}" \ + -t "$CI_DOCKER_IMAGE" . -docker push "$ci_docker_image" +docker push "$CI_DOCKER_IMAGE" diff --git a/ci/docker/env.sh b/ci/docker/env.sh new file mode 100755 index 00000000000000..d59183278d9bb4 --- /dev/null +++ b/ci/docker/env.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +ci_docker_env_sh_here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# shellcheck disable=SC1091 +source "${ci_docker_env_sh_here}/../rust-version.sh" + +if [[ -z "${rust_stable}" || -z "${rust_nightly}" ]]; then + echo "Error: rust_stable or rust_nightly is empty. Please check rust-version.sh." >&2 + exit 1 +fi + +export BASE_IMAGE=ubuntu:22.04 +export RUST_VERSION="${rust_stable}" +export RUST_NIGHTLY_VERSION="${rust_nightly}" +export GOLANG_VERSION=1.21.3 +export NODE_MAJOR=18 +export SCCACHE_VERSION=v0.8.1 +export GRCOV_VERSION=v0.8.18 + +hash_vars=( + "${BASE_IMAGE}" + "${RUST_VERSION}" + "${RUST_NIGHTLY_VERSION}" + "${GOLANG_VERSION}" + "${NODE_MAJOR}" + "${SCCACHE_VERSION}" + "${GRCOV_VERSION}" +) +hash_input=$(IFS="_"; echo "${hash_vars[*]}") +ci_docker_hash=$(echo -n "${hash_input}" | sha256sum | head -c 8) + +SANITIZED_BASE_IMAGE="${BASE_IMAGE//:/-}" +export CI_DOCKER_IMAGE="anzaxyz/ci:${SANITIZED_BASE_IMAGE}_rust-${RUST_VERSION}_${RUST_NIGHTLY_VERSION}_${ci_docker_hash}" diff --git a/ci/rust-version.sh b/ci/rust-version.sh index c55d5ba4462998..bc88c84d2d34fb 100644 --- a/ci/rust-version.sh +++ b/ci/rust-version.sh @@ -37,8 +37,6 @@ export rust_stable="$stable_version" export rust_nightly=nightly-"$nightly_version" -export ci_docker_image="anzaxyz/ci:rust_${rust_stable}_${rust_nightly}" - [[ -z $1 ]] || ( rustup_install() { diff --git a/net/net.sh b/net/net.sh index 3ef7430ebd54d6..2be711be089402 100755 --- a/net/net.sh +++ b/net/net.sh @@ -192,9 +192,9 @@ build() { supported=("20.04") declare MAYBE_DOCKER= if [[ $(uname) != Linux || ! " ${supported[*]} " =~ $(lsb_release -sr) ]]; then - # shellcheck source=ci/rust-version.sh - source "$SOLANA_ROOT"/ci/rust-version.sh - MAYBE_DOCKER="ci/docker-run.sh ${ci_docker_image:?}" + # shellcheck source=ci/docker/env.sh + source "$SOLANA_ROOT"/ci/docker/env.sh + MAYBE_DOCKER="ci/docker-run.sh ${CI_DOCKER_IMAGE:?}" fi SECONDS=0 ( From 024d047eedba22768099cc6509414202400c6231 Mon Sep 17 00:00:00 2001 From: yihau Date: Wed, 27 Nov 2024 02:21:10 +0800 Subject: [PATCH 27/33] v2.1: ignore rustls rustsec --- ci/do-audit.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ci/do-audit.sh b/ci/do-audit.sh index 771989d556b975..d60ec40cd93e3f 100755 --- a/ci/do-audit.sh +++ b/ci/do-audit.sh @@ -48,6 +48,17 @@ cargo_audit_ignores=( # URL: https://rustsec.org/advisories/RUSTSEC-2024-0376 # Solution: Upgrade to >=0.12.3 --ignore RUSTSEC-2024-0376 + + # Crate: rustls + # Version: 0.23.17 + # Title: rustls network-reachable panic in `Acceptor::accept` + # Date: 2024-11-22 + # ID: RUSTSEC-2024-0399 + # URL: https://rustsec.org/advisories/RUSTSEC-2024-0399 + # Solution: Upgrade to >=0.23.18 + # Dependency tree: + # rustls 0.23.17 + --ignore RUSTSEC-2024-0399 ) scripts/cargo-for-all-lock-files.sh audit "${cargo_audit_ignores[@]}" | $dep_tree_filter # we want the `cargo audit` exit code, not `$dep_tree_filter`'s From d07fc9b7ba36cedaf5237671e6ff40db7f0daa56 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 12:06:16 -0500 Subject: [PATCH 28/33] Bump version to v2.1.5 (#3819) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- Cargo.lock | 362 ++++++++--------- Cargo.toml | 294 +++++++------- programs/sbf/Cargo.lock | 382 +++++++++--------- programs/sbf/Cargo.toml | 78 ++-- .../tests/crates/fail/Cargo.toml | 4 +- .../tests/crates/noop/Cargo.toml | 4 +- .../tests/crates/package-metadata/Cargo.toml | 6 +- .../crates/workspace-metadata/Cargo.toml | 4 +- svm/examples/json-rpc/program/Cargo.toml | 4 +- .../example-programs/clock-sysvar/Cargo.toml | 4 +- .../example-programs/hello-solana/Cargo.toml | 4 +- .../simple-transfer/Cargo.toml | 4 +- .../transfer-from-account/Cargo.toml | 4 +- .../write-to-account/Cargo.toml | 4 +- 14 files changed, 579 insertions(+), 579 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9a3590dfd69599..2b27d3bc7664fc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "agave-accounts-hash-cache-tool" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ahash 0.8.11", "bytemuck", @@ -80,7 +80,7 @@ dependencies = [ [[package]] name = "agave-cargo-registry" -version = "2.1.4" +version = "2.1.5" dependencies = [ "clap 2.33.3", "flate2", @@ -109,7 +109,7 @@ dependencies = [ [[package]] name = "agave-geyser-plugin-interface" -version = "2.1.4" +version = "2.1.5" dependencies = [ "log", "solana-sdk", @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "agave-install" -version = "2.1.4" +version = "2.1.5" dependencies = [ "atty", "bincode", @@ -155,7 +155,7 @@ dependencies = [ [[package]] name = "agave-ledger-tool" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_cmd", "bs58", @@ -212,7 +212,7 @@ dependencies = [ [[package]] name = "agave-store-histogram" -version = "2.1.4" +version = "2.1.5" dependencies = [ "clap 2.33.3", "solana-version", @@ -220,7 +220,7 @@ dependencies = [ [[package]] name = "agave-store-tool" -version = "2.1.4" +version = "2.1.5" dependencies = [ "clap 2.33.3", "solana-accounts-db", @@ -230,7 +230,7 @@ dependencies = [ [[package]] name = "agave-transaction-view" -version = "2.1.4" +version = "2.1.5" dependencies = [ "agave-transaction-view", "bincode", @@ -241,7 +241,7 @@ dependencies = [ [[package]] name = "agave-validator" -version = "2.1.4" +version = "2.1.5" dependencies = [ "agave-geyser-plugin-interface", "assert_cmd", @@ -312,7 +312,7 @@ dependencies = [ [[package]] name = "agave-watchtower" -version = "2.1.4" +version = "2.1.5" dependencies = [ "clap 2.33.3", "humantime", @@ -2518,7 +2518,7 @@ dependencies = [ [[package]] name = "gen-headers" -version = "2.1.4" +version = "2.1.5" dependencies = [ "log", "regex", @@ -2526,7 +2526,7 @@ dependencies = [ [[package]] name = "gen-syscall-list" -version = "2.1.4" +version = "2.1.5" dependencies = [ "regex", ] @@ -4487,7 +4487,7 @@ dependencies = [ [[package]] name = "proto" -version = "2.1.4" +version = "2.1.5" dependencies = [ "protobuf-src", "tonic-build", @@ -4767,7 +4767,7 @@ dependencies = [ [[package]] name = "rbpf-cli" -version = "2.1.4" +version = "2.1.5" [[package]] name = "rdrand" @@ -5662,7 +5662,7 @@ dependencies = [ [[package]] name = "solana-account" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "qualifier_attr", @@ -5680,7 +5680,7 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "2.1.4" +version = "2.1.5" dependencies = [ "Inflector", "assert_matches", @@ -5706,7 +5706,7 @@ dependencies = [ [[package]] name = "solana-account-decoder-client-types" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "bs58", @@ -5720,7 +5720,7 @@ dependencies = [ [[package]] name = "solana-account-info" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "serde", @@ -5731,7 +5731,7 @@ dependencies = [ [[package]] name = "solana-accounts-bench" -version = "2.1.4" +version = "2.1.5" dependencies = [ "clap 2.33.3", "log", @@ -5745,7 +5745,7 @@ dependencies = [ [[package]] name = "solana-accounts-cluster-bench" -version = "2.1.4" +version = "2.1.5" dependencies = [ "clap 2.33.3", "log", @@ -5777,7 +5777,7 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ahash 0.8.11", "assert_matches", @@ -5838,7 +5838,7 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "bytemuck", @@ -5855,7 +5855,7 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program-tests" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -5867,14 +5867,14 @@ dependencies = [ [[package]] name = "solana-atomic-u64" -version = "2.1.4" +version = "2.1.5" dependencies = [ "parking_lot 0.12.3", ] [[package]] name = "solana-banking-bench" -version = "2.1.4" +version = "2.1.5" dependencies = [ "clap 3.2.23", "crossbeam-channel", @@ -5898,7 +5898,7 @@ dependencies = [ [[package]] name = "solana-banks-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "borsh 1.5.1", "futures 0.3.31", @@ -5915,7 +5915,7 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -5925,7 +5925,7 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "crossbeam-channel", @@ -5944,7 +5944,7 @@ dependencies = [ [[package]] name = "solana-bench-streamer" -version = "2.1.4" +version = "2.1.5" dependencies = [ "clap 3.2.23", "crossbeam-channel", @@ -5955,7 +5955,7 @@ dependencies = [ [[package]] name = "solana-bench-tps" -version = "2.1.4" +version = "2.1.5" dependencies = [ "chrono", "clap 2.33.3", @@ -6002,7 +6002,7 @@ dependencies = [ [[package]] name = "solana-bincode" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "serde", @@ -6012,7 +6012,7 @@ dependencies = [ [[package]] name = "solana-bloom" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bv", "fnv", @@ -6029,7 +6029,7 @@ dependencies = [ [[package]] name = "solana-bn254" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ark-bn254", "ark-ec", @@ -6046,7 +6046,7 @@ dependencies = [ [[package]] name = "solana-borsh" -version = "2.1.4" +version = "2.1.5" dependencies = [ "borsh 0.10.3", "borsh 1.5.1", @@ -6054,7 +6054,7 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -6084,7 +6084,7 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program-tests" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -6095,7 +6095,7 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bv", "bytemuck", @@ -6115,7 +6115,7 @@ dependencies = [ [[package]] name = "solana-builtins-default-costs" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ahash 0.8.11", "lazy_static", @@ -6135,7 +6135,7 @@ dependencies = [ [[package]] name = "solana-cargo-build-sbf" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_cmd", "bzip2", @@ -6156,7 +6156,7 @@ dependencies = [ [[package]] name = "solana-cargo-test-sbf" -version = "2.1.4" +version = "2.1.5" dependencies = [ "cargo_metadata", "clap 3.2.23", @@ -6168,7 +6168,7 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "chrono", @@ -6186,7 +6186,7 @@ dependencies = [ [[package]] name = "solana-clap-v3-utils" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "chrono", @@ -6205,7 +6205,7 @@ dependencies = [ [[package]] name = "solana-cli" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -6267,7 +6267,7 @@ dependencies = [ [[package]] name = "solana-cli-config" -version = "2.1.4" +version = "2.1.5" dependencies = [ "anyhow", "dirs-next", @@ -6282,7 +6282,7 @@ dependencies = [ [[package]] name = "solana-cli-output" -version = "2.1.4" +version = "2.1.5" dependencies = [ "Inflector", "base64 0.22.1", @@ -6308,7 +6308,7 @@ dependencies = [ [[package]] name = "solana-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "async-trait", "bincode", @@ -6339,7 +6339,7 @@ dependencies = [ [[package]] name = "solana-client-test" -version = "2.1.4" +version = "2.1.5" dependencies = [ "futures-util", "rand 0.8.5", @@ -6368,7 +6368,7 @@ dependencies = [ [[package]] name = "solana-clock" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -6380,7 +6380,7 @@ dependencies = [ [[package]] name = "solana-compute-budget" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-frozen-abi", "solana-sdk", @@ -6388,7 +6388,7 @@ dependencies = [ [[package]] name = "solana-compute-budget-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -6396,7 +6396,7 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "chrono", @@ -6411,7 +6411,7 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "2.1.4" +version = "2.1.5" dependencies = [ "async-trait", "bincode", @@ -6434,7 +6434,7 @@ dependencies = [ [[package]] name = "solana-core" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ahash 0.8.11", "anyhow", @@ -6531,7 +6531,7 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ahash 0.8.11", "itertools 0.12.1", @@ -6557,7 +6557,7 @@ dependencies = [ [[package]] name = "solana-cpi" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-account-info", "solana-define-syscall", @@ -6572,7 +6572,7 @@ dependencies = [ [[package]] name = "solana-curve25519" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bytemuck", "bytemuck_derive", @@ -6583,7 +6583,7 @@ dependencies = [ [[package]] name = "solana-decode-error" -version = "2.1.4" +version = "2.1.5" dependencies = [ "num-derive", "num-traits", @@ -6591,11 +6591,11 @@ dependencies = [ [[package]] name = "solana-define-syscall" -version = "2.1.4" +version = "2.1.5" [[package]] name = "solana-derivation-path" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "derivation-path", @@ -6605,7 +6605,7 @@ dependencies = [ [[package]] name = "solana-dos" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "clap 3.2.23", @@ -6638,7 +6638,7 @@ dependencies = [ [[package]] name = "solana-download-utils" -version = "2.1.4" +version = "2.1.5" dependencies = [ "console", "indicatif", @@ -6650,7 +6650,7 @@ dependencies = [ [[package]] name = "solana-ed25519-program-tests" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "ed25519-dalek", @@ -6661,7 +6661,7 @@ dependencies = [ [[package]] name = "solana-entry" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -6683,7 +6683,7 @@ dependencies = [ [[package]] name = "solana-epoch-schedule" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -6698,7 +6698,7 @@ dependencies = [ [[package]] name = "solana-faucet" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "byteorder", @@ -6720,7 +6720,7 @@ dependencies = [ [[package]] name = "solana-feature-set" -version = "2.1.4" +version = "2.1.5" dependencies = [ "lazy_static", "solana-clock", @@ -6734,7 +6734,7 @@ dependencies = [ [[package]] name = "solana-fee" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-sdk", "solana-svm-transaction", @@ -6742,7 +6742,7 @@ dependencies = [ [[package]] name = "solana-fee-calculator" -version = "2.1.4" +version = "2.1.5" dependencies = [ "log", "serde", @@ -6756,7 +6756,7 @@ dependencies = [ [[package]] name = "solana-frozen-abi" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bitflags 2.6.0", "bs58", @@ -6777,7 +6777,7 @@ dependencies = [ [[package]] name = "solana-frozen-abi-macro" -version = "2.1.4" +version = "2.1.5" dependencies = [ "proc-macro2", "quote", @@ -6786,7 +6786,7 @@ dependencies = [ [[package]] name = "solana-genesis" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "bincode", @@ -6813,7 +6813,7 @@ dependencies = [ [[package]] name = "solana-genesis-utils" -version = "2.1.4" +version = "2.1.5" dependencies = [ "log", "solana-accounts-db", @@ -6824,7 +6824,7 @@ dependencies = [ [[package]] name = "solana-geyser-plugin-manager" -version = "2.1.4" +version = "2.1.5" dependencies = [ "agave-geyser-plugin-interface", "bs58", @@ -6849,7 +6849,7 @@ dependencies = [ [[package]] name = "solana-gossip" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -6903,7 +6903,7 @@ dependencies = [ [[package]] name = "solana-hash" -version = "2.1.4" +version = "2.1.5" dependencies = [ "borsh 1.5.1", "bs58", @@ -6922,7 +6922,7 @@ dependencies = [ [[package]] name = "solana-inflation" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -6932,7 +6932,7 @@ dependencies = [ [[package]] name = "solana-inline-spl" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bytemuck", "solana-pubkey", @@ -6940,7 +6940,7 @@ dependencies = [ [[package]] name = "solana-instruction" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "borsh 1.5.1", @@ -6959,7 +6959,7 @@ dependencies = [ [[package]] name = "solana-keygen" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bs58", "clap 3.2.23", @@ -6978,7 +6978,7 @@ dependencies = [ [[package]] name = "solana-last-restart-slot" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -6988,7 +6988,7 @@ dependencies = [ [[package]] name = "solana-lattice-hash" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "blake3", @@ -7001,7 +7001,7 @@ dependencies = [ [[package]] name = "solana-ledger" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -7078,7 +7078,7 @@ dependencies = [ [[package]] name = "solana-loader-v4-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "log", @@ -7094,7 +7094,7 @@ dependencies = [ [[package]] name = "solana-local-cluster" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "crossbeam-channel", @@ -7136,7 +7136,7 @@ dependencies = [ [[package]] name = "solana-log-analyzer" -version = "2.1.4" +version = "2.1.5" dependencies = [ "byte-unit", "clap 3.2.23", @@ -7149,14 +7149,14 @@ dependencies = [ [[package]] name = "solana-log-collector" -version = "2.1.4" +version = "2.1.5" dependencies = [ "log", ] [[package]] name = "solana-logger" -version = "2.1.4" +version = "2.1.5" dependencies = [ "env_logger", "lazy_static", @@ -7165,15 +7165,15 @@ dependencies = [ [[package]] name = "solana-measure" -version = "2.1.4" +version = "2.1.5" [[package]] name = "solana-memory-management" -version = "2.1.4" +version = "2.1.5" [[package]] name = "solana-merkle-root-bench" -version = "2.1.4" +version = "2.1.5" dependencies = [ "clap 2.33.3", "log", @@ -7186,7 +7186,7 @@ dependencies = [ [[package]] name = "solana-merkle-tree" -version = "2.1.4" +version = "2.1.5" dependencies = [ "fast-math", "hex", @@ -7196,7 +7196,7 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "2.1.4" +version = "2.1.5" dependencies = [ "crossbeam-channel", "env_logger", @@ -7212,18 +7212,18 @@ dependencies = [ [[package]] name = "solana-msg" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-define-syscall", ] [[package]] name = "solana-native-token" -version = "2.1.4" +version = "2.1.5" [[package]] name = "solana-net-shaper" -version = "2.1.4" +version = "2.1.5" dependencies = [ "clap 3.2.23", "rand 0.8.5", @@ -7235,7 +7235,7 @@ dependencies = [ [[package]] name = "solana-net-utils" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "clap 3.2.23", @@ -7261,7 +7261,7 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-notifier" -version = "2.1.4" +version = "2.1.5" dependencies = [ "log", "reqwest", @@ -7271,7 +7271,7 @@ dependencies = [ [[package]] name = "solana-package-metadata" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-package-metadata-macro", "solana-pubkey", @@ -7279,7 +7279,7 @@ dependencies = [ [[package]] name = "solana-package-metadata-macro" -version = "2.1.4" +version = "2.1.5" dependencies = [ "proc-macro2", "quote", @@ -7289,7 +7289,7 @@ dependencies = [ [[package]] name = "solana-packet" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "bitflags 2.6.0", @@ -7305,7 +7305,7 @@ dependencies = [ [[package]] name = "solana-perf" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ahash 0.8.11", "assert_matches", @@ -7336,7 +7336,7 @@ dependencies = [ [[package]] name = "solana-poh" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -7358,7 +7358,7 @@ dependencies = [ [[package]] name = "solana-poh-bench" -version = "2.1.4" +version = "2.1.5" dependencies = [ "clap 3.2.23", "log", @@ -7374,7 +7374,7 @@ dependencies = [ [[package]] name = "solana-poseidon" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ark-bn254", "light-poseidon", @@ -7384,7 +7384,7 @@ dependencies = [ [[package]] name = "solana-precompile-error" -version = "2.1.4" +version = "2.1.5" dependencies = [ "num-traits", "solana-decode-error", @@ -7392,7 +7392,7 @@ dependencies = [ [[package]] name = "solana-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "anyhow", "arbitrary", @@ -7477,7 +7477,7 @@ dependencies = [ [[package]] name = "solana-program-entrypoint" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-account-info", "solana-msg", @@ -7487,7 +7487,7 @@ dependencies = [ [[package]] name = "solana-program-error" -version = "2.1.4" +version = "2.1.5" dependencies = [ "borsh 1.5.1", "num-traits", @@ -7501,7 +7501,7 @@ dependencies = [ [[package]] name = "solana-program-memory" -version = "2.1.4" +version = "2.1.5" dependencies = [ "num-traits", "solana-define-syscall", @@ -7509,18 +7509,18 @@ dependencies = [ [[package]] name = "solana-program-option" -version = "2.1.4" +version = "2.1.5" [[package]] name = "solana-program-pack" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program-error", ] [[package]] name = "solana-program-runtime" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "base64 0.22.1", @@ -7553,7 +7553,7 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "async-trait", @@ -7589,7 +7589,7 @@ dependencies = [ [[package]] name = "solana-pubkey" -version = "2.1.4" +version = "2.1.5" dependencies = [ "anyhow", "arbitrary", @@ -7622,7 +7622,7 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "anyhow", "crossbeam-channel", @@ -7646,7 +7646,7 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "async-lock", "async-trait", @@ -7673,7 +7673,7 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "2.1.4" +version = "2.1.5" dependencies = [ "lazy_static", "num_cpus", @@ -7681,7 +7681,7 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "console", @@ -7701,7 +7701,7 @@ dependencies = [ [[package]] name = "solana-rent" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -7715,7 +7715,7 @@ dependencies = [ [[package]] name = "solana-rpc" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "bincode", @@ -7777,7 +7777,7 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "async-trait", @@ -7808,7 +7808,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "2.1.4" +version = "2.1.5" dependencies = [ "anyhow", "base64 0.22.1", @@ -7831,7 +7831,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "2.1.4" +version = "2.1.5" dependencies = [ "anyhow", "clap 2.33.3", @@ -7848,7 +7848,7 @@ dependencies = [ [[package]] name = "solana-rpc-test" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "bs58", @@ -7876,7 +7876,7 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "2.1.4" +version = "2.1.5" dependencies = [ "agave-transaction-view", "ahash 0.8.11", @@ -7975,7 +7975,7 @@ dependencies = [ [[package]] name = "solana-runtime-transaction" -version = "2.1.4" +version = "2.1.5" dependencies = [ "agave-transaction-view", "bincode", @@ -7993,11 +7993,11 @@ dependencies = [ [[package]] name = "solana-sanitize" -version = "2.1.4" +version = "2.1.5" [[package]] name = "solana-sdk" -version = "2.1.4" +version = "2.1.5" dependencies = [ "anyhow", "assert_matches", @@ -8071,7 +8071,7 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bs58", "proc-macro2", @@ -8081,7 +8081,7 @@ dependencies = [ [[package]] name = "solana-secp256k1-recover" -version = "2.1.4" +version = "2.1.5" dependencies = [ "anyhow", "borsh 1.5.1", @@ -8095,7 +8095,7 @@ dependencies = [ [[package]] name = "solana-secp256r1-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bytemuck", "openssl", @@ -8115,7 +8115,7 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "2.1.4" +version = "2.1.5" dependencies = [ "crossbeam-channel", "log", @@ -8131,7 +8131,7 @@ dependencies = [ [[package]] name = "solana-serde-varint" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "rand 0.8.5", @@ -8142,7 +8142,7 @@ dependencies = [ [[package]] name = "solana-serialize-utils" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "borsh 1.5.1", @@ -8155,7 +8155,7 @@ dependencies = [ [[package]] name = "solana-sha256-hasher" -version = "2.1.4" +version = "2.1.5" dependencies = [ "sha2 0.10.8", "solana-define-syscall", @@ -8164,7 +8164,7 @@ dependencies = [ [[package]] name = "solana-short-vec" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -8176,7 +8176,7 @@ dependencies = [ [[package]] name = "solana-signature" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bs58", "curve25519-dalek 4.1.3", @@ -8193,7 +8193,7 @@ dependencies = [ [[package]] name = "solana-slot-hashes" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -8204,7 +8204,7 @@ dependencies = [ [[package]] name = "solana-slot-history" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bv", "serde", @@ -8214,7 +8214,7 @@ dependencies = [ [[package]] name = "solana-stable-layout" -version = "2.1.4" +version = "2.1.5" dependencies = [ "memoffset 0.9.1", "solana-instruction", @@ -8223,7 +8223,7 @@ dependencies = [ [[package]] name = "solana-stake-accounts" -version = "2.1.4" +version = "2.1.5" dependencies = [ "clap 2.33.3", "solana-clap-utils", @@ -8239,7 +8239,7 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -8259,7 +8259,7 @@ dependencies = [ [[package]] name = "solana-stake-program-tests" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -8272,7 +8272,7 @@ dependencies = [ [[package]] name = "solana-storage-bigtable" -version = "2.1.4" +version = "2.1.5" dependencies = [ "backoff", "bincode", @@ -8304,7 +8304,7 @@ dependencies = [ [[package]] name = "solana-storage-proto" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "bs58", @@ -8320,7 +8320,7 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "async-channel", @@ -8358,7 +8358,7 @@ dependencies = [ [[package]] name = "solana-svm" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "base64 0.22.1", @@ -8427,7 +8427,7 @@ dependencies = [ [[package]] name = "solana-svm-conformance" -version = "2.1.4" +version = "2.1.5" dependencies = [ "prost", "prost-build", @@ -8436,7 +8436,7 @@ dependencies = [ [[package]] name = "solana-svm-example-paytube" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-bpf-loader-program", "solana-client", @@ -8454,21 +8454,21 @@ dependencies = [ [[package]] name = "solana-svm-rent-collector" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-sdk", ] [[package]] name = "solana-svm-transaction" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-sdk", ] [[package]] name = "solana-system-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -8486,14 +8486,14 @@ dependencies = [ [[package]] name = "solana-sysvar-id" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-pubkey", ] [[package]] name = "solana-test-validator" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "bincode", @@ -8524,7 +8524,7 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "log", @@ -8538,7 +8538,7 @@ dependencies = [ [[package]] name = "solana-timings" -version = "2.1.4" +version = "2.1.5" dependencies = [ "eager", "enum-iterator", @@ -8547,7 +8547,7 @@ dependencies = [ [[package]] name = "solana-tokens" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -8581,7 +8581,7 @@ dependencies = [ [[package]] name = "solana-tps-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "log", "serial_test", @@ -8602,7 +8602,7 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "async-trait", "bincode", @@ -8623,7 +8623,7 @@ dependencies = [ [[package]] name = "solana-tpu-client-next" -version = "2.1.4" +version = "2.1.5" dependencies = [ "async-trait", "crossbeam-channel", @@ -8647,7 +8647,7 @@ dependencies = [ [[package]] name = "solana-transaction-dos" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "clap 2.33.3", @@ -8674,7 +8674,7 @@ dependencies = [ [[package]] name = "solana-transaction-error" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -8686,7 +8686,7 @@ dependencies = [ [[package]] name = "solana-transaction-metrics-tracker" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "bincode", @@ -8700,7 +8700,7 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "2.1.4" +version = "2.1.5" dependencies = [ "Inflector", "base64 0.22.1", @@ -8726,7 +8726,7 @@ dependencies = [ [[package]] name = "solana-transaction-status-client-types" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "bincode", @@ -8742,7 +8742,7 @@ dependencies = [ [[package]] name = "solana-turbine" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -8783,7 +8783,7 @@ dependencies = [ [[package]] name = "solana-type-overrides" -version = "2.1.4" +version = "2.1.5" dependencies = [ "futures 0.3.31", "lazy_static", @@ -8793,7 +8793,7 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "async-trait", "solana-connection-cache", @@ -8806,7 +8806,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-logic" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "solana-sdk", @@ -8815,7 +8815,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-pool" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "crossbeam-channel", @@ -8837,7 +8837,7 @@ dependencies = [ [[package]] name = "solana-upload-perf" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde_json", "solana-metrics", @@ -8845,7 +8845,7 @@ dependencies = [ [[package]] name = "solana-version" -version = "2.1.4" +version = "2.1.5" dependencies = [ "semver 1.0.23", "serde", @@ -8859,7 +8859,7 @@ dependencies = [ [[package]] name = "solana-vote" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "itertools 0.12.1", @@ -8875,7 +8875,7 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -8898,7 +8898,7 @@ dependencies = [ [[package]] name = "solana-wen-restart" -version = "2.1.4" +version = "2.1.5" dependencies = [ "anyhow", "assert_matches", @@ -8927,7 +8927,7 @@ dependencies = [ [[package]] name = "solana-zk-elgamal-proof-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bytemuck", "num-derive", @@ -8940,7 +8940,7 @@ dependencies = [ [[package]] name = "solana-zk-keygen" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bs58", "clap 3.2.23", @@ -8957,7 +8957,7 @@ dependencies = [ [[package]] name = "solana-zk-sdk" -version = "2.1.4" +version = "2.1.5" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -8988,7 +8988,7 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bytemuck", "criterion", @@ -9004,7 +9004,7 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program-tests" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bytemuck", "curve25519-dalek 4.1.3", @@ -9016,7 +9016,7 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "2.1.4" +version = "2.1.5" dependencies = [ "aes-gcm-siv", "base64 0.22.1", diff --git a/Cargo.toml b/Cargo.toml index ff60d908e5defe..2e8650b34f3484 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -190,7 +190,7 @@ exclude = ["programs/sbf", "svm/tests/example-programs"] resolver = "2" [workspace.package] -version = "2.1.4" +version = "2.1.5" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" homepage = "https://anza.xyz/" @@ -206,7 +206,7 @@ check-cfg = [ [workspace.dependencies] Inflector = "0.11.4" -agave-transaction-view = { path = "transaction-view", version = "=2.1.4" } +agave-transaction-view = { path = "transaction-view", version = "=2.1.5" } aquamarine = "0.3.3" aes-gcm-siv = "0.11.1" ahash = "0.8.11" @@ -383,152 +383,152 @@ smallvec = "1.13.2" smpl_jwt = "0.7.1" socket2 = "0.5.7" soketto = "0.7" -solana-account = { path = "sdk/account", version = "=2.1.4" } -solana-account-decoder = { path = "account-decoder", version = "=2.1.4" } -solana-account-decoder-client-types = { path = "account-decoder-client-types", version = "=2.1.4" } -solana-account-info = { path = "sdk/account-info", version = "=2.1.4" } -solana-accounts-db = { path = "accounts-db", version = "=2.1.4" } -solana-address-lookup-table-program = { path = "programs/address-lookup-table", version = "=2.1.4" } -solana-atomic-u64 = { path = "sdk/atomic-u64", version = "=2.1.4" } -solana-banks-client = { path = "banks-client", version = "=2.1.4" } -solana-banks-interface = { path = "banks-interface", version = "=2.1.4" } -solana-banks-server = { path = "banks-server", version = "=2.1.4" } -solana-bench-tps = { path = "bench-tps", version = "=2.1.4" } -solana-bincode = { path = "sdk/bincode", version = "=2.1.4" } -solana-bloom = { path = "bloom", version = "=2.1.4" } -solana-bn254 = { path = "curves/bn254", version = "=2.1.4" } -solana-borsh = { path = "sdk/borsh", version = "=2.1.4" } -solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=2.1.4" } -solana-bucket-map = { path = "bucket_map", version = "=2.1.4" } -solana-builtins-default-costs = { path = "builtins-default-costs", version = "=2.1.4" } -agave-cargo-registry = { path = "cargo-registry", version = "=2.1.4" } -solana-clap-utils = { path = "clap-utils", version = "=2.1.4" } -solana-clap-v3-utils = { path = "clap-v3-utils", version = "=2.1.4" } -solana-cli = { path = "cli", version = "=2.1.4" } -solana-cli-config = { path = "cli-config", version = "=2.1.4" } -solana-cli-output = { path = "cli-output", version = "=2.1.4" } -solana-client = { path = "client", version = "=2.1.4" } -solana-clock = { path = "sdk/clock", version = "=2.1.4" } -solana-compute-budget = { path = "compute-budget", version = "=2.1.4" } -solana-compute-budget-program = { path = "programs/compute-budget", version = "=2.1.4" } -solana-config-program = { path = "programs/config", version = "=2.1.4" } -solana-connection-cache = { path = "connection-cache", version = "=2.1.4", default-features = false } -solana-core = { path = "core", version = "=2.1.4" } -solana-cost-model = { path = "cost-model", version = "=2.1.4" } -solana-cpi = { path = "sdk/cpi", version = "=2.1.4" } -solana-curve25519 = { path = "curves/curve25519", version = "=2.1.4" } -solana-decode-error = { path = "sdk/decode-error", version = "=2.1.4" } -solana-define-syscall = { path = "define-syscall", version = "=2.1.4" } -solana-derivation-path = { path = "sdk/derivation-path", version = "=2.1.4" } -solana-download-utils = { path = "download-utils", version = "=2.1.4" } -solana-entry = { path = "entry", version = "=2.1.4" } -solana-program-entrypoint = { path = "sdk/program-entrypoint", version = "=2.1.4" } -solana-epoch-schedule = { path = "sdk/epoch-schedule", version = "=2.1.4" } -solana-faucet = { path = "faucet", version = "=2.1.4" } -solana-feature-set = { path = "sdk/feature-set", version = "=2.1.4" } -solana-fee-calculator = { path = "sdk/fee-calculator", version = "=2.1.4" } -solana-fee = { path = "fee", version = "=2.1.4" } -solana-frozen-abi = { path = "frozen-abi", version = "=2.1.4" } -solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=2.1.4" } -solana-tps-client = { path = "tps-client", version = "=2.1.4" } -solana-genesis = { path = "genesis", version = "=2.1.4" } -solana-genesis-utils = { path = "genesis-utils", version = "=2.1.4" } -agave-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=2.1.4" } -solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=2.1.4" } -solana-gossip = { path = "gossip", version = "=2.1.4" } -solana-hash = { path = "sdk/hash", version = "=2.1.4", default-features = false } -solana-inflation = { path = "sdk/inflation", version = "=2.1.4" } -solana-inline-spl = { path = "inline-spl", version = "=2.1.4" } -solana-instruction = { path = "sdk/instruction", version = "=2.1.4", default-features = false } -solana-last-restart-slot = { path = "sdk/last-restart-slot", version = "=2.1.4" } -solana-lattice-hash = { path = "lattice-hash", version = "=2.1.4" } -solana-ledger = { path = "ledger", version = "=2.1.4" } -solana-loader-v4-program = { path = "programs/loader-v4", version = "=2.1.4" } -solana-local-cluster = { path = "local-cluster", version = "=2.1.4" } -solana-log-collector = { path = "log-collector", version = "=2.1.4" } -solana-logger = { path = "logger", version = "=2.1.4" } -solana-measure = { path = "measure", version = "=2.1.4" } -solana-merkle-tree = { path = "merkle-tree", version = "=2.1.4" } -solana-metrics = { path = "metrics", version = "=2.1.4" } -solana-msg = { path = "sdk/msg", version = "=2.1.4" } -solana-native-token = { path = "sdk/native-token", version = "=2.1.4" } -solana-net-utils = { path = "net-utils", version = "=2.1.4" } +solana-account = { path = "sdk/account", version = "=2.1.5" } +solana-account-decoder = { path = "account-decoder", version = "=2.1.5" } +solana-account-decoder-client-types = { path = "account-decoder-client-types", version = "=2.1.5" } +solana-account-info = { path = "sdk/account-info", version = "=2.1.5" } +solana-accounts-db = { path = "accounts-db", version = "=2.1.5" } +solana-address-lookup-table-program = { path = "programs/address-lookup-table", version = "=2.1.5" } +solana-atomic-u64 = { path = "sdk/atomic-u64", version = "=2.1.5" } +solana-banks-client = { path = "banks-client", version = "=2.1.5" } +solana-banks-interface = { path = "banks-interface", version = "=2.1.5" } +solana-banks-server = { path = "banks-server", version = "=2.1.5" } +solana-bench-tps = { path = "bench-tps", version = "=2.1.5" } +solana-bincode = { path = "sdk/bincode", version = "=2.1.5" } +solana-bloom = { path = "bloom", version = "=2.1.5" } +solana-bn254 = { path = "curves/bn254", version = "=2.1.5" } +solana-borsh = { path = "sdk/borsh", version = "=2.1.5" } +solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=2.1.5" } +solana-bucket-map = { path = "bucket_map", version = "=2.1.5" } +solana-builtins-default-costs = { path = "builtins-default-costs", version = "=2.1.5" } +agave-cargo-registry = { path = "cargo-registry", version = "=2.1.5" } +solana-clap-utils = { path = "clap-utils", version = "=2.1.5" } +solana-clap-v3-utils = { path = "clap-v3-utils", version = "=2.1.5" } +solana-cli = { path = "cli", version = "=2.1.5" } +solana-cli-config = { path = "cli-config", version = "=2.1.5" } +solana-cli-output = { path = "cli-output", version = "=2.1.5" } +solana-client = { path = "client", version = "=2.1.5" } +solana-clock = { path = "sdk/clock", version = "=2.1.5" } +solana-compute-budget = { path = "compute-budget", version = "=2.1.5" } +solana-compute-budget-program = { path = "programs/compute-budget", version = "=2.1.5" } +solana-config-program = { path = "programs/config", version = "=2.1.5" } +solana-connection-cache = { path = "connection-cache", version = "=2.1.5", default-features = false } +solana-core = { path = "core", version = "=2.1.5" } +solana-cost-model = { path = "cost-model", version = "=2.1.5" } +solana-cpi = { path = "sdk/cpi", version = "=2.1.5" } +solana-curve25519 = { path = "curves/curve25519", version = "=2.1.5" } +solana-decode-error = { path = "sdk/decode-error", version = "=2.1.5" } +solana-define-syscall = { path = "define-syscall", version = "=2.1.5" } +solana-derivation-path = { path = "sdk/derivation-path", version = "=2.1.5" } +solana-download-utils = { path = "download-utils", version = "=2.1.5" } +solana-entry = { path = "entry", version = "=2.1.5" } +solana-program-entrypoint = { path = "sdk/program-entrypoint", version = "=2.1.5" } +solana-epoch-schedule = { path = "sdk/epoch-schedule", version = "=2.1.5" } +solana-faucet = { path = "faucet", version = "=2.1.5" } +solana-feature-set = { path = "sdk/feature-set", version = "=2.1.5" } +solana-fee-calculator = { path = "sdk/fee-calculator", version = "=2.1.5" } +solana-fee = { path = "fee", version = "=2.1.5" } +solana-frozen-abi = { path = "frozen-abi", version = "=2.1.5" } +solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=2.1.5" } +solana-tps-client = { path = "tps-client", version = "=2.1.5" } +solana-genesis = { path = "genesis", version = "=2.1.5" } +solana-genesis-utils = { path = "genesis-utils", version = "=2.1.5" } +agave-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=2.1.5" } +solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=2.1.5" } +solana-gossip = { path = "gossip", version = "=2.1.5" } +solana-hash = { path = "sdk/hash", version = "=2.1.5", default-features = false } +solana-inflation = { path = "sdk/inflation", version = "=2.1.5" } +solana-inline-spl = { path = "inline-spl", version = "=2.1.5" } +solana-instruction = { path = "sdk/instruction", version = "=2.1.5", default-features = false } +solana-last-restart-slot = { path = "sdk/last-restart-slot", version = "=2.1.5" } +solana-lattice-hash = { path = "lattice-hash", version = "=2.1.5" } +solana-ledger = { path = "ledger", version = "=2.1.5" } +solana-loader-v4-program = { path = "programs/loader-v4", version = "=2.1.5" } +solana-local-cluster = { path = "local-cluster", version = "=2.1.5" } +solana-log-collector = { path = "log-collector", version = "=2.1.5" } +solana-logger = { path = "logger", version = "=2.1.5" } +solana-measure = { path = "measure", version = "=2.1.5" } +solana-merkle-tree = { path = "merkle-tree", version = "=2.1.5" } +solana-metrics = { path = "metrics", version = "=2.1.5" } +solana-msg = { path = "sdk/msg", version = "=2.1.5" } +solana-native-token = { path = "sdk/native-token", version = "=2.1.5" } +solana-net-utils = { path = "net-utils", version = "=2.1.5" } solana-nohash-hasher = "0.2.1" -solana-notifier = { path = "notifier", version = "=2.1.4" } -solana-package-metadata = { path = "sdk/package-metadata", version = "=2.1.4" } -solana-package-metadata-macro = { path = "sdk/package-metadata-macro", version = "=2.1.4" } -solana-packet = { path = "sdk/packet", version = "=2.1.4" } -solana-perf = { path = "perf", version = "=2.1.4" } -solana-poh = { path = "poh", version = "=2.1.4" } -solana-poseidon = { path = "poseidon", version = "=2.1.4" } -solana-precompile-error = { path = "sdk/precompile-error", version = "=2.1.4" } -solana-program = { path = "sdk/program", version = "=2.1.4", default-features = false } -solana-program-error = { path = "sdk/program-error", version = "=2.1.4" } -solana-program-memory = { path = "sdk/program-memory", version = "=2.1.4" } -solana-program-option = { path = "sdk/program-option", version = "=2.1.4" } -solana-program-pack = { path = "sdk/program-pack", version = "=2.1.4" } -solana-program-runtime = { path = "program-runtime", version = "=2.1.4" } -solana-program-test = { path = "program-test", version = "=2.1.4" } -solana-pubkey = { path = "sdk/pubkey", version = "=2.1.4", default-features = false } -solana-pubsub-client = { path = "pubsub-client", version = "=2.1.4" } -solana-quic-client = { path = "quic-client", version = "=2.1.4" } -solana-rayon-threadlimit = { path = "rayon-threadlimit", version = "=2.1.4" } -solana-remote-wallet = { path = "remote-wallet", version = "=2.1.4", default-features = false } -solana-rent = { path = "sdk/rent", version = "=2.1.4", default-features = false } -solana-sanitize = { path = "sdk/sanitize", version = "=2.1.4" } -solana-secp256r1-program = { path = "sdk/secp256r1-program", version = "=2.1.4", default-features = false } -solana-serde-varint = { path = "sdk/serde-varint", version = "=2.1.4" } -solana-serialize-utils = { path = "sdk/serialize-utils", version = "=2.1.4" } -solana-sha256-hasher = { path = "sdk/sha256-hasher", version = "=2.1.4" } -solana-signature = { path = "sdk/signature", version = "=2.1.4", default-features = false } -solana-slot-hashes = { path = "sdk/slot-hashes", version = "=2.1.4" } -solana-slot-history = { path = "sdk/slot-history", version = "=2.1.4" } -solana-timings = { path = "timings", version = "=2.1.4" } -solana-unified-scheduler-logic = { path = "unified-scheduler-logic", version = "=2.1.4" } -solana-unified-scheduler-pool = { path = "unified-scheduler-pool", version = "=2.1.4" } -solana-rpc = { path = "rpc", version = "=2.1.4" } -solana-rpc-client = { path = "rpc-client", version = "=2.1.4", default-features = false } -solana-rpc-client-api = { path = "rpc-client-api", version = "=2.1.4" } -solana-rpc-client-nonce-utils = { path = "rpc-client-nonce-utils", version = "=2.1.4" } -solana-runtime = { path = "runtime", version = "=2.1.4" } -solana-runtime-transaction = { path = "runtime-transaction", version = "=2.1.4" } -solana-sdk = { path = "sdk", version = "=2.1.4" } -solana-sdk-macro = { path = "sdk/macro", version = "=2.1.4" } -solana-secp256k1-recover = { path = "curves/secp256k1-recover", version = "=2.1.4", default-features = false } -solana-send-transaction-service = { path = "send-transaction-service", version = "=2.1.4" } -solana-short-vec = { path = "short-vec", version = "=2.1.4" } -solana-stable-layout = { path = "sdk/stable-layout", version = "=2.1.4" } -solana-stake-program = { path = "programs/stake", version = "=2.1.4" } -solana-storage-bigtable = { path = "storage-bigtable", version = "=2.1.4" } -solana-storage-proto = { path = "storage-proto", version = "=2.1.4" } -solana-streamer = { path = "streamer", version = "=2.1.4" } -solana-svm = { path = "svm", version = "=2.1.4" } -solana-svm-conformance = { path = "svm-conformance", version = "=2.1.4" } -solana-svm-example-paytube = { path = "svm/examples/paytube", version = "=2.1.4" } -solana-svm-rent-collector = { path = "svm-rent-collector", version = "=2.1.4" } -solana-svm-transaction = { path = "svm-transaction", version = "=2.1.4" } -solana-system-program = { path = "programs/system", version = "=2.1.4" } -solana-sysvar-id = { path = "sdk/sysvar-id", version = "=2.1.4" } -solana-test-validator = { path = "test-validator", version = "=2.1.4" } -solana-thin-client = { path = "thin-client", version = "=2.1.4" } -solana-transaction-error = { path = "sdk/transaction-error", version = "=2.1.4" } -solana-tpu-client = { path = "tpu-client", version = "=2.1.4", default-features = false } -solana-tpu-client-next = { path = "tpu-client-next", version = "=2.1.4" } -solana-transaction-status = { path = "transaction-status", version = "=2.1.4" } -solana-transaction-status-client-types = { path = "transaction-status-client-types", version = "=2.1.4" } -solana-transaction-metrics-tracker = { path = "transaction-metrics-tracker", version = "=2.1.4" } -solana-turbine = { path = "turbine", version = "=2.1.4" } -solana-type-overrides = { path = "type-overrides", version = "=2.1.4" } -solana-udp-client = { path = "udp-client", version = "=2.1.4" } -solana-version = { path = "version", version = "=2.1.4" } -solana-vote = { path = "vote", version = "=2.1.4" } -solana-vote-program = { path = "programs/vote", version = "=2.1.4" } -solana-wen-restart = { path = "wen-restart", version = "=2.1.4" } -solana-zk-elgamal-proof-program = { path = "programs/zk-elgamal-proof", version = "=2.1.4" } -solana-zk-keygen = { path = "zk-keygen", version = "=2.1.4" } -solana-zk-sdk = { path = "zk-sdk", version = "=2.1.4" } -solana-zk-token-proof-program = { path = "programs/zk-token-proof", version = "=2.1.4" } -solana-zk-token-sdk = { path = "zk-token-sdk", version = "=2.1.4" } +solana-notifier = { path = "notifier", version = "=2.1.5" } +solana-package-metadata = { path = "sdk/package-metadata", version = "=2.1.5" } +solana-package-metadata-macro = { path = "sdk/package-metadata-macro", version = "=2.1.5" } +solana-packet = { path = "sdk/packet", version = "=2.1.5" } +solana-perf = { path = "perf", version = "=2.1.5" } +solana-poh = { path = "poh", version = "=2.1.5" } +solana-poseidon = { path = "poseidon", version = "=2.1.5" } +solana-precompile-error = { path = "sdk/precompile-error", version = "=2.1.5" } +solana-program = { path = "sdk/program", version = "=2.1.5", default-features = false } +solana-program-error = { path = "sdk/program-error", version = "=2.1.5" } +solana-program-memory = { path = "sdk/program-memory", version = "=2.1.5" } +solana-program-option = { path = "sdk/program-option", version = "=2.1.5" } +solana-program-pack = { path = "sdk/program-pack", version = "=2.1.5" } +solana-program-runtime = { path = "program-runtime", version = "=2.1.5" } +solana-program-test = { path = "program-test", version = "=2.1.5" } +solana-pubkey = { path = "sdk/pubkey", version = "=2.1.5", default-features = false } +solana-pubsub-client = { path = "pubsub-client", version = "=2.1.5" } +solana-quic-client = { path = "quic-client", version = "=2.1.5" } +solana-rayon-threadlimit = { path = "rayon-threadlimit", version = "=2.1.5" } +solana-remote-wallet = { path = "remote-wallet", version = "=2.1.5", default-features = false } +solana-rent = { path = "sdk/rent", version = "=2.1.5", default-features = false } +solana-sanitize = { path = "sdk/sanitize", version = "=2.1.5" } +solana-secp256r1-program = { path = "sdk/secp256r1-program", version = "=2.1.5", default-features = false } +solana-serde-varint = { path = "sdk/serde-varint", version = "=2.1.5" } +solana-serialize-utils = { path = "sdk/serialize-utils", version = "=2.1.5" } +solana-sha256-hasher = { path = "sdk/sha256-hasher", version = "=2.1.5" } +solana-signature = { path = "sdk/signature", version = "=2.1.5", default-features = false } +solana-slot-hashes = { path = "sdk/slot-hashes", version = "=2.1.5" } +solana-slot-history = { path = "sdk/slot-history", version = "=2.1.5" } +solana-timings = { path = "timings", version = "=2.1.5" } +solana-unified-scheduler-logic = { path = "unified-scheduler-logic", version = "=2.1.5" } +solana-unified-scheduler-pool = { path = "unified-scheduler-pool", version = "=2.1.5" } +solana-rpc = { path = "rpc", version = "=2.1.5" } +solana-rpc-client = { path = "rpc-client", version = "=2.1.5", default-features = false } +solana-rpc-client-api = { path = "rpc-client-api", version = "=2.1.5" } +solana-rpc-client-nonce-utils = { path = "rpc-client-nonce-utils", version = "=2.1.5" } +solana-runtime = { path = "runtime", version = "=2.1.5" } +solana-runtime-transaction = { path = "runtime-transaction", version = "=2.1.5" } +solana-sdk = { path = "sdk", version = "=2.1.5" } +solana-sdk-macro = { path = "sdk/macro", version = "=2.1.5" } +solana-secp256k1-recover = { path = "curves/secp256k1-recover", version = "=2.1.5", default-features = false } +solana-send-transaction-service = { path = "send-transaction-service", version = "=2.1.5" } +solana-short-vec = { path = "short-vec", version = "=2.1.5" } +solana-stable-layout = { path = "sdk/stable-layout", version = "=2.1.5" } +solana-stake-program = { path = "programs/stake", version = "=2.1.5" } +solana-storage-bigtable = { path = "storage-bigtable", version = "=2.1.5" } +solana-storage-proto = { path = "storage-proto", version = "=2.1.5" } +solana-streamer = { path = "streamer", version = "=2.1.5" } +solana-svm = { path = "svm", version = "=2.1.5" } +solana-svm-conformance = { path = "svm-conformance", version = "=2.1.5" } +solana-svm-example-paytube = { path = "svm/examples/paytube", version = "=2.1.5" } +solana-svm-rent-collector = { path = "svm-rent-collector", version = "=2.1.5" } +solana-svm-transaction = { path = "svm-transaction", version = "=2.1.5" } +solana-system-program = { path = "programs/system", version = "=2.1.5" } +solana-sysvar-id = { path = "sdk/sysvar-id", version = "=2.1.5" } +solana-test-validator = { path = "test-validator", version = "=2.1.5" } +solana-thin-client = { path = "thin-client", version = "=2.1.5" } +solana-transaction-error = { path = "sdk/transaction-error", version = "=2.1.5" } +solana-tpu-client = { path = "tpu-client", version = "=2.1.5", default-features = false } +solana-tpu-client-next = { path = "tpu-client-next", version = "=2.1.5" } +solana-transaction-status = { path = "transaction-status", version = "=2.1.5" } +solana-transaction-status-client-types = { path = "transaction-status-client-types", version = "=2.1.5" } +solana-transaction-metrics-tracker = { path = "transaction-metrics-tracker", version = "=2.1.5" } +solana-turbine = { path = "turbine", version = "=2.1.5" } +solana-type-overrides = { path = "type-overrides", version = "=2.1.5" } +solana-udp-client = { path = "udp-client", version = "=2.1.5" } +solana-version = { path = "version", version = "=2.1.5" } +solana-vote = { path = "vote", version = "=2.1.5" } +solana-vote-program = { path = "programs/vote", version = "=2.1.5" } +solana-wen-restart = { path = "wen-restart", version = "=2.1.5" } +solana-zk-elgamal-proof-program = { path = "programs/zk-elgamal-proof", version = "=2.1.5" } +solana-zk-keygen = { path = "zk-keygen", version = "=2.1.5" } +solana-zk-sdk = { path = "zk-sdk", version = "=2.1.5" } +solana-zk-token-proof-program = { path = "programs/zk-token-proof", version = "=2.1.5" } +solana-zk-token-sdk = { path = "zk-token-sdk", version = "=2.1.5" } solana_rbpf = "=0.8.5" spl-associated-token-account = "=4.0.0" spl-instruction-padding = "0.2" diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index 65f10f245a3abb..d06fa860f21d2c 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -65,7 +65,7 @@ dependencies = [ [[package]] name = "agave-geyser-plugin-interface" -version = "2.1.4" +version = "2.1.5" dependencies = [ "log", "solana-sdk", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "agave-transaction-view" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-sdk", "solana-svm-transaction", @@ -83,7 +83,7 @@ dependencies = [ [[package]] name = "agave-validator" -version = "2.1.4" +version = "2.1.5" dependencies = [ "agave-geyser-plugin-interface", "chrono", @@ -4725,7 +4725,7 @@ dependencies = [ [[package]] name = "solana-account" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "qualifier_attr", @@ -4738,7 +4738,7 @@ dependencies = [ [[package]] name = "solana-account-decoder" -version = "2.1.4" +version = "2.1.5" dependencies = [ "Inflector", "base64 0.22.1", @@ -4762,7 +4762,7 @@ dependencies = [ [[package]] name = "solana-account-decoder-client-types" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "bs58", @@ -4776,7 +4776,7 @@ dependencies = [ [[package]] name = "solana-account-info" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "serde", @@ -4787,7 +4787,7 @@ dependencies = [ [[package]] name = "solana-accounts-db" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ahash 0.8.11", "bincode", @@ -4831,7 +4831,7 @@ dependencies = [ [[package]] name = "solana-address-lookup-table-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "bytemuck", @@ -4848,14 +4848,14 @@ dependencies = [ [[package]] name = "solana-atomic-u64" -version = "2.1.4" +version = "2.1.5" dependencies = [ "parking_lot 0.12.2", ] [[package]] name = "solana-banks-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "borsh 1.5.1", "futures 0.3.31", @@ -4870,7 +4870,7 @@ dependencies = [ [[package]] name = "solana-banks-interface" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -4880,7 +4880,7 @@ dependencies = [ [[package]] name = "solana-banks-server" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "crossbeam-channel", @@ -4899,7 +4899,7 @@ dependencies = [ [[package]] name = "solana-bincode" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "serde", @@ -4908,7 +4908,7 @@ dependencies = [ [[package]] name = "solana-bloom" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bv", "fnv", @@ -4922,7 +4922,7 @@ dependencies = [ [[package]] name = "solana-bn254" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ark-bn254", "ark-ec", @@ -4935,7 +4935,7 @@ dependencies = [ [[package]] name = "solana-borsh" -version = "2.1.4" +version = "2.1.5" dependencies = [ "borsh 0.10.3", "borsh 1.5.1", @@ -4943,7 +4943,7 @@ dependencies = [ [[package]] name = "solana-bpf-loader-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "byteorder 1.5.0", @@ -4968,7 +4968,7 @@ dependencies = [ [[package]] name = "solana-bucket-map" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bv", "bytemuck", @@ -4985,7 +4985,7 @@ dependencies = [ [[package]] name = "solana-builtins-default-costs" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ahash 0.8.11", "lazy_static", @@ -5003,7 +5003,7 @@ dependencies = [ [[package]] name = "solana-clap-utils" -version = "2.1.4" +version = "2.1.5" dependencies = [ "chrono", "clap", @@ -5019,7 +5019,7 @@ dependencies = [ [[package]] name = "solana-cli-config" -version = "2.1.4" +version = "2.1.5" dependencies = [ "dirs-next", "lazy_static", @@ -5033,7 +5033,7 @@ dependencies = [ [[package]] name = "solana-cli-output" -version = "2.1.4" +version = "2.1.5" dependencies = [ "Inflector", "base64 0.22.1", @@ -5058,7 +5058,7 @@ dependencies = [ [[package]] name = "solana-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "async-trait", "bincode", @@ -5088,7 +5088,7 @@ dependencies = [ [[package]] name = "solana-clock" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -5098,14 +5098,14 @@ dependencies = [ [[package]] name = "solana-compute-budget" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-sdk", ] [[package]] name = "solana-compute-budget-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program-runtime", "solana-sdk", @@ -5113,7 +5113,7 @@ dependencies = [ [[package]] name = "solana-config-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "chrono", @@ -5127,7 +5127,7 @@ dependencies = [ [[package]] name = "solana-connection-cache" -version = "2.1.4" +version = "2.1.5" dependencies = [ "async-trait", "bincode", @@ -5146,7 +5146,7 @@ dependencies = [ [[package]] name = "solana-core" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ahash 0.8.11", "anyhow", @@ -5230,7 +5230,7 @@ dependencies = [ [[package]] name = "solana-cost-model" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ahash 0.8.11", "lazy_static", @@ -5247,7 +5247,7 @@ dependencies = [ [[package]] name = "solana-cpi" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-account-info", "solana-define-syscall", @@ -5259,7 +5259,7 @@ dependencies = [ [[package]] name = "solana-curve25519" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bytemuck", "bytemuck_derive", @@ -5270,18 +5270,18 @@ dependencies = [ [[package]] name = "solana-decode-error" -version = "2.1.4" +version = "2.1.5" dependencies = [ "num-traits", ] [[package]] name = "solana-define-syscall" -version = "2.1.4" +version = "2.1.5" [[package]] name = "solana-derivation-path" -version = "2.1.4" +version = "2.1.5" dependencies = [ "derivation-path", "qstring", @@ -5290,7 +5290,7 @@ dependencies = [ [[package]] name = "solana-download-utils" -version = "2.1.4" +version = "2.1.5" dependencies = [ "console", "indicatif", @@ -5302,7 +5302,7 @@ dependencies = [ [[package]] name = "solana-entry" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "crossbeam-channel", @@ -5322,7 +5322,7 @@ dependencies = [ [[package]] name = "solana-epoch-schedule" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -5332,7 +5332,7 @@ dependencies = [ [[package]] name = "solana-faucet" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "byteorder 1.5.0", @@ -5354,7 +5354,7 @@ dependencies = [ [[package]] name = "solana-feature-set" -version = "2.1.4" +version = "2.1.5" dependencies = [ "lazy_static", "solana-clock", @@ -5366,7 +5366,7 @@ dependencies = [ [[package]] name = "solana-fee" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-sdk", "solana-svm-transaction", @@ -5374,7 +5374,7 @@ dependencies = [ [[package]] name = "solana-fee-calculator" -version = "2.1.4" +version = "2.1.5" dependencies = [ "log", "serde", @@ -5383,7 +5383,7 @@ dependencies = [ [[package]] name = "solana-genesis-utils" -version = "2.1.4" +version = "2.1.5" dependencies = [ "log", "solana-accounts-db", @@ -5394,7 +5394,7 @@ dependencies = [ [[package]] name = "solana-geyser-plugin-manager" -version = "2.1.4" +version = "2.1.5" dependencies = [ "agave-geyser-plugin-interface", "bs58", @@ -5419,7 +5419,7 @@ dependencies = [ [[package]] name = "solana-gossip" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -5468,7 +5468,7 @@ dependencies = [ [[package]] name = "solana-hash" -version = "2.1.4" +version = "2.1.5" dependencies = [ "borsh 1.5.1", "bs58", @@ -5484,7 +5484,7 @@ dependencies = [ [[package]] name = "solana-inflation" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -5492,7 +5492,7 @@ dependencies = [ [[package]] name = "solana-inline-spl" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bytemuck", "solana-pubkey", @@ -5500,7 +5500,7 @@ dependencies = [ [[package]] name = "solana-instruction" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "borsh 1.5.1", @@ -5516,7 +5516,7 @@ dependencies = [ [[package]] name = "solana-last-restart-slot" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -5526,7 +5526,7 @@ dependencies = [ [[package]] name = "solana-lattice-hash" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "blake3", @@ -5536,7 +5536,7 @@ dependencies = [ [[package]] name = "solana-ledger" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "bincode", @@ -5607,7 +5607,7 @@ dependencies = [ [[package]] name = "solana-loader-v4-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "log", "solana-bpf-loader-program", @@ -5622,14 +5622,14 @@ dependencies = [ [[package]] name = "solana-log-collector" -version = "2.1.4" +version = "2.1.5" dependencies = [ "log", ] [[package]] name = "solana-logger" -version = "2.1.4" +version = "2.1.5" dependencies = [ "env_logger", "lazy_static", @@ -5638,11 +5638,11 @@ dependencies = [ [[package]] name = "solana-measure" -version = "2.1.4" +version = "2.1.5" [[package]] name = "solana-merkle-tree" -version = "2.1.4" +version = "2.1.5" dependencies = [ "fast-math", "solana-hash", @@ -5651,7 +5651,7 @@ dependencies = [ [[package]] name = "solana-metrics" -version = "2.1.4" +version = "2.1.5" dependencies = [ "crossbeam-channel", "gethostname", @@ -5664,18 +5664,18 @@ dependencies = [ [[package]] name = "solana-msg" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-define-syscall", ] [[package]] name = "solana-native-token" -version = "2.1.4" +version = "2.1.5" [[package]] name = "solana-net-utils" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "crossbeam-channel", @@ -5698,7 +5698,7 @@ checksum = "8b8a731ed60e89177c8a7ab05fe0f1511cedd3e70e773f288f9de33a9cfdc21e" [[package]] name = "solana-packet" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "bitflags 2.6.0", @@ -5710,7 +5710,7 @@ dependencies = [ [[package]] name = "solana-perf" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ahash 0.8.11", "bincode", @@ -5735,7 +5735,7 @@ dependencies = [ [[package]] name = "solana-poh" -version = "2.1.4" +version = "2.1.5" dependencies = [ "core_affinity", "crossbeam-channel", @@ -5751,7 +5751,7 @@ dependencies = [ [[package]] name = "solana-poseidon" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ark-bn254", "light-poseidon", @@ -5761,7 +5761,7 @@ dependencies = [ [[package]] name = "solana-precompile-error" -version = "2.1.4" +version = "2.1.5" dependencies = [ "num-traits", "solana-decode-error", @@ -5769,7 +5769,7 @@ dependencies = [ [[package]] name = "solana-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "bincode", @@ -5840,7 +5840,7 @@ dependencies = [ [[package]] name = "solana-program-entrypoint" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-account-info", "solana-msg", @@ -5850,7 +5850,7 @@ dependencies = [ [[package]] name = "solana-program-error" -version = "2.1.4" +version = "2.1.5" dependencies = [ "borsh 1.5.1", "num-traits", @@ -5864,7 +5864,7 @@ dependencies = [ [[package]] name = "solana-program-memory" -version = "2.1.4" +version = "2.1.5" dependencies = [ "num-traits", "solana-define-syscall", @@ -5872,18 +5872,18 @@ dependencies = [ [[package]] name = "solana-program-option" -version = "2.1.4" +version = "2.1.5" [[package]] name = "solana-program-pack" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program-error", ] [[package]] name = "solana-program-runtime" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "bincode", @@ -5911,7 +5911,7 @@ dependencies = [ [[package]] name = "solana-program-test" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "async-trait", @@ -5945,7 +5945,7 @@ dependencies = [ [[package]] name = "solana-pubkey" -version = "2.1.4" +version = "2.1.5" dependencies = [ "borsh 0.10.3", "borsh 1.5.1", @@ -5970,7 +5970,7 @@ dependencies = [ [[package]] name = "solana-pubsub-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "crossbeam-channel", "futures-util", @@ -5993,7 +5993,7 @@ dependencies = [ [[package]] name = "solana-quic-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "async-lock", "async-trait", @@ -6017,7 +6017,7 @@ dependencies = [ [[package]] name = "solana-rayon-threadlimit" -version = "2.1.4" +version = "2.1.5" dependencies = [ "lazy_static", "num_cpus", @@ -6025,7 +6025,7 @@ dependencies = [ [[package]] name = "solana-remote-wallet" -version = "2.1.4" +version = "2.1.5" dependencies = [ "console", "dialoguer", @@ -6043,7 +6043,7 @@ dependencies = [ [[package]] name = "solana-rent" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -6053,7 +6053,7 @@ dependencies = [ [[package]] name = "solana-rpc" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "bincode", @@ -6111,7 +6111,7 @@ dependencies = [ [[package]] name = "solana-rpc-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "async-trait", "base64 0.22.1", @@ -6136,7 +6136,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-api" -version = "2.1.4" +version = "2.1.5" dependencies = [ "anyhow", "base64 0.22.1", @@ -6158,7 +6158,7 @@ dependencies = [ [[package]] name = "solana-rpc-client-nonce-utils" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-rpc-client", "solana-sdk", @@ -6167,7 +6167,7 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "2.1.4" +version = "2.1.5" dependencies = [ "ahash 0.8.11", "aquamarine", @@ -6254,7 +6254,7 @@ dependencies = [ [[package]] name = "solana-runtime-transaction" -version = "2.1.4" +version = "2.1.5" dependencies = [ "agave-transaction-view", "log", @@ -6268,11 +6268,11 @@ dependencies = [ [[package]] name = "solana-sanitize" -version = "2.1.4" +version = "2.1.5" [[package]] name = "solana-sbf-programs" -version = "2.1.4" +version = "2.1.5" dependencies = [ "agave-validator", "bincode", @@ -6314,7 +6314,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-128bit" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", "solana-sbf-rust-128bit-dep", @@ -6322,21 +6322,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-128bit-dep" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-alloc" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-alt-bn128" -version = "2.1.4" +version = "2.1.5" dependencies = [ "array-bytes", "solana-bn254", @@ -6345,7 +6345,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-alt-bn128-compression" -version = "2.1.4" +version = "2.1.5" dependencies = [ "array-bytes", "solana-bn254", @@ -6354,7 +6354,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-big-mod-exp" -version = "2.1.4" +version = "2.1.5" dependencies = [ "array-bytes", "serde", @@ -6365,7 +6365,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-call-args" -version = "2.1.4" +version = "2.1.5" dependencies = [ "borsh 1.5.1", "solana-program", @@ -6373,21 +6373,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-call-depth" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-caller-access" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-curve25519" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-curve25519", "solana-program", @@ -6396,14 +6396,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-custom-heap" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-dep-crate" -version = "2.1.4" +version = "2.1.5" dependencies = [ "byteorder 1.5.0", "solana-program", @@ -6411,21 +6411,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-deprecated-loader" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-dup-accounts" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-error-handling" -version = "2.1.4" +version = "2.1.5" dependencies = [ "num-derive", "num-traits", @@ -6436,42 +6436,42 @@ dependencies = [ [[package]] name = "solana-sbf-rust-external-spend" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-finalize" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-get-minimum-delegation" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-inner_instruction_alignment_check" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-instruction-introspection" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", "solana-sbf-rust-invoke-dep", @@ -6481,32 +6481,32 @@ dependencies = [ [[package]] name = "solana-sbf-rust-invoke-and-error" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke-and-ok" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke-and-return" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-invoke-dep" -version = "2.1.4" +version = "2.1.5" [[package]] name = "solana-sbf-rust-invoked" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", "solana-sbf-rust-invoked-dep", @@ -6514,28 +6514,28 @@ dependencies = [ [[package]] name = "solana-sbf-rust-invoked-dep" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-iter" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-log-data" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-many-args" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", "solana-sbf-rust-many-args-dep", @@ -6543,14 +6543,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-many-args-dep" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-mem" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", "solana-sbf-rust-mem-dep", @@ -6558,14 +6558,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-mem-dep" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-membuiltins" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", "solana-sbf-rust-mem-dep", @@ -6573,21 +6573,21 @@ dependencies = [ [[package]] name = "solana-sbf-rust-noop" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-panic" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-param-passing" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", "solana-sbf-rust-param-passing-dep", @@ -6595,14 +6595,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-param-passing-dep" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-poseidon" -version = "2.1.4" +version = "2.1.5" dependencies = [ "array-bytes", "solana-poseidon", @@ -6611,7 +6611,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-rand" -version = "2.1.4" +version = "2.1.5" dependencies = [ "getrandom 0.2.10", "rand 0.8.5", @@ -6620,7 +6620,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-realloc" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", "solana-sbf-rust-realloc-dep", @@ -6628,14 +6628,14 @@ dependencies = [ [[package]] name = "solana-sbf-rust-realloc-dep" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-realloc-invoke" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", "solana-sbf-rust-realloc-dep", @@ -6644,39 +6644,39 @@ dependencies = [ [[package]] name = "solana-sbf-rust-realloc-invoke-dep" -version = "2.1.4" +version = "2.1.5" [[package]] name = "solana-sbf-rust-remaining-compute-units" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-ro-account_modify" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-ro-modify" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-sanity" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-secp256k1-recover" -version = "2.1.4" +version = "2.1.5" dependencies = [ "libsecp256k1 0.7.0", "solana-program", @@ -6685,7 +6685,7 @@ dependencies = [ [[package]] name = "solana-sbf-rust-sha" -version = "2.1.4" +version = "2.1.5" dependencies = [ "blake3", "solana-program", @@ -6693,42 +6693,42 @@ dependencies = [ [[package]] name = "solana-sbf-rust-sibling-inner-instructions" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-sibling-instructions" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-simulation" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-spoof1" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-spoof1-system" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-sysvar" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "solana-program", @@ -6736,28 +6736,28 @@ dependencies = [ [[package]] name = "solana-sbf-rust-upgradeable" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-rust-upgraded" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sbf-syscall-get-epoch-stake" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-program", ] [[package]] name = "solana-sdk" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "bitflags 2.6.0", @@ -6820,7 +6820,7 @@ dependencies = [ [[package]] name = "solana-sdk-macro" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bs58", "proc-macro2", @@ -6830,7 +6830,7 @@ dependencies = [ [[package]] name = "solana-secp256k1-recover" -version = "2.1.4" +version = "2.1.5" dependencies = [ "borsh 1.5.1", "libsecp256k1 0.6.0", @@ -6840,7 +6840,7 @@ dependencies = [ [[package]] name = "solana-secp256r1-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bytemuck", "openssl", @@ -6858,7 +6858,7 @@ checksum = "468aa43b7edb1f9b7b7b686d5c3aeb6630dc1708e86e31343499dd5c4d775183" [[package]] name = "solana-send-transaction-service" -version = "2.1.4" +version = "2.1.5" dependencies = [ "crossbeam-channel", "log", @@ -6873,14 +6873,14 @@ dependencies = [ [[package]] name = "solana-serde-varint" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", ] [[package]] name = "solana-serialize-utils" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-instruction", "solana-pubkey", @@ -6889,7 +6889,7 @@ dependencies = [ [[package]] name = "solana-sha256-hasher" -version = "2.1.4" +version = "2.1.5" dependencies = [ "sha2 0.10.8", "solana-define-syscall", @@ -6898,14 +6898,14 @@ dependencies = [ [[package]] name = "solana-short-vec" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", ] [[package]] name = "solana-signature" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bs58", "ed25519-dalek", @@ -6918,7 +6918,7 @@ dependencies = [ [[package]] name = "solana-slot-hashes" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -6928,7 +6928,7 @@ dependencies = [ [[package]] name = "solana-slot-history" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bv", "serde", @@ -6938,7 +6938,7 @@ dependencies = [ [[package]] name = "solana-stable-layout" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-instruction", "solana-pubkey", @@ -6946,7 +6946,7 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "log", @@ -6961,7 +6961,7 @@ dependencies = [ [[package]] name = "solana-storage-bigtable" -version = "2.1.4" +version = "2.1.5" dependencies = [ "backoff", "bincode", @@ -6993,7 +6993,7 @@ dependencies = [ [[package]] name = "solana-storage-proto" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "bs58", @@ -7008,7 +7008,7 @@ dependencies = [ [[package]] name = "solana-streamer" -version = "2.1.4" +version = "2.1.5" dependencies = [ "async-channel", "bytes", @@ -7044,7 +7044,7 @@ dependencies = [ [[package]] name = "solana-svm" -version = "2.1.4" +version = "2.1.5" dependencies = [ "itertools 0.12.1", "log", @@ -7073,21 +7073,21 @@ dependencies = [ [[package]] name = "solana-svm-rent-collector" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-sdk", ] [[package]] name = "solana-svm-transaction" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-sdk", ] [[package]] name = "solana-system-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "log", @@ -7101,14 +7101,14 @@ dependencies = [ [[package]] name = "solana-sysvar-id" -version = "2.1.4" +version = "2.1.5" dependencies = [ "solana-pubkey", ] [[package]] name = "solana-test-validator" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "bincode", @@ -7139,7 +7139,7 @@ dependencies = [ [[package]] name = "solana-thin-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "log", @@ -7152,7 +7152,7 @@ dependencies = [ [[package]] name = "solana-timings" -version = "2.1.4" +version = "2.1.5" dependencies = [ "eager", "enum-iterator", @@ -7161,7 +7161,7 @@ dependencies = [ [[package]] name = "solana-tpu-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "async-trait", "bincode", @@ -7182,7 +7182,7 @@ dependencies = [ [[package]] name = "solana-transaction-error" -version = "2.1.4" +version = "2.1.5" dependencies = [ "serde", "serde_derive", @@ -7192,7 +7192,7 @@ dependencies = [ [[package]] name = "solana-transaction-metrics-tracker" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "bincode", @@ -7206,7 +7206,7 @@ dependencies = [ [[package]] name = "solana-transaction-status" -version = "2.1.4" +version = "2.1.5" dependencies = [ "Inflector", "base64 0.22.1", @@ -7232,7 +7232,7 @@ dependencies = [ [[package]] name = "solana-transaction-status-client-types" -version = "2.1.4" +version = "2.1.5" dependencies = [ "base64 0.22.1", "bincode", @@ -7248,7 +7248,7 @@ dependencies = [ [[package]] name = "solana-turbine" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "bytes", @@ -7286,7 +7286,7 @@ dependencies = [ [[package]] name = "solana-type-overrides" -version = "2.1.4" +version = "2.1.5" dependencies = [ "lazy_static", "rand 0.8.5", @@ -7294,7 +7294,7 @@ dependencies = [ [[package]] name = "solana-udp-client" -version = "2.1.4" +version = "2.1.5" dependencies = [ "async-trait", "solana-connection-cache", @@ -7307,7 +7307,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-logic" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "solana-sdk", @@ -7316,7 +7316,7 @@ dependencies = [ [[package]] name = "solana-unified-scheduler-pool" -version = "2.1.4" +version = "2.1.5" dependencies = [ "assert_matches", "crossbeam-channel", @@ -7336,7 +7336,7 @@ dependencies = [ [[package]] name = "solana-version" -version = "2.1.4" +version = "2.1.5" dependencies = [ "semver", "serde", @@ -7348,7 +7348,7 @@ dependencies = [ [[package]] name = "solana-vote" -version = "2.1.4" +version = "2.1.5" dependencies = [ "itertools 0.12.1", "log", @@ -7360,7 +7360,7 @@ dependencies = [ [[package]] name = "solana-vote-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bincode", "log", @@ -7378,7 +7378,7 @@ dependencies = [ [[package]] name = "solana-wen-restart" -version = "2.1.4" +version = "2.1.5" dependencies = [ "anyhow", "log", @@ -7399,7 +7399,7 @@ dependencies = [ [[package]] name = "solana-zk-elgamal-proof-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bytemuck", "num-derive", @@ -7412,7 +7412,7 @@ dependencies = [ [[package]] name = "solana-zk-sdk" -version = "2.1.4" +version = "2.1.5" dependencies = [ "aes-gcm-siv", "base64 0.22.1", @@ -7442,7 +7442,7 @@ dependencies = [ [[package]] name = "solana-zk-token-proof-program" -version = "2.1.4" +version = "2.1.5" dependencies = [ "bytemuck", "num-derive", @@ -7456,7 +7456,7 @@ dependencies = [ [[package]] name = "solana-zk-token-sdk" -version = "2.1.4" +version = "2.1.5" dependencies = [ "aes-gcm-siv", "base64 0.22.1", diff --git a/programs/sbf/Cargo.toml b/programs/sbf/Cargo.toml index 735a10c06a90ee..74ca108aacedf4 100644 --- a/programs/sbf/Cargo.toml +++ b/programs/sbf/Cargo.toml @@ -1,5 +1,5 @@ [workspace.package] -version = "2.1.4" +version = "2.1.5" description = "Solana SBF test program written in Rust" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -30,44 +30,44 @@ rand = "0.8" serde = "1.0.112" # must match the serde_derive version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251 serde_derive = "1.0.112" # must match the serde version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251 serde_json = "1.0.56" -solana-account-decoder = { path = "../../account-decoder", version = "=2.1.4" } -solana-accounts-db = { path = "../../accounts-db", version = "=2.1.4" } -solana-bn254 = { path = "../../curves/bn254", version = "=2.1.4" } -solana-bpf-loader-program = { path = "../bpf_loader", version = "=2.1.4" } -solana-cli-output = { path = "../../cli-output", version = "=2.1.4" } -solana-compute-budget = { path = "../../compute-budget", version = "=2.1.4" } -solana-curve25519 = { path = "../../curves/curve25519", version = "=2.1.4" } -solana-decode-error = { path = "../../sdk/decode-error", version = "=2.1.4" } -solana-feature-set = { path = "../../sdk/feature-set", version = "=2.1.4" } -solana-fee = { path = "../../fee", version = "=2.1.4" } -solana-ledger = { path = "../../ledger", version = "=2.1.4" } -solana-log-collector = { path = "../../log-collector", version = "=2.1.4" } -solana-logger = { path = "../../logger", version = "=2.1.4" } -solana-measure = { path = "../../measure", version = "=2.1.4" } -solana-poseidon = { path = "../../poseidon/", version = "=2.1.4" } -solana-program = { path = "../../sdk/program", version = "=2.1.4" } -solana-program-runtime = { path = "../../program-runtime", version = "=2.1.4" } -solana-runtime = { path = "../../runtime", version = "=2.1.4" } -solana-runtime-transaction = { path = "../../runtime-transaction", version = "=2.1.4" } -solana-sbf-rust-128bit-dep = { path = "rust/128bit_dep", version = "=2.1.4" } -solana-sbf-rust-invoke-dep = { path = "rust/invoke_dep", version = "=2.1.4" } -solana-sbf-rust-invoked-dep = { path = "rust/invoked_dep", version = "=2.1.4" } -solana-sbf-rust-many-args-dep = { path = "rust/many_args_dep", version = "=2.1.4" } -solana-sbf-rust-mem-dep = { path = "rust/mem_dep", version = "=2.1.4" } -solana-sbf-rust-param-passing-dep = { path = "rust/param_passing_dep", version = "=2.1.4" } -solana-sbf-rust-realloc-dep = { path = "rust/realloc_dep", version = "=2.1.4" } -solana-sbf-rust-realloc-invoke-dep = { path = "rust/realloc_invoke_dep", version = "=2.1.4" } -solana-sdk = { path = "../../sdk", version = "=2.1.4" } -solana-secp256k1-recover = { path = "../../curves/secp256k1-recover", version = "=2.1.4" } -solana-svm = { path = "../../svm", version = "=2.1.4" } -solana-svm-transaction = { path = "../../svm-transaction", version = "=2.1.4" } -solana-timings = { path = "../../timings", version = "=2.1.4" } -solana-transaction-status = { path = "../../transaction-status", version = "=2.1.4" } -solana-type-overrides = { path = "../../type-overrides", version = "=2.1.4" } -solana-vote = { path = "../../vote", version = "=2.1.4" } -solana-vote-program = { path = "../../programs/vote", version = "=2.1.4" } -agave-validator = { path = "../../validator", version = "=2.1.4" } -solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=2.1.4" } +solana-account-decoder = { path = "../../account-decoder", version = "=2.1.5" } +solana-accounts-db = { path = "../../accounts-db", version = "=2.1.5" } +solana-bn254 = { path = "../../curves/bn254", version = "=2.1.5" } +solana-bpf-loader-program = { path = "../bpf_loader", version = "=2.1.5" } +solana-cli-output = { path = "../../cli-output", version = "=2.1.5" } +solana-compute-budget = { path = "../../compute-budget", version = "=2.1.5" } +solana-curve25519 = { path = "../../curves/curve25519", version = "=2.1.5" } +solana-decode-error = { path = "../../sdk/decode-error", version = "=2.1.5" } +solana-feature-set = { path = "../../sdk/feature-set", version = "=2.1.5" } +solana-fee = { path = "../../fee", version = "=2.1.5" } +solana-ledger = { path = "../../ledger", version = "=2.1.5" } +solana-log-collector = { path = "../../log-collector", version = "=2.1.5" } +solana-logger = { path = "../../logger", version = "=2.1.5" } +solana-measure = { path = "../../measure", version = "=2.1.5" } +solana-poseidon = { path = "../../poseidon/", version = "=2.1.5" } +solana-program = { path = "../../sdk/program", version = "=2.1.5" } +solana-program-runtime = { path = "../../program-runtime", version = "=2.1.5" } +solana-runtime = { path = "../../runtime", version = "=2.1.5" } +solana-runtime-transaction = { path = "../../runtime-transaction", version = "=2.1.5" } +solana-sbf-rust-128bit-dep = { path = "rust/128bit_dep", version = "=2.1.5" } +solana-sbf-rust-invoke-dep = { path = "rust/invoke_dep", version = "=2.1.5" } +solana-sbf-rust-invoked-dep = { path = "rust/invoked_dep", version = "=2.1.5" } +solana-sbf-rust-many-args-dep = { path = "rust/many_args_dep", version = "=2.1.5" } +solana-sbf-rust-mem-dep = { path = "rust/mem_dep", version = "=2.1.5" } +solana-sbf-rust-param-passing-dep = { path = "rust/param_passing_dep", version = "=2.1.5" } +solana-sbf-rust-realloc-dep = { path = "rust/realloc_dep", version = "=2.1.5" } +solana-sbf-rust-realloc-invoke-dep = { path = "rust/realloc_invoke_dep", version = "=2.1.5" } +solana-sdk = { path = "../../sdk", version = "=2.1.5" } +solana-secp256k1-recover = { path = "../../curves/secp256k1-recover", version = "=2.1.5" } +solana-svm = { path = "../../svm", version = "=2.1.5" } +solana-svm-transaction = { path = "../../svm-transaction", version = "=2.1.5" } +solana-timings = { path = "../../timings", version = "=2.1.5" } +solana-transaction-status = { path = "../../transaction-status", version = "=2.1.5" } +solana-type-overrides = { path = "../../type-overrides", version = "=2.1.5" } +solana-vote = { path = "../../vote", version = "=2.1.5" } +solana-vote-program = { path = "../../programs/vote", version = "=2.1.5" } +agave-validator = { path = "../../validator", version = "=2.1.5" } +solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=2.1.5" } solana_rbpf = "=0.8.5" thiserror = "1.0" diff --git a/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml index afa20e97a5aca6..0d1cfb9e400fea 100644 --- a/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fail" -version = "2.1.4" +version = "2.1.5" description = "Solana SBF test program written in Rust" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -10,7 +10,7 @@ edition = "2021" publish = false [dependencies] -solana-program = { path = "../../../../program", version = "=2.1.4" } +solana-program = { path = "../../../../program", version = "=2.1.5" } [lib] crate-type = ["cdylib"] diff --git a/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml index 55e6f97495b1df..85433fb0936217 100644 --- a/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "noop" -version = "2.1.4" +version = "2.1.5" description = "Solana SBF test program written in Rust" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -10,7 +10,7 @@ edition = "2021" publish = false [dependencies] -solana-program = { path = "../../../../program", version = "=2.1.4" } +solana-program = { path = "../../../../program", version = "=2.1.5" } [lib] crate-type = ["cdylib"] diff --git a/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml index 1e1cd404710b60..2a12dc1dbd7915 100644 --- a/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/package-metadata/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "package-metadata" -version = "2.1.4" +version = "2.1.5" description = "Solana SBF test program with tools version in package metadata" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -14,8 +14,8 @@ tools-version = "v1.43" program-id = "MyProgram1111111111111111111111111111111111" [dependencies] -solana-package-metadata = { path = "../../../../package-metadata", version = "=2.1.4" } -solana-program = { path = "../../../../program", version = "=2.1.4" } +solana-package-metadata = { path = "../../../../package-metadata", version = "=2.1.5" } +solana-program = { path = "../../../../program", version = "=2.1.5" } [lib] crate-type = ["cdylib"] diff --git a/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml index 11ddde1ff565fa..0d7f9e72b9f2a6 100644 --- a/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/workspace-metadata/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "workspace-metadata" -version = "2.1.4" +version = "2.1.5" description = "Solana SBF test program with tools version in workspace metadata" authors = ["Anza Maintainers "] repository = "https://github.com/anza-xyz/agave" @@ -10,7 +10,7 @@ edition = "2021" publish = false [dependencies] -solana-program = { path = "../../../../program", version = "=2.1.4" } +solana-program = { path = "../../../../program", version = "=2.1.5" } [lib] crate-type = ["cdylib"] diff --git a/svm/examples/json-rpc/program/Cargo.toml b/svm/examples/json-rpc/program/Cargo.toml index 6c7e2b26fd90c0..7371ec5f651c5a 100644 --- a/svm/examples/json-rpc/program/Cargo.toml +++ b/svm/examples/json-rpc/program/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "json-rpc-example-program" -version = "2.1.4" +version = "2.1.5" edition = "2021" [features] @@ -10,7 +10,7 @@ frozen-abi = [] [dependencies] borsh = "0.9" -solana-program = { path = "../../../../sdk/program", version = "=2.1.4" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.5" } [lib] name = "program" diff --git a/svm/tests/example-programs/clock-sysvar/Cargo.toml b/svm/tests/example-programs/clock-sysvar/Cargo.toml index 598820685f4fe2..37b7a4245534bc 100644 --- a/svm/tests/example-programs/clock-sysvar/Cargo.toml +++ b/svm/tests/example-programs/clock-sysvar/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "clock-sysvar-program" -version = "2.1.4" +version = "2.1.5" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.4" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.5" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/hello-solana/Cargo.toml b/svm/tests/example-programs/hello-solana/Cargo.toml index d3263be1b3d39a..d732966b025b79 100644 --- a/svm/tests/example-programs/hello-solana/Cargo.toml +++ b/svm/tests/example-programs/hello-solana/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "hello-solana-program" -version = "2.1.4" +version = "2.1.5" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.4" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.5" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/simple-transfer/Cargo.toml b/svm/tests/example-programs/simple-transfer/Cargo.toml index b975fd573dbe4e..4287a312356c1e 100644 --- a/svm/tests/example-programs/simple-transfer/Cargo.toml +++ b/svm/tests/example-programs/simple-transfer/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "simple-transfer-program" -version = "2.1.4" +version = "2.1.5" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.4" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.5" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/transfer-from-account/Cargo.toml b/svm/tests/example-programs/transfer-from-account/Cargo.toml index 2e286d3fde0774..e3ec75ce30a282 100644 --- a/svm/tests/example-programs/transfer-from-account/Cargo.toml +++ b/svm/tests/example-programs/transfer-from-account/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "transfer-from-account" -version = "2.1.4" +version = "2.1.5" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.4" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.5" } [lib] crate-type = ["cdylib", "rlib"] diff --git a/svm/tests/example-programs/write-to-account/Cargo.toml b/svm/tests/example-programs/write-to-account/Cargo.toml index 5691bb4242b682..e59b8030469b7d 100644 --- a/svm/tests/example-programs/write-to-account/Cargo.toml +++ b/svm/tests/example-programs/write-to-account/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "write-to-account" -version = "2.1.4" +version = "2.1.5" edition = "2021" [dependencies] -solana-program = { path = "../../../../sdk/program", version = "=2.1.4" } +solana-program = { path = "../../../../sdk/program", version = "=2.1.5" } [lib] crate-type = ["cdylib", "rlib"] From ea019b8be5cfcb29f437240295fa95a1bfa5438b Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 11:44:49 -0500 Subject: [PATCH 29/33] v2.1: cli: show max vote credits in vote-account based on TVC activation epoch (backport of #3776) (#3780) cli: show max vote credits in vote-account based on TVC activation epoch (#3776) (cherry picked from commit b543f25b4df91f0622614fb369fb9f1ec088443a) Co-authored-by: Ashwin Sekar --- cli-output/src/cli_output.rs | 6 ++++-- cli/src/vote.rs | 14 +++++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/cli-output/src/cli_output.rs b/cli-output/src/cli_output.rs index a191acccdfcd2a..da264e2322d081 100644 --- a/cli-output/src/cli_output.rs +++ b/cli-output/src/cli_output.rs @@ -1163,8 +1163,9 @@ fn show_votes_and_credits( )?; writeln!( f, - " credits/slots: {}/{}", - entry.credits_earned, entry.slots_in_epoch + " credits/max credits: {}/{}", + entry.credits_earned, + entry.slots_in_epoch * u64::from(entry.max_credits_per_slot) )?; } if let Some(oldest) = epoch_voting_history.iter().next() { @@ -1740,6 +1741,7 @@ pub struct CliEpochVotingHistory { pub credits_earned: u64, pub credits: u64, pub prev_credits: u64, + pub max_credits_per_slot: u8, } #[derive(Serialize, Deserialize)] diff --git a/cli/src/vote.rs b/cli/src/vote.rs index ab9a4897342b24..3ae4d80537c80a 100644 --- a/cli/src/vote.rs +++ b/cli/src/vote.rs @@ -40,7 +40,9 @@ use { solana_vote_program::{ vote_error::VoteError, vote_instruction::{self, withdraw, CreateVoteAccountConfig}, - vote_state::{VoteAuthorize, VoteInit, VoteState, VoteStateVersions}, + vote_state::{ + VoteAuthorize, VoteInit, VoteState, VoteStateVersions, VOTE_CREDITS_MAXIMUM_PER_SLOT, + }, }, std::rc::Rc, }; @@ -1277,6 +1279,9 @@ pub fn process_show_vote_account( get_vote_account(rpc_client, vote_account_address, config.commitment)?; let epoch_schedule = rpc_client.get_epoch_schedule()?; + let tvc_activation_slot = + rpc_client.get_feature_activation_slot(&solana_feature_set::timely_vote_credits::id())?; + let tvc_activation_epoch = tvc_activation_slot.map(|s| epoch_schedule.get_epoch(s)); let mut votes: Vec = vec![]; let mut epoch_voting_history: Vec = vec![]; @@ -1287,12 +1292,19 @@ pub fn process_show_vote_account( for (epoch, credits, prev_credits) in vote_state.epoch_credits().iter().copied() { let credits_earned = credits.saturating_sub(prev_credits); let slots_in_epoch = epoch_schedule.get_slots_in_epoch(epoch); + let is_tvc_active = tvc_activation_epoch.map(|e| epoch >= e).unwrap_or_default(); + let max_credits_per_slot = if is_tvc_active { + VOTE_CREDITS_MAXIMUM_PER_SLOT + } else { + 1 + }; epoch_voting_history.push(CliEpochVotingHistory { epoch, slots_in_epoch, credits_earned, credits, prev_credits, + max_credits_per_slot, }); } } From a6c2a787a08a187d66c89e56f1d2ae98e92682a2 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 11:10:11 -0600 Subject: [PATCH 30/33] v2.1: Update docs with Anza logo (backport of #3851) (#3869) Update docs with Anza logo (#3851) (cherry picked from commit dbbe367f986ec93f8ae8b0913db5d17053ded9f6) Co-authored-by: Will Hickey --- docs/docusaurus.config.js | 14 +++++++------- docs/static/img/favicon.ico | Bin 15406 -> 15086 bytes docs/static/img/logo-horizontal-dark.svg | 17 +++++++---------- docs/static/img/logo-horizontal.svg | 17 +++++++---------- 4 files changed, 21 insertions(+), 27 deletions(-) diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 3c2192aab868ab..3ccc948ef09bc4 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -1,14 +1,14 @@ const math = require("remark-math"); const katex = require("rehype-katex"); module.exports = { - title: "Solana Validator", + title: "Agave", tagline: - "Solana is an open source project implementing a new, high-performance, permissionless blockchain.", + "Agave is an open source project implementing a new, high-performance, permissionless blockchain.", url: "https://docs.solanalabs.com", baseUrl: "/", favicon: "img/favicon.ico", - organizationName: "solana-labs", // Usually your GitHub org/user name. - projectName: "solana", // Usually your repo name. + organizationName: "anza-xyz", // Usually your GitHub org/user name. + projectName: "agave", // Usually your repo name. onBrokenLinks: "throw", stylesheets: [ { @@ -50,7 +50,7 @@ module.exports = { }, navbar: { logo: { - alt: "Solana Logo", + alt: "Anza Logo", src: "img/logo-horizontal.svg", srcDark: "img/logo-horizontal-dark.svg", }, @@ -141,7 +141,7 @@ module.exports = { }, { label: "GitHub »", - href: "https://github.com/solana-labs/solana", + href: "https://github.com/anza-xyz/agave", }, { label: "Discord »", @@ -175,7 +175,7 @@ module.exports = { ], }, ], - copyright: `Copyright © ${new Date().getFullYear()} Solana Labs`, + copyright: `Copyright © ${new Date().getFullYear()} Anza`, }, }, presets: [ diff --git a/docs/static/img/favicon.ico b/docs/static/img/favicon.ico index 86b9f3ce33a9c3737e0f4bc2ab275cb35d3f239e..cf96c74ac098d34cc07d1db880e7599c9b229871 100644 GIT binary patch literal 15086 zcmdU03v^V)8J-YC5D=2Rn~>+;4FL&(5Fp5-AdiBes0FPY?E|qKZIKE>p+c*ef?zoo zvC6SjP>aQuqoC3fIfY7dl!x-NT16>BmV_XL1d>2P>;b0VKfAMg@9w>O@7*MX+;e8< zK4$*^`~P|U^UuGG#j$vnpU;r1Y(o#mZe}d>+?BCocqhOAtSw{9P@or;L7Ij{_2}x= zL1az!6UTb9b}aqIMCM5x#yrYArYi3u9Ypdmue*|Yl^TC?pJA%I1n&sgaU+(-m+D#odKFgz zceuQ#&=&KV+7&ZYOjlcAUW$Y{q}g>Ijy>>vvWfA26U&~>aI#a$y zA6Up#)!w)!>>lM8!2WH^W0x|x8!-N6*^nU)xbFn+vTF#t>`TYRJQ8iKqw(r>@4WV~ z2iieZildC@c<6pHuwRWi(qy~_`-|Ck!uABla+`?pthxr{8`gA78fLVw(tD)}<8we5 z{_BAI&1)aK)UC1}_+hCAE>F@>U?&^ImJai8AH^q3of46Hju~QDze7$YANS*XBg%)< z7!R7cw+`oVSxJU;Lik|cX1N9l^rIk$>R#w%zWm_h-Td^KiilLSV;fKG-&4n%u*@o4 z$WK*7mJg@#&8bs-;qoOs&RUNRz&j84 zEttdGX!J+=EGsXMC~H)|>fBjA`KJ%)^6?(S@qIc;7}FVD{xEr^O`$LOOTyUtS6wX?YsmA3pju z_uev)uiLnR*VorumX|c=T&E`Eb-KyujOwQZRY3CpSLV4 zu~Q$*7-qZg1mskC+73+BM0#(S3INpuEl9~zhccx zG2n-fLv>~+lMJ&lK53j1mQxj{`H~k`aPNo$PT%@Z9K%07^tmJaG)5*oFeMiJbx!e9 zU+da0Tg;2^{G*5uo;;q%cTX0)+x1N2&%E@!qcKZ5_`2j6&l&ff*zh~(KiY9Z>ul#f zULDVZyTz(`RnV##-RQcE^BPh@SkKV1N~~({WhupDsRF_PWy#~{2on&TeQEq|B6Hr{(kqa z*z^+FzpVWrk#(Z-CjTK}G{53lmU0JZv`+sm$>sN-&u#2{8dZ-DZ7a~S>p%CmOlv;B z2=%SjdwwKkXx-;`ekoey{8ah4NzPAYJ5cUFzkUT{sdb%S>tsOufLFN-GHgU@>iB^- zg+H*l;s>;HwAT0ytqgPy7#TnF4)zlM_?axk%*gl|x^JfV8GeZ|>^>Q9fEi7>kFo11 zFUH{j<%AhOS15mqF%(Ay#!ws;7^|kd3u8XYuMg$L^o&z;nHSPCqI_gdkJr*wNMJPh zis@N{-$&0H`J~)Z4^l5uPf(fATTqX_fL^7Z1A3=8Efr}LQZPB;s_H15JR{5KV z1&b9&w{C98_L^;;rr4CVjOG<5mp7>&_#)25ro2|=ROKYgNa$k=f+uNMGufCI1MOiB zBQr6#nRv^71AEm)LnHD^PVNYOpKLOno3@Ek%E)#Jzr3y&o1b@}KdH(}9eZz59(day zU#7Cz?yr|wW@7Ik2CwqEne6e|-Ee-DA53XO@?={E^OV7TgWt7f>ApiwMzEZY2gMB1 zm71zV>vIF{_^vo_qcb;3biShXtCGKle4O%ocuu~59p8}d8pNK}>zZovUDSITXE<7a z5#7^So2;{W+t!HhvOM{{!_WO?J&}8qA7GAqRrfB0PsA&nFgRBwy3>C-Tlfg0`PTQq zcWp*nyjPV!g8wIGW$4UX$`YPeRG#67{(IQ;JC%QE;hgCFMVzg2){H;-SbSxrIv(UB zUAtjDe{lXR-TQES^qezxm<4}|pNt;MM?S0S+8W_^`w)J@;oqOg+uf8V&L@m`%6Ejb zV=gQ&O?w*LlfTn4mT>Hk?%~rPpB+4po4>5kQg(_bFyI&d4)d|O{*CHWe=zj-|_!zw-ztvwhZ?fb~m^{P#hs$d4EaJRP$6q)Gn$OJS)xM`Ws$I`i1Abxi zGmSrs`A3VPQ?4q`m9)IV?`b|*`O0c*-qbH?{vq4Q!5IPhp{r|Z4E0c2enR-sZTc7e z^DnIdUgghPIj!z#{@3JCxAYR0ic++OAE0T&7^ix=Ki-#{_4A$;-NadLOV8@8Fh!f(SM;Q%rk+Il# z$+~w+LYYlA=F5#NyOW!$1TWRy4fe_xHtPE4Lsj{lc{?VH`t*M^)m>z}Zg3t~{thQj zTg(f0YwITDXY*9-dv5IOk2PxFD?>cfJ4%}M{|ffJlYo1xtWSHEeV=|J*3bi={ae`i z?;$=&6oA+q&nP^Z9LD;?vKF831$~pk+f4=&X zQ#>QZR?@ny<^95IFNb*hdD8#UbpJ^s8<=Fgcjk0mU7|A@@u?DPAit!=FTZuk>mH1k zll)08l24WiS2;gkOS@igIdd6&E_UXJ+cBE(pc&1hh| z_}ec^|DnEMP%pqM(0`~CHm3i|LC~1-BWaKaG&FusK%bW5*9RYIG5n^5)^kIU3zelh GRQLbiR4I)B literal 15406 zcmeHNTS!$w6kVo8_{itAvezw2{3sH7K!0W=k!1uLL_hW*EU`2#6ETR${K&KiX_=OZ z=Cv#+dVTfN^UHz?`lu+P`iY8&-t6}7cK_}<$2;dtNX~)9;hwp3X74p?_RQHcKop{p zlmx!}Q4#~p2jKSye`h5F9sDdi`)_$BaN7rD@qf4q*9bo6TiC0gKn6h$_78xTm0O?! z)Og>XtH3wVoO}=y9To|xpyo%;?>P7vWQFce_Vw2`fzqdj$JlA0hI`ia8}5QKGC|{K zgvZ7f>$;+$&Uc`FcdT*di+%mWPe5aQ;kgq|v-3bs?~pz!sI-Pt9}c&%5H=`8@KEB6 zpOM3m_+)hrH(rgu_G8`fWB3Vapz8zZ*b4=`1fBiqp2v9w)^iTWv#@h{=(*Gle068T ziPyn-H}uX(@3Q9Tb(mX2TwC4SUV+9cZuOqvx?RRmq^Q2&u5GLF z_%EN=T?5H?L&RtXwLEk0|B_NQ-AO!3n*=)g)SV4|KR^o#)ot)iVIH2lvmx*uG(p@5L(aWSR?k=P zGT1V&9-jg#Y31BL=Vf&IPxRrRgdkX<3P1n z^vnT$ykAho`(81l^w^%90jj&IkN3s_kWbV4A!Pz{b5;-Up>cHjJ!t(QP*I(?SjF$# zdsDCNAs@_LpT3>AJi*^4~}pOGx@(eIa>6;1c+i9K=2>_fNSF(B(sX+zig zU%rjpoQZJKkCe-IYRyHSzcj6# - - - - - - - - - + + + + + + + diff --git a/docs/static/img/logo-horizontal.svg b/docs/static/img/logo-horizontal.svg index d906fe507706d3..f4b43eb08047e4 100644 --- a/docs/static/img/logo-horizontal.svg +++ b/docs/static/img/logo-horizontal.svg @@ -1,11 +1,8 @@ - - - - - - - - - - + + + + + + + From c69a9acbd2a31b07d1f55a2cb94bdf24184991f3 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 11:37:41 -0600 Subject: [PATCH 31/33] v2.1: Make unified-scheduler use transaction_status_sender in ledger-tool (backport of #3861) (#3863) Make unified-scheduler use transaction_status_sender in ledger-tool (#3861) Use transaction_status_sender if available (cherry picked from commit dee4acc248b014ad770d4cb62ebd9cf253b385ff) Co-authored-by: Ryo Onodera --- ledger-tool/src/ledger_utils.rs | 78 ++++++++++++++++----------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/ledger-tool/src/ledger_utils.rs b/ledger-tool/src/ledger_utils.rs index 94778ee4b22407..6f3a87b3caecd3 100644 --- a/ledger-tool/src/ledger_utils.rs +++ b/ledger-tool/src/ledger_utils.rs @@ -284,6 +284,44 @@ pub fn load_and_process_ledger( }; let exit = Arc::new(AtomicBool::new(false)); + + let enable_rpc_transaction_history = arg_matches.is_present("enable_rpc_transaction_history"); + + let (transaction_status_sender, transaction_status_service) = if geyser_plugin_active + || enable_rpc_transaction_history + { + // Need Primary (R/W) access to insert transaction data; + // obtain Primary access if we do not already have it + let tss_blockstore = if enable_rpc_transaction_history && !blockstore.is_primary_access() { + Arc::new(open_blockstore( + blockstore.ledger_path(), + arg_matches, + AccessType::PrimaryForMaintenance, + )) + } else { + blockstore.clone() + }; + + let (transaction_status_sender, transaction_status_receiver) = unbounded(); + let transaction_status_service = TransactionStatusService::new( + transaction_status_receiver, + Arc::default(), + enable_rpc_transaction_history, + transaction_notifier, + tss_blockstore, + arg_matches.is_present("enable_extended_tx_metadata_storage"), + exit.clone(), + ); + ( + Some(TransactionStatusSender { + sender: transaction_status_sender, + }), + Some(transaction_status_service), + ) + } else { + (transaction_status_sender, None) + }; + let (bank_forks, leader_schedule_cache, starting_snapshot_hashes, ..) = bank_forks_utils::load_bank_forks( genesis_config, @@ -320,7 +358,6 @@ pub fn load_and_process_ledger( } } BlockVerificationMethod::UnifiedScheduler => { - let no_transaction_status_sender = None; let no_replay_vote_sender = None; let ignored_prioritization_fee_cache = Arc::new(PrioritizationFeeCache::new(0u64)); bank_forks @@ -329,7 +366,7 @@ pub fn load_and_process_ledger( .install_scheduler_pool(DefaultSchedulerPool::new_dyn( unified_scheduler_handler_threads, process_options.runtime_config.log_messages_bytes_limit, - no_transaction_status_sender, + transaction_status_sender.clone(), no_replay_vote_sender, ignored_prioritization_fee_cache, )); @@ -369,43 +406,6 @@ pub fn load_and_process_ledger( process_options.accounts_db_test_hash_calculation, ); - let enable_rpc_transaction_history = arg_matches.is_present("enable_rpc_transaction_history"); - - let (transaction_status_sender, transaction_status_service) = if geyser_plugin_active - || enable_rpc_transaction_history - { - // Need Primary (R/W) access to insert transaction data; - // obtain Primary access if we do not already have it - let tss_blockstore = if enable_rpc_transaction_history && !blockstore.is_primary_access() { - Arc::new(open_blockstore( - blockstore.ledger_path(), - arg_matches, - AccessType::PrimaryForMaintenance, - )) - } else { - blockstore.clone() - }; - - let (transaction_status_sender, transaction_status_receiver) = unbounded(); - let transaction_status_service = TransactionStatusService::new( - transaction_status_receiver, - Arc::default(), - enable_rpc_transaction_history, - transaction_notifier, - tss_blockstore, - arg_matches.is_present("enable_extended_tx_metadata_storage"), - exit.clone(), - ); - ( - Some(TransactionStatusSender { - sender: transaction_status_sender, - }), - Some(transaction_status_service), - ) - } else { - (transaction_status_sender, None) - }; - let result = blockstore_processor::process_blockstore_from_root( blockstore.as_ref(), &bank_forks, From 086cc09ea3c40b9475a51015792558a6e32cb31d Mon Sep 17 00:00:00 2001 From: Yihau Chen Date: Thu, 5 Dec 2024 03:15:36 +0800 Subject: [PATCH 32/33] v2.1: supress hashbrown audit (#3920) --- ci/do-audit.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ci/do-audit.sh b/ci/do-audit.sh index d60ec40cd93e3f..406129a97e5172 100755 --- a/ci/do-audit.sh +++ b/ci/do-audit.sh @@ -59,6 +59,17 @@ cargo_audit_ignores=( # Dependency tree: # rustls 0.23.17 --ignore RUSTSEC-2024-0399 + + # Crate: hashbrown + # Version: 0.15.0 + # Title: Borsh serialization of HashMap is non-canonical + # Date: 2024-10-11 + # ID: RUSTSEC-2024-0402 + # URL: https://rustsec.org/advisories/RUSTSEC-2024-0402 + # Solution: Upgrade to >=0.15.1 + # Dependency tree: + # hashbrown 0.15.0 + --ignore RUSTSEC-2024-0402 ) scripts/cargo-for-all-lock-files.sh audit "${cargo_audit_ignores[@]}" | $dep_tree_filter # we want the `cargo audit` exit code, not `$dep_tree_filter`'s From 32b445a52f8e1773ddc73d0e72f5aa835f825081 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 22:31:59 +0000 Subject: [PATCH 33/33] v2.1: Ensure that Rc in AccountInfo is not stored in an account (backport of #3471) (#3723) Ensure that Rc in AccountInfo is not stored in an account (#3471) * Ensure that Rc in AccountInfo is not stored in an account (cherry picked from commit 030a55884d26496068096b16c00a6f27904576a5) Co-authored-by: Sean Young --- programs/bpf_loader/src/syscalls/cpi.rs | 8 +++ programs/sbf/rust/invoke/src/lib.rs | 72 +++++++++++++++++++ programs/sbf/rust/invoke_dep/src/lib.rs | 2 + programs/sbf/tests/programs.rs | 92 +++++++++++++++++++++++++ 4 files changed, 174 insertions(+) diff --git a/programs/bpf_loader/src/syscalls/cpi.rs b/programs/bpf_loader/src/syscalls/cpi.rs index 1f4373fd4af514..c4e27137f1b4d9 100644 --- a/programs/bpf_loader/src/syscalls/cpi.rs +++ b/programs/bpf_loader/src/syscalls/cpi.rs @@ -137,6 +137,10 @@ impl<'a, 'b> CallerAccount<'a, 'b> { invoke_context.get_check_aligned(), )?; if direct_mapping { + if account_info.lamports.as_ptr() as u64 >= ebpf::MM_INPUT_START { + return Err(SyscallError::InvalidPointer.into()); + } + check_account_info_pointer( invoke_context, *ptr, @@ -154,6 +158,10 @@ impl<'a, 'b> CallerAccount<'a, 'b> { )?; let (serialized_data, vm_data_addr, ref_to_len_in_vm) = { + if direct_mapping && account_info.data.as_ptr() as u64 >= ebpf::MM_INPUT_START { + return Err(SyscallError::InvalidPointer.into()); + } + // Double translate data out of RefCell let data = *translate_type::<&[u8]>( memory_mapping, diff --git a/programs/sbf/rust/invoke/src/lib.rs b/programs/sbf/rust/invoke/src/lib.rs index 650ebca75b767f..fe54f04484b5b9 100644 --- a/programs/sbf/rust/invoke/src/lib.rs +++ b/programs/sbf/rust/invoke/src/lib.rs @@ -1522,6 +1522,78 @@ fn process_instruction<'a>( ) .unwrap(); } + TEST_ACCOUNT_INFO_LAMPORTS_RC => { + msg!("TEST_ACCOUNT_INFO_LAMPORTS_RC_IN_ACCOUNT"); + + let mut account0 = accounts[0].clone(); + let account1 = accounts[1].clone(); + let account2 = accounts[2].clone(); + + account0.lamports = unsafe { + let dst = account1.data.borrow_mut().as_mut_ptr(); + // 32 = size_of::() + std::ptr::copy( + std::mem::transmute::>, *const u8>(account0.lamports), + dst, + 32, + ); + std::mem::transmute::<*mut u8, Rc>>(dst) + }; + + let mut instruction_data = vec![TEST_WRITE_ACCOUNT, 1]; + instruction_data.extend_from_slice(&1u64.to_le_bytes()); + instruction_data.push(1); + + invoke( + &create_instruction( + *program_id, + &[ + (program_id, false, false), + (accounts[1].key, true, false), + (accounts[0].key, false, false), + ], + instruction_data.to_vec(), + ), + &[account0, account1, account2], + ) + .unwrap(); + } + TEST_ACCOUNT_INFO_DATA_RC => { + msg!("TEST_ACCOUNT_INFO_DATA_RC_IN_ACCOUNT"); + + let mut account0 = accounts[0].clone(); + let account1 = accounts[1].clone(); + let account2 = accounts[2].clone(); + + account0.data = unsafe { + let dst = account1.data.borrow_mut().as_mut_ptr(); + // 32 = size_of::() + std::ptr::copy( + std::mem::transmute::>, *const u8>(account0.data), + dst, + 32, + ); + std::mem::transmute::<*mut u8, Rc>>(dst) + }; + + let mut instruction_data = vec![TEST_WRITE_ACCOUNT, 1]; + instruction_data.extend_from_slice(&1u64.to_le_bytes()); + instruction_data.push(1); + + invoke( + &create_instruction( + *program_id, + &[ + (program_id, false, false), + (accounts[1].key, true, false), + (accounts[0].key, false, false), + ], + instruction_data.to_vec(), + ), + &[account0, account1, account2], + ) + .unwrap(); + } _ => panic!("unexpected program data"), } diff --git a/programs/sbf/rust/invoke_dep/src/lib.rs b/programs/sbf/rust/invoke_dep/src/lib.rs index a12ac3f9096382..654e724878716f 100644 --- a/programs/sbf/rust/invoke_dep/src/lib.rs +++ b/programs/sbf/rust/invoke_dep/src/lib.rs @@ -43,6 +43,8 @@ pub const TEST_WRITE_ACCOUNT: u8 = 40; pub const TEST_CALLEE_ACCOUNT_UPDATES: u8 = 41; pub const TEST_STACK_HEAP_ZEROED: u8 = 42; pub const TEST_ACCOUNT_INFO_IN_ACCOUNT: u8 = 43; +pub const TEST_ACCOUNT_INFO_LAMPORTS_RC: u8 = 44; +pub const TEST_ACCOUNT_INFO_DATA_RC: u8 = 45; pub const MINT_INDEX: usize = 0; pub const ARGUMENT_INDEX: usize = 1; diff --git a/programs/sbf/tests/programs.rs b/programs/sbf/tests/programs.rs index e176d7cac37fcc..5bfdceb0dd3d3a 100644 --- a/programs/sbf/tests/programs.rs +++ b/programs/sbf/tests/programs.rs @@ -5001,6 +5001,98 @@ fn test_account_info_in_account() { } } +#[test] +fn test_account_info_rc_in_account() { + solana_logger::setup(); + + let GenesisConfigInfo { + genesis_config, + mint_keypair, + .. + } = create_genesis_config(100_123_456_789); + + for direct_mapping in [false, true] { + let mut bank = Bank::new_for_tests(&genesis_config); + let feature_set = Arc::make_mut(&mut bank.feature_set); + // by default test banks have all features enabled, so we only need to + // disable when needed + if !direct_mapping { + feature_set.deactivate(&feature_set::bpf_account_data_direct_mapping::id()); + } + + let (bank, bank_forks) = bank.wrap_with_bank_forks_for_tests(); + let mut bank_client = BankClient::new_shared(bank.clone()); + let authority_keypair = Keypair::new(); + + let (bank, invoke_program_id) = load_upgradeable_program_and_advance_slot( + &mut bank_client, + bank_forks.as_ref(), + &mint_keypair, + &authority_keypair, + "solana_sbf_rust_invoke", + ); + + let account_keypair = Keypair::new(); + + let mint_pubkey = mint_keypair.pubkey(); + + let account_metas = vec![ + AccountMeta::new(mint_pubkey, true), + AccountMeta::new(account_keypair.pubkey(), false), + AccountMeta::new_readonly(invoke_program_id, false), + ]; + + let instruction_data = vec![TEST_ACCOUNT_INFO_LAMPORTS_RC, 0, 0, 0]; + + let instruction = Instruction::new_with_bytes( + invoke_program_id, + &instruction_data, + account_metas.clone(), + ); + + let account = AccountSharedData::new(42, 10240, &invoke_program_id); + + bank.store_account(&account_keypair.pubkey(), &account); + + let message = Message::new(&[instruction], Some(&mint_pubkey)); + let tx = Transaction::new(&[&mint_keypair], message.clone(), bank.last_blockhash()); + let (result, _, logs) = process_transaction_and_record_inner(&bank, tx); + + if direct_mapping { + assert!( + logs.last().unwrap().ends_with(" failed: Invalid pointer"), + "{logs:?}" + ); + assert!(result.is_err()); + } else { + assert!(result.is_ok(), "{logs:?}"); + } + + let instruction_data = vec![TEST_ACCOUNT_INFO_DATA_RC, 0, 0, 0]; + + let instruction = + Instruction::new_with_bytes(invoke_program_id, &instruction_data, account_metas); + + let account = AccountSharedData::new(42, 10240, &invoke_program_id); + + bank.store_account(&account_keypair.pubkey(), &account); + + let message = Message::new(&[instruction], Some(&mint_pubkey)); + let tx = Transaction::new(&[&mint_keypair], message.clone(), bank.last_blockhash()); + let (result, _, logs) = process_transaction_and_record_inner(&bank, tx); + + if direct_mapping { + assert!( + logs.last().unwrap().ends_with(" failed: Invalid pointer"), + "{logs:?}" + ); + assert!(result.is_err()); + } else { + assert!(result.is_ok(), "{logs:?}"); + } + } +} + #[test] fn test_clone_account_data() { // Test cloning account data works as expect with