@@ -66,18 +66,19 @@ module Balances (Balances : Intf.Named_balances_intf) = struct
6666end
6767
6868module Utils = struct
69- let populate_root_with_backing_root genesis_mask ~src ~dest =
70- let open Or_error.Let_syntax in
69+ (* Create a new [Ledger.Root.t] ledger with the components of a root
70+ backing_ledger for a genesis ledger. These components are the underlying
71+ root ledger and the stored mask on top of that root that is presented to
72+ users of the genesis root. The mask is passed in to this function so we can
73+ assert that there are no uncommitted changes to it, so we can simply
74+ checkpoint the root instead of performing a much slower account transfer. *)
75+ let create_root_from_backing_root genesis_mask root ~config ~depth () =
7176 assert (
7277 Ledger_hash. equal
7378 (Ledger. merkle_root genesis_mask)
74- (Ledger.Root. merkle_root src) ) ;
75- let % map _root =
76- Ledger_transfer_any. transfer_accounts
77- ~src: (Ledger.Root. as_unmasked src)
78- ~dest: (Ledger.Root. as_unmasked dest)
79- in
80- dest
79+ (Ledger.Root. merkle_root root) ) ;
80+ assert (Ledger.Root. depth root = depth) ;
81+ Ledger.Root. create_checkpoint ~config root () |> Or_error. return
8182
8283 let keypair_of_account_record_exn (private_key , account ) =
8384 let open Account in
@@ -163,11 +164,12 @@ module Make (Inputs : Intf.Ledger_input_intf) : Intf.S = struct
163164
164165 let t = Lazy. map ~f: snd backing_ledger
165166
166- let populate_root root =
167+ let create_root ~ config ~ depth () =
167168 let backing_ledger, mask = Lazy. force backing_ledger in
168169 match backing_ledger with
169170 | `Ephemeral ledger ->
170171 let open Or_error.Let_syntax in
172+ let root = Ledger.Root. create ~logger ~config ~depth () in
171173 (* We are transferring to an unmasked view of the root, so this is
172174 used solely for the transfer side effect *)
173175 let % map _dest =
@@ -176,7 +178,7 @@ module Make (Inputs : Intf.Ledger_input_intf) : Intf.S = struct
176178 in
177179 root
178180 | `Root ledger ->
179- populate_root_with_backing_root mask ~src: ledger ~dest: root
181+ create_root_from_backing_root mask ledger ~config ~depth ()
180182
181183 include Utils
182184
@@ -214,7 +216,7 @@ module Packed = struct
214216
215217 let t ((module L) : t ) = L. t
216218
217- let populate_root ((module L) : t ) ledger = L. populate_root ledger
219+ let create_root ((module L) : t ) = L. create_root
218220
219221 let depth ((module L) : t ) = L. depth
220222
@@ -258,9 +260,9 @@ end) : Intf.S = struct
258260
259261 include Utils
260262
261- let populate_root dest =
263+ let create_root ~ config ~ depth () =
262264 let genesis_root, mask = Lazy. force backing_ledger in
263- populate_root_with_backing_root mask ~src: genesis_root ~dest
265+ create_root_from_backing_root mask genesis_root ~config ~depth ()
264266
265267 let find_account_record_exn ~f =
266268 find_account_record_exn ~f (Lazy. force accounts)
0 commit comments