@@ -49,9 +49,37 @@ let plugin_flag =
4949 times"
5050 else Command.Param. return []
5151
52+ let make_ledger_backing ~constraint_constants ~runtime_config ~hardfork_handling
53+ =
54+ let current_genesis_global_slot =
55+ let % map.Option { global_slot_since_genesis = current_genesis_global_slot
56+ ; _
57+ } =
58+ constraint_constants.Genesis_constants.Constraint_constants. fork
59+ in
60+ current_genesis_global_slot
61+ in
62+ let hardfork_slot =
63+ let % map.Option hardfork_slot_since_last_hf =
64+ Runtime_config. scheduled_hard_fork_genesis_slot runtime_config
65+ in
66+ Mina_numbers.Global_slot_since_hard_fork. to_global_slot_since_genesis
67+ ~current_genesis_global_slot hardfork_slot_since_last_hf
68+ in
69+
70+ match (hardfork_handling, hardfork_slot) with
71+ | Cli_lib.Arg_type.Hardfork_handling. Migrate_exit , Some hardfork_slot ->
72+ Mina_ledger.Root.Config. Converting_db hardfork_slot
73+ | Migrate_exit , _ ->
74+ failwith
75+ " No hardfork slot provided for Migrate_exit mode, \
76+ `daemon.{slot_chain_end,hard_fork_genesis_slot_delta}` need to be \
77+ configured for using this HF mode."
78+ | Keep_running , _ ->
79+ Stable_db
80+
5281let load_config_files ~logger ~genesis_constants ~constraint_constants ~conf_dir
53- ~genesis_dir ~cli_proof_level ~proof_level ~genesis_backing_type
54- config_files =
82+ ~genesis_dir ~cli_proof_level ~proof_level ~hardfork_handling config_files =
5583 let % bind config_jsons =
5684 let config_files_paths =
5785 List. map config_files ~f: (fun (config_file , _ ) -> `String config_file)
@@ -98,19 +126,23 @@ let load_config_files ~logger ~genesis_constants ~constraint_constants ~conf_dir
98126 ] ;
99127 failwithf " Could not parse configuration file: %s" err () )
100128 in
129+ let ledger_backing =
130+ make_ledger_backing ~constraint_constants ~runtime_config: config
131+ ~hardfork_handling
132+ in
101133 let chain_state_locations =
102134 Init.Chain_state_locations. of_config ~conf_dir config
103135 in
104136 let genesis_dir =
105137 Option. value ~default: chain_state_locations.genesis genesis_dir
106138 in
107- let % bind precomputed_values =
139+ let % map precomputed_values =
108140 match % map
109141 Genesis_ledger_helper. init_from_config_file ~cli_proof_level ~genesis_dir
110142 ~logger ~genesis_constants ~constraint_constants ~proof_level
111- ~genesis_backing_type config
143+ ~ledger_backing config
112144 with
113- | Ok ( precomputed_values , _ ) ->
145+ | Ok precomputed_values ->
114146 precomputed_values
115147 | Error err ->
116148 let ( json_config
@@ -143,7 +175,11 @@ let load_config_files ~logger ~genesis_constants ~constraint_constants ~conf_dir
143175 ~metadata ;
144176 Error. raise err
145177 in
146- return (precomputed_values, config_jsons, config, chain_state_locations)
178+ ( precomputed_values
179+ , config_jsons
180+ , config
181+ , chain_state_locations
182+ , ledger_backing )
147183
148184let setup_daemon logger ~itn_features ~default_snark_worker_fee =
149185 let open Command.Let_syntax in
@@ -807,17 +843,15 @@ let setup_daemon logger ~itn_features ~default_snark_worker_fee =
807843 Genesis_constants.Compiled. constraint_constants
808844 in
809845 let compile_config = Mina_compile_config.Compiled. t in
810- let ledger_backing_type =
811- Mina_lib.Config. ledger_backing ~hardfork_handling
812- in
813846 let % bind ( precomputed_values
814847 , config_jsons
815848 , config
816- , chain_state_locations ) =
849+ , chain_state_locations
850+ , ledger_backing ) =
817851 load_config_files ~logger ~conf_dir ~genesis_dir
818852 ~proof_level: Genesis_constants.Compiled. proof_level config_files
819853 ~genesis_constants ~constraint_constants ~cli_proof_level
820- ~genesis_backing_type: ledger_backing_type
854+ ~hardfork_handling
821855 in
822856 constraint_constants.block_window_duration_ms |> Float. of_int
823857 |> Time.Span. of_ms |> Mina_metrics. initialize_all ;
@@ -1192,7 +1226,7 @@ let setup_daemon logger ~itn_features ~default_snark_worker_fee =
11921226 |> Option. to_list |> Public_key.Compressed.Set. of_list )
11931227 ~genesis_state_hash:
11941228 precomputed_values.protocol_state_with_hashes.hash.state_hash
1195- ~epoch_ledger_backing_type: ledger_backing_type
1229+ ~epoch_ledger_backing_type: ledger_backing
11961230 in
11971231 trace_database_initialization " epoch ledger" __LOC__
11981232 epoch_ledger_location ;
@@ -1451,7 +1485,8 @@ Pass one of -peer, -peer-list-file, -seed, -peer-list-url.|} ;
14511485 ~stop_time_interval ~node_status_url
14521486 ~graphql_control_port: itn_graphql_port ~simplified_node_stats
14531487 ~zkapp_cmd_limit: (ref compile_config.zkapp_cmd_limit)
1454- ~itn_features ~compile_config ~hardfork_handling () )
1488+ ~itn_features ~compile_config ~hardfork_handling
1489+ ~ledger_backing () )
14551490 in
14561491 { mina
14571492 ; client_trustlist
@@ -2005,10 +2040,11 @@ let internal_commands logger ~itn_features =
20052040 let % bind ( precomputed_values
20062041 , _config_jsons
20072042 , _config
2008- , _chain_state_locations ) =
2043+ , _chain_state_locations
2044+ , _ ) =
20092045 load_config_files ~logger ~conf_dir ~genesis_dir ~genesis_constants
20102046 ~constraint_constants ~proof_level ~cli_proof_level: None
2011- ~genesis_backing_type: Stable_db config_files
2047+ ~hardfork_handling: Keep_running config_files
20122048 in
20132049 let pids = Child_processes.Termination. create_pid_table () in
20142050 let % bind prover =
0 commit comments