Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/app/archive/lib/processor.ml
Original file line number Diff line number Diff line change
Expand Up @@ -4686,7 +4686,7 @@ let add_genesis_accounts ~logger ~(runtime_config_opt : Runtime_config.t option)
Genesis_ledger_helper.init_from_config_file ~logger
~proof_level:Genesis_constants.Compiled.proof_level
~genesis_constants ~constraint_constants runtime_config
~cli_proof_level:None ~genesis_backing_type:Stable_db
~cli_proof_level:None
with
| Ok (precomputed_values, _) ->
precomputed_values
Expand Down
9 changes: 3 additions & 6 deletions src/app/cli/src/cli_entrypoint/mina_cli_entrypoint.ml
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,7 @@ let plugin_flag =
else Command.Param.return []

let load_config_files ~logger ~genesis_constants ~constraint_constants ~conf_dir
~genesis_dir ~cli_proof_level ~proof_level ~genesis_backing_type
config_files =
~genesis_dir ~cli_proof_level ~proof_level config_files =
let%bind config_jsons =
let config_files_paths =
List.map config_files ~f:(fun (config_file, _) -> `String config_file)
Expand Down Expand Up @@ -102,8 +101,7 @@ let load_config_files ~logger ~genesis_constants ~constraint_constants ~conf_dir
let%bind precomputed_values =
match%map
Genesis_ledger_helper.init_from_config_file ~cli_proof_level ~genesis_dir
~logger ~genesis_constants ~constraint_constants ~proof_level
~genesis_backing_type config
~logger ~genesis_constants ~constraint_constants ~proof_level config
with
| Ok (precomputed_values, _) ->
precomputed_values
Expand Down Expand Up @@ -797,7 +795,6 @@ let setup_daemon logger ~itn_features ~default_snark_worker_fee =
load_config_files ~logger ~conf_dir ~genesis_dir
~proof_level:Genesis_constants.Compiled.proof_level config_files
~genesis_constants ~constraint_constants ~cli_proof_level
~genesis_backing_type:ledger_backing_type
in

constraint_constants.block_window_duration_ms |> Float.of_int
Expand Down Expand Up @@ -1978,7 +1975,7 @@ let internal_commands logger ~itn_features =
let%bind precomputed_values, _config_jsons, _config =
load_config_files ~logger ~conf_dir ~genesis_dir ~genesis_constants
~constraint_constants ~proof_level ~cli_proof_level:None
~genesis_backing_type:Stable_db config_files
config_files
in
let pids = Child_processes.Termination.create_pid_table () in
let%bind prover =
Expand Down
6 changes: 2 additions & 4 deletions src/app/cli/src/init/client.ml
Original file line number Diff line number Diff line change
Expand Up @@ -853,7 +853,7 @@ let hash_ledger =
let packed_ledger =
Genesis_ledger_helper.Ledger.packed_genesis_ledger_of_accounts
~logger:(Logger.create ()) ~depth:constraint_constants.ledger_depth
~genesis_backing_type:Stable_db accounts
accounts
in
let ledger = Lazy.force @@ Genesis_ledger.Packed.t packed_ledger in
Format.printf "%s@."
Expand Down Expand Up @@ -1854,7 +1854,6 @@ let compile_time_constants =
>>= Genesis_ledger_helper.init_from_config_file ~genesis_constants
~constraint_constants ~logger:(Logger.null ()) ~proof_level
~cli_proof_level:None ~genesis_dir
~genesis_backing_type:Stable_db
>>| Or_error.ok_exn
in
let all_constants =
Expand Down Expand Up @@ -2372,8 +2371,7 @@ let test_ledger_application =
Genesis_constants.Compiled.constraint_constants
in
let genesis_constants = Genesis_constants.Compiled.genesis_constants in
Test_ledger_application.test ~privkey_path
~ledger_path:(ledger_path, Stable_db) ?prev_block_path
Test_ledger_application.test ~privkey_path ~ledger_path ?prev_block_path
~first_partition_slots ~no_new_stack ~has_second_partition
~num_txs_per_round ~rounds ~no_masks ~max_depth ~tracing
~transfer_parties_get_actions_events num_txs ~constraint_constants
Expand Down
3 changes: 1 addition & 2 deletions src/app/delegation_verify/delegation_verify.ml
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,7 @@ let instantiate_verify_functions ~logger ~genesis_constants
@@ Runtime_config.of_yojson config_json
in
Genesis_ledger_helper.init_from_config_file ~logger ~proof_level
~constraint_constants ~genesis_constants ~cli_proof_level
~genesis_backing_type:Stable_db config
~constraint_constants ~genesis_constants ~cli_proof_level config
in
let%map.Deferred precomputed_values =
match precomputed_values with
Expand Down
3 changes: 1 addition & 2 deletions src/app/replayer/replayer.ml
Original file line number Diff line number Diff line change
Expand Up @@ -671,8 +671,7 @@ let main ~input_file ~output_file_opt ~archive_uri ~continue_on_error
Genesis_ledger_helper.Ledger.load ~proof_level
~genesis_dir:
(Option.value ~default:Cache_dir.autogen_path genesis_dir_opt)
~logger ~constraint_constants ~genesis_backing_type:Stable_db
input.genesis_ledger
~logger ~constraint_constants input.genesis_ledger
with
| Error e ->
[%log fatal]
Expand Down
3 changes: 1 addition & 2 deletions src/app/runtime_genesis_ledger/runtime_genesis_ledger.ml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ let load_ledger ~ignore_missing_fields ~pad_app_state
in
let packed =
Genesis_ledger_helper.Ledger.packed_genesis_ledger_of_accounts ~logger
~depth:constraint_constants.ledger_depth ~genesis_backing_type:Stable_db
(lazy accounts)
~depth:constraint_constants.ledger_depth (lazy accounts)
in
Lazy.force (Genesis_ledger.Packed.t packed)

Expand Down
2 changes: 1 addition & 1 deletion src/app/zkapp_test_transaction/lib/commands.ml
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ let test_zkapp_with_genesis_ledger_main keyfile zkapp_keyfile config_file () =
let packed =
Genesis_ledger_helper.Ledger.packed_genesis_ledger_of_accounts
~logger:(Logger.create ()) ~depth:constraint_constants.ledger_depth
~genesis_backing_type:Stable_db accounts
accounts
in
Lazy.force (Genesis_ledger.Packed.t packed)
in
Expand Down
10 changes: 8 additions & 2 deletions src/lib/bootstrap_controller/bootstrap_controller.ml
Original file line number Diff line number Diff line change
Expand Up @@ -679,7 +679,7 @@ let run_cycle ~context:(module Context : CONTEXT) ~trust_system ~verifier
let run ~context:(module Context : CONTEXT) ~trust_system ~verifier ~network
~consensus_local_state ~network_transition_pipe ~preferred_peers
~persistent_root ~persistent_frontier ~initial_root_transition ~catchup_mode
=
~ledger_backing =
let open Context in
let run_cycle =
run_cycle
Expand All @@ -699,6 +699,11 @@ let run ~context:(module Context : CONTEXT) ~trust_system ~verifier ~network
; ( "bootstrap_stats"
, `List (List.map ~f:bootstrap_cycle_stats_to_yojson cycles) )
] ;
if
Mina_ledger.Ledger.Root.Config.(
equal_backing_type ledger_backing Converting_db)
then
Persistent_root.convert_instance_exn ~logger ~here:[%here] persistent_root ;
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is where we run the conversion.

