Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 0 additions & 20 deletions accounts-db/src/accounts_hash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1279,26 +1279,6 @@ pub struct AccountsHash(pub Hash);
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct IncrementalAccountsHash(pub Hash);

/// Hash of accounts written in a single slot
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct AccountsDeltaHash(pub Hash);

/// Snapshot serde-safe accounts delta hash
#[cfg_attr(feature = "frozen-abi", derive(AbiExample))]
#[derive(Clone, Default, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct SerdeAccountsDeltaHash(pub Hash);

impl From<SerdeAccountsDeltaHash> for AccountsDeltaHash {
fn from(accounts_delta_hash: SerdeAccountsDeltaHash) -> Self {
Self(accounts_delta_hash.0)
}
}
impl From<AccountsDeltaHash> for SerdeAccountsDeltaHash {
fn from(accounts_delta_hash: AccountsDeltaHash) -> Self {
Self(accounts_delta_hash.0)
}
}

/// Snapshot serde-safe accounts hash
#[cfg_attr(feature = "frozen-abi", derive(AbiExample))]
#[derive(Clone, Default, Debug, Serialize, Deserialize, PartialEq, Eq)]
Expand Down
6 changes: 2 additions & 4 deletions runtime/src/bank/serde_snapshot.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ mod tests {
ACCOUNTS_DB_CONFIG_FOR_TESTING,
},
accounts_file::{AccountsFile, AccountsFileError, StorageAccess},
accounts_hash::{AccountsDeltaHash, AccountsHash},
accounts_hash::AccountsHash,
},
solana_epoch_schedule::EpochSchedule,
solana_genesis_config::create_genesis_config,
Expand Down Expand Up @@ -143,7 +143,6 @@ mod tests {
&mut writer,
bank_fields,
bank2.get_bank_hash_stats(),
AccountsDeltaHash(Hash::default()), // obsolete, will be removed next
expected_accounts_hash,
&get_storages_to_serialize(&bank2.get_snapshot_storages(None)),
ExtraFieldsToSerialize {
Expand Down Expand Up @@ -393,7 +392,7 @@ mod tests {
#[cfg_attr(
feature = "frozen-abi",
derive(AbiExample),
frozen_abi(digest = "7F6xtBno4tS6QaD3wP8kQxa9BiRtvmCu8TzFNprFjM7A")
frozen_abi(digest = "RHixw67oBUdJQn9TLES55Nb4Sr1wuAfo7NTJH56oRxb")
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The frozen abi digest changed because of the accounts delta hash. I renamed it, and removed the newtype wrappers.

full diff

--- ./bank__serde_snapshot__tests__test_bank_serialize__BankAbiTestWrapper_frozen_abi__test_abi_digest_7F6xtBno4tS6QaD3wP8kQxa9BiRtvmCu8TzFNprFjM7A	2025-07-23 12:58:36
+++ ./bank__serde_snapshot__tests__test_bank_serialize__BankAbiTestWrapper_frozen_abi__test_abi_digest_RHixw67oBUdJQn9TLES55Nb4Sr1wuAfo7NTJH56oRxb	2025-07-23 15:26:08
@@ -1039,74 +1039,72 @@
                         primitive u64
                     element solana_runtime::serde_snapshot::BankHashInfo
                         struct BankHashInfo (fields = 3)
-                            field accounts_delta_hash: solana_accounts_db::accounts_hash::SerdeAccountsDeltaHash
-                                struct SerdeAccountsDeltaHash(solana_hash::Hash) (newtype)
-                                    struct Hash([u8; 32]) (newtype)
-                                        tuple (elements = 32)
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
-                                            element u8
-                                                primitive u8
+                            field obsolete_accounts_delta_hash: [u8; 32]
+                                tuple (elements = 32)
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
+                                    element u8
+                                        primitive u8
                             field accounts_hash: solana_accounts_db::accounts_hash::SerdeAccountsHash

)]
#[derive(Serialize)]
pub struct BankAbiTestWrapper {
Expand Down Expand Up @@ -424,7 +423,6 @@ mod tests {
serializer,
bank_fields,
BankHashStats::default(),
AccountsDeltaHash(Hash::new_unique()),
AccountsHash(Hash::new_unique()),
&get_storages_to_serialize(&snapshot_storages),
ExtraFieldsToSerialize {
Expand Down
21 changes: 5 additions & 16 deletions runtime/src/serde_snapshot.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ use {
AtomicAccountsFileId, DuplicatesLtHash, IndexGenerationInfo,
},
accounts_file::{AccountsFile, StorageAccess},
accounts_hash::{AccountsDeltaHash, AccountsHash, AccountsLtHash},
accounts_hash::{AccountsHash, AccountsLtHash},
accounts_update_notifier_interface::AccountsUpdateNotifier,
ancestors::AncestorsForSerialization,
blockhash_queue::BlockhashQueue,
Expand Down Expand Up @@ -61,9 +61,7 @@ mod types;
mod utils;

pub(crate) use {
solana_accounts_db::accounts_hash::{
SerdeAccountsDeltaHash, SerdeAccountsHash, SerdeIncrementalAccountsHash,
},
solana_accounts_db::accounts_hash::{SerdeAccountsHash, SerdeIncrementalAccountsHash},
storage::{SerializableAccountStorageEntry, SerializedAccountsFileId},
};

Expand Down Expand Up @@ -110,7 +108,7 @@ pub struct BankIncrementalSnapshotPersistence {
#[cfg_attr(feature = "frozen-abi", derive(AbiExample))]
#[derive(Clone, Default, Debug, Serialize, Deserialize, PartialEq, Eq)]
struct BankHashInfo {
accounts_delta_hash: SerdeAccountsDeltaHash,
obsolete_accounts_delta_hash: [u8; 32],
accounts_hash: SerdeAccountsHash,
stats: BankHashStats,
}
Expand Down Expand Up @@ -635,7 +633,6 @@ pub fn serialize_bank_snapshot_into<W>(
stream: &mut BufWriter<W>,
bank_fields: BankFieldsToSerialize,
bank_hash_stats: BankHashStats,
accounts_delta_hash: AccountsDeltaHash,
accounts_hash: AccountsHash,
account_storage_entries: &[Vec<Arc<AccountStorageEntry>>],
extra_fields: ExtraFieldsToSerialize,
Expand All @@ -652,7 +649,6 @@ where
&mut serializer,
bank_fields,
bank_hash_stats,
accounts_delta_hash,
accounts_hash,
account_storage_entries,
extra_fields,
Expand All @@ -665,7 +661,6 @@ pub fn serialize_bank_snapshot_with<S>(
serializer: S,
bank_fields: BankFieldsToSerialize,
bank_hash_stats: BankHashStats,
accounts_delta_hash: AccountsDeltaHash,
accounts_hash: AccountsHash,
account_storage_entries: &[Vec<Arc<AccountStorageEntry>>],
extra_fields: ExtraFieldsToSerialize,
Expand All @@ -680,7 +675,6 @@ where
slot,
account_storage_entries,
bank_hash_stats,
accounts_delta_hash,
accounts_hash,
write_version,
};
Expand All @@ -703,7 +697,6 @@ impl Serialize for SerializableBankAndStorage<'_> {
let mut bank_fields = self.bank.get_fields_to_serialize();
let accounts_db = &self.bank.rc.accounts.accounts_db;
let bank_hash_stats = self.bank.get_bank_hash_stats();
let accounts_delta_hash = AccountsDeltaHash(Hash::default()); // obsolete, any value works
let accounts_hash = accounts_db.get_accounts_hash(slot).unwrap().0;
let write_version = accounts_db.write_version.load(Ordering::Acquire);
let lamports_per_signature = bank_fields.fee_rate_governor.lamports_per_signature;
Expand All @@ -715,7 +708,6 @@ impl Serialize for SerializableBankAndStorage<'_> {
slot,
account_storage_entries: self.snapshot_storages,
bank_hash_stats,
accounts_delta_hash,
accounts_hash,
write_version,
},
Expand Down Expand Up @@ -747,7 +739,6 @@ impl Serialize for SerializableBankAndStorageNoExtra<'_> {
let bank_fields = self.bank.get_fields_to_serialize();
let accounts_db = &self.bank.rc.accounts.accounts_db;
let bank_hash_stats = self.bank.get_bank_hash_stats();
let accounts_delta_hash = AccountsDeltaHash(Hash::default()); // obsolete, any value works
let accounts_hash = accounts_db.get_accounts_hash(slot).unwrap().0;
let write_version = accounts_db.write_version.load(Ordering::Acquire);
(
Expand All @@ -756,7 +747,6 @@ impl Serialize for SerializableBankAndStorageNoExtra<'_> {
slot,
account_storage_entries: self.snapshot_storages,
bank_hash_stats,
accounts_delta_hash,
accounts_hash,
write_version,
},
Expand All @@ -783,8 +773,7 @@ struct SerializableAccountsDb<'a> {
slot: Slot,
account_storage_entries: &'a [Vec<Arc<AccountStorageEntry>>],
bank_hash_stats: BankHashStats,
accounts_delta_hash: AccountsDeltaHash, // obsolete, will be removed next
accounts_hash: AccountsHash, // obsolete, will be removed next
accounts_hash: AccountsHash, // obsolete, will be removed next
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

write_version: u64,
}

Expand All @@ -806,7 +795,7 @@ impl Serialize for SerializableAccountsDb<'_> {
)
}));
let bank_hash_info = BankHashInfo {
accounts_delta_hash: self.accounts_delta_hash.into(),
obsolete_accounts_delta_hash: [0; 32],
accounts_hash: self.accounts_hash.into(),
stats: self.bank_hash_stats.clone(),
};
Expand Down
4 changes: 1 addition & 3 deletions runtime/src/serde_snapshot/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ mod serde_snapshot_tests {
AccountsDb, AtomicAccountsFileId,
},
accounts_file::{AccountsFile, AccountsFileError, StorageAccess},
accounts_hash::{AccountsDeltaHash, AccountsHash},
accounts_hash::AccountsHash,
ancestors::Ancestors,
},
solana_clock::Slot,
Expand Down Expand Up @@ -103,7 +103,6 @@ mod serde_snapshot_tests {
W: Write,
{
let bank_hash_stats = BankHashStats::default();
let accounts_delta_hash = AccountsDeltaHash(Hash::default()); // obsolete, any value works
let accounts_hash = AccountsHash(Hash::default()); // obsolete, any value works
let write_version = accounts_db.write_version.load(Ordering::Acquire);
serialize_into(
Expand All @@ -112,7 +111,6 @@ mod serde_snapshot_tests {
slot,
account_storage_entries,
bank_hash_stats,
accounts_delta_hash,
accounts_hash,
write_version,
},
Expand Down
11 changes: 1 addition & 10 deletions runtime/src/snapshot_package.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ use {
},
log::*,
solana_accounts_db::{
accounts::Accounts,
accounts_db::AccountStorageEntry,
accounts_hash::{AccountsDeltaHash, AccountsHash},
accounts::Accounts, accounts_db::AccountStorageEntry, accounts_hash::AccountsHash,
},
solana_clock::Slot,
solana_epoch_schedule::EpochSchedule,
Expand Down Expand Up @@ -67,14 +65,12 @@ impl AccountsPackage {
let snapshot_info = {
let accounts_db = &bank.rc.accounts.accounts_db;
let write_version = accounts_db.write_version.load(Ordering::Acquire);
let accounts_delta_hash = AccountsDeltaHash(Hash::default()); // obsolete, any value works
let bank_hash_stats = bank.get_bank_hash_stats();
let bank_fields_to_serialize = bank.get_fields_to_serialize();
SupplementalSnapshotInfo {
status_cache_slot_deltas,
bank_fields_to_serialize,
bank_hash_stats,
accounts_delta_hash,
write_version,
}
};
Expand Down Expand Up @@ -122,7 +118,6 @@ impl AccountsPackage {
status_cache_slot_deltas: Vec::default(),
bank_fields_to_serialize: BankFieldsToSerialize::default_for_tests(),
bank_hash_stats: BankHashStats::default(),
accounts_delta_hash: AccountsDeltaHash(Hash::default()),
write_version: u64::default(),
}),
enqueued: Instant::now(),
Expand All @@ -145,7 +140,6 @@ pub struct SupplementalSnapshotInfo {
pub status_cache_slot_deltas: Vec<BankSlotDelta>,
pub bank_fields_to_serialize: BankFieldsToSerialize,
pub bank_hash_stats: BankHashStats,
pub accounts_delta_hash: AccountsDeltaHash, // obsolete, will be removed next
pub write_version: u64,
}

Expand All @@ -167,7 +161,6 @@ pub struct SnapshotPackage {
pub status_cache_slot_deltas: Vec<BankSlotDelta>,
pub bank_fields_to_serialize: BankFieldsToSerialize,
pub bank_hash_stats: BankHashStats,
pub accounts_delta_hash: AccountsDeltaHash, // obsolete, will be removed next
pub accounts_hash: AccountsHash,
pub write_version: u64,

Expand Down Expand Up @@ -199,7 +192,6 @@ impl SnapshotPackage {
snapshot_storages: accounts_package.snapshot_storages,
status_cache_slot_deltas: snapshot_info.status_cache_slot_deltas,
bank_fields_to_serialize: snapshot_info.bank_fields_to_serialize,
accounts_delta_hash: snapshot_info.accounts_delta_hash,
bank_hash_stats: snapshot_info.bank_hash_stats,
accounts_hash: AccountsHash(Hash::default()), // obsolete, will be removed next
write_version: snapshot_info.write_version,
Expand All @@ -221,7 +213,6 @@ impl SnapshotPackage {
snapshot_storages: Vec::default(),
status_cache_slot_deltas: Vec::default(),
bank_fields_to_serialize: BankFieldsToSerialize::default_for_tests(),
accounts_delta_hash: AccountsDeltaHash(Hash::default()),
bank_hash_stats: BankHashStats::default(),
accounts_hash: AccountsHash(Hash::default()),
write_version: u64::default(),
Expand Down
6 changes: 1 addition & 5 deletions runtime/src/snapshot_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ use {
account_storage_reader::AccountStorageReader,
accounts_db::{AccountStorageEntry, AtomicAccountsFileId},
accounts_file::{AccountsFile, AccountsFileError, StorageAccess},
accounts_hash::{AccountsDeltaHash, AccountsHash},
accounts_hash::AccountsHash,
hardened_unpack::{self, ArchiveChunker, BytesChannelReader, MultiBytes, UnpackError},
utils::{move_and_async_delete_path, ACCOUNTS_RUN_DIR, ACCOUNTS_SNAPSHOT_DIR},
},
Expand Down Expand Up @@ -828,7 +828,6 @@ pub fn serialize_and_archive_snapshot_package(
status_cache_slot_deltas,
bank_fields_to_serialize,
bank_hash_stats,
accounts_delta_hash,
accounts_hash,
write_version,
enqueued: _,
Expand All @@ -841,7 +840,6 @@ pub fn serialize_and_archive_snapshot_package(
status_cache_slot_deltas.as_slice(),
bank_fields_to_serialize,
bank_hash_stats,
accounts_delta_hash,
accounts_hash,
write_version,
should_flush_and_hard_link_storages,
Expand Down Expand Up @@ -902,7 +900,6 @@ fn serialize_snapshot(
slot_deltas: &[BankSlotDelta],
mut bank_fields: BankFieldsToSerialize,
bank_hash_stats: BankHashStats,
accounts_delta_hash: AccountsDeltaHash,
accounts_hash: AccountsHash,
write_version: u64,
should_flush_and_hard_link_storages: bool,
Expand Down Expand Up @@ -965,7 +962,6 @@ fn serialize_snapshot(
stream,
bank_fields,
bank_hash_stats,
accounts_delta_hash,
accounts_hash,
&get_storages_to_serialize(snapshot_storages),
extra_fields,
Expand Down
Loading