Skip to content

Commit

Permalink
Adds snapshot map to anvil metadata (#6364)
Browse files Browse the repository at this point in the history
* Adds snapshot map to anvil metadata

* code review

* code review

* code review
  • Loading branch information
naps62 authored Nov 20, 2023
1 parent 3bab117 commit 6280cd4
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 1 deletion.
3 changes: 3 additions & 0 deletions crates/anvil/core/src/types.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
use std::collections::BTreeMap;

use ethers_core::types::{TxHash, H256, U256, U64};
use revm::primitives::SpecId;

Expand Down Expand Up @@ -217,6 +219,7 @@ pub struct AnvilMetadata {
pub latest_block_number: u64,
pub latest_block_hash: H256,
pub forked_network: Option<ForkedNetwork>,
pub snapshots: BTreeMap<U256, (u64, H256)>,
}

/// Information about the forked network.
Expand Down
2 changes: 2 additions & 0 deletions crates/anvil/src/eth/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1708,6 +1708,7 @@ impl EthApi {
pub async fn anvil_metadata(&self) -> Result<AnvilMetadata> {
node_info!("anvil_metadata");
let fork_config = self.backend.get_fork();
let snapshots = self.backend.list_snapshots();

Ok(AnvilMetadata {
client_version: CLIENT_VERSION,
Expand All @@ -1720,6 +1721,7 @@ impl EthApi {
fork_block_number: cfg.block_number(),
fork_block_hash: cfg.block_hash(),
}),
snapshots,
})
}

Expand Down
6 changes: 5 additions & 1 deletion crates/anvil/src/eth/backend/mem/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ use futures::channel::mpsc::{unbounded, UnboundedSender};
use hash_db::HashDB;
use parking_lot::{Mutex, RwLock};
use std::{
collections::HashMap,
collections::{BTreeMap, HashMap},
io::{Read, Write},
ops::Deref,
sync::Arc,
Expand Down Expand Up @@ -676,6 +676,10 @@ impl Backend {
Ok(self.db.write().await.revert(id))
}

pub fn list_snapshots(&self) -> BTreeMap<U256, (u64, H256)> {
self.active_snapshots.lock().clone().into_iter().collect()
}

/// Get the current state.
pub async fn serialized_state(&self) -> Result<SerializableState, BlockchainError> {
let state = self.db.read().await.dump_state()?;
Expand Down
2 changes: 2 additions & 0 deletions crates/anvil/tests/it/anvil_api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,7 @@ async fn can_get_metadata() {
client_version: CLIENT_VERSION,
instance_id: api.instance_id(),
forked_network: None,
snapshots: Default::default(),
};

assert_eq!(metadata, expected_metadata);
Expand Down Expand Up @@ -501,6 +502,7 @@ async fn can_get_metadata_on_fork() {
fork_block_number: block_number,
fork_block_hash: block.hash.unwrap(),
}),
snapshots: Default::default(),
};

assert_eq!(metadata, expected_metadata);
Expand Down

0 comments on commit 6280cd4

Please sign in to comment.