diff --git a/.buildkite/scripts/build-bench.sh b/.buildkite/scripts/build-bench.sh
index a19e4291bc1426..27f156c141fe03 100755
--- a/.buildkite/scripts/build-bench.sh
+++ b/.buildkite/scripts/build-bench.sh
@@ -22,5 +22,5 @@ EOF
# shellcheck disable=SC2016
group "bench" \
- "$(build_steps "bench-part-1" ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/bench/part1.sh")" \
- "$(build_steps "bench-part-2" ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/bench/part2.sh")"
+ "$(build_steps "bench-part-1" "ci/docker-run-default-image.sh ci/bench/part1.sh")" \
+ "$(build_steps "bench-part-2" "ci/docker-run-default-image.sh ci/bench/part2.sh")"
diff --git a/.buildkite/scripts/build-stable.sh b/.buildkite/scripts/build-stable.sh
index e1d774e1669ab8..f20ca1db358402 100755
--- a/.buildkite/scripts/build-stable.sh
+++ b/.buildkite/scripts/build-stable.sh
@@ -12,7 +12,7 @@ partitions=$(
cat <
_**As of 2/1/24:** Max: 25,000 SOL tokens. Min: 6,250 SOL tokens_
* Theft of funds without users signature from any account
@@ -118,14 +117,12 @@ _**As of 2/1/24:** Max: 25,000 SOL tokens. Min: 6,250 SOL tokens_
* Theft of funds that requires users signature - creating a vote program that drains the delegated stakes.
#### Consensus/Safety Violations:
-Current: $1,000,000 USD in locked SOL tokens (locked for 12 months)
_**As of 2/1/24:** Max: 12,500 SOL tokens. Min: 3,125 SOL tokens_
* Consensus safety violation
* Tricking a validator to accept an optimistic confirmation or rooted slot without a double vote, etc.
#### Liveness / Loss of Availability:
-Current: $400,000 USD in locked SOL tokens (locked for 12 months)
_**As of 2/1/24:** Max: 5,000 SOL tokens. Min: 1,250 SOL tokens_
* Whereby consensus halts and requires human intervention
@@ -133,19 +130,16 @@ _**As of 2/1/24:** Max: 5,000 SOL tokens. Min: 1,250 SOL tokens_
* Remote attacks that partition the network,
#### DoS Attacks:
-Current: $100,000 USD in locked SOL tokens (locked for 12 months)
_**As of 2/1/24:** Max: 1,250 SOL tokens. Min: 315 SOL tokens_
* Remote resource exhaustion via Non-RPC protocols
#### Supply Chain Attacks:
-Current: $100,000 USD in locked SOL tokens (locked for 12 months)
_**As of 2/1/24:** Max: 1,250 SOL tokens. Min: 315 SOL tokens_
* Non-social attacks against source code change management, automated testing, release build, release publication and release hosting infrastructure of the monorepo.
#### RPC DoS/Crashes:
-Current: $5,000 USD in locked SOL tokens (locked for 12 months)
_**As of 2/1/24:** Max: 65 SOL tokens. Min: 20 SOL tokens_
* RPC attacks
@@ -190,6 +184,4 @@ bi = 2 ^ (R - ri) / ((2^R) - 1)
### Payment of Bug Bounties:
* Bounties are currently awarded on a rolling/weekly basis and paid out within 30 days upon receipt of an invoice.
-* The SOL/USD conversion rate used for payments is the market price of SOL (denominated in USD) at the end of the day the invoice is submitted by the researcher.
-* The reference for this price is the Closing Price given by Coingecko.com on that date given here: https://www.coingecko.com/en/coins/solana/historical_data/usd#panel
* Bug bounties that are paid out in SOL are paid to stake accounts with a lockup expiring 12 months from the date of delivery of SOL.
diff --git a/account-decoder/src/parse_sysvar.rs b/account-decoder/src/parse_sysvar.rs
index 3fda8e8560c623..35746949c7f9ef 100644
--- a/account-decoder/src/parse_sysvar.rs
+++ b/account-decoder/src/parse_sysvar.rs
@@ -9,7 +9,6 @@ use {
bv::BitVec,
solana_sdk::{
clock::{Clock, Epoch, Slot, UnixTimestamp},
- epoch_rewards_partition_data::EpochRewardsPartitionDataVersion,
epoch_schedule::EpochSchedule,
pubkey::Pubkey,
rent::Rent,
@@ -97,24 +96,7 @@ pub fn parse_sysvar(data: &[u8], pubkey: &Pubkey) -> Result(data)
- {
- let EpochRewardsPartitionDataVersion::V0(partition_data) =
- epoch_rewards_partition_data;
- Some(SysvarAccountType::EpochRewardsPartitionData(
- UiEpochRewardsPartitionData {
- version: 0,
- num_partitions: partition_data.num_partitions as u64,
- parent_blockhash: partition_data.parent_blockhash.to_string(),
- },
- ))
- } else {
- None
- }
+ None
}
};
parsed_account.ok_or(ParseAccountError::AccountNotParsable(
@@ -138,7 +120,6 @@ pub enum SysvarAccountType {
StakeHistory(Vec),
LastRestartSlot(UiLastRestartSlot),
EpochRewards(EpochRewards),
- EpochRewardsPartitionData(UiEpochRewardsPartitionData),
}
#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Default)]
@@ -258,14 +239,6 @@ pub struct UiLastRestartSlot {
pub last_restart_slot: Slot,
}
-#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Default)]
-#[serde(rename_all = "camelCase")]
-pub struct UiEpochRewardsPartitionData {
- pub version: u32,
- pub num_partitions: u64,
- pub parent_blockhash: String,
-}
-
#[cfg(test)]
mod test {
#[allow(deprecated)]
diff --git a/accounts-bench/src/main.rs b/accounts-bench/src/main.rs
index 88d15ea72482aa..9437485e1e6533 100644
--- a/accounts-bench/src/main.rs
+++ b/accounts-bench/src/main.rs
@@ -14,11 +14,11 @@ use {
},
accounts_index::AccountSecondaryIndexes,
ancestors::Ancestors,
- rent_collector::RentCollector,
},
solana_measure::measure::Measure,
solana_sdk::{
- genesis_config::ClusterType, pubkey::Pubkey, sysvar::epoch_schedule::EpochSchedule,
+ genesis_config::ClusterType, pubkey::Pubkey, rent_collector::RentCollector,
+ sysvar::epoch_schedule::EpochSchedule,
},
std::{env, fs, path::PathBuf, sync::Arc},
};
diff --git a/accounts-db/src/account_storage/meta.rs b/accounts-db/src/account_storage/meta.rs
index 1442b4845bf604..69c24d7be75f7d 100644
--- a/accounts-db/src/account_storage/meta.rs
+++ b/accounts-db/src/account_storage/meta.rs
@@ -142,7 +142,7 @@ impl<'storage> StoredAccountMeta<'storage> {
pub fn offset(&self) -> usize {
match self {
Self::AppendVec(av) => av.offset(),
- Self::Hot(hot) => hot.index(),
+ Self::Hot(hot) => hot.index().0 as usize,
}
}
diff --git a/accounts-db/src/accounts.rs b/accounts-db/src/accounts.rs
index 0c0058703503d0..9b65fc803d937e 100644
--- a/accounts-db/src/accounts.rs
+++ b/accounts-db/src/accounts.rs
@@ -6,9 +6,6 @@ use {
},
accounts_index::{IndexKey, ScanConfig, ScanError, ScanResult, ZeroLamport},
ancestors::Ancestors,
- nonce_info::{NonceFull, NonceInfo},
- rent_collector::RentCollector,
- rent_debits::RentDebits,
storable_accounts::StorableAccounts,
transaction_results::TransactionExecutionResult,
},
@@ -24,7 +21,9 @@ use {
state::{DurableNonce, Versions as NonceVersions},
State as NonceState,
},
+ nonce_info::{NonceFull, NonceInfo},
pubkey::Pubkey,
+ rent_debits::RentDebits,
slot_hashes::SlotHashes,
transaction::{Result, SanitizedTransaction, TransactionAccountLocks, TransactionError},
transaction_context::{IndexOfAccount, TransactionAccount},
@@ -655,18 +654,11 @@ impl Accounts {
txs: &[SanitizedTransaction],
res: &[TransactionExecutionResult],
loaded: &mut [TransactionLoadResult],
- rent_collector: &RentCollector,
durable_nonce: &DurableNonce,
lamports_per_signature: u64,
) {
- let (accounts_to_store, transactions) = self.collect_accounts_to_store(
- txs,
- res,
- loaded,
- rent_collector,
- durable_nonce,
- lamports_per_signature,
- );
+ let (accounts_to_store, transactions) =
+ self.collect_accounts_to_store(txs, res, loaded, durable_nonce, lamports_per_signature);
self.accounts_db
.store_cached_inline_update_index((slot, &accounts_to_store[..]), Some(&transactions));
}
@@ -689,7 +681,6 @@ impl Accounts {
txs: &'a [SanitizedTransaction],
execution_results: &'a [TransactionExecutionResult],
load_results: &'a mut [TransactionLoadResult],
- _rent_collector: &RentCollector,
durable_nonce: &DurableNonce,
lamports_per_signature: u64,
) -> (
@@ -813,10 +804,7 @@ fn prepare_if_nonce_account(
mod tests {
use {
super::*,
- crate::{
- rent_collector::RentCollector,
- transaction_results::{DurableNonceFee, TransactionExecutionDetails},
- },
+ crate::transaction_results::{DurableNonceFee, TransactionExecutionDetails},
assert_matches::assert_matches,
solana_program_runtime::loaded_programs::LoadedProgramsForTxBatch,
solana_sdk::{
@@ -1512,8 +1500,6 @@ mod tests {
let account1 = AccountSharedData::new(2, 0, &Pubkey::default());
let account2 = AccountSharedData::new(3, 0, &Pubkey::default());
- let rent_collector = RentCollector::default();
-
let instructions = vec![CompiledInstruction::new(2, &(), vec![0, 1])];
let message = Message::new_with_compiled_instructions(
1,
@@ -1581,7 +1567,6 @@ mod tests {
&txs,
&execution_results,
loaded.as_mut_slice(),
- &rent_collector,
&DurableNonce::default(),
0,
);
@@ -1884,8 +1869,6 @@ mod tests {
#[test]
fn test_nonced_failure_accounts_rollback_from_pays() {
- let rent_collector = RentCollector::default();
-
let nonce_address = Pubkey::new_unique();
let nonce_authority = keypair_from_seed(&[0; 32]).unwrap();
let from = keypair_from_seed(&[1; 32]).unwrap();
@@ -1962,7 +1945,6 @@ mod tests {
&txs,
&execution_results,
loaded.as_mut_slice(),
- &rent_collector,
&durable_nonce,
0,
);
@@ -1994,8 +1976,6 @@ mod tests {
#[test]
fn test_nonced_failure_accounts_rollback_nonce_pays() {
- let rent_collector = RentCollector::default();
-
let nonce_authority = keypair_from_seed(&[0; 32]).unwrap();
let nonce_address = nonce_authority.pubkey();
let from = keypair_from_seed(&[1; 32]).unwrap();
@@ -2071,7 +2051,6 @@ mod tests {
&txs,
&execution_results,
loaded.as_mut_slice(),
- &rent_collector,
&durable_nonce,
0,
);
diff --git a/accounts-db/src/accounts_db.rs b/accounts-db/src/accounts_db.rs
index 4d37dcba060705..c89cf45e320971 100644
--- a/accounts-db/src/accounts_db.rs
+++ b/accounts-db/src/accounts_db.rs
@@ -67,7 +67,6 @@ use {
partitioned_rewards::{PartitionedEpochRewardsConfig, TestPartitionedEpochRewards},
pubkey_bins::PubkeyBinCalculator24,
read_only_accounts_cache::ReadOnlyAccountsCache,
- rent_collector::RentCollector,
sorted_storages::SortedStorages,
storable_accounts::StorableAccounts,
u64_align, utils,
@@ -92,6 +91,7 @@ use {
genesis_config::{ClusterType, GenesisConfig},
hash::Hash,
pubkey::Pubkey,
+ rent_collector::RentCollector,
saturating_add_assign,
timing::AtomicInterval,
transaction::SanitizedTransaction,
@@ -494,6 +494,7 @@ pub const ACCOUNTS_DB_CONFIG_FOR_TESTING: AccountsDbConfig = AccountsDbConfig {
index: Some(ACCOUNTS_INDEX_CONFIG_FOR_TESTING),
base_working_path: None,
accounts_hash_cache_path: None,
+ shrink_paths: None,
write_cache_limit_bytes: None,
ancient_append_vec_offset: None,
skip_initial_hash_calc: false,
@@ -506,6 +507,7 @@ pub const ACCOUNTS_DB_CONFIG_FOR_BENCHMARKS: AccountsDbConfig = AccountsDbConfig
index: Some(ACCOUNTS_INDEX_CONFIG_FOR_BENCHMARKS),
base_working_path: None,
accounts_hash_cache_path: None,
+ shrink_paths: None,
write_cache_limit_bytes: None,
ancient_append_vec_offset: None,
skip_initial_hash_calc: false,
@@ -547,6 +549,7 @@ pub struct AccountsDbConfig {
/// Base directory for various necessary files
pub base_working_path: Option,
pub accounts_hash_cache_path: Option,
+ pub shrink_paths: Option>,
pub write_cache_limit_bytes: Option,
/// if None, ancient append vecs are set to ANCIENT_APPEND_VEC_DEFAULT_OFFSET
/// Some(offset) means include slots up to (max_slot - (slots_per_epoch - 'offset'))
@@ -1396,7 +1399,7 @@ pub struct AccountsDb {
accounts_hash_cache_path: PathBuf,
- pub shrink_paths: RwLock