From eddcf09c44305f31e9bb668d638f32cbedfab10e Mon Sep 17 00:00:00 2001 From: georgeee Date: Tue, 14 Jan 2025 12:40:33 +0000 Subject: [PATCH 01/11] Remove derivations from Transaction_snark_work.t Context: Derivations `compare`, `sexp` are not used in any meangful way. Derivation `yojson` isn't needed beyond Stable modules (it's used for logging and for precomputed blocks dumping). Problem: changing structure of `Transaction_snark.t` to use DB cache for proofs is complicated because `equal`, `compare`, `sexp` and `json` all need to be derived for the alternative representation. Running these methods would become potentially expensive by requiring DB reads, and hiding this complexity within such trivial methods is undesirable. Solution: remove unnecessary derivations. Leave `yojson` only for Stable module types. --- src/app/heap_usage/values.ml | 2 +- src/lib/block_producer/block_producer.ml | 6 +-- src/lib/mina_block/internal_transition.ml | 2 +- src/lib/mina_block/precomputed_block.ml | 2 +- src/lib/staged_ledger/staged_ledger.ml | 20 +++------ src/lib/staged_ledger_diff/body.ml | 19 +-------- src/lib/staged_ledger_diff/body_intf.ml | 4 +- src/lib/staged_ledger_diff/diff.ml | 41 +++++++++++-------- src/lib/staged_ledger_diff/diff_intf.ml | 27 ++++-------- .../transaction_snark_work.ml | 3 +- .../transaction_snark_work.mli | 4 +- src/lib/transition_handler/validator.ml | 4 +- 12 files changed, 51 insertions(+), 83 deletions(-) diff --git a/src/app/heap_usage/values.ml b/src/app/heap_usage/values.ml index e6c1cf4bda9..2b8f8c6d585 100644 --- a/src/app/heap_usage/values.ml +++ b/src/app/heap_usage/values.ml @@ -687,7 +687,7 @@ let staged_ledger_diff = } |json} in - Staged_ledger_diff.of_yojson json |> Result.ok_or_failwith + Staged_ledger_diff.Stable.Latest.of_yojson json |> Result.ok_or_failwith let merkle_path ~(constraint_constants : Genesis_constants.Constraint_constants.t) = diff --git a/src/lib/block_producer/block_producer.ml b/src/lib/block_producer/block_producer.ml index e52ff9e8e05..3ec391f7e80 100644 --- a/src/lib/block_producer/block_producer.ml +++ b/src/lib/block_producer/block_producer.ml @@ -312,8 +312,8 @@ let generate_next_state ~commit_id ~zkapp_cmd_limit ~constraint_constants , `String (Staged_ledger.Staged_ledger_error.to_string e) ) ; ( "diff" - , Staged_ledger_diff.With_valid_signatures_and_proofs - .to_yojson diff ) + , Staged_ledger_diff.Stable.Latest.to_yojson + @@ Staged_ledger_diff.forget diff ) ] "Error applying the diff $diff: $error" | Error e -> @@ -523,7 +523,7 @@ let handle_block_production_errors ~logger ~rejected_blocks_logger in let metadata = [ ("error", Error_json.error_to_yojson e) - ; ("diff", Staged_ledger_diff.to_yojson staged_ledger_diff) + ; ("diff", Staged_ledger_diff.Stable.Latest.to_yojson staged_ledger_diff) ] in [%log error] ~metadata msg ; diff --git a/src/lib/mina_block/internal_transition.ml b/src/lib/mina_block/internal_transition.ml index 4b9543a998a..a1258d3cc83 100644 --- a/src/lib/mina_block/internal_transition.ml +++ b/src/lib/mina_block/internal_transition.ml @@ -52,7 +52,7 @@ type t = Stable.Latest.t = ; prover_state : Consensus.Data.Prover_state.t ; staged_ledger_diff : Staged_ledger_diff.t } -[@@deriving sexp, fields, to_yojson] +[@@deriving fields] let create ~snark_transition ~ledger_proof ~prover_state ~staged_ledger_diff = { Stable.Latest.snark_transition diff --git a/src/lib/mina_block/precomputed_block.ml b/src/lib/mina_block/precomputed_block.ml index 8dee85a3670..7ddf33d9ab8 100644 --- a/src/lib/mina_block/precomputed_block.ml +++ b/src/lib/mina_block/precomputed_block.ml @@ -62,7 +62,6 @@ module T = struct ; accounts_created : (Account_id.t * Currency.Fee.t) list ; tokens_used : (Token_id.t * Account_id.t option) list } - [@@deriving yojson] end include T @@ -90,6 +89,7 @@ module Stable = struct ; tokens_used : (Token_id.Stable.V2.t * Account_id.Stable.V2.t option) list } + [@@deriving yojson] let to_latest = Fn.id end diff --git a/src/lib/staged_ledger/staged_ledger.ml b/src/lib/staged_ledger/staged_ledger.ml index 610b0ee2330..46e56a5d1c1 100644 --- a/src/lib/staged_ledger/staged_ledger.ml +++ b/src/lib/staged_ledger/staged_ledger.ml @@ -1317,7 +1317,6 @@ module T = struct { commands_rev : User_command.Valid.t Sequence.t ; completed_work : Transaction_snark_work.Checked.t Sequence.t } - [@@deriving sexp_of] let add_user_command t uc = { t with @@ -1347,7 +1346,6 @@ module T = struct ; is_coinbase_receiver_new : bool ; logger : (Logger.t[@sexp.opaque]) } - [@@deriving sexp_of] let coinbase_ft (cw : Transaction_snark_work.t) = (* Here we could not add the fee transfer if the prover=receiver_pk but @@ -2135,9 +2133,9 @@ module T = struct else ( [%log debug] ~metadata: - [ ( "work" - , Transaction_snark_work.Checked.to_yojson - cw_checked ) + [ ( "prover" + , Public_key.Compressed.to_yojson + cw_checked.prover ) ; ( "work_ids" , Transaction_snark_work.Statement.compact_json w ) @@ -3756,11 +3754,9 @@ let%test_module "staged ledger tests" = in assert_same_fee single work.fee ) | _ -> - failwith - (sprintf - !"Incorrect coinbase in the diff %{sexp: \ - Staged_ledger_diff.t}" - diff ) + failwith @@ "Incorrect coinbase in the diff " + ^ ( Staged_ledger_diff.Stable.Latest.to_yojson diff + |> Yojson.Safe.to_string ) in (diff, List.tl_exn proofs_available_left) ) in @@ -4365,10 +4361,6 @@ let%test_module "staged ledger tests" = .commands diff ) = 1 ) ; let f, s = diff.diff in - [%log info] "Diff %s" - ( Staged_ledger_diff.With_valid_signatures_and_proofs - .to_yojson diff - |> Yojson.Safe.to_string ) ; let failed_command = With_status. { data = invalid_command diff --git a/src/lib/staged_ledger_diff/body.ml b/src/lib/staged_ledger_diff/body.ml index 55a9566ba36..4f760efea71 100644 --- a/src/lib/staged_ledger_diff/body.ml +++ b/src/lib/staged_ledger_diff/body.ml @@ -10,21 +10,15 @@ module Make_str (A : Wire_types.Concrete) = struct module Stable = struct module V1 = struct type t = A.V1.t = { staged_ledger_diff : Diff.Stable.V2.t } - [@@deriving equal, compare, sexp, fields] + [@@deriving fields] let to_latest = Fn.id - let to_yojson _ = `String "" - module Creatable = struct let id = "block_body" type nonrec t = t - let sexp_of_t = sexp_of_t - - let t_of_sexp = t_of_sexp - type 'a creator = Diff.Stable.Latest.t -> 'a let map_creator c ~f staged_ledger_diff = f (c staged_ledger_diff) @@ -38,21 +32,12 @@ module Make_str (A : Wire_types.Concrete) = struct Allocation_functor.Intf.Output.Basic_intf with type t := t and type 'a creator := 'a Creatable.creator ) - - include ( - Allocation_functor.Make.Sexp - (Creatable) : - Allocation_functor.Intf.Output.Sexp_intf - with type t := t - and type 'a creator := 'a Creatable.creator ) end end] type t = Stable.Latest.t - [%%define_locally - Stable.Latest. - (create, to_yojson, sexp_of_t, t_of_sexp, equal, compare, staged_ledger_diff)] + [%%define_locally Stable.Latest.(create, staged_ledger_diff)] let to_binio_bigstring b = let sz = Stable.V1.bin_size_t b in diff --git a/src/lib/staged_ledger_diff/body_intf.ml b/src/lib/staged_ledger_diff/body_intf.ml index ebd27f6db8e..4a84431d644 100644 --- a/src/lib/staged_ledger_diff/body_intf.ml +++ b/src/lib/staged_ledger_diff/body_intf.ml @@ -4,11 +4,11 @@ module type Full = sig [@@@no_toplevel_latest_type] module V1 : sig - type t [@@deriving equal, compare, sexp, to_yojson, bin_io] + type t end end] - type t = Stable.Latest.t [@@deriving equal, compare, sexp, to_yojson] + type t = Stable.Latest.t val create : Diff.t -> t diff --git a/src/lib/staged_ledger_diff/diff.ml b/src/lib/staged_ledger_diff/diff.ml index 5cfcff3fe1b..4b34e818359 100644 --- a/src/lib/staged_ledger_diff/diff.ml +++ b/src/lib/staged_ledger_diff/diff.ml @@ -169,13 +169,13 @@ module Make_str (A : Wire_types.Concrete) = struct ( Transaction_snark_work.Stable.V2.t , User_command.Stable.V2.t With_status.Stable.V2.t ) Pre_diff_two.Stable.V2.t - [@@deriving equal, compare, sexp, yojson] + [@@deriving yojson] let to_latest = Fn.id end end] - type t = Stable.Latest.t [@@deriving equal, compare, sexp, yojson] + type t = Stable.Latest.t end module Pre_diff_with_at_most_one_coinbase = struct @@ -188,13 +188,13 @@ module Make_str (A : Wire_types.Concrete) = struct ( Transaction_snark_work.Stable.V2.t , User_command.Stable.V2.t With_status.Stable.V2.t ) Pre_diff_one.Stable.V2.t - [@@deriving equal, compare, sexp, yojson] + [@@deriving yojson] let to_latest = Fn.id end end] - type t = Stable.Latest.t [@@deriving equal, compare, sexp, yojson] + type t = Stable.Latest.t end module Diff = struct @@ -206,13 +206,13 @@ module Make_str (A : Wire_types.Concrete) = struct type t = Pre_diff_with_at_most_two_coinbase.Stable.V2.t * Pre_diff_with_at_most_one_coinbase.Stable.V2.t option - [@@deriving equal, compare, sexp, yojson] + [@@deriving yojson] let to_latest = Fn.id end end] - type t = Stable.Latest.t [@@deriving equal, compare, sexp, yojson] + type t = Stable.Latest.t end [%%versioned @@ -220,35 +220,30 @@ module Make_str (A : Wire_types.Concrete) = struct [@@@no_toplevel_latest_type] module V2 = struct - type t = A.V2.t = { diff : Diff.Stable.V2.t } - [@@deriving equal, compare, sexp, yojson] + type t = A.V2.t = { diff : Diff.Stable.V2.t } [@@deriving yojson] let to_latest = Fn.id end end] - type t = Stable.Latest.t = { diff : Diff.t } - [@@deriving equal, compare, sexp, yojson, fields] + type t = Stable.Latest.t = { diff : Diff.t } [@@deriving fields] module With_valid_signatures_and_proofs = struct type pre_diff_with_at_most_two_coinbase = ( Transaction_snark_work.Checked.t , User_command.Valid.t With_status.t ) Pre_diff_two.t - [@@deriving compare, sexp, to_yojson] type pre_diff_with_at_most_one_coinbase = ( Transaction_snark_work.Checked.t , User_command.Valid.t With_status.t ) Pre_diff_one.t - [@@deriving compare, sexp, to_yojson] type diff = pre_diff_with_at_most_two_coinbase * pre_diff_with_at_most_one_coinbase option - [@@deriving compare, sexp, to_yojson] - type t = { diff : diff } [@@deriving compare, sexp, to_yojson] + type t = { diff : diff } let empty_diff : t = { diff = @@ -297,20 +292,17 @@ module Make_str (A : Wire_types.Concrete) = struct ( Transaction_snark_work.t , User_command.Valid.t With_status.t ) Pre_diff_two.t - [@@deriving compare, sexp, to_yojson] type pre_diff_with_at_most_one_coinbase = ( Transaction_snark_work.t , User_command.Valid.t With_status.t ) Pre_diff_one.t - [@@deriving compare, sexp, to_yojson] type diff = pre_diff_with_at_most_two_coinbase * pre_diff_with_at_most_one_coinbase option - [@@deriving compare, sexp, to_yojson] - type t = { diff : diff } [@@deriving compare, sexp, to_yojson] + type t = { diff : diff } let coinbase ~(constraint_constants : Genesis_constants.Constraint_constants.t) @@ -461,6 +453,19 @@ module Make_str (A : Wire_types.Concrete) = struct } , None ) } + + let is_empty = function + | { diff = + ( { completed_works = [] + ; commands = [] + ; coinbase = At_most_two.Zero + ; internal_command_statuses = [] + } + , None ) + } -> + true + | _ -> + false end include Wire_types.Make (Make_sig) (Make_str) diff --git a/src/lib/staged_ledger_diff/diff_intf.ml b/src/lib/staged_ledger_diff/diff_intf.ml index 1294db0e2be..d32212d88e5 100644 --- a/src/lib/staged_ledger_diff/diff_intf.ml +++ b/src/lib/staged_ledger_diff/diff_intf.ml @@ -67,11 +67,10 @@ module type Full = sig module Pre_diff_with_at_most_two_coinbase : sig type t = (Transaction_snark_work.t, User_command.t With_status.t) Pre_diff_two.t - [@@deriving equal, compare, sexp, yojson] module Stable : sig module V2 : sig - type t [@@deriving equal, compare, sexp, yojson, bin_io, version] + type t end end with type V2.t = t @@ -80,11 +79,10 @@ module type Full = sig module Pre_diff_with_at_most_one_coinbase : sig type t = (Transaction_snark_work.t, User_command.t With_status.t) Pre_diff_one.t - [@@deriving equal, compare, sexp, yojson] module Stable : sig module V2 : sig - type t [@@deriving equal, compare, sexp, yojson, bin_io, version] + type t end end with type V2.t = t @@ -94,23 +92,20 @@ module type Full = sig type t = Pre_diff_with_at_most_two_coinbase.t * Pre_diff_with_at_most_one_coinbase.t option - [@@deriving equal, compare, sexp, yojson] module Stable : sig module V2 : sig - type t [@@deriving equal, compare, sexp, bin_io, yojson, version] + type t end end with type V2.t = t end - type t = { diff : Diff.t } - [@@deriving equal, compare, sexp, compare, yojson, fields] + type t = { diff : Diff.t } [@@deriving fields] module Stable : sig module V2 : sig - type t = { diff : Diff.Stable.V2.t } - [@@deriving equal, compare, sexp, compare, yojson, bin_io, version] + type t = { diff : Diff.Stable.V2.t } [@@deriving bin_io, version, yojson] val to_latest : t -> t end @@ -124,20 +119,17 @@ module type Full = sig ( Transaction_snark_work.Checked.t , User_command.Valid.t With_status.t ) Pre_diff_two.t - [@@deriving compare, sexp, to_yojson] type pre_diff_with_at_most_one_coinbase = ( Transaction_snark_work.Checked.t , User_command.Valid.t With_status.t ) Pre_diff_one.t - [@@deriving compare, sexp, to_yojson] type diff = pre_diff_with_at_most_two_coinbase * pre_diff_with_at_most_one_coinbase option - [@@deriving compare, sexp, to_yojson] - type t = { diff : diff } [@@deriving compare, sexp, to_yojson] + type t = { diff : diff } val empty_diff : t @@ -149,20 +141,17 @@ module type Full = sig ( Transaction_snark_work.t , User_command.Valid.t With_status.t ) Pre_diff_two.t - [@@deriving compare, sexp, to_yojson] type pre_diff_with_at_most_one_coinbase = ( Transaction_snark_work.t , User_command.Valid.t With_status.t ) Pre_diff_one.t - [@@deriving compare, sexp, to_yojson] type diff = pre_diff_with_at_most_two_coinbase * pre_diff_with_at_most_one_coinbase option - [@@deriving compare, sexp, to_yojson] - type t = { diff : diff } [@@deriving compare, sexp, to_yojson] + type t = { diff : diff } val coinbase : constraint_constants:Genesis_constants.Constraint_constants.t @@ -201,4 +190,6 @@ module type Full = sig -> Currency.Amount.t option val empty_diff : t + + val is_empty : t -> bool end diff --git a/src/lib/transaction_snark_work/transaction_snark_work.ml b/src/lib/transaction_snark_work/transaction_snark_work.ml index c4bd3485653..7e12b56be3e 100644 --- a/src/lib/transaction_snark_work/transaction_snark_work.ml +++ b/src/lib/transaction_snark_work/transaction_snark_work.ml @@ -85,7 +85,7 @@ module T = struct ; proofs : Ledger_proof.Stable.V2.t One_or_two.Stable.V1.t ; prover : Public_key.Compressed.Stable.V1.t } - [@@deriving equal, compare, sexp, yojson] + [@@deriving yojson] let to_latest = Fn.id end @@ -96,7 +96,6 @@ module T = struct ; proofs : Ledger_proof.t One_or_two.t ; prover : Public_key.Compressed.t } - [@@deriving compare, yojson, sexp] let statement t = One_or_two.map t.proofs ~f:Ledger_proof.statement diff --git a/src/lib/transaction_snark_work/transaction_snark_work.mli b/src/lib/transaction_snark_work/transaction_snark_work.mli index f7789378325..05225836fa7 100644 --- a/src/lib/transaction_snark_work/transaction_snark_work.mli +++ b/src/lib/transaction_snark_work/transaction_snark_work.mli @@ -56,7 +56,6 @@ type t = Mina_wire_types.Transaction_snark_work.V2.t = ; proofs : Ledger_proof.t One_or_two.t ; prover : Public_key.Compressed.t } -[@@deriving compare, sexp, yojson] val fee : t -> Fee.t @@ -68,7 +67,7 @@ val statement : t -> Statement.t module Stable : sig module V2 : sig - type t [@@deriving equal, sexp, compare, bin_io, yojson, version] + type t [@@deriving bin_io, version, yojson] end end with type V2.t = t @@ -81,7 +80,6 @@ module Checked : sig ; proofs : Ledger_proof.t One_or_two.t ; prover : Public_key.Compressed.t } - [@@deriving sexp, compare, to_yojson] module Stable : module type of Stable diff --git a/src/lib/transition_handler/validator.ml b/src/lib/transition_handler/validator.ml index cb1e39b4df2..cb62b1f229e 100644 --- a/src/lib/transition_handler/validator.ml +++ b/src/lib/transition_handler/validator.ml @@ -101,9 +101,7 @@ let validate_transition_is_relevant ~context:(module Context : CONTEXT) Body.staged_ledger_diff @@ body transition_data in Result.ok_if_true - ( Staged_ledger_diff.compare Staged_ledger_diff.empty_diff - staged_ledger_diff - = 0 ) + (Staged_ledger_diff.is_empty staged_ledger_diff) ~error:`Non_empty_staged_ledger_diff_after_stop_slot | None | Some _ -> Result.(Ok ()) From 49de4b8d0c14d922da94b4d1e9be184832187512 Mon Sep 17 00:00:00 2001 From: georgeee Date: Wed, 22 Jan 2025 09:52:41 +0000 Subject: [PATCH 02/11] After merge fixup --- src/lib/transaction_snark_work/transaction_snark_work.ml | 3 ++- src/lib/transaction_snark_work/transaction_snark_work.mli | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/transaction_snark_work/transaction_snark_work.ml b/src/lib/transaction_snark_work/transaction_snark_work.ml index 3e3bd795d6a..ff1f9feb694 100644 --- a/src/lib/transaction_snark_work/transaction_snark_work.ml +++ b/src/lib/transaction_snark_work/transaction_snark_work.ml @@ -75,7 +75,7 @@ module Info = struct end module type S = sig - type t [@@deriving compare, sexp, yojson] + type t val fee : t -> Fee.t @@ -106,6 +106,7 @@ module T = struct ; proofs : Ledger_proof.t One_or_two.t ; prover : Public_key.Compressed.t } + [@@deriving fields] let statement t = One_or_two.map t.proofs ~f:Ledger_proof.statement diff --git a/src/lib/transaction_snark_work/transaction_snark_work.mli b/src/lib/transaction_snark_work/transaction_snark_work.mli index f9065ebebc6..5b542cd9190 100644 --- a/src/lib/transaction_snark_work/transaction_snark_work.mli +++ b/src/lib/transaction_snark_work/transaction_snark_work.mli @@ -52,7 +52,7 @@ end *) module type S = sig - type t [@@deriving compare, sexp, yojson] + type t val fee : t -> Fee.t From 596fcdbaa88251c7f523b17d3db51e99ddba7172 Mon Sep 17 00:00:00 2001 From: georgeee Date: Thu, 30 Jan 2025 09:59:37 +0000 Subject: [PATCH 03/11] Add equal derivation back for block body --- src/lib/staged_ledger_diff/body.ml | 2 +- src/lib/staged_ledger_diff/body_intf.ml | 2 +- src/lib/staged_ledger_diff/diff.ml | 9 +++++---- src/lib/staged_ledger_diff/diff_intf.ml | 2 +- src/lib/transaction_snark_work/transaction_snark_work.ml | 2 +- .../transaction_snark_work/transaction_snark_work.mli | 2 +- 6 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/lib/staged_ledger_diff/body.ml b/src/lib/staged_ledger_diff/body.ml index 6f83dc109c6..ddbcba25123 100644 --- a/src/lib/staged_ledger_diff/body.ml +++ b/src/lib/staged_ledger_diff/body.ml @@ -12,7 +12,7 @@ module Make_str (A : Wire_types.Concrete) = struct module V1 = struct type t = A.V1.t = { staged_ledger_diff : Diff.Stable.V2.t } - [@@deriving fields, sexp] + [@@deriving equal, fields, sexp] let to_latest = Fn.id diff --git a/src/lib/staged_ledger_diff/body_intf.ml b/src/lib/staged_ledger_diff/body_intf.ml index 7bdb4c5827e..53066354bd6 100644 --- a/src/lib/staged_ledger_diff/body_intf.ml +++ b/src/lib/staged_ledger_diff/body_intf.ml @@ -4,7 +4,7 @@ module type Full = sig [@@@no_toplevel_latest_type] module V1 : sig - type t [@@deriving sexp] + type t [@@deriving equal, sexp] end end] diff --git a/src/lib/staged_ledger_diff/diff.ml b/src/lib/staged_ledger_diff/diff.ml index 3f9e9d55e71..0f97e827a5b 100644 --- a/src/lib/staged_ledger_diff/diff.ml +++ b/src/lib/staged_ledger_diff/diff.ml @@ -169,7 +169,7 @@ module Make_str (A : Wire_types.Concrete) = struct ( Transaction_snark_work.Stable.V2.t , User_command.Stable.V2.t With_status.Stable.V2.t ) Pre_diff_two.Stable.V2.t - [@@deriving sexp, yojson] + [@@deriving equal, sexp, yojson] let to_latest = Fn.id end @@ -188,7 +188,7 @@ module Make_str (A : Wire_types.Concrete) = struct ( Transaction_snark_work.Stable.V2.t , User_command.Stable.V2.t With_status.Stable.V2.t ) Pre_diff_one.Stable.V2.t - [@@deriving sexp, yojson] + [@@deriving equal, sexp, yojson] let to_latest = Fn.id end @@ -206,7 +206,7 @@ module Make_str (A : Wire_types.Concrete) = struct type t = Pre_diff_with_at_most_two_coinbase.Stable.V2.t * Pre_diff_with_at_most_one_coinbase.Stable.V2.t option - [@@deriving sexp, yojson] + [@@deriving equal, sexp, yojson] let to_latest = Fn.id end @@ -220,7 +220,8 @@ module Make_str (A : Wire_types.Concrete) = struct [@@@no_toplevel_latest_type] module V2 = struct - type t = A.V2.t = { diff : Diff.Stable.V2.t } [@@deriving sexp, yojson] + type t = A.V2.t = { diff : Diff.Stable.V2.t } + [@@deriving equal, sexp, yojson] let to_latest = Fn.id end diff --git a/src/lib/staged_ledger_diff/diff_intf.ml b/src/lib/staged_ledger_diff/diff_intf.ml index 03f46d1adfc..5a3267875dd 100644 --- a/src/lib/staged_ledger_diff/diff_intf.ml +++ b/src/lib/staged_ledger_diff/diff_intf.ml @@ -106,7 +106,7 @@ module type Full = sig module Stable : sig module V2 : sig type t = { diff : Diff.Stable.V2.t } - [@@deriving bin_io, version, sexp, yojson] + [@@deriving bin_io, equal, sexp, version, yojson] val to_latest : t -> t end diff --git a/src/lib/transaction_snark_work/transaction_snark_work.ml b/src/lib/transaction_snark_work/transaction_snark_work.ml index 5016f125b4d..afca360ffef 100644 --- a/src/lib/transaction_snark_work/transaction_snark_work.ml +++ b/src/lib/transaction_snark_work/transaction_snark_work.ml @@ -95,7 +95,7 @@ module T = struct ; proofs : Ledger_proof.Stable.V2.t One_or_two.Stable.V1.t ; prover : Public_key.Compressed.Stable.V1.t } - [@@deriving sexp, yojson] + [@@deriving equal, sexp, yojson] let to_latest = Fn.id end diff --git a/src/lib/transaction_snark_work/transaction_snark_work.mli b/src/lib/transaction_snark_work/transaction_snark_work.mli index cd0573f45c9..cc5b1633506 100644 --- a/src/lib/transaction_snark_work/transaction_snark_work.mli +++ b/src/lib/transaction_snark_work/transaction_snark_work.mli @@ -75,7 +75,7 @@ val statement : t -> Statement.t module Stable : sig module V2 : sig - type t [@@deriving bin_io, version, sexp, yojson] + type t [@@deriving bin_io, equal, sexp, version, yojson] end end with type V2.t = t From a2f69634893c8c42b18563ac54ba4147a58b226c Mon Sep 17 00:00:00 2001 From: georgeee Date: Thu, 30 Jan 2025 10:00:00 +0000 Subject: [PATCH 04/11] Fix mina_lmdb_storage tests --- src/lib/mina_lmdb_storage/block.ml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/lib/mina_lmdb_storage/block.ml b/src/lib/mina_lmdb_storage/block.ml index d093c74f732..f730b19874f 100644 --- a/src/lib/mina_lmdb_storage/block.ml +++ b/src/lib/mina_lmdb_storage/block.ml @@ -166,10 +166,13 @@ let%test_module "Block storage tests" = let id = match id_ with `Ok a -> a | _ -> failwith "unexpected" in [%log info] "Push message received" ; [%test_eq: String.t] (Consensus.Body_reference.to_raw_string body_ref) id ; - [%test_eq: - ( Mina_block.Body.t - , [ `Invalid_structure of Error.t | `Non_full | `Tx_failed ] ) - Result.t] (Ok body) (read_body db body_ref) + let body' = + read_body db body_ref + |> function + | Ok a -> a | Error _ -> failwith "unexpected failure to read_body" + in + if not (Mina_block.Body.Stable.Latest.equal body body') then + failwith "Retrieved body not equal to original body" let%test_unit "Write many blocks" = let n = 300 in From 769a7f4f50923e82f0a9afd584eacd5a43dd7b53 Mon Sep 17 00:00:00 2001 From: georgeee Date: Thu, 30 Jan 2025 22:33:12 +0000 Subject: [PATCH 05/11] Revert some changes for Precomputed_block Make the tests pass. --- src/lib/mina_block/precomputed_block.ml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/mina_block/precomputed_block.ml b/src/lib/mina_block/precomputed_block.ml index 09207a0f990..217408bd5de 100644 --- a/src/lib/mina_block/precomputed_block.ml +++ b/src/lib/mina_block/precomputed_block.ml @@ -53,7 +53,7 @@ module T = struct { scheduled_time : Block_time.t ; protocol_state : Protocol_state.value ; protocol_state_proof : Proof.t - ; staged_ledger_diff : Staged_ledger_diff.t + ; staged_ledger_diff : Staged_ledger_diff.Stable.Latest.t ; delta_transition_chain_proof : Frozen_ledger_hash.t * Frozen_ledger_hash.t list ; protocol_version : Protocol_version.t @@ -62,6 +62,7 @@ module T = struct ; accounts_created : (Account_id.t * Currency.Fee.t) list ; tokens_used : (Token_id.t * Account_id.t option) list } + [@@deriving sexp, yojson] end include T @@ -89,14 +90,13 @@ module Stable = struct ; tokens_used : (Token_id.Stable.V2.t * Account_id.Stable.V2.t option) list } - [@@deriving sexp, yojson] let to_latest = Fn.id end end] (* functions for the versioned json, not the unversioned ones provided by `T` *) -[%%define_locally Stable.Latest.(to_yojson, of_yojson, sexp_of_t, t_of_sexp)] +[%%define_locally Stable.Latest.(to_yojson, of_yojson)] let of_block ~logger ~(constraint_constants : Genesis_constants.Constraint_constants.t) From a0343decfdc0e19ce4778299a99bcaec72a5ef87 Mon Sep 17 00:00:00 2001 From: dkijania Date: Mon, 3 Feb 2025 22:05:59 +0100 Subject: [PATCH 06/11] add additional quick check for network --- .../scripts/connect/connect-to-network.sh | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/buildkite/scripts/connect/connect-to-network.sh b/buildkite/scripts/connect/connect-to-network.sh index 2efe5d676b3..5ac00063da4 100755 --- a/buildkite/scripts/connect/connect-to-network.sh +++ b/buildkite/scripts/connect/connect-to-network.sh @@ -56,7 +56,7 @@ for ((i=1;i<=$num_status_retries;i++)); do done # Check that the daemon has connected to peers and is still up after 2 mins -sleep $WAIT_AFTER_FINAL_CHECK +sleep "$WAIT_AFTER_FINAL_CHECK" mina client status if [ "$(mina advanced get-peers | wc -l)" -gt 0 ]; then echo "Found some peers" @@ -65,3 +65,19 @@ else exit 1 fi +# Check network id +NETWORK_ID=$('http://localhost:3085/graphql' \ + -H 'accept: application/json' \ + -H 'content-type: application/json' \ + --data-raw '{"query":"query MyQuery {\n networkID\n}\n","variables":null,"operationName":"MyQuery"}' \ + | jq .data.networkID) + +EXPECTED_NETWORK="mina:$NETWORK_NAME" + +if [ "$NETWORK_ID" -eq "$EXPECTED_NETWORK" ]; then + echo "Network id correct ($NETWORK_ID)" +else + echo "Network id incorrect (expected: $EXPECTED_NETWORK got: $NETWORK_ID)" + exit 1 +fi + From 14c577576b2134829909fd45e1e6e9cfd88521c7 Mon Sep 17 00:00:00 2001 From: dkijania Date: Wed, 5 Feb 2025 13:30:26 +0100 Subject: [PATCH 07/11] do not exit after peers check. fix graphql port for checking network id --- buildkite/scripts/connect/connect-to-network.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildkite/scripts/connect/connect-to-network.sh b/buildkite/scripts/connect/connect-to-network.sh index 5ac00063da4..4b207d60aab 100755 --- a/buildkite/scripts/connect/connect-to-network.sh +++ b/buildkite/scripts/connect/connect-to-network.sh @@ -66,7 +66,7 @@ else fi # Check network id -NETWORK_ID=$('http://localhost:3085/graphql' \ +NETWORK_ID=$('http://localhost:3086/graphql' \ -H 'accept: application/json' \ -H 'content-type: application/json' \ --data-raw '{"query":"query MyQuery {\n networkID\n}\n","variables":null,"operationName":"MyQuery"}' \ From 4a1b562f868d6a7cbdcd55dc85c9ff120f0a0f38 Mon Sep 17 00:00:00 2001 From: dkijania Date: Wed, 5 Feb 2025 15:29:03 +0100 Subject: [PATCH 08/11] fix missing curl --- buildkite/scripts/connect/connect-to-network.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildkite/scripts/connect/connect-to-network.sh b/buildkite/scripts/connect/connect-to-network.sh index 4b207d60aab..5911222e48a 100755 --- a/buildkite/scripts/connect/connect-to-network.sh +++ b/buildkite/scripts/connect/connect-to-network.sh @@ -66,7 +66,7 @@ else fi # Check network id -NETWORK_ID=$('http://localhost:3086/graphql' \ +NETWORK_ID=$(curl 'http://localhost:3086/graphql' \ -H 'accept: application/json' \ -H 'content-type: application/json' \ --data-raw '{"query":"query MyQuery {\n networkID\n}\n","variables":null,"operationName":"MyQuery"}' \ From 9ceed090a747bea33cca908d189d57ef512085f3 Mon Sep 17 00:00:00 2001 From: dkijania Date: Wed, 5 Feb 2025 18:03:40 +0100 Subject: [PATCH 09/11] fix port --- buildkite/scripts/connect/connect-to-network.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildkite/scripts/connect/connect-to-network.sh b/buildkite/scripts/connect/connect-to-network.sh index 5911222e48a..5f212ad9780 100755 --- a/buildkite/scripts/connect/connect-to-network.sh +++ b/buildkite/scripts/connect/connect-to-network.sh @@ -66,7 +66,7 @@ else fi # Check network id -NETWORK_ID=$(curl 'http://localhost:3086/graphql' \ +NETWORK_ID=$(curl 'http://localhost:3085/graphql' \ -H 'accept: application/json' \ -H 'content-type: application/json' \ --data-raw '{"query":"query MyQuery {\n networkID\n}\n","variables":null,"operationName":"MyQuery"}' \ From 27bf11055d43e56c6bd54e01fdb0a8b7386c9e13 Mon Sep 17 00:00:00 2001 From: dkijania Date: Wed, 5 Feb 2025 19:15:04 +0100 Subject: [PATCH 10/11] remove quotes from graphql response --- buildkite/scripts/connect/connect-to-network.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildkite/scripts/connect/connect-to-network.sh b/buildkite/scripts/connect/connect-to-network.sh index 5f212ad9780..b729f2fce15 100755 --- a/buildkite/scripts/connect/connect-to-network.sh +++ b/buildkite/scripts/connect/connect-to-network.sh @@ -70,9 +70,9 @@ NETWORK_ID=$(curl 'http://localhost:3085/graphql' \ -H 'accept: application/json' \ -H 'content-type: application/json' \ --data-raw '{"query":"query MyQuery {\n networkID\n}\n","variables":null,"operationName":"MyQuery"}' \ - | jq .data.networkID) + | jq -r .data.networkID) -EXPECTED_NETWORK="mina:$NETWORK_NAME" +EXPECTED_NETWORK=mina:$NETWORK_NAME if [ "$NETWORK_ID" -eq "$EXPECTED_NETWORK" ]; then echo "Network id correct ($NETWORK_ID)" From 44341c9f3711bca4c660c4058f7d70857599fedd Mon Sep 17 00:00:00 2001 From: dkijania Date: Wed, 5 Feb 2025 20:15:51 +0100 Subject: [PATCH 11/11] fix comparision --- buildkite/scripts/connect/connect-to-network.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildkite/scripts/connect/connect-to-network.sh b/buildkite/scripts/connect/connect-to-network.sh index b729f2fce15..edf11c8da63 100755 --- a/buildkite/scripts/connect/connect-to-network.sh +++ b/buildkite/scripts/connect/connect-to-network.sh @@ -74,7 +74,7 @@ NETWORK_ID=$(curl 'http://localhost:3085/graphql' \ EXPECTED_NETWORK=mina:$NETWORK_NAME -if [ "$NETWORK_ID" -eq "$EXPECTED_NETWORK" ]; then +if [[ "$NETWORK_ID" == "$EXPECTED_NETWORK" ]]; then echo "Network id correct ($NETWORK_ID)" else echo "Network id incorrect (expected: $EXPECTED_NETWORK got: $NETWORK_ID)"