Skip to content

Commit fe9c291

Browse files
authored
Merge pull request #5840 from bestmike007/chore/depend-on-clarity-backing-store-interface
chore: depend on clarity backing store interface
2 parents 59213ab + 24a3fff commit fe9c291

File tree

1 file changed

+38
-22
lines changed

1 file changed

+38
-22
lines changed

stackslib/src/clarity_vm/clarity.rs

Lines changed: 38 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ pub use clarity::vm::clarity::{ClarityConnection, Error};
2525
use clarity::vm::contexts::{AssetMap, Environment, OwnedEnvironment};
2626
use clarity::vm::costs::{CostTracker, ExecutionCost, LimitedCostTracker};
2727
use clarity::vm::database::{
28-
BurnStateDB, ClarityDatabase, HeadersDB, RollbackWrapper, RollbackWrapperPersistedLog,
29-
STXBalance, SqliteConnection, NULL_BURN_STATE_DB, NULL_HEADER_DB,
28+
BurnStateDB, ClarityBackingStore, ClarityDatabase, HeadersDB, RollbackWrapper,
29+
RollbackWrapperPersistedLog, STXBalance, SqliteConnection, NULL_BURN_STATE_DB, NULL_HEADER_DB,
3030
};
3131
use clarity::vm::errors::Error as InterpreterError;
3232
use clarity::vm::representations::SymbolicExpression;
@@ -132,7 +132,7 @@ pub struct ClarityBlockConnection<'a, 'b> {
132132
/// rollback the transaction by dropping this struct.
133133
pub struct ClarityTransactionConnection<'a, 'b> {
134134
log: Option<RollbackWrapperPersistedLog>,
135-
store: &'a mut WritableMarfStore<'b>,
135+
store: &'b mut dyn ClarityBackingStore,
136136
header_db: &'a dyn HeadersDB,
137137
burn_state_db: &'a dyn BurnStateDB,
138138
cost_track: &'a mut Option<LimitedCostTracker>,
@@ -141,6 +141,31 @@ pub struct ClarityTransactionConnection<'a, 'b> {
141141
epoch: StacksEpochId,
142142
}
143143

144+
impl<'a, 'b> ClarityTransactionConnection<'a, 'b> {
145+
pub fn new(
146+
store: &'b mut dyn ClarityBackingStore,
147+
header_db: &'a dyn HeadersDB,
148+
burn_state_db: &'a dyn BurnStateDB,
149+
cost_track: &'a mut Option<LimitedCostTracker>,
150+
mainnet: bool,
151+
chain_id: u32,
152+
epoch: StacksEpochId,
153+
) -> ClarityTransactionConnection<'a, 'b> {
154+
let mut log = RollbackWrapperPersistedLog::new();
155+
log.nest();
156+
ClarityTransactionConnection {
157+
log: Some(log),
158+
store,
159+
header_db,
160+
burn_state_db,
161+
cost_track,
162+
mainnet,
163+
chain_id,
164+
epoch,
165+
}
166+
}
167+
}
168+
144169
pub struct ClarityReadOnlyConnection<'a> {
145170
datastore: ReadOnlyMarfStore<'a>,
146171
header_db: &'a dyn HeadersDB,
@@ -1582,25 +1607,16 @@ impl<'a> ClarityBlockConnection<'a, '_> {
15821607
})
15831608
}
15841609

1585-
pub fn start_transaction_processing<'c>(&'c mut self) -> ClarityTransactionConnection<'c, 'a> {
1586-
let store = &mut self.datastore;
1587-
let cost_track = &mut self.cost_track;
1588-
let header_db = self.header_db;
1589-
let burn_state_db = self.burn_state_db;
1590-
let mainnet = self.mainnet;
1591-
let chain_id = self.chain_id;
1592-
let mut log = RollbackWrapperPersistedLog::new();
1593-
log.nest();
1594-
ClarityTransactionConnection {
1595-
store,
1596-
cost_track,
1597-
header_db,
1598-
burn_state_db,
1599-
log: Some(log),
1600-
mainnet,
1601-
chain_id,
1602-
epoch: self.epoch,
1603-
}
1610+
pub fn start_transaction_processing(&mut self) -> ClarityTransactionConnection {
1611+
ClarityTransactionConnection::new(
1612+
&mut self.datastore,
1613+
self.header_db,
1614+
self.burn_state_db,
1615+
&mut self.cost_track,
1616+
self.mainnet,
1617+
self.chain_id,
1618+
self.epoch,
1619+
)
16041620
}
16051621

16061622
/// Execute `todo` as a transaction in this block. The execution

0 commit comments

Comments
 (0)