Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't generate genesis proof at startup #8764

Merged
merged 5 commits into from
May 11, 2021
Merged
Changes from 1 commit
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
18 changes: 3 additions & 15 deletions src/app/cli/src/cli_entrypoint/mina_cli_entrypoint.ml
Original file line number Diff line number Diff line change
@@ -325,14 +325,9 @@ let setup_daemon logger =
default: <config_dir>/daemon.json). Pass multiple times to override \
fields from earlier config files"
(listed string)
and may_generate =
and _may_generate =
flag "--generate-genesis-proof" ~aliases:["generate-genesis-proof"]
~doc:
(sprintf
"true|false Generate a new genesis proof for the current \
configuration if none is found (default: %s)"
( if Mina_compile_config.generate_genesis_proof then "false"
else "true" ))
~doc:"true|false Deprecated. Passing this flag has no effect"
(optional bool)
and disable_node_status =
flag "--disable-node-status" ~aliases:["disable-node-status"] no_arg
@@ -515,13 +510,6 @@ let setup_daemon logger =
let time_controller =
Block_time.Controller.create @@ Block_time.Controller.basic ~logger
in
let may_generate =
(* Default is [true] if there is no compile-time genesis proof to fall
back on, or [false] otherwise.
*)
Option.value may_generate
~default:(not Mina_compile_config.generate_genesis_proof)
in
(* FIXME adapt to new system, move into child_processes lib *)
let pids = Child_processes.Termination.create_pid_table () in
let rec terminated_child_loop () =
@@ -676,7 +664,7 @@ let setup_daemon logger =
let%bind precomputed_values =
match%map
Genesis_ledger_helper.init_from_config_file ~genesis_dir ~logger
~may_generate ~proof_level config
~proof_level config
with
| Ok (precomputed_values, _) ->
precomputed_values
2 changes: 1 addition & 1 deletion src/app/cli/src/init/client.ml
Original file line number Diff line number Diff line change
@@ -1932,7 +1932,7 @@ let compile_time_constants =
>>| Runtime_config.of_yojson >>| Result.ok
>>| Option.value ~default:Runtime_config.default
>>= Genesis_ledger_helper.init_from_config_file ~genesis_dir
~logger:(Logger.null ()) ~may_generate:false ~proof_level:None
~logger:(Logger.null ()) ~proof_level:None
>>| Or_error.ok_exn
in
let all_constants =
4 changes: 2 additions & 2 deletions src/app/cli/src/tests/coda_worker.ml
Original file line number Diff line number Diff line change
@@ -354,8 +354,8 @@ module T = struct
()
in
let%bind precomputed_values, _runtime_config =
Genesis_ledger_helper.init_from_config_file ~logger ~may_generate:true
~proof_level:None runtime_config
Genesis_ledger_helper.init_from_config_file ~logger ~proof_level:None
runtime_config
>>| Or_error.ok_exn
in
let constraint_constants = precomputed_values.constraint_constants in
3 changes: 1 addition & 2 deletions src/app/cli/src/tests/full_test.ml
Original file line number Diff line number Diff line change
@@ -185,8 +185,7 @@ let run_test () : unit Deferred.t =
let start_time = Time.now () in
let%bind precomputed_values =
Deferred.Or_error.ok_exn
@@ Genesis_ledger_helper.init_from_inputs ~logger ~may_generate:true
precomputed_values
@@ Genesis_ledger_helper.init_from_inputs ~logger precomputed_values
in
let%bind coda =
Mina_lib.create
2 changes: 1 addition & 1 deletion src/app/rosetta/test-agent/agent.ml
Original file line number Diff line number Diff line change
@@ -528,7 +528,7 @@ let get_consensus_constants ~logger :
in
let%map proof, _ =
Genesis_ledger_helper.init_from_config_file ~genesis_dir ~logger
~may_generate:true ~proof_level:None config
~proof_level:None config
in
Precomputed_values.consensus_constants proof