Mina_metrics.(
Gauge.set Bootstrap.bootstrap_time_ms Core.Time.(Span.to_ms @@ time_elapsed)) ;
result
Expand Down Expand Up @@ -905,7 +910,8 @@ let%test_module "Bootstrap_controller tests" =
~trust_system ~verifier ~network:my_net.network ~preferred_peers:[]
~consensus_local_state:my_net.state.consensus_local_state
~network_transition_pipe ~persistent_root ~persistent_frontier
~catchup_mode:`Super ~initial_root_transition )
~catchup_mode:`Super ~initial_root_transition
~ledger_backing:Stable_db )

let assert_transitions_increasingly_sorted ~root
(incoming_transitions : Transition_cache.element list) =
Expand Down
1 change: 1 addition & 0 deletions src/lib/bootstrap_controller/bootstrap_controller.mli
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,5 @@ val run :
-> persistent_frontier:Transition_frontier.Persistent_frontier.t
-> initial_root_transition:Mina_block.Validated.t
-> catchup_mode:[ `Super ]
-> ledger_backing:Mina_ledger.Ledger.Root.Config.backing_type
-> (Transition_frontier.t * Transition_cache.element list) Deferred.t
9 changes: 5 additions & 4 deletions src/lib/genesis_ledger/genesis_ledger.ml
Original file line number Diff line number Diff line change
Expand Up @@ -129,17 +129,18 @@ module Make (Inputs : Intf.Ledger_input_intf) : Intf.S = struct
match directory with
| `Ephemeral ->
lazy (`Ephemeral (Ledger.create_ephemeral ~depth ()), true)
| `New backing_type ->
| `New ->
lazy
( `Root
(Ledger.Root.create_temporary ~logger ~backing_type ~depth ())
(Ledger.Root.create_temporary ~logger ~backing_type:Stable_db
~depth () )
, true )
| `Path (directory_name, backing_type) ->
| `Path directory_name ->
lazy
( `Root
(Ledger.Root.create ~logger
~config:
(Ledger.Root.Config.with_directory ~backing_type
(Ledger.Root.Config.with_directory ~backing_type:Stable_db
~directory_name )
~depth () )
, false )
Expand Down
5 changes: 1 addition & 4 deletions src/lib/genesis_ledger/intf.ml
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,7 @@ end
module type Ledger_input_intf = sig
include Accounts_intf

val directory :
[ `Ephemeral
| `New of Mina_ledger.Ledger.Root.Config.backing_type
| `Path of string * Mina_ledger.Ledger.Root.Config.backing_type ]
val directory : [ `Ephemeral | `New | `Path of string ]

val depth : int

Expand Down
50 changes: 24 additions & 26 deletions src/lib/genesis_ledger_helper/genesis_ledger_helper.ml
Original file line number Diff line number Diff line change
Expand Up @@ -344,12 +344,12 @@ module Ledger = struct
pad_with_rev_balances (List.rev config.balances) accounts
|> pad_to (Option.value ~default:0 config.num_accounts))

let packed_genesis_ledger_of_accounts ~genesis_backing_type ~logger ~depth
accounts : Genesis_ledger.Packed.t =
let packed_genesis_ledger_of_accounts ~logger ~depth accounts :
Genesis_ledger.Packed.t =
( module Genesis_ledger.Make (struct
let accounts = accounts

let directory = `New genesis_backing_type
let directory = `New

let depth = depth

Expand Down Expand Up @@ -399,10 +399,10 @@ module Ledger = struct

let load_extracted_ledger ~(config : Runtime_config.Ledger.t) ~logger
~(constraint_constants : Genesis_constants.Constraint_constants.t)
~extracted_path ~genesis_backing_type : Genesis_ledger.Packed.t =
~extracted_path : Genesis_ledger.Packed.t =
let genesis_config =
Mina_ledger.Ledger.Root.Config.with_directory
~backing_type:genesis_backing_type ~directory_name:extracted_path
Mina_ledger.Ledger.Root.Config.with_directory ~backing_type:Stable_db
~directory_name:extracted_path
in
( module Genesis_ledger.Of_ledger (struct
let backing_ledger =
Expand Down Expand Up @@ -445,11 +445,11 @@ module Ledger = struct
let load_ledger_by_spec ~genesis_dir ~logger
~(constraint_constants : Genesis_constants.Constraint_constants.t)
~ledger_name_prefix ~(load_ledger_spec : load_ledger_spec)
~genesis_backing_type ~(config : Runtime_config.Ledger.t) =
~(config : Runtime_config.Ledger.t) =
match load_ledger_spec with
| AccountsOnly { accounts } -> (
let packed =
packed_genesis_ledger_of_accounts ~genesis_backing_type ~logger
packed_genesis_ledger_of_accounts ~logger
~depth:constraint_constants.ledger_depth accounts
in
let ledger = Lazy.force (Genesis_ledger.Packed.t packed) in
Expand Down Expand Up @@ -516,7 +516,7 @@ module Ledger = struct
( module Genesis_ledger.Make (struct
let accounts = accounts

let directory = `Path (extracted_path, genesis_backing_type)
let directory = `Path extracted_path

let depth = constraint_constants.ledger_depth

Expand All @@ -527,7 +527,7 @@ module Ledger = struct
| Extracted { extracted_path } ->
let packed =
load_extracted_ledger ~config ~logger ~constraint_constants
~extracted_path ~genesis_backing_type
~extracted_path
in
let ledger = Lazy.force (Genesis_ledger.Packed.t packed) in
let%map.Deferred.Or_error tar_file =
Expand All @@ -549,13 +549,13 @@ module Ledger = struct
in
let packed =
load_extracted_ledger ~config ~logger ~constraint_constants
~extracted_path ~genesis_backing_type
~extracted_path
in
(packed, config, extracted_path)

let load ~proof_level ~genesis_dir ~logger ~constraint_constants
~genesis_backing_type ?(ledger_name_prefix = "genesis_ledger")
?overwrite_version (config : Runtime_config.Ledger.t) =
?(ledger_name_prefix = "genesis_ledger") ?overwrite_version
(config : Runtime_config.Ledger.t) =
Monitor.try_with_join_or_error ~here:[%here] (fun () ->
let padded_accounts_opt =
padded_accounts_from_runtime_config_opt ~logger ~proof_level
Expand Down Expand Up @@ -589,12 +589,12 @@ module Ledger = struct
Deferred.Or_error.return (Tar { tar_file; extracted_path })
in
load_ledger_by_spec ~genesis_dir ~logger ~constraint_constants
~ledger_name_prefix ~config ~load_ledger_spec ~genesis_backing_type )
~ledger_name_prefix ~config ~load_ledger_spec )
end

module Epoch_data = struct
let load ~proof_level ~genesis_dir ~logger ~constraint_constants
~genesis_backing_type (config : Runtime_config.Epoch_data.t option) =
(config : Runtime_config.Epoch_data.t option) =
let open Deferred.Or_error.Let_syntax in
match config with
| None ->
Expand All @@ -607,7 +607,7 @@ module Epoch_data = struct
in
let%bind staking, staking_config =
let%map staking_ledger, config', ledger_file =
load_ledger ~genesis_backing_type config.staking.ledger
load_ledger config.staking.ledger
in
[%log trace] "Loaded staking epoch ledger from $ledger_file"
~metadata:[ ("ledger_file", `String ledger_file) ] ;
Expand All @@ -624,9 +624,7 @@ module Epoch_data = struct
epoch ledger" ;
Deferred.Or_error.return (None, None)
| Some { ledger; seed } ->
let%map next_ledger, config'', ledger_file =
load_ledger ~genesis_backing_type ledger
in
let%map next_ledger, config'', ledger_file = load_ledger ledger in
[%log trace] "Loaded next epoch ledger from $ledger_file"
~metadata:[ ("ledger_file", `String ledger_file) ] ;
( Some
Expand Down Expand Up @@ -818,7 +816,7 @@ let print_config ~logger config =
let inputs_from_config_file ?(genesis_dir = Cache_dir.autogen_path) ~logger
~cli_proof_level ~(genesis_constants : Genesis_constants.t)
~(constraint_constants : Genesis_constants.Constraint_constants.t)
~genesis_backing_type ~proof_level:compiled_proof_level ?overwrite_version
~proof_level:compiled_proof_level ?overwrite_version
(config : Runtime_config.t) =
print_config ~logger config ;
let open Deferred.Or_error.Let_syntax in
Expand Down Expand Up @@ -878,7 +876,7 @@ let inputs_from_config_file ?(genesis_dir = Cache_dir.autogen_path) ~logger
match config.ledger with
| Some ledger ->
Ledger.load ~proof_level ~genesis_dir ~logger ~constraint_constants
~genesis_backing_type ?overwrite_version ledger
?overwrite_version ledger
| None ->
[%log fatal] "No ledger was provided in the runtime configuration" ;
Deferred.Or_error.errorf
Expand All @@ -888,7 +886,7 @@ let inputs_from_config_file ?(genesis_dir = Cache_dir.autogen_path) ~logger
~metadata:[ ("ledger_file", `String ledger_file) ] ;
let%bind genesis_epoch_data, genesis_epoch_data_config =
Epoch_data.load ~proof_level ~genesis_dir ~logger ~constraint_constants
~genesis_backing_type config.epoch_data
config.epoch_data
in
let config =
{ config with
Expand All @@ -908,14 +906,14 @@ let inputs_from_config_file ?(genesis_dir = Cache_dir.autogen_path) ~logger
(proof_inputs, config)

let init_from_config_file ~cli_proof_level ~genesis_constants
~constraint_constants ~logger ~proof_level ~genesis_backing_type
?overwrite_version ?genesis_dir (config : Runtime_config.t) :
~constraint_constants ~logger ~proof_level ?overwrite_version ?genesis_dir
(config : Runtime_config.t) :
(Precomputed_values.t * Runtime_config.t) Deferred.Or_error.t =
let open Deferred.Or_error.Let_syntax in
let%map inputs, config =
inputs_from_config_file ~cli_proof_level ~genesis_constants
~constraint_constants ~logger ~proof_level ~genesis_backing_type
?overwrite_version ?genesis_dir config
~constraint_constants ~logger ~proof_level ?overwrite_version ?genesis_dir
config
in
let values = Genesis_proof.create_values_no_proof inputs in
(values, config)
Expand Down
21 changes: 21 additions & 0 deletions src/lib/mina_ledger/root.ml
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,27 @@ struct
; backing_2 = Config.backing_of_config config
} )

