@@ -25,8 +25,8 @@ pub use clarity::vm::clarity::{ClarityConnection, Error};
2525use  clarity:: vm:: contexts:: { AssetMap ,  OwnedEnvironment } ; 
2626use  clarity:: vm:: costs:: { CostTracker ,  ExecutionCost ,  LimitedCostTracker } ; 
2727use  clarity:: vm:: database:: { 
28-     BurnStateDB ,  ClarityBackingStore ,  ClarityDatabase ,   HeadersDB ,   RollbackWrapper , 
29-     RollbackWrapperPersistedLog ,  STXBalance ,  NULL_BURN_STATE_DB ,  NULL_HEADER_DB , 
28+     BurnStateDB ,  ClarityBackingStore ,  ClarityBackingStoreTransaction ,   ClarityDatabase ,   HeadersDB , 
29+     RollbackWrapper ,   RollbackWrapperPersistedLog ,  STXBalance ,  NULL_BURN_STATE_DB ,  NULL_HEADER_DB , 
3030} ; 
3131use  clarity:: vm:: errors:: Error  as  InterpreterError ; 
3232use  clarity:: vm:: events:: { STXEventType ,  STXMintEventData } ; 
@@ -53,7 +53,7 @@ use crate::chainstate::stacks::{
5353    Error  as  ChainstateError ,  StacksMicroblockHeader ,  StacksTransaction ,  TransactionPayload , 
5454    TransactionSmartContract ,  TransactionVersion , 
5555} ; 
56- use  crate :: clarity_vm:: database:: marf:: { MarfedKV ,   ReadOnlyMarfStore ,   WritableMarfStore } ; 
56+ use  crate :: clarity_vm:: database:: marf:: MarfedKV ; 
5757use  crate :: core:: { StacksEpoch ,  StacksEpochId ,  FIRST_STACKS_BLOCK_ID ,  GENESIS_EPOCH } ; 
5858use  crate :: util_lib:: boot:: { boot_code_acc,  boot_code_addr,  boot_code_id,  boot_code_tx_auth} ; 
5959use  crate :: util_lib:: db:: Error  as  DatabaseError ; 
@@ -101,15 +101,15 @@ pub struct ClarityInstance {
101101/// issuring event dispatches, before the Clarity database commits. 
102102/// 
103103pub  struct  PreCommitClarityBlock < ' a >  { 
104-     datastore :  WritableMarfStore < ' a > , 
104+     datastore :  Box < dyn   ClarityBackingStoreTransaction  +  ' a > , 
105105    commit_to :  StacksBlockId , 
106106} 
107107
108108/// 
109109/// A high-level interface for Clarity VM interactions within a single block. 
110110/// 
111111pub  struct  ClarityBlockConnection < ' a ,  ' b >  { 
112-     datastore :  WritableMarfStore < ' a > , 
112+     datastore :  Box < dyn   ClarityBackingStoreTransaction  +  ' a > , 
113113    header_db :  & ' b  dyn  HeadersDB , 
114114    burn_state_db :  & ' b  dyn  BurnStateDB , 
115115    cost_track :  Option < LimitedCostTracker > , 
@@ -160,7 +160,7 @@ impl<'a, 'b> ClarityTransactionConnection<'a, 'b> {
160160} 
161161
162162pub  struct  ClarityReadOnlyConnection < ' a >  { 
163-     datastore :  ReadOnlyMarfStore < ' a > , 
163+     datastore :  Box < dyn   ClarityBackingStore  +  ' a > , 
164164    header_db :  & ' a  dyn  HeadersDB , 
165165    burn_state_db :  & ' a  dyn  BurnStateDB , 
166166    epoch :  StacksEpochId , 
@@ -196,13 +196,13 @@ macro_rules! using {
196196impl  ClarityBlockConnection < ' _ ,  ' _ >  { 
197197    #[ cfg( test) ]  
198198    pub  fn  new_test_conn < ' a ,  ' b > ( 
199-         datastore :  WritableMarfStore < ' a > , 
199+         datastore :  super :: database :: marf :: WritableMarfStore < ' a > , 
200200        header_db :  & ' b  dyn  HeadersDB , 
201201        burn_state_db :  & ' b  dyn  BurnStateDB , 
202202        epoch :  StacksEpochId , 
203203    )  -> ClarityBlockConnection < ' a ,  ' b >  { 
204204        ClarityBlockConnection  { 
205-             datastore, 
205+             datastore :   Box :: new ( datastore ) , 
206206            header_db, 
207207            burn_state_db, 
208208            cost_track :  Some ( LimitedCostTracker :: new_free ( ) ) , 
@@ -251,7 +251,7 @@ impl ClarityBlockConnection<'_, '_> {
251251        & mut  self , 
252252        burn_state_db :  & dyn  BurnStateDB , 
253253    )  -> Result < StacksEpochId ,  Error >  { 
254-         let  mut  db = self . datastore . as_clarity_db ( self . header_db ,  burn_state_db) ; 
254+         let  mut  db = ClarityDatabase :: new ( self . datastore . as_mut ( ) ,   self . header_db ,  burn_state_db) ; 
255255        // NOTE: the begin/roll_back shouldn't be necessary with how this gets used in practice, 
256256        // but is put here defensively. 
257257        db. begin ( ) ; 
@@ -328,7 +328,7 @@ impl ClarityInstance {
328328        } ; 
329329
330330        ClarityBlockConnection  { 
331-             datastore, 
331+             datastore :   Box :: new ( datastore ) , 
332332            header_db, 
333333            burn_state_db, 
334334            cost_track, 
@@ -352,7 +352,7 @@ impl ClarityInstance {
352352        let  cost_track = Some ( LimitedCostTracker :: new_free ( ) ) ; 
353353
354354        ClarityBlockConnection  { 
355-             datastore, 
355+             datastore :   Box :: new ( datastore ) , 
356356            header_db, 
357357            burn_state_db, 
358358            cost_track, 
@@ -378,7 +378,7 @@ impl ClarityInstance {
378378        let  cost_track = Some ( LimitedCostTracker :: new_free ( ) ) ; 
379379
380380        let  mut  conn = ClarityBlockConnection  { 
381-             datastore :  writable, 
381+             datastore :  Box :: new ( writable) , 
382382            header_db, 
383383            burn_state_db, 
384384            cost_track, 
@@ -477,7 +477,7 @@ impl ClarityInstance {
477477        let  cost_track = Some ( LimitedCostTracker :: new_free ( ) ) ; 
478478
479479        let  mut  conn = ClarityBlockConnection  { 
480-             datastore :  writable, 
480+             datastore :  Box :: new ( writable) , 
481481            header_db, 
482482            burn_state_db, 
483483            cost_track, 
@@ -559,6 +559,7 @@ impl ClarityInstance {
559559
560560    pub  fn  drop_unconfirmed_state ( & mut  self ,  block :  & StacksBlockId )  -> Result < ( ) ,  Error >  { 
561561        let  datastore = self . datastore . begin_unconfirmed ( block) ; 
562+         let  datastore:  Box < dyn  ClarityBackingStoreTransaction >  = Box :: new ( datastore) ; 
562563        datastore. rollback_unconfirmed ( ) ?; 
563564        Ok ( ( ) ) 
564565    } 
@@ -588,7 +589,7 @@ impl ClarityInstance {
588589        } ; 
589590
590591        ClarityBlockConnection  { 
591-             datastore, 
592+             datastore :   Box :: new ( datastore ) , 
592593            header_db, 
593594            burn_state_db, 
594595            cost_track, 
@@ -628,7 +629,7 @@ impl ClarityInstance {
628629        } ?; 
629630
630631        Ok ( ClarityReadOnlyConnection  { 
631-             datastore, 
632+             datastore :   Box :: new ( datastore ) , 
632633            header_db, 
633634            burn_state_db, 
634635            epoch, 
@@ -677,7 +678,8 @@ impl ClarityConnection for ClarityBlockConnection<'_, '_> {
677678    where 
678679        F :  FnOnce ( ClarityDatabase )  -> ( R ,  ClarityDatabase ) , 
679680    { 
680-         let  mut  db = ClarityDatabase :: new ( & mut  self . datastore ,  self . header_db ,  self . burn_state_db ) ; 
681+         let  mut  db =
682+             ClarityDatabase :: new ( self . datastore . as_mut ( ) ,  self . header_db ,  self . burn_state_db ) ; 
681683        db. begin ( ) ; 
682684        let  ( result,  mut  db)  = to_do ( db) ; 
683685        db. roll_back ( ) 
@@ -689,7 +691,7 @@ impl ClarityConnection for ClarityBlockConnection<'_, '_> {
689691    where 
690692        F :  FnOnce ( & mut  AnalysisDatabase )  -> R , 
691693    { 
692-         let  mut  db = AnalysisDatabase :: new ( & mut   self . datastore ) ; 
694+         let  mut  db = AnalysisDatabase :: new ( self . datastore . as_mut ( ) ) ; 
693695        db. begin ( ) ; 
694696        let  result = to_do ( & mut  db) ; 
695697        db. roll_back ( ) 
@@ -708,9 +710,8 @@ impl ClarityConnection for ClarityReadOnlyConnection<'_> {
708710    where 
709711        F :  FnOnce ( ClarityDatabase )  -> ( R ,  ClarityDatabase ) , 
710712    { 
711-         let  mut  db = self 
712-             . datastore 
713-             . as_clarity_db ( self . header_db ,  self . burn_state_db ) ; 
713+         let  mut  db =
714+             ClarityDatabase :: new ( self . datastore . as_mut ( ) ,  self . header_db ,  self . burn_state_db ) ; 
714715        db. begin ( ) ; 
715716        let  ( result,  mut  db)  = to_do ( db) ; 
716717        db. roll_back ( ) 
@@ -722,7 +723,7 @@ impl ClarityConnection for ClarityReadOnlyConnection<'_> {
722723    where 
723724        F :  FnOnce ( & mut  AnalysisDatabase )  -> R , 
724725    { 
725-         let  mut  db = self . datastore . as_analysis_db ( ) ; 
726+         let  mut  db = AnalysisDatabase :: new ( self . datastore . as_mut ( ) ) ; 
726727        db. begin ( ) ; 
727728        let  result = to_do ( & mut  db) ; 
728729        db. roll_back ( ) 
@@ -773,7 +774,8 @@ impl<'a> ClarityBlockConnection<'a, '_> {
773774#[ cfg( test) ]  
774775    pub  fn  commit_block ( self )  -> LimitedCostTracker  { 
775776        debug ! ( "Commit Clarity datastore" ) ; 
776-         self . datastore . test_commit ( ) ; 
777+         let  bhh = self . datastore . get_block_hash ( ) ; 
778+         self . datastore . commit_to ( & bhh) . unwrap ( ) ; 
777779
778780        self . cost_track . unwrap ( ) 
779781    } 
@@ -1709,7 +1711,7 @@ impl<'a> ClarityBlockConnection<'a, '_> {
17091711
17101712    pub  fn  start_transaction_processing ( & mut  self )  -> ClarityTransactionConnection < ' _ ,  ' _ >  { 
17111713        ClarityTransactionConnection :: new ( 
1712-             & mut   self . datastore , 
1714+             self . datastore . as_mut ( ) , 
17131715            self . header_db , 
17141716            self . burn_state_db , 
17151717            & mut  self . cost_track , 
@@ -1761,7 +1763,7 @@ impl<'a> ClarityBlockConnection<'a, '_> {
17611763        self . datastore . seal ( ) 
17621764    } 
17631765
1764-     pub  fn  destruct ( self )  -> WritableMarfStore < ' a >  { 
1766+     pub  fn  destruct ( self )  -> Box < dyn   ClarityBackingStore  +  ' a >  { 
17651767        self . datastore 
17661768    } 
17671769
0 commit comments