2 changes: 1 addition & 1 deletion src/app/runtime_genesis_ledger/runtime_genesis_ledger.ml
Original file line number Diff line number Diff line change
@@ -22,7 +22,7 @@ let main ~config_file ~genesis_dir ~proof_level () =
in
Deferred.Or_error.ok_exn @@ Deferred.Or_error.ignore
@@ Genesis_ledger_helper.init_from_config_file ?genesis_dir
~logger:(Logger.create ()) ~may_generate:true ~proof_level config
~logger:(Logger.create ()) ~proof_level config

let () =
Command.run
35 changes: 9 additions & 26 deletions src/lib/genesis_ledger_helper/genesis_ledger_helper.ml
Original file line number Diff line number Diff line change
@@ -588,8 +588,7 @@ module Genesis_proof = struct
let id_to_json x =
`String (Sexp.to_string (Pickles.Verification_key.Id.sexp_of_t x))

let load_or_generate ~genesis_dir ~logger ~may_generate
(inputs : Genesis_proof.Inputs.t) =
let load_or_generate ~genesis_dir ~logger (inputs : Genesis_proof.Inputs.t) =
let proof_needed =
match inputs.proof_level with Full -> true | _ -> false
in
@@ -723,7 +722,7 @@ module Genesis_proof = struct
; ("error", Error_json.error_to_yojson err) ]
in
Ok (values, filename)
| None when may_generate ->
| None ->
[%log info]
"No genesis proof file was found for $base_hash, generating a new \
genesis proof"
@@ -747,20 +746,6 @@ module Genesis_proof = struct
; ("error", Error_json.error_to_yojson err) ] )
in
Ok (values, filename)
| None ->
[%log error]
"No genesis proof file was found for $base_hash and not allowed to \
generate a new genesis proof"
~metadata:[("base_hash", Base_hash.to_yojson base_hash)] ;
Deferred.Or_error.of_exn
(Mina_user_error.Mina_user_error
{ where= Some "generating a genesis proof"
; message=
sprintf
"Hint: pass the flag --generate-genesis-proof true. For \
example,\n\
%s daemon --generate-genesis-proof true"
Sys.argv.(0) })
end

let load_config_json filename =
@@ -883,25 +868,23 @@ let inputs_from_config_file ?(genesis_dir = Cache_dir.autogen_path) ~logger
(proof_inputs, config)

let init_from_inputs ?(genesis_dir = Cache_dir.autogen_path) ~logger
~may_generate proof_inputs =
proof_inputs =
let open Deferred.Or_error.Let_syntax in
let%map values, proof_file =
Genesis_proof.load_or_generate ~genesis_dir ~logger ~may_generate
proof_inputs
Genesis_proof.load_or_generate ~genesis_dir ~logger proof_inputs
in
[%log info] "Loaded genesis proof from $proof_file"
~metadata:[("proof_file", `String proof_file)] ;
if Option.is_some values.proof_data then
[%log info] "Loaded genesis proof from $proof_file"
~metadata:[("proof_file", `String proof_file)] ;
values

let init_from_config_file ?genesis_dir ~logger ~may_generate ~proof_level
let init_from_config_file ?genesis_dir ~logger ~proof_level
(config : Runtime_config.t) =
let open Deferred.Or_error.Let_syntax in
let%bind inputs, config =
inputs_from_config_file ?genesis_dir ~logger ~proof_level config
in
let%map values =
init_from_inputs ?genesis_dir ~logger ~may_generate inputs
in
let%map values = init_from_inputs ?genesis_dir ~logger inputs in
(values, config)

let upgrade_old_config ~logger filename json =
2 changes: 1 addition & 1 deletion src/lib/integration_test_cloud_engine/coda_automation.ml
Original file line number Diff line number Diff line change
@@ -346,7 +346,7 @@ module Network_manager = struct
~constraint_constants ~genesis_constants
in
let%bind (_, genesis_proof_filename) =
Genesis_ledger_helper.Genesis_proof.load_or_generate ~logger ~genesis_dir ~may_generate:true
Genesis_ledger_helper.Genesis_proof.load_or_generate ~logger ~genesis_dir
inputs
in
*)