From 9110eb1b7f48aca1fd668e03ec1c4317d5024a4f Mon Sep 17 00:00:00 2001 From: bestmike007 Date: Mon, 17 Feb 2025 09:08:35 +0000 Subject: [PATCH 1/4] chore: depend on clarity backing store interface --- stackslib/src/clarity_vm/clarity.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stackslib/src/clarity_vm/clarity.rs b/stackslib/src/clarity_vm/clarity.rs index 4d413200cc..72e466dbc3 100644 --- a/stackslib/src/clarity_vm/clarity.rs +++ b/stackslib/src/clarity_vm/clarity.rs @@ -25,8 +25,8 @@ pub use clarity::vm::clarity::{ClarityConnection, Error}; use clarity::vm::contexts::{AssetMap, Environment, OwnedEnvironment}; use clarity::vm::costs::{CostTracker, ExecutionCost, LimitedCostTracker}; use clarity::vm::database::{ - BurnStateDB, ClarityDatabase, HeadersDB, RollbackWrapper, RollbackWrapperPersistedLog, - STXBalance, SqliteConnection, NULL_BURN_STATE_DB, NULL_HEADER_DB, + BurnStateDB, ClarityBackingStore, ClarityDatabase, HeadersDB, RollbackWrapper, + RollbackWrapperPersistedLog, STXBalance, SqliteConnection, NULL_BURN_STATE_DB, NULL_HEADER_DB, }; use clarity::vm::errors::Error as InterpreterError; use clarity::vm::representations::SymbolicExpression; @@ -132,7 +132,7 @@ pub struct ClarityBlockConnection<'a, 'b> { /// rollback the transaction by dropping this struct. pub struct ClarityTransactionConnection<'a, 'b> { log: Option, - store: &'a mut WritableMarfStore<'b>, + store: &'b mut dyn ClarityBackingStore, header_db: &'a dyn HeadersDB, burn_state_db: &'a dyn BurnStateDB, cost_track: &'a mut Option, @@ -1565,7 +1565,7 @@ impl<'a> ClarityBlockConnection<'a, '_> { }) } - pub fn start_transaction_processing<'c>(&'c mut self) -> ClarityTransactionConnection<'c, 'a> { + pub fn start_transaction_processing<'c>(&'c mut self) -> ClarityTransactionConnection<'c, 'c> { let store = &mut self.datastore; let cost_track = &mut self.cost_track; let header_db = self.header_db; From a4b637007c05657961dc10b2517b0626d18d42b1 Mon Sep 17 00:00:00 2001 From: bestmike007 Date: Mon, 17 Feb 2025 09:16:11 +0000 Subject: [PATCH 2/4] chore: allow creating ClarityTransactionConnection --- stackslib/src/clarity_vm/clarity.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/stackslib/src/clarity_vm/clarity.rs b/stackslib/src/clarity_vm/clarity.rs index 72e466dbc3..eff4d515bd 100644 --- a/stackslib/src/clarity_vm/clarity.rs +++ b/stackslib/src/clarity_vm/clarity.rs @@ -141,6 +141,31 @@ pub struct ClarityTransactionConnection<'a, 'b> { epoch: StacksEpochId, } +impl<'a, 'b> ClarityTransactionConnection<'a, 'b> { + pub fn new( + store: &'b mut dyn ClarityBackingStore, + header_db: &'a dyn HeadersDB, + burn_state_db: &'a dyn BurnStateDB, + cost_track: &'a mut Option, + mainnet: bool, + chain_id: u32, + epoch: StacksEpochId, + ) -> ClarityTransactionConnection<'a, 'b> { + let mut log = RollbackWrapperPersistedLog::new(); + log.nest(); + ClarityTransactionConnection { + log: Some(log), + store, + header_db, + burn_state_db, + cost_track, + mainnet, + chain_id, + epoch, + } + } +} + pub struct ClarityReadOnlyConnection<'a> { datastore: ReadOnlyMarfStore<'a>, header_db: &'a dyn HeadersDB, From 3a291ec55241ddaf7e5785f9a29921245059937c Mon Sep 17 00:00:00 2001 From: bestmike007 Date: Thu, 20 Feb 2025 03:52:37 +0000 Subject: [PATCH 3/4] chore: omit lifetimes --- stackslib/src/clarity_vm/clarity.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stackslib/src/clarity_vm/clarity.rs b/stackslib/src/clarity_vm/clarity.rs index eff4d515bd..c709357491 100644 --- a/stackslib/src/clarity_vm/clarity.rs +++ b/stackslib/src/clarity_vm/clarity.rs @@ -1590,7 +1590,7 @@ impl<'a> ClarityBlockConnection<'a, '_> { }) } - pub fn start_transaction_processing<'c>(&'c mut self) -> ClarityTransactionConnection<'c, 'c> { + pub fn start_transaction_processing(&mut self) -> ClarityTransactionConnection { let store = &mut self.datastore; let cost_track = &mut self.cost_track; let header_db = self.header_db; From c2fad408d753e88244d8ef5fabcdefcce2129b01 Mon Sep 17 00:00:00 2001 From: bestmike007 Date: Tue, 4 Mar 2025 16:16:15 +0000 Subject: [PATCH 4/4] chore: use initiating ClarityTransactionConnection --- stackslib/src/clarity_vm/clarity.rs | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/stackslib/src/clarity_vm/clarity.rs b/stackslib/src/clarity_vm/clarity.rs index c709357491..634ff07252 100644 --- a/stackslib/src/clarity_vm/clarity.rs +++ b/stackslib/src/clarity_vm/clarity.rs @@ -1591,24 +1591,15 @@ impl<'a> ClarityBlockConnection<'a, '_> { } pub fn start_transaction_processing(&mut self) -> ClarityTransactionConnection { - let store = &mut self.datastore; - let cost_track = &mut self.cost_track; - let header_db = self.header_db; - let burn_state_db = self.burn_state_db; - let mainnet = self.mainnet; - let chain_id = self.chain_id; - let mut log = RollbackWrapperPersistedLog::new(); - log.nest(); - ClarityTransactionConnection { - store, - cost_track, - header_db, - burn_state_db, - log: Some(log), - mainnet, - chain_id, - epoch: self.epoch, - } + ClarityTransactionConnection::new( + &mut self.datastore, + self.header_db, + self.burn_state_db, + &mut self.cost_track, + self.mainnet, + self.chain_id, + self.epoch, + ) } /// Execute `todo` as a transaction in this block. The execution