reth_trie_common/
block_trie_data.rs1use crate::{updates::TrieUpdatesSorted, LazyHashedPostStateSorted};
4use alloc::sync::Arc;
5
6#[derive(Clone, Debug, PartialEq, Eq)]
8#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9pub struct BlockTrieData {
10 pub hashed_state: LazyHashedPostStateSorted,
12 pub trie_updates: Arc<TrieUpdatesSorted>,
14}
15
16#[cfg(all(test, feature = "serde"))]
17mod tests {
18 use super::*;
19 use alloy_primitives::B256;
20 use serde_json::json;
21
22 #[test]
23 fn preserves_sorted_trie_data_json() {
24 let legacy = json!({
26 "hashed_state": {
27 "accounts": [["0x0000000000000000000000000000000000000000000000000000000000000001", null]],
28 "storages": {}
29 },
30 "trie_updates": { "account_nodes": [], "storage_tries": {} }
31 });
32 let data: BlockTrieData = serde_json::from_value(legacy.clone()).unwrap();
33
34 assert_eq!(data.hashed_state.get().accounts, vec![(B256::with_last_byte(1), None)]);
35 assert!(data.trie_updates.is_empty());
36 assert_eq!(serde_json::to_value(&data).unwrap(), legacy);
37 }
38}