foundry_evm_core/env/
journal.rs1use crate::backend::JournaledState;
4use revm::{Database, Journal, inspector::JournalExt};
5
6pub trait FoundryJournal: JournalExt {
8 fn db_journal_inner_mut(&mut self) -> (&mut Self::Database, &mut JournaledState);
10
11 fn journal_inner(&self) -> &JournaledState;
13
14 #[cfg(feature = "monad")]
16 fn capture_reserve_balance(
17 &self,
18 ) -> monad_revm::reserve_balance::tracker::ReserveBalanceTracker {
19 monad_revm::reserve_balance::tracker::ReserveBalanceTracker::default()
20 }
21
22 #[cfg(feature = "monad")]
24 fn restore_reserve_balance(
25 &mut self,
26 _tracker: monad_revm::reserve_balance::tracker::ReserveBalanceTracker,
27 ) {
28 }
29
30 #[cfg(feature = "monad")]
34 fn preserves_reserve_balance(&self) -> bool {
35 false
36 }
37
38 #[cfg(feature = "monad")]
40 fn set_preserve_reserve_balance(&mut self, _preserve: bool) {}
41}
42
43impl<DB: Database> FoundryJournal for Journal<DB> {
44 fn db_journal_inner_mut(&mut self) -> (&mut DB, &mut JournaledState) {
45 (&mut self.database, &mut self.inner)
46 }
47
48 fn journal_inner(&self) -> &JournaledState {
49 &self.inner
50 }
51}
52
53#[cfg(feature = "monad")]
54impl<DB: Database> FoundryJournal for monad_revm::MonadJournal<DB> {
55 fn db_journal_inner_mut(&mut self) -> (&mut DB, &mut JournaledState) {
56 Journal::db_journal_inner_mut(self)
57 }
58
59 fn journal_inner(&self) -> &JournaledState {
60 Journal::journal_inner(self)
61 }
62
63 fn capture_reserve_balance(
64 &self,
65 ) -> monad_revm::reserve_balance::tracker::ReserveBalanceTracker {
66 monad_revm::MonadJournalTr::reserve_balance(self).clone()
67 }
68
69 fn restore_reserve_balance(
70 &mut self,
71 tracker: monad_revm::reserve_balance::tracker::ReserveBalanceTracker,
72 ) {
73 *monad_revm::MonadJournalTr::reserve_balance_mut(self) = tracker;
74 }
75
76 fn preserves_reserve_balance(&self) -> bool {
77 monad_revm::MonadJournalTr::preserves_reserve_balance_tracker(self)
78 }
79
80 fn set_preserve_reserve_balance(&mut self, preserve: bool) {
81 monad_revm::MonadJournalTr::set_preserve_reserve_balance_tracker(self, preserve);
82 }
83}