let make_converting ~logger = function
| Converting_db db ->
Converting_db db
| Stable_db db ->
let depth = Stable_db.depth db in
let directory_name =
Stable_db.get_directory db
|> Option.map
~f:
Merkle_ledger.Converting_merkle_tree.With_database_config
.default_converting_directory_name
in
let dir_repr = Option.value ~default:"<in memory>" directory_name in
[%log info] "creating unstable DB backing of root, making it converting"
~metadata:[ ("directory", `String dir_repr) ] ;
let converting_db =
Unstable_db.create ?directory_name ~fresh:true ~depth ()
in
Converting_db
(Converting_ledger.of_ledgers_with_migration db converting_db)

let as_unmasked t =
match t with
| Stable_db db ->
Expand Down
5 changes: 4 additions & 1 deletion src/lib/mina_ledger/root.mli
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ module Make
(** The kind of database that should be used for this root. Only a single
database of [Account.Stable.Latest.t] accounts is supported. A future
update will add a converting merkle tree backing. *)
type backing_type = Stable_db | Converting_db
type backing_type = Stable_db | Converting_db [@@deriving equal]

(** Create a root ledger configuration with the given backing type, using
the [directory_name] as a template for its location *)
Expand Down Expand Up @@ -130,6 +130,9 @@ module Make
(** Make a checkpoint of the root ledger *)
val make_checkpoint : t -> config:Config.t -> unit

(** Make a root backed by converting ledger, no matter if it's such case before or not *)
val make_converting : logger:Logger.t -> t -> t

(** View the root ledger as an unmasked [Any_ledger] so it can be used by code
that does not need to know how the root is implemented *)
val as_unmasked : t -> Any_ledger.witness
Expand Down
Loading