From c27a3d7880fb9d51762178f237919c8a920998bd Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Tue, 2 May 2023 15:44:42 -0700 Subject: [PATCH 01/40] Split Global_slot.t into since-genesis and since-hard-fork types --- graphql_schema.json | 106 +++++--- src/app/archive/lib/extensional.ml | 9 +- src/app/archive/lib/load_data.ml | 14 +- src/app/archive/lib/processor.ml | 47 ++-- src/app/batch_txn_tool/txn_tool_graphql.ml | 2 +- src/app/best_tip_merger/best_tip_merger.ml | 6 +- src/app/cli/src/init/client.ml | 6 +- src/app/client_sdk/js_util.ml | 4 +- src/app/client_sdk/tests/test_signatures.ml | 2 +- src/app/extract_blocks/extract_blocks.ml | 3 +- .../genesis_ledger_from_tsv.ml | 6 +- src/app/heap_usage/values.ml | 4 +- src/app/replayer/replayer.ml | 7 +- src/app/rosetta/lib/construction.ml | 2 +- src/app/rosetta/lib/network.ml | 2 +- ...ock_production_timed_accounts_test.ml.todo | 4 +- src/app/test_executive/payments_test.ml | 4 +- src/app/test_executive/zkapps.ml | 2 +- src/app/test_executive/zkapps_timing.ml | 25 +- .../zkapp_test_transaction/lib/commands.ml | 4 +- src/lib/block_producer/block_producer.ml | 36 ++- src/lib/block_producer/dune | 1 + src/lib/cli_lib/arg_type.ml | 3 +- src/lib/cli_lib/commands.ml | 3 +- src/lib/cli_lib/flag.mli | 3 +- src/lib/consensus/constants.ml | 4 +- src/lib/consensus/global_slot.ml | 25 +- src/lib/consensus/global_slot_intf.ml | 22 +- src/lib/consensus/global_sub_window.ml | 10 +- src/lib/consensus/intf.ml | 32 ++- src/lib/consensus/proof_of_stake.ml | 121 +++++---- src/lib/consensus/proof_of_stake_fuzzer.ml | 47 ++-- src/lib/consensus/proof_of_stake_intf.ml | 2 +- src/lib/consensus/vrf/consensus_vrf.ml | 27 +- src/lib/daemon_rpcs/types.ml | 15 +- src/lib/fields_derivers_zkapps/dune | 1 + .../fields_derivers_zkapps.ml | 20 +- .../genesis_constants/genesis_constants.ml | 10 +- src/lib/genesis_ledger/genesis_ledger.ml | 8 +- src/lib/genesis_ledger/intf.ml | 2 +- .../lib/genesis_ledger_helper_lib.ml | 9 +- .../kubernetes_network.ml | 11 +- src/lib/integration_test_lib/intf.ml | 4 +- src/lib/internal_tracing/internal_tracing.ml | 6 +- src/lib/internal_tracing/internal_tracing.mli | 2 +- src/lib/mina_base/account.ml | 78 ++++-- src/lib/mina_base/account_timing.ml | 64 +++-- src/lib/mina_base/account_update.ml | 68 +++-- src/lib/mina_base/pending_coinbase.ml | 28 +- src/lib/mina_base/pending_coinbase_intf.ml | 7 +- src/lib/mina_base/signed_command_intf.ml | 2 +- src/lib/mina_base/signed_command_payload.ml | 24 +- src/lib/mina_base/signed_command_payload.mli | 10 +- src/lib/mina_base/sparse_ledger_base.ml | 2 +- src/lib/mina_base/sparse_ledger_base.mli | 7 +- src/lib/mina_base/test/account/account.ml | 65 +++-- .../mina_base/transaction_union_payload.ml | 9 +- src/lib/mina_base/user_command.ml | 2 +- src/lib/mina_base/zkapp_account.ml | 23 +- src/lib/mina_base/zkapp_precondition.ml | 28 +- src/lib/mina_commands/mina_commands.ml | 2 +- .../zkapp_command_generators.ml | 54 ++-- .../zkapp_command_generators.mli | 4 +- src/lib/mina_graphql/mina_graphql.ml | 40 ++- src/lib/mina_ledger/ledger.ml | 3 +- src/lib/mina_ledger/ledger.mli | 16 +- src/lib/mina_numbers/dune | 2 +- src/lib/mina_numbers/global_slot.ml | 107 +++++++- src/lib/mina_numbers/global_slot_intf.ml | 83 ++++++ .../mina_numbers/global_slot_since_genesis.ml | 47 ++++ .../global_slot_since_genesis.mli | 7 + .../global_slot_since_hard_fork.ml | 47 ++++ .../global_slot_since_hard_fork.mli | 7 + src/lib/mina_numbers/global_slot_span.ml | 95 +++++++ .../{global_slot.mli => global_slot_span.mli} | 4 +- src/lib/mina_numbers/intf.ml | 2 - src/lib/mina_numbers/mina_numbers.ml | 4 +- src/lib/mina_numbers/unix/graphql_scalars.ml | 42 ++- src/lib/mina_state/snarked_ledger_state.ml | 2 +- .../consensus/consensus_global_slot.ml | 14 +- .../consensus/consensus_global_slot.mli | 9 +- .../consensus/consensus_proof_of_stake.ml | 4 +- .../consensus/consensus_proof_of_stake.mli | 2 +- .../mina_base/mina_base_account_update.ml | 6 +- .../mina_base_signed_command_payload.ml | 4 +- .../mina_base/mina_base_zkapp_precondition.ml | 4 +- src/lib/mina_wire_types/mina_numbers.ml | 54 +++- .../mina_wire_types/test/type_equalities.ml | 2 +- src/lib/network_pool/indexed_pool.ml | 35 ++- src/lib/network_pool/indexed_pool.mli | 7 +- src/lib/network_pool/transaction_pool.ml | 27 +- src/lib/rosetta_lib/user_command_info.ml | 3 +- src/lib/runtime_config/runtime_config.ml | 8 +- .../snark_profiler_lib/snark_profiler_lib.ml | 7 +- src/lib/staged_ledger/staged_ledger.ml | 61 +++-- src/lib/staged_ledger/staged_ledger.mli | 28 +- src/lib/transaction/transaction_union.ml | 4 +- .../transaction_consistency_tests.ml | 8 +- .../mina_transaction_logic.ml | 67 ++--- .../transaction_logic/test/account_timing.ml | 36 +-- .../test/protocol_config_examples.ml | 2 +- .../test/transaction_logic.ml | 2 +- .../transaction_logic/zkapp_command_logic.ml | 36 ++- .../transaction_protocol_state.ml | 2 +- .../transaction_protocol_state.mli | 4 +- .../test/account_timing/account_timing.ml | 247 +++++++++++------- .../test/fee_payer/fee_payer.ml | 4 +- .../transaction_union/transaction_union.ml | 22 +- src/lib/transaction_snark/test/util.ml | 6 +- src/lib/transaction_snark/test/util.mli | 8 +- .../test/zkapp_fuzzy/zkapp_fuzzy.ml | 10 +- .../test/zkapp_payments/zkapp_payments.ml | 2 +- .../zkapp_preconditions.ml | 15 +- .../test/zkapps_examples/actions/actions.ml | 27 +- .../transaction_snark/transaction_snark.ml | 32 ++- .../transaction_snark_intf.ml | 10 +- .../transaction_validator.ml | 7 +- .../transaction_validator.mli | 6 +- .../transaction_snark_scan_state.ml | 2 +- .../transaction_snark_scan_state.mli | 24 +- .../transaction_witness.ml | 4 +- .../transaction_witness.mli | 4 +- .../frontier_base/breadcrumb.ml | 3 +- .../full_frontier/full_frontier.ml | 7 +- .../user_command_input/user_command_input.ml | 6 +- .../user_command_input/user_command_input.mli | 2 +- src/lib/vrf_evaluator/dune | 1 + src/lib/vrf_evaluator/vrf_evaluator.ml | 31 ++- src/nonconsensus/mina_numbers/global_slot.ml | 1 - src/nonconsensus/mina_numbers/global_slot.mli | 1 - 130 files changed, 1759 insertions(+), 827 deletions(-) create mode 100644 src/lib/mina_numbers/global_slot_intf.ml create mode 100644 src/lib/mina_numbers/global_slot_since_genesis.ml create mode 100644 src/lib/mina_numbers/global_slot_since_genesis.mli create mode 100644 src/lib/mina_numbers/global_slot_since_hard_fork.ml create mode 100644 src/lib/mina_numbers/global_slot_since_hard_fork.mli create mode 100644 src/lib/mina_numbers/global_slot_span.ml rename src/lib/mina_numbers/{global_slot.mli => global_slot_span.mli} (63%) delete mode 120000 src/nonconsensus/mina_numbers/global_slot.ml delete mode 120000 src/nonconsensus/mina_numbers/global_slot.mli diff --git a/graphql_schema.json b/graphql_schema.json index 8b6fafb9091..5b852a17c40 100644 --- a/graphql_schema.json +++ b/graphql_schema.json @@ -727,7 +727,11 @@ "name": "validUntil", "description": null, "args": [], - "type": { "kind": "SCALAR", "name": "UInt32", "ofType": null }, + "type": { + "kind": "SCALAR", + "name": "GlobalSlotSinceGenesis", + "ofType": null + }, "isDeprecated": false, "deprecationReason": null }, @@ -776,7 +780,11 @@ { "name": "validUntil", "description": null, - "type": { "kind": "SCALAR", "name": "UInt32", "ofType": null }, + "type": { + "kind": "SCALAR", + "name": "GlobalSlotSinceGenesis", + "ofType": null + }, "defaultValue": null }, { @@ -1374,7 +1382,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalSlot", + "name": "GlobalSlotSinceGenesis", "ofType": null } }, @@ -1406,7 +1414,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalSlot", + "name": "GlobalSlotSpan", "ofType": null } }, @@ -1453,7 +1461,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalSlot", + "name": "GlobalSlotSinceGenesis", "ofType": null } }, @@ -1481,7 +1489,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalSlot", + "name": "GlobalSlotSpan", "ofType": null } }, @@ -2119,7 +2127,7 @@ "args": [], "type": { "kind": "INPUT_OBJECT", - "name": "GlobalSlotIntervalInput", + "name": "GlobalSlotSinceGenesisIntervalInput", "ofType": null }, "isDeprecated": false, @@ -2200,7 +2208,7 @@ "description": null, "type": { "kind": "INPUT_OBJECT", - "name": "GlobalSlotIntervalInput", + "name": "GlobalSlotSinceGenesisIntervalInput", "ofType": null }, "defaultValue": null @@ -2556,7 +2564,7 @@ }, { "kind": "INPUT_OBJECT", - "name": "GlobalSlotIntervalInput", + "name": "GlobalSlotSinceGenesisIntervalInput", "description": null, "fields": [ { @@ -2568,7 +2576,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "UInt32", + "name": "GlobalSlotSinceGenesis", "ofType": null } }, @@ -2584,7 +2592,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "UInt32", + "name": "GlobalSlotSinceGenesis", "ofType": null } }, @@ -2601,7 +2609,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "UInt32", + "name": "GlobalSlotSinceGenesis", "ofType": null } }, @@ -2615,7 +2623,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "UInt32", + "name": "GlobalSlotSinceGenesis", "ofType": null } }, @@ -2669,7 +2677,7 @@ "args": [], "type": { "kind": "INPUT_OBJECT", - "name": "GlobalSlotIntervalInput", + "name": "GlobalSlotSinceGenesisIntervalInput", "ofType": null }, "isDeprecated": false, @@ -2710,7 +2718,7 @@ "description": null, "type": { "kind": "INPUT_OBJECT", - "name": "GlobalSlotIntervalInput", + "name": "GlobalSlotSinceGenesisIntervalInput", "ofType": null }, "defaultValue": null @@ -5830,7 +5838,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "Globalslot", + "name": "GlobalslotSinceGenesis", "ofType": null } }, @@ -7290,7 +7298,7 @@ }, { "kind": "OBJECT", - "name": "GlobalSlotInterval", + "name": "GlobalSlotSinceGenesisInterval", "description": null, "fields": [ { @@ -7302,7 +7310,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "UInt32", + "name": "GlobalSlotSinceGenesis", "ofType": null } }, @@ -7318,7 +7326,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "UInt32", + "name": "GlobalSlotSinceGenesis", "ofType": null } }, @@ -7472,7 +7480,7 @@ "args": [], "type": { "kind": "OBJECT", - "name": "GlobalSlotInterval", + "name": "GlobalSlotSinceGenesisInterval", "ofType": null }, "isDeprecated": false, @@ -7559,7 +7567,7 @@ "args": [], "type": { "kind": "OBJECT", - "name": "GlobalSlotInterval", + "name": "GlobalSlotSinceGenesisInterval", "ofType": null }, "isDeprecated": false, @@ -7626,7 +7634,7 @@ }, { "kind": "SCALAR", - "name": "CurrencyAmount", + "name": "GlobalSlotSpan", "description": null, "fields": null, "inputFields": null, @@ -7636,7 +7644,7 @@ }, { "kind": "SCALAR", - "name": "GlobalSlot", + "name": "CurrencyAmount", "description": null, "fields": null, "inputFields": null, @@ -7674,7 +7682,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalSlot", + "name": "GlobalSlotSinceGenesis", "ofType": null } }, @@ -7706,7 +7714,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalSlot", + "name": "GlobalSlotSpan", "ofType": null } }, @@ -8436,6 +8444,16 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "SCALAR", + "name": "GlobalSlotSinceGenesis", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, { "kind": "OBJECT", "name": "FeePayerBody", @@ -8473,7 +8491,11 @@ "name": "validUntil", "description": null, "args": [], - "type": { "kind": "SCALAR", "name": "UInt32", "ofType": null }, + "type": { + "kind": "SCALAR", + "name": "GlobalSlotSinceGenesis", + "ofType": null + }, "isDeprecated": false, "deprecationReason": null }, @@ -8809,7 +8831,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "Globalslot", + "name": "GlobalslotSinceGenesis", "ofType": null } }, @@ -9193,7 +9215,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "Globalslot", + "name": "GlobalslotSinceGenesis", "ofType": null } }, @@ -9505,7 +9527,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "Globalslot", + "name": "GlobalslotSinceGenesis", "ofType": null } }, @@ -10291,7 +10313,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "Globalslot", + "name": "GlobalslotSinceGenesis", "ofType": null } }, @@ -11579,6 +11601,16 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "SCALAR", + "name": "GlobalslotSpan", + "description": "globalslotspan", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, { "kind": "SCALAR", "name": "Amount", @@ -11619,7 +11651,7 @@ "args": [], "type": { "kind": "SCALAR", - "name": "Globalslot", + "name": "GlobalslotSinceGenesis", "ofType": null }, "isDeprecated": false, @@ -11639,7 +11671,7 @@ "args": [], "type": { "kind": "SCALAR", - "name": "Globalslot", + "name": "GlobalslotSpan", "ofType": null }, "isDeprecated": false, @@ -12373,7 +12405,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "Globalslot", + "name": "GlobalslotSinceGenesis", "ofType": null } }, @@ -12431,7 +12463,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "Globalslot", + "name": "GlobalslotSinceGenesis", "ofType": null } } @@ -12475,8 +12507,8 @@ }, { "kind": "SCALAR", - "name": "Globalslot", - "description": "globalslot", + "name": "GlobalslotSinceGenesis", + "description": "globalslotsincegenesis", "fields": null, "inputFields": null, "interfaces": null, @@ -12539,7 +12571,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "Globalslot", + "name": "GlobalslotSinceGenesis", "ofType": null } }, diff --git a/src/app/archive/lib/extensional.ml b/src/app/archive/lib/extensional.ml index 421e21b16ea..4acf7640590 100644 --- a/src/app/archive/lib/extensional.ml +++ b/src/app/archive/lib/extensional.ml @@ -31,7 +31,8 @@ module User_command = struct ; nonce : Account.Nonce.Stable.V1.t ; amount : Currency.Amount.Stable.V1.t option ; fee : Currency.Fee.Stable.V1.t - ; valid_until : Mina_numbers.Global_slot.Stable.V1.t option + ; valid_until : + Mina_numbers.Global_slot_since_genesis.Stable.V1.t option ; memo : Signed_command_memo.Stable.V1.t ; hash : Transaction_hash.Stable.V1.t [@to_yojson Transaction_hash.to_yojson] @@ -119,8 +120,10 @@ module Block = struct ; sub_window_densities : Mina_numbers.Length.Stable.V1.t list ; ledger_hash : Ledger_hash.Stable.V1.t ; height : Unsigned_extended.UInt32.Stable.V1.t - ; global_slot_since_hard_fork : Mina_numbers.Global_slot.Stable.V1.t - ; global_slot_since_genesis : Mina_numbers.Global_slot.Stable.V1.t + ; global_slot_since_hard_fork : + Mina_numbers.Global_slot_since_genesis.Stable.V1.t + ; global_slot_since_genesis : + Mina_numbers.Global_slot_since_genesis.Stable.V1.t ; timestamp : Block_time.Stable.V1.t ; user_cmds : User_command.Stable.V1.t list ; internal_cmds : Internal_command.Stable.V1.t list diff --git a/src/app/archive/lib/load_data.ml b/src/app/archive/lib/load_data.ml index 21cc462ce50..9add1d35db6 100644 --- a/src/app/archive/lib/load_data.ml +++ b/src/app/archive/lib/load_data.ml @@ -56,7 +56,7 @@ let get_global_slot_bounds pool id = in let slot_of_int64 int64 = int64 |> Unsigned.UInt32.of_int64 - |> Mina_numbers.Global_slot.of_uint32 + |> Mina_numbers.Global_slot_since_genesis.of_uint32 in let lower = slot_of_int64 bounds.global_slot_lower_bound in let upper = slot_of_int64 bounds.global_slot_upper_bound in @@ -242,12 +242,12 @@ let update_of_id pool update_id = in let cliff_time = cliff_time |> Unsigned.UInt32.of_int64 - |> Mina_numbers.Global_slot.of_uint32 + |> Mina_numbers.Global_slot_since_genesis.of_uint32 in let cliff_amount = Currency.Amount.of_string cliff_amount in let vesting_period = vesting_period |> Unsigned.UInt32.of_int64 - |> Mina_numbers.Global_slot.of_uint32 + |> Mina_numbers.Global_slot_span.of_uint32 in let vesting_increment = Currency.Amount.of_string vesting_increment in Some @@ -404,7 +404,7 @@ let get_fee_payer_body ~pool body_id = let valid_until = let open Option.Let_syntax in valid_until >>| Unsigned.UInt32.of_int64 - >>| Mina_numbers.Global_slot.of_uint32 + >>| Mina_numbers.Global_slot_since_genesis.of_uint32 in let nonce = nonce |> Unsigned.UInt32.of_int64 |> Mina_numbers.Account_nonce.of_uint32 @@ -729,12 +729,12 @@ let get_account_accessed ~pool (account : Processor.Accounts_accessed.t) : in let cliff_time = cliff_time |> Unsigned.UInt32.of_int64 - |> Mina_numbers.Global_slot.of_uint32 + |> Mina_numbers.Global_slot_since_genesis.of_uint32 in let cliff_amount = Currency.Amount.of_string cliff_amount in let vesting_period = vesting_period |> Unsigned.UInt32.of_int64 - |> Mina_numbers.Global_slot.of_uint32 + |> Mina_numbers.Global_slot_span.of_uint32 in let vesting_increment = Currency.Amount.of_string vesting_increment in Timed @@ -869,7 +869,7 @@ let get_account_accessed ~pool (account : Processor.Accounts_accessed.t) : in let last_action_slot = last_action_slot |> Unsigned.UInt32.of_int64 - |> Mina_numbers.Global_slot.of_uint32 + |> Mina_numbers.Global_slot_since_genesis.of_uint32 in let%map zkapp_uri = query_db ~f:(fun db -> Processor.Zkapp_uri.load db zkapp_uri_id) diff --git a/src/app/archive/lib/processor.ml b/src/app/archive/lib/processor.ml index 994174f4c09..1cf47761e71 100644 --- a/src/app/archive/lib/processor.ml +++ b/src/app/archive/lib/processor.ml @@ -653,10 +653,14 @@ module Zkapp_timing_info = struct let initial_minimum_balance = Currency.Balance.to_string timing_info.initial_minimum_balance in - let cliff_time = timing_info.cliff_time |> Unsigned.UInt32.to_int64 in + let cliff_time = + Mina_numbers.Global_slot_since_genesis.to_uint32 timing_info.cliff_time + |> Unsigned.UInt32.to_int64 + in let cliff_amount = Currency.Amount.to_string timing_info.cliff_amount in let vesting_period = - timing_info.vesting_period |> Unsigned.UInt32.to_int64 + Mina_numbers.Global_slot_span.to_uint32 timing_info.vesting_period + |> Unsigned.UInt32.to_int64 in let vesting_increment = Currency.Amount.to_string timing_info.vesting_increment @@ -1133,14 +1137,14 @@ module Zkapp_global_slot_bounds = struct let add_if_doesn't_exist (module Conn : CONNECTION) (global_slot_bounds : - Mina_numbers.Global_slot.t + Mina_numbers.Global_slot_since_genesis.t Mina_base.Zkapp_precondition.Closed_interval.t ) = let global_slot_lower_bound = - Mina_numbers.Global_slot.to_uint32 global_slot_bounds.lower + Mina_numbers.Global_slot_since_genesis.to_uint32 global_slot_bounds.lower |> Unsigned.UInt32.to_int64 in let global_slot_upper_bound = - Mina_numbers.Global_slot.to_uint32 global_slot_bounds.upper + Mina_numbers.Global_slot_since_genesis.to_uint32 global_slot_bounds.upper |> Unsigned.UInt32.to_int64 in let value = { global_slot_lower_bound; global_slot_upper_bound } in @@ -1205,7 +1209,11 @@ module Timing_info = struct (timing : Account_timing.t) = let open Deferred.Result.Let_syntax in let slot_to_int64 x = - Mina_numbers.Global_slot.to_uint32 x |> Unsigned.UInt32.to_int64 + Mina_numbers.Global_slot_since_genesis.to_uint32 x + |> Unsigned.UInt32.to_int64 + in + let slot_span_to_int64 x = + Mina_numbers.Global_slot_span.to_uint32 x |> Unsigned.UInt32.to_int64 in match%bind Conn.find_opt @@ -1224,7 +1232,7 @@ module Timing_info = struct Currency.Balance.to_string timing.initial_minimum_balance ; cliff_time = slot_to_int64 timing.cliff_time ; cliff_amount = Currency.Amount.to_string timing.cliff_amount - ; vesting_period = slot_to_int64 timing.vesting_period + ; vesting_period = slot_span_to_int64 timing.vesting_period ; vesting_increment = Currency.Amount.to_string timing.vesting_increment } @@ -1701,7 +1709,7 @@ module Zkapp_fee_payer_body = struct in let valid_until = let open Option.Let_syntax in - body.valid_until >>| Mina_numbers.Global_slot.to_uint32 + body.valid_until >>| Mina_numbers.Global_slot_since_genesis.to_uint32 >>| Unsigned.UInt32.to_int64 in let nonce = @@ -1854,10 +1862,13 @@ module User_command = struct let valid_until = let open Mina_numbers in let slot = Signed_command.valid_until t in - if Global_slot.equal slot Global_slot.max_value then None + if + Global_slot_since_genesis.equal slot + Global_slot_since_genesis.max_value + then None else Some - ( slot |> Mina_numbers.Global_slot.to_uint32 + ( slot |> Mina_numbers.Global_slot_since_genesis.to_uint32 |> Unsigned.UInt32.to_int64 ) in (* TODO: Converting these uint64s to int64 can overflow; see #5419 *) @@ -1921,7 +1932,7 @@ module User_command = struct Option.map user_cmd.valid_until ~f: (Fn.compose Unsigned.UInt32.to_int64 - Mina_numbers.Global_slot.to_uint32 ) + Mina_numbers.Global_slot_since_genesis.to_uint32 ) ; memo = user_cmd.memo |> Signed_command_memo.to_base58_check ; hash = user_cmd.hash |> Transaction_hash.to_base58_check } @@ -2503,7 +2514,7 @@ module Zkapp_account = struct Zkapp_action_states.add_if_doesn't_exist (module Conn) action_state in let last_action_slot = - Mina_numbers.Global_slot.to_uint32 last_action_slot + Mina_numbers.Global_slot_since_genesis.to_uint32 last_action_slot |> Unsigned.UInt32.to_int64 in let%bind zkapp_uri_id = @@ -2869,7 +2880,8 @@ module Block = struct Error.raise (Staged_ledger.Pre_diff_info.Error.to_error e) in let global_slot_since_hard_fork = - Consensus.Data.Consensus_state.curr_global_slot consensus_state + Mina_numbers.Global_slot_since_genesis.to_uint32 + @@ Consensus.Data.Consensus_state.curr_global_slot consensus_state |> Unsigned.UInt32.to_int64 in let%bind protocol_version_id = @@ -2946,6 +2958,7 @@ module Block = struct ; global_slot_since_genesis = consensus_state |> Consensus.Data.Consensus_state.global_slot_since_genesis + |> Mina_numbers.Global_slot_since_genesis.to_uint32 |> Unsigned.UInt32.to_int64 ; protocol_version_id ; proposed_protocol_version_id @@ -3306,9 +3319,13 @@ module Block = struct ; ledger_hash = block.ledger_hash |> Ledger_hash.to_base58_check ; height = block.height |> Unsigned.UInt32.to_int64 ; global_slot_since_hard_fork = - block.global_slot_since_hard_fork |> Unsigned.UInt32.to_int64 + block.global_slot_since_hard_fork + |> Mina_numbers.Global_slot_since_genesis.to_uint32 + |> Unsigned.UInt32.to_int64 ; global_slot_since_genesis = - block.global_slot_since_genesis |> Unsigned.UInt32.to_int64 + block.global_slot_since_genesis + |> Mina_numbers.Global_slot_since_genesis.to_uint32 + |> Unsigned.UInt32.to_int64 ; protocol_version_id ; proposed_protocol_version_id ; timestamp = Block_time.to_string_exn block.timestamp diff --git a/src/app/batch_txn_tool/txn_tool_graphql.ml b/src/app/batch_txn_tool/txn_tool_graphql.ml index ad850dfdeaf..8af0346a8ce 100644 --- a/src/app/batch_txn_tool/txn_tool_graphql.ml +++ b/src/app/batch_txn_tool/txn_tool_graphql.ml @@ -121,7 +121,7 @@ let send_signed_transaction ~sender_priv_key ~nonce ~receiver_pub_key ~amount { fee ; fee_payer_pk = sender_pub_key ; nonce - ; valid_until = Mina_numbers.Global_slot.max_value + ; valid_until = Mina_numbers.Global_slot_since_genesis.max_value ; memo = Mina_base.Signed_command_memo.empty } ; body = Payment { source_pk = sender_pub_key; receiver_pk; amount } diff --git a/src/app/best_tip_merger/best_tip_merger.ml b/src/app/best_tip_merger/best_tip_merger.ml index 60873175ce8..5682f29ec5b 100644 --- a/src/app/best_tip_merger/best_tip_merger.ml +++ b/src/app/best_tip_merger/best_tip_merger.ml @@ -205,7 +205,7 @@ module Compact_display = struct { current : State_hash.t ; parent : State_hash.t ; blockchain_length : Mina_numbers.Length.t - ; global_slot : Mina_numbers.Global_slot.t + ; global_slot : Mina_numbers.Global_slot_since_genesis.t } [@@deriving yojson] @@ -243,7 +243,7 @@ module Graph_node = struct | Node of { current : State_hash.t ; length : Mina_numbers.Length.t - ; slot : Mina_numbers.Global_slot.t + ; slot : Mina_numbers.Global_slot_since_genesis.t } [@@deriving yojson, equal, hash] @@ -267,7 +267,7 @@ module Graph_node = struct ("NA", "NA") | Node s -> ( Mina_numbers.Length.to_string s.length - , Mina_numbers.Global_slot.to_string s.slot ) + , Mina_numbers.Global_slot_since_genesis.to_string s.slot ) in { state; slot; length; peers = t.peers } diff --git a/src/app/cli/src/init/client.ml b/src/app/cli/src/init/client.ml index f34bc944139..06efee5dac9 100644 --- a/src/app/cli/src/init/client.ml +++ b/src/app/cli/src/init/client.ml @@ -436,7 +436,8 @@ let batch_send_payments = { receiver : string ; amount : Currency.Amount.t ; fee : Currency.Fee.t - ; valid_until : Mina_numbers.Global_slot.t option [@sexp.option] + ; valid_until : Mina_numbers.Global_slot_since_genesis.t option + [@sexp.option] } [@@deriving sexp] end in @@ -453,7 +454,8 @@ let batch_send_payments = { Payment_info.receiver = Public_key.( Compressed.to_base58_check (compress keypair.public_key)) - ; valid_until = Some (Mina_numbers.Global_slot.random ()) + ; valid_until = + Some (Mina_numbers.Global_slot_since_genesis.random ()) ; amount = Currency.Amount.of_nanomina_int_exn (Random.int 100) ; fee = Currency.Fee.of_nanomina_int_exn (Random.int 100) } diff --git a/src/app/client_sdk/js_util.ml b/src/app/client_sdk/js_util.ml index 83656796a2b..167f8b64707 100644 --- a/src/app/client_sdk/js_util.ml +++ b/src/app/client_sdk/js_util.ml @@ -56,7 +56,9 @@ let payload_common_of_js (payload_common_js : payload_common_js) = let nonce_js = payload_common_js##.nonce in let nonce = Js.to_string nonce_js |> Mina_numbers.Account_nonce.of_string in let valid_until_js = payload_common_js##.validUntil in - let valid_until = Js.to_string valid_until_js |> Global_slot.of_string in + let valid_until = + Js.to_string valid_until_js |> Global_slot_since_genesis.of_string + in let memo_js = payload_common_js##.memo in let memo = Js.to_string memo_js |> Memo.create_from_string_exn in Signed_command_payload.Common.Poly. diff --git a/src/app/client_sdk/tests/test_signatures.ml b/src/app/client_sdk/tests/test_signatures.ml index 3f75fababec..5c6189ef4e0 100644 --- a/src/app/client_sdk/tests/test_signatures.ml +++ b/src/app/client_sdk/tests/test_signatures.ml @@ -33,7 +33,7 @@ let new_delegate = let make_common ~fee ~fee_payer_pk ~nonce ~valid_until memo = let fee = Currency.Fee.of_nanomina_int_exn fee in let nonce = Account.Nonce.of_int nonce in - let valid_until = Mina_numbers.Global_slot.of_int valid_until in + let valid_until = Mina_numbers.Global_slot_since_genesis.of_int valid_until in let memo = Signed_command_memo.create_from_string_exn memo in Signed_command_payload.Common.Poly. { fee; fee_payer_pk; nonce; valid_until; memo } diff --git a/src/app/extract_blocks/extract_blocks.ml b/src/app/extract_blocks/extract_blocks.ml index 774821f2439..ec8b4e788d0 100644 --- a/src/app/extract_blocks/extract_blocks.ml +++ b/src/app/extract_blocks/extract_blocks.ml @@ -293,7 +293,8 @@ let fill_in_user_commands pool block_state_hash = let fee = Currency.Fee.of_string user_cmd.fee in let valid_until = Option.map user_cmd.valid_until ~f:(fun valid -> - Unsigned.UInt32.of_int64 valid |> Mina_numbers.Global_slot.of_uint32 ) + Unsigned.UInt32.of_int64 valid + |> Mina_numbers.Global_slot_since_genesis.of_uint32 ) in let memo = user_cmd.memo |> Signed_command_memo.of_base58_check_exn in let hash = user_cmd.hash |> Transaction_hash.of_base58_check_exn in diff --git a/src/app/genesis_ledger_from_tsv/genesis_ledger_from_tsv.ml b/src/app/genesis_ledger_from_tsv/genesis_ledger_from_tsv.ml index d8c5584b4ec..65b34d6b55f 100644 --- a/src/app/genesis_ledger_from_tsv/genesis_ledger_from_tsv.ml +++ b/src/app/genesis_ledger_from_tsv/genesis_ledger_from_tsv.ml @@ -109,15 +109,15 @@ let runtime_config_account ~logger ~wallet_pk ~amount ~initial_min_balance Float.of_string cliff_time_months *. slots_per_month_float in (* if there's a fractional slot, wait until next slot by rounding up *) - Global_slot.of_int (Float.iround_up_exn num_slots_float) + Global_slot_since_genesis.of_int (Float.iround_up_exn num_slots_float) in let cliff_amount = Currency.Amount.of_mina_string_exn cliff_amount in let vesting_period = match Int.of_string unlock_frequency with | 0 -> - Global_slot.of_int 1 + Global_slot_since_genesis.of_int 1 | 1 -> - Global_slot.of_int slots_per_month + Global_slot_since_genesis.of_int slots_per_month | _ -> failwithf "Expected unlock frequency to be 0 or 1, got %s" unlock_frequency () diff --git a/src/app/heap_usage/values.ml b/src/app/heap_usage/values.ml index aa85edabbee..a3e9c8a0956 100644 --- a/src/app/heap_usage/values.ml +++ b/src/app/heap_usage/values.ml @@ -137,7 +137,7 @@ let mk_scan_state_base_node ; init_stack ; first_pass_ledger_witness = ledger_witness ; second_pass_ledger_witness = ledger_witness - ; block_global_slot = Mina_numbers.Global_slot.zero + ; block_global_slot = Mina_numbers.Global_slot_since_genesis.zero } in let record : _ Parallel_scan.Base.Record.t = @@ -176,7 +176,7 @@ let scan_state_base_node_payment = { fee = Currency.Fee.zero ; fee_payer_pk = sample_pk_compressed ; nonce = Mina_numbers.Account_nonce.zero - ; valid_until = Mina_numbers.Global_slot.max_value + ; valid_until = Mina_numbers.Global_slot_since_genesis.max_value ; memo = Mina_base.Signed_command_memo.empty } in diff --git a/src/app/replayer/replayer.ml b/src/app/replayer/replayer.ml index 6ee72e5ff41..afc2177cf86 100644 --- a/src/app/replayer/replayer.ml +++ b/src/app/replayer/replayer.ml @@ -391,7 +391,8 @@ let user_command_to_transaction ~logger ~pool ~ledger (cmd : Sql.User_command.t) let memo = Signed_command_memo.of_base58_check_exn cmd.memo in let valid_until = Option.map cmd.valid_until ~f:(fun slot -> - Mina_numbers.Global_slot.of_uint32 @@ Unsigned.UInt32.of_int64 slot ) + Mina_numbers.Global_slot_since_genesis.of_uint32 + @@ Unsigned.UInt32.of_int64 slot ) in let payload = Signed_command_payload.create @@ -442,7 +443,7 @@ let get_parent_state_view ~pool block_id = in let global_slot_since_genesis = parent_block.global_slot_since_genesis |> Unsigned.UInt32.of_int64 - |> Mina_numbers.Global_slot.of_uint32 + |> Mina_numbers.Global_slot_since_genesis.of_uint32 in let epoch_data_of_raw_epoch_data (raw_epoch_data : Processor.Epoch_data.t) : Mina_base.Epoch_data.Value.t Deferred.t = @@ -1063,7 +1064,7 @@ let main ~input_file ~output_file_opt ~archive_uri ~continue_on_error () = match Ledger.apply_transaction_first_pass ~constraint_constants ~global_slot: - (Mina_numbers.Global_slot.of_uint32 + (Mina_numbers.Global_slot_since_genesis.of_uint32 (Unsigned.UInt32.of_int64 last_global_slot_since_genesis ) ) ~txn_state_view ledger txn diff --git a/src/app/rosetta/lib/construction.ml b/src/app/rosetta/lib/construction.ml index 9b57223a86b..9e4e1bcbf94 100644 --- a/src/app/rosetta/lib/construction.ml +++ b/src/app/rosetta/lib/construction.ml @@ -660,7 +660,7 @@ module Parse = struct let signer = fee_payer_pk in let valid_until = Option.map payment.valid_until - ~f:Mina_numbers.Global_slot.of_uint32 + ~f:Mina_numbers.Global_slot_since_genesis.of_uint32 in let nonce = payment.nonce in let%map memo = diff --git a/src/app/rosetta/lib/network.ml b/src/app/rosetta/lib/network.ml index 3fc45a18392..91e2b62f089 100644 --- a/src/app/rosetta/lib/network.ml +++ b/src/app/rosetta/lib/network.ml @@ -284,7 +284,7 @@ module Status = struct stateHash = "GENESIS_HASH"; protocolState = { consensusState = { - blockHeight = Mina_numbers.Global_slot.of_int 1; + blockHeight = Mina_numbers.Global_slot_since_genesis.of_int 1; }; }; }; diff --git a/src/app/test_executive/block_production_timed_accounts_test.ml.todo b/src/app/test_executive/block_production_timed_accounts_test.ml.todo index 0108eebb44f..33e24bd54ea 100644 --- a/src/app/test_executive/block_production_timed_accounts_test.ml.todo +++ b/src/app/test_executive/block_production_timed_accounts_test.ml.todo @@ -23,9 +23,9 @@ module Make (Engine : Intf.Engine.S) (Dsl : Intf.Dsl.S with module Engine := Eng let timing : Mina_base.Account_timing.t = Timed { initial_minimum_balance= balance - ; cliff_time= Mina_numbers.Global_slot.of_int 4 + ; cliff_time= Mina_numbers.Global_slot_since_genesis.of_int 4 ; cliff_amount= Amount.zero - ; vesting_period= Mina_numbers.Global_slot.of_int 2 + ; vesting_period= Mina_numbers.Global_slot_since_genesis.of_int 2 ; vesting_increment= Amount.of_int 50_000_000_000 } in {default with block_producers= [{balance= block_producer_balance; timing}]} diff --git a/src/app/test_executive/payments_test.ml b/src/app/test_executive/payments_test.ml index b505d6a6667..5e5112df27f 100644 --- a/src/app/test_executive/payments_test.ml +++ b/src/app/test_executive/payments_test.ml @@ -27,9 +27,9 @@ module Make (Inputs : Intf.Test.Inputs_intf) = struct let open Currency in Timed { initial_minimum_balance = Balance.of_nanomina_int_exn min_balance - ; cliff_time = Mina_numbers.Global_slot.of_int cliff_time + ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int cliff_time ; cliff_amount = Amount.of_nanomina_int_exn cliff_amount - ; vesting_period = Mina_numbers.Global_slot.of_int vesting_period + ; vesting_period = Mina_numbers.Global_slot_span.of_int vesting_period ; vesting_increment = Amount.of_nanomina_int_exn vesting_increment } in diff --git a/src/app/test_executive/zkapps.ml b/src/app/test_executive/zkapps.ml index ac72851f647..0de5a0f4047 100644 --- a/src/app/test_executive/zkapps.ml +++ b/src/app/test_executive/zkapps.ml @@ -93,7 +93,7 @@ module Make (Inputs : Intf.Test.Inputs_intf) = struct Currency.Amount.of_fee constraint_constants.account_creation_fee in let memo = "" in - let valid_until = Mina_numbers.Global_slot.max_value in + let valid_until = Mina_numbers.Global_slot_since_genesis.max_value in let fee = Currency.Fee.of_nanomina_int_exn 1_000_000 in let payload = let common = diff --git a/src/app/test_executive/zkapps_timing.ml b/src/app/test_executive/zkapps_timing.ml index 424a82bb559..6dd93fffe0d 100644 --- a/src/app/test_executive/zkapps_timing.ml +++ b/src/app/test_executive/zkapps_timing.ml @@ -92,9 +92,10 @@ module Make (Inputs : Intf.Test.Inputs_intf) = struct (let timing = Zkapp_basic.Set_or_keep.Set ( { initial_minimum_balance = Currency.Balance.of_mina_int_exn 5 - ; cliff_time = Mina_numbers.Global_slot.of_int 10000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 10_000 - ; vesting_period = Mina_numbers.Global_slot.of_int 2 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 2 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 1_000 } @@ -141,9 +142,10 @@ module Make (Inputs : Intf.Test.Inputs_intf) = struct (let timing = Zkapp_basic.Set_or_keep.Set ( { initial_minimum_balance = Currency.Balance.of_mina_int_exn 8 - ; cliff_time = Mina_numbers.Global_slot.max_value + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.max_value ; cliff_amount = Currency.Amount.max_int - ; vesting_period = Mina_numbers.Global_slot.of_int 2 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 2 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 1_000 } @@ -187,9 +189,10 @@ module Make (Inputs : Intf.Test.Inputs_intf) = struct Zkapp_basic.Set_or_keep.Set ( { initial_minimum_balance = Currency.Balance.of_mina_int_exn 100 - ; cliff_time = Mina_numbers.Global_slot.of_int 0 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 0 ; cliff_amount = Currency.Amount.of_mina_int_exn 0 - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_mina_int_exn 1 } : Account_update.Update.Timing_info.value ) @@ -285,9 +288,9 @@ module Make (Inputs : Intf.Test.Inputs_intf) = struct timing = Zkapp_basic.Set_or_keep.Set { initial_minimum_balance = Currency.Balance.of_mina_int_exn 9 - ; cliff_time = Mina_numbers.Global_slot.of_int 4000 + ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 4000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 100_000 - ; vesting_period = Mina_numbers.Global_slot.of_int 8 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 8 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 2_000 } } @@ -471,7 +474,9 @@ module Make (Inputs : Intf.Test.Inputs_intf) = struct let open Mina_base in let fee = Currency.Fee.of_mina_int_exn fee_int in let amount = Currency.Amount.of_mina_int_exn amount_int in - let global_slot = Mina_numbers.Global_slot.of_int after_balance_int in + let global_slot = + Mina_numbers.Global_slot_since_genesis.of_int after_balance_int + in let nonce = Account.Nonce.zero in let memo = Signed_command_memo.create_from_string_exn "transfer, 3rd timed account" @@ -500,7 +505,7 @@ module Make (Inputs : Intf.Test.Inputs_intf) = struct Check Zkapp_precondition.Closed_interval. { lower = global_slot - ; upper = Mina_numbers.Global_slot.max_value + ; upper = Mina_numbers.Global_slot_since_genesis.max_value } } } diff --git a/src/app/zkapp_test_transaction/lib/commands.ml b/src/app/zkapp_test_transaction/lib/commands.ml index 3be459caae5..c8ad82e3e73 100644 --- a/src/app/zkapp_test_transaction/lib/commands.ml +++ b/src/app/zkapp_test_transaction/lib/commands.ml @@ -95,7 +95,7 @@ let gen_proof ?(zkapp_account = None) (zkapp_command : Zkapp_command.t) = let global_slot = Mina_state.Protocol_state.Body.consensus_state state_body |> Consensus.Data.Consensus_state.global_slot_since_genesis - |> Mina_numbers.Global_slot.succ + |> Mina_numbers.Global_slot_since_genesis.succ in let state_body_hash = Mina_state.Protocol_state.Body.hash state_body in let pending_coinbase_init_stack = Pending_coinbase.Stack.empty in @@ -198,7 +198,7 @@ let generate_zkapp_txn (keypair : Signature_lib.Keypair.t) (ledger : Ledger.t) let global_slot = Mina_state.Protocol_state.Body.consensus_state state_body |> Consensus.Data.Consensus_state.global_slot_since_genesis - |> Mina_numbers.Global_slot.succ + |> Mina_numbers.Global_slot_since_genesis.succ in let state_body_hash = Mina_state.Protocol_state.Body.hash state_body in let pending_coinbase_init_stack = Pending_coinbase.Stack.empty in diff --git a/src/lib/block_producer/block_producer.ml b/src/lib/block_producer/block_producer.ml index 2b8568d9c0e..afc79d1d3a0 100644 --- a/src/lib/block_producer/block_producer.ml +++ b/src/lib/block_producer/block_producer.ml @@ -530,7 +530,10 @@ let retry ?(max = 3) ~logger ~error_message f = go 0 module Vrf_evaluation_state = struct - type status = At of Mina_numbers.Global_slot.t | Start | Completed + type status = + | At of Mina_numbers.Global_slot_since_genesis.t + | Start + | Completed type t = { queue : Consensus.Data.Slot_won.t Queue.t @@ -582,7 +585,8 @@ module Vrf_evaluation_state = struct [ ( "slots" , `List (List.map vrf_result.slots_won ~f:(fun s -> - Mina_numbers.Global_slot.to_yojson s.global_slot ) ) ) + Mina_numbers.Global_slot_since_genesis.to_yojson + s.global_slot ) ) ) ] let update_epoch_data ~vrf_evaluator ~logger ~epoch_data_for_vrf t = @@ -678,7 +682,8 @@ let run ~context:(module Context : CONTEXT) ~vrf_evaluator ~prover ~verifier .global_slot_since_genesis block_data in if - Mina_numbers.Global_slot.equal crumb_global_slot_since_genesis + Mina_numbers.Global_slot_since_genesis.equal + crumb_global_slot_since_genesis block_global_slot_since_genesis then (* We received a block for this slot over the network before @@ -1053,7 +1058,8 @@ let run ~context:(module Context : CONTEXT) ~vrf_evaluator ~prover ~verifier let%bind () = (*Poll once every slot if the evaluation for the epoch is not completed or the evaluation is completed*) if - Mina_numbers.Global_slot.(new_global_slot > slot) + Mina_numbers.Global_slot_since_genesis.( + new_global_slot > slot) && not (Vrf_evaluation_state.finished vrf_evaluation_state) then @@ -1116,7 +1122,9 @@ let run ~context:(module Context : CONTEXT) ~vrf_evaluator ~prover ~verifier [%log info] "Block producer won slot $slot in epoch $epoch" ~metadata: - [ ("slot", Mina_numbers.Global_slot.to_yojson slot) + [ ( "slot" + , Mina_numbers.Global_slot_since_genesis.( + to_yojson @@ of_uint32 slot) ) ; ("epoch", Mina_numbers.Length.to_yojson epoch) ] ; let now = Block_time.now time_controller in @@ -1132,7 +1140,7 @@ let run ~context:(module Context : CONTEXT) ~vrf_evaluator ~prover ~verifier ~coinbase_receiver:!coinbase_receiver in if - Mina_numbers.Global_slot.( + Mina_numbers.Global_slot_since_genesis.( curr_global_slot = winning_global_slot) then ( (*produce now*) @@ -1150,8 +1158,8 @@ let run ~context:(module Context : CONTEXT) ~vrf_evaluator ~prover ~verifier : (_, _) Interruptible.t ) ) else match - Mina_numbers.Global_slot.sub winning_global_slot - curr_global_slot + Mina_numbers.Global_slot_since_genesis.diff + winning_global_slot curr_global_slot with | None -> [%log warn] @@ -1160,11 +1168,11 @@ let run ~context:(module Context : CONTEXT) ~vrf_evaluator ~prover ~verifier global slot is $curr_slot" ~metadata: [ ( "slot_won" - , Mina_numbers.Global_slot.to_yojson - winning_global_slot ) + , Mina_numbers.Global_slot_since_genesis + .to_yojson winning_global_slot ) ; ( "curr_slot" - , Mina_numbers.Global_slot.to_yojson - curr_global_slot ) + , Mina_numbers.Global_slot_since_genesis + .to_yojson curr_global_slot ) ] ; return (check_next_block_timing new_global_slot i' ()) @@ -1172,7 +1180,7 @@ let run ~context:(module Context : CONTEXT) ~vrf_evaluator ~prover ~verifier [%log info] "Producing a block in $slots slots" ~metadata: [ ( "slots" - , Mina_numbers.Global_slot.to_yojson + , Mina_numbers.Global_slot_span.to_yojson slot_diff ) ] ; let time = @@ -1228,7 +1236,7 @@ let run ~context:(module Context : CONTEXT) ~vrf_evaluator ~prover ~verifier Deferred.return () ) ) ) in let start () = - check_next_block_timing Mina_numbers.Global_slot.zero + check_next_block_timing Mina_numbers.Global_slot_since_genesis.zero Mina_numbers.Length.zero () in let genesis_state_timestamp = diff --git a/src/lib/block_producer/dune b/src/lib/block_producer/dune index 417d92403c8..a61371d96d4 100644 --- a/src/lib/block_producer/dune +++ b/src/lib/block_producer/dune @@ -10,6 +10,7 @@ core_kernel core async + integers ;; local libraries mina_wire_types mina_metrics diff --git a/src/lib/cli_lib/arg_type.ml b/src/lib/cli_lib/arg_type.ml index c2c7f2a5414..9558d3ac036 100644 --- a/src/lib/cli_lib/arg_type.ml +++ b/src/lib/cli_lib/arg_type.ml @@ -73,7 +73,8 @@ let peer : Host_and_port.t Command.Arg_type.t = Command.Arg_type.create (fun s -> Host_and_port.of_string s) let global_slot = - Command.Arg_type.map Command.Param.int ~f:Mina_numbers.Global_slot.of_int + Command.Arg_type.map Command.Param.int + ~f:Mina_numbers.Global_slot_since_genesis.of_int let txn_fee = Command.Arg_type.map Command.Param.string ~f:Currency.Fee.of_mina_string_exn diff --git a/src/lib/cli_lib/commands.ml b/src/lib/cli_lib/commands.ml index df741bd7732..695e445114a 100644 --- a/src/lib/cli_lib/commands.ml +++ b/src/lib/cli_lib/commands.ml @@ -204,7 +204,8 @@ module Vrf = struct let open Consensus_vrf.Layout in let evaluation = Evaluation.of_message_and_sk ~constraint_constants - { global_slot = Mina_numbers.Global_slot.of_int global_slot + { global_slot = + Mina_numbers.Global_slot_since_genesis.of_int global_slot ; epoch_seed = Mina_base.Epoch_seed.of_base58_check_exn epoch_seed ; delegator_index diff --git a/src/lib/cli_lib/flag.mli b/src/lib/cli_lib/flag.mli index 7f231e979f8..977e6a3f284 100644 --- a/src/lib/cli_lib/flag.mli +++ b/src/lib/cli_lib/flag.mli @@ -93,7 +93,8 @@ module Signed_command : sig val fee : Currency.Fee.t option Command.Param.t - val valid_until : Mina_numbers.Global_slot.t option Command.Param.t + val valid_until : + Mina_numbers.Global_slot_since_genesis.t option Command.Param.t val nonce : Mina_numbers.Account_nonce.t option Command.Param.t diff --git a/src/lib/consensus/constants.ml b/src/lib/consensus/constants.ml index c78b408d743..c2a6f029825 100644 --- a/src/lib/consensus/constants.ml +++ b/src/lib/consensus/constants.ml @@ -238,7 +238,9 @@ let create' (type a b c) slots | Some f -> M.( + ) - (M.constant (Unsigned.UInt32.to_int f.previous_global_slot)) + (M.constant + (Mina_numbers.Global_slot_since_genesis.to_int + f.previous_global_slot ) ) slots in let res : (a, b, c) Poly.t = diff --git a/src/lib/consensus/global_slot.ml b/src/lib/consensus/global_slot.ml index cdfd00a34ee..c0276eeebbf 100644 --- a/src/lib/consensus/global_slot.ml +++ b/src/lib/consensus/global_slot.ml @@ -12,7 +12,7 @@ module Make_sig (A : Wire_types.Types.S) = struct end module Make_str (A : Wire_types.Concrete) = struct - module T = Mina_numbers.Global_slot + module T = Mina_numbers.Global_slot_since_genesis module Length = Mina_numbers.Length module Poly = struct @@ -59,7 +59,8 @@ module Make_str (A : Wire_types.Concrete) = struct let create ~(constants : Constants.t) ~(epoch : Epoch.t) ~(slot : Slot.t) : t = - { slot_number = UInt32.Infix.(slot + (constants.slots_per_epoch * epoch)) + { slot_number = + T.of_uint32 UInt32.Infix.(slot + (constants.slots_per_epoch * epoch)) ; slots_per_epoch = constants.slots_per_epoch } @@ -73,18 +74,28 @@ module Make_str (A : Wire_types.Concrete) = struct let slots_per_epoch { Poly.slots_per_epoch; _ } = slots_per_epoch - let epoch (t : t) = UInt32.Infix.(t.slot_number / t.slots_per_epoch) + let epoch (t : t) = + let slot_number_u32 = T.to_uint32 t.slot_number in + UInt32.Infix.(slot_number_u32 / t.slots_per_epoch) - let slot (t : t) = UInt32.Infix.(t.slot_number mod t.slots_per_epoch) + let slot (t : t) = + let slot_number_u32 = T.to_uint32 t.slot_number in + UInt32.Infix.(slot_number_u32 mod t.slots_per_epoch) let to_epoch_and_slot t = (epoch t, slot t) let ( + ) (x : t) n : t = - { x with slot_number = T.add x.slot_number (T.of_int n) } + { x with + slot_number = T.add x.slot_number (Mina_numbers.Global_slot_span.of_int n) + } + + let ( < ) (t : t) (t' : t) = T.compare t.slot_number t'.slot_number < 0 - let ( < ) (t : t) (t' : t) = UInt32.compare t.slot_number t'.slot_number < 0 + let ( - ) (t : t) (t' : t) = + T.sub t.slot_number + (Mina_numbers.Global_slot_span.of_uint32 @@ T.to_uint32 t'.slot_number) - let ( - ) (t : t) (t' : t) = T.sub t.slot_number t'.slot_number + let diff_slots (t1 : t) (t2 : t) = T.diff t1.slot_number t2.slot_number let max (t1 : t) (t2 : t) = if t1 < t2 then t2 else t1 diff --git a/src/lib/consensus/global_slot_intf.ml b/src/lib/consensus/global_slot_intf.ml index 8ba1a06f7cd..b52aa41a3ab 100644 --- a/src/lib/consensus/global_slot_intf.ml +++ b/src/lib/consensus/global_slot_intf.ml @@ -17,7 +17,7 @@ module type Full = sig module Stable : sig module V1 : sig type t = - ( Mina_numbers.Global_slot.Stable.V1.t + ( Mina_numbers.Global_slot_since_genesis.Stable.V1.t , Mina_numbers.Length.Stable.V1.t ) Poly.Stable.V1.t [@@deriving compare, equal, sexp, hash, yojson] @@ -26,16 +26,19 @@ module type Full = sig val to_input : t -> Snark_params.Tick.Field.t Random_oracle.Input.Chunked.t - val of_slot_number : constants:Constants.t -> Mina_numbers.Global_slot.t -> t + val of_slot_number : + constants:Constants.t -> Mina_numbers.Global_slot_since_genesis.t -> t val gen : constants:Constants.t -> t Quickcheck.Generator.t val ( + ) : t -> int -> t - val ( - ) : t -> t -> Mina_numbers.Global_slot.t option + val ( - ) : t -> t -> Mina_numbers.Global_slot_since_genesis.t option val ( < ) : t -> t -> bool + val diff_slots : t -> t -> Mina_numbers.Global_slot_span.t option + val max : t -> t -> t val succ : t -> t @@ -70,19 +73,24 @@ module type Full = sig open Snark_params.Tick type t = - (Mina_numbers.Global_slot.Checked.t, Mina_numbers.Length.Checked.t) Poly.t + ( Mina_numbers.Global_slot_since_genesis.Checked.t + , Mina_numbers.Length.Checked.t ) + Poly.t val ( < ) : t -> t -> Boolean.var Checked.t val of_slot_number : - constants:Constants.var -> Mina_numbers.Global_slot.Checked.t -> t + constants:Constants.var + -> Mina_numbers.Global_slot_since_genesis.Checked.t + -> t val to_input : t -> Field.Var.t Random_oracle.Input.Chunked.t val to_epoch_and_slot : t -> (Epoch.Checked.t * Slot.Checked.t) Checked.t (** [sub ~m x y] computes [x - y] and ensures that [0 <= x - y] *) - val sub : t -> t -> Mina_numbers.Global_slot.Checked.t Checked.t + val sub : + t -> t -> Mina_numbers.Global_slot_since_genesis.Checked.t Checked.t end val typ : (Checked.t, t) Typ.t @@ -94,6 +102,6 @@ module type Full = sig val slots_per_epoch : (_, 'b) Poly.t -> 'b module For_tests : sig - val of_global_slot : t -> Mina_numbers.Global_slot.t -> t + val of_global_slot : t -> Mina_numbers.Global_slot_since_genesis.t -> t end end diff --git a/src/lib/consensus/global_sub_window.ml b/src/lib/consensus/global_sub_window.ml index d4079e68568..61231236c27 100644 --- a/src/lib/consensus/global_sub_window.ml +++ b/src/lib/consensus/global_sub_window.ml @@ -7,8 +7,12 @@ let succ = UInt32.succ let equal a b = UInt32.compare a b = 0 -let of_global_slot ~(constants : Constants.t) (s : Global_slot.t) : t = - UInt32.Infix.(Global_slot.slot_number s / constants.slots_per_sub_window) +let of_global_slot ~(constants : Constants.t) (slot : Global_slot.t) : t = + let slot_number_u32 = + Mina_numbers.Global_slot_since_genesis.to_uint32 + @@ Global_slot.slot_number slot + in + UInt32.Infix.(slot_number_u32 / constants.slots_per_sub_window) let sub_window ~(constants : Constants.t) t = UInt32.rem t constants.sub_windows_per_window @@ -22,7 +26,7 @@ let sub a b = UInt32.sub a b let constant a = a module Checked = struct - module T = Mina_numbers.Global_slot + module T = Mina_numbers.Global_slot_since_genesis type t = T.Checked.t diff --git a/src/lib/consensus/intf.ml b/src/lib/consensus/intf.ml index 518166352e5..6b0bdc03abd 100644 --- a/src/lib/consensus/intf.ml +++ b/src/lib/consensus/intf.ml @@ -373,7 +373,7 @@ module type S = sig module Vrf : sig val check : context:(module CONTEXT) - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> seed:Mina_base.Epoch_seed.t -> producer_private_key:Signature_lib.Private_key.t -> producer_public_key:Signature_lib.Public_key.Compressed.t @@ -465,10 +465,10 @@ module type S = sig val end_time : constants:Constants.t -> t -> Block_time.t - val to_global_slot : t -> Mina_numbers.Global_slot.t + val to_global_slot : t -> Mina_numbers.Global_slot_since_genesis.t val of_global_slot : - constants:Constants.t -> Mina_numbers.Global_slot.t -> t + constants:Constants.t -> Mina_numbers.Global_slot_since_genesis.t -> t val zero : constants:Constants.t -> t end @@ -484,7 +484,7 @@ module type S = sig module For_tests : sig val with_global_slot_since_genesis : - t -> Mina_numbers.Global_slot.t -> t + t -> Mina_numbers.Global_slot_since_genesis.t -> t end end @@ -546,7 +546,7 @@ module type S = sig val coinbase_receiver_var : var -> Public_key.Compressed.var - val curr_global_slot_var : var -> Global_slot.Checked.t + val curr_global_slot_var : var -> Global_slot_since_genesis.Checked.t val blockchain_length_var : var -> Length.Checked.t @@ -568,14 +568,15 @@ module type S = sig val epoch_count : Value.t -> Length.t - val curr_global_slot : Value.t -> Mina_numbers.Global_slot.t + val curr_global_slot : Value.t -> Mina_numbers.Global_slot_since_genesis.t val total_currency : Value.t -> Amount.t - val global_slot_since_genesis : Value.t -> Mina_numbers.Global_slot.t + val global_slot_since_genesis : + Value.t -> Mina_numbers.Global_slot_since_genesis.t val global_slot_since_genesis_var : - var -> Mina_numbers.Global_slot.Checked.t + var -> Mina_numbers.Global_slot_since_genesis.Checked.t val is_genesis_state : Value.t -> bool @@ -591,11 +592,12 @@ module type S = sig val epoch_ledger : t -> Mina_ledger.Sparse_ledger.t - val global_slot : t -> Mina_numbers.Global_slot.t + val global_slot : t -> Mina_numbers.Global_slot_since_genesis.t val prover_state : t -> Prover_state.t - val global_slot_since_genesis : t -> Mina_numbers.Global_slot.t + val global_slot_since_genesis : + t -> Mina_numbers.Global_slot_since_genesis.t val coinbase_receiver : t -> Public_key.Compressed.t end @@ -608,8 +610,9 @@ module type S = sig { epoch_ledger : Mina_base.Epoch_ledger.Value.Stable.V1.t ; epoch_seed : Mina_base.Epoch_seed.Stable.V1.t ; epoch : Mina_numbers.Length.Stable.V1.t - ; global_slot : Mina_numbers.Global_slot.Stable.V1.t - ; global_slot_since_genesis : Mina_numbers.Global_slot.Stable.V1.t + ; global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t + ; global_slot_since_genesis : + Mina_numbers.Global_slot_since_genesis.Stable.V1.t ; delegatee_table : Mina_base.Account.Stable.V2.t Mina_base.Account.Index.Stable.V1.Table.t @@ -631,8 +634,9 @@ module type S = sig Signature_lib.Public_key.Compressed.Stable.V1.t * Mina_base.Account.Index.Stable.V1.t ; producer : Signature_lib.Keypair.Stable.V1.t - ; global_slot : Mina_numbers.Global_slot.Stable.V1.t - ; global_slot_since_genesis : Mina_numbers.Global_slot.Stable.V1.t + ; global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t + ; global_slot_since_genesis : + Mina_numbers.Global_slot_since_genesis.Stable.V1.t ; vrf_result : Consensus_vrf.Output_hash.Stable.V1.t } [@@deriving sexp] diff --git a/src/lib/consensus/proof_of_stake.ml b/src/lib/consensus/proof_of_stake.ml index 433d13da1d0..8d354e8a2ca 100644 --- a/src/lib/consensus/proof_of_stake.ml +++ b/src/lib/consensus/proof_of_stake.ml @@ -173,8 +173,8 @@ module Make_str (A : Wire_types.Concrete) = struct module Block_data = struct type t = { stake_proof : Stake_proof.t - ; global_slot : Mina_numbers.Global_slot.t - ; global_slot_since_genesis : Mina_numbers.Global_slot.t + ; global_slot : Mina_numbers.Global_slot_since_genesis.t + ; global_slot_since_genesis : Mina_numbers.Global_slot_since_genesis.t ; vrf_result : Random_oracle.Digest.t } @@ -201,8 +201,9 @@ module Make_str (A : Wire_types.Concrete) = struct { epoch_ledger : Mina_base.Epoch_ledger.Value.Stable.V1.t ; epoch_seed : Mina_base.Epoch_seed.Stable.V1.t ; epoch : Mina_numbers.Length.Stable.V1.t - ; global_slot : Mina_numbers.Global_slot.Stable.V1.t - ; global_slot_since_genesis : Mina_numbers.Global_slot.Stable.V1.t + ; global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t + ; global_slot_since_genesis : + Mina_numbers.Global_slot_since_genesis.Stable.V1.t ; delegatee_table : Mina_base.Account.Stable.V2.t Mina_base.Account.Index.Stable.V1.Table.t @@ -218,8 +219,8 @@ module Make_str (A : Wire_types.Concrete) = struct { epoch_ledger : Mina_base.Epoch_ledger.Value.t ; epoch_seed : Mina_base.Epoch_seed.t ; epoch : Mina_numbers.Length.t - ; global_slot : Mina_numbers.Global_slot.t - ; global_slot_since_genesis : Mina_numbers.Global_slot.t + ; global_slot : Mina_numbers.Global_slot_since_genesis.t + ; global_slot_since_genesis : Mina_numbers.Global_slot_since_genesis.t ; delegatee_table : Mina_base.Account.t Mina_base.Account.Index.Table.t Public_key.Compressed.Table.t @@ -238,8 +239,9 @@ module Make_str (A : Wire_types.Concrete) = struct Public_key.Compressed.Stable.V1.t * Mina_base.Account.Index.Stable.V1.t ; producer : Keypair.Stable.V1.t - ; global_slot : Mina_numbers.Global_slot.Stable.V1.t - ; global_slot_since_genesis : Mina_numbers.Global_slot.Stable.V1.t + ; global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t + ; global_slot_since_genesis : + Mina_numbers.Global_slot_since_genesis.Stable.V1.t ; vrf_result : Consensus_vrf.Output_hash.Stable.V1.t } [@@deriving sexp] @@ -251,8 +253,8 @@ module Make_str (A : Wire_types.Concrete) = struct type t = Stable.Latest.t = { delegator : Public_key.Compressed.t * Mina_base.Account.Index.t ; producer : Keypair.t - ; global_slot : Mina_numbers.Global_slot.t - ; global_slot_since_genesis : Mina_numbers.Global_slot.t + ; global_slot : Mina_numbers.Global_slot_since_genesis.t + ; global_slot_since_genesis : Mina_numbers.Global_slot_since_genesis.t ; vrf_result : Consensus_vrf.Output_hash.t } [@@deriving sexp] @@ -1182,8 +1184,8 @@ module Make_str (A : Wire_types.Concrete) = struct end module Consensus_transition = struct - include Mina_numbers.Global_slot - module Value = Mina_numbers.Global_slot + include Mina_numbers.Global_slot_since_genesis + module Value = Mina_numbers.Global_slot_since_genesis type var = Checked.t @@ -1215,7 +1217,9 @@ module Make_str (A : Wire_types.Concrete) = struct (* subtract epoch, slot components of gc_width *) Global_slot.diff ~constants t (gc_width_epoch, gc_width_slot) - let to_uint32 t = Global_slot.slot_number t + let to_uint32 t = + Global_slot.slot_number t + |> Mina_numbers.Global_slot_since_genesis.to_uint32 let to_global_slot = slot_number @@ -1328,7 +1332,8 @@ module Make_str (A : Wire_types.Concrete) = struct if same_sub_window || UInt32.compare - (Global_slot.slot_number next_global_slot) + ( Mina_numbers.Global_slot_since_genesis.to_uint32 + @@ Global_slot.slot_number next_global_slot ) constants.grace_period_end < 0 then prev_min_window_density @@ -1426,7 +1431,8 @@ module Make_str (A : Wire_types.Concrete) = struct let%bind in_grace_period = Global_slot.Checked.( < ) next_global_slot (Global_slot.Checked.of_slot_number ~constants - (Mina_numbers.Global_slot.Checked.Unsafe.of_field + (Mina_numbers.Global_slot_since_genesis.Checked.Unsafe + .of_field (Length.Checked.to_field constants.grace_period_end) ) ) in if_ @@ -1493,7 +1499,8 @@ module Make_str (A : Wire_types.Concrete) = struct if sub_window_diff = 0 || UInt32.compare - (Global_slot.slot_number next_global_slot) + ( Mina_numbers.Global_slot_since_genesis.to_uint32 + @@ Global_slot.slot_number next_global_slot ) constants.grace_period_end < 0 then prev_min_window_density @@ -1551,7 +1558,7 @@ module Make_str (A : Wire_types.Concrete) = struct (Global_slot.t * Global_slot.t list) Quickcheck.Generator.t = let open Quickcheck.Generator in let open Quickcheck.Generator.Let_syntax in - let module GS = Mina_numbers.Global_slot in + let module GS = Mina_numbers.Global_slot_since_genesis in let%bind prev_global_slot = small_positive_int in let%bind slot_diffs = Core.List.gen_with_length num_global_slots_to_test gen_slot_diff @@ -1787,7 +1794,7 @@ module Make_str (A : Wire_types.Concrete) = struct , Vrf.Output.Truncated.Stable.V1.t , Amount.Stable.V1.t , Global_slot.Stable.V1.t - , Mina_numbers.Global_slot.Stable.V1.t + , Mina_numbers.Global_slot_since_genesis.Stable.V1.t , Epoch_data.Staking_value_versioned.Value.Stable.V1.t , Epoch_data.Next_value_versioned.Value.Stable.V1.t , bool @@ -1801,7 +1808,8 @@ module Make_str (A : Wire_types.Concrete) = struct module For_tests = struct let with_global_slot_since_genesis (state : t) slot_number = - let global_slot_since_genesis : Mina_numbers.Global_slot.t = + let global_slot_since_genesis : + Mina_numbers.Global_slot_since_genesis.t = slot_number in { state with global_slot_since_genesis } @@ -1815,7 +1823,7 @@ module Make_str (A : Wire_types.Concrete) = struct , Vrf.Output.Truncated.var , Amount.var , Global_slot.Checked.t - , Mina_numbers.Global_slot.Checked.t + , Mina_numbers.Global_slot_since_genesis.Checked.t , Epoch_data.var , Epoch_data.var , Boolean.var @@ -1835,7 +1843,7 @@ module Make_str (A : Wire_types.Concrete) = struct ; Vrf.Output.Truncated.typ ; Amount.typ ; Global_slot.typ - ; Mina_numbers.Global_slot.typ + ; Mina_numbers.Global_slot_since_genesis.typ ; Epoch_data.Staking.typ ; Epoch_data.Next.typ ; Boolean.typ @@ -1875,7 +1883,8 @@ module Make_str (A : Wire_types.Concrete) = struct ; Vrf.Output.Truncated.to_input last_vrf_output ; Amount.to_input total_currency ; Global_slot.to_input curr_global_slot - ; Mina_numbers.Global_slot.to_input global_slot_since_genesis + ; Mina_numbers.Global_slot_since_genesis.to_input + global_slot_since_genesis ; packed ( Mina_base.Util.field_of_bool has_ancestor_in_same_checkpoint_window @@ -1916,7 +1925,8 @@ module Make_str (A : Wire_types.Concrete) = struct ; Vrf.Output.Truncated.var_to_input last_vrf_output ; Amount.var_to_input total_currency ; Global_slot.Checked.to_input curr_global_slot - ; Mina_numbers.Global_slot.Checked.to_input global_slot_since_genesis + ; Mina_numbers.Global_slot_since_genesis.Checked.to_input + global_slot_since_genesis ; packed ((has_ancestor_in_same_checkpoint_window :> Tick.Field.Var.t), 1) ; packed ((supercharge_coinbase :> Tick.Field.Var.t), 1) @@ -1931,7 +1941,8 @@ module Make_str (A : Wire_types.Concrete) = struct let checkpoint_window ~(constants : Constants.t) (slot : Global_slot.t) = UInt32.Infix.( - Global_slot.slot_number slot + ( Mina_numbers.Global_slot_since_genesis.to_uint32 + @@ Global_slot.slot_number slot ) / constants.checkpoint_window_size_in_slots) let same_checkpoint_window_unchecked ~constants slot1 slot2 = @@ -1963,8 +1974,8 @@ module Make_str (A : Wire_types.Concrete) = struct Global_slot.to_epoch_and_slot next_global_slot in let%bind slot_diff = - Global_slot.( - next_global_slot - previous_consensus_state.curr_global_slot) + Global_slot.diff_slots next_global_slot + previous_consensus_state.curr_global_slot |> Option.value_map ~default: (Or_error.errorf @@ -2024,7 +2035,7 @@ module Make_str (A : Wire_types.Concrete) = struct ; total_currency ; curr_global_slot = next_global_slot ; global_slot_since_genesis = - Mina_numbers.Global_slot.add + Mina_numbers.Global_slot_since_genesis.add previous_consensus_state.global_slot_since_genesis slot_diff ; staking_epoch_data ; next_epoch_data @@ -2041,7 +2052,7 @@ module Make_str (A : Wire_types.Concrete) = struct let same_checkpoint_window ~(constants : Constants.var) ~prev:(slot1 : Global_slot.Checked.t) ~next:(slot2 : Global_slot.Checked.t) = - let module Slot = Mina_numbers.Global_slot in + let module Slot = Mina_numbers.Global_slot_since_genesis in let slot1 : Slot.Checked.t = Global_slot.slot_number slot1 in let checkpoint_window_size_in_slots = constants.checkpoint_window_size_in_slots @@ -2073,7 +2084,7 @@ module Make_str (A : Wire_types.Concrete) = struct let blockchain_length, global_slot_since_genesis = match constraint_constants.fork with | None -> - (Length.zero, Mina_numbers.Global_slot.zero) + (Length.zero, Mina_numbers.Global_slot_since_genesis.zero) | Some { previous_length; previous_global_slot; _ } -> (*Note: global_slot_since_genesis at fork point is the same as global_slot_since_genesis in the new genesis. This value is used to check transaction validity and existence of locked tokens. For reviewers, should this be incremented by 1 because it's technically a new block? we don't really know how many slots passed since the fork point*) @@ -2158,11 +2169,11 @@ module Make_str (A : Wire_types.Concrete) = struct (* Check that both epoch and slot are zero. *) let is_genesis_state (t : Value.t) = - Mina_numbers.Global_slot.( + Mina_numbers.Global_slot_since_genesis.( equal zero (Global_slot.slot_number t.curr_global_slot)) let is_genesis (global_slot : Global_slot.Checked.t) = - let open Mina_numbers.Global_slot in + let open Mina_numbers.Global_slot_since_genesis in Checked.equal (Checked.constant zero) (Global_slot.slot_number global_slot) @@ -2217,7 +2228,7 @@ module Make_str (A : Wire_types.Concrete) = struct Global_slot.Checked.to_epoch_and_slot prev_global_slot in let%bind global_slot_since_genesis = - Mina_numbers.Global_slot.Checked.add + Mina_numbers.Global_slot_since_genesis.Checked.add previous_state.global_slot_since_genesis slot_diff in let%bind epoch_increased = Epoch.Checked.(prev_epoch < next_epoch) in @@ -2366,7 +2377,8 @@ module Make_str (A : Wire_types.Concrete) = struct ; curr_epoch = Segment_id.to_int epoch ; curr_slot = Segment_id.to_int slot ; global_slot_since_genesis = - Mina_numbers.Global_slot.to_int t.global_slot_since_genesis + Mina_numbers.Global_slot_since_genesis.to_int + t.global_slot_since_genesis ; total_currency = Amount.to_nanomina_int t.total_currency } @@ -2427,12 +2439,17 @@ module Make_str (A : Wire_types.Concrete) = struct if increase_epoch_count then Length.succ t.epoch_count else t.epoch_count in + let global_slot_since_genesis_to_span global_slot = + Mina_numbers.Global_slot_since_genesis.to_uint32 global_slot + |> Mina_numbers.Global_slot_span.of_uint32 + in let global_slot_since_genesis = - Mina_numbers.Global_slot.( + Mina_numbers.Global_slot_since_genesis.( add - ( sub t.global_slot_since_genesis (curr_global_slot t) + ( sub t.global_slot_since_genesis + (global_slot_since_genesis_to_span (curr_global_slot t)) |> Option.value_exn ) - new_global_slot) + (global_slot_since_genesis_to_span new_global_slot)) in { t with epoch_count = new_epoch_count @@ -2506,7 +2523,8 @@ module Make_str (A : Wire_types.Concrete) = struct ~doc:"Slot since genesis (across all hard-forks)" ~typ: ( non_null - @@ Mina_numbers_unix.Graphql_scalars.GlobalSlot.typ () ) + @@ Mina_numbers_unix.Graphql_scalars.GlobalSlotSinceGenesis + .typ () ) ~args:Arg.[] ~resolve:(fun _ { Poly.global_slot_since_genesis; _ } -> global_slot_since_genesis ) @@ -3123,7 +3141,7 @@ module Make_str (A : Wire_types.Concrete) = struct let global_slot_since_genesis = let slot_diff = match - Mina_numbers.Global_slot.sub global_slot + Mina_numbers.Global_slot_since_genesis.diff global_slot (Consensus_state.curr_global_slot state) with | None -> @@ -3131,7 +3149,10 @@ module Make_str (A : Wire_types.Concrete) = struct "Checking slot-winner for slot $slot which is older than the \ slot in the latest consensus state $state" ~metadata: - [ ("slot", Mina_numbers.Global_slot.to_yojson slot) + [ ( "slot" + , Mina_numbers.Global_slot_since_genesis.to_yojson + (Mina_numbers.Global_slot_since_genesis.of_uint32 slot) + ) ; ("state", Consensus_state.Value.to_yojson state) ] ; failwith @@ -3141,7 +3162,7 @@ module Make_str (A : Wire_types.Concrete) = struct | Some diff -> diff in - Mina_numbers.Global_slot.add + Mina_numbers.Global_slot_since_genesis.add (Consensus_state.global_slot_since_genesis state) slot_diff in @@ -3366,7 +3387,7 @@ module Make_str (A : Wire_types.Concrete) = struct global_slot = if not - (Mina_numbers.Global_slot.equal + (Mina_numbers.Global_slot_since_genesis.equal (Global_slot.slot_number global_slot) block_data.global_slot ) then @@ -3487,8 +3508,9 @@ module Make_str (A : Wire_types.Concrete) = struct Global_slot.(prev.curr_global_slot + slot_advancement) in let global_slot_since_genesis = - Mina_numbers.Global_slot.( - add prev.global_slot_since_genesis (of_int slot_advancement)) + Mina_numbers.Global_slot_since_genesis.add + prev.global_slot_since_genesis + (Mina_numbers.Global_slot_span.of_int slot_advancement) in let curr_epoch, curr_slot = Global_slot.to_epoch_and_slot curr_global_slot @@ -3592,7 +3614,7 @@ module Make_str (A : Wire_types.Concrete) = struct () | Some fork -> assert ( - Mina_numbers.Global_slot.( + Mina_numbers.Global_slot_since_genesis.( equal fork.previous_global_slot previous_consensus_state.global_slot_since_genesis) ) ; assert ( @@ -3668,11 +3690,11 @@ module Make_str (A : Wire_types.Concrete) = struct | Some fork -> let slot_diff = Option.value_exn - Global_slot.( - global_slot - previous_consensus_state.curr_global_slot) + (Global_slot.diff_slots global_slot + previous_consensus_state.curr_global_slot ) in assert ( - Mina_numbers.Global_slot.( + Mina_numbers.Global_slot_since_genesis.( equal (add fork.previous_global_slot slot_diff) next_consensus_state.global_slot_since_genesis) ) ; @@ -3782,7 +3804,8 @@ module Make_str (A : Wire_types.Concrete) = struct "3NL3bc213VQEFx6XTLbc3HxHqHH9ANbhHxRxSnBcRzXcKgeFA6TY" ) ) ; previous_length = Mina_numbers.Length.of_int 100 - ; previous_global_slot = Mina_numbers.Global_slot.of_int 200 + ; previous_global_slot = + Mina_numbers.Global_slot_since_genesis.of_int 200 } in { constraint_constants with fork = fork_constants } @@ -3830,7 +3853,7 @@ module Make_str (A : Wire_types.Concrete) = struct let expected = stake_fraction *. 0.75 in let samples = 1000 in let check i = - let global_slot = UInt32.of_int i in + let global_slot = Mina_numbers.Global_slot_since_genesis.of_int i in let%map result = Interruptible.force (Vrf.check diff --git a/src/lib/consensus/proof_of_stake_fuzzer.ml b/src/lib/consensus/proof_of_stake_fuzzer.ml index c02961b53b0..322752f0787 100644 --- a/src/lib/consensus/proof_of_stake_fuzzer.ml +++ b/src/lib/consensus/proof_of_stake_fuzzer.ml @@ -30,8 +30,8 @@ module Vrf_distribution = struct open Staker type t = - { start_slot : Global_slot.t - ; term_slot : Global_slot.t + { start_slot : Global_slot_since_genesis.t + ; term_slot : Global_slot_since_genesis.t ; proposal_table : Block_data.t Public_key.Compressed.Map.t Int.Table.t } @@ -56,20 +56,23 @@ module Vrf_distribution = struct let open UInt32.Infix in let open Option.Let_syntax in assert ( - Global_slot.epoch @@ Consensus_state.global_slot initial_consensus_state + Global_slot_since_genesis.epoch + @@ Consensus_state.global_slot initial_consensus_state = epoch ) ; let start_slot = - if epoch = zero then Global_slot.zero ~constants + if epoch = zero then Global_slot_since_genesis.zero ~constants else - Global_slot.of_epoch_and_slot ~constants + Global_slot_since_genesis.of_epoch_and_slot ~constants (epoch - of_int 1, of_int 2 * constants.slots_per_epoch) in let term_slot = - Global_slot.of_epoch_and_slot ~constants + Global_slot_since_genesis.of_epoch_and_slot ~constants (epoch, (of_int 2 * constants.slots_per_epoch) - of_int 1) in - let start_time = Global_slot.start_time ~constants start_slot in - let term_time = Global_slot.start_time ~constants term_slot in + let start_time = + Global_slot_since_genesis.start_time ~constants start_slot + in + let term_time = Global_slot_since_genesis.start_time ~constants term_slot in let proposal_table = Int.Table.create () in let record_proposal ~staker ~proposal_data = let _, pk = staker.keypair in @@ -111,15 +114,15 @@ module Vrf_distribution = struct in record_proposal ~staker ~proposal_data ; let increase_epoch_count = - Global_slot.epoch + Global_slot_since_genesis.epoch (Consensus_state.global_slot dummy_consensus_state) - < Global_slot.( + < Global_slot_since_genesis.( epoch (of_slot_number ~constants (Block_data.global_slot proposal_data) )) in let new_global_slot = - Global_slot.of_slot_number ~constants + Global_slot_since_genesis.of_slot_number ~constants (Block_data.global_slot proposal_data) in let next_dummy_consensus_state = @@ -142,14 +145,15 @@ module Vrf_distribution = struct in if (not slot_in_dist_range) || window_expired then acc_proposals else - let slot_number = Global_slot.slot_number slot in + let slot_number = Global_slot_since_genesis.slot_number slot in let slot_proposals = Hashtbl.find dist.proposal_table (UInt32.to_int slot_number) |> Option.map ~f:Map.to_alist |> Option.value ~default:[] in find_potential_proposals (acc_proposals @ slot_proposals) - (window_depth + 1) (Global_slot.succ slot) + (window_depth + 1) + (Global_slot_since_genesis.succ slot) in let rec extend_proposal_chain acc_chain slot = let potential_proposals = find_potential_proposals [] 0 slot in @@ -161,7 +165,7 @@ module Vrf_distribution = struct List.random_element_exn potential_proposals in extend_proposal_chain (proposal :: acc_chain) - (Global_slot.of_slot_number ~constants + (Global_slot_since_genesis.of_slot_number ~constants (UInt32.succ @@ Block_data.global_slot proposal_data) ) in extend_proposal_chain [] dist.start_slot |> List.rev @@ -174,8 +178,8 @@ module Vrf_distribution = struct let all_possible_chains dist ~base = let this_epoch = Consensus_state.epoch base + 1 in - let start_slot = Global_slot.of_epoch_and_slot this_epoch 0 in - let term_slot = Global_slot.of_epoch_and_slot (this_epoch + 1) 0 in + let start_slot = Global_slot_since_genesis.of_epoch_and_slot this_epoch 0 in + let term_slot = Global_slot_since_genesis.of_epoch_and_slot (this_epoch + 1) 0 in let rec check_slot slot pred = if slot >= term_slot then [] @@ -378,11 +382,12 @@ let propose_block_onto_chain ~logger ~keys let consensus_constants = Constants.compiled in let open Deferred.Let_syntax in let proposal_slot = - Global_slot.of_slot_number ~constants:consensus_constants + Global_slot_since_genesis.of_slot_number ~constants:consensus_constants (Block_data.global_slot block_data) in let proposal_time = - Global_slot.start_time ~constants:consensus_constants proposal_slot + Global_slot_since_genesis.start_time ~constants:consensus_constants + proposal_slot in let previous_protocol_state = Header.protocol_state @@ Mina_block.header previous_transition @@ -532,18 +537,18 @@ let main () = (* Core.Printf.printf !"%s\n%!" (String.concat ~sep:":" @@ List.map proposal_chain ~f:(fun (_, block_data) -> - UInt32.to_string @@ Global_slot.slot @@ Block_data.global_slot block_data)); + UInt32.to_string @@ Global_slot_since_genesis.slot @@ Block_data.global_slot block_data)); *) let%bind final_chain = Deferred.List.fold proposal_chain ~init:(base_transition, base_staged_ledger) ~f:(fun previous_chain ((_, block_data) as proposal) -> Core.Printf.printf !"[%d] %d --> %d\n%!" (UInt32.to_int epoch) - ( UInt32.to_int @@ Global_slot.slot_number + ( UInt32.to_int @@ Global_slot_since_genesis.slot_number @@ Consensus_state.global_slot @@ Mina_block.consensus_state @@ fst previous_chain ) ( UInt32.to_int - @@ Global_slot.( + @@ Global_slot_since_genesis.( slot (of_slot_number ~constants:consensus_constants (Block_data.global_slot block_data) )) ) ; diff --git a/src/lib/consensus/proof_of_stake_intf.ml b/src/lib/consensus/proof_of_stake_intf.ml index 60d8262c741..438533321cd 100644 --- a/src/lib/consensus/proof_of_stake_intf.ml +++ b/src/lib/consensus/proof_of_stake_intf.ml @@ -35,7 +35,7 @@ module type Full = sig val dummy_advance : Value.t -> ?increase_epoch_count:bool - -> new_global_slot:Mina_numbers.Global_slot.t + -> new_global_slot:Mina_numbers.Global_slot_since_genesis.t -> Value.t end end diff --git a/src/lib/consensus/vrf/consensus_vrf.ml b/src/lib/consensus/vrf/consensus_vrf.ml index 25eedac8a13..7610bda3aaf 100644 --- a/src/lib/consensus/vrf/consensus_vrf.ml +++ b/src/lib/consensus/vrf/consensus_vrf.ml @@ -75,18 +75,21 @@ module Group = struct end module Message = struct - module Global_slot = Mina_numbers.Global_slot + module Global_slot_since_genesis = Mina_numbers.Global_slot_since_genesis type ('global_slot, 'epoch_seed, 'delegator) t = { global_slot : 'global_slot; seed : 'epoch_seed; delegator : 'delegator } [@@deriving sexp, hlist] type value = - (Global_slot.t, Mina_base.Epoch_seed.t, Mina_base.Account.Index.t) t + ( Global_slot_since_genesis.t + , Mina_base.Epoch_seed.t + , Mina_base.Account.Index.t ) + t [@@deriving sexp] type var = - ( Global_slot.Checked.t + ( Global_slot_since_genesis.Checked.t , Mina_base.Epoch_seed.var , Mina_base.Account.Index.Unpacked.var ) t @@ -97,7 +100,7 @@ module Message = struct let open Random_oracle.Input.Chunked in Array.reduce_exn ~f:append [| field (seed :> Tick.field) - ; Global_slot.to_input global_slot + ; Global_slot_since_genesis.to_input global_slot ; Mina_base.Account.Index.to_input ~ledger_depth:constraint_constants.ledger_depth delegator |] @@ -105,7 +108,7 @@ module Message = struct let typ ~(constraint_constants : Genesis_constants.Constraint_constants.t) : (var, value) Tick.Typ.t = Tick.Typ.of_hlistable - [ Global_slot.typ + [ Global_slot_since_genesis.typ ; Mina_base.Epoch_seed.typ ; Mina_base.Account.Index.Unpacked.typ ~ledger_depth:constraint_constants.ledger_depth @@ -123,7 +126,7 @@ module Message = struct let open Random_oracle.Input.Chunked in Array.reduce_exn ~f:append [| field (Mina_base.Epoch_seed.var_to_hash_packed seed) - ; Global_slot.Checked.to_input global_slot + ; Global_slot_since_genesis.Checked.to_input global_slot ; Mina_base.Account.Index.Unpacked.to_input delegator |] @@ -137,7 +140,7 @@ module Message = struct let gen ~(constraint_constants : Genesis_constants.Constraint_constants.t) = let open Quickcheck.Let_syntax in - let%map global_slot = Global_slot.gen + let%map global_slot = Global_slot_since_genesis.gen and seed = Mina_base.Epoch_seed.gen and delegator = Mina_base.Account.Index.gen @@ -146,6 +149,8 @@ module Message = struct { global_slot; seed; delegator } end +module M = Message + (* c is a constant factor on vrf-win likelihood *) (* c = 2^0 is production behavior *) (* c > 2^0 is a temporary hack for testnets *) @@ -480,7 +485,10 @@ type evaluation = Vrf_lib.Standalone.Evaluation.Poly.t type context = - ( (Unsigned.uint32, Pasta_bindings.Fp.t, int) Message.t + ( ( Mina_numbers.Global_slot_since_genesis.t + , Pasta_bindings.Fp.t + , int ) + Message.t , Pasta_bindings.Pallas.t ) Vrf_lib.Standalone.Context.t @@ -492,7 +500,8 @@ module Layout = struct *) module Message = struct type t = - { global_slot : Mina_numbers.Global_slot.t [@key "globalSlot"] + { global_slot : Mina_numbers.Global_slot_since_genesis.t + [@key "globalSlot"] ; epoch_seed : Mina_base.Epoch_seed.t [@key "epochSeed"] ; delegator_index : int [@key "delegatorIndex"] } diff --git a/src/lib/daemon_rpcs/types.ml b/src/lib/daemon_rpcs/types.ml index 377482e0ac4..17c83447d6b 100644 --- a/src/lib/daemon_rpcs/types.ml +++ b/src/lib/daemon_rpcs/types.ml @@ -162,8 +162,9 @@ module Status = struct module Next_producer_timing = struct type slot = - { slot : Mina_numbers.Global_slot.Stable.Latest.t - ; global_slot_since_genesis : Mina_numbers.Global_slot.Stable.Latest.t + { slot : Mina_numbers.Global_slot_since_genesis.Stable.Latest.t + ; global_slot_since_genesis : + Mina_numbers.Global_slot_since_genesis.Stable.Latest.t } [@@deriving to_yojson, fields, bin_io_unversioned] @@ -175,7 +176,7 @@ module Status = struct | Check_again of Block_time.Stable.Latest.t | Produce of producing_time | Produce_now of producing_time - | Evaluating_vrf of Mina_numbers.Global_slot.Stable.Latest.t + | Evaluating_vrf of Mina_numbers.Global_slot_since_genesis.Stable.Latest.t [@@deriving to_yojson, bin_io_unversioned] type t = { generated_from_consensus_at : slot; timing : timing } @@ -293,8 +294,9 @@ module Status = struct in let slot_str (slot : Next_producer_timing.slot) = sprintf "slot: %s slot-since-genesis: %s" - (Mina_numbers.Global_slot.to_string slot.slot) - (Mina_numbers.Global_slot.to_string slot.global_slot_since_genesis) + (Mina_numbers.Global_slot_since_genesis.to_string slot.slot) + (Mina_numbers.Global_slot_since_genesis.to_string + slot.global_slot_since_genesis ) in let generated_from = sprintf "Generated from consensus at %s" @@ -306,7 +308,8 @@ module Status = struct generated_from | Evaluating_vrf last_checked_slot -> sprintf "Evaluating VRF… Last checked global slot %s (%s)" - (Mina_numbers.Global_slot.to_string last_checked_slot) + (Mina_numbers.Global_slot_since_genesis.to_string + last_checked_slot ) generated_from | Produce { time; for_slot } -> sprintf "%s for %s (%s)" (str time) (slot_str for_slot) diff --git a/src/lib/fields_derivers_zkapps/dune b/src/lib/fields_derivers_zkapps/dune index cec7b8057a7..7747c30f64a 100644 --- a/src/lib/fields_derivers_zkapps/dune +++ b/src/lib/fields_derivers_zkapps/dune @@ -18,6 +18,7 @@ fields_derivers.graphql fields_derivers.json currency + mina_numbers snark_params pickles fields_derivers diff --git a/src/lib/fields_derivers_zkapps/fields_derivers_zkapps.ml b/src/lib/fields_derivers_zkapps/fields_derivers_zkapps.ml index 4314ac2a3d9..cc199e3628d 100644 --- a/src/lib/fields_derivers_zkapps/fields_derivers_zkapps.ml +++ b/src/lib/fields_derivers_zkapps/fields_derivers_zkapps.ml @@ -228,10 +228,22 @@ module Make (Schema : Graphql_intf.Schema) = struct let _e = Fields_derivers_js.Js_layout.bool obj in Fields_derivers_json.Of_yojson.bool obj - let global_slot obj = - iso_string obj ~name:"GlobalSlot" ~js_type:UInt32 - ~to_string:Unsigned.UInt32.to_string - ~of_string:(except ~f:Unsigned.UInt32.of_string `Uint) + let global_slot_since_genesis obj = + iso_string obj ~name:"GlobalSlotSinceGenesis" ~js_type:UInt32 + ~to_string:Mina_numbers.Global_slot_since_genesis.to_string + ~of_string: + (except ~f:Mina_numbers.Global_slot_since_genesis.of_string `Uint) + + let global_slot_since_hard_fork obj = + iso_string obj ~name:"GlobalSlotSinceHardFork" ~js_type:UInt32 + ~to_string:Mina_numbers.Global_slot_since_hard_fork.to_string + ~of_string: + (except ~f:Mina_numbers.Global_slot_since_hard_fork.of_string `Uint) + + let global_slot_span obj = + iso_string obj ~name:"GlobalSlotSpan" ~js_type:UInt32 + ~to_string:Mina_numbers.Global_slot_span.to_string + ~of_string:(except ~f:Mina_numbers.Global_slot_span.of_string `Uint) let amount obj = iso_string obj ~name:"CurrencyAmount" ~js_type:UInt64 diff --git a/src/lib/genesis_constants/genesis_constants.ml b/src/lib/genesis_constants/genesis_constants.ml index 781f2dd5f10..ed6d7df8cf9 100644 --- a/src/lib/genesis_constants/genesis_constants.ml +++ b/src/lib/genesis_constants/genesis_constants.ml @@ -28,7 +28,8 @@ module Fork_constants = struct type t = { previous_state_hash : Pickles.Backend.Tick.Field.Stable.Latest.t ; previous_length : Mina_numbers.Length.Stable.Latest.t - ; previous_global_slot : Mina_numbers.Global_slot.Stable.Latest.t + ; previous_global_slot : + Mina_numbers.Global_slot_since_genesis.Stable.Latest.t } [@@deriving bin_io_unversioned, sexp, equal, compare, yojson] end @@ -73,7 +74,9 @@ module Constraint_constants = struct ; previous_state_hash = Pickles.Backend.Tick.Field.to_string previous_state_hash ; previous_global_slot = - Unsigned.UInt32.to_int previous_global_slot + Unsigned.UInt32.to_int + (Mina_numbers.Global_slot_since_genesis.to_uint32 + previous_global_slot ) } | None -> None ) @@ -172,7 +175,8 @@ module Constraint_constants = struct Data_hash_lib.State_hash.of_base58_check_exn fork_previous_state_hash ; previous_global_slot = - Mina_numbers.Global_slot.of_int fork_previous_global_slot + Mina_numbers.Global_slot_since_genesis.of_int + fork_previous_global_slot } [%%endif] diff --git a/src/lib/genesis_ledger/genesis_ledger.ml b/src/lib/genesis_ledger/genesis_ledger.ml index cfd0d39b24b..8273f7afdd1 100644 --- a/src/lib/genesis_ledger/genesis_ledger.ml +++ b/src/lib/genesis_ledger/genesis_ledger.ml @@ -13,12 +13,16 @@ let account_with_timing account_id balance (timing : Intf.Timing.t) = let initial_minimum_balance = Currency.Balance.of_nanomina_int_exn t.initial_minimum_balance in - let cliff_time = Mina_numbers.Global_slot.of_int t.cliff_time in + let cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int t.cliff_time + in let cliff_amount = Currency.Amount.of_nanomina_int_exn t.cliff_amount in let vesting_increment = Currency.Amount.of_nanomina_int_exn t.vesting_increment in - let vesting_period = Mina_numbers.Global_slot.of_int t.vesting_period in + let vesting_period = + Mina_numbers.Global_slot_span.of_int t.vesting_period + in Account.create_timed account_id balance ~initial_minimum_balance ~cliff_time ~cliff_amount ~vesting_period ~vesting_increment |> Or_error.ok_exn diff --git a/src/lib/genesis_ledger/intf.ml b/src/lib/genesis_ledger/intf.ml index 5db52b0d11c..d7d4cfa754a 100644 --- a/src/lib/genesis_ledger/intf.ml +++ b/src/lib/genesis_ledger/intf.ml @@ -3,7 +3,7 @@ open Signature_lib open Core_kernel module Timing = struct - type t = (int, int, int) Account_timing.Poly.t + type t = (int, int, int, int) Account_timing.Poly.t let gen = let open Quickcheck.Generator.Let_syntax in diff --git a/src/lib/genesis_ledger_helper/lib/genesis_ledger_helper_lib.ml b/src/lib/genesis_ledger_helper/lib/genesis_ledger_helper_lib.ml index 9e5931900d2..fd8c59e669e 100644 --- a/src/lib/genesis_ledger_helper/lib/genesis_ledger_helper_lib.ml +++ b/src/lib/genesis_ledger_helper/lib/genesis_ledger_helper_lib.ml @@ -147,7 +147,7 @@ module Accounts = struct in let last_action_slot = - Mina_numbers.Global_slot.of_int last_action_slot + Mina_numbers.Global_slot_since_genesis.of_int last_action_slot in Some { Zkapp_account.verification_key @@ -263,7 +263,7 @@ module Accounts = struct in let action_state = Pickles_types.Vector.to_list action_state in let last_action_slot = - Mina_numbers.Global_slot.to_int last_action_slot + Mina_numbers.Global_slot_since_genesis.to_int last_action_slot in { Runtime_config.Accounts.Single.Zkapp_account.app_state ; verification_key @@ -464,7 +464,8 @@ let make_constraint_constants State_hash.of_base58_check_exn previous_state_hash ; previous_length = Mina_numbers.Length.of_int previous_length ; previous_global_slot = - Mina_numbers.Global_slot.of_int previous_global_slot + Mina_numbers.Global_slot_since_genesis.of_int + previous_global_slot } ) } @@ -499,7 +500,7 @@ let runtime_config_of_constraint_constants State_hash.to_base58_check previous_state_hash ; previous_length = Mina_numbers.Length.to_int previous_length ; previous_global_slot = - Mina_numbers.Global_slot.to_int previous_global_slot + Mina_numbers.Global_slot_since_genesis.to_int previous_global_slot } ) } diff --git a/src/lib/integration_test_cloud_engine/kubernetes_network.ml b/src/lib/integration_test_cloud_engine/kubernetes_network.ml index b856a047154..206a78c2b17 100644 --- a/src/lib/integration_test_cloud_engine/kubernetes_network.ml +++ b/src/lib/integration_test_cloud_engine/kubernetes_network.ml @@ -622,7 +622,7 @@ module Node = struct let%bind cliff_time = match tm with | `String s -> - return @@ Mina_numbers.Global_slot.of_string s + return @@ Mina_numbers.Global_slot_since_genesis.of_string s | _ -> fail (Error.of_string @@ -631,7 +631,7 @@ module Node = struct let%bind vesting_period = match period with | `String s -> - return @@ Mina_numbers.Global_slot.of_string s + return @@ Mina_numbers.Global_slot_span.of_string s | _ -> fail (Error.of_string @@ -864,8 +864,8 @@ module Node = struct res let send_payment_with_raw_sig ~logger t ~sender_pub_key ~receiver_pub_key - ~amount ~fee ~nonce ~memo ~(valid_until : Mina_numbers.Global_slot.t) - ~raw_signature = + ~amount ~fee ~nonce ~memo + ~(valid_until : Mina_numbers.Global_slot_since_genesis.t) ~raw_signature = [%log info] "Sending a payment with raw signature" ~metadata:(logger_metadata t) ; let open Deferred.Or_error.Let_syntax in @@ -874,7 +874,8 @@ module Node = struct let input = Mina_graphql.Types.Input.SendPaymentInput.make_input ~from:sender_pub_key ~to_:receiver_pub_key ~amount ~fee ~memo ~nonce - ~valid_until:(Mina_numbers.Global_slot.to_uint32 valid_until) + ~valid_until: + (Mina_numbers.Global_slot_since_genesis.to_uint32 valid_until) () in let variables = makeVariables ~input ~rawSignature:raw_signature () in diff --git a/src/lib/integration_test_lib/intf.ml b/src/lib/integration_test_lib/intf.ml index f69ceb99184..9548d768032 100644 --- a/src/lib/integration_test_lib/intf.ml +++ b/src/lib/integration_test_lib/intf.ml @@ -84,7 +84,7 @@ module Engine = struct -> fee:Currency.Fee.t -> nonce:Mina_numbers.Account_nonce.t -> memo:string - -> valid_until:Mina_numbers.Global_slot.t + -> valid_until:Mina_numbers.Global_slot_since_genesis.t -> raw_signature:string -> signed_command_result Deferred.Or_error.t @@ -97,7 +97,7 @@ module Engine = struct -> fee:Currency.Fee.t -> nonce:Mina_numbers.Account_nonce.t -> memo:string - -> valid_until:Mina_numbers.Global_slot.t + -> valid_until:Mina_numbers.Global_slot_since_genesis.t -> raw_signature:string -> signed_command_result Malleable_error.t diff --git a/src/lib/internal_tracing/internal_tracing.ml b/src/lib/internal_tracing/internal_tracing.ml index 0910fbb21c6..578a1e7d069 100644 --- a/src/lib/internal_tracing/internal_tracing.ml +++ b/src/lib/internal_tracing/internal_tracing.ml @@ -2,18 +2,18 @@ open Core module Block_id = struct type t = - | Global_slot of Mina_numbers.Global_slot.t + | Global_slot of Mina_numbers.Global_slot_since_genesis.t | State_hash of Mina_base.State_hash.t [@@deriving sexp, hash, compare, equal] let to_string = function | Global_slot slot -> - Mina_numbers.Global_slot.to_string slot + Mina_numbers.Global_slot_since_genesis.to_string slot | State_hash hash -> Mina_base.State_hash.to_base58_check hash end -let no_block = Block_id.Global_slot Mina_numbers.Global_slot.zero +let no_block = Block_id.Global_slot Mina_numbers.Global_slot_since_genesis.zero let last_block_id = ref no_block diff --git a/src/lib/internal_tracing/internal_tracing.mli b/src/lib/internal_tracing/internal_tracing.mli index dc4e13f579e..add5b68be4f 100644 --- a/src/lib/internal_tracing/internal_tracing.mli +++ b/src/lib/internal_tracing/internal_tracing.mli @@ -132,7 +132,7 @@ val with_state_hash : Mina_base.State_hash.t -> (unit -> 'a) -> 'a Any context in which checkpoints or metadata are recorded must be wrapped in either {!val:with_state_hash} or {!val:with_slot} for the checkpoints to be properly associated to the block being processed/produced. *) -val with_slot : Mina_numbers.Global_slot.t -> (unit -> 'a) -> 'a +val with_slot : Mina_numbers.Global_slot_since_genesis.t -> (unit -> 'a) -> 'a module For_logger : sig (** Returns a transport that outputs events to a json-lines file which gets rotated after it diff --git a/src/lib/mina_base/account.ml b/src/lib/mina_base/account.ml index 9862d3ddf79..3fc6c656d0d 100644 --- a/src/lib/mina_base/account.ml +++ b/src/lib/mina_base/account.ml @@ -528,14 +528,18 @@ module Checked = struct let amount_upper_bound = Bignum_bigint.(one lsl Amount.length_in_bits) - let min_balance_at_slot ~global_slot ~cliff_time ~cliff_amount ~vesting_period + let min_balance_at_slot ~global_slot ~cliff_time ~cliff_amount + ~(vesting_period : Mina_numbers.Global_slot_span.Checked.var) ~vesting_increment ~initial_minimum_balance = - let%bind before_cliff = Global_slot.Checked.(global_slot < cliff_time) in + let%bind before_cliff = + Global_slot_since_genesis.Checked.(global_slot < cliff_time) + in let%bind else_branch = make_checked (fun () -> - let _, slot_diff = + let _, (slot_diff : Mina_numbers.Global_slot_span.Checked.var) = Tick.Run.run_checked - (Global_slot.Checked.sub_or_zero global_slot cliff_time) + (Global_slot_since_genesis.Checked.diff_or_zero global_slot + cliff_time ) in let cliff_decrement = cliff_amount in let min_balance_less_cliff_decrement = @@ -543,13 +547,13 @@ module Checked = struct (Balance.Checked.sub_amount_or_zero initial_minimum_balance cliff_decrement ) in - let num_periods, _ = + let (num_periods : Mina_numbers.Global_slot_span.Checked.var), _ = Tick.Run.run_checked - (Global_slot.Checked.div_mod slot_diff vesting_period) + (Global_slot_span.Checked.div_mod slot_diff vesting_period) in let vesting_decrement = Tick.Run.Field.mul - (Global_slot.Checked.to_field num_periods) + (Global_slot_span.Checked.to_field num_periods) (Amount.pack_var vesting_increment) in let min_balance_less_cliff_and_vesting_decrements = @@ -661,7 +665,7 @@ let create account_id balance = let create_timed account_id balance ~initial_minimum_balance ~cliff_time ~cliff_amount ~vesting_period ~vesting_increment = - if Global_slot.(equal vesting_period zero) then + if Global_slot_span.(equal vesting_period zero) then Or_error.errorf !"Error creating timed account for account id %{sexp: Account_id.t}: \ vesting period must be greater than zero" @@ -697,7 +701,7 @@ let create_timed account_id balance ~initial_minimum_balance ~cliff_time (* no vesting after cliff time + 1 slot *) let create_time_locked public_key balance ~initial_minimum_balance ~cliff_time = create_timed public_key balance ~initial_minimum_balance ~cliff_time - ~vesting_period:Global_slot.(succ zero) + ~vesting_period:Global_slot_span.(succ zero) ~vesting_increment:initial_minimum_balance let initial_minimum_balance Poly.{ timing; _ } = @@ -726,9 +730,10 @@ let vesting_period Poly.{ timing; _ } = let min_balance_at_slot ~global_slot ~cliff_time ~cliff_amount ~vesting_period ~vesting_increment ~initial_minimum_balance = let open Unsigned in - if Global_slot.(global_slot < cliff_time) then initial_minimum_balance + if Global_slot_since_genesis.(global_slot < cliff_time) then + initial_minimum_balance (* If vesting period is zero then everything vests immediately at the cliff *) - else if Global_slot.(equal vesting_period zero) then Balance.zero + else if Global_slot_span.(equal vesting_period zero) then Balance.zero else match Balance.(initial_minimum_balance - cliff_amount) with | None -> @@ -737,7 +742,16 @@ let min_balance_at_slot ~global_slot ~cliff_time ~cliff_amount ~vesting_period (* take advantage of fact that global slots are uint32's *) let num_periods = UInt32.( - Infix.((global_slot - cliff_time) / vesting_period) + let global_slot_u32 = + Global_slot_since_genesis.to_uint32 global_slot + in + let cliff_time_u32 = + Global_slot_since_genesis.to_uint32 cliff_time + in + let vesting_period_u32 = + Global_slot_span.to_uint32 vesting_period + in + Infix.((global_slot_u32 - cliff_time_u32) / vesting_period_u32) |> to_int64 |> UInt64.of_int64) in let vesting_decrement = @@ -763,7 +777,7 @@ let incremental_balance_between_slots ~start_slot ~end_slot ~cliff_time ~cliff_amount ~vesting_period ~vesting_increment ~initial_minimum_balance : Unsigned.UInt64.t = let open Unsigned in - if Global_slot.(end_slot <= start_slot) then UInt64.zero + if Global_slot_since_genesis.(end_slot <= start_slot) then UInt64.zero else let min_balance_at_start_slot = min_balance_at_slot ~global_slot:start_slot ~cliff_time ~cliff_amount @@ -810,13 +824,14 @@ let final_vesting_slot ~initial_minimum_balance ~cliff_time ~cliff_amount in let open UInt32 in let open Infix in - Global_slot.of_uint32 - @@ Global_slot.to_uint32 cliff_time - + (UInt64.to_uint32 periods * Global_slot.to_uint32 vesting_period) + Global_slot_since_genesis.of_uint32 + @@ Global_slot_since_genesis.to_uint32 cliff_time + + UInt64.to_uint32 periods + * Global_slot_since_genesis.to_uint32 vesting_period let timing_final_vesting_slot = function | Timing.Untimed -> - Global_slot.zero + Global_slot_since_genesis.zero | Timed { initial_minimum_balance ; cliff_time @@ -871,38 +886,43 @@ let gen_with_constrained_balance ~low ~high : t Quickcheck.Generator.t = let gen_any_vesting_range = let open Quickcheck.Generator.Let_syntax in - let open Global_slot in - (* vesting period must be at least oe to avoid division by zero *) - let%bind vesting_period = Int.gen_incl 1 1000 >>| Global_slot.of_int in + let open Global_slot_since_genesis in + (* vesting period must be at least one to avoid division by zero *) + let%bind vesting_period = Int.gen_incl 1 1000 >>| Global_slot_span.of_int in let%bind vesting_end = gen_incl (of_int 1) max_value in let%map cliff_time = gen_incl (of_int 1) vesting_end in (cliff_time, vesting_end, vesting_period) let gen_with_vesting_period vesting_period = let open Quickcheck.Generator.Let_syntax in - let open Global_slot in - let min_vesting_end = succ vesting_period in + let open Global_slot_since_genesis in + let min_vesting_end = + Global_slot_span.to_uint32 vesting_period + |> Unsigned.UInt32.succ |> Global_slot_since_genesis.of_uint32 + in let%bind vesting_end = gen_incl min_vesting_end max_value in let max_cliff_time = Option.value_exn @@ sub vesting_end vesting_period in let%map cliff_time = gen_incl (of_int 1) max_cliff_time in (cliff_time, vesting_end, vesting_period) -let gen_vesting_details ~(cliff_time : Global_slot.t) - ~(vesting_end : Global_slot.t) ~(vesting_period : Global_slot.t) - (initial_minimum_balance : Balance.t) : - Timing.as_record Quickcheck.Generator.t = +let gen_vesting_details ~(cliff_time : Global_slot_since_genesis.t) + ~(vesting_end : Global_slot_since_genesis.t) + ~(vesting_period : Global_slot_span.t) (initial_minimum_balance : Balance.t) + : Timing.as_record Quickcheck.Generator.t = let open Unsigned in let open Quickcheck in let open Generator.Let_syntax in let vesting_slots = - let open Global_slot in + let open Global_slot_since_genesis in let open UInt32.Infix in to_uint32 vesting_end - to_uint32 cliff_time in (* We need to arrange vesting schedule so that all funds are vested before the maximum global slot, which is 2 ^ 32. *) let vesting_periods_count = - Unsigned.UInt32.div vesting_slots vesting_period |> UInt64.of_uint32 + Unsigned.UInt32.div vesting_slots + (Global_slot_span.to_uint32 vesting_period) + |> UInt64.of_uint32 in let max_cliff_amt = Balance.(initial_minimum_balance - Amount.of_uint64 vesting_periods_count) @@ -946,7 +966,7 @@ let gen_timing_at_least_one_vesting_period (account_balance : Balance.t) = let%bind initial_minimum_balance = Balance.(gen_incl one account_balance) (* vesting period must be at least one to avoid division by zero *) and cliff_time, vesting_end, vesting_period = - gen_with_vesting_period @@ Global_slot.of_int 2 + gen_with_vesting_period @@ Global_slot_span.of_int 2 in gen_vesting_details ~vesting_period ~cliff_time ~vesting_end initial_minimum_balance diff --git a/src/lib/mina_base/account_timing.ml b/src/lib/mina_base/account_timing.ml index 4d6c76c4418..974330f1f3b 100644 --- a/src/lib/mina_base/account_timing.ml +++ b/src/lib/mina_base/account_timing.ml @@ -19,13 +19,13 @@ module Poly = struct [%%versioned module Stable = struct module V1 = struct - type ('slot, 'balance, 'amount) t = + type ('slot, 'slot_span, 'balance, 'amount) t = | Untimed | Timed of { initial_minimum_balance : 'balance ; cliff_time : 'slot ; cliff_amount : 'amount - ; vesting_period : 'slot + ; vesting_period : 'slot_span ; vesting_increment : 'amount } [@@deriving sexp, equal, hash, compare, yojson] @@ -37,7 +37,8 @@ end module Stable = struct module V1 = struct type t = - ( Global_slot.Stable.V1.t + ( Global_slot_since_genesis.Stable.V1.t + , Global_slot_span.Stable.V1.t , Balance.Stable.V1.t , Amount.Stable.V1.t ) Poly.Stable.V1.t @@ -47,24 +48,25 @@ module Stable = struct end end] -type ('slot, 'balance, 'amount) tt = ('slot, 'balance, 'amount) Poly.t = +type ('slot, 'slot_span, 'balance, 'amount) tt = + ('slot, 'slot_span, 'balance, 'amount) Poly.t = | Untimed | Timed of { initial_minimum_balance : 'balance ; cliff_time : 'slot ; cliff_amount : 'amount - ; vesting_period : 'slot + ; vesting_period : 'slot_span ; vesting_increment : 'amount } [@@deriving sexp, equal, hash, compare, yojson] module As_record = struct - type ('bool, 'slot, 'balance, 'amount) t = + type ('bool, 'slot, 'slot_span, 'balance, 'amount) t = { is_timed : 'bool ; initial_minimum_balance : 'balance ; cliff_time : 'slot ; cliff_amount : 'amount - ; vesting_period : 'slot + ; vesting_period : 'slot_span ; vesting_increment : 'amount } [@@deriving equal, hlist, fields, annot] @@ -73,14 +75,16 @@ module As_record = struct let open Fields_derivers_zkapps.Derivers in let ( !. ) = ( !. ) ~t_fields_annots in Fields.make_creator obj ~is_timed:!.bool ~initial_minimum_balance:!.balance - ~cliff_time:!.global_slot ~cliff_amount:!.amount - ~vesting_period:!.global_slot ~vesting_increment:!.amount + ~cliff_time:!.global_slot_since_genesis + ~cliff_amount:!.amount ~vesting_period:!.global_slot_span + ~vesting_increment:!.amount |> finish "AccountTiming" ~t_toplevel_annots end type as_record = ( bool - , Global_slot.Stable.V1.t + , Global_slot_since_genesis.Stable.V1.t + , Global_slot_span.Stable.V1.t , Balance.Stable.V1.t , Amount.Stable.V1.t ) As_record.t @@ -89,15 +93,15 @@ type as_record = let to_record t = match t with | Untimed -> - let slot_unused = Global_slot.zero in - let slot_one = Global_slot.(succ zero) in + let slot_unused = Global_slot_since_genesis.zero in + let slot_span_one = Global_slot_span.(succ zero) in let balance_unused = Balance.zero in let amount_unused = Amount.zero in { As_record.is_timed = false ; initial_minimum_balance = balance_unused ; cliff_time = slot_unused ; cliff_amount = amount_unused - ; vesting_period = slot_one (* avoid division by zero *) + ; vesting_period = slot_span_one (* avoid division by zero *) ; vesting_increment = amount_unused } | Timed @@ -159,16 +163,21 @@ let to_input t = Array.reduce_exn ~f:append [| packed ((if is_timed then Field.one else Field.zero), 1) ; Balance.to_input initial_minimum_balance - ; Global_slot.to_input cliff_time + ; Global_slot_since_genesis.to_input cliff_time ; Amount.to_input cliff_amount - ; Global_slot.to_input vesting_period + ; Global_slot_span.to_input vesting_period ; Amount.to_input vesting_increment |] [%%ifdef consensus_mechanism] type var = - (Boolean.var, Global_slot.Checked.var, Balance.var, Amount.var) As_record.t + ( Boolean.var + , Global_slot_since_genesis.Checked.var + , Global_slot_span.Checked.var + , Balance.var + , Amount.var ) + As_record.t let var_to_input As_record. @@ -183,9 +192,9 @@ let var_to_input Array.reduce_exn ~f:append [| packed ((is_timed :> Field.Var.t), 1) ; Balance.var_to_input initial_minimum_balance - ; Global_slot.Checked.to_input cliff_time + ; Global_slot_since_genesis.Checked.to_input cliff_time ; Amount.var_to_input cliff_amount - ; Global_slot.Checked.to_input vesting_period + ; Global_slot_span.Checked.to_input vesting_period ; Amount.var_to_input vesting_increment |] @@ -201,9 +210,9 @@ let var_of_t (t : t) : var = in { is_timed = Boolean.var_of_value is_timed ; initial_minimum_balance = Balance.var_of_t initial_minimum_balance - ; cliff_time = Global_slot.Checked.constant cliff_time + ; cliff_time = Global_slot_since_genesis.Checked.constant cliff_time ; cliff_amount = Amount.var_of_t cliff_amount - ; vesting_period = Global_slot.Checked.constant vesting_period + ; vesting_period = Global_slot_span.Checked.constant vesting_period ; vesting_increment = Amount.var_of_t vesting_increment } @@ -218,9 +227,9 @@ let typ : (var, t) Typ.t = ( unit , Boolean.value -> Balance.t - -> Global_slot.t + -> Global_slot_since_genesis.t -> Amount.t - -> Global_slot.t + -> Global_slot_span.t -> Amount.t -> unit ) H_list.t @@ -268,14 +277,14 @@ let typ : (var, t) Typ.t = Typ.of_hlistable [ Boolean.typ ; Balance.typ - ; Global_slot.typ + ; Global_slot_since_genesis.typ ; Amount.typ - ; Global_slot.typ + ; Global_slot_span.typ ; Amount.typ ] ~var_to_hlist ~var_of_hlist ~value_to_hlist ~value_of_hlist -(* we can't use the generic if_ with the above typ, because Global_slot.typ doesn't work correctly with it +(* we can't use the generic if_ with the above typ, because Global_slot_since_genesis.typ doesn't work correctly with it so we define a custom if_ *) let if_ b ~(then_ : var) ~(else_ : var) = @@ -287,13 +296,14 @@ let if_ b ~(then_ : var) ~(else_ : var) = ~else_:else_.initial_minimum_balance in let%bind cliff_time = - Global_slot.Checked.if_ b ~then_:then_.cliff_time ~else_:else_.cliff_time + Global_slot_since_genesis.Checked.if_ b ~then_:then_.cliff_time + ~else_:else_.cliff_time in let%bind cliff_amount = Amount.Checked.if_ b ~then_:then_.cliff_amount ~else_:else_.cliff_amount in let%bind vesting_period = - Global_slot.Checked.if_ b ~then_:then_.vesting_period + Global_slot_span.Checked.if_ b ~then_:then_.vesting_period ~else_:else_.vesting_period in let%map vesting_increment = diff --git a/src/lib/mina_base/account_update.ml b/src/lib/mina_base/account_update.ml index 790eea3a72a..f5bfd62691b 100644 --- a/src/lib/mina_base/account_update.ml +++ b/src/lib/mina_base/account_update.ml @@ -529,9 +529,9 @@ module Update = struct type t = Mina_wire_types.Mina_base.Account_update.Update.Timing_info.V1.t = { initial_minimum_balance : Balance.Stable.V1.t - ; cliff_time : Global_slot.Stable.V1.t + ; cliff_time : Global_slot_since_genesis.Stable.V1.t ; cliff_amount : Amount.Stable.V1.t - ; vesting_period : Global_slot.Stable.V1.t + ; vesting_period : Global_slot_span.Stable.V1.t ; vesting_increment : Amount.Stable.V1.t } [@@deriving annot, compare, equal, sexp, hash, yojson, hlist, fields] @@ -545,12 +545,14 @@ module Update = struct let gen = let open Quickcheck.Let_syntax in let%bind initial_minimum_balance = Balance.gen in - let%bind cliff_time = Global_slot.gen in + let%bind cliff_time = Global_slot_since_genesis.gen in let%bind cliff_amount = Amount.gen_incl Amount.zero (Balance.to_amount initial_minimum_balance) in let%bind vesting_period = - Global_slot.gen_incl Global_slot.(succ zero) (Global_slot.of_int 10) + Global_slot_span.gen_incl + Global_slot_span.(succ zero) + (Global_slot_span.of_int 10) in let%map vesting_increment = Amount.gen_incl Amount.one (Amount.of_nanomina_int_exn 100) @@ -565,20 +567,21 @@ module Update = struct let to_input (t : t) = List.reduce_exn ~f:Random_oracle_input.Chunked.append [ Balance.to_input t.initial_minimum_balance - ; Global_slot.to_input t.cliff_time + ; Global_slot_since_genesis.to_input t.cliff_time ; Amount.to_input t.cliff_amount - ; Global_slot.to_input t.vesting_period + ; Global_slot_span.to_input t.vesting_period ; Amount.to_input t.vesting_increment ] let dummy = - let slot_unused = Global_slot.zero in + let slot_unused = Global_slot_since_genesis.zero in + let slot_span_unused = Global_slot_span.zero in let balance_unused = Balance.zero in let amount_unused = Amount.zero in { initial_minimum_balance = balance_unused ; cliff_time = slot_unused ; cliff_amount = amount_unused - ; vesting_period = slot_unused + ; vesting_period = slot_span_unused ; vesting_increment = amount_unused } @@ -607,18 +610,18 @@ module Update = struct module Checked = struct type t = { initial_minimum_balance : Balance.Checked.t - ; cliff_time : Global_slot.Checked.t + ; cliff_time : Global_slot_since_genesis.Checked.t ; cliff_amount : Amount.Checked.t - ; vesting_period : Global_slot.Checked.t + ; vesting_period : Global_slot_span.Checked.t ; vesting_increment : Amount.Checked.t } [@@deriving hlist] let constant (t : value) : t = { initial_minimum_balance = Balance.var_of_t t.initial_minimum_balance - ; cliff_time = Global_slot.Checked.constant t.cliff_time + ; cliff_time = Global_slot_since_genesis.Checked.constant t.cliff_time ; cliff_amount = Amount.var_of_t t.cliff_amount - ; vesting_period = Global_slot.Checked.constant t.vesting_period + ; vesting_period = Global_slot_span.Checked.constant t.vesting_period ; vesting_increment = Amount.var_of_t t.vesting_increment } @@ -632,9 +635,9 @@ module Update = struct t ) = List.reduce_exn ~f:Random_oracle_input.Chunked.append [ Balance.var_to_input initial_minimum_balance - ; Global_slot.Checked.to_input cliff_time + ; Global_slot_since_genesis.Checked.to_input cliff_time ; Amount.var_to_input cliff_amount - ; Global_slot.Checked.to_input vesting_period + ; Global_slot_span.Checked.to_input vesting_period ; Amount.var_to_input vesting_increment ] @@ -659,9 +662,9 @@ module Update = struct let typ : (Checked.t, t) Typ.t = Typ.of_hlistable [ Balance.typ - ; Global_slot.typ + ; Global_slot_since_genesis.typ ; Amount.typ - ; Global_slot.typ + ; Global_slot_span.typ ; Amount.typ ] ~var_to_hlist:Checked.to_hlist ~var_of_hlist:Checked.of_hlist @@ -671,8 +674,9 @@ module Update = struct let open Fields_derivers_zkapps.Derivers in let ( !. ) = ( !. ) ~t_fields_annots in Fields.make_creator obj ~initial_minimum_balance:!.balance - ~cliff_time:!.global_slot ~cliff_amount:!.amount - ~vesting_period:!.global_slot ~vesting_increment:!.amount + ~cliff_time:!.global_slot_since_genesis + ~cliff_amount:!.amount ~vesting_period:!.global_slot_span + ~vesting_increment:!.amount |> finish "Timing" ~t_toplevel_annots end @@ -1151,7 +1155,7 @@ module Preconditions = struct { network : Zkapp_precondition.Protocol_state.Stable.V1.t ; account : Account_precondition.Stable.V1.t ; valid_while : - Mina_numbers.Global_slot.Stable.V1.t + Mina_numbers.Global_slot_since_genesis.Stable.V1.t Zkapp_precondition.Numeric.Stable.V1.t } [@@deriving annot, sexp, equal, yojson, hash, hlist, compare, fields] @@ -1441,7 +1445,8 @@ module Body = struct type t = Mina_wire_types.Mina_base.Account_update.Body.Fee_payer.V1.t = { public_key : Public_key.Compressed.Stable.V1.t ; fee : Fee.Stable.V1.t - ; valid_until : Global_slot.Stable.V1.t option [@name "validUntil"] + ; valid_until : Global_slot_since_genesis.Stable.V1.t option + [@name "validUntil"] ; nonce : Account_nonce.Stable.V1.t } [@@deriving annot, sexp, equal, yojson, hash, compare, hlist, fields] @@ -1454,7 +1459,8 @@ module Body = struct let open Quickcheck.Generator.Let_syntax in let%map public_key = Public_key.Compressed.gen and fee = Currency.Fee.gen - and valid_until = Option.quickcheck_generator Global_slot.gen + and valid_until = + Option.quickcheck_generator Global_slot_since_genesis.gen and nonce = Account.Nonce.gen in { public_key; fee; valid_until; nonce } @@ -1475,7 +1481,7 @@ module Body = struct Fields.make_creator obj ~public_key:!.public_key ~fee:!.fee ~valid_until: !.Fields_derivers_zkapps.Derivers.( - option ~js_type:Or_undefined @@ uint32 @@ o ()) + option ~js_type:Or_undefined @@ global_slot_since_genesis @@ o ()) ~nonce:!.uint32 |> finish "FeePayerBody" ~t_toplevel_annots @@ -1499,11 +1505,15 @@ module Body = struct ; preconditions = { Preconditions.network = (let valid_until = - Option.value ~default:Global_slot.max_value t.valid_until + Option.value ~default:Global_slot_since_genesis.max_value + t.valid_until in { Zkapp_precondition.Protocol_state.accept with global_slot_since_genesis = - Check { lower = Global_slot.zero; upper = valid_until } + Check + { lower = Global_slot_since_genesis.zero + ; upper = valid_until + } } ) ; account = Account_precondition.Nonce t.nonce ; valid_while = Ignore @@ -1527,11 +1537,15 @@ module Body = struct ; preconditions = { Preconditions.network = (let valid_until = - Option.value ~default:Global_slot.max_value t.valid_until + Option.value ~default:Global_slot_since_genesis.max_value + t.valid_until in { Zkapp_precondition.Protocol_state.accept with global_slot_since_genesis = - Check { lower = Global_slot.zero; upper = valid_until } + Check + { lower = Global_slot_since_genesis.zero + ; upper = valid_until + } } ) ; account = Account_precondition.Nonce t.nonce ; valid_while = Ignore @@ -1937,7 +1951,7 @@ let protocol_state_precondition (t : t) : Zkapp_precondition.Protocol_state.t = t.body.preconditions.network let valid_while_precondition (t : t) : - Mina_numbers.Global_slot.t Zkapp_precondition.Numeric.t = + Mina_numbers.Global_slot_since_genesis.t Zkapp_precondition.Numeric.t = t.body.preconditions.valid_while let public_key (t : t) : Public_key.Compressed.t = t.body.public_key diff --git a/src/lib/mina_base/pending_coinbase.ml b/src/lib/mina_base/pending_coinbase.ml index ad61da04041..dc8639181ba 100644 --- a/src/lib/mina_base/pending_coinbase.ml +++ b/src/lib/mina_base/pending_coinbase.ml @@ -307,7 +307,7 @@ module Make_str (A : Wire_types.Concrete) = struct { Poly.init; curr } let push (t : t) (state_body_hash : State_body_hash.t) - (global_slot : Mina_numbers.Global_slot.t) : t = + (global_slot : Mina_numbers.Global_slot_since_genesis.t) : t = (* this is the same computation for combining state hashes and state body hashes as `Protocol_state.hash_abstract', not available here because it would create a module dependency cycle @@ -317,7 +317,7 @@ module Make_str (A : Wire_types.Concrete) = struct Random_oracle.hash ~init:Hash_prefix.protocol_state [| (t.curr :> Field.t) ; (state_body_hash :> Field.t) - ; Mina_numbers.Global_slot.to_field global_slot + ; Mina_numbers.Global_slot_since_genesis.to_field global_slot |] |> Stack_hash.of_hash } @@ -330,13 +330,14 @@ module Make_str (A : Wire_types.Concrete) = struct type t = var let push (t : t) (state_body_hash : State_body_hash.var) - (global_slot : Mina_numbers.Global_slot.Checked.var) = + (global_slot : Mina_numbers.Global_slot_since_genesis.Checked.var) = make_checked (fun () -> let curr = Random_oracle.Checked.hash ~init:Hash_prefix.protocol_state [| Stack_hash.var_to_hash_packed t.curr ; State_body_hash.var_to_hash_packed state_body_hash - ; Mina_numbers.Global_slot.Checked.to_field global_slot + ; Mina_numbers.Global_slot_since_genesis.Checked.to_field + global_slot |] |> Stack_hash.var_of_hash_packed in @@ -682,7 +683,7 @@ module Make_str (A : Wire_types.Concrete) = struct { t with data } let push_state (state_body_hash : State_body_hash.t) - (global_slot : Mina_numbers.Global_slot.t) (t : t) = + (global_slot : Mina_numbers.Global_slot_since_genesis.t) (t : t) = { t with state = State_stack.push t.state state_body_hash global_slot } let if_ (cond : Tick0.Boolean.var) ~(then_ : var) ~(else_ : var) : @@ -704,7 +705,8 @@ module Make_str (A : Wire_types.Concrete) = struct { t with data } let push_state (state_body_hash : State_body_hash.var) - (global_slot : Mina_numbers.Global_slot.Checked.var) (t : t) = + (global_slot : Mina_numbers.Global_slot_since_genesis.Checked.var) + (t : t) = let%map state = State_stack.Checked.push t.state state_body_hash global_slot in @@ -1332,7 +1334,7 @@ module Make_str (A : Wire_types.Concrete) = struct depth:int -> t -> State_body_hash.t - -> Mina_numbers.Global_slot.t + -> Mina_numbers.Global_slot_since_genesis.t -> is_new_stack:bool -> t Or_error.t end @@ -1407,7 +1409,7 @@ module Make_str (A : Wire_types.Concrete) = struct test ~trials:20 (Generator.tuple3 (Coinbase.Gen.gen ~constraint_constants) - State_body_hash.gen Mina_numbers.Global_slot.gen ) + State_body_hash.gen Mina_numbers.Global_slot_since_genesis.gen ) ~f:(fun ( (coinbase, `Supercharged_coinbase supercharged_coinbase) , state_body_hash , global_slot ) -> @@ -1440,7 +1442,8 @@ module Make_str (A : Wire_types.Concrete) = struct State_body_hash.var_of_t state_body_hash in let global_slot_var = - Mina_numbers.Global_slot.Checked.constant global_slot + Mina_numbers.Global_slot_since_genesis.Checked.constant + global_slot in let%map result = handle @@ -1470,7 +1473,7 @@ module Make_str (A : Wire_types.Concrete) = struct test ~trials:20 (Generator.tuple3 (Coinbase.Gen.gen ~constraint_constants) - State_body_hash.gen Mina_numbers.Global_slot.gen ) + State_body_hash.gen Mina_numbers.Global_slot_since_genesis.gen ) ~f:(fun ( (coinbase, `Supercharged_coinbase supercharged_coinbase) , state_body_hash , global_slot ) -> @@ -1505,7 +1508,8 @@ module Make_str (A : Wire_types.Concrete) = struct State_body_hash.var_of_t state_body_hash in let global_slot_var = - Mina_numbers.Global_slot.Checked.constant global_slot + Mina_numbers.Global_slot_since_genesis.Checked.constant + global_slot in let%map result = handle @@ -1644,7 +1648,7 @@ module Make_str (A : Wire_types.Concrete) = struct (list (Generator.tuple3 (Coinbase.Gen.gen ~constraint_constants) - State_body_hash.gen Mina_numbers.Global_slot.gen ) )) + State_body_hash.gen Mina_numbers.Global_slot_since_genesis.gen ) )) in test ~trials:100 coinbase_lists_gen ~f:add_remove_check end diff --git a/src/lib/mina_base/pending_coinbase_intf.ml b/src/lib/mina_base/pending_coinbase_intf.ml index 461aa5dff31..fec6411105b 100644 --- a/src/lib/mina_base/pending_coinbase_intf.ml +++ b/src/lib/mina_base/pending_coinbase_intf.ml @@ -143,7 +143,8 @@ module type S = sig val push_coinbase : Coinbase.t -> t -> t - val push_state : State_body_hash.t -> Mina_numbers.Global_slot.t -> t -> t + val push_state : + State_body_hash.t -> Mina_numbers.Global_slot_since_genesis.t -> t -> t module Checked : sig type t = var @@ -152,7 +153,7 @@ module type S = sig val push_state : State_body_hash.var - -> Mina_numbers.Global_slot.Checked.var + -> Mina_numbers.Global_slot_since_genesis.Checked.var -> t -> t Tick.Checked.t @@ -288,7 +289,7 @@ module type S = sig -> coinbase_receiver:Public_key.Compressed.var -> supercharge_coinbase:Boolean.var -> State_body_hash.var - -> Mina_numbers.Global_slot.Checked.t + -> Mina_numbers.Global_slot_since_genesis.Checked.t -> var Tick.Checked.t (** diff --git a/src/lib/mina_base/signed_command_intf.ml b/src/lib/mina_base/signed_command_intf.ml index bc0ebc2c87a..399f8896929 100644 --- a/src/lib/mina_base/signed_command_intf.ml +++ b/src/lib/mina_base/signed_command_intf.ml @@ -116,7 +116,7 @@ module type S = sig val memo : t -> Signed_command_memo.t - val valid_until : t -> Global_slot.t + val valid_until : t -> Global_slot_since_genesis.t (* for filtering *) val minimum_fee : Currency.Fee.t diff --git a/src/lib/mina_base/signed_command_payload.ml b/src/lib/mina_base/signed_command_payload.ml index 389d7b60b80..c23306c4fd7 100644 --- a/src/lib/mina_base/signed_command_payload.ml +++ b/src/lib/mina_base/signed_command_payload.ml @@ -7,7 +7,7 @@ open Snark_params.Tick open Signature_lib module Memo = Signed_command_memo module Account_nonce = Mina_numbers.Account_nonce -module Global_slot = Mina_numbers.Global_slot +module Global_slot_since_genesis = Mina_numbers.Global_slot_since_genesis (* This represents the random oracle input corresponding to the old form of the token ID, which was a 64-bit integer. The default token id was the number 1. @@ -76,7 +76,7 @@ module Common = struct ( Currency.Fee.Stable.V1.t , Public_key.Compressed.Stable.V1.t , Account_nonce.Stable.V1.t - , Global_slot.Stable.V1.t + , Global_slot_since_genesis.Stable.V1.t , Memo.Stable.V1.t ) Poly.Stable.V2.t [@@deriving compare, equal, sexp, hash, yojson] @@ -92,7 +92,7 @@ module Common = struct , Public_key.Compressed.Stable.V1.t , Token_id.Stable.V1.t , Account_nonce.Stable.V1.t - , Global_slot.Stable.V1.t + , Global_slot_since_genesis.Stable.V1.t , Memo.Stable.V1.t ) Poly.Stable.V1.t [@@deriving compare, equal, sexp, hash, yojson] @@ -108,7 +108,7 @@ module Common = struct ; Legacy_token_id.default ; Public_key.Compressed.to_input_legacy fee_payer_pk ; Account_nonce.to_input_legacy nonce - ; Global_slot.to_input_legacy valid_until + ; Global_slot_since_genesis.to_input_legacy valid_until ; bitstring (Memo.to_bits memo) |] @@ -117,7 +117,7 @@ module Common = struct let%map fee = Currency.Fee.gen and fee_payer_pk = Public_key.Compressed.gen and nonce = Account_nonce.gen - and valid_until = Global_slot.gen + and valid_until = Global_slot_since_genesis.gen and memo = let%bind is_digest = Bool.quickcheck_generator in if is_digest then @@ -136,7 +136,7 @@ module Common = struct ( Currency.Fee.var , Public_key.Compressed.var , Account_nonce.Checked.t - , Global_slot.Checked.t + , Global_slot_since_genesis.Checked.t , Memo.Checked.t ) Poly.t @@ -145,7 +145,7 @@ module Common = struct [ Currency.Fee.typ ; Public_key.Compressed.typ ; Account_nonce.typ - ; Global_slot.typ + ; Global_slot_since_genesis.typ ; Memo.typ ] ~var_to_hlist:Poly.to_hlist ~var_of_hlist:Poly.of_hlist @@ -157,13 +157,14 @@ module Common = struct ; fee_payer_pk = Public_key.Compressed.var_of_t fee_payer_pk ; nonce = Account_nonce.Checked.constant nonce ; memo = Memo.Checked.constant memo - ; valid_until = Global_slot.Checked.constant valid_until + ; valid_until = Global_slot_since_genesis.Checked.constant valid_until } let to_input_legacy ({ fee; fee_payer_pk; nonce; valid_until; memo } : var) = let%map nonce = Account_nonce.Checked.to_input_legacy nonce - and valid_until = Global_slot.Checked.to_input_legacy valid_until + and valid_until = + Global_slot_since_genesis.Checked.to_input_legacy valid_until and fee = Currency.Fee.var_to_input_legacy fee in let fee_token = Legacy_token_id.default_checked in Array.reduce_exn ~f:Random_oracle.Input.Legacy.append @@ -307,7 +308,8 @@ let create ~fee ~fee_payer_pk ~nonce ~valid_until ~memo ~body : t = { fee ; fee_payer_pk ; nonce - ; valid_until = Option.value valid_until ~default:Global_slot.max_value + ; valid_until = + Option.value valid_until ~default:Global_slot_since_genesis.max_value ; memo } ; body @@ -368,7 +370,7 @@ let dummy : t = { fee = Currency.Fee.zero ; fee_payer_pk = Public_key.Compressed.empty ; nonce = Account_nonce.zero - ; valid_until = Global_slot.max_value + ; valid_until = Global_slot_since_genesis.max_value ; memo = Memo.dummy } ; body = Payment Payment_payload.dummy diff --git a/src/lib/mina_base/signed_command_payload.mli b/src/lib/mina_base/signed_command_payload.mli index 56f8f49b8e7..b4c8ff43acc 100644 --- a/src/lib/mina_base/signed_command_payload.mli +++ b/src/lib/mina_base/signed_command_payload.mli @@ -95,7 +95,7 @@ module Common : sig ( Currency.Fee.Stable.V1.t , Public_key.Compressed.Stable.V1.t , Mina_numbers.Account_nonce.Stable.V1.t - , Mina_numbers.Global_slot.Stable.V1.t + , Mina_numbers.Global_slot_since_genesis.Stable.V1.t , Signed_command_memo.Stable.V1.t ) Poly.Stable.V2.t [@@deriving compare, equal, sexp, hash, yojson] @@ -107,7 +107,7 @@ module Common : sig , Public_key.Compressed.Stable.V1.t , Token_id.Stable.V1.t , Mina_numbers.Account_nonce.Stable.V1.t - , Mina_numbers.Global_slot.Stable.V1.t + , Mina_numbers.Global_slot_since_genesis.Stable.V1.t , Signed_command_memo.Stable.V1.t ) Poly.Stable.V1.t [@@deriving compare, equal, sexp, hash, yojson] @@ -124,7 +124,7 @@ module Common : sig ( Currency.Fee.var , Public_key.Compressed.var , Mina_numbers.Account_nonce.Checked.t - , Mina_numbers.Global_slot.Checked.t + , Mina_numbers.Global_slot_since_genesis.Checked.t , Signed_command_memo.Checked.t ) Poly.t @@ -183,7 +183,7 @@ val create : fee:Currency.Fee.t -> fee_payer_pk:Public_key.Compressed.t -> nonce:Mina_numbers.Account_nonce.t - -> valid_until:Mina_numbers.Global_slot.t option + -> valid_until:Mina_numbers.Global_slot_since_genesis.t option -> memo:Signed_command_memo.t -> body:Body.t -> t @@ -200,7 +200,7 @@ val fee_excess : t -> Fee_excess.t val nonce : t -> Mina_numbers.Account_nonce.t -val valid_until : t -> Mina_numbers.Global_slot.t +val valid_until : t -> Mina_numbers.Global_slot_since_genesis.t val memo : t -> Signed_command_memo.t diff --git a/src/lib/mina_base/sparse_ledger_base.ml b/src/lib/mina_base/sparse_ledger_base.ml index e97156f6fbe..649cff6309c 100644 --- a/src/lib/mina_base/sparse_ledger_base.ml +++ b/src/lib/mina_base/sparse_ledger_base.ml @@ -37,7 +37,7 @@ module Global_state = struct ; fee_excess : Currency.Amount.Signed.t ; supply_increase : Currency.Amount.Signed.t ; protocol_state : Zkapp_precondition.Protocol_state.View.t - ; block_global_slot : Mina_numbers.Global_slot.t + ; block_global_slot : Mina_numbers.Global_slot_since_genesis.t } [@@deriving sexp, to_yojson] end diff --git a/src/lib/mina_base/sparse_ledger_base.mli b/src/lib/mina_base/sparse_ledger_base.mli index 393a564048a..3c30e910a12 100644 --- a/src/lib/mina_base/sparse_ledger_base.mli +++ b/src/lib/mina_base/sparse_ledger_base.mli @@ -24,7 +24,7 @@ module Global_state : sig ; fee_excess : Currency.Amount.Signed.t ; supply_increase : Currency.Amount.Signed.t ; protocol_state : Zkapp_precondition.Protocol_state.View.t - ; block_global_slot : Mina_numbers.Global_slot.t + ; block_global_slot : Mina_numbers.Global_slot_since_genesis.t } [@@deriving sexp, to_yojson] end @@ -64,4 +64,7 @@ val iteri : t -> f:(Account.Index.t -> Account.t -> unit) -> unit val handler : t -> Handler.t Staged.t val has_locked_tokens_exn : - global_slot:Mina_numbers.Global_slot.t -> account_id:Account_id.t -> t -> bool + global_slot:Mina_numbers.Global_slot_since_genesis.t + -> account_id:Account_id.t + -> t + -> bool diff --git a/src/lib/mina_base/test/account/account.ml b/src/lib/mina_base/test/account/account.ml index 332160df327..7d1e43e20a1 100644 --- a/src/lib/mina_base/test/account/account.ml +++ b/src/lib/mina_base/test/account/account.ml @@ -39,7 +39,7 @@ let%test_module "Test account's timing." = ; vesting_period ; vesting_increment } -> - let global_slot = Global_slot.max_value in + let global_slot = Global_slot_since_genesis.max_value in Option.some @@ Account.min_balance_at_slot ~global_slot ~cliff_time ~cliff_amount ~vesting_period ~vesting_increment @@ -54,9 +54,12 @@ let%test_module "Test account's timing." = (let open Quickcheck.Generator.Let_syntax in let%bind timing = gen_timing in let max_global_slot = - Global_slot.(sub timing.cliff_time (of_int 1)) |> Option.value_exn + Global_slot_since_genesis.(sub timing.cliff_time (of_int 1)) + |> Option.value_exn + in + let%map global_slot = + Global_slot_since_genesis.(gen_incl zero max_global_slot) in - let%map global_slot = Global_slot.(gen_incl zero max_global_slot) in (timing, global_slot)) ~f:(fun (timing, global_slot) -> [%test_eq: Balance.t] timing.initial_minimum_balance @@ -75,8 +78,8 @@ let%test_module "Test account's timing." = Quickcheck.test (let open Quickcheck.Generator.Let_syntax in let%bind timing = gen_timing in - let%bind slot1 = Global_slot.gen in - let%map slot2 = Global_slot.(gen_incl slot1 max_value) in + let%bind slot1 = Global_slot_since_genesis.gen in + let%map slot2 = Global_slot_since_genesis.(gen_incl slot1 max_value) in (timing, slot1, slot2)) ~f:(fun (timing, slot1, slot2) -> [%test_pred: Balance.t * Balance.t] @@ -91,7 +94,8 @@ let%test_module "Test account's timing." = [%test_eq: Balance.t] Balance.zero (min_balance_at_slot timing_rec ~global_slot:vesting_final_slot) ; let one_slot_prior = - Global_slot.(sub vesting_final_slot (of_int 1)) |> Option.value_exn + Global_slot_since_genesis.(sub vesting_final_slot (of_int 1)) + |> Option.value_exn in [%test_pred: Balance.t] Balance.(( < ) zero) @@ -116,12 +120,12 @@ let%test_module "Test account's timing." = |> Option.value_map ~default:vesting_end ~f:(min vesting_end) in let%map global_slot = - Global_slot.gen_incl timing_rec.cliff_time max_slot + Global_slot_since_genesis.gen_incl timing_rec.cliff_time max_slot in (timing, timing_rec, global_slot)) ~f:(fun (timing, timing_rec, global_slot) -> let vesting_period_later = - Global_slot.add global_slot timing_rec.vesting_period + Global_slot_since_genesis.add global_slot timing_rec.vesting_period in let min_bal_at_slot = min_balance_at_slot timing_rec ~global_slot in let min_bal_later = @@ -137,11 +141,11 @@ let%test_module "Test account's timing." = (let open Quickcheck.Generator.Let_syntax in let%bind timing = gen_timing in let max_slot = - Global_slot.(sub timing.cliff_time (of_int 1)) - |> Option.value ~default:Global_slot.zero + Global_slot_since_genesis.(sub timing.cliff_time (of_int 1)) + |> Option.value ~default:Global_slot_since_genesis.zero in - let%bind slot1 = Global_slot.(gen_incl zero max_slot) in - let%map slot2 = Global_slot.gen_incl slot1 max_slot in + let%bind slot1 = Global_slot_since_genesis.(gen_incl zero max_slot) in + let%map slot2 = Global_slot_since_genesis.gen_incl slot1 max_slot in (timing, slot1, slot2)) ~f:(fun (timing, start_slot, end_slot) -> [%test_eq: Balance.t] Balance.zero @@ -155,8 +159,10 @@ let%test_module "Test account's timing." = let vesting_end = Account.timing_final_vesting_slot (Account.Timing.of_record timing) in - let%bind slot1 = Global_slot.(gen_incl vesting_end max_value) in - let%map slot2 = Global_slot.(gen_incl slot1 max_value) in + let%bind slot1 = + Global_slot_since_genesis.(gen_incl vesting_end max_value) + in + let%map slot2 = Global_slot_since_genesis.(gen_incl slot1 max_value) in (timing, slot1, slot2)) ~f:(fun (timing, start_slot, end_slot) -> [%test_eq: Balance.t] Balance.zero @@ -166,8 +172,8 @@ let%test_module "Test account's timing." = Quickcheck.test (let open Quickcheck.Generator.Let_syntax in let%bind timing = gen_timing in - let%bind slot1 = Global_slot.gen in - let%map slot2 = Global_slot.(gen_incl zero slot1) in + let%bind slot1 = Global_slot_since_genesis.gen in + let%map slot2 = Global_slot_since_genesis.(gen_incl zero slot1) in (timing, slot1, slot2)) ~f:(fun (timing, start_slot, end_slot) -> [%test_eq: Balance.t] Balance.zero @@ -181,7 +187,9 @@ let%test_module "Test account's timing." = let%bind timing = Account.gen_timing_at_least_one_vesting_period Balance.max_int in - let min_slot = Global_slot.(add timing.cliff_time (of_int 1)) in + let min_slot = + Global_slot_since_genesis.(add timing.cliff_time (of_int 1)) + in let max_slot = let open Global_slot in sub @@ -189,8 +197,8 @@ let%test_module "Test account's timing." = (of_int 1) |> Option.value ~default:zero in - let%bind slot1 = Global_slot.gen_incl min_slot max_slot in - let%map slot2 = Global_slot.gen_incl slot1 max_slot in + let%bind slot1 = Global_slot_since_genesis.gen_incl min_slot max_slot in + let%map slot2 = Global_slot_since_genesis.gen_incl slot1 max_slot in (timing, slot1, slot2)) ~f:(fun (timing, start_slot, end_slot) -> let open UInt64 in @@ -205,7 +213,7 @@ let%test_module "Test account's timing." = Quickcheck.test (let open Quickcheck.Generator.Let_syntax in let%bind account = Account.gen in - let%map global_slot = Global_slot.gen in + let%map global_slot = Global_slot_since_genesis.gen in (account, global_slot)) ~f:(fun (account, global_slot) -> [%test_eq: Balance.t] account.balance @@ -215,7 +223,7 @@ let%test_module "Test account's timing." = Quickcheck.test (let open Quickcheck.Generator.Let_syntax in let%bind account = Account.gen_timed in - let%map global_slot = Global_slot.gen in + let%map global_slot = Global_slot_since_genesis.gen in (account, global_slot)) ~f:(fun (account, global_slot) -> let minimum_balance = @@ -230,7 +238,9 @@ let%test_module "Test account's timing." = Account.(liquid_balance_at_slot account ~global_slot) ) let%test_unit "Minimum balance checked equal to unchecked." = - let global_slot_var gs = Global_slot.(Checked.constant @@ to_uint32 gs) in + let global_slot_var gs = + Global_slot_since_genesis.(Checked.constant @@ to_uint32 gs) + in Quickcheck.test (let open Quickcheck.Generator.Let_syntax in let%bind timing = gen_timing in @@ -242,12 +252,15 @@ let%test_module "Test account's timing." = let open UInt64.Infix in Amount.(to_uint64 max_int) / Amount.to_uint64 timing.vesting_increment - * UInt64.of_uint32 (Global_slot.to_uint32 timing.vesting_period) + * UInt64.of_uint32 + (Global_slot_since_genesis.to_uint32 timing.vesting_period) |> UInt64.to_uint32 - |> UInt32.add (Global_slot.to_uint32 timing.cliff_time) - |> Global_slot.of_uint32 + |> UInt32.add (Global_slot_since_genesis.to_uint32 timing.cliff_time) + |> Global_slot_since_genesis.of_uint32 + in + let%map global_slot = + Global_slot_since_genesis.(gen_incl zero max_slot) in - let%map global_slot = Global_slot.(gen_incl zero max_slot) in (timing, global_slot)) ~f:(fun (timing, global_slot) -> let min_balance = min_balance_at_slot timing ~global_slot in diff --git a/src/lib/mina_base/transaction_union_payload.ml b/src/lib/mina_base/transaction_union_payload.ml index 3a7ff1e2c05..b9bbf0cf0eb 100644 --- a/src/lib/mina_base/transaction_union_payload.ml +++ b/src/lib/mina_base/transaction_union_payload.ml @@ -171,7 +171,7 @@ module Payload_common = struct , Public_key.Compressed.t , Token_id.t , Mina_numbers.Account_nonce.t - , Mina_numbers.Global_slot.t + , Mina_numbers.Global_slot_since_genesis.t , Signed_command_memo.t ) Poly.t [@@deriving sexp] @@ -186,7 +186,7 @@ module Payload_common = struct , Public_key.Compressed.var , Token_id.Checked.t , Mina_numbers.Account_nonce.Checked.t - , Mina_numbers.Global_slot.Checked.t + , Mina_numbers.Global_slot_since_genesis.Checked.t , Signed_command_memo.Checked.t ) Poly.t @@ -198,7 +198,8 @@ module Payload_common = struct ; fee_token = Token_id.Checked.constant fee_token ; nonce = Mina_numbers.Account_nonce.Checked.constant nonce ; memo = Signed_command_memo.Checked.constant memo - ; valid_until = Mina_numbers.Global_slot.Checked.constant valid_until + ; valid_until = + Mina_numbers.Global_slot_since_genesis.Checked.constant valid_until } end @@ -209,7 +210,7 @@ module Payload_common = struct ; Token_id.typ ; Public_key.Compressed.typ ; Mina_numbers.Account_nonce.typ - ; Mina_numbers.Global_slot.typ + ; Mina_numbers.Global_slot_since_genesis.typ ; Signed_command_memo.typ ] ~var_to_hlist:to_hlist ~value_to_hlist:to_hlist ~var_of_hlist:of_hlist diff --git a/src/lib/mina_base/user_command.ml b/src/lib/mina_base/user_command.ml index e6d2662e1e8..bcb52238fb5 100644 --- a/src/lib/mina_base/user_command.ml +++ b/src/lib/mina_base/user_command.ml @@ -294,7 +294,7 @@ let valid_until (t : t) = | Some valid_until -> valid_until | None -> - Mina_numbers.Global_slot.max_value ) + Mina_numbers.Global_slot_since_genesis.max_value ) module Valid = struct type t_ = t diff --git a/src/lib/mina_base/zkapp_account.ml b/src/lib/mina_base/zkapp_account.ml index 25a956ced58..395aa049ba3 100644 --- a/src/lib/mina_base/zkapp_account.ml +++ b/src/lib/mina_base/zkapp_account.ml @@ -225,7 +225,7 @@ module Stable = struct , Verification_key_wire.Stable.V1.t option , Mina_numbers.Zkapp_version.Stable.V1.t , F.Stable.V1.t - , Mina_numbers.Global_slot.Stable.V1.t + , Mina_numbers.Global_slot_since_genesis.Stable.V1.t , bool , Zkapp_uri.Stable.V1.t ) Poly.Stable.V2.t @@ -240,7 +240,7 @@ type t = , Verification_key_wire.t option , Mina_numbers.Zkapp_version.t , F.t - , Mina_numbers.Global_slot.t + , Mina_numbers.Global_slot_since_genesis.t , bool , Zkapp_uri.t ) Poly.t @@ -259,7 +259,7 @@ module Checked = struct Flagged_option.t , Mina_numbers.Zkapp_version.Checked.t , Pickles.Impls.Step.Field.t - , Mina_numbers.Global_slot.Checked.t + , Mina_numbers.Global_slot_since_genesis.Checked.t , Boolean.var , string Data_as_hash.t ) Poly.t @@ -277,7 +277,8 @@ module Checked = struct ~verification_key:(f field) ~zkapp_version:(f Mina_numbers.Zkapp_version.Checked.to_input) ~action_state:(f app_state) - ~last_action_slot:(f Mina_numbers.Global_slot.Checked.to_input) + ~last_action_slot: + (f Mina_numbers.Global_slot_since_genesis.Checked.to_input) ~proved_state: (f (fun (b : Boolean.var) -> Random_oracle.Input.Chunked.packed ((b :> Field.Var.t), 1) ) ) @@ -352,7 +353,7 @@ let typ : (Checked.t, t) Typ.t = (Option.map ~f:(With_hash.map ~f:(fun x -> Option.value_exn x))) ; Mina_numbers.Zkapp_version.typ ; Pickles_types.Vector.typ Field.typ Pickles_types.Nat.N5.n - ; Mina_numbers.Global_slot.typ + ; Mina_numbers.Global_slot_since_genesis.typ ; Boolean.typ ; Data_as_hash.typ ~hash:hash_zkapp_uri ] @@ -377,7 +378,7 @@ let to_input (t : t) : _ Random_oracle.Input.Chunked.t = (Option.value_map ~default:(dummy_vk_hash ()) ~f:With_hash.hash) ) ) ~zkapp_version:(f Mina_numbers.Zkapp_version.to_input) ~action_state:(f app_state) - ~last_action_slot:(f Mina_numbers.Global_slot.to_input) + ~last_action_slot:(f Mina_numbers.Global_slot_since_genesis.to_input) ~proved_state: (f (fun b -> Random_oracle.Input.Chunked.packed (field_of_bool b, 1))) ~zkapp_uri:(f zkapp_uri_to_input) @@ -393,7 +394,7 @@ let default : _ Poly.t = ; action_state = (let empty = Actions.empty_state_element in [ empty; empty; empty; empty; empty ] ) - ; last_action_slot = Mina_numbers.Global_slot.zero + ; last_action_slot = Mina_numbers.Global_slot_since_genesis.zero ; proved_state = false ; zkapp_uri = "" } @@ -425,8 +426,8 @@ let deriver obj = ~verification_key: !.(option ~js_type:Or_undefined (verification_key_with_hash @@ o ())) ~zkapp_version:!.uint32 ~action_state:!.action_state_deriver - ~last_action_slot:!.global_slot ~proved_state:!.bool ~zkapp_uri:!.string - obj + ~last_action_slot:!.global_slot_since_genesis + ~proved_state:!.bool ~zkapp_uri:!.string obj let gen_uri = let open Quickcheck in @@ -446,14 +447,14 @@ let gen : t Quickcheck.Generator.t = in let%bind zkapp_version = Mina_numbers.Zkapp_version.gen in let%bind seq_state = Generator.list_with_length 5 Field.gen in - let%bind last_sequence_slot = Mina_numbers.Global_slot.gen in + let%bind last_sequence_slot = Mina_numbers.Global_slot_since_genesis.gen in let%map zkapp_uri = gen_uri in let five = Pickles_types.Nat.(S (S (S (S (S Z))))) in { app_state ; verification_key = None ; zkapp_version ; action_state = Pickles_types.(Vector.of_list_and_length_exn seq_state five) - ; last_action_slot = Mina_numbers.Global_slot.zero + ; last_action_slot = Mina_numbers.Global_slot_since_genesis.zero ; proved_state = false ; zkapp_uri } diff --git a/src/lib/mina_base/zkapp_precondition.ml b/src/lib/mina_base/zkapp_precondition.ml index e56a238c56c..eb363417ca5 100644 --- a/src/lib/mina_base/zkapp_precondition.ml +++ b/src/lib/mina_base/zkapp_precondition.ml @@ -144,7 +144,7 @@ module Numeric = struct } let global_slot = - Global_slot. + Global_slot_since_genesis. { zero ; max_value ; compare @@ -195,7 +195,9 @@ module Numeric = struct let length obj = deriver "Length" uint32 range_uint32 obj - let global_slot obj = deriver "GlobalSlot" uint32 range_uint32 obj + let global_slot_since_genesis obj = + deriver "GlobalSlotSinceGenesis" global_slot_since_genesis range_uint32 + obj let block_time obj = deriver "BlockTime" block_time_inner range_uint64 obj end @@ -956,7 +958,7 @@ module Protocol_state = struct ( Frozen_ledger_hash.Stable.V1.t Hash.Stable.V1.t , Length.Stable.V1.t Numeric.Stable.V1.t , unit (* TODO *) - , Global_slot.Stable.V1.t Numeric.Stable.V1.t + , Global_slot_since_genesis.Stable.V1.t Numeric.Stable.V1.t , Currency.Amount.Stable.V1.t Numeric.Stable.V1.t , Epoch_data.Stable.V1.t ) Poly.Stable.V1.t @@ -977,7 +979,7 @@ module Protocol_state = struct ~blockchain_length:!.Numeric.Derivers.length ~min_window_density:!.Numeric.Derivers.length ~last_vrf_output ~total_currency:!.Numeric.Derivers.amount - ~global_slot_since_genesis:!.Numeric.Derivers.global_slot + ~global_slot_since_genesis:!.Numeric.Derivers.global_slot_since_genesis ~staking_epoch_data:!.Epoch_data.deriver ~next_epoch_data:!.Epoch_data.deriver |> finish "NetworkPrecondition" ~t_toplevel_annots:Poly.t_toplevel_annots @@ -1004,7 +1006,8 @@ module Protocol_state = struct Numeric.gen Currency.Amount.gen Currency.Amount.compare in let%bind global_slot_since_genesis = - Numeric.gen Global_slot.gen Global_slot.compare + Numeric.gen Global_slot_since_genesis.gen + Global_slot_since_genesis.compare in let%bind staking_epoch_data = Epoch_data.gen in let%map next_epoch_data = Epoch_data.gen in @@ -1055,7 +1058,7 @@ module Protocol_state = struct ( Frozen_ledger_hash.Stable.V1.t , Length.Stable.V1.t , unit (* TODO *) - , Global_slot.Stable.V1.t + , Global_slot_since_genesis.Stable.V1.t , Currency.Amount.Stable.V1.t , ( ( Frozen_ledger_hash.Stable.V1.t , Currency.Amount.Stable.V1.t ) @@ -1077,7 +1080,7 @@ module Protocol_state = struct ( Frozen_ledger_hash.var , Length.Checked.t , unit (* TODO *) - , Global_slot.Checked.t + , Global_slot_since_genesis.Checked.t , Currency.Amount.var , ( (Frozen_ledger_hash.var, Currency.Amount.var) Epoch_ledger.Poly.t , Epoch_seed.var @@ -1125,7 +1128,7 @@ module Protocol_state = struct ( Frozen_ledger_hash.var Hash.Checked.t , Length.Checked.t Numeric.Checked.t , unit (* TODO *) - , Global_slot.Checked.t Numeric.Checked.t + , Global_slot_since_genesis.Checked.t Numeric.Checked.t , Currency.Amount.var Numeric.Checked.t , Epoch_data.Checked.t ) Poly.Stable.Latest.t @@ -1356,16 +1359,17 @@ module Valid_while = struct [%%versioned module Stable = struct module V1 = struct - type t = Global_slot.Stable.V1.t Numeric.Stable.V1.t + type t = Global_slot_since_genesis.Stable.V1.t Numeric.Stable.V1.t [@@deriving sexp, equal, yojson, hash, compare] let to_latest = Fn.id end end] - let deriver = Numeric.Derivers.global_slot + let deriver = Numeric.Derivers.global_slot_since_genesis - let gen = Numeric.gen Global_slot.gen Global_slot.compare + let gen = + Numeric.gen Global_slot_since_genesis.gen Global_slot_since_genesis.compare let typ = Numeric.(typ Tc.global_slot) @@ -1376,7 +1380,7 @@ module Valid_while = struct valid_while global_slot module Checked = struct - type t = Global_slot.Checked.t Numeric.Checked.t + type t = Global_slot_since_genesis.Checked.t Numeric.Checked.t let check (valid_while : t) global_slot = Numeric.(Checked.check Tc.global_slot) valid_while global_slot diff --git a/src/lib/mina_commands/mina_commands.ml b/src/lib/mina_commands/mina_commands.ml index 7bfbf0a4b12..c4574f37e6b 100644 --- a/src/lib/mina_commands/mina_commands.ml +++ b/src/lib/mina_commands/mina_commands.ml @@ -390,7 +390,7 @@ let get_status ~flag t = Consensus.Data.Consensus_state.consensus_time consensus_state in let global_slot_since_genesis = - Mina_numbers.Global_slot.to_int + Mina_numbers.Global_slot_since_genesis.to_int @@ Consensus.Data.Consensus_state.global_slot_since_genesis consensus_state in diff --git a/src/lib/mina_generators/zkapp_command_generators.ml b/src/lib/mina_generators/zkapp_command_generators.ml index 33cff320d95..f1664541249 100644 --- a/src/lib/mina_generators/zkapp_command_generators.ml +++ b/src/lib/mina_generators/zkapp_command_generators.ml @@ -437,15 +437,20 @@ let gen_protocol_state_precondition let%bind global_slot_since_genesis = let open Mina_numbers in let%bind epsilon1 = - Global_slot.gen_incl (Global_slot.of_int 0) (Global_slot.of_int 10) + Global_slot_span.gen_incl + (Global_slot_span.of_int 0) + (Global_slot_span.of_int 10) in let%bind epsilon2 = - Global_slot.gen_incl (Global_slot.of_int 0) (Global_slot.of_int 10) + Global_slot_span.gen_incl + (Global_slot_span.of_int 0) + (Global_slot_span.of_int 10) in { lower = - Global_slot.sub psv.global_slot_since_genesis epsilon1 - |> Option.value ~default:Global_slot.zero - ; upper = Global_slot.add psv.global_slot_since_genesis epsilon2 + Global_slot_since_genesis.sub psv.global_slot_since_genesis epsilon1 + |> Option.value ~default:Global_slot_since_genesis.zero + ; upper = + Global_slot_since_genesis.add psv.global_slot_since_genesis epsilon2 } |> return |> Zkapp_basic.Or_ignore.gen in @@ -547,16 +552,27 @@ let gen_invalid_protocol_state_precondition | Global_slot_since_genesis -> let open Mina_numbers in let%map global_slot_since_genesis = - let%map epsilon = Global_slot.(gen_incl (of_int 1) (of_int 10)) in - if lower || Global_slot.(psv.global_slot_since_genesis > epsilon) then - { lower = Global_slot.zero + let%map epsilon = Global_slot_span.(gen_incl (of_int 1) (of_int 10)) in + let increment = + Global_slot_span.to_uint32 epsilon + |> Global_slot_since_genesis.of_uint32 + in + if + lower + || Global_slot_since_genesis.( + psv.global_slot_since_genesis > increment) + then + { lower = Global_slot_since_genesis.zero ; upper = - Global_slot.sub psv.global_slot_since_genesis epsilon - |> Option.value ~default:Global_slot.zero + Global_slot_since_genesis.sub psv.global_slot_since_genesis + epsilon + |> Option.value ~default:Global_slot_since_genesis.zero } else - { lower = Global_slot.add psv.global_slot_since_genesis epsilon - ; upper = Global_slot.max_value + { lower = + Global_slot_since_genesis.add psv.global_slot_since_genesis + epsilon + ; upper = Global_slot_since_genesis.max_value } in { protocol_state_precondition with @@ -838,16 +854,20 @@ let gen_account_update_body_components (type a b c d) ?global_slot | Some global_slot -> let open Mina_numbers in let%bind epsilon1 = - Global_slot.gen_incl (Global_slot.of_int 0) (Global_slot.of_int 10) + Global_slot_span.gen_incl + (Global_slot_span.of_int 0) + (Global_slot_span.of_int 10) in let%bind epsilon2 = - Global_slot.gen_incl (Global_slot.of_int 0) (Global_slot.of_int 10) + Global_slot_span.gen_incl + (Global_slot_span.of_int 0) + (Global_slot_span.of_int 10) in Zkapp_precondition.Closed_interval. { lower = - Global_slot.sub global_slot epsilon1 - |> Option.value ~default:Global_slot.zero - ; upper = Global_slot.add global_slot epsilon2 + Global_slot_since_genesis.sub global_slot epsilon1 + |> Option.value ~default:Global_slot_since_genesis.zero + ; upper = Global_slot_since_genesis.add global_slot epsilon2 } |> return |> Zkapp_basic.Or_ignore.gen and may_use_token = diff --git a/src/lib/mina_generators/zkapp_command_generators.mli b/src/lib/mina_generators/zkapp_command_generators.mli index 5e7fa1dac3d..2f35a6f8ad7 100644 --- a/src/lib/mina_generators/zkapp_command_generators.mli +++ b/src/lib/mina_generators/zkapp_command_generators.mli @@ -46,7 +46,7 @@ val gen_protocol_state_precondition : Generated zkapp_command uses dummy signatures and dummy proofs. *) val gen_zkapp_command_from : - ?global_slot:Mina_numbers.Global_slot.t + ?global_slot:Mina_numbers.Global_slot_since_genesis.t -> ?memo:string -> ?no_account_precondition:bool -> ?fee_range:string * string @@ -71,7 +71,7 @@ val gen_zkapp_command_from : (** Generate a list of zkapp_command, `fee_payer_keypairs` contains a list of possible fee payers *) val gen_list_of_zkapp_command_from : - ?global_slot:Mina_numbers.Global_slot.t + ?global_slot:Mina_numbers.Global_slot_since_genesis.t -> ?failure:failure -> ?max_account_updates:int -> ?max_token_updates:int diff --git a/src/lib/mina_graphql/mina_graphql.ml b/src/lib/mina_graphql/mina_graphql.ml index d7193ecaf58..dab42e17250 100644 --- a/src/lib/mina_graphql/mina_graphql.ml +++ b/src/lib/mina_graphql/mina_graphql.ml @@ -249,7 +249,14 @@ module Types = struct let block_time = BlockTime.typ () - let global_slot = GlobalSlot.typ () + let global_slot_since_genesis = GlobalSlotSinceGenesis.typ () + + (* type annotation required because we're not using this yet *) + let global_slot_since_hard_fork : + (Mina_lib.t, GlobalSlotSinceHardFork.t option) typ = + GlobalSlotSinceHardFork.typ () + + let global_slot_span = GlobalSlotSpan.typ () let length = Length.typ () @@ -314,7 +321,8 @@ module Types = struct ; field "slot" ~typ:(non_null uint32) ~args:Arg.[] ~resolve:(fun _ global_slot -> C.slot global_slot) - ; field "globalSlot" ~typ:(non_null global_slot) + ; field "globalSlot" + ~typ:(non_null global_slot_since_genesis) ~args:Arg.[] ~resolve:(fun _ (global_slot : Consensus.Data.Consensus_time.t) -> C.to_global_slot global_slot ) @@ -346,7 +354,7 @@ module Types = struct ~resolve:(fun _ (time, _) -> time) ; field "globalSlotSinceGenesis" ~args:Arg.[] - ~typ:(non_null global_slot) + ~typ:(non_null global_slot_since_genesis) ~resolve:(fun _ (_, slot) -> slot) ] ) @@ -378,7 +386,7 @@ module Types = struct | Produce_now info -> [ of_time ~consensus_constants info.time ] ) ; field "globalSlotSinceGenesis" - ~typ:(non_null @@ list @@ non_null global_slot) + ~typ:(non_null @@ list @@ non_null global_slot_since_genesis) ~doc:"Next block production global-slot-since-genesis " ~args:Arg.[] ~resolve:(fun _ @@ -652,7 +660,7 @@ module Types = struct None | Timed timing_info -> Some timing_info.initial_minimum_balance ) - ; field "cliffTime" ~typ:global_slot + ; field "cliffTime" ~typ:global_slot_since_genesis ~doc:"The cliff time for a time-locked account" ~args:Arg.[] ~resolve:(fun _ timing -> @@ -670,7 +678,7 @@ module Types = struct None | Timed timing_info -> Some timing_info.cliff_amount ) - ; field "vestingPeriod" ~typ:global_slot + ; field "vestingPeriod" ~typ:global_slot_span ~doc:"The vesting period for a time-locked account" ~args:Arg.[] ~resolve:(fun _ timing -> @@ -1651,7 +1659,9 @@ module Types = struct ; abstract_field "feePayer" ~typ:(non_null AccountObj.account) ~args:[] ~doc:"Account that pays the fees for the command" - ; abstract_field "validUntil" ~typ:(non_null global_slot) ~args:[] + ; abstract_field "validUntil" + ~typ:(non_null global_slot_since_genesis) + ~args:[] ~doc: "The global slot number after which this transaction cannot be \ applied" @@ -1738,7 +1748,8 @@ module Types = struct ~resolve:(fun { ctx = mina; _ } cmd -> AccountObj.get_best_ledger_account mina (Signed_command.fee_payer cmd.With_hash.data) ) - ; field_no_status "validUntil" ~typ:(non_null global_slot) ~args:[] + ; field_no_status "validUntil" ~typ:(non_null global_slot_since_genesis) + ~args:[] ~doc: "The global slot number after which this transaction cannot be \ applied" ~resolve:(fun _ cmd -> @@ -2667,7 +2678,8 @@ module Types = struct let arg_typ = obj "VrfMessageInput" ~doc:"The inputs to a vrf evaluation" ~coerce:(fun global_slot epoch_seed delegator_index -> - { Consensus_vrf.Layout.Message.global_slot + { Consensus_vrf.Layout.Message.global_slot = + Mina_numbers.Global_slot_since_genesis.of_uint32 global_slot ; epoch_seed = Mina_base.Epoch_seed.of_base58_check_exn epoch_seed ; delegator_index } ) @@ -2680,7 +2692,8 @@ module Types = struct ~typ:(non_null int) ] ~split:(fun f (t : input) -> - f t.global_slot + f + (Mina_numbers.Global_slot_since_genesis.to_uint32 t.global_slot) (Mina_base.Epoch_seed.to_base58_check t.epoch_seed) t.delegator_index ) end @@ -3304,7 +3317,8 @@ module Types = struct let vrf_message : ('context, Consensus_vrf.Layout.Message.t option) typ = let open Consensus_vrf.Layout.Message in obj "VrfMessage" ~doc:"The inputs to a vrf evaluation" ~fields:(fun _ -> - [ field "globalSlot" ~typ:(non_null global_slot) + [ field "globalSlot" + ~typ:(non_null global_slot_since_genesis) ~args:Arg.[] ~resolve:(fun _ { global_slot; _ } -> global_slot) ; field "epochSeed" ~typ:(non_null epoch_seed) @@ -3859,7 +3873,7 @@ module Mutations = struct let open Result.Let_syntax in (* TODO: We should put a more sensible default here. *) let valid_until = - Option.map ~f:Mina_numbers.Global_slot.of_uint32 valid_until + Option.map ~f:Mina_numbers.Global_slot_since_genesis.of_uint32 valid_until in let%bind fee = result_of_exn Currency.Fee.of_uint64 fee @@ -5901,7 +5915,7 @@ module Queries = struct in List.map (Queue.to_list vrf_state.queue) ~f:(fun { global_slot; _ } -> - Unsigned.UInt32.to_int global_slot ) ) + Mina_numbers.Global_slot_since_genesis.to_int global_slot ) ) let internal_logs = io_field "internalLogs" diff --git a/src/lib/mina_ledger/ledger.ml b/src/lib/mina_ledger/ledger.ml index 169801c2c52..fe8f3ad4f60 100644 --- a/src/lib/mina_ledger/ledger.ml +++ b/src/lib/mina_ledger/ledger.ml @@ -483,7 +483,8 @@ let%test_unit "tokens test" = match apply_zkapp_command_unchecked ~constraint_constants ~global_slot: - (Mina_numbers.Global_slot.succ view.global_slot_since_genesis) + (Mina_numbers.Global_slot_since_genesis.succ + view.global_slot_since_genesis ) ~state_view:view ledger zkapp_command with | Ok ({ command = { status; _ }; _ }, _) -> ( diff --git a/src/lib/mina_ledger/ledger.mli b/src/lib/mina_ledger/ledger.mli index 0a7e565e704..6324071567e 100644 --- a/src/lib/mina_ledger/ledger.mli +++ b/src/lib/mina_ledger/ledger.mli @@ -115,20 +115,20 @@ val create_new_account_exn : t -> Account_id.t -> Account.t -> unit val update_action_state : Snark_params.Tick.Field.t Pickles_types.Vector.Vector_5.t -> Zkapp_account.Actions.t - -> txn_global_slot:Mina_numbers.Global_slot.t - -> last_action_slot:Mina_numbers.Global_slot.t + -> txn_global_slot:Mina_numbers.Global_slot_since_genesis.t + -> last_action_slot:Mina_numbers.Global_slot_since_genesis.t -> Snark_params.Tick.Field.t Pickles_types.Vector.Vector_5.t - * Mina_numbers.Global_slot.t + * Mina_numbers.Global_slot_since_genesis.t val has_locked_tokens : - global_slot:Mina_numbers.Global_slot.t + global_slot:Mina_numbers.Global_slot_since_genesis.t -> account_id:Account_id.t -> t -> bool Or_error.t val merkle_root_after_zkapp_command_exn : constraint_constants:Genesis_constants.Constraint_constants.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Zkapp_precondition.Protocol_state.View.t -> t -> Zkapp_command.Valid.t @@ -136,7 +136,7 @@ val merkle_root_after_zkapp_command_exn : val merkle_root_after_user_command_exn : constraint_constants:Genesis_constants.Constraint_constants.t - -> txn_global_slot:Mina_numbers.Global_slot.t + -> txn_global_slot:Mina_numbers.Global_slot_since_genesis.t -> t -> Signed_command.With_valid_signature.t -> Ledger_hash.t @@ -171,12 +171,12 @@ module For_tests : sig val validate_timing_with_min_balance : account:Account.t -> txn_amount:Amount.t - -> txn_global_slot:Global_slot.t + -> txn_global_slot:Global_slot_since_genesis.t -> (Account.Timing.t * [> `Min_balance of Balance.t ]) Or_error.t val validate_timing : account:Account.t -> txn_amount:Amount.t - -> txn_global_slot:Global_slot.t + -> txn_global_slot:Global_slot_since_genesis.t -> Account.Timing.t Or_error.t end diff --git a/src/lib/mina_numbers/dune b/src/lib/mina_numbers/dune index c7f07ffee8e..656ba6a2f13 100644 --- a/src/lib/mina_numbers/dune +++ b/src/lib/mina_numbers/dune @@ -36,7 +36,7 @@ ) (preprocessor_deps ../../config.mlh) (preprocess - (pps ppx_version ppx_optcomp ppx_bin_prot ppx_sexp_conv ppx_compare ppx_hash + (pps ppx_version ppx_mina ppx_optcomp ppx_bin_prot ppx_sexp_conv ppx_compare ppx_hash ppx_let ppx_inline_test ppx_compare ppx_deriving_yojson ppx_assert)) (instrumentation (backend bisect_ppx)) (synopsis "Snark-friendly numbers used in Coda consensus")) diff --git a/src/lib/mina_numbers/global_slot.ml b/src/lib/mina_numbers/global_slot.ml index 48356386a18..853608b6645 100644 --- a/src/lib/mina_numbers/global_slot.ml +++ b/src/lib/mina_numbers/global_slot.ml @@ -1,16 +1,103 @@ -(** Global slot implementation *) +open Core_kernel -(** See documentation of the {!Mina_wire_types} library *) -module Wire_types = Mina_wire_types.Mina_numbers.Global_slot +type uint32 = Unsigned.uint32 -module Make_sig (A : Wire_types.Types.S) = struct - module type S = Nat.Intf.UInt32_A with type Stable.V1.t = A.V1.t -end +module type S = sig + [%%versioned: + module Stable : sig + module V1 : sig + type t [@@deriving sexp, compare] + end + end] + + module T : Intf.UInt32 -module T = Nat.Make32 () + val to_uint32 : t -> uint32 -module Make_str (_ : Wire_types.Concrete) = struct - include T + val of_uint32 : uint32 -> t end -include Wire_types.Make (Make_sig) (Make_str) +module Make (M : S) = struct + type global_slot_span = Global_slot_span.t + + module T = M.T + + let to_uint32 = M.to_uint32 + + let of_uint32 = M.of_uint32 + + module Checked = struct + include T.Checked + + type global_slot_span_checked = Global_slot_span.Checked.t + + let constant t = constant (to_uint32 t) + + open Snark_params.Tick + + let typ = Typ.transport T.Checked.typ ~there:to_uint32 ~back:of_uint32 + + let diff_or_zero t1 t2 = + let%map underflow, diff = T.Checked.sub_or_zero t1 t2 in + let field = T.Checked.to_field diff in + (* `of_field` is the identity function, here applied to a checked field *) + let span = Global_slot_span.Checked.Unsafe.of_field field in + (underflow, span) + end + + let to_string t = Unsigned.UInt32.to_string @@ to_uint32 t + + let of_string s = of_uint32 @@ Unsigned.UInt32.of_string s + + let typ = Checked.typ + + let gen = + let%map.Quickcheck u32 = T.gen in + of_uint32 u32 + + let gen_incl t1 t2 = + let u32_1 = to_uint32 t1 in + let u32_2 = to_uint32 t2 in + let%map.Quickcheck u32 = T.gen_incl u32_1 u32_2 in + of_uint32 u32 + + let dhall_type = Ppx_dhall_type.Dhall_type.Text + + let zero = of_uint32 T.zero + + let succ t = + let u32 = to_uint32 t in + of_uint32 (T.succ u32) + + let max_value = of_uint32 Unsigned.UInt32.max_int + + let to_field t = T.to_field (to_uint32 t) + + let to_input t = T.to_input (to_uint32 t) + + let to_input_legacy t = T.to_input_legacy (to_uint32 t) + + include Comparable.Make (M.Stable.Latest) + + let add t span = + let u32_slot = to_uint32 t in + let u32_span = Global_slot_span.to_uint32 span in + let u32_sum = T.add u32_slot u32_span in + of_uint32 u32_sum + + let sub t span = + let u32_slot = to_uint32 t in + let u32_span = Global_slot_span.to_uint32 span in + Option.map (T.sub u32_slot u32_span) ~f:of_uint32 + + let diff t1 t2 = + let u32_1 = to_uint32 t1 in + let u32_2 = to_uint32 t2 in + Option.map (T.sub u32_1 u32_2) ~f:Global_slot_span.of_uint32 + + let of_int n = of_uint32 (T.of_int n) + + let to_int t = T.to_int (to_uint32 t) + + let random () = of_uint32 (T.random ()) +end diff --git a/src/lib/mina_numbers/global_slot_intf.ml b/src/lib/mina_numbers/global_slot_intf.ml new file mode 100644 index 00000000000..93c43a0983f --- /dev/null +++ b/src/lib/mina_numbers/global_slot_intf.ml @@ -0,0 +1,83 @@ +module type S_base = sig + [%%versioned: + module Stable : sig + module V1 : sig + [@@@with_all_version_tags] + + type t [@@deriving hash, sexp, compare, equal, yojson] + end + end] + + val to_uint32 : t -> Unsigned.uint32 + + val of_uint32 : Unsigned.uint32 -> t + + val to_string : t -> string + + val of_string : string -> t + + val gen : t Core_kernel.Quickcheck.Generator.t + + val gen_incl : t -> t -> t Core_kernel.Quickcheck.Generator.t + + val dhall_type : Ppx_dhall_type.Dhall_type.t + + val zero : t + + val succ : t -> t + + val of_int : int -> t + + val to_int : t -> int + + val max_value : t + + val to_input : t -> Snark_params.Tick.Field.t Random_oracle.Input.Chunked.t + + val to_input_legacy : t -> ('a, bool) Random_oracle.Legacy.Input.t + + val to_field : t -> Snark_params.Tick.Field.t + + val random : unit -> t + + include Core_kernel.Comparable.S with type t := t +end + +module type S = sig + include S_base + + type global_slot_span + + module Checked : sig + include Intf.S_checked with type unchecked := t + + type global_slot_span_checked + + open Snark_params.Tick + + val diff_or_zero : + t + -> t + -> ([ `Underflow of Boolean.var ] * global_slot_span_checked) Checked.t + end + + val typ : (Checked.t, t) Snark_params.Tick.Typ.t + + val add : t -> global_slot_span -> t + + val sub : t -> global_slot_span -> t option + + val diff : t -> t -> global_slot_span option +end + +module type S_span = sig + include S_base + + module Checked : Intf.S_checked with type unchecked := t + + val typ : (Checked.t, t) Snark_params.Tick.Typ.t + + val add : t -> t -> t + + val sub : t -> t -> t option +end diff --git a/src/lib/mina_numbers/global_slot_since_genesis.ml b/src/lib/mina_numbers/global_slot_since_genesis.ml new file mode 100644 index 00000000000..3ab3c1adf31 --- /dev/null +++ b/src/lib/mina_numbers/global_slot_since_genesis.ml @@ -0,0 +1,47 @@ +(** Global slot (since genesis) implementation *) + +open Core_kernel + +(** See documentation of the {!Mina_wire_types} library *) +module Wire_types = Mina_wire_types.Mina_numbers.Global_slot_since_genesis + +type uint32 = Unsigned.uint32 + +module Make_sig (A : Wire_types.Types.S) = struct + module type S = sig + include + Global_slot_intf.S + with type Stable.V1.t = A.V1.t + and type global_slot_span = Global_slot_span.t + and type Checked.global_slot_span_checked = Global_slot_span.Checked.t + end +end + +module T = Nat.Make32 () + +module Make_str (_ : Wire_types.Concrete) = struct + module M = struct + [%%versioned + module Stable = struct + module V1 = struct + [@@@with_all_version_tags] + + type t = Wire_types.global_slot = Since_genesis of T.Stable.V1.t + [@@deriving hash, sexp, compare, equal, yojson] + + let to_latest = Fn.id + end + end] + + module T = T + + let to_uint32 (Since_genesis u32) : uint32 = u32 + + let of_uint32 u32 : t = Since_genesis u32 + end + + include M + include Global_slot.Make (M) +end + +include Wire_types.Make (Make_sig) (Make_str) diff --git a/src/lib/mina_numbers/global_slot_since_genesis.mli b/src/lib/mina_numbers/global_slot_since_genesis.mli new file mode 100644 index 00000000000..726d0300956 --- /dev/null +++ b/src/lib/mina_numbers/global_slot_since_genesis.mli @@ -0,0 +1,7 @@ +include + Global_slot_intf.S + with type Stable.V1.t = + Mina_wire_types.Mina_numbers.Global_slot_since_genesis.V1.t + and type global_slot_span = + Mina_wire_types.Mina_numbers.Global_slot_span.V1.t + and type Checked.global_slot_span_checked = Global_slot_span.Checked.t diff --git a/src/lib/mina_numbers/global_slot_since_hard_fork.ml b/src/lib/mina_numbers/global_slot_since_hard_fork.ml new file mode 100644 index 00000000000..faffe9e9a10 --- /dev/null +++ b/src/lib/mina_numbers/global_slot_since_hard_fork.ml @@ -0,0 +1,47 @@ +(** Global slot (since hard fork) implementation *) + +open Core_kernel + +(** See documentation of the {!Mina_wire_types} library *) +module Wire_types = Mina_wire_types.Mina_numbers.Global_slot_since_hard_fork + +type uint32 = Unsigned.uint32 + +module Make_sig (A : Wire_types.Types.S) = struct + module type S = sig + include + Global_slot_intf.S + with type Stable.V1.t = A.V1.t + and type global_slot_span = Global_slot_span.t + and type Checked.global_slot_span_checked = Global_slot_span.Checked.t + end +end + +module T = Nat.Make32 () + +module Make_str (_ : Wire_types.Concrete) = struct + module M = struct + [%%versioned + module Stable = struct + module V1 = struct + [@@@with_all_version_tags] + + type t = Wire_types.global_slot = Since_hard_fork of T.Stable.V1.t + [@@deriving hash, sexp, compare, equal, yojson] + + let to_latest = Fn.id + end + end] + + module T = T + + let to_uint32 (Since_hard_fork u32) : uint32 = u32 + + let of_uint32 u32 : t = Since_hard_fork u32 + end + + include M + include Global_slot.Make (M) +end + +include Wire_types.Make (Make_sig) (Make_str) diff --git a/src/lib/mina_numbers/global_slot_since_hard_fork.mli b/src/lib/mina_numbers/global_slot_since_hard_fork.mli new file mode 100644 index 00000000000..4329de2b0fc --- /dev/null +++ b/src/lib/mina_numbers/global_slot_since_hard_fork.mli @@ -0,0 +1,7 @@ +include + Global_slot_intf.S + with type Stable.V1.t = + Mina_wire_types.Mina_numbers.Global_slot_since_hard_fork.V1.t + and type global_slot_span = + Mina_wire_types.Mina_numbers.Global_slot_span.V1.t + and type Checked.global_slot_span_checked = Global_slot_span.Checked.t diff --git a/src/lib/mina_numbers/global_slot_span.ml b/src/lib/mina_numbers/global_slot_span.ml new file mode 100644 index 00000000000..f97c7fcd91c --- /dev/null +++ b/src/lib/mina_numbers/global_slot_span.ml @@ -0,0 +1,95 @@ +(** Global slot span implementation *) + +open Core_kernel + +(** See documentation of the {!Mina_wire_types} library *) +module Wire_types = Mina_wire_types.Mina_numbers.Global_slot_span + +type uint32 = Unsigned.uint32 + +module Make_sig (A : Wire_types.Types.S) = struct + module type S = sig + include Global_slot_intf.S_span with type Stable.V1.t = A.V1.t + end +end + +module T = Nat.Make32 () + +module Make_str (_ : Wire_types.Concrete) = struct + [%%versioned + module Stable = struct + module V1 = struct + [@@@with_all_version_tags] + + type t = Wire_types.span = Span of T.Stable.V1.t + [@@deriving hash, sexp, compare, equal, yojson] + + let to_latest = Fn.id + end + end] + + let to_uint32 (Span u32) : uint32 = u32 + + let of_uint32 u32 : t = Span u32 + + module Checked = struct + include T.Checked + + let constant t = constant @@ to_uint32 t + + let typ = + Snark_params.Tick.Typ.transport T.Checked.typ ~there:to_uint32 + ~back:of_uint32 + end + + let to_string t = Unsigned.UInt32.to_string @@ to_uint32 t + + let of_string s = of_uint32 @@ Unsigned.UInt32.of_string s + + let typ = Checked.typ + + let gen = + let%map.Quickcheck u32 = T.gen in + of_uint32 u32 + + let gen_incl t1 t2 = + let u32_1 = to_uint32 t1 in + let u32_2 = to_uint32 t2 in + let%map.Quickcheck u32 = T.gen_incl u32_1 u32_2 in + of_uint32 u32 + + let dhall_type = Ppx_dhall_type.Dhall_type.Text + + let zero = of_uint32 T.zero + + let succ t = of_uint32 (T.succ @@ to_uint32 t) + + let max_value = of_uint32 Unsigned.UInt32.max_int + + let to_field t = T.to_field (to_uint32 t) + + let to_input t = T.to_input (to_uint32 t) + + let to_input_legacy t = T.to_input_legacy (to_uint32 t) + + include Comparable.Make (Stable.Latest) + + let add t1 t2 = + let u32_1 = to_uint32 t1 in + let u32_2 = to_uint32 t2 in + let sum = T.add u32_1 u32_2 in + of_uint32 sum + + let sub t1 t2 = + let u32_1 = to_uint32 t1 in + let u32_2 = to_uint32 t2 in + Option.map (T.sub u32_1 u32_2) ~f:of_uint32 + + let of_int n = of_uint32 (T.of_int n) + + let to_int t = T.to_int (to_uint32 t) + + let random () = of_uint32 (T.random ()) +end + +include Wire_types.Make (Make_sig) (Make_str) diff --git a/src/lib/mina_numbers/global_slot.mli b/src/lib/mina_numbers/global_slot_span.mli similarity index 63% rename from src/lib/mina_numbers/global_slot.mli rename to src/lib/mina_numbers/global_slot_span.mli index 91c15d7bbc7..503465dc0d0 100644 --- a/src/lib/mina_numbers/global_slot.mli +++ b/src/lib/mina_numbers/global_slot_span.mli @@ -1,3 +1,3 @@ include - Nat.Intf.UInt32_A - with type Stable.V1.t = Mina_wire_types.Mina_numbers.Global_slot.V1.t + Global_slot_intf.S_span + with type Stable.V1.t = Mina_wire_types.Mina_numbers.Global_slot_span.V1.t diff --git a/src/lib/mina_numbers/intf.ml b/src/lib/mina_numbers/intf.ml index 5405dd6f8ac..f4b6988b04f 100644 --- a/src/lib/mina_numbers/intf.ml +++ b/src/lib/mina_numbers/intf.ml @@ -66,8 +66,6 @@ end module type S_checked = sig type unchecked - open Snark_params.Tick - type var val constant : unchecked -> var diff --git a/src/lib/mina_numbers/mina_numbers.ml b/src/lib/mina_numbers/mina_numbers.ml index 0417367b8e8..2e696ee5976 100644 --- a/src/lib/mina_numbers/mina_numbers.ml +++ b/src/lib/mina_numbers/mina_numbers.ml @@ -2,6 +2,8 @@ module Account_nonce = Account_nonce module Length = Length module Index = Index module Nat = Nat -module Global_slot = Global_slot +module Global_slot_since_genesis = Global_slot_since_genesis +module Global_slot_since_hard_fork = Global_slot_since_hard_fork +module Global_slot_span = Global_slot_span module Hd_index = Hd_index module Zkapp_version = Zkapp_version diff --git a/src/lib/mina_numbers/unix/graphql_scalars.ml b/src/lib/mina_numbers/unix/graphql_scalars.ml index 5a32bb75972..4d5eb75ba28 100644 --- a/src/lib/mina_numbers/unix/graphql_scalars.ml +++ b/src/lib/mina_numbers/unix/graphql_scalars.ml @@ -2,13 +2,33 @@ open Graphql_basic_scalars.Utils open Graphql_basic_scalars.Testing module Make (Schema : Schema) = struct - module GlobalSlot = + module GlobalSlotSinceGenesis = Make_scalar_using_to_string - (Mina_numbers.Global_slot) + (Mina_numbers.Global_slot_since_genesis) (struct - let name = "Globalslot" + let name = "GlobalslotSinceGenesis" - let doc = "globalslot" + let doc = "globalslotsincegenesis" + end) + (Schema) + + module GlobalSlotSinceHardFork = + Make_scalar_using_to_string + (Mina_numbers.Global_slot_since_hard_fork) + (struct + let name = "GlobalslotSinceHardFork" + + let doc = "globalslotsincehardfork" + end) + (Schema) + + module GlobalSlotSpan = + Make_scalar_using_to_string + (Mina_numbers.Global_slot_span) + (struct + let name = "GlobalslotSpan" + + let doc = "globalslotspan" end) (Schema) @@ -39,8 +59,18 @@ let%test_module "Roundtrip tests" = ( module struct include Make (Test_schema) - let%test_module "GlobalSlot" = - (module Make_test (GlobalSlot) (Mina_numbers.Global_slot)) + let%test_module "GlobalSlotSinceGenesis" = + ( module Make_test + (GlobalSlotSinceGenesis) + (Mina_numbers.Global_slot_since_genesis) ) + + let%test_module "GlobalSlotSinceHardFork" = + ( module Make_test + (GlobalSlotSinceHardFork) + (Mina_numbers.Global_slot_since_hard_fork) ) + + let%test_module "GlobalSlotSpan" = + (module Make_test (GlobalSlotSpan) (Mina_numbers.Global_slot_span)) let%test_module "AccountNonce" = (module Make_test (AccountNonce) (Mina_numbers.Account_nonce)) diff --git a/src/lib/mina_state/snarked_ledger_state.ml b/src/lib/mina_state/snarked_ledger_state.ml index 52aa4eda61b..6a84e2126d6 100644 --- a/src/lib/mina_state/snarked_ledger_state.ml +++ b/src/lib/mina_state/snarked_ledger_state.ml @@ -1,7 +1,7 @@ open Core open Mina_base open Snark_params -module Global_slot = Mina_numbers.Global_slot +module Global_slot = Mina_numbers.Global_slot_since_genesis open Currency let top_hash_logging_enabled = ref false diff --git a/src/lib/mina_wire_types/consensus/consensus_global_slot.ml b/src/lib/mina_wire_types/consensus/consensus_global_slot.ml index f202942fe0f..fc659ca6c06 100644 --- a/src/lib/mina_wire_types/consensus/consensus_global_slot.ml +++ b/src/lib/mina_wire_types/consensus/consensus_global_slot.ml @@ -10,7 +10,9 @@ module Types = struct module V1 : sig type t = - (Mina_numbers.Global_slot.V1.t, Mina_numbers.Length.V1.t) Poly.V1.t + ( Mina_numbers.Global_slot_since_genesis.V1.t + , Mina_numbers.Length.V1.t ) + Poly.V1.t end end end @@ -24,7 +26,10 @@ module type Concrete = sig end module V1 : sig - type t = (Mina_numbers.Global_slot.V1.t, Mina_numbers.Length.V1.t) Poly.V1.t + type t = + ( Mina_numbers.Global_slot_since_genesis.V1.t + , Mina_numbers.Length.V1.t ) + Poly.V1.t end end @@ -37,7 +42,10 @@ module M = struct end module V1 = struct - type t = (Mina_numbers.Global_slot.V1.t, Mina_numbers.Length.V1.t) Poly.V1.t + type t = + ( Mina_numbers.Global_slot_since_genesis.V1.t + , Mina_numbers.Length.V1.t ) + Poly.V1.t end end diff --git a/src/lib/mina_wire_types/consensus/consensus_global_slot.mli b/src/lib/mina_wire_types/consensus/consensus_global_slot.mli index b229b7d8147..1f064b142a3 100644 --- a/src/lib/mina_wire_types/consensus/consensus_global_slot.mli +++ b/src/lib/mina_wire_types/consensus/consensus_global_slot.mli @@ -10,7 +10,9 @@ module Types : sig module V1 : sig type t = - (Mina_numbers.Global_slot.V1.t, Mina_numbers.Length.V1.t) Poly.V1.t + ( Mina_numbers.Global_slot_since_genesis.V1.t + , Mina_numbers.Length.V1.t ) + Poly.V1.t end end end @@ -24,7 +26,10 @@ module type Concrete = sig end module V1 : sig - type t = (Mina_numbers.Global_slot.V1.t, Mina_numbers.Length.V1.t) Poly.V1.t + type t = + ( Mina_numbers.Global_slot_since_genesis.V1.t + , Mina_numbers.Length.V1.t ) + Poly.V1.t end end diff --git a/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.ml b/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.ml index 16469c3a377..b5a8cae6fd4 100644 --- a/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.ml +++ b/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.ml @@ -97,7 +97,7 @@ module type Concrete = sig , Consensus_vrf.Output.Truncated.V1.t , Currency.Amount.V1.t , Consensus_global_slot.V1.t - , Mina_numbers.Global_slot.V1.t + , Mina_numbers.Global_slot_since_genesis.V1.t , Epoch_data.Staking_value_versioned.Value.V1.t , Epoch_data.Next_value_versioned.Value.V1.t , bool @@ -190,7 +190,7 @@ module M = struct , Consensus_vrf.Output.Truncated.V1.t , Currency.Amount.V1.t , Consensus_global_slot.V1.t - , Mina_numbers.Global_slot.V1.t + , Mina_numbers.Global_slot_since_genesis.V1.t , Epoch_data.Staking_value_versioned.Value.V1.t , Epoch_data.Next_value_versioned.Value.V1.t , bool diff --git a/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.mli b/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.mli index 356e70b77c7..10c487d6190 100644 --- a/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.mli +++ b/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.mli @@ -97,7 +97,7 @@ module type Concrete = sig , Consensus_vrf.Output.Truncated.V1.t , Currency.Amount.V1.t , Consensus_global_slot.V1.t - , Mina_numbers.Global_slot.V1.t + , Mina_numbers.Global_slot_since_genesis.V1.t , Epoch_data.Staking_value_versioned.Value.V1.t , Epoch_data.Next_value_versioned.Value.V1.t , bool diff --git a/src/lib/mina_wire_types/mina_base/mina_base_account_update.ml b/src/lib/mina_wire_types/mina_base/mina_base_account_update.ml index 7230585e7c2..92fff862ef1 100644 --- a/src/lib/mina_wire_types/mina_base/mina_base_account_update.ml +++ b/src/lib/mina_wire_types/mina_base/mina_base_account_update.ml @@ -16,9 +16,9 @@ module Update = struct module V1 = struct type t = { initial_minimum_balance : Currency.Balance.V1.t - ; cliff_time : Mina_numbers.Global_slot.V1.t + ; cliff_time : Mina_numbers.Global_slot_since_genesis.V1.t ; cliff_amount : Currency.Amount.V1.t - ; vesting_period : Mina_numbers.Global_slot.V1.t + ; vesting_period : Mina_numbers.Global_slot_span.V1.t ; vesting_increment : Currency.Amount.V1.t } end @@ -72,7 +72,7 @@ module Body = struct type t = { public_key : Public_key.Compressed.V1.t ; fee : Currency.Fee.V1.t - ; valid_until : Mina_numbers.Global_slot.V1.t option + ; valid_until : Mina_numbers.Global_slot_since_genesis.V1.t option ; nonce : Mina_numbers.Account_nonce.V1.t } end diff --git a/src/lib/mina_wire_types/mina_base/mina_base_signed_command_payload.ml b/src/lib/mina_wire_types/mina_base/mina_base_signed_command_payload.ml index 6bba8228e99..577964d5a13 100644 --- a/src/lib/mina_wire_types/mina_base/mina_base_signed_command_payload.ml +++ b/src/lib/mina_wire_types/mina_base/mina_base_signed_command_payload.ml @@ -28,7 +28,7 @@ module Common = struct , Public_key.Compressed.V1.t , Mina_base_token_id.V2.t , Mina_numbers.Account_nonce.V1.t - , Mina_numbers.Global_slot.V1.t + , Mina_numbers.Global_slot_since_genesis.V1.t , Mina_base_signed_command_memo.V1.t ) Poly.V1.t end @@ -38,7 +38,7 @@ module Common = struct ( Currency.Fee.V1.t , Public_key.Compressed.V1.t , Mina_numbers.Account_nonce.V1.t - , Mina_numbers.Global_slot.V1.t + , Mina_numbers.Global_slot_since_genesis.V1.t , Mina_base_signed_command_memo.V1.t ) Poly.V2.t end diff --git a/src/lib/mina_wire_types/mina_base/mina_base_zkapp_precondition.ml b/src/lib/mina_wire_types/mina_base/mina_base_zkapp_precondition.ml index fbdbb19630e..cb603b0e638 100644 --- a/src/lib/mina_wire_types/mina_base/mina_base_zkapp_precondition.ml +++ b/src/lib/mina_wire_types/mina_base/mina_base_zkapp_precondition.ml @@ -51,7 +51,7 @@ module Protocol_state = struct ( Mina_base_ledger_hash.V1.t Mina_base_zkapp_basic.Or_ignore.V1.t , Mina_numbers.Length.V1.t Numeric.V1.t , unit (* TODO *) - , Mina_numbers.Global_slot.V1.t Numeric.V1.t + , Mina_numbers.Global_slot_since_genesis.V1.t Numeric.V1.t , Currency.Amount.V1.t Numeric.V1.t , Epoch_data.V1.t ) Poly.V1.t @@ -60,7 +60,7 @@ end module Valid_while = struct module V1 = struct - type t = Mina_numbers.Global_slot.V1.t Numeric.V1.t + type t = Mina_numbers.Global_slot_since_genesis.V1.t Numeric.V1.t end end diff --git a/src/lib/mina_wire_types/mina_numbers.ml b/src/lib/mina_wire_types/mina_numbers.ml index 81e05adc580..90eca002fe3 100644 --- a/src/lib/mina_wire_types/mina_numbers.ml +++ b/src/lib/mina_wire_types/mina_numbers.ml @@ -21,16 +21,64 @@ module Account_nonce = struct include M end -module Global_slot = struct +module Global_slot_since_genesis = struct module Types = struct module type S = V1S0 end - module type Concrete = Types.S with type V1.t = Unsigned.UInt32.t + type global_slot = Since_genesis of Unsigned.UInt32.t + + module type Concrete = Types.S with type V1.t = global_slot module M = struct module V1 = struct - type t = Unsigned.UInt32.t + type t = global_slot + end + end + + module type Local_sig = Signature(Types).S + + module Make + (Signature : Local_sig) (F : functor (A : Concrete) -> Signature(A).S) = + F (M) + include M +end + +module Global_slot_since_hard_fork = struct + module Types = struct + module type S = V1S0 + end + + type global_slot = Since_hard_fork of Unsigned.UInt32.t + + module type Concrete = Types.S with type V1.t = global_slot + + module M = struct + module V1 = struct + type t = global_slot + end + end + + module type Local_sig = Signature(Types).S + + module Make + (Signature : Local_sig) (F : functor (A : Concrete) -> Signature(A).S) = + F (M) + include M +end + +module Global_slot_span = struct + module Types = struct + module type S = V1S0 + end + + type span = Span of Unsigned.UInt32.t + + module type Concrete = Types.S with type V1.t = span + + module M = struct + module V1 = struct + type t = span end end diff --git a/src/lib/mina_wire_types/test/type_equalities.ml b/src/lib/mina_wire_types/test/type_equalities.ml index cd56c4489ca..039f8a44dc3 100644 --- a/src/lib/mina_wire_types/test/type_equalities.ml +++ b/src/lib/mina_wire_types/test/type_equalities.ml @@ -119,7 +119,7 @@ module Mina_numbers = struct module O = Mina_numbers module W = WT.Mina_numbers include Assert_equal0V1 (O.Account_nonce.Stable) (W.Account_nonce) - include Assert_equal0V1 (O.Global_slot.Stable) (W.Global_slot) + include Assert_equal0V1 (O.Global_slot_since_genesis.Stable) (W.Global_slot) include Assert_equal0V1 (O.Length.Stable) (W.Length) include Assert_equal0V1 (O.Index.Stable) (W.Index) end diff --git a/src/lib/network_pool/indexed_pool.ml b/src/lib/network_pool/indexed_pool.ml index 6280b769628..957d7e10f72 100644 --- a/src/lib/network_pool/indexed_pool.ml +++ b/src/lib/network_pool/indexed_pool.ml @@ -14,7 +14,7 @@ let replace_fee : Currency.Fee.t = Currency.Fee.of_nanomina_int_exn 1 * Iff a command is at the head of its sender's queue it is also in applicable_by_fee. * Sequences in all_by_sender are ordered by nonce and "dense". - * Only commands with an expiration <> Global_slot.max_value is added to transactions_with_expiration. + * Only commands with an expiration <> Global_slot_since_genesis.max_value is added to transactions_with_expiration. * There are no empty sets or sequences. * Fee indices are correct. * Total currency required is correct. @@ -53,7 +53,8 @@ type t = Transaction_hash.User_command_with_valid_signature.t Transaction_hash.Map.t ; transactions_with_expiration : - Transaction_hash.User_command_with_valid_signature.Set.t Global_slot.Map.t + Transaction_hash.User_command_with_valid_signature.Set.t + Global_slot_since_genesis.Map.t (*Only transactions that have an expiry*) ; size : int ; config : Config.t @@ -80,8 +81,9 @@ module Command_error = struct | Overflow | Bad_token | Expired of - [ `Valid_until of Mina_numbers.Global_slot.t ] - * [ `Global_slot_since_genesis of Mina_numbers.Global_slot.t ] + [ `Valid_until of Mina_numbers.Global_slot_since_genesis.t ] + * [ `Global_slot_since_genesis of + Mina_numbers.Global_slot_since_genesis.t ] | Unwanted_fee_token of Token_id.t [@@deriving sexp, to_yojson] @@ -281,7 +283,7 @@ let empty ~constraint_constants ~consensus_constants ~time_controller : t = ; all_by_sender = Account_id.Map.empty ; all_by_fee = Currency.Fee_rate.Map.empty ; all_by_hash = Transaction_hash.Map.empty - ; transactions_with_expiration = Global_slot.Map.empty + ; transactions_with_expiration = Global_slot_since_genesis.Map.empty ; size = 0 ; config = { constraint_constants; consensus_constants; time_controller } } @@ -327,14 +329,19 @@ let global_slot_since_genesis conf = in match conf.constraint_constants.fork with | Some { previous_global_slot; _ } -> - Mina_numbers.Global_slot.(add previous_global_slot current_slot) + let slot_span = + Mina_numbers.Global_slot_since_genesis.to_uint32 current_slot + |> Mina_numbers.Global_slot_span.of_uint32 + in + Mina_numbers.Global_slot_since_genesis.( + add previous_global_slot slot_span) | None -> current_slot let check_expiry t (cmd : User_command.t) = let global_slot_since_genesis = global_slot_since_genesis t in let valid_until = User_command.valid_until cmd in - if Global_slot.(valid_until < global_slot_since_genesis) then + if Global_slot_since_genesis.(valid_until < global_slot_since_genesis) then Error (Command_error.Expired ( `Valid_until valid_until @@ -347,7 +354,7 @@ let update_expiration_map expiration_map cmd op = Transaction_hash.User_command_with_valid_signature.command cmd in let expiry = User_command.valid_until user_cmd in - if Global_slot.(expiry <> max_value) then + if Global_slot_since_genesis.(expiry <> max_value) then match op with | `Add -> Map_set.insert @@ -1416,8 +1423,9 @@ let%test_module _ = ) -> failwithf !"Expired user command. Current global slot is \ - %{sexp:Mina_numbers.Global_slot.t} but user command is \ - only valid until %{sexp:Mina_numbers.Global_slot.t}" + %{sexp:Mina_numbers.Global_slot_since_genesis.t} but \ + user command is only valid until \ + %{sexp:Mina_numbers.Global_slot_since_genesis.t}" global_slot_since_genesis valid_until () ) in go cmds ) @@ -1692,7 +1700,7 @@ let%test_module _ = compile_time_genesis.data |> Mina_state.Protocol_state.body in { (Mina_state.Protocol_state.Body.view state_body) with - global_slot_since_genesis = Mina_numbers.Global_slot.zero + global_slot_since_genesis = Mina_numbers.Global_slot_since_genesis.zero } let add_to_pool ~nonce ~balance pool cmd = @@ -1732,7 +1740,8 @@ let%test_module _ = in ignore ( Mina_ledger.Ledger.apply_user_command ~constraint_constants - ~txn_global_slot:Mina_numbers.Global_slot.zero ledger v + ~txn_global_slot:Mina_numbers.Global_slot_since_genesis.zero + ledger v |> Or_error.ok_exn : Mina_transaction_logic.Transaction_applied .Signed_command_applied @@ -1777,7 +1786,7 @@ let%test_module _ = in ( acc.nonce , Account.liquid_balance_at_slot - ~global_slot:Mina_numbers.Global_slot.zero acc + ~global_slot:Mina_numbers.Global_slot_since_genesis.zero acc |> Currency.Balance.to_amount ) ) in let lower = diff --git a/src/lib/network_pool/indexed_pool.mli b/src/lib/network_pool/indexed_pool.mli index dcd550843f4..d34a6c4677c 100644 --- a/src/lib/network_pool/indexed_pool.mli +++ b/src/lib/network_pool/indexed_pool.mli @@ -24,8 +24,9 @@ module Command_error : sig | Overflow | Bad_token | Expired of - [ `Valid_until of Mina_numbers.Global_slot.t ] - * [ `Global_slot_since_genesis of Mina_numbers.Global_slot.t ] + [ `Valid_until of Mina_numbers.Global_slot_since_genesis.t ] + * [ `Global_slot_since_genesis of + Mina_numbers.Global_slot_since_genesis.t ] | Unwanted_fee_token of Mina_base.Token_id.t [@@deriving sexp, to_yojson] @@ -155,7 +156,7 @@ val revalidate : -> t * Transaction_hash.User_command_with_valid_signature.t Sequence.t (** Get the global slot since genesis according to the pool's time controller. *) -val global_slot_since_genesis : t -> Mina_numbers.Global_slot.t +val global_slot_since_genesis : t -> Mina_numbers.Global_slot_since_genesis.t module For_tests : sig (** Checks the invariants of the data structure. If this throws an exception diff --git a/src/lib/network_pool/transaction_pool.ml b/src/lib/network_pool/transaction_pool.ml index a7157b7d9c4..a9a4171ad94 100644 --- a/src/lib/network_pool/transaction_pool.ml +++ b/src/lib/network_pool/transaction_pool.ml @@ -475,9 +475,11 @@ struct | Expired ( `Valid_until valid_until , `Global_slot_since_genesis global_slot_since_genesis ) -> - [ ("valid_until", Mina_numbers.Global_slot.to_yojson valid_until) + [ ( "valid_until" + , Mina_numbers.Global_slot_since_genesis.to_yojson valid_until ) ; ( "current_global_slot" - , Mina_numbers.Global_slot.to_yojson global_slot_since_genesis ) + , Mina_numbers.Global_slot_since_genesis.to_yojson + global_slot_since_genesis ) ] let indexed_pool_error_log_info e = @@ -1593,7 +1595,7 @@ let%test_module _ = compile_time_genesis.data |> Mina_state.Protocol_state.body in { (Mina_state.Protocol_state.Body.view state_body) with - global_slot_since_genesis = Mina_numbers.Global_slot.zero + global_slot_since_genesis = Mina_numbers.Global_slot_since_genesis.zero } module Mock_transition_frontier = struct @@ -2103,7 +2105,8 @@ let%test_module _ = let applied = Or_error.ok_exn @@ Mina_ledger.Ledger.apply_user_command ~constraint_constants - ~txn_global_slot:Mina_numbers.Global_slot.zero ledger valid + ~txn_global_slot: + Mina_numbers.Global_slot_since_genesis.zero ledger valid in match applied.body with | Failed -> @@ -2286,9 +2289,9 @@ let%test_module _ = at (Block_time.to_time_exn slot_end) in let curr_slot = current_global_slot () in - let slot_padding = Mina_numbers.Global_slot.of_int padding in + let slot_padding = Mina_numbers.Global_slot_span.of_int padding in let curr_slot_plus_padding = - Mina_numbers.Global_slot.add curr_slot slot_padding + Mina_numbers.Global_slot_since_genesis.add curr_slot slot_padding in let valid_command = mk_payment ~valid_until:curr_slot_plus_padding ~sender_idx:1 @@ -2336,10 +2339,12 @@ let%test_module _ = assert_pool_txs t [] ; let curr_slot = current_global_slot () in let curr_slot_plus_three = - Mina_numbers.Global_slot.(add curr_slot (of_int 3)) + Mina_numbers.Global_slot_since_genesis.add curr_slot + (Mina_numbers.Global_slot_span.of_int 3) in let curr_slot_plus_seven = - Mina_numbers.Global_slot.(add curr_slot (of_int 7)) + Mina_numbers.Global_slot_since_genesis.add curr_slot + (Mina_numbers.Global_slot_span.of_int 7) in let few_now = List.take independent_cmds (List.length independent_cmds / 2) @@ -2414,10 +2419,12 @@ let%test_module _ = assert_pool_txs t [] ; let curr_slot = current_global_slot () in let curr_slot_plus_three = - Mina_numbers.Global_slot.(add curr_slot (of_int 3)) + Mina_numbers.Global_slot_since_genesis.add curr_slot + (Mina_numbers.Global_slot_span.of_int 3) in let curr_slot_plus_seven = - Mina_numbers.Global_slot.(add curr_slot (of_int 7)) + Mina_numbers.Global_slot_since_genesis.add curr_slot + (Mina_numbers.Global_slot_span.of_int 7) in let few_now = List.take independent_cmds (List.length independent_cmds / 2) diff --git a/src/lib/rosetta_lib/user_command_info.ml b/src/lib/rosetta_lib/user_command_info.ml index a616b406bdb..a1ceceb9d89 100644 --- a/src/lib/rosetta_lib/user_command_info.ml +++ b/src/lib/rosetta_lib/user_command_info.ml @@ -174,7 +174,8 @@ module Partial = struct ~fee:(Fee_currency.of_uint64 t.fee) ~fee_payer_pk ~nonce ~body ~memo ~valid_until: - (Option.map ~f:Mina_numbers.Global_slot.of_uint32 t.valid_until) + (Option.map ~f:Mina_numbers.Global_slot_since_genesis.of_uint32 + t.valid_until ) end let forget (t : t) : Partial.t = diff --git a/src/lib/runtime_config/runtime_config.ml b/src/lib/runtime_config/runtime_config.ml index 94bb39976b9..ee05f01d525 100644 --- a/src/lib/runtime_config/runtime_config.ml +++ b/src/lib/runtime_config/runtime_config.ml @@ -54,9 +54,9 @@ module Json_layout = struct module Timed = struct type t = { initial_minimum_balance : Currency.Balance.t - ; cliff_time : Mina_numbers.Global_slot.t + ; cliff_time : Mina_numbers.Global_slot_since_genesis.t ; cliff_amount : Currency.Amount.t - ; vesting_period : Mina_numbers.Global_slot.t + ; vesting_period : Mina_numbers.Global_slot_span.t ; vesting_increment : Currency.Amount.t } [@@deriving yojson, fields, dhall_type, sexp] @@ -404,9 +404,9 @@ module Accounts = struct module Timed = struct type t = Json_layout.Accounts.Single.Timed.t = { initial_minimum_balance : Currency.Balance.Stable.Latest.t - ; cliff_time : Mina_numbers.Global_slot.Stable.Latest.t + ; cliff_time : Mina_numbers.Global_slot_since_genesis.Stable.Latest.t ; cliff_amount : Currency.Amount.Stable.Latest.t - ; vesting_period : Mina_numbers.Global_slot.Stable.Latest.t + ; vesting_period : Mina_numbers.Global_slot_span.Stable.Latest.t ; vesting_increment : Currency.Amount.Stable.Latest.t } [@@deriving bin_io_unversioned, sexp] diff --git a/src/lib/snark_profiler_lib/snark_profiler_lib.ml b/src/lib/snark_profiler_lib/snark_profiler_lib.ml index e3a7f3fabbc..84b060c67a6 100644 --- a/src/lib/snark_profiler_lib/snark_profiler_lib.ml +++ b/src/lib/snark_profiler_lib/snark_profiler_lib.ml @@ -129,7 +129,7 @@ module Transaction_key = struct in let _partial_stmt = Mina_ledger.Ledger.apply_transaction_first_pass ~constraint_constants - ~global_slot:Mina_numbers.Global_slot.zero + ~global_slot:Mina_numbers.Global_slot_since_genesis.zero ~txn_state_view:Transaction_snark_tests.Util.genesis_state_view second_pass_ledger (Mina_transaction.Transaction.Command (Zkapp_command p)) @@ -137,7 +137,7 @@ module Transaction_key = struct in let segments = Transaction_snark.zkapp_command_witnesses_exn ~constraint_constants - ~global_slot:Mina_numbers.Global_slot.zero + ~global_slot:Mina_numbers.Global_slot_since_genesis.zero ~state_body:Transaction_snark_tests.Util.genesis_state_body ~fee_excess:Currency.Amount.Signed.zero [ ( `Pending_coinbase_init_stack Pending_coinbase.Stack.empty @@ -147,7 +147,8 @@ module Transaction_key = struct ; target = Pending_coinbase.Stack.push_state Transaction_snark_tests.Util.genesis_state_body_hash - Mina_numbers.Global_slot.zero Pending_coinbase.Stack.empty + Mina_numbers.Global_slot_since_genesis.zero + Pending_coinbase.Stack.empty } , `Ledger ledger , `Ledger second_pass_ledger diff --git a/src/lib/staged_ledger/staged_ledger.ml b/src/lib/staged_ledger/staged_ledger.ml index 5177f0bebd9..830abb0afd5 100644 --- a/src/lib/staged_ledger/staged_ledger.ml +++ b/src/lib/staged_ledger/staged_ledger.ml @@ -1922,8 +1922,9 @@ module T = struct let create_diff ~(constraint_constants : Genesis_constants.Constraint_constants.t) - ~(global_slot : Mina_numbers.Global_slot.t) ?(log_block_creation = false) - t ~coinbase_receiver ~logger ~current_state_view + ~(global_slot : Mina_numbers.Global_slot_since_genesis.t) + ?(log_block_creation = false) t ~coinbase_receiver ~logger + ~current_state_view ~(transactions_by_fee : User_command.Valid.t Sequence.t) ~(get_completed_work : Transaction_snark_work.Statement.t @@ -2244,8 +2245,9 @@ let%test_module "staged ledger tests" = | Some global_slot -> (*Protocol state views are always from previous block*) let prev_global_slot = - Option.value ~default:Mina_numbers.Global_slot.zero - Mina_numbers.Global_slot.(sub global_slot (of_int 1)) + Option.value ~default:Mina_numbers.Global_slot_since_genesis.zero + (Mina_numbers.Global_slot_since_genesis.sub global_slot + (Mina_numbers.Global_slot_span.of_int 1) ) in let consensus_state = Consensus.Proof_of_stake.Exported.Consensus_state.Unsafe @@ -2327,7 +2329,7 @@ let%test_module "staged ledger tests" = let assert_ledger : Ledger.t -> coinbase_cost:Currency.Fee.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> protocol_state_view:Zkapp_precondition.Protocol_state.View.t -> Sl.t -> User_command.Valid.t list @@ -2570,7 +2572,9 @@ let%test_module "staged ledger tests" = ?(expected_proof_count = None) ?(allow_failures = false) ?(check_snarked_ledger_transition = false) ~snarked_ledger test_mask provers stmt_to_work -> - let global_slot = Mina_numbers.Global_slot.of_int global_slot in + let global_slot = + Mina_numbers.Global_slot_since_genesis.of_int global_slot + in let state_tbl = State_hash.Table.create () in (*Add genesis state to the table*) let genesis, _ = dummy_state_and_view () in @@ -2719,7 +2723,9 @@ let%test_module "staged ledger tests" = return ( diff , ( `Proof_count proof_count' - , `Slot (Mina_numbers.Global_slot.succ global_slot) ) ) ) + , `Slot + (Mina_numbers.Global_slot_since_genesis.succ global_slot) ) + ) ) in (*Should have enough blocks to generate at least expected_proof_count proofs*) @@ -3177,7 +3183,7 @@ let%test_module "staged ledger tests" = in let cmds_this_iter = cmds_this_iter |> Sequence.to_list in let global_slot = - Mina_numbers.Global_slot.of_int global_slot + Mina_numbers.Global_slot_since_genesis.of_int global_slot in let diff = create_diff_with_non_zero_fee_excess @@ -3260,7 +3266,7 @@ let%test_module "staged ledger tests" = (fun _cmds_left _count_opt cmds_this_iter () -> let diff = let global_slot = - Mina_numbers.Global_slot.of_int global_slot + Mina_numbers.Global_slot_since_genesis.of_int global_slot in let current_state_view = dummy_state_view ~global_slot () in let diff_result = @@ -3327,7 +3333,9 @@ let%test_module "staged ledger tests" = let proofs_available_this_iter = List.hd_exn proofs_available_left in - let global_slot = Mina_numbers.Global_slot.of_int global_slot in + let global_slot = + Mina_numbers.Global_slot_since_genesis.of_int global_slot + in let current_state, current_state_view = dummy_state_and_view ~global_slot () in @@ -3513,7 +3521,9 @@ let%test_module "staged ledger tests" = let work_list = List.take work_list proofs_available_this_iter in List.(zip_exn work_list (take fees_for_each (length work_list))) in - let global_slot = Mina_numbers.Global_slot.of_int global_slot in + let global_slot = + Mina_numbers.Global_slot_since_genesis.of_int global_slot + in let current_state, current_state_view = dummy_state_and_view ~global_slot () in @@ -3686,7 +3696,7 @@ let%test_module "staged ledger tests" = let supercharge_coinbase = Boolean.var_of_value supercharge_coinbase in let state_body_hash_var = State_body_hash.var_of_t state_body_hash in let global_slot_var = - Mina_numbers.Global_slot.Checked.constant global_slot + Mina_numbers.Global_slot_since_genesis.Checked.constant global_slot in Pending_coinbase.Checked.add_coinbase ~constraint_constants root_after_popping pc_update_var ~coinbase_receiver @@ -3722,7 +3732,9 @@ let%test_module "staged ledger tests" = -> unit Deferred.t = fun ~global_slot init_state cmds cmd_iters proofs_available sl test_mask provers -> - let global_slot = Mina_numbers.Global_slot.of_int global_slot in + let global_slot = + Mina_numbers.Global_slot_since_genesis.of_int global_slot + in let%map proofs_available_left, _ = iter_cmds_acc cmds cmd_iters (proofs_available, global_slot) (fun @@ -3775,7 +3787,7 @@ let%test_module "staged ledger tests" = cmds_applied_this_iter (init_pks init_state) ; ( diff , ( List.tl_exn proofs_available_left - , Mina_numbers.Global_slot.succ global_slot ) ) ) + , Mina_numbers.Global_slot_since_genesis.succ global_slot ) ) ) in assert (List.is_empty proofs_available_left) @@ -3823,9 +3835,9 @@ let%test_module "staged ledger tests" = (*Should fully vest by slot = 7*) let acc = Account.create_timed account_id balance ~initial_minimum_balance:balance - ~cliff_time:(Mina_numbers.Global_slot.of_int 4) + ~cliff_time:(Mina_numbers.Global_slot_since_genesis.of_int 4) ~cliff_amount:Amount.zero - ~vesting_period:(Mina_numbers.Global_slot.of_int 2) + ~vesting_period:(Mina_numbers.Global_slot_span.of_int 2) ~vesting_increment:(Amount.of_mina_int_exn 50) |> Or_error.ok_exn in @@ -3864,7 +3876,9 @@ let%test_module "staged ledger tests" = Deferred.List.iter (List.init block_count ~f:(( + ) 1)) ~f:(fun block_count -> - let global_slot = Mina_numbers.Global_slot.of_int block_count in + let global_slot = + Mina_numbers.Global_slot_since_genesis.of_int block_count + in let current_state, current_state_view = dummy_state_and_view ~global_slot () in @@ -3877,7 +3891,8 @@ let%test_module "staged ledger tests" = create_and_apply_with_state_body_hash ~winner:delegator.public_key ~coinbase_receiver:coinbase_receiver.public_key sl ~current_state_view - ~global_slot:(Mina_numbers.Global_slot.of_int block_count) + ~global_slot: + (Mina_numbers.Global_slot_since_genesis.of_int block_count) ~state_and_body_hash Sequence.empty (stmt_to_work_zero_fee ~prover:self.public_key) in @@ -4081,7 +4096,9 @@ let%test_module "staged ledger tests" = ~f:(fun (ledger_init_state, invalid_command, global_slot) -> async_with_ledgers ledger_init_state (fun ~snarked_ledger:_ sl _test_mask -> - let global_slot = Mina_numbers.Global_slot.of_int global_slot in + let global_slot = + Mina_numbers.Global_slot_since_genesis.of_int global_slot + in let current_state_view = dummy_state_view ~global_slot () in let diff_result = Sl.create_diff ~constraint_constants ~global_slot !sl ~logger @@ -4159,7 +4176,9 @@ let%test_module "staged ledger tests" = -> async_with_ledgers ledger_init_state (fun ~snarked_ledger:_ sl _test_mask -> - let global_slot = Mina_numbers.Global_slot.of_int global_slot in + let global_slot = + Mina_numbers.Global_slot_since_genesis.of_int global_slot + in let current_state, current_state_view = dummy_state_and_view ~global_slot () in @@ -4323,7 +4342,7 @@ let%test_module "staged ledger tests" = let open Async.Deferred.Let_syntax in let sl = ref @@ Sl.create_exn ~constraint_constants ~ledger in let global_slot = - Mina_numbers.Global_slot.of_int global_slot + Mina_numbers.Global_slot_since_genesis.of_int global_slot in let failed_zkapp_command = Or_error.ok_exn diff --git a/src/lib/staged_ledger/staged_ledger.mli b/src/lib/staged_ledger/staged_ledger.mli index dc9d654005d..2bd6326475e 100644 --- a/src/lib/staged_ledger/staged_ledger.mli +++ b/src/lib/staged_ledger/staged_ledger.mli @@ -51,7 +51,9 @@ module Scan_state : sig (** All the transactions with hash of the parent block in which they were included in the order in which they were applied*) val staged_transactions_with_state_hash : t - -> (Transaction.t With_status.t * State_hash.t * Mina_numbers.Global_slot.t) + -> ( Transaction.t With_status.t + * State_hash.t + * Mina_numbers.Global_slot_since_genesis.t ) Transactions_ordered.Poly.t list @@ -76,7 +78,7 @@ module Scan_state : sig -> get_protocol_state: (State_hash.t -> Mina_state.Protocol_state.Value.t Or_error.t) -> apply_first_pass: - ( global_slot:Mina_numbers.Global_slot.t + ( global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Mina_base.Zkapp_precondition.Protocol_state.View.t -> Ledger.t -> Transaction.t @@ -86,7 +88,7 @@ module Scan_state : sig -> Ledger.Transaction_partially_applied.t -> Ledger.Transaction_applied.t Or_error.t ) -> apply_first_pass_sparse_ledger: - ( global_slot:Mina_numbers.Global_slot.t + ( global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Mina_base.Zkapp_precondition.Protocol_state.View.t -> Mina_ledger.Sparse_ledger.t -> Mina_transaction.Transaction.t @@ -104,7 +106,7 @@ module Scan_state : sig -> get_protocol_state: (State_hash.t -> Mina_state.Protocol_state.Value.t Or_error.t) -> apply_first_pass: - ( global_slot:Mina_numbers.Global_slot.t + ( global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Mina_base.Zkapp_precondition.Protocol_state.View.t -> Ledger.t -> Transaction.t @@ -114,7 +116,7 @@ module Scan_state : sig -> Ledger.Transaction_partially_applied.t -> Ledger.Transaction_applied.t Or_error.t ) -> apply_first_pass_sparse_ledger: - ( global_slot:Mina_numbers.Global_slot.t + ( global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Mina_base.Zkapp_precondition.Protocol_state.View.t -> Mina_ledger.Sparse_ledger.t -> Mina_transaction.Transaction.t @@ -164,7 +166,9 @@ val replace_ledger_exn : t -> Ledger.t -> t val proof_txns_with_state_hashes : t - -> (Transaction.t With_status.t * State_hash.t * Mina_numbers.Global_slot.t) + -> ( Transaction.t With_status.t + * State_hash.t + * Mina_numbers.Global_slot_since_genesis.t ) Scan_state.Transactions_ordered.Poly.t Mina_stdlib.Nonempty_list.t option @@ -176,7 +180,7 @@ val hash : t -> Staged_ledger_hash.t val apply : ?skip_verification:[ `Proofs | `All ] -> constraint_constants:Genesis_constants.Constraint_constants.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> t -> Staged_ledger_diff.t -> logger:Logger.t @@ -190,7 +194,7 @@ val apply : ( Ledger_proof.t * ( Transaction.t With_status.t * State_hash.t - * Mina_numbers.Global_slot.t ) + * Mina_numbers.Global_slot_since_genesis.t ) Scan_state.Transactions_ordered.Poly.t list ) option ] @@ -201,7 +205,7 @@ val apply : val apply_diff_unchecked : constraint_constants:Genesis_constants.Constraint_constants.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> t -> Staged_ledger_diff.With_valid_signatures_and_proofs.t -> logger:Logger.t @@ -214,7 +218,7 @@ val apply_diff_unchecked : ( Ledger_proof.t * ( Transaction.t With_status.t * State_hash.t - * Mina_numbers.Global_slot.t ) + * Mina_numbers.Global_slot_since_genesis.t ) Scan_state.Transactions_ordered.Poly.t list ) option ] @@ -229,7 +233,7 @@ val current_ledger_proof : t -> Ledger_proof.t option val create_diff : constraint_constants:Genesis_constants.Constraint_constants.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> ?log_block_creation:bool -> t -> coinbase_receiver:Public_key.Compressed.t @@ -248,7 +252,7 @@ val create_diff : val can_apply_supercharged_coinbase_exn : winner:Public_key.Compressed.t -> epoch_ledger:Mina_ledger.Sparse_ledger.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> bool val of_scan_state_pending_coinbases_and_snarked_ledger : diff --git a/src/lib/transaction/transaction_union.ml b/src/lib/transaction/transaction_union.ml index 06d978969bb..229ce240209 100644 --- a/src/lib/transaction/transaction_union.ml +++ b/src/lib/transaction/transaction_union.ml @@ -51,7 +51,7 @@ let of_transaction : Signed_command.t Transaction.Poly.t -> t = function ; fee_token = Token_id.default ; fee_payer_pk = other_pk ; nonce = Account.Nonce.zero - ; valid_until = Mina_numbers.Global_slot.max_value + ; valid_until = Mina_numbers.Global_slot_since_genesis.max_value ; memo = Signed_command_memo.empty } ; body = @@ -75,7 +75,7 @@ let of_transaction : Signed_command.t Transaction.Poly.t -> t = function ; fee_token ; fee_payer_pk = pk2 ; nonce = Account.Nonce.zero - ; valid_until = Mina_numbers.Global_slot.max_value + ; valid_until = Mina_numbers.Global_slot_since_genesis.max_value ; memo = Signed_command_memo.empty } ; body = diff --git a/src/lib/transaction_consistency_tests/transaction_consistency_tests.ml b/src/lib/transaction_consistency_tests/transaction_consistency_tests.ml index 9810c440a3f..813fd12487f 100644 --- a/src/lib/transaction_consistency_tests/transaction_consistency_tests.ml +++ b/src/lib/transaction_consistency_tests/transaction_consistency_tests.ml @@ -22,7 +22,7 @@ let%test_module "transaction logic consistency" = let block_data = precomputed_values.protocol_state_with_hash.data - let current_slot = Global_slot.of_int 15 + let current_slot = Global_slot_since_genesis.of_int 15 let block_data = (* Tweak block data to have current slot. *) @@ -188,8 +188,8 @@ let%test_module "transaction logic consistency" = ~initial_minimum_balance: ( Balance.sub_amount balance moveable_amount |> Option.value ~default:Balance.zero ) - ~cliff_time:(Global_slot.of_int cliff_time) - ~vesting_period:(Global_slot.of_int vesting_period) + ~cliff_time:(Global_slot_since_genesis.of_int cliff_time) + ~vesting_period:(Global_slot_since_genesis.of_int vesting_period) ~cliff_amount ~vesting_increment |> Or_error.ok_exn ) in @@ -217,7 +217,7 @@ let%test_module "transaction logic consistency" = Account_nonce.gen_incl (Account_nonce.of_int 0) (Account_nonce.of_int 3) in - let%bind valid_until = Global_slot.gen in + let%bind valid_until = Global_slot_since_genesis.gen in let%bind memo_length = Int.gen_incl 0 Signed_command_memo.max_digestible_string_length in diff --git a/src/lib/transaction_logic/mina_transaction_logic.ml b/src/lib/transaction_logic/mina_transaction_logic.ml index 00815fe43f4..8fad0378816 100644 --- a/src/lib/transaction_logic/mina_transaction_logic.ml +++ b/src/lib/transaction_logic/mina_transaction_logic.ml @@ -4,7 +4,7 @@ open Currency open Signature_lib open Mina_transaction module Zkapp_command_logic = Zkapp_command_logic -module Global_slot = Mina_numbers.Global_slot +module Global_slot_since_genesis = Mina_numbers.Global_slot_since_genesis module Transaction_applied = struct module UC = Signed_command @@ -337,7 +337,7 @@ module type S = sig ; fee_excess : Amount.Signed.t ; supply_increase : Amount.Signed.t ; protocol_state : Zkapp_precondition.Protocol_state.View.t - ; block_global_slot : Mina_numbers.Global_slot.t + ; block_global_slot : Mina_numbers.Global_slot_since_genesis.t (* Slot of block when the transaction is applied. NOTE: This is at least 1 slot after the protocol_state's view, which is for the *previous* slot. *) } end @@ -381,14 +381,14 @@ module type S = sig val apply_user_command : constraint_constants:Genesis_constants.Constraint_constants.t - -> txn_global_slot:Global_slot.t + -> txn_global_slot:Global_slot_since_genesis.t -> ledger -> Signed_command.With_valid_signature.t -> Transaction_applied.Signed_command_applied.t Or_error.t val apply_user_command_unchecked : constraint_constants:Genesis_constants.Constraint_constants.t - -> txn_global_slot:Global_slot.t + -> txn_global_slot:Global_slot_since_genesis.t -> ledger -> Signed_command.t -> Transaction_applied.Signed_command_applied.t Or_error.t @@ -396,13 +396,14 @@ module type S = sig val update_action_state : Snark_params.Tick.Field.t Pickles_types.Vector.Vector_5.t -> Zkapp_account.Actions.t - -> txn_global_slot:Global_slot.t - -> last_action_slot:Global_slot.t - -> Snark_params.Tick.Field.t Pickles_types.Vector.Vector_5.t * Global_slot.t + -> txn_global_slot:Global_slot_since_genesis.t + -> last_action_slot:Global_slot_since_genesis.t + -> Snark_params.Tick.Field.t Pickles_types.Vector.Vector_5.t + * Global_slot_since_genesis.t val apply_zkapp_command_unchecked : constraint_constants:Genesis_constants.Constraint_constants.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> state_view:Zkapp_precondition.Protocol_state.View.t -> ledger -> Zkapp_command.t @@ -436,7 +437,7 @@ module type S = sig *) val apply_zkapp_command_unchecked_aux : constraint_constants:Genesis_constants.Constraint_constants.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> state_view:Zkapp_precondition.Protocol_state.View.t -> init:'acc -> f: @@ -461,7 +462,7 @@ module type S = sig val apply_zkapp_command_first_pass_aux : constraint_constants:Genesis_constants.Constraint_constants.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> state_view:Zkapp_precondition.Protocol_state.View.t -> init:'acc -> f: @@ -507,21 +508,21 @@ module type S = sig val apply_fee_transfer : constraint_constants:Genesis_constants.Constraint_constants.t - -> txn_global_slot:Global_slot.t + -> txn_global_slot:Global_slot_since_genesis.t -> ledger -> Fee_transfer.t -> Transaction_applied.Fee_transfer_applied.t Or_error.t val apply_coinbase : constraint_constants:Genesis_constants.Constraint_constants.t - -> txn_global_slot:Global_slot.t + -> txn_global_slot:Global_slot_since_genesis.t -> ledger -> Coinbase.t -> Transaction_applied.Coinbase_applied.t Or_error.t val apply_transaction_first_pass : constraint_constants:Genesis_constants.Constraint_constants.t - -> global_slot:Global_slot.t + -> global_slot:Global_slot_since_genesis.t -> txn_state_view:Zkapp_precondition.Protocol_state.View.t -> ledger -> Transaction.t @@ -534,14 +535,14 @@ module type S = sig val apply_transactions : constraint_constants:Genesis_constants.Constraint_constants.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Zkapp_precondition.Protocol_state.View.t -> ledger -> Transaction.t list -> Transaction_applied.t list Or_error.t val has_locked_tokens : - global_slot:Global_slot.t + global_slot:Global_slot_since_genesis.t -> account_id:Account_id.t -> ledger -> bool Or_error.t @@ -550,13 +551,13 @@ module type S = sig val validate_timing_with_min_balance : account:Account.t -> txn_amount:Amount.t - -> txn_global_slot:Global_slot.t + -> txn_global_slot:Global_slot_since_genesis.t -> (Account.Timing.t * [> `Min_balance of Balance.t ]) Or_error.t val validate_timing : account:Account.t -> txn_amount:Amount.t - -> txn_global_slot:Global_slot.t + -> txn_global_slot:Global_slot_since_genesis.t -> Account.Timing.t Or_error.t end end @@ -643,17 +644,17 @@ let validate_timing_with_min_balance ~account ~txn_amount ~txn_global_slot = let nsf_error kind = Or_error.errorf !"For %s account, the requested transaction for amount %{sexp: Amount.t} \ - at global slot %{sexp: Global_slot.t}, the balance %{sexp: Balance.t} \ - is insufficient" + at global slot %{sexp: Global_slot_since_genesis.t}, the balance \ + %{sexp: Balance.t} is insufficient" kind txn_amount txn_global_slot account.Account.Poly.balance |> Or_error.tag ~tag:nsf_tag in let min_balance_error min_balance = Or_error.errorf !"For timed account, the requested transaction for amount %{sexp: \ - Amount.t} at global slot %{sexp: Global_slot.t}, applying the \ - transaction would put the balance below the calculated minimum balance \ - of %{sexp: Balance.t}" + Amount.t} at global slot %{sexp: Global_slot_since_genesis.t}, \ + applying the transaction would put the balance below the calculated \ + minimum balance of %{sexp: Balance.t}" txn_amount txn_global_slot min_balance |> Or_error.tag ~tag:min_balance_tag in @@ -733,9 +734,9 @@ module Make (L : Ledger_intf.S) : let validate_time ~valid_until ~current_global_slot = check - Global_slot.(current_global_slot <= valid_until) - !"Current global slot %{sexp: Global_slot.t} greater than transaction \ - expiry slot %{sexp: Global_slot.t}" + Global_slot_since_genesis.(current_global_slot <= valid_until) + !"Current global slot %{sexp: Global_slot_since_genesis.t} greater than \ + transaction expiry slot %{sexp: Global_slot_since_genesis.t}" current_global_slot valid_until module Transaction_applied = struct @@ -1103,7 +1104,7 @@ module Make (L : Ledger_intf.S) : ; fee_excess : Amount.Signed.t ; supply_increase : Amount.Signed.t ; protocol_state : Zkapp_precondition.Protocol_state.View.t - ; block_global_slot : Global_slot.t + ; block_global_slot : Global_slot_since_genesis.t } let first_pass_ledger { first_pass_ledger; _ } = @@ -1336,8 +1337,14 @@ module Make (L : Ledger_intf.S) : Permissions.Auth_required.check perm tag end - module Global_slot = struct - include Mina_numbers.Global_slot + module Global_slot_since_genesis = struct + include Mina_numbers.Global_slot_since_genesis + + let if_ = value_if + end + + module Global_slot_span = struct + include Mina_numbers.Global_slot_span let if_ = value_if end @@ -2740,7 +2747,7 @@ module For_tests = struct { fee ; fee_payer_pk = sender_pk ; nonce = sender_nonce - ; valid_until = Global_slot.max_value + ; valid_until = Global_slot_since_genesis.max_value ; memo = Signed_command_memo.dummy } ; body = Payment { source_pk = sender_pk; receiver_pk = receiver; amount } @@ -2897,7 +2904,7 @@ module For_tests = struct (hide_rc a1) (hide_rc a2) ) ) ) |> Or_error.combine_errors_unit - let txn_global_slot = Global_slot.zero + let txn_global_slot = Global_slot_since_genesis.zero let iter_err ts ~f = List.fold_until ts diff --git a/src/lib/transaction_logic/test/account_timing.ml b/src/lib/transaction_logic/test/account_timing.ml index 9fd91620a03..a0be63114d6 100644 --- a/src/lib/transaction_logic/test/account_timing.ml +++ b/src/lib/transaction_logic/test/account_timing.ml @@ -11,7 +11,7 @@ let init_min_bal a = Option.value ~default:Balance.zero @@ Account.initial_minimum_balance a let cliff_time a = - Option.value ~default:Global_slot.zero @@ Account.cliff_time a + Option.value ~default:Global_slot_since_genesis.zero @@ Account.cliff_time a (* These tests verify basic invariants of timed accounts' behaviour. This is done very simply by exercising the function which determines @@ -27,7 +27,7 @@ let%test_module "Test account timing." = let%bind amount = Amount.(gen_incl zero (Balance.to_amount account.balance)) in - let%map slot = Global_slot.gen in + let%map slot = Global_slot_since_genesis.gen in (account, amount, slot)) ~f:(fun (account, txn_amount, txn_global_slot) -> [%test_eq: txn_result] (Ok Account.Timing.Poly.Untimed) @@ -46,14 +46,15 @@ let%test_module "Test account timing." = |> Option.value ~default:Amount.max_int in let%bind amount = Amount.gen_incl min_amount Amount.max_int in - let%map slot = Global_slot.gen in + let%map slot = Global_slot_since_genesis.gen in (account, amount, slot)) ~f:(fun (account, txn_amount, txn_global_slot) -> [%test_eq: txn_result] ( Or_error.errorf !"For timed account, the requested transaction for amount \ - %{sexp: Amount.t} at global slot %{sexp: Global_slot.t}, the \ - balance %{sexp: Balance.t} is insufficient" + %{sexp: Amount.t} at global slot %{sexp: \ + Global_slot_since_genesis.t}, the balance %{sexp: Balance.t} \ + is insufficient" txn_amount txn_global_slot account.balance |> Result.map_error ~f:(Error.tag ~tag:nsf_tag) ) (validate_timing ~account ~txn_amount ~txn_global_slot) ) @@ -68,8 +69,10 @@ let%test_module "Test account timing." = |> Option.value_map ~default:Amount.zero ~f:to_amount in let%bind amount = Amount.(gen_incl zero max_amount) in - let max_slot = Global_slot.(of_int (to_int (cliff_time account) - 1)) in - let%map slot = Global_slot.(gen_incl zero max_slot) in + let max_slot = + Global_slot_since_genesis.(of_int (to_int (cliff_time account) - 1)) + in + let%map slot = Global_slot_since_genesis.(gen_incl zero max_slot) in (account, amount, slot)) ~f:(fun (account, txn_amount, txn_global_slot) -> [%test_eq: txn_result] @@ -87,11 +90,11 @@ let%test_module "Test account timing." = in let%bind amount = Amount.(gen_incl zero available_amount) in let final_slot = - Global_slot.( + Global_slot_since_genesis.( sub (Account.timing_final_vesting_slot account.timing) (of_int 1)) - |> Option.value ~default:Global_slot.zero + |> Option.value ~default:Global_slot_since_genesis.zero in - let%map slot = Global_slot.(gen_incl zero final_slot) in + let%map slot = Global_slot_since_genesis.(gen_incl zero final_slot) in (account, amount, slot)) ~f:(fun (account, txn_amount, txn_global_slot) -> [%test_eq: txn_result] (Ok account.timing) @@ -105,7 +108,9 @@ let%test_module "Test account timing." = Amount.(gen_incl zero (Balance.to_amount account.balance)) in let final_slot = Account.timing_final_vesting_slot account.timing in - let%map slot = Global_slot.(gen_incl final_slot max_value) in + let%map slot = + Global_slot_since_genesis.(gen_incl final_slot max_value) + in (account, amount, slot)) ~f:(fun (account, txn_amount, txn_global_slot) -> [%test_eq: txn_result] @@ -127,7 +132,7 @@ let%test_module "Test account timing." = Amount.(gen_incl available_amount (Balance.to_amount account.balance)) in let%map slot = - Global_slot.( + Global_slot_since_genesis.( gen_incl zero (of_int @@ (to_int (cliff_time account) - 1))) in (account, amount, slot)) @@ -135,9 +140,10 @@ let%test_module "Test account timing." = [%test_eq: txn_result] ( Or_error.errorf !"For timed account, the requested transaction for amount \ - %{sexp: Amount.t} at global slot %{sexp: Global_slot.t}, \ - applying the transaction would put the balance below the \ - calculated minimum balance of %{sexp: Balance.t}" + %{sexp: Amount.t} at global slot %{sexp: \ + Global_slot_since_genesis.t}, applying the transaction would \ + put the balance below the calculated minimum balance of \ + %{sexp: Balance.t}" txn_amount txn_global_slot (init_min_bal account) |> Or_error.tag ~tag:min_balance_tag ) (validate_timing ~account ~txn_amount ~txn_global_slot) ) diff --git a/src/lib/transaction_logic/test/protocol_config_examples.ml b/src/lib/transaction_logic/test/protocol_config_examples.ml index 5a2d0e689ce..b5afc7d0dd7 100644 --- a/src/lib/transaction_logic/test/protocol_config_examples.ml +++ b/src/lib/transaction_logic/test/protocol_config_examples.ml @@ -24,7 +24,7 @@ let protocol_state : Zkapp_precondition.Protocol_state.View.t = ; min_window_density = Length.of_int 10 ; last_vrf_output = () ; total_currency = Amount.of_mina_int_exn 10 - ; global_slot_since_genesis = Global_slot.of_int 120 + ; global_slot_since_genesis = Global_slot_since_genesis.of_int 120 ; staking_epoch_data = epoch_data ; next_epoch_data = epoch_data } diff --git a/src/lib/transaction_logic/test/transaction_logic.ml b/src/lib/transaction_logic/test/transaction_logic.ml index 9509fcbf886..ab525f38c92 100644 --- a/src/lib/transaction_logic/test/transaction_logic.ml +++ b/src/lib/transaction_logic/test/transaction_logic.ml @@ -35,7 +35,7 @@ let%test_module "Test transaction logic." = let%bind ledger = test_ledger accounts in let%map txn, _ = Transaction_logic.apply_zkapp_command_unchecked ~constraint_constants - ~global_slot:Global_slot.(of_int 120) + ~global_slot:Global_slot_since_genesis.(of_int 120) ~state_view:protocol_state ledger cmd in (txn, ledger) diff --git a/src/lib/transaction_logic/zkapp_command_logic.ml b/src/lib/transaction_logic/zkapp_command_logic.ml index 18cd7f3daf9..03fee242532 100644 --- a/src/lib/transaction_logic/zkapp_command_logic.ml +++ b/src/lib/transaction_logic/zkapp_command_logic.ml @@ -125,7 +125,7 @@ module type Account_id_intf = sig val derive_token_id : owner:t -> token_id end -module type Global_slot_intf = sig +module type Global_slot_since_genesis_intf = sig include Iffable val zero : t @@ -135,6 +135,14 @@ module type Global_slot_intf = sig val equal : t -> t -> bool end +module type Global_slot_span_intf = sig + include Iffable + + val zero : t + + val ( > ) : t -> t -> bool +end + module type Verification_key_hash_intf = sig type t @@ -146,9 +154,9 @@ end module type Timing_intf = sig include Iffable - type global_slot + type global_slot_span - val vesting_period : t -> global_slot + val vesting_period : t -> global_slot_span end module type Token_id_intf = sig @@ -724,7 +732,10 @@ module type Inputs_intf = sig module Controller : Controller_intf with type bool := Bool.t - module Global_slot : Global_slot_intf with type bool := Bool.t + module Global_slot_since_genesis : + Global_slot_since_genesis_intf with type bool := Bool.t + + module Global_slot_span : Global_slot_span_intf with type bool := Bool.t module Nonce : sig include Iffable with type bool := Bool.t @@ -735,7 +746,9 @@ module type Inputs_intf = sig module State_hash : Iffable with type bool := Bool.t module Timing : - Timing_intf with type bool := Bool.t and type global_slot := Global_slot.t + Timing_intf + with type bool := Bool.t + and type global_slot_span := Global_slot_span.t module Zkapp_uri : Iffable with type bool := Bool.t @@ -760,7 +773,7 @@ module type Inputs_intf = sig and type balance := Balance.t and type receipt_chain_hash := Receipt_chain_hash.t and type bool := Bool.t - and type global_slot := Global_slot.t + and type global_slot := Global_slot_since_genesis.t and type field := Field.t and type verification_key := Verification_key.t and type verification_key_hash := Verification_key_hash.t @@ -891,7 +904,7 @@ module type Inputs_intf = sig val set_supply_increase : t -> Amount.Signed.t -> t - val block_global_slot : t -> Global_slot.t + val block_global_slot : t -> Global_slot_since_genesis.t end end @@ -1046,14 +1059,17 @@ module Make (Inputs : Inputs_intf) = struct let s1_updated = Actions.push_events s1' actions in let s1 = Field.if_ is_empty ~then_:s1' ~else_:s1_updated in (* Shift along if not empty and last update wasn't this slot *) - let is_this_slot = Global_slot.equal txn_global_slot last_action_slot in + let is_this_slot = + Global_slot_since_genesis.equal txn_global_slot last_action_slot + in let is_empty_or_this_slot = Bool.(is_empty ||| is_this_slot) in let s5 = Field.if_ is_empty_or_this_slot ~then_:s5' ~else_:s4' in let s4 = Field.if_ is_empty_or_this_slot ~then_:s4' ~else_:s3' in let s3 = Field.if_ is_empty_or_this_slot ~then_:s3' ~else_:s2' in let s2 = Field.if_ is_empty_or_this_slot ~then_:s2' ~else_:s1' in let last_action_slot = - Global_slot.if_ is_empty ~then_:last_action_slot ~else_:txn_global_slot + Global_slot_since_genesis.if_ is_empty ~then_:last_action_slot + ~else_:txn_global_slot in (([ s1; s2; s3; s4; s5 ] : _ Pickles_types.Vector.t), last_action_slot) @@ -1340,7 +1356,7 @@ module Make (Inputs : Inputs_intf) = struct in let vesting_period = Timing.vesting_period timing in (* Assert that timing is valid, otherwise we may have a division by 0. *) - assert_ ~pos:__POS__ Global_slot.(vesting_period > zero) ; + assert_ ~pos:__POS__ Global_slot_span.(vesting_period > zero) ; let a = Account.set_timing a timing in (a, local_state) in diff --git a/src/lib/transaction_protocol_state/transaction_protocol_state.ml b/src/lib/transaction_protocol_state/transaction_protocol_state.ml index e7b8e4d94d4..84a55a88529 100644 --- a/src/lib/transaction_protocol_state/transaction_protocol_state.ml +++ b/src/lib/transaction_protocol_state/transaction_protocol_state.ml @@ -21,7 +21,7 @@ module Poly = struct type 'a t = { transaction : 'a ; block_data : Block_data.Stable.V2.t - ; global_slot : Mina_numbers.Global_slot.Stable.V1.t + ; global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t } [@@deriving sexp] end diff --git a/src/lib/transaction_protocol_state/transaction_protocol_state.mli b/src/lib/transaction_protocol_state/transaction_protocol_state.mli index ace428c1be8..5f88b74812f 100644 --- a/src/lib/transaction_protocol_state/transaction_protocol_state.mli +++ b/src/lib/transaction_protocol_state/transaction_protocol_state.mli @@ -23,7 +23,7 @@ module Poly : sig type 'a t = { transaction : 'a ; block_data : Block_data.Stable.V2.t - ; global_slot : Mina_numbers.Global_slot.Stable.V1.t + ; global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t } [@@deriving sexp] end @@ -41,4 +41,4 @@ val transaction : 'a t -> 'a val block_data : _ t -> Block_data.t -val global_slot : _ t -> Mina_numbers.Global_slot.t +val global_slot : _ t -> Mina_numbers.Global_slot_since_genesis.t diff --git a/src/lib/transaction_snark/test/account_timing/account_timing.ml b/src/lib/transaction_snark/test/account_timing/account_timing.ml index 2fde1df0437..876f1eb164b 100644 --- a/src/lib/transaction_snark/test/account_timing/account_timing.ml +++ b/src/lib/transaction_snark/test/account_timing/account_timing.ml @@ -18,8 +18,8 @@ let%test_module "account timing check" = let account_with_default_vesting_schedule ?(token = Token_id.default) ?(initial_minimum_balance = Balance.of_mina_int_exn 10_000) ?(cliff_amount = Amount.zero) - ?(cliff_time = Mina_numbers.Global_slot.of_int 1000) - ?(vesting_period = Mina_numbers.Global_slot.of_int 10) + ?(cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 1000) + ?(vesting_period = Mina_numbers.Global_slot_since_genesis.of_int 10) ?(vesting_increment = Amount.of_mina_int_exn 100) balance = let pk = Public_key.Compressed.empty in let account_id = Account_id.create pk token in @@ -31,7 +31,7 @@ let%test_module "account timing check" = let account = Account.var_of_t account in let txn_amount = Amount.var_of_t txn_amount in let txn_global_slot = - Mina_numbers.Global_slot.Checked.constant txn_global_slot + Mina_numbers.Global_slot_since_genesis.Checked.constant txn_global_slot in let%map `Min_balance min_balance, timing = Transaction_snark.Base.check_timing @@ -87,7 +87,7 @@ let%test_module "account timing check" = funds, this transaction is expected to succeed. *) let%test "before_cliff_time" = let txn_amount = Currency.Amount.of_mina_int_exn 100 in - let txn_global_slot = Mina_numbers.Global_slot.of_int 45 in + let txn_global_slot = Mina_numbers.Global_slot_since_genesis.of_int 45 in let account = account_with_default_vesting_schedule ~initial_minimum_balance:(Balance.of_mina_int_exn 80_000) @@ -121,11 +121,13 @@ let%test_module "account timing check" = account_with_default_vesting_schedule (Balance.of_mina_int_exn 100_000) in let txn_amount = Currency.Amount.of_mina_int_exn 100 in - let txn_global_slot = Mina_numbers.Global_slot.of_int 1_900 in + let txn_global_slot = + Mina_numbers.Global_slot_since_genesis.of_int 1_900 + in let timing_with_min_balance = validate_timing_with_min_balance ~account ~txn_amount:(Currency.Amount.of_mina_int_exn 100) - ~txn_global_slot:(Mina_numbers.Global_slot.of_int 1_900) + ~txn_global_slot:(Mina_numbers.Global_slot_since_genesis.of_int 1_900) in match timing_with_min_balance with | Ok ((Timed _ as unchecked_timing), `Min_balance unchecked_min_balance) @@ -152,7 +154,9 @@ let%test_module "account timing check" = (Balance.of_mina_int_exn 100_000) in let txn_amount = Currency.Amount.of_mina_int_exn 100 in - let txn_global_slot = Mina_numbers.Global_slot.of_int 2_000 in + let txn_global_slot = + Mina_numbers.Global_slot_since_genesis.of_int 2_000 + in let timing_with_min_balance = validate_timing_with_min_balance ~txn_amount ~txn_global_slot ~account in @@ -176,7 +180,9 @@ let%test_module "account timing check" = account_with_default_vesting_schedule (Balance.of_mina_int_exn 10_000) in let txn_amount = Currency.Amount.of_mina_int_exn 101 in - let txn_global_slot = Mina_numbers.Global_slot.of_int 1_010 in + let txn_global_slot = + Mina_numbers.Global_slot_since_genesis.of_int 1_010 + in let timing = validate_timing ~txn_amount ~txn_global_slot ~account in match timing with | Error err -> @@ -198,7 +204,9 @@ let%test_module "account timing check" = account_with_default_vesting_schedule (Balance.of_mina_int_exn 100_000) in let txn_amount = Currency.Amount.of_mina_int_exn 100_001 in - let txn_global_slot = Mina_numbers.Global_slot.of_int 2_000_000_000_000 in + let txn_global_slot = + Mina_numbers.Global_slot_since_genesis.of_int 2_000_000_000_000 + in let timing = validate_timing ~txn_amount ~txn_global_slot ~account in match timing with | Error err -> @@ -222,7 +230,9 @@ let%test_module "account timing check" = account_with_default_vesting_schedule (Balance.of_mina_int_exn 100_000) in let txn_amount = Currency.Amount.of_mina_int_exn 100_000 in - let txn_global_slot = Mina_numbers.Global_slot.of_int 3000 in + let txn_global_slot = + Mina_numbers.Global_slot_since_genesis.of_int 3000 + in let timing_with_min_balance = validate_timing_with_min_balance ~txn_amount ~txn_global_slot ~account in @@ -239,12 +249,14 @@ let%test_module "account timing check" = account_with_default_vesting_schedule ~cliff_amount:(Amount.of_mina_int_exn 10_000) (* The same as initial minimum balance. *) - ~vesting_period:(Mina_numbers.Global_slot.of_int 1) + ~vesting_period:(Mina_numbers.Global_slot_since_genesis.of_int 1) ~vesting_increment:Amount.zero (Balance.of_mina_int_exn 100_000) in let txn_amount = Currency.Amount.of_mina_int_exn 100_000 in - let txn_global_slot = Mina_numbers.Global_slot.of_int slot in + let txn_global_slot = + Mina_numbers.Global_slot_since_genesis.of_int slot + in (txn_amount, txn_global_slot, account) (* Before the cliff, only the initial_minimum_balance matters. @@ -309,7 +321,8 @@ let%test_module "account timing check" = in validated_uc - let check_transaction_snark ~(txn_global_slot : Mina_numbers.Global_slot.t) + let check_transaction_snark + ~(txn_global_slot : Mina_numbers.Global_slot_since_genesis.t) (sparse_ledger_before : Mina_ledger.Sparse_ledger.t) (transaction : Mina_transaction.Transaction.t) = let sok_message = @@ -427,9 +440,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 50 - ; cliff_time = Mina_numbers.Global_slot.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 100 - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -463,7 +478,7 @@ let%test_module "account timing check" = Mina_ledger.Ledger.apply_initial_ledger_state ledger ledger_init_state ; apply_user_commands_at_slot ledger - Mina_numbers.Global_slot.(succ zero) + Mina_numbers.Global_slot_since_genesis.(succ zero) user_commands ) ) (* Before cliff, transactions fail if they would have to violate minimum @@ -487,9 +502,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 9_995 - ; cliff_time = Mina_numbers.Global_slot.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 100 - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -525,7 +542,8 @@ let%test_module "account timing check" = let validated_uc = validate_user_command uc in match Mina_ledger.Ledger.apply_user_command ~constraint_constants - ~txn_global_slot:Mina_numbers.Global_slot.(succ zero) + ~txn_global_slot: + Mina_numbers.Global_slot_since_genesis.(succ zero) ledger validated_uc with | Ok _txn_applied -> @@ -557,9 +575,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 9_995 - ; cliff_time = Mina_numbers.Global_slot.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -586,7 +606,8 @@ let%test_module "account timing check" = let validated_uc = validate_user_command user_command in match Mina_ledger.Ledger.apply_user_command ~constraint_constants - ~txn_global_slot:(Mina_numbers.Global_slot.of_int 9999) + ~txn_global_slot: + (Mina_numbers.Global_slot_since_genesis.of_int 9999) ledger validated_uc with | Ok _txn_applied -> @@ -617,9 +638,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 9_995 - ; cliff_time = Mina_numbers.Global_slot.of_int 10000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -649,7 +672,7 @@ let%test_module "account timing check" = Mina_ledger.Ledger.apply_initial_ledger_state ledger ledger_init_state ; apply_user_commands_at_slot ledger - (Mina_numbers.Global_slot.of_int 10000) + (Mina_numbers.Global_slot_since_genesis.of_int 10000) [ user_command ] ) ) let%test_unit "user command, while vesting, sufficient balance" = @@ -665,9 +688,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_nanomina_int_exn init_min_bal_int - ; cliff_time = Mina_numbers.Global_slot.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.zero - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -708,7 +733,7 @@ let%test_module "account timing check" = ledger_init_state ; (* 100 vesting periods after cliff *) apply_user_commands_at_slot ledger - (Mina_numbers.Global_slot.of_int 10100) + (Mina_numbers.Global_slot_since_genesis.of_int 10100) [ user_command ] ) ) let%test_unit "user command, after vesting, sufficient balance" = @@ -722,9 +747,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 9_995 - ; cliff_time = Mina_numbers.Global_slot.of_int 10000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -755,7 +782,7 @@ let%test_module "account timing check" = Mina_ledger.Ledger.apply_initial_ledger_state ledger ledger_init_state ; apply_user_commands_at_slot ledger - Mina_numbers.Global_slot.(of_int 20_000) + Mina_numbers.Global_slot_since_genesis.(of_int 20_000) [ user_command ] ) ) let%test_unit "user command, after vesting, insufficient balance" = @@ -769,9 +796,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 9_995 - ; cliff_time = Mina_numbers.Global_slot.of_int 10000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -797,7 +826,8 @@ let%test_module "account timing check" = (* slot well past cliff *) match Mina_ledger.Ledger.apply_user_command ~constraint_constants - ~txn_global_slot:(Mina_numbers.Global_slot.of_int 200_000) + ~txn_global_slot: + (Mina_numbers.Global_slot_since_genesis.of_int 200_000) ledger validated_uc with | Ok _txn_applied -> @@ -828,11 +858,11 @@ let%test_module "account timing check" = type t = { balance : Currency.Balance.t ; init_min_bal : Currency.Balance.t - ; cliff_time : Mina_numbers.Global_slot.t + ; cliff_time : Mina_numbers.Global_slot_since_genesis.t ; cliff_amt : Currency.Amount.t - ; vest_period : Mina_numbers.Global_slot.t + ; vest_period : Mina_numbers.Global_slot_since_genesis.t ; vest_incr : Currency.Amount.t - ; slot : Mina_numbers.Global_slot.t + ; slot : Mina_numbers.Global_slot_since_genesis.t ; available_funds : Currency.Amount.t ; cmd : Signed_command.t } @@ -859,14 +889,14 @@ let%test_module "account timing check" = let init_min_amt = Currency.Balance.to_amount init_min_bal in let%bind cliff_time = unless_fixed ?fixed:cliff_time - Global_slot.(gen_incl (of_int 100) (of_int 1_000)) + Global_slot_since_genesis.(gen_incl (of_int 100) (of_int 1_000)) in let%bind cliff_amt = unless_fixed ?fixed:cliff_amt Amount.(gen_incl zero init_min_amt) in let%bind vest_period = unless_fixed ?fixed:vest_period - Global_slot.(gen_incl (of_int 1) (of_int 20)) + Global_slot_since_genesis.(gen_incl (of_int 1) (of_int 20)) in let to_vest = Amount.( @@ -884,27 +914,29 @@ let%test_module "account timing check" = in let vest_time = if Amount.(vest_incr > zero) then - Global_slot.to_int vest_period + Global_slot_since_genesis.to_int vest_period * (to_vest / Amount.to_nanomina_int vest_incr) else 0 in let%bind slot = unless_fixed ?fixed:slot - Global_slot.( + Global_slot_since_genesis.( gen_incl (of_int @@ Int.max 0 (to_int cliff_time - vest_time)) (of_int @@ (to_int cliff_time + (2 * vest_time)))) in let available_funds = let open Currency in - let slot_int = Mina_numbers.Global_slot.to_int slot in - let cliff_int = Mina_numbers.Global_slot.to_int cliff_time in + let slot_int = Mina_numbers.Global_slot_since_genesis.to_int slot in + let cliff_int = + Mina_numbers.Global_slot_since_genesis.to_int cliff_time + in let vested_cliff_amt = if slot_int < cliff_int then Amount.zero else cliff_amt in let vested = max 0 (slot_int - cliff_int) - / Mina_numbers.Global_slot.to_int vest_period + / Mina_numbers.Global_slot_since_genesis.to_int vest_period |> Amount.scale vest_incr |> Option.value ~default:Amount.max_int in @@ -953,26 +985,26 @@ let%test_module "account timing check" = let examples = let open Mina_numbers in let balance = Balance.of_mina_int_exn 10_000 in - let cliff_time = Global_slot.of_int 10_000 in + let cliff_time = Global_slot_since_genesis.of_int 10_000 in [ (* Before cliff only balance in excess of the initial minimum may be spent. *) Quickcheck.random_value @@ gen ~balance ~cliff_time ~init_min_bal:(Balance.of_mina_int_exn 50) - ~slot:(Global_slot.of_int 1) + ~slot:(Global_slot_since_genesis.of_int 1) ~amount:(Amount.of_mina_int_exn 10) () ; (* Before cliff time funds below the minimum balance cannot be spent. *) Quickcheck.random_value @@ gen ~balance ~cliff_time ~init_min_bal:(Balance.of_mina_int_exn 9_995) - ~slot:(Global_slot.of_int 1) + ~slot:(Global_slot_since_genesis.of_int 1) ~amount:(Amount.of_mina_int_exn 100) () ; (* Just before cliff the balance still can't fall below the minimum. *) Quickcheck.random_value @@ gen ~balance ~cliff_time ~init_min_bal:(Balance.of_mina_int_exn 9_995) - ~slot:(Global_slot.of_int 9_999) + ~slot:(Global_slot_since_genesis.of_int 9_999) ~amount:(Amount.of_mina_int_exn 100) () ; (* At cliff time the cliff amount may immediately be spent. *) @@ -988,7 +1020,7 @@ let%test_module "account timing check" = @@ gen ~balance ~cliff_time ~cliff_amt:(Amount.of_mina_int_exn 9_995) ~init_min_bal:(Balance.of_mina_int_exn 9_995) - ~slot:(Global_slot.of_int 20_000) + ~slot:(Global_slot_since_genesis.of_int 20_000) ~amount:(Amount.of_mina_int_exn 9_000) () ; (* After vesting, still can't spend more than the current balance. *) @@ -996,7 +1028,7 @@ let%test_module "account timing check" = @@ gen ~balance ~cliff_time ~cliff_amt:(Amount.of_mina_int_exn 9_995) ~init_min_bal:(Balance.of_mina_int_exn 9_995) - ~slot:(Global_slot.of_int 200_000) + ~slot:(Global_slot_since_genesis.of_int 200_000) ~amount:(Amount.of_mina_int_exn 100_000) () ] @@ -1151,9 +1183,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 50 - ; cliff_time = Mina_numbers.Global_slot.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 100 - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -1205,7 +1239,7 @@ let%test_module "account timing check" = Mina_ledger.Ledger.apply_initial_ledger_state ledger ledger_init_state ; apply_zkapp_commands_at_slot ledger - Mina_numbers.Global_slot.(succ zero) + Mina_numbers.Global_slot_since_genesis.(succ zero) [ txn ] ) ) let%test_unit "zkApp command, before cliff time, min balance violation" = @@ -1220,9 +1254,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 99_000 - ; cliff_time = Mina_numbers.Global_slot.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 100 - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -1276,7 +1312,8 @@ let%test_module "account timing check" = let result = Mina_ledger.Ledger.apply_zkapp_command_unchecked ~constraint_constants - ~global_slot:Mina_numbers.Global_slot.(succ zero) + ~global_slot: + Mina_numbers.Global_slot_since_genesis.(succ zero) ~state_view:Transaction_snark_tests.Util.genesis_state_view ledger zkapp_command in @@ -1299,9 +1336,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 100_000 - ; cliff_time = Mina_numbers.Global_slot.of_int 10000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 100 - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -1355,7 +1394,8 @@ let%test_module "account timing check" = match Mina_ledger.Ledger.apply_zkapp_command_unchecked ~constraint_constants - ~global_slot:Mina_numbers.Global_slot.(succ zero) + ~global_slot: + Mina_numbers.Global_slot_since_genesis.(succ zero) ~state_view:Transaction_snark_tests.Util.genesis_state_view ledger zkapp_command with @@ -1406,10 +1446,12 @@ let%test_module "account timing check" = Zkapp_basic.Set_or_keep.Set ( { initial_minimum_balance = Currency.Balance.of_nanomina_int_exn min_balance - ; cliff_time = Mina_numbers.Global_slot.of_int 1000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 1000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 100_000_000 - ; vesting_period = Mina_numbers.Global_slot.of_int 10 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 10 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 100_000_000 } @@ -1452,7 +1494,8 @@ let%test_module "account timing check" = let result = Mina_ledger.Ledger.apply_zkapp_command_unchecked ~constraint_constants - ~global_slot:Mina_numbers.Global_slot.(succ zero) + ~global_slot: + Mina_numbers.Global_slot_since_genesis.(succ zero) ~state_view:Transaction_snark_tests.Util.genesis_state_view ledger zkapp_command in @@ -1475,7 +1518,7 @@ let%test_module "account timing check" = Mina_ledger.Ledger.apply_initial_ledger_state ledger ledger_init_state ; apply_zkapp_commands_at_slot ledger - Mina_numbers.Global_slot.(succ zero) + Mina_numbers.Global_slot_since_genesis.(succ zero) [ zkapp_command ] ) ) let%test_unit "zkApp command, account creation, min_balance < balance" = @@ -1493,7 +1536,7 @@ let%test_module "account timing check" = Mina_ledger.Ledger.apply_initial_ledger_state ledger ledger_init_state ; apply_zkapp_commands_at_slot ledger - Mina_numbers.Global_slot.(succ zero) + Mina_numbers.Global_slot_since_genesis.(succ zero) [ zkapp_command ] ) ) let%test_unit "zkApp command, just before cliff time, insufficient balance" @@ -1508,9 +1551,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 100_000 - ; cliff_time = Mina_numbers.Global_slot.of_int 10000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10000 ; cliff_amount = Currency.Amount.of_mina_int_exn 100_000 - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -1564,7 +1609,8 @@ let%test_module "account timing check" = match Mina_ledger.Ledger.apply_zkapp_command_unchecked ~constraint_constants - ~global_slot:Mina_numbers.Global_slot.(of_int 9999) + ~global_slot: + Mina_numbers.Global_slot_since_genesis.(of_int 9999) ~state_view:Transaction_snark_tests.Util.genesis_state_view ledger zkapp_command with @@ -1593,9 +1639,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 100_000 - ; cliff_time = Mina_numbers.Global_slot.of_int 10000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10000 ; cliff_amount = Currency.Amount.of_mina_int_exn 100_000 - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -1646,7 +1694,7 @@ let%test_module "account timing check" = Mina_ledger.Ledger.apply_initial_ledger_state ledger ledger_init_state ; apply_zkapp_commands_at_slot ledger - Mina_numbers.Global_slot.(of_int 10000) + Mina_numbers.Global_slot_since_genesis.(of_int 10000) [ zkapp_command ] ) ) let%test_unit "zkApp command, while vesting, sufficient balance" = @@ -1662,9 +1710,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_nanomina_int_exn init_min_balance_int - ; cliff_time = Mina_numbers.Global_slot.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.zero - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 100_000 } @@ -1721,7 +1771,7 @@ let%test_module "account timing check" = Mina_ledger.Ledger.apply_initial_ledger_state ledger ledger_init_state ; apply_zkapp_commands_at_slot ledger - Mina_numbers.Global_slot.(of_int 10_100) + Mina_numbers.Global_slot_since_genesis.(of_int 10_100) [ zkapp_command ] ) ) let%test_unit "zkApp command, while vesting, insufficient balance" = @@ -1737,9 +1787,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_nanomina_int_exn init_min_balance_int - ; cliff_time = Mina_numbers.Global_slot.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.zero - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 100_000 } @@ -1799,7 +1851,8 @@ let%test_module "account timing check" = let result = Mina_ledger.Ledger.apply_zkapp_command_unchecked ~constraint_constants - ~global_slot:Mina_numbers.Global_slot.(of_int 10_100) + ~global_slot: + Mina_numbers.Global_slot_since_genesis.(of_int 10_100) ~state_view:Transaction_snark_tests.Util.genesis_state_view ledger zkapp_command in @@ -1820,9 +1873,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_nanomina_int_exn init_min_balance_int - ; cliff_time = Mina_numbers.Global_slot.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.zero - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_mina_int_exn 1 } in @@ -1875,7 +1930,8 @@ let%test_module "account timing check" = Mina_ledger.Ledger.apply_initial_ledger_state ledger ledger_init_state ; apply_zkapp_commands_at_slot ledger - Mina_numbers.Global_slot.(of_int (100_000 + 10_000)) + Mina_numbers.Global_slot_since_genesis.( + of_int (100_000 + 10_000)) [ zkapp_command ] ) ) (* same as previous test, amount is incremented by 1 *) @@ -1892,9 +1948,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_nanomina_int_exn init_min_balance_int - ; cliff_time = Mina_numbers.Global_slot.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.zero - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_mina_int_exn 1 } in @@ -1950,7 +2008,8 @@ let%test_module "account timing check" = let result = Mina_ledger.Ledger.apply_zkapp_command_unchecked ~constraint_constants - ~global_slot:Mina_numbers.Global_slot.(of_int 110_000) + ~global_slot: + Mina_numbers.Global_slot_since_genesis.(of_int 110_000) ~state_view:Transaction_snark_tests.Util.genesis_state_view ledger zkapp_command in @@ -1982,9 +2041,11 @@ let%test_module "account timing check" = (let timing = Zkapp_basic.Set_or_keep.Set ( { initial_minimum_balance = Currency.Balance.of_mina_int_exn 1 - ; cliff_time = Mina_numbers.Global_slot.of_int 10 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10 ; cliff_amount = Currency.Amount.of_mina_int_exn 1 - ; vesting_period = Mina_numbers.Global_slot.of_int 10 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 10 ; vesting_increment = Currency.Amount.of_mina_int_exn 1 } : Account_update.Update.Timing_info.value ) @@ -2060,9 +2121,11 @@ let%test_module "account timing check" = Zkapp_basic.Set_or_keep.Set ( { initial_minimum_balance = Currency.Balance.of_mina_int_exn 1 - ; cliff_time = Mina_numbers.Global_slot.of_int 10 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10 ; cliff_amount = Currency.Amount.of_mina_int_exn 1 - ; vesting_period = Mina_numbers.Global_slot.of_int 10 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 10 ; vesting_increment = Currency.Amount.of_mina_int_exn 1 } : Account_update.Update.Timing_info.value ) @@ -2114,9 +2177,11 @@ let%test_module "account timing check" = Account_timing.Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 10 - ; cliff_time = Mina_numbers.Global_slot.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.zero - ; vesting_period = Mina_numbers.Global_slot.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 100_000 } @@ -2141,9 +2206,11 @@ let%test_module "account timing check" = Zkapp_basic.Set_or_keep.Set ( { initial_minimum_balance = Currency.Balance.of_mina_int_exn 1 - ; cliff_time = Mina_numbers.Global_slot.of_int 10 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10 ; cliff_amount = Currency.Amount.of_mina_int_exn 1 - ; vesting_period = Mina_numbers.Global_slot.of_int 10 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 10 ; vesting_increment = Currency.Amount.of_mina_int_exn 1 } : Account_update.Update.Timing_info.value ) diff --git a/src/lib/transaction_snark/test/fee_payer/fee_payer.ml b/src/lib/transaction_snark/test/fee_payer/fee_payer.ml index 5e802ced8da..b52af5dec92 100644 --- a/src/lib/transaction_snark/test/fee_payer/fee_payer.ml +++ b/src/lib/transaction_snark/test/fee_payer/fee_payer.ml @@ -164,7 +164,9 @@ let%test_module "Fee payer tests" = let txn_state_view = Mina_state.Protocol_state.Body.view U.genesis_state_body in - let global_slot = Mina_numbers.Global_slot.of_int global_slot in + let global_slot = + Mina_numbers.Global_slot_since_genesis.of_int global_slot + in Init_ledger.init (module Ledger.Ledger_inner) init_ledger ledger ; ( match let mask = Ledger.Mask.create ~depth:U.ledger_depth () in diff --git a/src/lib/transaction_snark/test/transaction_union/transaction_union.ml b/src/lib/transaction_snark/test/transaction_union/transaction_union.ml index 0c795280def..d332d69c4a8 100644 --- a/src/lib/transaction_snark/test/transaction_union/transaction_union.ml +++ b/src/lib/transaction_snark/test/transaction_union/transaction_union.ml @@ -113,7 +113,7 @@ let%test_module "Transaction union tests" = in let pending_coinbase_stack_target = U.pending_coinbase_stack_target transaction U.genesis_state_body_hash - Mina_numbers.Global_slot.zero pending_coinbase_init + Mina_numbers.Global_slot_since_genesis.zero pending_coinbase_init in let txn_in_block = { Transaction_protocol_state.Poly.transaction @@ -955,11 +955,15 @@ let%test_module "Transaction union tests" = in let balance = Balance.of_mina_int_exn 100_000 in let initial_minimum_balance = Balance.of_mina_int_exn 80_000 in - let cliff_time = Mina_numbers.Global_slot.of_int 1000 in + let cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 1000 in let cliff_amount = Amount.of_nanomina_int_exn 10_000 in - let vesting_period = Mina_numbers.Global_slot.of_int 10 in + let vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 10 + in let vesting_increment = Amount.of_nanomina_int_exn 1 in - let txn_global_slot = Mina_numbers.Global_slot.of_int 1002 in + let txn_global_slot = + Mina_numbers.Global_slot_since_genesis.of_int 1002 + in let sender = { sender with account = @@ -1898,9 +1902,11 @@ let%test_module "Transaction union tests" = let account_id = Account_id.create pk Token_id.default in let balance = Balance.of_mina_int_exn 100_000 in let initial_minimum_balance = Balance.of_mina_int_exn 80 in - let cliff_time = Mina_numbers.Global_slot.of_int 2 in + let cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 2 in let cliff_amount = Amount.of_mina_int_exn 5 in - let vesting_period = Mina_numbers.Global_slot.of_int 2 in + let vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 2 + in let vesting_increment = Amount.of_mina_int_exn 40 in Or_error.ok_exn @@ Account.create_timed account_id balance ~initial_minimum_balance @@ -1949,7 +1955,9 @@ let%test_module "Transaction union tests" = Ledger.create_new_account_exn ledger (Account.identifier acc) acc ) ; (* well over the vesting period, the timing field shouldn't change*) - let txn_global_slot = Mina_numbers.Global_slot.of_int 100 in + let txn_global_slot = + Mina_numbers.Global_slot_since_genesis.of_int 100 + in List.iter transactions ~f:(fun txn -> U.test_transaction_union ~txn_global_slot ledger txn ) ) ) end ) diff --git a/src/lib/transaction_snark/test/util.ml b/src/lib/transaction_snark/test/util.ml index 32564b6c324..c6da549fc82 100644 --- a/src/lib/transaction_snark/test/util.ml +++ b/src/lib/transaction_snark/test/util.ml @@ -81,7 +81,8 @@ let check_zkapp_command_with_merges_exn ?expected_failure ?ignore_outside_snark let global_slot = Option.value global_slot ~default: - (Mina_numbers.Global_slot.succ state_view.global_slot_since_genesis) + (Mina_numbers.Global_slot_since_genesis.succ + state_view.global_slot_since_genesis ) in let check_failure failure err = printf @@ -558,7 +559,8 @@ let test_transaction_union ?expected_failure ?txn_global_slot ledger txn = Mina_state.Protocol_state.Body.view state_body in let global_slot = - Option.value txn_global_slot ~default:Mina_numbers.Global_slot.zero + Option.value txn_global_slot + ~default:Mina_numbers.Global_slot_since_genesis.zero in let mentioned_keys, pending_coinbase_stack_target = let pending_coinbase_stack = diff --git a/src/lib/transaction_snark/test/util.mli b/src/lib/transaction_snark/test/util.mli index d3856167619..483994b795c 100644 --- a/src/lib/transaction_snark/test/util.mli +++ b/src/lib/transaction_snark/test/util.mli @@ -30,7 +30,7 @@ val init_stack : Pending_coinbase.Stack_versioned.t val pending_coinbase_state_stack : state_body_hash:State_hash.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> Transaction_snark.Pending_coinbase_stack_state.t val dummy_rule : @@ -56,7 +56,7 @@ type pass_number = Pass_1 | Pass_2 val check_zkapp_command_with_merges_exn : ?expected_failure:Mina_base.Transaction_status.Failure.t * pass_number -> ?ignore_outside_snark:bool - -> ?global_slot:Mina_numbers.Global_slot.t + -> ?global_slot:Mina_numbers.Global_slot_since_genesis.t -> ?state_body:Transaction_protocol_state.Block_data.t -> Ledger.t -> Zkapp_command.t list @@ -109,7 +109,7 @@ val permissions_from_update : val pending_coinbase_stack_target : Mina_transaction.Transaction.Valid.t -> State_hash.t - -> Mina_numbers.Global_slot.t + -> Mina_numbers.Global_slot_since_genesis.t -> Pending_coinbase.Stack.t -> Pending_coinbase.Stack.t @@ -150,7 +150,7 @@ val check_balance : Account_id.t -> int -> Ledger.t -> unit val test_transaction_union : ?expected_failure:Transaction_status.Failure.t list - -> ?txn_global_slot:Mina_numbers.Global_slot.t + -> ?txn_global_slot:Mina_numbers.Global_slot_since_genesis.t -> Ledger.t -> Mina_transaction.Transaction.Valid.t -> unit diff --git a/src/lib/transaction_snark/test/zkapp_fuzzy/zkapp_fuzzy.ml b/src/lib/transaction_snark/test/zkapp_fuzzy/zkapp_fuzzy.ml index e83250c424f..c16b353370d 100644 --- a/src/lib/transaction_snark/test/zkapp_fuzzy/zkapp_fuzzy.ml +++ b/src/lib/transaction_snark/test/zkapp_fuzzy/zkapp_fuzzy.ml @@ -27,9 +27,9 @@ let mk_ledgers_and_fee_payers ?(is_timed = false) ~num_of_fee_payers () = let initial_minimum_balance = Currency.Balance.of_mina_int_exn 1_000_000 in - let cliff_time = Mina_numbers.Global_slot.of_int 1_000 in + let cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 1_000 in let cliff_amount = Currency.Amount.zero in - let vesting_period = Mina_numbers.Global_slot.of_int 10 in + let vesting_period = Mina_numbers.Global_slot_since_genesis.of_int 10 in let vesting_increment = Currency.Amount.of_mina_int_exn 100 in Array.map fee_payer_account_ids ~f:(fun fee_payer_account_id -> Account.create_timed fee_payer_account_id initial_balance @@ -97,7 +97,7 @@ let generate_zkapp_commands_and_apply_them_consecutively ~trials mk_ledgers_and_fee_payers ~num_of_fee_payers:trials () in let account_state_tbl = Account_id.Table.create () in - let global_slot = Mina_numbers.Global_slot.of_int 1 in + let global_slot = Mina_numbers.Global_slot_since_genesis.of_int 1 in Test_util.with_randomness 123456789 (fun () -> let test i = Quickcheck.test ~trials:1 @@ -141,7 +141,7 @@ let generate_zkapp_commands_and_apply_them_freshly ~trials ~max_account_updates let ledger, fee_payer_keypairs, keymap = mk_ledgers_and_fee_payers ~num_of_fee_payers:trials () in - let global_slot = Mina_numbers.Global_slot.of_int 2 in + let global_slot = Mina_numbers.Global_slot_since_genesis.of_int 2 in Quickcheck.test ~trials:1 (Mina_generators.Zkapp_command_generators.gen_zkapp_command_from ~global_slot ~protocol_state_view:U.genesis_state_view @@ -168,7 +168,7 @@ let mk_invalid_test ~trials ~max_account_updates ~type_of_failure let ledger, fee_payer_keypairs, keymap = mk_ledgers_and_fee_payers ~num_of_fee_payers:trials () in - let global_slot = Mina_numbers.Global_slot.of_int 3 in + let global_slot = Mina_numbers.Global_slot_since_genesis.of_int 3 in Quickcheck.test ~trials:1 (Mina_generators.Zkapp_command_generators.gen_zkapp_command_from ~global_slot ~failure:type_of_failure diff --git a/src/lib/transaction_snark/test/zkapp_payments/zkapp_payments.ml b/src/lib/transaction_snark/test/zkapp_payments/zkapp_payments.ml index 905674eec18..e595e769541 100644 --- a/src/lib/transaction_snark/test/zkapp_payments/zkapp_payments.ml +++ b/src/lib/transaction_snark/test/zkapp_payments/zkapp_payments.ml @@ -136,7 +136,7 @@ let%test_module "Zkapp payments tests" = in merkle_root_after_zkapp_command_exn ledger ~txn_state_view ~global_slot: - Mina_numbers.Global_slot.( + Mina_numbers.Global_slot_since_genesis.( succ txn_state_view.global_slot_since_genesis) t1 in diff --git a/src/lib/transaction_snark/test/zkapp_preconditions/zkapp_preconditions.ml b/src/lib/transaction_snark/test/zkapp_preconditions/zkapp_preconditions.ml index 8bc64e52b15..c6346296f93 100644 --- a/src/lib/transaction_snark/test/zkapp_preconditions/zkapp_preconditions.ml +++ b/src/lib/transaction_snark/test/zkapp_preconditions/zkapp_preconditions.ml @@ -50,7 +50,9 @@ let%test_module "Valid_while precondition tests" = ~f:(fun ({ init_ledger; specs }, new_kp) -> Mina_ledger.Ledger.with_ledger ~depth:U.ledger_depth ~f:(fun ledger -> Async.Thread_safe.block_on_async_exn (fun () -> - let global_slot = Mina_numbers.Global_slot.of_int 5 in + let global_slot = + Mina_numbers.Global_slot_since_genesis.of_int 5 + in Mina_transaction_logic.For_tests.Init_ledger.init (module Mina_ledger.Ledger.Ledger_inner) init_ledger ledger ; @@ -72,7 +74,9 @@ let%test_module "Valid_while precondition tests" = ~f:(fun ({ init_ledger; specs }, new_kp) -> Mina_ledger.Ledger.with_ledger ~depth:U.ledger_depth ~f:(fun ledger -> Async.Thread_safe.block_on_async_exn (fun () -> - let global_slot = Mina_numbers.Global_slot.of_int 5 in + let global_slot = + Mina_numbers.Global_slot_since_genesis.of_int 5 + in Mina_transaction_logic.For_tests.Init_ledger.init (module Mina_ledger.Ledger.Ledger_inner) init_ledger ledger ; @@ -89,8 +93,8 @@ let%test_module "Valid_while precondition tests" = U.check_zkapp_command_with_merges_exn ~expected_failure: (Valid_while_precondition_unsatisfied, U.Pass_2) - ~global_slot:Mina_numbers.Global_slot.zero ledger - [ zkapp_command ] ) ) ) + ~global_slot:Mina_numbers.Global_slot_since_genesis.zero + ledger [ zkapp_command ] ) ) ) end ) let%test_module "Protocol state precondition tests" = @@ -238,7 +242,8 @@ let%test_module "Protocol state precondition tests" = let amount = Amount.of_mina_int_exn 10 in let spec = List.hd_exn specs in let new_slot = - Mina_numbers.Global_slot.succ psv.global_slot_since_genesis + Mina_numbers.Global_slot_since_genesis.succ + psv.global_slot_since_genesis in let invalid_network_precondition = { network_precondition with diff --git a/src/lib/transaction_snark/test/zkapps_examples/actions/actions.ml b/src/lib/transaction_snark/test/zkapps_examples/actions/actions.ml index c7629393ce1..a193ac87e1a 100644 --- a/src/lib/transaction_snark/test/zkapps_examples/actions/actions.ml +++ b/src/lib/transaction_snark/test/zkapps_examples/actions/actions.ml @@ -207,7 +207,8 @@ let%test_module "Actions test" = |> Zkapp_command.Call_forest.cons_tree Initialize_account_update.account_update |> Zkapp_command.Call_forest.cons Deploy_account_update.account_update - |> test_zkapp_command ~ledger ~global_slot:Mina_numbers.Global_slot.zero + |> test_zkapp_command ~ledger + ~global_slot:Mina_numbers.Global_slot_since_genesis.zero in let account_updates0 = Zkapp_command.Call_forest.to_list zkapp_command0.account_updates @@ -224,7 +225,8 @@ let%test_module "Actions test" = Impl.Field.Constant.equal elt Zkapp_account.Actions.empty_state_element ) ) ; (* last action slot is 0 *) - assert (Mina_numbers.Global_slot.(equal zero) last_action_slot0) ; + assert ( + Mina_numbers.Global_slot_since_genesis.(equal zero) last_action_slot0 ) ; let zkapp_command1, account1 = let ledger = create_ledger () in [] @@ -232,7 +234,8 @@ let%test_module "Actions test" = |> Zkapp_command.Call_forest.cons_tree Initialize_account_update.account_update |> Zkapp_command.Call_forest.cons Deploy_account_update.account_update - |> test_zkapp_command ~ledger ~global_slot:Mina_numbers.Global_slot.zero + |> test_zkapp_command ~ledger + ~global_slot:Mina_numbers.Global_slot_since_genesis.zero in assert (Option.is_some account1) ; let account_updates1 = @@ -256,11 +259,12 @@ let%test_module "Actions test" = Impl.Field.Constant.equal elt Zkapp_account.Actions.empty_state_element ) ) ; (* last action slot still 0 *) - assert (Mina_numbers.Global_slot.(equal zero) last_action_slot1) + assert ( + Mina_numbers.Global_slot_since_genesis.(equal zero) last_action_slot1 ) let%test_unit "Add sequence events in different slots" = let ledger = create_ledger () in - let slot1 = Mina_numbers.Global_slot.of_int 1 in + let slot1 = Mina_numbers.Global_slot_since_genesis.of_int 1 in let _zkapp_command0, account0 = [] |> Zkapp_command.Call_forest.cons_tree Add_actions.account_update @@ -289,8 +293,9 @@ let%test_module "Actions test" = Impl.Field.Constant.equal elt Zkapp_account.Actions.empty_state_element ) ) ; (* action slot is 1 *) - assert (Mina_numbers.Global_slot.equal slot1 last_action_slot0) ; - let slot2 = Mina_numbers.Global_slot.of_int 2 in + assert ( + Mina_numbers.Global_slot_since_genesis.equal slot1 last_action_slot0 ) ; + let slot2 = Mina_numbers.Global_slot_since_genesis.of_int 2 in let _zkapp_command1, account1 = [] |> Zkapp_command.Call_forest.cons_tree Add_actions.account_update @@ -320,8 +325,9 @@ let%test_module "Actions test" = assert (Impl.Field.Constant.equal last_elt curr_elt) done ; (* action slot is 2 *) - assert (Mina_numbers.Global_slot.equal slot2 last_action_slot1) ; - let slot3 = Mina_numbers.Global_slot.of_int 3 in + assert ( + Mina_numbers.Global_slot_since_genesis.equal slot2 last_action_slot1 ) ; + let slot3 = Mina_numbers.Global_slot_since_genesis.of_int 3 in let _zkapp_command2, account2 = [] |> Zkapp_command.Call_forest.cons_tree Add_actions.account_update @@ -351,5 +357,6 @@ let%test_module "Actions test" = assert (Impl.Field.Constant.equal last_elt curr_elt) done ; (* action slot is 3 *) - assert (Mina_numbers.Global_slot.equal slot3 last_action_slot2) + assert ( + Mina_numbers.Global_slot_since_genesis.equal slot3 last_action_slot2 ) end ) diff --git a/src/lib/transaction_snark/transaction_snark.ml b/src/lib/transaction_snark/transaction_snark.ml index adf503cdced..fce33324e3a 100644 --- a/src/lib/transaction_snark/transaction_snark.ml +++ b/src/lib/transaction_snark/transaction_snark.ml @@ -4,7 +4,7 @@ open Mina_base open Mina_transaction open Mina_state open Snark_params -module Global_slot = Mina_numbers.Global_slot +module Global_slot_since_genesis = Mina_numbers.Global_slot_since_genesis open Currency open Pickles_types module Wire_types = Mina_wire_types.Transaction_snark @@ -532,7 +532,9 @@ module Make_str (A : Wire_types.Concrete) = struct let%bind receiver_account, _path = read (Typ.Internal.ref ()) receiver_account in - let%map txn_global_slot = read Global_slot.typ txn_global_slot in + let%map txn_global_slot = + read Mina_numbers.Global_slot_since_genesis.typ txn_global_slot + in compute_unchecked ~constraint_constants ~txn_global_slot ~fee_payer_account ~source_account ~receiver_account txn) end @@ -644,7 +646,8 @@ module Make_str (A : Wire_types.Concrete) = struct ; fee_excess : Amount.Signed.var ; supply_increase : Amount.Signed.var ; protocol_state : Zkapp_precondition.Protocol_state.View.Checked.t - ; block_global_slot : Global_slot.Checked.var + ; block_global_slot : + Mina_numbers.Global_slot_since_genesis.Checked.var } end @@ -764,8 +767,8 @@ module Make_str (A : Wire_types.Concrete) = struct let create = Account_id.Checked.create end - module Global_slot = struct - include Global_slot.Checked + module Global_slot_since_genesis = struct + include Mina_numbers.Global_slot_since_genesis.Checked let ( > ) x y = run_checked (x > y) @@ -774,6 +777,14 @@ module Make_str (A : Wire_types.Concrete) = struct let equal x y = run_checked (equal x y) end + module Global_slot_span = struct + include Mina_numbers.Global_slot_span.Checked + + let ( > ) x y = run_checked (x > y) + + let if_ b ~then_ ~else_ = run_checked (if_ b ~then_ ~else_) + end + module Nonce = struct type t = Account.Nonce.Checked.t @@ -1827,7 +1838,7 @@ module Make_str (A : Wire_types.Concrete) = struct ~compute:(fun () -> !witness.state_body) in let block_global_slot = - exists Mina_numbers.Global_slot.typ ~compute:(fun () -> + exists Mina_numbers.Global_slot_since_genesis.typ ~compute:(fun () -> !witness.block_global_slot ) in let pending_coinbase_stack_init = @@ -2132,7 +2143,8 @@ module Make_str (A : Wire_types.Concrete) = struct | State_body : Mina_state.Protocol_state.Body.Value.t Snarky_backendless.Request.t | Init_stack : Pending_coinbase.Stack.t Snarky_backendless.Request.t - | Global_slot : Mina_numbers.Global_slot.t Snarky_backendless.Request.t + | Global_slot : + Mina_numbers.Global_slot_since_genesis.t Snarky_backendless.Request.t let%snarkydef_ add_burned_tokens acc_burned_tokens amount ~is_coinbase_or_fee_transfer ~update_account = @@ -2237,7 +2249,7 @@ module Make_str (A : Wire_types.Concrete) = struct in let%bind () = [%with_label_ "Check slot validity"] (fun () -> - Global_slot.Checked.( + Global_slot_since_genesis.Checked.( current_global_slot <= payload.common.valid_until) >>= Boolean.Assert.is_true ) in @@ -3017,7 +3029,7 @@ module Make_str (A : Wire_types.Concrete) = struct ~request:(As_prover.return State_body) in let%bind global_slot = - exists Mina_numbers.Global_slot.typ + exists Mina_numbers.Global_slot_since_genesis.typ ~request:(As_prover.return Global_slot) in let%bind fee_payment_root_after, fee_excess, supply_increase = @@ -3088,7 +3100,7 @@ module Make_str (A : Wire_types.Concrete) = struct let transaction_union_handler handler (transaction : Transaction_union.t) (state_body : Mina_state.Protocol_state.Body.Value.t) - (global_slot : Mina_numbers.Global_slot.t) + (global_slot : Mina_numbers.Global_slot_since_genesis.t) (init_stack : Pending_coinbase.Stack.t) : Snarky_backendless.Request.request -> _ = fun (With { request; respond } as r) -> diff --git a/src/lib/transaction_snark/transaction_snark_intf.ml b/src/lib/transaction_snark/transaction_snark_intf.ml index d983644f4e4..d82535b7523 100644 --- a/src/lib/transaction_snark/transaction_snark_intf.ml +++ b/src/lib/transaction_snark/transaction_snark_intf.ml @@ -185,7 +185,7 @@ module type Full = sig *) val zkapp_command_witnesses_exn : constraint_constants:Genesis_constants.Constraint_constants.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> state_body:Transaction_protocol_state.Block_data.t -> fee_excess:Currency.Amount.Signed.t -> ( [ `Pending_coinbase_init_stack of Pending_coinbase.Stack.t ] @@ -232,7 +232,8 @@ module type Full = sig , 'h , 'i , ( Tick.Boolean.var - , Mina_numbers.Global_slot.Checked.var + , Mina_numbers.Global_slot_since_genesis.Checked.var + , Mina_numbers.Global_slot_span.Checked.var , Currency.Balance.var , Currency.Amount.var ) Account_timing.As_record.t @@ -240,10 +241,11 @@ module type Full = sig , 'k ) Account.Poly.t -> txn_amount:Currency.Amount.var option - -> txn_global_slot:Mina_numbers.Global_slot.Checked.var + -> txn_global_slot:Mina_numbers.Global_slot_since_genesis.Checked.var -> ( [> `Min_balance of Currency.Balance.var ] * ( Tick.Boolean.var - , Mina_numbers.Global_slot.Checked.var + , Mina_numbers.Global_slot_since_genesis.Checked.var + , Mina_numbers.Global_slot_span.Checked.var , Currency.Balance.var , Currency.Amount.var ) Account_timing.As_record.t ) diff --git a/src/lib/transaction_snark/transaction_validator.ml b/src/lib/transaction_snark/transaction_validator.ml index ba55e5fb86d..0831208473f 100644 --- a/src/lib/transaction_snark/transaction_validator.ml +++ b/src/lib/transaction_snark/transaction_validator.ml @@ -60,9 +60,9 @@ let%test_unit "invalid transactions do not dirty the ledger" = (Account.create_timed sender_id (Balance.of_nanomina_int_exn 20) ~initial_minimum_balance:(Balance.of_nanomina_int_exn 20) - ~cliff_time:(Global_slot.of_int 1) + ~cliff_time:(Global_slot_since_genesis.of_int 1) ~cliff_amount:(Amount.of_nanomina_int_exn 10) - ~vesting_period:(Global_slot.of_int 1) + ~vesting_period:(Global_slot_span.of_int 1) ~vesting_increment:(Amount.of_nanomina_int_exn 1) ) in let receiver_pk = @@ -95,7 +95,8 @@ let%test_unit "invalid transactions do not dirty the ledger" = Ledger.create_new_account_exn ledger receiver_id receiver_account ; ( match apply_user_command ~constraint_constants - ~txn_global_slot:(Global_slot.of_int 1) ledger invalid_command + ~txn_global_slot:(Global_slot_since_genesis.of_int 1) + ledger invalid_command with | Ok _ -> failwith "successfully applied an invalid transaction" diff --git a/src/lib/transaction_snark/transaction_validator.mli b/src/lib/transaction_snark/transaction_validator.mli index 6e11addd613..d9b3c60e7db 100644 --- a/src/lib/transaction_snark/transaction_validator.mli +++ b/src/lib/transaction_snark/transaction_validator.mli @@ -4,14 +4,14 @@ open Mina_transaction val apply_user_command : constraint_constants:Genesis_constants.Constraint_constants.t - -> txn_global_slot:Mina_numbers.Global_slot.t + -> txn_global_slot:Mina_numbers.Global_slot_since_genesis.t -> Mina_ledger.Ledger.t -> Signed_command.With_valid_signature.t -> Transaction_status.t Or_error.t val apply_transactions : constraint_constants:Genesis_constants.Constraint_constants.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Zkapp_precondition.Protocol_state.View.t -> Mina_ledger.Ledger.t -> Transaction.t list @@ -19,7 +19,7 @@ val apply_transactions : val apply_transaction_first_pass : constraint_constants:Genesis_constants.Constraint_constants.t - -> global_slot:Mina_numbers.Global_slot.t + -> global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Zkapp_precondition.Protocol_state.View.t -> Mina_ledger.Ledger.t -> Transaction.t diff --git a/src/lib/transaction_snark_scan_state/transaction_snark_scan_state.ml b/src/lib/transaction_snark_scan_state/transaction_snark_scan_state.ml index b4054676d31..83ebeb716d1 100644 --- a/src/lib/transaction_snark_scan_state/transaction_snark_scan_state.ml +++ b/src/lib/transaction_snark_scan_state/transaction_snark_scan_state.ml @@ -49,7 +49,7 @@ module Transaction_with_witness = struct (Mina_ledger.Sparse_ledger.Stable.V2.t[@sexp.opaque]) ; second_pass_ledger_witness : (Mina_ledger.Sparse_ledger.Stable.V2.t[@sexp.opaque]) - ; block_global_slot : Mina_numbers.Global_slot.Stable.V1.t + ; block_global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t } [@@deriving sexp, to_yojson] diff --git a/src/lib/transaction_snark_scan_state/transaction_snark_scan_state.mli b/src/lib/transaction_snark_scan_state/transaction_snark_scan_state.mli index db2262b4a0b..e343e90d419 100644 --- a/src/lib/transaction_snark_scan_state/transaction_snark_scan_state.mli +++ b/src/lib/transaction_snark_scan_state/transaction_snark_scan_state.mli @@ -22,7 +22,7 @@ module Transaction_with_witness : sig ; init_stack : Transaction_snark.Pending_coinbase_stack_state.Init_stack.t ; first_pass_ledger_witness : Mina_ledger.Sparse_ledger.t ; second_pass_ledger_witness : Mina_ledger.Sparse_ledger.t - ; block_global_slot : Mina_numbers.Global_slot.t + ; block_global_slot : Mina_numbers.Global_slot_since_genesis.t } [@@deriving sexp] end @@ -100,7 +100,7 @@ val fill_work_and_enqueue_transactions : -> ( ( Ledger_proof.t * ( Transaction.t With_status.t * State_hash.t - * Mina_numbers.Global_slot.t ) + * Mina_numbers.Global_slot_since_genesis.t ) Transactions_ordered.Poly.t list ) option @@ -110,7 +110,9 @@ val fill_work_and_enqueue_transactions : val latest_ledger_proof : t -> ( Ledger_proof_with_sok_message.t - * (Transaction.t With_status.t * State_hash.t * Mina_numbers.Global_slot.t) + * ( Transaction.t With_status.t + * State_hash.t + * Mina_numbers.Global_slot_since_genesis.t ) Transactions_ordered.Poly.t list ) option @@ -127,7 +129,7 @@ val get_snarked_ledger_sync : -> get_protocol_state: (State_hash.t -> Mina_state.Protocol_state.Value.t Or_error.t) -> apply_first_pass: - ( global_slot:Mina_numbers.Global_slot.t + ( global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Mina_base.Zkapp_precondition.Protocol_state.View.t -> Ledger.t -> Transaction.t @@ -137,7 +139,7 @@ val get_snarked_ledger_sync : -> Ledger.Transaction_partially_applied.t -> Ledger.Transaction_applied.t Or_error.t ) -> apply_first_pass_sparse_ledger: - ( global_slot:Mina_numbers.Global_slot.t + ( global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Mina_base.Zkapp_precondition.Protocol_state.View.t -> Mina_ledger.Sparse_ledger.t -> Mina_transaction.Transaction.t @@ -152,7 +154,7 @@ val get_snarked_ledger_async : -> get_protocol_state: (State_hash.t -> Mina_state.Protocol_state.Value.t Or_error.t) -> apply_first_pass: - ( global_slot:Mina_numbers.Global_slot.t + ( global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Mina_base.Zkapp_precondition.Protocol_state.View.t -> Ledger.t -> Transaction.t @@ -162,7 +164,7 @@ val get_snarked_ledger_async : -> Ledger.Transaction_partially_applied.t -> Ledger.Transaction_applied.t Or_error.t ) -> apply_first_pass_sparse_ledger: - ( global_slot:Mina_numbers.Global_slot.t + ( global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Mina_base.Zkapp_precondition.Protocol_state.View.t -> Mina_ledger.Sparse_ledger.t -> Mina_transaction.Transaction.t @@ -184,7 +186,7 @@ val get_staged_ledger_async : -> get_protocol_state: (State_hash.t -> Mina_state.Protocol_state.Value.t Or_error.t) -> apply_first_pass: - ( global_slot:Mina_numbers.Global_slot.t + ( global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Mina_base.Zkapp_precondition.Protocol_state.View.t -> Ledger.t -> Transaction.t @@ -194,7 +196,7 @@ val get_staged_ledger_async : -> Ledger.Transaction_partially_applied.t -> Ledger.Transaction_applied.t Or_error.t ) -> apply_first_pass_sparse_ledger: - ( global_slot:Mina_numbers.Global_slot.t + ( global_slot:Mina_numbers.Global_slot_since_genesis.t -> txn_state_view:Mina_base.Zkapp_precondition.Protocol_state.View.t -> Mina_ledger.Sparse_ledger.t -> Mina_transaction.Transaction.t @@ -216,7 +218,9 @@ val hash : t -> Staged_ledger_hash.Aux_hash.t (** All the transactions with hash of the parent block in which they were included in the order in which they were applied*) val staged_transactions_with_state_hash : t - -> (Transaction.t With_status.t * State_hash.t * Mina_numbers.Global_slot.t) + -> ( Transaction.t With_status.t + * State_hash.t + * Mina_numbers.Global_slot_since_genesis.t ) Transactions_ordered.Poly.t list diff --git a/src/lib/transaction_witness/transaction_witness.ml b/src/lib/transaction_witness/transaction_witness.ml index f8fbf76d86c..ca07e03c93f 100644 --- a/src/lib/transaction_witness/transaction_witness.ml +++ b/src/lib/transaction_witness/transaction_witness.ml @@ -40,7 +40,7 @@ module Zkapp_command_segment_witness = struct list ; state_body : Mina_state.Protocol_state.Body.Value.Stable.V2.t ; init_stack : Mina_base.Pending_coinbase.Stack_versioned.Stable.V1.t - ; block_global_slot : Mina_numbers.Global_slot.Stable.V1.t + ; block_global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t } [@@deriving sexp, yojson] @@ -59,7 +59,7 @@ module Stable = struct ; protocol_state_body : Mina_state.Protocol_state.Body.Value.Stable.V2.t ; init_stack : Mina_base.Pending_coinbase.Stack_versioned.Stable.V1.t ; status : Mina_base.Transaction_status.Stable.V2.t - ; block_global_slot : Mina_numbers.Global_slot.Stable.V1.t + ; block_global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t } [@@deriving sexp, yojson] diff --git a/src/lib/transaction_witness/transaction_witness.mli b/src/lib/transaction_witness/transaction_witness.mli index a79972f41f4..acb297d8b42 100644 --- a/src/lib/transaction_witness/transaction_witness.mli +++ b/src/lib/transaction_witness/transaction_witness.mli @@ -39,7 +39,7 @@ module Zkapp_command_segment_witness : sig list ; state_body : Mina_state.Protocol_state.Body.Value.Stable.V2.t ; init_stack : Pending_coinbase.Stack_versioned.Stable.V1.t - ; block_global_slot : Mina_numbers.Global_slot.Stable.V1.t + ; block_global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t } [@@deriving sexp, to_yojson] end @@ -56,7 +56,7 @@ module Stable : sig ; protocol_state_body : Mina_state.Protocol_state.Body.Value.Stable.V2.t ; init_stack : Mina_base.Pending_coinbase.Stack_versioned.Stable.V1.t ; status : Mina_base.Transaction_status.Stable.V2.t - ; block_global_slot : Mina_numbers.Global_slot.Stable.V1.t + ; block_global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t } [@@deriving sexp, yojson] end diff --git a/src/lib/transition_frontier/frontier_base/breadcrumb.ml b/src/lib/transition_frontier/frontier_base/breadcrumb.ml index e9a00bd931b..7027de1019e 100644 --- a/src/lib/transition_frontier/frontier_base/breadcrumb.ml +++ b/src/lib/transition_frontier/frontier_base/breadcrumb.ml @@ -77,7 +77,8 @@ let compute_block_trace_metadata transition_with_validation = let cs = Mina_state.Protocol_state.consensus_state ps in let open Consensus.Data.Consensus_state in [ ( "global_slot" - , Mina_numbers.Global_slot.to_yojson @@ global_slot_since_genesis cs ) + , Mina_numbers.Global_slot_since_genesis.to_yojson + @@ global_slot_since_genesis cs ) ; ("slot", Unsigned_extended.UInt32.to_yojson @@ curr_slot cs) ; ( "previous_state_hash" , State_hash.to_yojson @@ Mina_state.Protocol_state.previous_state_hash ps diff --git a/src/lib/transition_frontier/full_frontier/full_frontier.ml b/src/lib/transition_frontier/full_frontier/full_frontier.ml index 1cac4590cbe..6d83b907a06 100644 --- a/src/lib/transition_frontier/full_frontier/full_frontier.ml +++ b/src/lib/transition_frontier/full_frontier/full_frontier.ml @@ -720,9 +720,12 @@ module Metrics = struct | Some parent -> find_ancestor ~f parent in + let curr_global_slot_u32 cs = + curr_global_slot cs |> Mina_numbers.Global_slot_since_genesis.to_uint32 + in let start = let open Consensus.Data.Consensus_state in - let slot = intprop curr_global_slot in + let slot = intprop curr_global_slot_u32 in let best_tip_slot = slot best_tip in let k = Unsigned.UInt32.to_int consensus_constants.k in match @@ -733,7 +736,7 @@ module Metrics = struct in let change f = intprop f best_tip - intprop f start in let length_change = change blockchain_length in - let slot_change = change curr_global_slot in + let slot_change = change curr_global_slot_u32 in if slot_change = 0 then 1. else Float.of_int length_change /. Float.of_int slot_change end diff --git a/src/lib/user_command_input/user_command_input.ml b/src/lib/user_command_input/user_command_input.ml index 5e63e4815c3..e62be2ef98a 100644 --- a/src/lib/user_command_input/user_command_input.ml +++ b/src/lib/user_command_input/user_command_input.ml @@ -13,7 +13,7 @@ module Payload = struct ( Currency.Fee.Stable.V1.t , Public_key.Compressed.Stable.V1.t , Account_nonce.Stable.V1.t option - , Global_slot.Stable.V1.t + , Global_slot_since_genesis.Stable.V1.t , Signed_command_memo.Stable.V1.t ) Signed_command_payload.Common.Poly.Stable.V2.t [@@deriving sexp, to_yojson] @@ -125,7 +125,9 @@ let fee_payer ({ payload; _ } : t) = Payload.fee_payer payload let create ?nonce ~fee ~fee_payer_pk ~valid_until ~memo ~body ~signer ~sign_choice () : t = - let valid_until = Option.value valid_until ~default:Global_slot.max_value in + let valid_until = + Option.value valid_until ~default:Global_slot_since_genesis.max_value + in let payload = Payload.create ~fee ~fee_payer_pk ?nonce ~valid_until ~memo ~body in diff --git a/src/lib/user_command_input/user_command_input.mli b/src/lib/user_command_input/user_command_input.mli index ddf076c9b85..139201fcee7 100644 --- a/src/lib/user_command_input/user_command_input.mli +++ b/src/lib/user_command_input/user_command_input.mli @@ -58,7 +58,7 @@ val create : ?nonce:Account.Nonce.t -> fee:Currency.Fee.t -> fee_payer_pk:Public_key.Compressed.t - -> valid_until:Global_slot.t option + -> valid_until:Global_slot_since_genesis.t option -> memo:Signed_command_memo.t -> body:Signed_command_payload.Body.t -> signer:Public_key.Compressed.t diff --git a/src/lib/vrf_evaluator/dune b/src/lib/vrf_evaluator/dune index 6c6c3b9bbe0..ad0d4328d9b 100644 --- a/src/lib/vrf_evaluator/dune +++ b/src/lib/vrf_evaluator/dune @@ -12,6 +12,7 @@ bin_prot.shape sexplib0 base.caml + integers ;; local libraries mina_wire_types error_json diff --git a/src/lib/vrf_evaluator/vrf_evaluator.ml b/src/lib/vrf_evaluator/vrf_evaluator.ml index d3065c03f34..16ec19063dc 100644 --- a/src/lib/vrf_evaluator/vrf_evaluator.ml +++ b/src/lib/vrf_evaluator/vrf_evaluator.ml @@ -2,7 +2,7 @@ open Core open Async open Signature_lib module Epoch = Mina_numbers.Length -module Global_slot = Mina_numbers.Global_slot +module Global_slot_since_genesis = Mina_numbers.Global_slot_since_genesis module type CONTEXT = sig val logger : Logger.t @@ -13,7 +13,7 @@ module type CONTEXT = sig end (*Slot number within an epoch*) -module Slot = Mina_numbers.Global_slot +module Slot = Mina_numbers.Global_slot_since_genesis (* Can extract both slot numbers and epoch number*) module Consensus_time = Consensus.Data.Consensus_time @@ -40,13 +40,14 @@ module Evaluator_status = struct [@@@no_toplevel_latest_type] module V1 = struct - type t = At of Global_slot.Stable.V1.t | Completed + type t = At of Global_slot_since_genesis.Stable.V1.t | Completed let to_latest = Fn.id end end] - type t = Stable.Latest.t = At of Global_slot.t | Completed [@@deriving sexp] + type t = Stable.Latest.t = At of Global_slot_since_genesis.t | Completed + [@@deriving sexp] end module Vrf_evaluation_result = struct @@ -96,7 +97,7 @@ module Worker_state = struct (Epoch.t * Slot.t) Public_key.Compressed.Table.t ; slots_won : Consensus.Data.Slot_won.t Queue.t (*possibly multiple producers per slot*) - ; mutable current_slot : Global_slot.t option + ; mutable current_slot : Global_slot_since_genesis.t option ; mutable epoch_data : unit Ivar.t * Consensus.Data.Epoch_data_for_vrf.t option ; mutable block_producer_keys : Block_producer_keys.t @@ -151,7 +152,7 @@ module Worker_state = struct let%bind () = Interruptible.lift Deferred.unit (Ivar.read interrupt_ivar) in - let module Slot = Mina_numbers.Global_slot in + let module Slot = Mina_numbers.Global_slot_since_genesis in let epoch = epoch_data.epoch in [%log info] "Starting VRF evaluation for epoch: $epoch" ~metadata:[ ("epoch", Epoch.to_yojson epoch) ] ; @@ -170,7 +171,9 @@ module Worker_state = struct let evaluate_vrf ~consensus_time = (* Try vrfs for all keypairs that are unseen within this slot until one wins or all lose *) (* TODO: Don't do this, and instead pick the one that has the highest chance of winning. See #2573 *) - let slot = Consensus_time.slot consensus_time in + let slot : Slot.t = + Slot.of_uint32 @@ Consensus_time.slot consensus_time + in let global_slot = Consensus_time.to_global_slot consensus_time in [%log info] "Checking VRF evaluations for epoch: $epoch, slot: $slot" ~metadata: @@ -182,8 +185,11 @@ module Worker_state = struct Interruptible.return None | ((keypair : Keypair.t), public_key_compressed) :: keypairs -> ( let global_slot_since_genesis = - let slot_diff = - match Global_slot.sub global_slot start_global_slot with + let slot_diff : Mina_numbers.Global_slot_span.t = + match + Global_slot_since_genesis.diff global_slot + start_global_slot + with | None -> failwith "Checking slot-winner for a slot which is older than \ @@ -192,7 +198,8 @@ module Worker_state = struct | Some diff -> diff in - Global_slot.add start_global_slot_since_genesis slot_diff + Global_slot_since_genesis.add start_global_slot_since_genesis + slot_diff in [%log info] "Checking VRF evaluations at epoch: $epoch, slot: $slot" @@ -231,7 +238,7 @@ module Worker_state = struct go keypairs in let rec find_winning_slot (consensus_time : Consensus_time.t) = - let slot = Consensus_time.slot consensus_time in + let slot = Slot.of_uint32 @@ Consensus_time.slot consensus_time in let global_slot = Consensus_time.to_global_slot consensus_time in t.current_slot <- Some global_slot ; let epoch' = Consensus_time.epoch consensus_time in @@ -265,7 +272,7 @@ module Worker_state = struct ; slots_won = Queue.create ~capacity: - (Global_slot.to_int config.consensus_constants.slots_per_epoch) + (Unsigned.UInt32.to_int config.consensus_constants.slots_per_epoch) () ; current_slot = None ; epoch_data = (Ivar.create (), None) diff --git a/src/nonconsensus/mina_numbers/global_slot.ml b/src/nonconsensus/mina_numbers/global_slot.ml deleted file mode 120000 index d68179cecfd..00000000000 --- a/src/nonconsensus/mina_numbers/global_slot.ml +++ /dev/null @@ -1 +0,0 @@ -../../lib/mina_numbers/global_slot.ml \ No newline at end of file diff --git a/src/nonconsensus/mina_numbers/global_slot.mli b/src/nonconsensus/mina_numbers/global_slot.mli deleted file mode 120000 index 1c0b418f79c..00000000000 --- a/src/nonconsensus/mina_numbers/global_slot.mli +++ /dev/null @@ -1 +0,0 @@ -../../lib/mina_numbers/global_slot.mli \ No newline at end of file From cb6af6ea674d80fe2e83e3c9aaf79f6450e0ae07 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Tue, 2 May 2023 16:27:30 -0700 Subject: [PATCH 02/40] rm unused open --- src/lib/transition_frontier/full_frontier/full_frontier.ml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/transition_frontier/full_frontier/full_frontier.ml b/src/lib/transition_frontier/full_frontier/full_frontier.ml index 6d83b907a06..5da6d015a52 100644 --- a/src/lib/transition_frontier/full_frontier/full_frontier.ml +++ b/src/lib/transition_frontier/full_frontier/full_frontier.ml @@ -724,7 +724,6 @@ module Metrics = struct curr_global_slot cs |> Mina_numbers.Global_slot_since_genesis.to_uint32 in let start = - let open Consensus.Data.Consensus_state in let slot = intprop curr_global_slot_u32 in let best_tip_slot = slot best_tip in let k = Unsigned.UInt32.to_int consensus_constants.k in From 05a198cb1b24cd619258516ba90fc1fea3f97030 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Tue, 2 May 2023 16:29:49 -0700 Subject: [PATCH 03/40] fix client SDK build --- src/app/client_sdk/js_util.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/client_sdk/js_util.ml b/src/app/client_sdk/js_util.ml index 167f8b64707..280de208b8c 100644 --- a/src/app/client_sdk/js_util.ml +++ b/src/app/client_sdk/js_util.ml @@ -3,7 +3,7 @@ open Js_of_ocaml open Snark_params.Tick open Mina_base -module Global_slot = Mina_numbers.Global_slot +module Global_slot_since_genesis = Mina_numbers.Global_slot_since_genesis module Memo = Signed_command_memo let raise_js_error s = From 2425f78f0234e8d75c8ff4f0889a0b8a000a46e1 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Tue, 2 May 2023 16:39:54 -0700 Subject: [PATCH 04/40] fix Rosetta build --- src/app/rosetta/lib/account.ml | 9 +++++---- src/app/rosetta/lib/network.ml | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/app/rosetta/lib/account.ml b/src/app/rosetta/lib/account.ml index 1414f6969d0..57285996858 100644 --- a/src/app/rosetta/lib/account.ml +++ b/src/app/rosetta/lib/account.ml @@ -119,13 +119,13 @@ module Sql = struct ~end_slot = let open Unsigned in let cliff_time = - UInt32.of_int (Int.of_int64_exn timing_info.cliff_time) + Mina_numbers.Global_slot_since_genesis.of_int (Int.of_int64_exn timing_info.cliff_time) in let cliff_amount = MinaCurrency.Amount.of_string timing_info.cliff_amount in let vesting_period = - UInt32.of_int (Int.of_int64_exn timing_info.vesting_period) + Mina_numbers.Global_slot_span.of_int (Int.of_int64_exn timing_info.vesting_period) in let vesting_increment = MinaCurrency.Amount.of_string @@ -161,7 +161,8 @@ module Sql = struct |> Errors.Lift.sql ~context:"Finding timing info" in let end_slot = - UInt32.of_int64 requested_block_global_slot_since_genesis + Mina_numbers.Global_slot_since_genesis.of_uint32 + (Unsigned.UInt32.of_int64 requested_block_global_slot_since_genesis) in let%bind (liquid_balance, nonce) = match timing_info_opt with @@ -178,7 +179,7 @@ module Sql = struct let incremental_balance_between_slots = compute_incremental_balance timing_info ~start_slot: - (UInt32.of_int + (Mina_numbers.Global_slot_since_genesis.of_int (Int.of_int64_exn last_relevant_command_global_slot_since_genesis)) ~end_slot diff --git a/src/app/rosetta/lib/network.ml b/src/app/rosetta/lib/network.ml index 91e2b62f089..dc7d119b11b 100644 --- a/src/app/rosetta/lib/network.ml +++ b/src/app/rosetta/lib/network.ml @@ -284,7 +284,7 @@ module Status = struct stateHash = "GENESIS_HASH"; protocolState = { consensusState = { - blockHeight = Mina_numbers.Global_slot_since_genesis.of_int 1; + blockHeight = Unsigned.UInt32.of_int 1; }; }; }; From 184560113b143d121c496acf30eb6239556b3c7e Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Tue, 2 May 2023 21:04:14 -0700 Subject: [PATCH 05/40] fix heap usage app --- src/app/heap_usage/heap_usage.ml | 2 +- src/app/heap_usage/values.ml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/app/heap_usage/heap_usage.ml b/src/app/heap_usage/heap_usage.ml index 0d9e378dba8..9ba9b1fe894 100644 --- a/src/app/heap_usage/heap_usage.ml +++ b/src/app/heap_usage/heap_usage.ml @@ -7,7 +7,7 @@ let print_heap_usage name v = let repr = Obj.repr v in (* reachable_words may be 0, so it doesn't include size *) let words = Obj.size repr + Obj.reachable_words repr in - Format.printf "Data of type %-36s uses %6d heap words = %8d bytes@." name + Format.printf "Data of type %-46s uses %6d heap words = %8d bytes@." name words (words * Sys.word_size) let main () = diff --git a/src/app/heap_usage/values.ml b/src/app/heap_usage/values.ml index a3e9c8a0956..bc1b40b61c3 100644 --- a/src/app/heap_usage/values.ml +++ b/src/app/heap_usage/values.ml @@ -418,10 +418,10 @@ let protocol_state = "last_vrf_output": "q4zrn2ZlIeTV8_8XPb3PZu4eQusG0n5ieUNy5gyZAAA=", "total_currency": "1014488754000001000", "curr_global_slot": { - "slot_number": "2831", + "slot_number": ["Since_genesis","2831"], "slots_per_epoch": "7140" }, - "global_slot_since_genesis": "2831", + "global_slot_since_genesis": ["Since_genesis","2831"], "staking_epoch_data": { "ledger": { "hash": "jxx14ajKiweveJ7iAxtzTiLfAm3KXj5Y4MMvkbLc2qhi2LYnzLS", @@ -487,7 +487,7 @@ let staged_ledger_diff = "fee": "0", "fee_payer_pk": "B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ @@ -516,7 +516,7 @@ let staged_ledger_diff = "fee": "0", "fee_payer_pk": "B62qrA2eWb592uRLtH5ohzQnx7WTLYp2jGirCw5M7Fb9gTf1RrvTPqX", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ @@ -545,7 +545,7 @@ let staged_ledger_diff = "fee": "0", "fee_payer_pk": "B62qpkCEM5N5ddVsYNbFtwWV4bsT9AwuUJXoehFhHUbYYvZ6j3fXt93", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ @@ -574,7 +574,7 @@ let staged_ledger_diff = "fee": "0", "fee_payer_pk": "B62qp5sdhH48MurWgtHNkXUTphEmUfcKVmZFspYAqxcKZ7YxaPF1pyF", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ @@ -603,7 +603,7 @@ let staged_ledger_diff = "fee": "0", "fee_payer_pk": "B62qqR5XfP9CoC5DALUJX2jBoY6aaoLrN46YpM2NQTSV14qgpoWibL7", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ @@ -632,7 +632,7 @@ let staged_ledger_diff = "fee": "0", "fee_payer_pk": "B62qr4GMdg4ZVk1Y6BXaDHxgFRtCsZm2sZiyn7PCmubTZnAi3iZDDxq", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ @@ -661,7 +661,7 @@ let staged_ledger_diff = "fee": "0", "fee_payer_pk": "B62qpgjtMzVpodthL3kMfXAAzzv1kgGZRMEeLv592u4hSVQKCzTGLvA", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ From a54e4b84260454909d77acfc67d9e072473ff968 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Tue, 2 May 2023 21:05:55 -0700 Subject: [PATCH 06/40] rm unused open --- src/app/rosetta/lib/account.ml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/app/rosetta/lib/account.ml b/src/app/rosetta/lib/account.ml index 57285996858..813ee7901ea 100644 --- a/src/app/rosetta/lib/account.ml +++ b/src/app/rosetta/lib/account.ml @@ -117,7 +117,6 @@ module Sql = struct (timing_info : Archive_lib.Processor.Timing_info.t) ~start_slot ~end_slot = - let open Unsigned in let cliff_time = Mina_numbers.Global_slot_since_genesis.of_int (Int.of_int64_exn timing_info.cliff_time) in From 48177be16b18ea8465e81f365ff5ae67edc857e6 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 3 May 2023 10:54:59 -0700 Subject: [PATCH 07/40] Fix wire types test --- src/lib/mina_wire_types/test/type_equalities.ml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/mina_wire_types/test/type_equalities.ml b/src/lib/mina_wire_types/test/type_equalities.ml index 039f8a44dc3..c8e0a81e03c 100644 --- a/src/lib/mina_wire_types/test/type_equalities.ml +++ b/src/lib/mina_wire_types/test/type_equalities.ml @@ -119,7 +119,9 @@ module Mina_numbers = struct module O = Mina_numbers module W = WT.Mina_numbers include Assert_equal0V1 (O.Account_nonce.Stable) (W.Account_nonce) - include Assert_equal0V1 (O.Global_slot_since_genesis.Stable) (W.Global_slot) + include Assert_equal0V1 (O.Global_slot_since_genesis.Stable) (W.Global_slot_since_genesis) + include Assert_equal0V1 (O.Global_slot_since_hard_fork.Stable) (W.Global_slot_since_hard_fork) + include Assert_equal0V1 (O.Global_slot_span.Stable) (W.Global_slot_span) include Assert_equal0V1 (O.Length.Stable) (W.Length) include Assert_equal0V1 (O.Index.Stable) (W.Index) end From c199f48ee74e5b69991a9980d09bd58085dfcf9b Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 3 May 2023 11:13:28 -0700 Subject: [PATCH 08/40] fix account tests --- src/lib/mina_base/account.ml | 3 +- src/lib/mina_base/test/account/account.ml | 32 +++++++++++-------- .../mina_wire_types/test/type_equalities.ml | 10 ++++-- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/lib/mina_base/account.ml b/src/lib/mina_base/account.ml index 3fc6c656d0d..21e1cbf5be8 100644 --- a/src/lib/mina_base/account.ml +++ b/src/lib/mina_base/account.ml @@ -826,8 +826,7 @@ let final_vesting_slot ~initial_minimum_balance ~cliff_time ~cliff_amount let open Infix in Global_slot_since_genesis.of_uint32 @@ Global_slot_since_genesis.to_uint32 cliff_time - + UInt64.to_uint32 periods - * Global_slot_since_genesis.to_uint32 vesting_period + + (UInt64.to_uint32 periods * Global_slot_span.to_uint32 vesting_period) let timing_final_vesting_slot = function | Timing.Untimed -> diff --git a/src/lib/mina_base/test/account/account.ml b/src/lib/mina_base/test/account/account.ml index 7d1e43e20a1..0473f682326 100644 --- a/src/lib/mina_base/test/account/account.ml +++ b/src/lib/mina_base/test/account/account.ml @@ -54,7 +54,8 @@ let%test_module "Test account's timing." = (let open Quickcheck.Generator.Let_syntax in let%bind timing = gen_timing in let max_global_slot = - Global_slot_since_genesis.(sub timing.cliff_time (of_int 1)) + Global_slot_since_genesis.( + sub timing.cliff_time (Global_slot_span.of_int 1)) |> Option.value_exn in let%map global_slot = @@ -94,7 +95,8 @@ let%test_module "Test account's timing." = [%test_eq: Balance.t] Balance.zero (min_balance_at_slot timing_rec ~global_slot:vesting_final_slot) ; let one_slot_prior = - Global_slot_since_genesis.(sub vesting_final_slot (of_int 1)) + Global_slot_since_genesis.( + sub vesting_final_slot (Global_slot_span.of_int 1)) |> Option.value_exn in [%test_pred: Balance.t] @@ -115,7 +117,7 @@ let%test_module "Test account's timing." = let vesting_end = Account.timing_final_vesting_slot timing in (* Global_slot addition may overflow, so we need to make sure it won't happen. *) let max_slot = - let open Global_slot in + let open Global_slot_since_genesis in sub max_value timing_rec.vesting_period |> Option.value_map ~default:vesting_end ~f:(min vesting_end) in @@ -141,7 +143,8 @@ let%test_module "Test account's timing." = (let open Quickcheck.Generator.Let_syntax in let%bind timing = gen_timing in let max_slot = - Global_slot_since_genesis.(sub timing.cliff_time (of_int 1)) + Global_slot_since_genesis.( + sub timing.cliff_time (Global_slot_span.of_int 1)) |> Option.value ~default:Global_slot_since_genesis.zero in let%bind slot1 = Global_slot_since_genesis.(gen_incl zero max_slot) in @@ -188,13 +191,14 @@ let%test_module "Test account's timing." = Account.gen_timing_at_least_one_vesting_period Balance.max_int in let min_slot = - Global_slot_since_genesis.(add timing.cliff_time (of_int 1)) + Global_slot_since_genesis.( + add timing.cliff_time (Global_slot_span.of_int 1)) in let max_slot = - let open Global_slot in + let open Global_slot_since_genesis in sub Account.(timing_final_vesting_slot @@ Timing.of_record timing) - (of_int 1) + (Global_slot_span.of_int 1) |> Option.value ~default:zero in let%bind slot1 = Global_slot_since_genesis.gen_incl min_slot max_slot in @@ -238,9 +242,10 @@ let%test_module "Test account's timing." = Account.(liquid_balance_at_slot account ~global_slot) ) let%test_unit "Minimum balance checked equal to unchecked." = - let global_slot_var gs = - Global_slot_since_genesis.(Checked.constant @@ to_uint32 gs) + let global_slot_since_genesis_var gs = + Global_slot_since_genesis.Checked.constant gs in + let global_slot_span_var span = Global_slot_span.Checked.constant span in Quickcheck.test (let open Quickcheck.Generator.Let_syntax in let%bind timing = gen_timing in @@ -252,8 +257,7 @@ let%test_module "Test account's timing." = let open UInt64.Infix in Amount.(to_uint64 max_int) / Amount.to_uint64 timing.vesting_increment - * UInt64.of_uint32 - (Global_slot_since_genesis.to_uint32 timing.vesting_period) + * UInt64.of_uint32 (Global_slot_span.to_uint32 timing.vesting_period) |> UInt64.to_uint32 |> UInt32.add (Global_slot_since_genesis.to_uint32 timing.cliff_time) |> Global_slot_since_genesis.of_uint32 @@ -269,10 +273,10 @@ let%test_module "Test account's timing." = ~initial_minimum_balance: Balance.(var_of_t timing.initial_minimum_balance) ~cliff_amount:Amount.(var_of_t timing.cliff_amount) - ~cliff_time:(global_slot_var timing.cliff_time) + ~cliff_time:(global_slot_since_genesis_var timing.cliff_time) ~vesting_increment:Amount.(var_of_t timing.vesting_increment) - ~vesting_period:(global_slot_var timing.vesting_period) - ~global_slot:(global_slot_var global_slot) + ~vesting_period:(global_slot_span_var timing.vesting_period) + ~global_slot:(global_slot_since_genesis_var global_slot) |> Snarky_backendless.( Checked_runner.Simple.map ~f:(As_prover0.read Balance.typ)) |> Snark_params.Tick.run_and_check diff --git a/src/lib/mina_wire_types/test/type_equalities.ml b/src/lib/mina_wire_types/test/type_equalities.ml index c8e0a81e03c..1d0242261b7 100644 --- a/src/lib/mina_wire_types/test/type_equalities.ml +++ b/src/lib/mina_wire_types/test/type_equalities.ml @@ -119,8 +119,14 @@ module Mina_numbers = struct module O = Mina_numbers module W = WT.Mina_numbers include Assert_equal0V1 (O.Account_nonce.Stable) (W.Account_nonce) - include Assert_equal0V1 (O.Global_slot_since_genesis.Stable) (W.Global_slot_since_genesis) - include Assert_equal0V1 (O.Global_slot_since_hard_fork.Stable) (W.Global_slot_since_hard_fork) + include + Assert_equal0V1 + (O.Global_slot_since_genesis.Stable) + (W.Global_slot_since_genesis) + include + Assert_equal0V1 + (O.Global_slot_since_hard_fork.Stable) + (W.Global_slot_since_hard_fork) include Assert_equal0V1 (O.Global_slot_span.Stable) (W.Global_slot_span) include Assert_equal0V1 (O.Length.Stable) (W.Length) include Assert_equal0V1 (O.Index.Stable) (W.Index) From 079fa517082ad0e5fb3746bde28aad66196962e0 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 3 May 2023 11:16:34 -0700 Subject: [PATCH 09/40] fix zkapp fuzzy build --- src/lib/transaction_snark/test/zkapp_fuzzy/zkapp_fuzzy.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/transaction_snark/test/zkapp_fuzzy/zkapp_fuzzy.ml b/src/lib/transaction_snark/test/zkapp_fuzzy/zkapp_fuzzy.ml index c16b353370d..0da912bb58d 100644 --- a/src/lib/transaction_snark/test/zkapp_fuzzy/zkapp_fuzzy.ml +++ b/src/lib/transaction_snark/test/zkapp_fuzzy/zkapp_fuzzy.ml @@ -29,7 +29,7 @@ let mk_ledgers_and_fee_payers ?(is_timed = false) ~num_of_fee_payers () = in let cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 1_000 in let cliff_amount = Currency.Amount.zero in - let vesting_period = Mina_numbers.Global_slot_since_genesis.of_int 10 in + let vesting_period = Mina_numbers.Global_slot_span.of_int 10 in let vesting_increment = Currency.Amount.of_mina_int_exn 100 in Array.map fee_payer_account_ids ~f:(fun fee_payer_account_id -> Account.create_timed fee_payer_account_id initial_balance From a2dd747fc81ea7d5daa17dfa6f70a16bc65bc570 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 3 May 2023 11:21:48 -0700 Subject: [PATCH 10/40] Fix snarkyjs_bindings/lib build --- src/lib/mina_base/zkapp_precondition.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/mina_base/zkapp_precondition.ml b/src/lib/mina_base/zkapp_precondition.ml index eb363417ca5..e561c6461c7 100644 --- a/src/lib/mina_base/zkapp_precondition.ml +++ b/src/lib/mina_base/zkapp_precondition.ml @@ -1117,7 +1117,7 @@ module Protocol_state = struct Poly.Fields.make_creator obj ~snarked_ledger_hash:!.field ~blockchain_length:!.uint32 ~min_window_density:!.uint32 ~last_vrf_output ~total_currency:!.amount - ~global_slot_since_genesis:!.uint32 + ~global_slot_since_genesis:!.global_slot_since_genesis ~staking_epoch_data:!.epoch_data_deriver ~next_epoch_data:!.epoch_data_deriver |> finish "NetworkView" ~t_toplevel_annots:Poly.t_toplevel_annots From 3eb77b68aa9f652a84ec4563a02f9547d85a37fb Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 3 May 2023 11:32:34 -0700 Subject: [PATCH 11/40] fix account_timing, transaction union tests --- .../transaction_logic/test/account_timing.ml | 4 +- .../test/account_timing/account_timing.ml | 73 +++++++------------ .../transaction_union/transaction_union.ml | 4 +- 3 files changed, 32 insertions(+), 49 deletions(-) diff --git a/src/lib/transaction_logic/test/account_timing.ml b/src/lib/transaction_logic/test/account_timing.ml index a0be63114d6..7234f15274c 100644 --- a/src/lib/transaction_logic/test/account_timing.ml +++ b/src/lib/transaction_logic/test/account_timing.ml @@ -91,7 +91,9 @@ let%test_module "Test account timing." = let%bind amount = Amount.(gen_incl zero available_amount) in let final_slot = Global_slot_since_genesis.( - sub (Account.timing_final_vesting_slot account.timing) (of_int 1)) + sub + (Account.timing_final_vesting_slot account.timing) + (Global_slot_span.of_int 1)) |> Option.value ~default:Global_slot_since_genesis.zero in let%map slot = Global_slot_since_genesis.(gen_incl zero final_slot) in diff --git a/src/lib/transaction_snark/test/account_timing/account_timing.ml b/src/lib/transaction_snark/test/account_timing/account_timing.ml index 876f1eb164b..ff860034674 100644 --- a/src/lib/transaction_snark/test/account_timing/account_timing.ml +++ b/src/lib/transaction_snark/test/account_timing/account_timing.ml @@ -19,7 +19,7 @@ let%test_module "account timing check" = ?(initial_minimum_balance = Balance.of_mina_int_exn 10_000) ?(cliff_amount = Amount.zero) ?(cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 1000) - ?(vesting_period = Mina_numbers.Global_slot_since_genesis.of_int 10) + ?(vesting_period = Mina_numbers.Global_slot_span.of_int 10) ?(vesting_increment = Amount.of_mina_int_exn 100) balance = let pk = Public_key.Compressed.empty in let account_id = Account_id.create pk token in @@ -249,7 +249,7 @@ let%test_module "account timing check" = account_with_default_vesting_schedule ~cliff_amount:(Amount.of_mina_int_exn 10_000) (* The same as initial minimum balance. *) - ~vesting_period:(Mina_numbers.Global_slot_since_genesis.of_int 1) + ~vesting_period:(Mina_numbers.Global_slot_span.of_int 1) ~vesting_increment:Amount.zero (Balance.of_mina_int_exn 100_000) in @@ -443,8 +443,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 100 - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -505,8 +504,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 100 - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -578,8 +576,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -641,8 +638,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -691,8 +687,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.zero - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -750,8 +745,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -799,8 +793,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -860,7 +853,7 @@ let%test_module "account timing check" = ; init_min_bal : Currency.Balance.t ; cliff_time : Mina_numbers.Global_slot_since_genesis.t ; cliff_amt : Currency.Amount.t - ; vest_period : Mina_numbers.Global_slot_since_genesis.t + ; vest_period : Mina_numbers.Global_slot_span.t ; vest_incr : Currency.Amount.t ; slot : Mina_numbers.Global_slot_since_genesis.t ; available_funds : Currency.Amount.t @@ -896,7 +889,7 @@ let%test_module "account timing check" = in let%bind vest_period = unless_fixed ?fixed:vest_period - Global_slot_since_genesis.(gen_incl (of_int 1) (of_int 20)) + Global_slot_span.(gen_incl (of_int 1) (of_int 20)) in let to_vest = Amount.( @@ -914,7 +907,7 @@ let%test_module "account timing check" = in let vest_time = if Amount.(vest_incr > zero) then - Global_slot_since_genesis.to_int vest_period + Global_slot_span.to_int vest_period * (to_vest / Amount.to_nanomina_int vest_incr) else 0 in @@ -936,7 +929,7 @@ let%test_module "account timing check" = in let vested = max 0 (slot_int - cliff_int) - / Mina_numbers.Global_slot_since_genesis.to_int vest_period + / Mina_numbers.Global_slot_span.to_int vest_period |> Amount.scale vest_incr |> Option.value ~default:Amount.max_int in @@ -1186,8 +1179,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 100 - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -1257,8 +1249,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 100 - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -1339,8 +1330,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 100 - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -1450,8 +1440,7 @@ let%test_module "account timing check" = Mina_numbers.Global_slot_since_genesis.of_int 1000 ; cliff_amount = Currency.Amount.of_nanomina_int_exn 100_000_000 - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 10 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 10 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 100_000_000 } @@ -1554,8 +1543,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10000 ; cliff_amount = Currency.Amount.of_mina_int_exn 100_000 - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -1642,8 +1630,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10000 ; cliff_amount = Currency.Amount.of_mina_int_exn 100_000 - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -1713,8 +1700,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.zero - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 100_000 } @@ -1790,8 +1776,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.zero - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 100_000 } @@ -1876,8 +1861,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.zero - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_mina_int_exn 1 } in @@ -1951,8 +1935,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.zero - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_mina_int_exn 1 } in @@ -2044,8 +2027,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10 ; cliff_amount = Currency.Amount.of_mina_int_exn 1 - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 10 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 10 ; vesting_increment = Currency.Amount.of_mina_int_exn 1 } : Account_update.Update.Timing_info.value ) @@ -2125,7 +2107,7 @@ let%test_module "account timing check" = Mina_numbers.Global_slot_since_genesis.of_int 10 ; cliff_amount = Currency.Amount.of_mina_int_exn 1 ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 10 + Mina_numbers.Global_slot_span.of_int 10 ; vesting_increment = Currency.Amount.of_mina_int_exn 1 } : Account_update.Update.Timing_info.value ) @@ -2180,8 +2162,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.zero - ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 100_000 } @@ -2210,7 +2191,7 @@ let%test_module "account timing check" = Mina_numbers.Global_slot_since_genesis.of_int 10 ; cliff_amount = Currency.Amount.of_mina_int_exn 1 ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 10 + Mina_numbers.Global_slot_span.of_int 10 ; vesting_increment = Currency.Amount.of_mina_int_exn 1 } : Account_update.Update.Timing_info.value ) diff --git a/src/lib/transaction_snark/test/transaction_union/transaction_union.ml b/src/lib/transaction_snark/test/transaction_union/transaction_union.ml index d332d69c4a8..183daabbcd0 100644 --- a/src/lib/transaction_snark/test/transaction_union/transaction_union.ml +++ b/src/lib/transaction_snark/test/transaction_union/transaction_union.ml @@ -958,7 +958,7 @@ let%test_module "Transaction union tests" = let cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 1000 in let cliff_amount = Amount.of_nanomina_int_exn 10_000 in let vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 10 + Mina_numbers.Global_slot_span.of_int 10 in let vesting_increment = Amount.of_nanomina_int_exn 1 in let txn_global_slot = @@ -1905,7 +1905,7 @@ let%test_module "Transaction union tests" = let cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 2 in let cliff_amount = Amount.of_mina_int_exn 5 in let vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 2 + Mina_numbers.Global_slot_span.of_int 2 in let vesting_increment = Amount.of_mina_int_exn 40 in Or_error.ok_exn From 38532fc1ab9209e21304be94b164ab17e8626f33 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 3 May 2023 12:53:51 -0700 Subject: [PATCH 12/40] Add to interfaces --- src/app/rosetta/lib/network.ml | 2 +- src/lib/consensus/global_slot.ml | 4 ---- src/lib/consensus/global_slot_intf.ml | 2 -- src/lib/mina_base/account.ml | 4 ++-- src/lib/mina_numbers/global_slot.ml | 2 ++ src/lib/mina_numbers/global_slot_intf.ml | 2 ++ src/lib/mina_numbers/global_slot_span.ml | 2 ++ src/lib/mina_numbers/intf.ml | 2 ++ .../test/transaction_union/transaction_union.ml | 8 ++------ .../test/zkapp_fuzzy/zkapp_fuzzy.ml | 2 +- src/lib/transaction_snark/transaction_validator.ml | 13 ++++++------- 11 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/app/rosetta/lib/network.ml b/src/app/rosetta/lib/network.ml index dc7d119b11b..6735a560966 100644 --- a/src/app/rosetta/lib/network.ml +++ b/src/app/rosetta/lib/network.ml @@ -284,7 +284,7 @@ module Status = struct stateHash = "GENESIS_HASH"; protocolState = { consensusState = { - blockHeight = Unsigned.UInt32.of_int 1; + blockHeight = Unsigned.UInt32.one }; }; }; diff --git a/src/lib/consensus/global_slot.ml b/src/lib/consensus/global_slot.ml index c0276eeebbf..caddb9a8b0c 100644 --- a/src/lib/consensus/global_slot.ml +++ b/src/lib/consensus/global_slot.ml @@ -91,10 +91,6 @@ module Make_str (A : Wire_types.Concrete) = struct let ( < ) (t : t) (t' : t) = T.compare t.slot_number t'.slot_number < 0 - let ( - ) (t : t) (t' : t) = - T.sub t.slot_number - (Mina_numbers.Global_slot_span.of_uint32 @@ T.to_uint32 t'.slot_number) - let diff_slots (t1 : t) (t2 : t) = T.diff t1.slot_number t2.slot_number let max (t1 : t) (t2 : t) = if t1 < t2 then t2 else t1 diff --git a/src/lib/consensus/global_slot_intf.ml b/src/lib/consensus/global_slot_intf.ml index b52aa41a3ab..0dff2addf06 100644 --- a/src/lib/consensus/global_slot_intf.ml +++ b/src/lib/consensus/global_slot_intf.ml @@ -33,8 +33,6 @@ module type Full = sig val ( + ) : t -> int -> t - val ( - ) : t -> t -> Mina_numbers.Global_slot_since_genesis.t option - val ( < ) : t -> t -> bool val diff_slots : t -> t -> Mina_numbers.Global_slot_span.t option diff --git a/src/lib/mina_base/account.ml b/src/lib/mina_base/account.ml index 21e1cbf5be8..b40af326db8 100644 --- a/src/lib/mina_base/account.ml +++ b/src/lib/mina_base/account.ml @@ -896,8 +896,8 @@ let gen_with_vesting_period vesting_period = let open Quickcheck.Generator.Let_syntax in let open Global_slot_since_genesis in let min_vesting_end = - Global_slot_span.to_uint32 vesting_period - |> Unsigned.UInt32.succ |> Global_slot_since_genesis.of_uint32 + Global_slot_span.(succ vesting_period |> to_uint32) + |> Global_slot_since_genesis.of_uint32 in let%bind vesting_end = gen_incl min_vesting_end max_value in let max_cliff_time = Option.value_exn @@ sub vesting_end vesting_period in diff --git a/src/lib/mina_numbers/global_slot.ml b/src/lib/mina_numbers/global_slot.ml index 853608b6645..8b333a63049 100644 --- a/src/lib/mina_numbers/global_slot.ml +++ b/src/lib/mina_numbers/global_slot.ml @@ -65,6 +65,8 @@ module Make (M : S) = struct let zero = of_uint32 T.zero + let one = of_uint32 T.one + let succ t = let u32 = to_uint32 t in of_uint32 (T.succ u32) diff --git a/src/lib/mina_numbers/global_slot_intf.ml b/src/lib/mina_numbers/global_slot_intf.ml index 93c43a0983f..524e1a2d22e 100644 --- a/src/lib/mina_numbers/global_slot_intf.ml +++ b/src/lib/mina_numbers/global_slot_intf.ml @@ -24,6 +24,8 @@ module type S_base = sig val zero : t + val one : t + val succ : t -> t val of_int : int -> t diff --git a/src/lib/mina_numbers/global_slot_span.ml b/src/lib/mina_numbers/global_slot_span.ml index f97c7fcd91c..7103052d47d 100644 --- a/src/lib/mina_numbers/global_slot_span.ml +++ b/src/lib/mina_numbers/global_slot_span.ml @@ -62,6 +62,8 @@ module Make_str (_ : Wire_types.Concrete) = struct let zero = of_uint32 T.zero + let one = of_uint32 T.one + let succ t = of_uint32 (T.succ @@ to_uint32 t) let max_value = of_uint32 Unsigned.UInt32.max_int diff --git a/src/lib/mina_numbers/intf.ml b/src/lib/mina_numbers/intf.ml index f4b6988b04f..df506258430 100644 --- a/src/lib/mina_numbers/intf.ml +++ b/src/lib/mina_numbers/intf.ml @@ -27,6 +27,8 @@ module type S_unchecked = sig val zero : t + val one : t + val succ : t -> t val add : t -> t -> t diff --git a/src/lib/transaction_snark/test/transaction_union/transaction_union.ml b/src/lib/transaction_snark/test/transaction_union/transaction_union.ml index 183daabbcd0..7eea553cca8 100644 --- a/src/lib/transaction_snark/test/transaction_union/transaction_union.ml +++ b/src/lib/transaction_snark/test/transaction_union/transaction_union.ml @@ -957,9 +957,7 @@ let%test_module "Transaction union tests" = let initial_minimum_balance = Balance.of_mina_int_exn 80_000 in let cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 1000 in let cliff_amount = Amount.of_nanomina_int_exn 10_000 in - let vesting_period = - Mina_numbers.Global_slot_span.of_int 10 - in + let vesting_period = Mina_numbers.Global_slot_span.of_int 10 in let vesting_increment = Amount.of_nanomina_int_exn 1 in let txn_global_slot = Mina_numbers.Global_slot_since_genesis.of_int 1002 @@ -1904,9 +1902,7 @@ let%test_module "Transaction union tests" = let initial_minimum_balance = Balance.of_mina_int_exn 80 in let cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 2 in let cliff_amount = Amount.of_mina_int_exn 5 in - let vesting_period = - Mina_numbers.Global_slot_span.of_int 2 - in + let vesting_period = Mina_numbers.Global_slot_span.of_int 2 in let vesting_increment = Amount.of_mina_int_exn 40 in Or_error.ok_exn @@ Account.create_timed account_id balance ~initial_minimum_balance diff --git a/src/lib/transaction_snark/test/zkapp_fuzzy/zkapp_fuzzy.ml b/src/lib/transaction_snark/test/zkapp_fuzzy/zkapp_fuzzy.ml index 0da912bb58d..4a9f7c545c4 100644 --- a/src/lib/transaction_snark/test/zkapp_fuzzy/zkapp_fuzzy.ml +++ b/src/lib/transaction_snark/test/zkapp_fuzzy/zkapp_fuzzy.ml @@ -97,7 +97,7 @@ let generate_zkapp_commands_and_apply_them_consecutively ~trials mk_ledgers_and_fee_payers ~num_of_fee_payers:trials () in let account_state_tbl = Account_id.Table.create () in - let global_slot = Mina_numbers.Global_slot_since_genesis.of_int 1 in + let global_slot = Mina_numbers.Global_slot_since_genesis.one in Test_util.with_randomness 123456789 (fun () -> let test i = Quickcheck.test ~trials:1 diff --git a/src/lib/transaction_snark/transaction_validator.ml b/src/lib/transaction_snark/transaction_validator.ml index 0831208473f..cff89928d32 100644 --- a/src/lib/transaction_snark/transaction_validator.ml +++ b/src/lib/transaction_snark/transaction_validator.ml @@ -60,9 +60,9 @@ let%test_unit "invalid transactions do not dirty the ledger" = (Account.create_timed sender_id (Balance.of_nanomina_int_exn 20) ~initial_minimum_balance:(Balance.of_nanomina_int_exn 20) - ~cliff_time:(Global_slot_since_genesis.of_int 1) + ~cliff_time:Global_slot_since_genesis.one ~cliff_amount:(Amount.of_nanomina_int_exn 10) - ~vesting_period:(Global_slot_span.of_int 1) + ~vesting_period:Global_slot_span.one ~vesting_increment:(Amount.of_nanomina_int_exn 1) ) in let receiver_pk = @@ -82,8 +82,8 @@ let%test_unit "invalid transactions do not dirty the ledger" = let payload = Signed_command_payload.create ~fee:(Fee.of_nanomina_int_exn 1) - ~fee_payer_pk:sender_pk ~nonce:(Account_nonce.of_int 0) - ~valid_until:None ~memo:Signed_command_memo.dummy + ~fee_payer_pk:sender_pk ~nonce:Account_nonce.zero ~valid_until:None + ~memo:Signed_command_memo.dummy ~body:(Signed_command_payload.Body.Payment payment) in Option.value_exn @@ -95,8 +95,7 @@ let%test_unit "invalid transactions do not dirty the ledger" = Ledger.create_new_account_exn ledger receiver_id receiver_account ; ( match apply_user_command ~constraint_constants - ~txn_global_slot:(Global_slot_since_genesis.of_int 1) - ledger invalid_command + ~txn_global_slot:Global_slot_since_genesis.one ledger invalid_command with | Ok _ -> failwith "successfully applied an invalid transaction" @@ -114,4 +113,4 @@ let%test_unit "invalid transactions do not dirty the ledger" = (Ledger.location_of_account ledger sender_id) ~f:(Ledger.get ledger) ) in - assert (Account_nonce.equal account_after_apply.nonce (Account_nonce.of_int 0)) + assert (Account_nonce.equal account_after_apply.nonce Account_nonce.zero) From b1a56549fdefe1ad00dcb080e6295b61b518b4ad Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 3 May 2023 13:01:16 -0700 Subject: [PATCH 13/40] fix extract_blocks build --- src/app/archive/lib/extensional.ml | 2 +- src/app/archive/lib/processor.ml | 2 +- src/app/extract_blocks/extract_blocks.ml | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/app/archive/lib/extensional.ml b/src/app/archive/lib/extensional.ml index 4acf7640590..4edbc34114a 100644 --- a/src/app/archive/lib/extensional.ml +++ b/src/app/archive/lib/extensional.ml @@ -121,7 +121,7 @@ module Block = struct ; ledger_hash : Ledger_hash.Stable.V1.t ; height : Unsigned_extended.UInt32.Stable.V1.t ; global_slot_since_hard_fork : - Mina_numbers.Global_slot_since_genesis.Stable.V1.t + Mina_numbers.Global_slot_since_hard_fork.Stable.V1.t ; global_slot_since_genesis : Mina_numbers.Global_slot_since_genesis.Stable.V1.t ; timestamp : Block_time.Stable.V1.t diff --git a/src/app/archive/lib/processor.ml b/src/app/archive/lib/processor.ml index 1cf47761e71..103b464c44f 100644 --- a/src/app/archive/lib/processor.ml +++ b/src/app/archive/lib/processor.ml @@ -3320,7 +3320,7 @@ module Block = struct ; height = block.height |> Unsigned.UInt32.to_int64 ; global_slot_since_hard_fork = block.global_slot_since_hard_fork - |> Mina_numbers.Global_slot_since_genesis.to_uint32 + |> Mina_numbers.Global_slot_since_hard_fork.to_uint32 |> Unsigned.UInt32.to_int64 ; global_slot_since_genesis = block.global_slot_since_genesis diff --git a/src/app/extract_blocks/extract_blocks.ml b/src/app/extract_blocks/extract_blocks.ml index ec8b4e788d0..89418a7ca9d 100644 --- a/src/app/extract_blocks/extract_blocks.ml +++ b/src/app/extract_blocks/extract_blocks.ml @@ -87,9 +87,11 @@ let fill_in_block pool (block : Archive_lib.Processor.Block.t) : let height = Unsigned.UInt32.of_int64 block.height in let global_slot_since_hard_fork = Unsigned.UInt32.of_int64 block.global_slot_since_hard_fork + |> Mina_numbers.Global_slot_since_hard_fork.of_uint32 in let global_slot_since_genesis = Unsigned.UInt32.of_int64 block.global_slot_since_genesis + |> Mina_numbers.Global_slot_since_genesis.of_uint32 in let timestamp = Block_time.of_string_exn block.timestamp in let chain_status = Chain_status.of_string block.chain_status in From a93beb31b7bbceb6b5f6fd80433ae5652292b73e Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 3 May 2023 15:51:55 -0700 Subject: [PATCH 14/40] fix sexp, json in precomputed block --- .../mina_block/sample_precomputed_block.ml | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/lib/mina_block/sample_precomputed_block.ml b/src/lib/mina_block/sample_precomputed_block.ml index e9edcb048de..e9f64bb33a7 100644 --- a/src/lib/mina_block/sample_precomputed_block.ml +++ b/src/lib/mina_block/sample_precomputed_block.ml @@ -97,8 +97,8 @@ let sample_block_sexp = (last_vrf_output "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") (total_currency 10016120000000000) - (curr_global_slot ((slot_number 6) (slots_per_epoch 576))) - (global_slot_since_genesis 6) + (curr_global_slot ((slot_number (Since_genesis 6)) (slots_per_epoch 576))) + (global_slot_since_genesis (Since_genesis 6)) (staking_epoch_data ((ledger ((hash @@ -140,7 +140,7 @@ let sample_block_sexp = ((fee 0) (fee_payer_pk B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg) - (nonce 0) (valid_until 4294967295) + (nonce 0) (valid_until (Since_genesis 4294967295)) (memo "\000 \014WQ\192&\229C\178\232\171.\176`\153\218\161\209\229\223Gw\143w\135\250\171E\205\241/\227\168"))) (body @@ -162,7 +162,7 @@ let sample_block_sexp = ((fee 0) (fee_payer_pk B62qrA2eWb592uRLtH5ohzQnx7WTLYp2jGirCw5M7Fb9gTf1RrvTPqX) - (nonce 0) (valid_until 4294967295) + (nonce 0) (valid_until (Since_genesis 4294967295)) (memo "\000 \014WQ\192&\229C\178\232\171.\176`\153\218\161\209\229\223Gw\143w\135\250\171E\205\241/\227\168"))) (body @@ -184,7 +184,7 @@ let sample_block_sexp = ((fee 0) (fee_payer_pk B62qpkCEM5N5ddVsYNbFtwWV4bsT9AwuUJXoehFhHUbYYvZ6j3fXt93) - (nonce 0) (valid_until 4294967295) + (nonce 0) (valid_until (Since_genesis 4294967295)) (memo "\000 \014WQ\192&\229C\178\232\171.\176`\153\218\161\209\229\223Gw\143w\135\250\171E\205\241/\227\168"))) (body @@ -206,7 +206,7 @@ let sample_block_sexp = ((fee 0) (fee_payer_pk B62qp5sdhH48MurWgtHNkXUTphEmUfcKVmZFspYAqxcKZ7YxaPF1pyF) - (nonce 0) (valid_until 4294967295) + (nonce 0) (valid_until (Since_genesis 4294967295)) (memo "\000 \014WQ\192&\229C\178\232\171.\176`\153\218\161\209\229\223Gw\143w\135\250\171E\205\241/\227\168"))) (body @@ -228,7 +228,7 @@ let sample_block_sexp = ((fee 0) (fee_payer_pk B62qqR5XfP9CoC5DALUJX2jBoY6aaoLrN46YpM2NQTSV14qgpoWibL7) - (nonce 0) (valid_until 4294967295) + (nonce 0) (valid_until (Since_genesis 4294967295)) (memo "\000 \014WQ\192&\229C\178\232\171.\176`\153\218\161\209\229\223Gw\143w\135\250\171E\205\241/\227\168"))) (body @@ -250,7 +250,7 @@ let sample_block_sexp = ((fee 0) (fee_payer_pk B62qr4GMdg4ZVk1Y6BXaDHxgFRtCsZm2sZiyn7PCmubTZnAi3iZDDxq) - (nonce 0) (valid_until 4294967295) + (nonce 0) (valid_until (Since_genesis 4294967295)) (memo "\000 \014WQ\192&\229C\178\232\171.\176`\153\218\161\209\229\223Gw\143w\135\250\171E\205\241/\227\168"))) (body @@ -272,7 +272,7 @@ let sample_block_sexp = ((fee 0) (fee_payer_pk B62qpgjtMzVpodthL3kMfXAAzzv1kgGZRMEeLv592u4hSVQKCzTGLvA) - (nonce 0) (valid_until 4294967295) + (nonce 0) (valid_until (Since_genesis 4294967295)) (memo "\000 \014WQ\192&\229C\178\232\171.\176`\153\218\161\209\229\223Gw\143w\135\250\171E\205\241/\227\168"))) (body @@ -640,10 +640,10 @@ let sample_block_json = "last_vrf_output": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", "total_currency": "10016120000000000", "curr_global_slot": { - "slot_number": "6", + "slot_number": ["Since_genesis","6"], "slots_per_epoch": "576" }, - "global_slot_since_genesis": "6", + "global_slot_since_genesis": ["Since_genesis","6"], "staking_epoch_data": { "ledger": { "hash": "jxWeLYSia8TdyUCVupiciBjxqqR1wXFRhTBvbZGwybDYLohXopX", @@ -694,7 +694,7 @@ let sample_block_json = "fee": "0", "fee_payer_pk": "B62qiy32p8kAKnny8ZFwoMhYpBppM1DWVCqAPBYNcXnsAHhnfAAuXgg", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ @@ -723,7 +723,7 @@ let sample_block_json = "fee": "0", "fee_payer_pk": "B62qrA2eWb592uRLtH5ohzQnx7WTLYp2jGirCw5M7Fb9gTf1RrvTPqX", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ @@ -752,7 +752,7 @@ let sample_block_json = "fee": "0", "fee_payer_pk": "B62qpkCEM5N5ddVsYNbFtwWV4bsT9AwuUJXoehFhHUbYYvZ6j3fXt93", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ @@ -781,7 +781,7 @@ let sample_block_json = "fee": "0", "fee_payer_pk": "B62qp5sdhH48MurWgtHNkXUTphEmUfcKVmZFspYAqxcKZ7YxaPF1pyF", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ @@ -810,7 +810,7 @@ let sample_block_json = "fee": "0", "fee_payer_pk": "B62qqR5XfP9CoC5DALUJX2jBoY6aaoLrN46YpM2NQTSV14qgpoWibL7", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ @@ -839,7 +839,7 @@ let sample_block_json = "fee": "0", "fee_payer_pk": "B62qr4GMdg4ZVk1Y6BXaDHxgFRtCsZm2sZiyn7PCmubTZnAi3iZDDxq", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ @@ -868,7 +868,7 @@ let sample_block_json = "fee": "0", "fee_payer_pk": "B62qpgjtMzVpodthL3kMfXAAzzv1kgGZRMEeLv592u4hSVQKCzTGLvA", "nonce": "0", - "valid_until": "4294967295", + "valid_until": ["Since_genesis","4294967295"], "memo": "E4QqiVG8rCzSPqdgMPUP59hA8yMWV6m8YSYGSYBAofr6mLp16UFnM" }, "body": [ From 29f5c0d88b51be96ecc9b217a00a95e537aeee9c Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 3 May 2023 16:48:50 -0700 Subject: [PATCH 15/40] add global slot legacy type; fix txn hash tests --- src/lib/mina_base/signed_command.ml | 6 +++++- src/lib/mina_base/signed_command_payload.ml | 3 ++- src/lib/mina_base/signed_command_payload.mli | 2 +- src/lib/mina_numbers/global_slot_legacy.ml | 18 ++++++++++++++++ src/lib/mina_numbers/global_slot_legacy.mli | 3 +++ src/lib/mina_numbers/mina_numbers.ml | 1 + src/lib/mina_wire_types/mina_numbers.ml | 21 +++++++++++++++++++ .../mina_wire_types/test/type_equalities.ml | 1 + src/lib/transaction/transaction_hash.ml | 6 +++--- 9 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 src/lib/mina_numbers/global_slot_legacy.ml create mode 100644 src/lib/mina_numbers/global_slot_legacy.mli diff --git a/src/lib/mina_base/signed_command.ml b/src/lib/mina_base/signed_command.ml index 30c5473b593..c0c9bc7490a 100644 --- a/src/lib/mina_base/signed_command.ml +++ b/src/lib/mina_base/signed_command.ml @@ -88,11 +88,15 @@ module Make_str (_ : Wire_types.Concrete) = struct let to_latest ({ payload; signer; signature } : t) : Latest.t = let payload : Signed_command_payload.t = + let valid_until = + Global_slot_legacy.to_uint32 payload.common.valid_until + |> Global_slot_since_genesis.of_uint32 + in let common : Signed_command_payload.Common.t = { fee = payload.common.fee ; fee_payer_pk = payload.common.fee_payer_pk ; nonce = payload.common.nonce - ; valid_until = payload.common.valid_until + ; valid_until ; memo = payload.common.memo } in diff --git a/src/lib/mina_base/signed_command_payload.ml b/src/lib/mina_base/signed_command_payload.ml index c23306c4fd7..e670a386e90 100644 --- a/src/lib/mina_base/signed_command_payload.ml +++ b/src/lib/mina_base/signed_command_payload.ml @@ -8,6 +8,7 @@ open Signature_lib module Memo = Signed_command_memo module Account_nonce = Mina_numbers.Account_nonce module Global_slot_since_genesis = Mina_numbers.Global_slot_since_genesis +module Global_slot_legacy = Mina_numbers.Global_slot_legacy (* This represents the random oracle input corresponding to the old form of the token ID, which was a 64-bit integer. The default token id was the number 1. @@ -92,7 +93,7 @@ module Common = struct , Public_key.Compressed.Stable.V1.t , Token_id.Stable.V1.t , Account_nonce.Stable.V1.t - , Global_slot_since_genesis.Stable.V1.t + , Global_slot_legacy.Stable.V1.t , Memo.Stable.V1.t ) Poly.Stable.V1.t [@@deriving compare, equal, sexp, hash, yojson] diff --git a/src/lib/mina_base/signed_command_payload.mli b/src/lib/mina_base/signed_command_payload.mli index b4c8ff43acc..cb5d438cb9f 100644 --- a/src/lib/mina_base/signed_command_payload.mli +++ b/src/lib/mina_base/signed_command_payload.mli @@ -107,7 +107,7 @@ module Common : sig , Public_key.Compressed.Stable.V1.t , Token_id.Stable.V1.t , Mina_numbers.Account_nonce.Stable.V1.t - , Mina_numbers.Global_slot_since_genesis.Stable.V1.t + , Mina_numbers.Global_slot_legacy.Stable.V1.t , Signed_command_memo.Stable.V1.t ) Poly.Stable.V1.t [@@deriving compare, equal, sexp, hash, yojson] diff --git a/src/lib/mina_numbers/global_slot_legacy.ml b/src/lib/mina_numbers/global_slot_legacy.ml new file mode 100644 index 00000000000..af39c078f86 --- /dev/null +++ b/src/lib/mina_numbers/global_slot_legacy.ml @@ -0,0 +1,18 @@ +(** Legacy global slot implementation *) + +(* Used *only* for V1 payments, delegation valid_until field *) + +(** See documentation of the {!Mina_wire_types} library *) +module Wire_types = Mina_wire_types.Mina_numbers.Global_slot_legacy + +module Make_sig (A : Wire_types.Types.S) = struct + module type S = Nat.Intf.UInt32_A with type Stable.V1.t = A.V1.t +end + +module T = Nat.Make32 () + +module Make_str (_ : Wire_types.Concrete) = struct + include T +end + +include Wire_types.Make (Make_sig) (Make_str) diff --git a/src/lib/mina_numbers/global_slot_legacy.mli b/src/lib/mina_numbers/global_slot_legacy.mli new file mode 100644 index 00000000000..5c9dd3e593f --- /dev/null +++ b/src/lib/mina_numbers/global_slot_legacy.mli @@ -0,0 +1,3 @@ +include + Nat.Intf.UInt32_A + with type Stable.V1.t = Mina_wire_types.Mina_numbers.Global_slot_legacy.V1.t diff --git a/src/lib/mina_numbers/mina_numbers.ml b/src/lib/mina_numbers/mina_numbers.ml index 2e696ee5976..d02c354b6ce 100644 --- a/src/lib/mina_numbers/mina_numbers.ml +++ b/src/lib/mina_numbers/mina_numbers.ml @@ -2,6 +2,7 @@ module Account_nonce = Account_nonce module Length = Length module Index = Index module Nat = Nat +module Global_slot_legacy = Global_slot_legacy module Global_slot_since_genesis = Global_slot_since_genesis module Global_slot_since_hard_fork = Global_slot_since_hard_fork module Global_slot_span = Global_slot_span diff --git a/src/lib/mina_wire_types/mina_numbers.ml b/src/lib/mina_wire_types/mina_numbers.ml index 90eca002fe3..aba452de2d3 100644 --- a/src/lib/mina_wire_types/mina_numbers.ml +++ b/src/lib/mina_wire_types/mina_numbers.ml @@ -21,6 +21,27 @@ module Account_nonce = struct include M end +module Global_slot_legacy = struct + module Types = struct + module type S = V1S0 + end + + module type Concrete = Types.S with type V1.t = Unsigned.UInt32.t + + module M = struct + module V1 = struct + type t = Unsigned.UInt32.t + end + end + + module type Local_sig = Signature(Types).S + + module Make + (Signature : Local_sig) (F : functor (A : Concrete) -> Signature(A).S) = + F (M) + include M +end + module Global_slot_since_genesis = struct module Types = struct module type S = V1S0 diff --git a/src/lib/mina_wire_types/test/type_equalities.ml b/src/lib/mina_wire_types/test/type_equalities.ml index 1d0242261b7..652a786d04e 100644 --- a/src/lib/mina_wire_types/test/type_equalities.ml +++ b/src/lib/mina_wire_types/test/type_equalities.ml @@ -119,6 +119,7 @@ module Mina_numbers = struct module O = Mina_numbers module W = WT.Mina_numbers include Assert_equal0V1 (O.Account_nonce.Stable) (W.Account_nonce) + include Assert_equal0V1 (O.Global_slot_legacy.Stable) (W.Global_slot_legacy) include Assert_equal0V1 (O.Global_slot_since_genesis.Stable) diff --git a/src/lib/transaction/transaction_hash.ml b/src/lib/transaction/transaction_hash.ml index 89a519c2cdb..70fb87055f4 100644 --- a/src/lib/transaction/transaction_hash.ml +++ b/src/lib/transaction/transaction_hash.ml @@ -236,16 +236,16 @@ let%test_module "Transaction hashes" = in (* the V1 signed command is converted to a V2 signed command, then hashed *) let expected_hash = - "5JvD87Ag3GuTCJhDsWUXDbJ7vTWWVuCnAhNjnnZ78h1mjxrhdS61" + "5JuHPnnSmETfMxfC7goshhwdPuUAkTzmxg2uZzLjb3iTWBBn2Wy6" in run_test ~transaction_id ~expected_hash let%test "signed command v2 hash from transaction id" = let transaction_id = - "Av0BlDV3VklWpVXVRQr7cidImXn8E9nqCAxPjuyUNZ2pu3pJJxkBAP//IgAgpNU5narWobUpPXWnrzjilYnd9C6DVcafO/ZLc3vdrMgAVklWpVXVRQr7cidImXn8E9nqCAxPjuyUNZ2pu3pJJxkBFeE3d36c7ThjtioG6XUJjkISr2jfgpa99wHwhZ6neSQB/rQkVklWpVXVRQr7cidImXn8E9nqCAxPjuyUNZ2pu3pJJxkBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" + "Av1AQg8AlEnpua7SqyAM80vJIW10/Kqnp2FHOMTCii86qa8rSjkAAAD//yIAIPVBcM7g/nXBMy303a594bnQ7OwX4fuaocUqCTbkFglTAJRJ6bmu0qsgDPNLySFtdPyqp6dhRzjEwoovOqmvK0o5AJHytSF/cBVhs1+FGudG82jtzzfsfYhiXF4bDJUQz28kAf4bDZRJ6bmu0qsgDPNLySFtdPyqp6dhRzjEwoovOqmvK0o5AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" in let expected_hash = - "5JuhZ8sR6gQZQCUMpZJpacn9XrXTksSj6zRWHQQXZtZzjiQZ5dNb" + "5JuEJtMCq4yK3LnK2uv6FPVdjhYP7r4AKzr73VwQGnyRkRhL9pQL" in run_test ~transaction_id ~expected_hash From 91165b2439de7f4496c914fb669c9ec78a683b97 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 3 May 2023 16:49:13 -0700 Subject: [PATCH 16/40] temp debug logging --- src/lib/logger/impl.ml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lib/logger/impl.ml b/src/lib/logger/impl.ml index 799826a1756..35e517eabc8 100644 --- a/src/lib/logger/impl.ml +++ b/src/lib/logger/impl.ml @@ -284,6 +284,8 @@ module Consumer_registry = struct |> Option.value ~default:"failed to process max log line error message" |> Transport.transport transport ; + Transport.transport transport + (sprintf "LONG MSG: %s" (String.sub str ~pos:0 ~len:10_000)) ; broadcast_log_message ~id:"oversized_logs" msg | None -> () ) From 5cf27b37c7992c1db2fc184c4899e25ff4f77e2a Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 3 May 2023 17:17:47 -0700 Subject: [PATCH 17/40] revert debug code --- src/lib/logger/impl.ml | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lib/logger/impl.ml b/src/lib/logger/impl.ml index 35e517eabc8..799826a1756 100644 --- a/src/lib/logger/impl.ml +++ b/src/lib/logger/impl.ml @@ -284,8 +284,6 @@ module Consumer_registry = struct |> Option.value ~default:"failed to process max log line error message" |> Transport.transport transport ; - Transport.transport transport - (sprintf "LONG MSG: %s" (String.sub str ~pos:0 ~len:10_000)) ; broadcast_log_message ~id:"oversized_logs" msg | None -> () ) From 2eea26ba1dec8cb7f3c48b29c0c7edf99a5b15aa Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 3 May 2023 17:18:24 -0700 Subject: [PATCH 18/40] add constructors to cliff time, vesting period --- genesis_ledgers/berkeley.json | 802 +++++++++++++++++----------------- 1 file changed, 401 insertions(+), 401 deletions(-) diff --git a/genesis_ledgers/berkeley.json b/genesis_ledgers/berkeley.json index 357c596a981..49ddda90214 100644 --- a/genesis_ledgers/berkeley.json +++ b/genesis_ledgers/berkeley.json @@ -18,9 +18,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -31,9 +31,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -44,9 +44,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -57,9 +57,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -70,9 +70,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -83,9 +83,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -96,9 +96,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -109,9 +109,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -122,9 +122,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -135,9 +135,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -148,9 +148,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -161,9 +161,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -174,9 +174,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -187,9 +187,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -200,9 +200,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -213,9 +213,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -226,9 +226,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -239,9 +239,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -252,9 +252,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -265,9 +265,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -278,9 +278,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -291,9 +291,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -304,9 +304,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -317,9 +317,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -330,9 +330,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -343,9 +343,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -356,9 +356,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -369,9 +369,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -382,9 +382,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -395,9 +395,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -408,9 +408,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -421,9 +421,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -434,9 +434,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -447,9 +447,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -460,9 +460,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -473,9 +473,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -486,9 +486,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -499,9 +499,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -512,9 +512,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -525,9 +525,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -538,9 +538,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -551,9 +551,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -564,9 +564,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -577,9 +577,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -590,9 +590,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -603,9 +603,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -616,9 +616,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -629,9 +629,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -642,9 +642,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -655,9 +655,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -668,9 +668,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -681,9 +681,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -694,9 +694,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -707,9 +707,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -720,9 +720,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -733,9 +733,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -746,9 +746,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -759,9 +759,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -772,9 +772,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -785,9 +785,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -798,9 +798,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -811,9 +811,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -824,9 +824,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -837,9 +837,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -850,9 +850,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -863,9 +863,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -876,9 +876,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -889,9 +889,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -902,9 +902,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -915,9 +915,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -928,9 +928,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -941,9 +941,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -954,9 +954,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -967,9 +967,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -980,9 +980,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -993,9 +993,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1006,9 +1006,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1019,9 +1019,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1032,9 +1032,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1045,9 +1045,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1058,9 +1058,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1071,9 +1071,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1084,9 +1084,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1097,9 +1097,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1110,9 +1110,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1123,9 +1123,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1136,9 +1136,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1149,9 +1149,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1162,9 +1162,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1175,9 +1175,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1188,9 +1188,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1201,9 +1201,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1214,9 +1214,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1227,9 +1227,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1240,9 +1240,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1253,9 +1253,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1266,9 +1266,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1279,9 +1279,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1292,9 +1292,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1305,9 +1305,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1318,9 +1318,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1331,9 +1331,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1344,9 +1344,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1357,9 +1357,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1370,9 +1370,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1383,9 +1383,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1396,9 +1396,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1409,9 +1409,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1422,9 +1422,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1435,9 +1435,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1448,9 +1448,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1461,9 +1461,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1474,9 +1474,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1487,9 +1487,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1500,9 +1500,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1513,9 +1513,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1526,9 +1526,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1539,9 +1539,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1552,9 +1552,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1565,9 +1565,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1578,9 +1578,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1591,9 +1591,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1604,9 +1604,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1617,9 +1617,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1630,9 +1630,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1643,9 +1643,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1656,9 +1656,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1669,9 +1669,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1682,9 +1682,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1695,9 +1695,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1708,9 +1708,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1721,9 +1721,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1734,9 +1734,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1747,9 +1747,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1760,9 +1760,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1773,9 +1773,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1786,9 +1786,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1799,9 +1799,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1812,9 +1812,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1825,9 +1825,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1838,9 +1838,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1851,9 +1851,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1864,9 +1864,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1877,9 +1877,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1890,9 +1890,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1903,9 +1903,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1916,9 +1916,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1929,9 +1929,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1942,9 +1942,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1955,9 +1955,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1968,9 +1968,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1981,9 +1981,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -1994,9 +1994,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2007,9 +2007,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2020,9 +2020,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2033,9 +2033,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2046,9 +2046,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2059,9 +2059,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2072,9 +2072,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2085,9 +2085,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2098,9 +2098,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2111,9 +2111,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2124,9 +2124,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2137,9 +2137,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2150,9 +2150,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2163,9 +2163,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2176,9 +2176,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2189,9 +2189,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2202,9 +2202,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2215,9 +2215,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2228,9 +2228,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2241,9 +2241,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2254,9 +2254,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2267,9 +2267,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2280,9 +2280,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2293,9 +2293,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2306,9 +2306,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2319,9 +2319,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2332,9 +2332,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2345,9 +2345,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2358,9 +2358,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2371,9 +2371,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2384,9 +2384,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2397,9 +2397,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2410,9 +2410,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2423,9 +2423,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2436,9 +2436,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2449,9 +2449,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2462,9 +2462,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2475,9 +2475,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2488,9 +2488,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2501,9 +2501,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2514,9 +2514,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2527,9 +2527,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2540,9 +2540,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2553,9 +2553,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2566,9 +2566,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2579,9 +2579,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2592,9 +2592,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -2605,9 +2605,9 @@ "sk": null, "timing": { "initial_minimum_balance": "1000000", - "cliff_time": "12000", + "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": "6", + "vesting_period": ["Span","6"], "vesting_increment": "150" } }, @@ -45429,4 +45429,4 @@ } ] } -} \ No newline at end of file +} From 59b1fefe3d0452302fe99c77a0fd65b53efe66c4 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Thu, 4 May 2023 13:19:28 -0700 Subject: [PATCH 19/40] rm commented code --- src/app/cli/src/init/graphql_internal.ml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/app/cli/src/init/graphql_internal.ml b/src/app/cli/src/init/graphql_internal.ml index 2507397fb9c..70da1293b59 100644 --- a/src/app/cli/src/init/graphql_internal.ml +++ b/src/app/cli/src/init/graphql_internal.ml @@ -9,7 +9,7 @@ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or * sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * @@ -244,10 +244,6 @@ struct respond_string ~status:`Precondition_failed ~body:"Invalid sequence number" () in - (* let missing_sequence_info () = - respond_string ~status:`Precondition_failed - ~body:"Missing sequence information" () - in *) match auth_keys with | None -> respond false From e480a6ce0e056c0ff2a00d885c986f0415fbe028 Mon Sep 17 00:00:00 2001 From: Gregor Date: Fri, 5 May 2023 17:37:03 +0200 Subject: [PATCH 20/40] bump snarkyjs --- src/lib/snarkyjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/snarkyjs b/src/lib/snarkyjs index 752c19df1ce..ac73fcb9fc4 160000 --- a/src/lib/snarkyjs +++ b/src/lib/snarkyjs @@ -1 +1 @@ -Subproject commit 752c19df1cefea83296ff09d9d7bf319a2dee689 +Subproject commit ac73fcb9fc4f3c9a8a6e8a5206285d82444e40cb From 04879597da5846c35dce6bded7ef8eaab4afbd30 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Fri, 5 May 2023 11:31:43 -0700 Subject: [PATCH 21/40] Update versioned types --- src/lib/consensus/consensus_intf.ml | 4 ++-- src/lib/consensus/intf.ml | 4 ++-- src/lib/consensus/proof_of_stake.ml | 8 ++++---- src/lib/consensus/proof_of_stake.mli | 4 ++-- src/lib/consensus/proof_of_stake_intf.ml | 2 +- .../filtered_external_transition.ml | 2 +- src/lib/mina_base/account.ml | 2 +- src/lib/mina_base/account_timing.ml | 6 +++--- src/lib/mina_networking/mina_networking.ml | 2 +- src/lib/mina_state/protocol_state.ml | 2 +- src/lib/mina_state/protocol_state_intf.ml | 2 +- .../mina_wire_types/consensus/consensus_proof_of_stake.ml | 6 +++--- .../consensus/consensus_proof_of_stake.mli | 4 ++-- .../mina_state/mina_state_protocol_state.ml | 6 +++--- .../mina_state/mina_state_protocol_state.mli | 4 ++-- src/lib/mina_wire_types/test/type_equalities.ml | 2 +- src/lib/vrf_evaluator/vrf_evaluator.ml | 8 ++++---- 17 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/lib/consensus/consensus_intf.ml b/src/lib/consensus/consensus_intf.ml index ae69df61127..20a9be9e7dc 100644 --- a/src/lib/consensus/consensus_intf.ml +++ b/src/lib/consensus/consensus_intf.ml @@ -9,8 +9,8 @@ module type Full = sig module type of Proof_of_stake with module Exported := Proof_of_stake.Exported and type Data.Block_data.t = Proof_of_stake.Data.Block_data.t - and type Data.Consensus_state.Value.Stable.V1.t = - Proof_of_stake.Data.Consensus_state.Value.Stable.V1.t + and type Data.Consensus_state.Value.Stable.V2.t = + Proof_of_stake.Data.Consensus_state.Value.Stable.V2.t [%%else] diff --git a/src/lib/consensus/intf.ml b/src/lib/consensus/intf.ml index 6b0bdc03abd..8f857e1c190 100644 --- a/src/lib/consensus/intf.ml +++ b/src/lib/consensus/intf.ml @@ -477,7 +477,7 @@ module type S = sig module Value : sig [%%versioned: module Stable : sig - module V1 : sig + module V2 : sig type t [@@deriving hash, equal, compare, sexp, yojson] end end] @@ -628,7 +628,7 @@ module type S = sig module Slot_won : sig [%%versioned: module Stable : sig - module V1 : sig + module V2 : sig type t = { delegator : Signature_lib.Public_key.Compressed.Stable.V1.t diff --git a/src/lib/consensus/proof_of_stake.ml b/src/lib/consensus/proof_of_stake.ml index 8d354e8a2ca..81623f86bf6 100644 --- a/src/lib/consensus/proof_of_stake.ml +++ b/src/lib/consensus/proof_of_stake.ml @@ -15,8 +15,8 @@ module Wire_types = Mina_wire_types.Consensus_proof_of_stake module Make_sig (A : Wire_types.Types.S) = struct module type S = Proof_of_stake_intf.Full - with type Data.Consensus_state.Value.Stable.V1.t = - A.Data.Consensus_state.Value.V1.t + with type Data.Consensus_state.Value.Stable.V2.t = + A.Data.Consensus_state.Value.V2.t end module Make_str (A : Wire_types.Concrete) = struct @@ -233,7 +233,7 @@ module Make_str (A : Wire_types.Concrete) = struct module Stable = struct [@@@no_toplevel_latest_type] - module V1 = struct + module V2 = struct type t = { delegator : Public_key.Compressed.Stable.V1.t @@ -1788,7 +1788,7 @@ module Make_str (A : Wire_types.Concrete) = struct module Value = struct [%%versioned module Stable = struct - module V1 = struct + module V2 = struct type t = ( Length.Stable.V1.t , Vrf.Output.Truncated.Stable.V1.t diff --git a/src/lib/consensus/proof_of_stake.mli b/src/lib/consensus/proof_of_stake.mli index 543acb14c54..a6a163ef337 100644 --- a/src/lib/consensus/proof_of_stake.mli +++ b/src/lib/consensus/proof_of_stake.mli @@ -1,4 +1,4 @@ include Proof_of_stake_intf.Full - with type Data.Consensus_state.Value.Stable.V1.t = - Mina_wire_types.Consensus_proof_of_stake.Data.Consensus_state.Value.V1.t + with type Data.Consensus_state.Value.Stable.V2.t = + Mina_wire_types.Consensus_proof_of_stake.Data.Consensus_state.Value.V2.t diff --git a/src/lib/consensus/proof_of_stake_intf.ml b/src/lib/consensus/proof_of_stake_intf.ml index 438533321cd..d1250fb776e 100644 --- a/src/lib/consensus/proof_of_stake_intf.ml +++ b/src/lib/consensus/proof_of_stake_intf.ml @@ -16,7 +16,7 @@ module type Full = sig module Consensus_state : sig include module type of Data.Consensus_state - with type Value.Stable.V1.t = Data.Consensus_state.Value.Stable.V1.t + with type Value.Stable.V2.t = Data.Consensus_state.Value.Stable.V2.t and type var = Data.Consensus_state.var val global_slot : Value.t -> Global_slot.t diff --git a/src/lib/filtered_external_transition/filtered_external_transition.ml b/src/lib/filtered_external_transition/filtered_external_transition.ml index 5de53e97e8e..f530cead99b 100644 --- a/src/lib/filtered_external_transition/filtered_external_transition.ml +++ b/src/lib/filtered_external_transition/filtered_external_transition.ml @@ -45,7 +45,7 @@ module Protocol_state = struct type t = { previous_state_hash : State_hash.Stable.V1.t ; blockchain_state : Mina_state.Blockchain_state.Value.Stable.V2.t - ; consensus_state : Consensus.Data.Consensus_state.Value.Stable.V1.t + ; consensus_state : Consensus.Data.Consensus_state.Value.Stable.V2.t } let to_latest = Fn.id diff --git a/src/lib/mina_base/account.ml b/src/lib/mina_base/account.ml index b40af326db8..8a2f50272d8 100644 --- a/src/lib/mina_base/account.ml +++ b/src/lib/mina_base/account.ml @@ -290,7 +290,7 @@ module Binable_arg = struct , Receipt.Chain_hash.Stable.V1.t , Public_key.Compressed.Stable.V1.t option , State_hash.Stable.V1.t - , Timing.Stable.V1.t + , Timing.Stable.V2.t , Permissions.Stable.V2.t , Zkapp_account.Stable.V2.t option ) (* TODO: Cache the digest of this? *) diff --git a/src/lib/mina_base/account_timing.ml b/src/lib/mina_base/account_timing.ml index 974330f1f3b..0f524ed6a00 100644 --- a/src/lib/mina_base/account_timing.ml +++ b/src/lib/mina_base/account_timing.ml @@ -18,7 +18,7 @@ open Mina_numbers module Poly = struct [%%versioned module Stable = struct - module V1 = struct + module V2 = struct type ('slot, 'slot_span, 'balance, 'amount) t = | Untimed | Timed of @@ -35,13 +35,13 @@ end [%%versioned module Stable = struct - module V1 = struct + module V2 = struct type t = ( Global_slot_since_genesis.Stable.V1.t , Global_slot_span.Stable.V1.t , Balance.Stable.V1.t , Amount.Stable.V1.t ) - Poly.Stable.V1.t + Poly.Stable.V2.t [@@deriving sexp, equal, hash, compare, yojson] let to_latest = Fn.id diff --git a/src/lib/mina_networking/mina_networking.ml b/src/lib/mina_networking/mina_networking.ml index 3ed145531fb..5e3d0467074 100644 --- a/src/lib/mina_networking/mina_networking.ml +++ b/src/lib/mina_networking/mina_networking.ml @@ -494,7 +494,7 @@ module Rpcs = struct module V2 = struct module T = struct type query = - ( Consensus.Data.Consensus_state.Value.Stable.V1.t + ( Consensus.Data.Consensus_state.Value.Stable.V2.t , State_hash.Stable.V1.t ) With_hash.Stable.V1.t [@@deriving sexp] diff --git a/src/lib/mina_state/protocol_state.ml b/src/lib/mina_state/protocol_state.ml index d9b9566f25e..75e0f185ad5 100644 --- a/src/lib/mina_state/protocol_state.ml +++ b/src/lib/mina_state/protocol_state.ml @@ -82,7 +82,7 @@ module Make_str (A : Wire_types.Concrete) = struct type t = ( State_hash.Stable.V1.t , Blockchain_state.Value.Stable.V2.t - , Consensus.Data.Consensus_state.Value.Stable.V1.t + , Consensus.Data.Consensus_state.Value.Stable.V2.t , Protocol_constants_checked.Value.Stable.V1.t ) Poly.Stable.V1.t [@@deriving equal, ord, bin_io, hash, sexp, yojson, version] diff --git a/src/lib/mina_state/protocol_state_intf.ml b/src/lib/mina_state/protocol_state_intf.ml index 601762fda74..100b68289ca 100644 --- a/src/lib/mina_state/protocol_state_intf.ml +++ b/src/lib/mina_state/protocol_state_intf.ml @@ -36,7 +36,7 @@ module type Full = sig type t = ( State_hash.Stable.V1.t , Blockchain_state.Value.Stable.V2.t - , Consensus.Data.Consensus_state.Value.Stable.V1.t + , Consensus.Data.Consensus_state.Value.Stable.V2.t , Protocol_constants_checked.Value.Stable.V1.t ) Poly.Stable.V1.t [@@deriving equal, ord, bin_io, hash, sexp, yojson, version] diff --git a/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.ml b/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.ml index b5a8cae6fd4..c1d0d1b8ee9 100644 --- a/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.ml +++ b/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.ml @@ -10,7 +10,7 @@ module Types = struct module Data : sig module Consensus_state : sig - module Value : V1S0 + module Value : V2S0 end end end @@ -91,7 +91,7 @@ module type Concrete = sig end module Value : sig - module V1 : sig + module V2 : sig type t = ( Mina_numbers.Length.V1.t , Consensus_vrf.Output.Truncated.V1.t @@ -184,7 +184,7 @@ module M = struct end module Value = struct - module V1 = struct + module V2 = struct type t = ( Mina_numbers.Length.V1.t , Consensus_vrf.Output.Truncated.V1.t diff --git a/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.mli b/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.mli index 10c487d6190..3d330226171 100644 --- a/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.mli +++ b/src/lib/mina_wire_types/consensus/consensus_proof_of_stake.mli @@ -10,7 +10,7 @@ module Types : sig module Data : sig module Consensus_state : sig - module Value : V1S0 + module Value : V2S0 end end end @@ -91,7 +91,7 @@ module type Concrete = sig end module Value : sig - module V1 : sig + module V2 : sig type t = ( Mina_numbers.Length.V1.t , Consensus_vrf.Output.Truncated.V1.t diff --git a/src/lib/mina_wire_types/mina_state/mina_state_protocol_state.ml b/src/lib/mina_wire_types/mina_state/mina_state_protocol_state.ml index 6cc872654ad..1d34f603c5e 100644 --- a/src/lib/mina_wire_types/mina_state/mina_state_protocol_state.ml +++ b/src/lib/mina_wire_types/mina_state/mina_state_protocol_state.ml @@ -14,7 +14,7 @@ module Types = struct type t = ( Mina_base_state_hash.V1.t , Mina_state_blockchain_state.Value.V2.t - , Consensus.Data.Consensus_state.Value.V1.t + , Consensus.Data.Consensus_state.Value.V2.t , Mina_base_protocol_constants_checked.Value.V1.t ) Poly.V1.t end @@ -54,7 +54,7 @@ module type Concrete = sig type t = ( Mina_base_state_hash.V1.t , Mina_state_blockchain_state.Value.V2.t - , Consensus.Data.Consensus_state.Value.V1.t + , Consensus.Data.Consensus_state.Value.V2.t , Mina_base_protocol_constants_checked.Value.V1.t ) Poly.V1.t end @@ -93,7 +93,7 @@ module M = struct type t = ( Mina_base_state_hash.V1.t , Mina_state_blockchain_state.Value.V2.t - , Consensus.Data.Consensus_state.Value.V1.t + , Consensus.Data.Consensus_state.Value.V2.t , Mina_base_protocol_constants_checked.Value.V1.t ) Poly.V1.t end diff --git a/src/lib/mina_wire_types/mina_state/mina_state_protocol_state.mli b/src/lib/mina_wire_types/mina_state/mina_state_protocol_state.mli index 15c32e09806..605e5f18945 100644 --- a/src/lib/mina_wire_types/mina_state/mina_state_protocol_state.mli +++ b/src/lib/mina_wire_types/mina_state/mina_state_protocol_state.mli @@ -14,7 +14,7 @@ module Types : sig type t = ( Mina_base_state_hash.V1.t , Mina_state_blockchain_state.Value.V2.t - , Consensus.Data.Consensus_state.Value.V1.t + , Consensus.Data.Consensus_state.Value.V2.t , Mina_base_protocol_constants_checked.Value.V1.t ) Poly.V1.t end @@ -54,7 +54,7 @@ module type Concrete = sig type t = ( Mina_base_state_hash.V1.t , Mina_state_blockchain_state.Value.V2.t - , Consensus.Data.Consensus_state.Value.V1.t + , Consensus.Data.Consensus_state.Value.V2.t , Mina_base_protocol_constants_checked.Value.V1.t ) Poly.V1.t end diff --git a/src/lib/mina_wire_types/test/type_equalities.ml b/src/lib/mina_wire_types/test/type_equalities.ml index 652a786d04e..6a852faf3e4 100644 --- a/src/lib/mina_wire_types/test/type_equalities.ml +++ b/src/lib/mina_wire_types/test/type_equalities.ml @@ -411,7 +411,7 @@ module Consensus = struct module W = WT.Consensus include Assert_equal0V1 (O.Body_reference.Stable) (W.Body_reference) include - Assert_equal0V1 + Assert_equal0V2 (O.Data.Consensus_state.Value.Stable) (W.Data.Consensus_state.Value) end diff --git a/src/lib/vrf_evaluator/vrf_evaluator.ml b/src/lib/vrf_evaluator/vrf_evaluator.ml index 16ec19063dc..9a4e269daaa 100644 --- a/src/lib/vrf_evaluator/vrf_evaluator.ml +++ b/src/lib/vrf_evaluator/vrf_evaluator.ml @@ -39,7 +39,7 @@ module Evaluator_status = struct module Stable = struct [@@@no_toplevel_latest_type] - module V1 = struct + module V2 = struct type t = At of Global_slot_since_genesis.Stable.V1.t | Completed let to_latest = Fn.id @@ -55,10 +55,10 @@ module Vrf_evaluation_result = struct module Stable = struct [@@@no_toplevel_latest_type] - module V1 = struct + module V2 = struct type t = - { slots_won : Consensus.Data.Slot_won.Stable.V1.t list - ; evaluator_status : Evaluator_status.Stable.V1.t + { slots_won : Consensus.Data.Slot_won.Stable.V2.t list + ; evaluator_status : Evaluator_status.Stable.V2.t } let to_latest = Fn.id From a7d98c9882a75d5627032f3cc15835a677f792ab Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Sat, 6 May 2023 19:38:34 -0700 Subject: [PATCH 22/40] Change Span constructor to Global_slot_span Remove @@@with_all_version_tags, which is meant for backwards compatibility Don't need that on new slot typtes --- genesis_ledgers/berkeley.json | 400 +++++++++--------- src/lib/mina_numbers/global_slot_intf.ml | 2 - .../mina_numbers/global_slot_since_genesis.ml | 2 - .../global_slot_since_hard_fork.ml | 2 - src/lib/mina_numbers/global_slot_span.ml | 8 +- src/lib/mina_wire_types/mina_numbers.ml | 6 +- 6 files changed, 206 insertions(+), 214 deletions(-) diff --git a/genesis_ledgers/berkeley.json b/genesis_ledgers/berkeley.json index 49ddda90214..28e78c3bd9b 100644 --- a/genesis_ledgers/berkeley.json +++ b/genesis_ledgers/berkeley.json @@ -20,7 +20,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -33,7 +33,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -46,7 +46,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -59,7 +59,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -72,7 +72,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -85,7 +85,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -98,7 +98,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -111,7 +111,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -124,7 +124,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -137,7 +137,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -150,7 +150,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -163,7 +163,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -176,7 +176,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -189,7 +189,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -202,7 +202,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -215,7 +215,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -228,7 +228,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -241,7 +241,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -254,7 +254,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -267,7 +267,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -280,7 +280,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -293,7 +293,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -306,7 +306,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -319,7 +319,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -332,7 +332,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -345,7 +345,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -358,7 +358,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -371,7 +371,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -384,7 +384,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -397,7 +397,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -410,7 +410,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -423,7 +423,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -436,7 +436,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -449,7 +449,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -462,7 +462,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -475,7 +475,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -488,7 +488,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -501,7 +501,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -514,7 +514,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -527,7 +527,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -540,7 +540,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -553,7 +553,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -566,7 +566,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -579,7 +579,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -592,7 +592,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -605,7 +605,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -618,7 +618,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -631,7 +631,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -644,7 +644,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -657,7 +657,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -670,7 +670,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -683,7 +683,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -696,7 +696,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -709,7 +709,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -722,7 +722,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -735,7 +735,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -748,7 +748,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -761,7 +761,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -774,7 +774,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -787,7 +787,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -800,7 +800,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -813,7 +813,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -826,7 +826,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -839,7 +839,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -852,7 +852,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -865,7 +865,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -878,7 +878,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -891,7 +891,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -904,7 +904,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -917,7 +917,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -930,7 +930,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -943,7 +943,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -956,7 +956,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -969,7 +969,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -982,7 +982,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -995,7 +995,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1008,7 +1008,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1021,7 +1021,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1034,7 +1034,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1047,7 +1047,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1060,7 +1060,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1073,7 +1073,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1086,7 +1086,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1099,7 +1099,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1112,7 +1112,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1125,7 +1125,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1138,7 +1138,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1151,7 +1151,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1164,7 +1164,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1177,7 +1177,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1190,7 +1190,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1203,7 +1203,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1216,7 +1216,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1229,7 +1229,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1242,7 +1242,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1255,7 +1255,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1268,7 +1268,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1281,7 +1281,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1294,7 +1294,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1307,7 +1307,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1320,7 +1320,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1333,7 +1333,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1346,7 +1346,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1359,7 +1359,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1372,7 +1372,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1385,7 +1385,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1398,7 +1398,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1411,7 +1411,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1424,7 +1424,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1437,7 +1437,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1450,7 +1450,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1463,7 +1463,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1476,7 +1476,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1489,7 +1489,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1502,7 +1502,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1515,7 +1515,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1528,7 +1528,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1541,7 +1541,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1554,7 +1554,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1567,7 +1567,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1580,7 +1580,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1593,7 +1593,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1606,7 +1606,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1619,7 +1619,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1632,7 +1632,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1645,7 +1645,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1658,7 +1658,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1671,7 +1671,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1684,7 +1684,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1697,7 +1697,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1710,7 +1710,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1723,7 +1723,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1736,7 +1736,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1749,7 +1749,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1762,7 +1762,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1775,7 +1775,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1788,7 +1788,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1801,7 +1801,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1814,7 +1814,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1827,7 +1827,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1840,7 +1840,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1853,7 +1853,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1866,7 +1866,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1879,7 +1879,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1892,7 +1892,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1905,7 +1905,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1918,7 +1918,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1931,7 +1931,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1944,7 +1944,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1957,7 +1957,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1970,7 +1970,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1983,7 +1983,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -1996,7 +1996,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2009,7 +2009,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2022,7 +2022,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2035,7 +2035,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2048,7 +2048,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2061,7 +2061,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2074,7 +2074,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2087,7 +2087,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2100,7 +2100,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2113,7 +2113,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2126,7 +2126,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2139,7 +2139,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2152,7 +2152,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2165,7 +2165,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2178,7 +2178,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2191,7 +2191,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2204,7 +2204,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2217,7 +2217,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2230,7 +2230,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2243,7 +2243,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2256,7 +2256,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2269,7 +2269,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2282,7 +2282,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2295,7 +2295,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2308,7 +2308,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2321,7 +2321,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2334,7 +2334,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2347,7 +2347,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2360,7 +2360,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2373,7 +2373,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2386,7 +2386,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2399,7 +2399,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2412,7 +2412,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2425,7 +2425,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2438,7 +2438,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2451,7 +2451,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2464,7 +2464,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2477,7 +2477,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2490,7 +2490,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2503,7 +2503,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2516,7 +2516,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2529,7 +2529,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2542,7 +2542,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2555,7 +2555,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2568,7 +2568,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2581,7 +2581,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2594,7 +2594,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, @@ -2607,7 +2607,7 @@ "initial_minimum_balance": "1000000", "cliff_time": ["Since_genesis","12000"], "cliff_amount": "500000", - "vesting_period": ["Span","6"], + "vesting_period": ["Global_slot_span","6"], "vesting_increment": "150" } }, diff --git a/src/lib/mina_numbers/global_slot_intf.ml b/src/lib/mina_numbers/global_slot_intf.ml index 524e1a2d22e..ae4af8e368f 100644 --- a/src/lib/mina_numbers/global_slot_intf.ml +++ b/src/lib/mina_numbers/global_slot_intf.ml @@ -2,8 +2,6 @@ module type S_base = sig [%%versioned: module Stable : sig module V1 : sig - [@@@with_all_version_tags] - type t [@@deriving hash, sexp, compare, equal, yojson] end end] diff --git a/src/lib/mina_numbers/global_slot_since_genesis.ml b/src/lib/mina_numbers/global_slot_since_genesis.ml index 3ab3c1adf31..c98f70f70c5 100644 --- a/src/lib/mina_numbers/global_slot_since_genesis.ml +++ b/src/lib/mina_numbers/global_slot_since_genesis.ml @@ -24,8 +24,6 @@ module Make_str (_ : Wire_types.Concrete) = struct [%%versioned module Stable = struct module V1 = struct - [@@@with_all_version_tags] - type t = Wire_types.global_slot = Since_genesis of T.Stable.V1.t [@@deriving hash, sexp, compare, equal, yojson] diff --git a/src/lib/mina_numbers/global_slot_since_hard_fork.ml b/src/lib/mina_numbers/global_slot_since_hard_fork.ml index faffe9e9a10..c003ff115b7 100644 --- a/src/lib/mina_numbers/global_slot_since_hard_fork.ml +++ b/src/lib/mina_numbers/global_slot_since_hard_fork.ml @@ -24,8 +24,6 @@ module Make_str (_ : Wire_types.Concrete) = struct [%%versioned module Stable = struct module V1 = struct - [@@@with_all_version_tags] - type t = Wire_types.global_slot = Since_hard_fork of T.Stable.V1.t [@@deriving hash, sexp, compare, equal, yojson] diff --git a/src/lib/mina_numbers/global_slot_span.ml b/src/lib/mina_numbers/global_slot_span.ml index 7103052d47d..ba1ff75f6df 100644 --- a/src/lib/mina_numbers/global_slot_span.ml +++ b/src/lib/mina_numbers/global_slot_span.ml @@ -19,18 +19,16 @@ module Make_str (_ : Wire_types.Concrete) = struct [%%versioned module Stable = struct module V1 = struct - [@@@with_all_version_tags] - - type t = Wire_types.span = Span of T.Stable.V1.t + type t = Wire_types.global_slot_span = Global_slot_span of T.Stable.V1.t [@@deriving hash, sexp, compare, equal, yojson] let to_latest = Fn.id end end] - let to_uint32 (Span u32) : uint32 = u32 + let to_uint32 (Global_slot_span u32) : uint32 = u32 - let of_uint32 u32 : t = Span u32 + let of_uint32 u32 : t = Global_slot_span u32 module Checked = struct include T.Checked diff --git a/src/lib/mina_wire_types/mina_numbers.ml b/src/lib/mina_wire_types/mina_numbers.ml index aba452de2d3..01c06608d9d 100644 --- a/src/lib/mina_wire_types/mina_numbers.ml +++ b/src/lib/mina_wire_types/mina_numbers.ml @@ -93,13 +93,13 @@ module Global_slot_span = struct module type S = V1S0 end - type span = Span of Unsigned.UInt32.t + type global_slot_span = Global_slot_span of Unsigned.UInt32.t - module type Concrete = Types.S with type V1.t = span + module type Concrete = Types.S with type V1.t = global_slot_span module M = struct module V1 = struct - type t = span + type t = global_slot_span end end From 66c125a0f931b15bc308bff9c6a19d9190fdd369 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Mon, 8 May 2023 16:01:34 -0700 Subject: [PATCH 23/40] change slots to since-hard-fork per PR comments --- graphql_schema.json | 48 ++++++------- src/app/archive/lib/processor.ml | 2 +- src/lib/block_producer/block_producer.ml | 16 ++--- src/lib/cli_lib/commands.ml | 2 +- src/lib/consensus/global_slot.ml | 5 +- src/lib/consensus/global_slot_intf.ml | 14 ++-- src/lib/consensus/global_sub_window.ml | 10 ++- src/lib/consensus/intf.ml | 17 ++--- src/lib/consensus/proof_of_stake.ml | 72 ++++++++++--------- src/lib/consensus/proof_of_stake_intf.ml | 2 +- src/lib/consensus/vrf/consensus_vrf.ml | 18 ++--- src/lib/daemon_rpcs/types.ml | 9 +-- src/lib/mina_graphql/mina_graphql.ml | 14 ++-- src/lib/mina_numbers/global_slot.ml | 14 ++++ src/lib/mina_numbers/global_slot_intf.ml | 6 ++ src/lib/mina_numbers/unix/graphql_scalars.ml | 12 ++-- .../consensus/consensus_global_slot.ml | 6 +- .../consensus/consensus_global_slot.mli | 4 +- src/lib/network_pool/indexed_pool.ml | 8 ++- src/lib/network_pool/transaction_pool.ml | 3 + src/lib/staged_ledger/staged_ledger.ml | 14 +++- .../full_frontier/full_frontier.ml | 2 +- src/lib/vrf_evaluator/vrf_evaluator.ml | 23 +++--- 23 files changed, 186 insertions(+), 135 deletions(-) diff --git a/graphql_schema.json b/graphql_schema.json index 5b852a17c40..7a4a508d0f3 100644 --- a/graphql_schema.json +++ b/graphql_schema.json @@ -5838,7 +5838,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalslotSinceGenesis", + "name": "GlobalSlotSinceHardFork", "ofType": null } }, @@ -7632,16 +7632,6 @@ "enumValues": null, "possibleTypes": null }, - { - "kind": "SCALAR", - "name": "GlobalSlotSpan", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, { "kind": "SCALAR", "name": "CurrencyAmount", @@ -8831,7 +8821,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalslotSinceGenesis", + "name": "Globalslot", "ofType": null } }, @@ -9215,7 +9205,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalslotSinceGenesis", + "name": "Globalslot", "ofType": null } }, @@ -9527,7 +9517,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalslotSinceGenesis", + "name": "Globalslot", "ofType": null } }, @@ -10313,7 +10303,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalslotSinceGenesis", + "name": "Globalslot", "ofType": null } }, @@ -11603,8 +11593,8 @@ }, { "kind": "SCALAR", - "name": "GlobalslotSpan", - "description": "globalslotspan", + "name": "GlobalSlotSpan", + "description": "global slot span", "fields": null, "inputFields": null, "interfaces": null, @@ -11651,7 +11641,7 @@ "args": [], "type": { "kind": "SCALAR", - "name": "GlobalslotSinceGenesis", + "name": "Globalslot", "ofType": null }, "isDeprecated": false, @@ -11671,7 +11661,7 @@ "args": [], "type": { "kind": "SCALAR", - "name": "GlobalslotSpan", + "name": "GlobalSlotSpan", "ofType": null }, "isDeprecated": false, @@ -12405,7 +12395,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalslotSinceGenesis", + "name": "Globalslot", "ofType": null } }, @@ -12418,6 +12408,16 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "SCALAR", + "name": "Globalslot", + "description": "global slot", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, { "kind": "OBJECT", "name": "BlockProducerTimings", @@ -12463,7 +12463,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalslotSinceGenesis", + "name": "Globalslot", "ofType": null } } @@ -12507,8 +12507,8 @@ }, { "kind": "SCALAR", - "name": "GlobalslotSinceGenesis", - "description": "globalslotsincegenesis", + "name": "GlobalSlotSinceHardFork", + "description": "global slot since hard fork", "fields": null, "inputFields": null, "interfaces": null, @@ -12571,7 +12571,7 @@ "name": null, "ofType": { "kind": "SCALAR", - "name": "GlobalslotSinceGenesis", + "name": "GlobalSlotSinceHardFork", "ofType": null } }, diff --git a/src/app/archive/lib/processor.ml b/src/app/archive/lib/processor.ml index 103b464c44f..0b09ed9c20d 100644 --- a/src/app/archive/lib/processor.ml +++ b/src/app/archive/lib/processor.ml @@ -2880,7 +2880,7 @@ module Block = struct Error.raise (Staged_ledger.Pre_diff_info.Error.to_error e) in let global_slot_since_hard_fork = - Mina_numbers.Global_slot_since_genesis.to_uint32 + Mina_numbers.Global_slot_since_hard_fork.to_uint32 @@ Consensus.Data.Consensus_state.curr_global_slot consensus_state |> Unsigned.UInt32.to_int64 in diff --git a/src/lib/block_producer/block_producer.ml b/src/lib/block_producer/block_producer.ml index afc79d1d3a0..b3805e355f6 100644 --- a/src/lib/block_producer/block_producer.ml +++ b/src/lib/block_producer/block_producer.ml @@ -531,7 +531,7 @@ let retry ?(max = 3) ~logger ~error_message f = module Vrf_evaluation_state = struct type status = - | At of Mina_numbers.Global_slot_since_genesis.t + | At of Mina_numbers.Global_slot_since_hard_fork.t | Start | Completed @@ -585,7 +585,7 @@ module Vrf_evaluation_state = struct [ ( "slots" , `List (List.map vrf_result.slots_won ~f:(fun s -> - Mina_numbers.Global_slot_since_genesis.to_yojson + Mina_numbers.Global_slot_since_hard_fork.to_yojson s.global_slot ) ) ) ] @@ -1058,7 +1058,7 @@ let run ~context:(module Context : CONTEXT) ~vrf_evaluator ~prover ~verifier let%bind () = (*Poll once every slot if the evaluation for the epoch is not completed or the evaluation is completed*) if - Mina_numbers.Global_slot_since_genesis.( + Mina_numbers.Global_slot_since_hard_fork.( new_global_slot > slot) && not (Vrf_evaluation_state.finished vrf_evaluation_state) @@ -1140,7 +1140,7 @@ let run ~context:(module Context : CONTEXT) ~vrf_evaluator ~prover ~verifier ~coinbase_receiver:!coinbase_receiver in if - Mina_numbers.Global_slot_since_genesis.( + Mina_numbers.Global_slot_since_hard_fork.( curr_global_slot = winning_global_slot) then ( (*produce now*) @@ -1158,7 +1158,7 @@ let run ~context:(module Context : CONTEXT) ~vrf_evaluator ~prover ~verifier : (_, _) Interruptible.t ) ) else match - Mina_numbers.Global_slot_since_genesis.diff + Mina_numbers.Global_slot_since_hard_fork.diff winning_global_slot curr_global_slot with | None -> @@ -1168,10 +1168,10 @@ let run ~context:(module Context : CONTEXT) ~vrf_evaluator ~prover ~verifier global slot is $curr_slot" ~metadata: [ ( "slot_won" - , Mina_numbers.Global_slot_since_genesis + , Mina_numbers.Global_slot_since_hard_fork .to_yojson winning_global_slot ) ; ( "curr_slot" - , Mina_numbers.Global_slot_since_genesis + , Mina_numbers.Global_slot_since_hard_fork .to_yojson curr_global_slot ) ] ; return @@ -1236,7 +1236,7 @@ let run ~context:(module Context : CONTEXT) ~vrf_evaluator ~prover ~verifier Deferred.return () ) ) ) in let start () = - check_next_block_timing Mina_numbers.Global_slot_since_genesis.zero + check_next_block_timing Mina_numbers.Global_slot_since_hard_fork.zero Mina_numbers.Length.zero () in let genesis_state_timestamp = diff --git a/src/lib/cli_lib/commands.ml b/src/lib/cli_lib/commands.ml index 695e445114a..5dc146170a9 100644 --- a/src/lib/cli_lib/commands.ml +++ b/src/lib/cli_lib/commands.ml @@ -205,7 +205,7 @@ module Vrf = struct let evaluation = Evaluation.of_message_and_sk ~constraint_constants { global_slot = - Mina_numbers.Global_slot_since_genesis.of_int global_slot + Mina_numbers.Global_slot_since_hard_fork.of_int global_slot ; epoch_seed = Mina_base.Epoch_seed.of_base58_check_exn epoch_seed ; delegator_index diff --git a/src/lib/consensus/global_slot.ml b/src/lib/consensus/global_slot.ml index caddb9a8b0c..f6ac0a52800 100644 --- a/src/lib/consensus/global_slot.ml +++ b/src/lib/consensus/global_slot.ml @@ -12,7 +12,7 @@ module Make_sig (A : Wire_types.Types.S) = struct end module Make_str (A : Wire_types.Concrete) = struct - module T = Mina_numbers.Global_slot_since_genesis + module T = Mina_numbers.Global_slot_since_hard_fork module Length = Mina_numbers.Length module Poly = struct @@ -153,7 +153,8 @@ module Make_str (A : Wire_types.Concrete) = struct ( Epoch.Checked.Unsafe.of_field (T.Checked.to_field epoch) , Slot.Checked.Unsafe.of_field (T.Checked.to_field slot) ) - let sub (t : t) (t' : t) = T.Checked.sub t.slot_number t'.slot_number + let diff_slots (t : t) (t' : t) = + T.Checked.diff t.slot_number t'.slot_number end module For_tests = struct diff --git a/src/lib/consensus/global_slot_intf.ml b/src/lib/consensus/global_slot_intf.ml index 0dff2addf06..7251384ad51 100644 --- a/src/lib/consensus/global_slot_intf.ml +++ b/src/lib/consensus/global_slot_intf.ml @@ -17,7 +17,7 @@ module type Full = sig module Stable : sig module V1 : sig type t = - ( Mina_numbers.Global_slot_since_genesis.Stable.V1.t + ( Mina_numbers.Global_slot_since_hard_fork.Stable.V1.t , Mina_numbers.Length.Stable.V1.t ) Poly.Stable.V1.t [@@deriving compare, equal, sexp, hash, yojson] @@ -27,7 +27,7 @@ module type Full = sig val to_input : t -> Snark_params.Tick.Field.t Random_oracle.Input.Chunked.t val of_slot_number : - constants:Constants.t -> Mina_numbers.Global_slot_since_genesis.t -> t + constants:Constants.t -> Mina_numbers.Global_slot_since_hard_fork.t -> t val gen : constants:Constants.t -> t Quickcheck.Generator.t @@ -71,7 +71,7 @@ module type Full = sig open Snark_params.Tick type t = - ( Mina_numbers.Global_slot_since_genesis.Checked.t + ( Mina_numbers.Global_slot_since_hard_fork.Checked.t , Mina_numbers.Length.Checked.t ) Poly.t @@ -79,16 +79,14 @@ module type Full = sig val of_slot_number : constants:Constants.var - -> Mina_numbers.Global_slot_since_genesis.Checked.t + -> Mina_numbers.Global_slot_since_hard_fork.Checked.t -> t val to_input : t -> Field.Var.t Random_oracle.Input.Chunked.t val to_epoch_and_slot : t -> (Epoch.Checked.t * Slot.Checked.t) Checked.t - (** [sub ~m x y] computes [x - y] and ensures that [0 <= x - y] *) - val sub : - t -> t -> Mina_numbers.Global_slot_since_genesis.Checked.t Checked.t + val diff_slots : t -> t -> Mina_numbers.Global_slot_span.Checked.t Checked.t end val typ : (Checked.t, t) Typ.t @@ -100,6 +98,6 @@ module type Full = sig val slots_per_epoch : (_, 'b) Poly.t -> 'b module For_tests : sig - val of_global_slot : t -> Mina_numbers.Global_slot_since_genesis.t -> t + val of_global_slot : t -> Mina_numbers.Global_slot_since_hard_fork.t -> t end end diff --git a/src/lib/consensus/global_sub_window.ml b/src/lib/consensus/global_sub_window.ml index 61231236c27..7b1b47b06d8 100644 --- a/src/lib/consensus/global_sub_window.ml +++ b/src/lib/consensus/global_sub_window.ml @@ -9,7 +9,7 @@ let equal a b = UInt32.compare a b = 0 let of_global_slot ~(constants : Constants.t) (slot : Global_slot.t) : t = let slot_number_u32 = - Mina_numbers.Global_slot_since_genesis.to_uint32 + Mina_numbers.Global_slot_since_hard_fork.to_uint32 @@ Global_slot.slot_number slot in UInt32.Infix.(slot_number_u32 / constants.slots_per_sub_window) @@ -26,7 +26,7 @@ let sub a b = UInt32.sub a b let constant a = a module Checked = struct - module T = Mina_numbers.Global_slot_since_genesis + module T = Mina_numbers.Nat.Make32 () type t = T.Checked.t @@ -36,8 +36,12 @@ module Checked = struct let of_global_slot ~(constants : Constants.var) (s : Global_slot.Checked.t) : t Checked.t = let%map q, _ = + let slot_as_field = + Global_slot.slot_number s + |> Mina_numbers.Global_slot_since_hard_fork.Checked.to_field + in T.Checked.div_mod - (Global_slot.slot_number s) + (T.Checked.Unsafe.of_field slot_as_field) (of_length constants.slots_per_sub_window) in q diff --git a/src/lib/consensus/intf.ml b/src/lib/consensus/intf.ml index 8f857e1c190..23a74cca7c6 100644 --- a/src/lib/consensus/intf.ml +++ b/src/lib/consensus/intf.ml @@ -373,7 +373,7 @@ module type S = sig module Vrf : sig val check : context:(module CONTEXT) - -> global_slot:Mina_numbers.Global_slot_since_genesis.t + -> global_slot:Mina_numbers.Global_slot_since_hard_fork.t -> seed:Mina_base.Epoch_seed.t -> producer_private_key:Signature_lib.Private_key.t -> producer_public_key:Signature_lib.Public_key.Compressed.t @@ -465,10 +465,10 @@ module type S = sig val end_time : constants:Constants.t -> t -> Block_time.t - val to_global_slot : t -> Mina_numbers.Global_slot_since_genesis.t + val to_global_slot : t -> Mina_numbers.Global_slot_since_hard_fork.t val of_global_slot : - constants:Constants.t -> Mina_numbers.Global_slot_since_genesis.t -> t + constants:Constants.t -> Mina_numbers.Global_slot_since_hard_fork.t -> t val zero : constants:Constants.t -> t end @@ -546,7 +546,7 @@ module type S = sig val coinbase_receiver_var : var -> Public_key.Compressed.var - val curr_global_slot_var : var -> Global_slot_since_genesis.Checked.t + val curr_global_slot_var : var -> Global_slot_since_hard_fork.Checked.t val blockchain_length_var : var -> Length.Checked.t @@ -568,7 +568,8 @@ module type S = sig val epoch_count : Value.t -> Length.t - val curr_global_slot : Value.t -> Mina_numbers.Global_slot_since_genesis.t + val curr_global_slot : + Value.t -> Mina_numbers.Global_slot_since_hard_fork.t val total_currency : Value.t -> Amount.t @@ -592,7 +593,7 @@ module type S = sig val epoch_ledger : t -> Mina_ledger.Sparse_ledger.t - val global_slot : t -> Mina_numbers.Global_slot_since_genesis.t + val global_slot : t -> Mina_numbers.Global_slot_since_hard_fork.t val prover_state : t -> Prover_state.t @@ -610,7 +611,7 @@ module type S = sig { epoch_ledger : Mina_base.Epoch_ledger.Value.Stable.V1.t ; epoch_seed : Mina_base.Epoch_seed.Stable.V1.t ; epoch : Mina_numbers.Length.Stable.V1.t - ; global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t + ; global_slot : Mina_numbers.Global_slot_since_hard_fork.Stable.V1.t ; global_slot_since_genesis : Mina_numbers.Global_slot_since_genesis.Stable.V1.t ; delegatee_table : @@ -634,7 +635,7 @@ module type S = sig Signature_lib.Public_key.Compressed.Stable.V1.t * Mina_base.Account.Index.Stable.V1.t ; producer : Signature_lib.Keypair.Stable.V1.t - ; global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t + ; global_slot : Mina_numbers.Global_slot_since_hard_fork.Stable.V1.t ; global_slot_since_genesis : Mina_numbers.Global_slot_since_genesis.Stable.V1.t ; vrf_result : Consensus_vrf.Output_hash.Stable.V1.t diff --git a/src/lib/consensus/proof_of_stake.ml b/src/lib/consensus/proof_of_stake.ml index 81623f86bf6..ddf442c79c0 100644 --- a/src/lib/consensus/proof_of_stake.ml +++ b/src/lib/consensus/proof_of_stake.ml @@ -173,7 +173,7 @@ module Make_str (A : Wire_types.Concrete) = struct module Block_data = struct type t = { stake_proof : Stake_proof.t - ; global_slot : Mina_numbers.Global_slot_since_genesis.t + ; global_slot : Mina_numbers.Global_slot_since_hard_fork.t ; global_slot_since_genesis : Mina_numbers.Global_slot_since_genesis.t ; vrf_result : Random_oracle.Digest.t } @@ -201,7 +201,7 @@ module Make_str (A : Wire_types.Concrete) = struct { epoch_ledger : Mina_base.Epoch_ledger.Value.Stable.V1.t ; epoch_seed : Mina_base.Epoch_seed.Stable.V1.t ; epoch : Mina_numbers.Length.Stable.V1.t - ; global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t + ; global_slot : Mina_numbers.Global_slot_since_hard_fork.Stable.V1.t ; global_slot_since_genesis : Mina_numbers.Global_slot_since_genesis.Stable.V1.t ; delegatee_table : @@ -219,7 +219,7 @@ module Make_str (A : Wire_types.Concrete) = struct { epoch_ledger : Mina_base.Epoch_ledger.Value.t ; epoch_seed : Mina_base.Epoch_seed.t ; epoch : Mina_numbers.Length.t - ; global_slot : Mina_numbers.Global_slot_since_genesis.t + ; global_slot : Mina_numbers.Global_slot_since_hard_fork.t ; global_slot_since_genesis : Mina_numbers.Global_slot_since_genesis.t ; delegatee_table : Mina_base.Account.t Mina_base.Account.Index.Table.t @@ -239,7 +239,7 @@ module Make_str (A : Wire_types.Concrete) = struct Public_key.Compressed.Stable.V1.t * Mina_base.Account.Index.Stable.V1.t ; producer : Keypair.Stable.V1.t - ; global_slot : Mina_numbers.Global_slot_since_genesis.Stable.V1.t + ; global_slot : Mina_numbers.Global_slot_since_hard_fork.Stable.V1.t ; global_slot_since_genesis : Mina_numbers.Global_slot_since_genesis.Stable.V1.t ; vrf_result : Consensus_vrf.Output_hash.Stable.V1.t @@ -253,7 +253,7 @@ module Make_str (A : Wire_types.Concrete) = struct type t = Stable.Latest.t = { delegator : Public_key.Compressed.t * Mina_base.Account.Index.t ; producer : Keypair.t - ; global_slot : Mina_numbers.Global_slot_since_genesis.t + ; global_slot : Mina_numbers.Global_slot_since_hard_fork.t ; global_slot_since_genesis : Mina_numbers.Global_slot_since_genesis.t ; vrf_result : Consensus_vrf.Output_hash.t } @@ -868,7 +868,8 @@ module Make_str (A : Wire_types.Concrete) = struct request ) ) end - let check ~context:(module Context : CONTEXT) ~global_slot ~seed + let check ~context:(module Context : CONTEXT) + ~(global_slot : Mina_numbers.Global_slot_since_hard_fork.t) ~seed ~producer_private_key ~producer_public_key ~total_stake ~(get_delegators : Public_key.Compressed.t @@ -1184,8 +1185,8 @@ module Make_str (A : Wire_types.Concrete) = struct end module Consensus_transition = struct - include Mina_numbers.Global_slot_since_genesis - module Value = Mina_numbers.Global_slot_since_genesis + module Value = Mina_numbers.Global_slot_since_hard_fork + include Value type var = Checked.t @@ -1193,6 +1194,7 @@ module Make_str (A : Wire_types.Concrete) = struct end module Consensus_time = struct + (* since hard fork *) include Global_slot let to_string_hum = time_hum @@ -1219,7 +1221,7 @@ module Make_str (A : Wire_types.Concrete) = struct let to_uint32 t = Global_slot.slot_number t - |> Mina_numbers.Global_slot_since_genesis.to_uint32 + |> Mina_numbers.Global_slot_since_hard_fork.to_uint32 let to_global_slot = slot_number @@ -1332,7 +1334,7 @@ module Make_str (A : Wire_types.Concrete) = struct if same_sub_window || UInt32.compare - ( Mina_numbers.Global_slot_since_genesis.to_uint32 + ( Mina_numbers.Global_slot_since_hard_fork.to_uint32 @@ Global_slot.slot_number next_global_slot ) constants.grace_period_end < 0 @@ -1431,7 +1433,7 @@ module Make_str (A : Wire_types.Concrete) = struct let%bind in_grace_period = Global_slot.Checked.( < ) next_global_slot (Global_slot.Checked.of_slot_number ~constants - (Mina_numbers.Global_slot_since_genesis.Checked.Unsafe + (Mina_numbers.Global_slot_since_hard_fork.Checked.Unsafe .of_field (Length.Checked.to_field constants.grace_period_end) ) ) in @@ -1499,7 +1501,7 @@ module Make_str (A : Wire_types.Concrete) = struct if sub_window_diff = 0 || UInt32.compare - ( Mina_numbers.Global_slot_since_genesis.to_uint32 + ( Mina_numbers.Global_slot_since_hard_fork.to_uint32 @@ Global_slot.slot_number next_global_slot ) constants.grace_period_end < 0 @@ -1558,7 +1560,7 @@ module Make_str (A : Wire_types.Concrete) = struct (Global_slot.t * Global_slot.t list) Quickcheck.Generator.t = let open Quickcheck.Generator in let open Quickcheck.Generator.Let_syntax in - let module GS = Mina_numbers.Global_slot_since_genesis in + let module GS = Mina_numbers.Global_slot_since_hard_fork in let%bind prev_global_slot = small_positive_int in let%bind slot_diffs = Core.List.gen_with_length num_global_slots_to_test gen_slot_diff @@ -1941,7 +1943,7 @@ module Make_str (A : Wire_types.Concrete) = struct let checkpoint_window ~(constants : Constants.t) (slot : Global_slot.t) = UInt32.Infix.( - ( Mina_numbers.Global_slot_since_genesis.to_uint32 + ( Mina_numbers.Global_slot_since_hard_fork.to_uint32 @@ Global_slot.slot_number slot ) / constants.checkpoint_window_size_in_slots) @@ -2052,7 +2054,7 @@ module Make_str (A : Wire_types.Concrete) = struct let same_checkpoint_window ~(constants : Constants.var) ~prev:(slot1 : Global_slot.Checked.t) ~next:(slot2 : Global_slot.Checked.t) = - let module Slot = Mina_numbers.Global_slot_since_genesis in + let module Slot = Mina_numbers.Global_slot_since_hard_fork in let slot1 : Slot.Checked.t = Global_slot.slot_number slot1 in let checkpoint_window_size_in_slots = constants.checkpoint_window_size_in_slots @@ -2166,14 +2168,14 @@ module Make_str (A : Wire_types.Concrete) = struct ~consensus_transition:Consensus_transition.genesis ~genesis_ledger ~genesis_epoch_data ~constraint_constants ~constants - (* Check that both epoch and slot are zero. - *) + (* ??? do these mean, genesis-of-all-time, or genesis-at-hard-fork? *) + (* Check that both epoch and slot are zero. *) let is_genesis_state (t : Value.t) = - Mina_numbers.Global_slot_since_genesis.( + Mina_numbers.Global_slot_since_hard_fork.( equal zero (Global_slot.slot_number t.curr_global_slot)) let is_genesis (global_slot : Global_slot.Checked.t) = - let open Mina_numbers.Global_slot_since_genesis in + let open Mina_numbers.Global_slot_since_hard_fork in Checked.equal (Checked.constant zero) (Global_slot.slot_number global_slot) @@ -2211,9 +2213,9 @@ module Make_str (A : Wire_types.Concrete) = struct Global_slot.Checked.of_slot_number ~constants transition_data in let%bind slot_diff = - [%with_label_ "Next global slot is less that previous global slot"] + [%with_label_ "Next global slot is less than previous global slot"] (fun () -> - Global_slot.Checked.sub next_global_slot prev_global_slot ) + Global_slot.Checked.diff_slots next_global_slot prev_global_slot ) in let%bind () = let%bind global_slot_increased = @@ -2439,17 +2441,17 @@ module Make_str (A : Wire_types.Concrete) = struct if increase_epoch_count then Length.succ t.epoch_count else t.epoch_count in - let global_slot_since_genesis_to_span global_slot = - Mina_numbers.Global_slot_since_genesis.to_uint32 global_slot + let global_slot_since_hard_fork_to_span global_slot = + Mina_numbers.Global_slot_since_hard_fork.to_uint32 global_slot |> Mina_numbers.Global_slot_span.of_uint32 in let global_slot_since_genesis = Mina_numbers.Global_slot_since_genesis.( add ( sub t.global_slot_since_genesis - (global_slot_since_genesis_to_span (curr_global_slot t)) + (global_slot_since_hard_fork_to_span (curr_global_slot t)) |> Option.value_exn ) - (global_slot_since_genesis_to_span new_global_slot)) + (global_slot_since_hard_fork_to_span new_global_slot)) in { t with epoch_count = new_epoch_count @@ -3141,7 +3143,7 @@ module Make_str (A : Wire_types.Concrete) = struct let global_slot_since_genesis = let slot_diff = match - Mina_numbers.Global_slot_since_genesis.diff global_slot + Mina_numbers.Global_slot_since_hard_fork.diff global_slot (Consensus_state.curr_global_slot state) with | None -> @@ -3332,10 +3334,13 @@ module Make_str (A : Wire_types.Concrete) = struct in let curr_global_slot = Global_slot.of_epoch_and_slot ~constants curr in let consensus_state = - { negative_one with - curr_global_slot - ; global_slot_since_genesis = Global_slot.slot_number curr_global_slot - } + let global_slot_since_genesis = + (* for testing, consider slot-since-hard-fork as since-genesis *) + Global_slot.slot_number curr_global_slot + |> Mina_numbers.Global_slot_since_hard_fork.to_uint32 + |> Mina_numbers.Global_slot_since_genesis.of_uint32 + in + { negative_one with curr_global_slot; global_slot_since_genesis } in let too_early = (* TODO: Does this make sense? *) @@ -3387,7 +3392,7 @@ module Make_str (A : Wire_types.Concrete) = struct global_slot = if not - (Mina_numbers.Global_slot_since_genesis.equal + (Mina_numbers.Global_slot_since_hard_fork.equal (Global_slot.slot_number global_slot) block_data.global_slot ) then @@ -3853,7 +3858,7 @@ module Make_str (A : Wire_types.Concrete) = struct let expected = stake_fraction *. 0.75 in let samples = 1000 in let check i = - let global_slot = Mina_numbers.Global_slot_since_genesis.of_int i in + let global_slot = Mina_numbers.Global_slot_since_hard_fork.of_int i in let%map result = Interruptible.force (Vrf.check @@ -4152,7 +4157,10 @@ module Make_str (A : Wire_types.Concrete) = struct ; staking_epoch_data ; next_epoch_data = next_staking_epoch_data ; global_slot_since_genesis = + (* OK if we're in genesis "hard fork" *) Global_slot.slot_number curr_global_slot + |> Mina_numbers.Global_slot_since_hard_fork.to_uint32 + |> Mina_numbers.Global_slot_since_genesis.of_uint32 (* These values are not used in selection, so we just set them to something. *) ; has_ancestor_in_same_checkpoint_window = true ; block_stake_winner = staker_pk diff --git a/src/lib/consensus/proof_of_stake_intf.ml b/src/lib/consensus/proof_of_stake_intf.ml index d1250fb776e..87fcfa42bc9 100644 --- a/src/lib/consensus/proof_of_stake_intf.ml +++ b/src/lib/consensus/proof_of_stake_intf.ml @@ -35,7 +35,7 @@ module type Full = sig val dummy_advance : Value.t -> ?increase_epoch_count:bool - -> new_global_slot:Mina_numbers.Global_slot_since_genesis.t + -> new_global_slot:Mina_numbers.Global_slot_since_hard_fork.t -> Value.t end end diff --git a/src/lib/consensus/vrf/consensus_vrf.ml b/src/lib/consensus/vrf/consensus_vrf.ml index 7610bda3aaf..550f59dd770 100644 --- a/src/lib/consensus/vrf/consensus_vrf.ml +++ b/src/lib/consensus/vrf/consensus_vrf.ml @@ -75,21 +75,21 @@ module Group = struct end module Message = struct - module Global_slot_since_genesis = Mina_numbers.Global_slot_since_genesis + module Global_slot_since_hard_fork = Mina_numbers.Global_slot_since_hard_fork type ('global_slot, 'epoch_seed, 'delegator) t = { global_slot : 'global_slot; seed : 'epoch_seed; delegator : 'delegator } [@@deriving sexp, hlist] type value = - ( Global_slot_since_genesis.t + ( Global_slot_since_hard_fork.t , Mina_base.Epoch_seed.t , Mina_base.Account.Index.t ) t [@@deriving sexp] type var = - ( Global_slot_since_genesis.Checked.t + ( Global_slot_since_hard_fork.Checked.t , Mina_base.Epoch_seed.var , Mina_base.Account.Index.Unpacked.var ) t @@ -100,7 +100,7 @@ module Message = struct let open Random_oracle.Input.Chunked in Array.reduce_exn ~f:append [| field (seed :> Tick.field) - ; Global_slot_since_genesis.to_input global_slot + ; Global_slot_since_hard_fork.to_input global_slot ; Mina_base.Account.Index.to_input ~ledger_depth:constraint_constants.ledger_depth delegator |] @@ -108,7 +108,7 @@ module Message = struct let typ ~(constraint_constants : Genesis_constants.Constraint_constants.t) : (var, value) Tick.Typ.t = Tick.Typ.of_hlistable - [ Global_slot_since_genesis.typ + [ Global_slot_since_hard_fork.typ ; Mina_base.Epoch_seed.typ ; Mina_base.Account.Index.Unpacked.typ ~ledger_depth:constraint_constants.ledger_depth @@ -126,7 +126,7 @@ module Message = struct let open Random_oracle.Input.Chunked in Array.reduce_exn ~f:append [| field (Mina_base.Epoch_seed.var_to_hash_packed seed) - ; Global_slot_since_genesis.Checked.to_input global_slot + ; Global_slot_since_hard_fork.Checked.to_input global_slot ; Mina_base.Account.Index.Unpacked.to_input delegator |] @@ -140,7 +140,7 @@ module Message = struct let gen ~(constraint_constants : Genesis_constants.Constraint_constants.t) = let open Quickcheck.Let_syntax in - let%map global_slot = Global_slot_since_genesis.gen + let%map global_slot = Global_slot_since_hard_fork.gen and seed = Mina_base.Epoch_seed.gen and delegator = Mina_base.Account.Index.gen @@ -485,7 +485,7 @@ type evaluation = Vrf_lib.Standalone.Evaluation.Poly.t type context = - ( ( Mina_numbers.Global_slot_since_genesis.t + ( ( Mina_numbers.Global_slot_since_hard_fork.t , Pasta_bindings.Fp.t , int ) Message.t @@ -500,7 +500,7 @@ module Layout = struct *) module Message = struct type t = - { global_slot : Mina_numbers.Global_slot_since_genesis.t + { global_slot : Mina_numbers.Global_slot_since_hard_fork.t [@key "globalSlot"] ; epoch_seed : Mina_base.Epoch_seed.t [@key "epochSeed"] ; delegator_index : int [@key "delegatorIndex"] diff --git a/src/lib/daemon_rpcs/types.ml b/src/lib/daemon_rpcs/types.ml index 17c83447d6b..9de70baa683 100644 --- a/src/lib/daemon_rpcs/types.ml +++ b/src/lib/daemon_rpcs/types.ml @@ -162,7 +162,7 @@ module Status = struct module Next_producer_timing = struct type slot = - { slot : Mina_numbers.Global_slot_since_genesis.Stable.Latest.t + { slot : Mina_numbers.Global_slot_since_hard_fork.Stable.Latest.t ; global_slot_since_genesis : Mina_numbers.Global_slot_since_genesis.Stable.Latest.t } @@ -176,7 +176,8 @@ module Status = struct | Check_again of Block_time.Stable.Latest.t | Produce of producing_time | Produce_now of producing_time - | Evaluating_vrf of Mina_numbers.Global_slot_since_genesis.Stable.Latest.t + | Evaluating_vrf of + Mina_numbers.Global_slot_since_hard_fork.Stable.Latest.t [@@deriving to_yojson, bin_io_unversioned] type t = { generated_from_consensus_at : slot; timing : timing } @@ -294,7 +295,7 @@ module Status = struct in let slot_str (slot : Next_producer_timing.slot) = sprintf "slot: %s slot-since-genesis: %s" - (Mina_numbers.Global_slot_since_genesis.to_string slot.slot) + (Mina_numbers.Global_slot_since_hard_fork.to_string slot.slot) (Mina_numbers.Global_slot_since_genesis.to_string slot.global_slot_since_genesis ) in @@ -308,7 +309,7 @@ module Status = struct generated_from | Evaluating_vrf last_checked_slot -> sprintf "Evaluating VRF… Last checked global slot %s (%s)" - (Mina_numbers.Global_slot_since_genesis.to_string + (Mina_numbers.Global_slot_since_hard_fork.to_string last_checked_slot ) generated_from | Produce { time; for_slot } -> diff --git a/src/lib/mina_graphql/mina_graphql.ml b/src/lib/mina_graphql/mina_graphql.ml index 5ca23bae837..67be3450ca8 100644 --- a/src/lib/mina_graphql/mina_graphql.ml +++ b/src/lib/mina_graphql/mina_graphql.ml @@ -322,7 +322,7 @@ module Types = struct ~args:Arg.[] ~resolve:(fun _ global_slot -> C.slot global_slot) ; field "globalSlot" - ~typ:(non_null global_slot_since_genesis) + ~typ:(non_null global_slot_since_hard_fork) ~args:Arg.[] ~resolve:(fun _ (global_slot : Consensus.Data.Consensus_time.t) -> C.to_global_slot global_slot ) @@ -2694,7 +2694,7 @@ module Types = struct obj "VrfMessageInput" ~doc:"The inputs to a vrf evaluation" ~coerce:(fun global_slot epoch_seed delegator_index -> { Consensus_vrf.Layout.Message.global_slot = - Mina_numbers.Global_slot_since_genesis.of_uint32 global_slot + Mina_numbers.Global_slot_since_hard_fork.of_uint32 global_slot ; epoch_seed = Mina_base.Epoch_seed.of_base58_check_exn epoch_seed ; delegator_index } ) @@ -2708,7 +2708,7 @@ module Types = struct ] ~split:(fun f (t : input) -> f - (Mina_numbers.Global_slot_since_genesis.to_uint32 t.global_slot) + (Mina_numbers.Global_slot_since_hard_fork.to_uint32 t.global_slot) (Mina_base.Epoch_seed.to_base58_check t.epoch_seed) t.delegator_index ) end @@ -3344,7 +3344,7 @@ module Types = struct let open Consensus_vrf.Layout.Message in obj "VrfMessage" ~doc:"The inputs to a vrf evaluation" ~fields:(fun _ -> [ field "globalSlot" - ~typ:(non_null global_slot_since_genesis) + ~typ:(non_null global_slot_since_hard_fork) ~args:Arg.[] ~resolve:(fun _ { global_slot; _ } -> global_slot) ; field "epochSeed" ~typ:(non_null epoch_seed) @@ -3855,7 +3855,8 @@ module Mutations = struct Ledger.apply_zkapp_command_unchecked ~constraint_constants ~global_slot: ( Transition_frontier.Breadcrumb.consensus_state breadcrumb - |> Consensus.Data.Consensus_state.curr_global_slot ) + |> Consensus.Data.Consensus_state + .global_slot_since_genesis ) ~state_view ledger zkapp_command in (* rearrange data to match result type of `send_zkapp_command` *) @@ -6009,7 +6010,8 @@ module Queries = struct in List.map (Queue.to_list vrf_state.queue) ~f:(fun { global_slot; _ } -> - Mina_numbers.Global_slot_since_genesis.to_int global_slot ) ) + Mina_numbers.Global_slot_since_hard_fork.to_int global_slot ) + ) let internal_logs = io_field "internalLogs" diff --git a/src/lib/mina_numbers/global_slot.ml b/src/lib/mina_numbers/global_slot.ml index 8b333a63049..76d8d481ec3 100644 --- a/src/lib/mina_numbers/global_slot.ml +++ b/src/lib/mina_numbers/global_slot.ml @@ -35,6 +35,20 @@ module Make (M : S) = struct open Snark_params.Tick + let add t (span : global_slot_span_checked) = + let t' = Global_slot_span.Checked.to_field span |> Unsafe.of_field in + add t t' + + let sub t (span : global_slot_span_checked) = + let t' = Global_slot_span.Checked.to_field span |> Unsafe.of_field in + sub t t' + + let diff t1 t2 : global_slot_span_checked Checked.t = + let%map diff = T.Checked.sub t1 t2 in + let field = T.Checked.to_field diff in + (* `of_field` is the identity function, here applied to a checked field *) + Global_slot_span.Checked.Unsafe.of_field field + let typ = Typ.transport T.Checked.typ ~there:to_uint32 ~back:of_uint32 let diff_or_zero t1 t2 = diff --git a/src/lib/mina_numbers/global_slot_intf.ml b/src/lib/mina_numbers/global_slot_intf.ml index ae4af8e368f..a57b52e4d13 100644 --- a/src/lib/mina_numbers/global_slot_intf.ml +++ b/src/lib/mina_numbers/global_slot_intf.ml @@ -55,6 +55,12 @@ module type S = sig open Snark_params.Tick + val add : t -> global_slot_span_checked -> t Checked.t + + val sub : t -> global_slot_span_checked -> t Checked.t + + val diff : t -> t -> global_slot_span_checked Checked.t + val diff_or_zero : t -> t diff --git a/src/lib/mina_numbers/unix/graphql_scalars.ml b/src/lib/mina_numbers/unix/graphql_scalars.ml index 4d5eb75ba28..edcf317a016 100644 --- a/src/lib/mina_numbers/unix/graphql_scalars.ml +++ b/src/lib/mina_numbers/unix/graphql_scalars.ml @@ -6,9 +6,9 @@ module Make (Schema : Schema) = struct Make_scalar_using_to_string (Mina_numbers.Global_slot_since_genesis) (struct - let name = "GlobalslotSinceGenesis" + let name = "Globalslot" - let doc = "globalslotsincegenesis" + let doc = "global slot" end) (Schema) @@ -16,9 +16,9 @@ module Make (Schema : Schema) = struct Make_scalar_using_to_string (Mina_numbers.Global_slot_since_hard_fork) (struct - let name = "GlobalslotSinceHardFork" + let name = "GlobalSlotSinceHardFork" - let doc = "globalslotsincehardfork" + let doc = "global slot since hard fork" end) (Schema) @@ -26,9 +26,9 @@ module Make (Schema : Schema) = struct Make_scalar_using_to_string (Mina_numbers.Global_slot_span) (struct - let name = "GlobalslotSpan" + let name = "GlobalSlotSpan" - let doc = "globalslotspan" + let doc = "global slot span" end) (Schema) diff --git a/src/lib/mina_wire_types/consensus/consensus_global_slot.ml b/src/lib/mina_wire_types/consensus/consensus_global_slot.ml index fc659ca6c06..c999b43d129 100644 --- a/src/lib/mina_wire_types/consensus/consensus_global_slot.ml +++ b/src/lib/mina_wire_types/consensus/consensus_global_slot.ml @@ -10,7 +10,7 @@ module Types = struct module V1 : sig type t = - ( Mina_numbers.Global_slot_since_genesis.V1.t + ( Mina_numbers.Global_slot_since_hard_fork.V1.t , Mina_numbers.Length.V1.t ) Poly.V1.t end @@ -27,7 +27,7 @@ module type Concrete = sig module V1 : sig type t = - ( Mina_numbers.Global_slot_since_genesis.V1.t + ( Mina_numbers.Global_slot_since_hard_fork.V1.t , Mina_numbers.Length.V1.t ) Poly.V1.t end @@ -43,7 +43,7 @@ module M = struct module V1 = struct type t = - ( Mina_numbers.Global_slot_since_genesis.V1.t + ( Mina_numbers.Global_slot_since_hard_fork.V1.t , Mina_numbers.Length.V1.t ) Poly.V1.t end diff --git a/src/lib/mina_wire_types/consensus/consensus_global_slot.mli b/src/lib/mina_wire_types/consensus/consensus_global_slot.mli index 1f064b142a3..d6e05d6fa4e 100644 --- a/src/lib/mina_wire_types/consensus/consensus_global_slot.mli +++ b/src/lib/mina_wire_types/consensus/consensus_global_slot.mli @@ -10,7 +10,7 @@ module Types : sig module V1 : sig type t = - ( Mina_numbers.Global_slot_since_genesis.V1.t + ( Mina_numbers.Global_slot_since_hard_fork.V1.t , Mina_numbers.Length.V1.t ) Poly.V1.t end @@ -27,7 +27,7 @@ module type Concrete = sig module V1 : sig type t = - ( Mina_numbers.Global_slot_since_genesis.V1.t + ( Mina_numbers.Global_slot_since_hard_fork.V1.t , Mina_numbers.Length.V1.t ) Poly.V1.t end diff --git a/src/lib/network_pool/indexed_pool.ml b/src/lib/network_pool/indexed_pool.ml index 957d7e10f72..e5386ed9f41 100644 --- a/src/lib/network_pool/indexed_pool.ml +++ b/src/lib/network_pool/indexed_pool.ml @@ -330,13 +330,17 @@ let global_slot_since_genesis conf = match conf.constraint_constants.fork with | Some { previous_global_slot; _ } -> let slot_span = - Mina_numbers.Global_slot_since_genesis.to_uint32 current_slot + Mina_numbers.Global_slot_since_hard_fork.to_uint32 current_slot |> Mina_numbers.Global_slot_span.of_uint32 in Mina_numbers.Global_slot_since_genesis.( add previous_global_slot slot_span) | None -> - current_slot + (* we're in the genesis "hard fork", so consider current slot as + since-genesis + *) + Mina_numbers.Global_slot_since_hard_fork.to_uint32 current_slot + |> Mina_numbers.Global_slot_since_genesis.of_uint32 let check_expiry t (cmd : User_command.t) = let global_slot_since_genesis = global_slot_since_genesis t in diff --git a/src/lib/network_pool/transaction_pool.ml b/src/lib/network_pool/transaction_pool.ml index a9a4171ad94..25455c31dce 100644 --- a/src/lib/network_pool/transaction_pool.ml +++ b/src/lib/network_pool/transaction_pool.ml @@ -2241,9 +2241,12 @@ let%test_module _ = let current_global_slot () = let current_time = Block_time.now time_controller in + (* for testing, consider this slot to be a since-genesis slot *) Consensus.Data.Consensus_time.( of_time_exn ~constants:consensus_constants current_time |> to_global_slot) + |> Mina_numbers.Global_slot_since_hard_fork.to_uint32 + |> Mina_numbers.Global_slot_since_genesis.of_uint32 let mk_now_invalid_test t _cmds ~mk_command = let cmd1 = diff --git a/src/lib/staged_ledger/staged_ledger.ml b/src/lib/staged_ledger/staged_ledger.ml index 830abb0afd5..4dc0f5545c0 100644 --- a/src/lib/staged_ledger/staged_ledger.ml +++ b/src/lib/staged_ledger/staged_ledger.ml @@ -2245,9 +2245,17 @@ let%test_module "staged ledger tests" = | Some global_slot -> (*Protocol state views are always from previous block*) let prev_global_slot = - Option.value ~default:Mina_numbers.Global_slot_since_genesis.zero - (Mina_numbers.Global_slot_since_genesis.sub global_slot - (Mina_numbers.Global_slot_span.of_int 1) ) + (* TODO:; the global slot that's passed in is since-genesis, but `dummy_advance` wants + a since-hard-fork + *) + let global_slot = + Mina_numbers.Global_slot_since_genesis.to_uint32 global_slot + |> Mina_numbers.Global_slot_since_hard_fork.of_uint32 + in + Option.value + ~default:Mina_numbers.Global_slot_since_hard_fork.zero + (Mina_numbers.Global_slot_since_hard_fork.sub global_slot + Mina_numbers.Global_slot_span.one ) in let consensus_state = Consensus.Proof_of_stake.Exported.Consensus_state.Unsafe diff --git a/src/lib/transition_frontier/full_frontier/full_frontier.ml b/src/lib/transition_frontier/full_frontier/full_frontier.ml index 5da6d015a52..18b4bde4b58 100644 --- a/src/lib/transition_frontier/full_frontier/full_frontier.ml +++ b/src/lib/transition_frontier/full_frontier/full_frontier.ml @@ -721,7 +721,7 @@ module Metrics = struct find_ancestor ~f parent in let curr_global_slot_u32 cs = - curr_global_slot cs |> Mina_numbers.Global_slot_since_genesis.to_uint32 + curr_global_slot cs |> Mina_numbers.Global_slot_since_hard_fork.to_uint32 in let start = let slot = intprop curr_global_slot_u32 in diff --git a/src/lib/vrf_evaluator/vrf_evaluator.ml b/src/lib/vrf_evaluator/vrf_evaluator.ml index 9a4e269daaa..3c61388e9ae 100644 --- a/src/lib/vrf_evaluator/vrf_evaluator.ml +++ b/src/lib/vrf_evaluator/vrf_evaluator.ml @@ -2,7 +2,7 @@ open Core open Async open Signature_lib module Epoch = Mina_numbers.Length -module Global_slot_since_genesis = Mina_numbers.Global_slot_since_genesis +module Global_slot_since_hard_fork = Mina_numbers.Global_slot_since_hard_fork module type CONTEXT = sig val logger : Logger.t @@ -13,7 +13,7 @@ module type CONTEXT = sig end (*Slot number within an epoch*) -module Slot = Mina_numbers.Global_slot_since_genesis +module Slot = Mina_numbers.Nat.Make32 () (* Can extract both slot numbers and epoch number*) module Consensus_time = Consensus.Data.Consensus_time @@ -40,13 +40,13 @@ module Evaluator_status = struct [@@@no_toplevel_latest_type] module V2 = struct - type t = At of Global_slot_since_genesis.Stable.V1.t | Completed + type t = At of Global_slot_since_hard_fork.Stable.V1.t | Completed let to_latest = Fn.id end end] - type t = Stable.Latest.t = At of Global_slot_since_genesis.t | Completed + type t = Stable.Latest.t = At of Global_slot_since_hard_fork.t | Completed [@@deriving sexp] end @@ -97,7 +97,7 @@ module Worker_state = struct (Epoch.t * Slot.t) Public_key.Compressed.Table.t ; slots_won : Consensus.Data.Slot_won.t Queue.t (*possibly multiple producers per slot*) - ; mutable current_slot : Global_slot_since_genesis.t option + ; mutable current_slot : Global_slot_since_hard_fork.t option ; mutable epoch_data : unit Ivar.t * Consensus.Data.Epoch_data_for_vrf.t option ; mutable block_producer_keys : Block_producer_keys.t @@ -152,7 +152,6 @@ module Worker_state = struct let%bind () = Interruptible.lift Deferred.unit (Ivar.read interrupt_ivar) in - let module Slot = Mina_numbers.Global_slot_since_genesis in let epoch = epoch_data.epoch in [%log info] "Starting VRF evaluation for epoch: $epoch" ~metadata:[ ("epoch", Epoch.to_yojson epoch) ] ; @@ -187,7 +186,7 @@ module Worker_state = struct let global_slot_since_genesis = let slot_diff : Mina_numbers.Global_slot_span.t = match - Global_slot_since_genesis.diff global_slot + Global_slot_since_hard_fork.diff global_slot start_global_slot with | None -> @@ -198,8 +197,8 @@ module Worker_state = struct | Some diff -> diff in - Global_slot_since_genesis.add start_global_slot_since_genesis - slot_diff + Mina_numbers.Global_slot_since_genesis.add + start_global_slot_since_genesis slot_diff in [%log info] "Checking VRF evaluations at epoch: $epoch, slot: $slot" @@ -239,8 +238,10 @@ module Worker_state = struct in let rec find_winning_slot (consensus_time : Consensus_time.t) = let slot = Slot.of_uint32 @@ Consensus_time.slot consensus_time in - let global_slot = Consensus_time.to_global_slot consensus_time in - t.current_slot <- Some global_slot ; + t.current_slot <- + Some + ( Consensus_time.to_uint32 consensus_time + |> Global_slot_since_hard_fork.of_uint32 ) ; let epoch' = Consensus_time.epoch consensus_time in if Epoch.(epoch' > epoch) then ( t.current_slot <- None ; From 7ffbacb24bea606f78711203b346d366cd9b4db1 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Mon, 8 May 2023 16:59:08 -0700 Subject: [PATCH 24/40] dummy_advance takes a slot since genesis --- src/lib/consensus/global_slot.ml | 8 ++++---- src/lib/consensus/global_slot_intf.ml | 2 ++ src/lib/consensus/proof_of_stake.ml | 23 +++++++---------------- src/lib/consensus/proof_of_stake_intf.ml | 3 ++- src/lib/staged_ledger/staged_ledger.ml | 15 ++++----------- 5 files changed, 19 insertions(+), 32 deletions(-) diff --git a/src/lib/consensus/global_slot.ml b/src/lib/consensus/global_slot.ml index f6ac0a52800..3dfcbe17192 100644 --- a/src/lib/consensus/global_slot.ml +++ b/src/lib/consensus/global_slot.ml @@ -84,10 +84,10 @@ module Make_str (A : Wire_types.Concrete) = struct let to_epoch_and_slot t = (epoch t, slot t) - let ( + ) (x : t) n : t = - { x with - slot_number = T.add x.slot_number (Mina_numbers.Global_slot_span.of_int n) - } + let add (t : t) (span : Mina_numbers.Global_slot_span.t) = + { t with slot_number = T.add t.slot_number span } + + let ( + ) (t : t) n : t = add t (Mina_numbers.Global_slot_span.of_int n) let ( < ) (t : t) (t' : t) = T.compare t.slot_number t'.slot_number < 0 diff --git a/src/lib/consensus/global_slot_intf.ml b/src/lib/consensus/global_slot_intf.ml index 7251384ad51..3b0be1d10f5 100644 --- a/src/lib/consensus/global_slot_intf.ml +++ b/src/lib/consensus/global_slot_intf.ml @@ -31,6 +31,8 @@ module type Full = sig val gen : constants:Constants.t -> t Quickcheck.Generator.t + val add : t -> Mina_numbers.Global_slot_span.t -> t + val ( + ) : t -> int -> t val ( < ) : t -> t -> bool diff --git a/src/lib/consensus/proof_of_stake.ml b/src/lib/consensus/proof_of_stake.ml index ddf442c79c0..542c69e5497 100644 --- a/src/lib/consensus/proof_of_stake.ml +++ b/src/lib/consensus/proof_of_stake.ml @@ -2436,29 +2436,20 @@ module Make_str (A : Wire_types.Concrete) = struct module Unsafe = struct (* TODO: very unsafe, do not use unless you know what you are doing *) let dummy_advance (t : Value.t) ?(increase_epoch_count = false) - ~new_global_slot : Value.t = + ~new_global_slot_since_genesis : Value.t = let new_epoch_count = if increase_epoch_count then Length.succ t.epoch_count else t.epoch_count in - let global_slot_since_hard_fork_to_span global_slot = - Mina_numbers.Global_slot_since_hard_fork.to_uint32 global_slot - |> Mina_numbers.Global_slot_span.of_uint32 - in - let global_slot_since_genesis = - Mina_numbers.Global_slot_since_genesis.( - add - ( sub t.global_slot_since_genesis - (global_slot_since_hard_fork_to_span (curr_global_slot t)) - |> Option.value_exn ) - (global_slot_since_hard_fork_to_span new_global_slot)) + let slot_diff = + Option.value_exn + (Mina_numbers.Global_slot_since_genesis.diff + new_global_slot_since_genesis t.global_slot_since_genesis ) in { t with epoch_count = new_epoch_count - ; curr_global_slot = - Global_slot.For_tests.of_global_slot t.curr_global_slot - new_global_slot - ; global_slot_since_genesis + ; curr_global_slot = Global_slot.add t.curr_global_slot slot_diff + ; global_slot_since_genesis = new_global_slot_since_genesis } end diff --git a/src/lib/consensus/proof_of_stake_intf.ml b/src/lib/consensus/proof_of_stake_intf.ml index 87fcfa42bc9..8fbfe398bea 100644 --- a/src/lib/consensus/proof_of_stake_intf.ml +++ b/src/lib/consensus/proof_of_stake_intf.ml @@ -35,7 +35,8 @@ module type Full = sig val dummy_advance : Value.t -> ?increase_epoch_count:bool - -> new_global_slot:Mina_numbers.Global_slot_since_hard_fork.t + -> new_global_slot_since_genesis: + Mina_numbers.Global_slot_since_genesis.t -> Value.t end end diff --git a/src/lib/staged_ledger/staged_ledger.ml b/src/lib/staged_ledger/staged_ledger.ml index 4dc0f5545c0..564b4d2c1b8 100644 --- a/src/lib/staged_ledger/staged_ledger.ml +++ b/src/lib/staged_ledger/staged_ledger.ml @@ -2245,23 +2245,16 @@ let%test_module "staged ledger tests" = | Some global_slot -> (*Protocol state views are always from previous block*) let prev_global_slot = - (* TODO:; the global slot that's passed in is since-genesis, but `dummy_advance` wants - a since-hard-fork - *) - let global_slot = - Mina_numbers.Global_slot_since_genesis.to_uint32 global_slot - |> Mina_numbers.Global_slot_since_hard_fork.of_uint32 - in - Option.value - ~default:Mina_numbers.Global_slot_since_hard_fork.zero - (Mina_numbers.Global_slot_since_hard_fork.sub global_slot + Option.value ~default:Mina_numbers.Global_slot_since_genesis.zero + (Mina_numbers.Global_slot_since_genesis.sub global_slot Mina_numbers.Global_slot_span.one ) in let consensus_state = Consensus.Proof_of_stake.Exported.Consensus_state.Unsafe .dummy_advance (Mina_state.Protocol_state.consensus_state state) - ~new_global_slot:prev_global_slot ~increase_epoch_count:false + ~new_global_slot_since_genesis:prev_global_slot + ~increase_epoch_count:false in let body = Mina_state.Protocol_state.Body.For_tests.with_consensus_state From 03e2040a5479dd9ae2705fe0b70b411552770dfb Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Mon, 8 May 2023 18:02:05 -0700 Subject: [PATCH 25/40] fix heap usage app --- src/app/heap_usage/values.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/heap_usage/values.ml b/src/app/heap_usage/values.ml index bc1b40b61c3..fdbd61fac7c 100644 --- a/src/app/heap_usage/values.ml +++ b/src/app/heap_usage/values.ml @@ -418,7 +418,7 @@ let protocol_state = "last_vrf_output": "q4zrn2ZlIeTV8_8XPb3PZu4eQusG0n5ieUNy5gyZAAA=", "total_currency": "1014488754000001000", "curr_global_slot": { - "slot_number": ["Since_genesis","2831"], + "slot_number": ["Since_hard_fork","2831"], "slots_per_epoch": "7140" }, "global_slot_since_genesis": ["Since_genesis","2831"], From 715adfeac5d50c1eb0e7cb8f48c3566477425477 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Mon, 8 May 2023 19:27:29 -0700 Subject: [PATCH 26/40] fix sample precomputed blocks --- src/lib/mina_block/sample_precomputed_block.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/mina_block/sample_precomputed_block.ml b/src/lib/mina_block/sample_precomputed_block.ml index e9f64bb33a7..30c8c2ae1a2 100644 --- a/src/lib/mina_block/sample_precomputed_block.ml +++ b/src/lib/mina_block/sample_precomputed_block.ml @@ -97,7 +97,7 @@ let sample_block_sexp = (last_vrf_output "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") (total_currency 10016120000000000) - (curr_global_slot ((slot_number (Since_genesis 6)) (slots_per_epoch 576))) + (curr_global_slot ((slot_number (Since_hard_fork 6)) (slots_per_epoch 576))) (global_slot_since_genesis (Since_genesis 6)) (staking_epoch_data ((ledger @@ -640,7 +640,7 @@ let sample_block_json = "last_vrf_output": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", "total_currency": "10016120000000000", "curr_global_slot": { - "slot_number": ["Since_genesis","6"], + "slot_number": ["Since_hard_fork","6"], "slots_per_epoch": "576" }, "global_slot_since_genesis": ["Since_genesis","6"], From ee56a0fe925dbcf3ca735d19b73cb2f03919d026 Mon Sep 17 00:00:00 2001 From: Gregor Date: Tue, 9 May 2023 08:33:52 +0200 Subject: [PATCH 27/40] snarkyjs --- src/lib/snarkyjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/snarkyjs b/src/lib/snarkyjs index 36627c59b6d..bc460836558 160000 --- a/src/lib/snarkyjs +++ b/src/lib/snarkyjs @@ -1 +1 @@ -Subproject commit 36627c59b6d01219a85a3384e149f3e3cb519e40 +Subproject commit bc460836558ecd7675e5890a30492f75b7ab7ef7 From 9797ad44054d8a984b3e2e557844ae00f377b02f Mon Sep 17 00:00:00 2001 From: Tang Jiawei Date: Thu, 11 May 2023 00:35:04 +0800 Subject: [PATCH 28/40] add logs for update network state --- src/lib/integration_test_lib/network_state.ml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/integration_test_lib/network_state.ml b/src/lib/integration_test_lib/network_state.ml index 0a1550ed8a0..cc372750af1 100644 --- a/src/lib/integration_test_lib/network_state.ml +++ b/src/lib/integration_test_lib/network_state.ml @@ -84,7 +84,8 @@ module Make ignore ( Event_router.on event_router Event_type.Block_produced ~f:(fun node block_produced -> - [%log debug] "Updating network state with block produced event" ; + [%log info] "Updating network state with block produced event" + ~metadata:[("snark_ledger_generated", `Bool block_produced.snarked_ledger_generated)] ; update ~f:(fun state -> [%log debug] "handling block production from $node" ~metadata:[ ("node", `String (Node.id node)) ] ; From f5c933463e078e8cb9138459529d30a7a59680bf Mon Sep 17 00:00:00 2001 From: Tang Jiawei Date: Thu, 11 May 2023 02:12:14 +0800 Subject: [PATCH 29/40] fix parser for global slot --- src/lib/integration_test_lib/event_type.ml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lib/integration_test_lib/event_type.ml b/src/lib/integration_test_lib/event_type.ml index e65f7ca2a2a..eb012c0dea1 100644 --- a/src/lib/integration_test_lib/event_type.ml +++ b/src/lib/integration_test_lib/event_type.ml @@ -207,8 +207,11 @@ module Block_produced = struct let%bind block_height = find int breadcrumb_consensus_state [ "blockchain_length" ] in - let%bind global_slot = - find int breadcrumb_consensus_state [ "curr_global_slot"; "slot_number" ] + let%bind global_slot_since_hard_fork = + find (list string) breadcrumb_consensus_state [ "slot_number" ] + in + let global_slot = + List.nth_exn global_slot_since_hard_fork 1 |> Int.of_string in let%map epoch = find int breadcrumb_consensus_state [ "epoch_count" ] in { block_height; global_slot; epoch; snarked_ledger_generated; state_hash } From 24884a9659442f9781858744d48b638bffc25548 Mon Sep 17 00:00:00 2001 From: Tang Jiawei Date: Thu, 11 May 2023 03:32:31 +0800 Subject: [PATCH 30/40] add unit test for parser --- src/lib/integration_test_lib/event_type.ml | 247 +++++++++++++++++- src/lib/integration_test_lib/network_state.ml | 7 +- 2 files changed, 245 insertions(+), 9 deletions(-) diff --git a/src/lib/integration_test_lib/event_type.ml b/src/lib/integration_test_lib/event_type.ml index eb012c0dea1..1bae740ab97 100644 --- a/src/lib/integration_test_lib/event_type.ml +++ b/src/lib/integration_test_lib/event_type.ml @@ -142,7 +142,7 @@ module Block_produced = struct ; snarked_ledger_generated : bool ; state_hash : State_hash.t } - [@@deriving to_yojson] + [@@deriving to_yojson, equal] (* let empty = @@ -176,10 +176,9 @@ module Block_produced = struct let structured_event_id = Block_producer.block_produced_structured_events_id - let parse_func message = + let parse_breadcrumb breadcrumb = let open Json_parsing in let open Or_error.Let_syntax in - let%bind breadcrumb = get_metadata message "breadcrumb" in let%bind state_hash_str = find string breadcrumb [ "validated_transition"; "hash"; "state_hash" ] in @@ -207,15 +206,22 @@ module Block_produced = struct let%bind block_height = find int breadcrumb_consensus_state [ "blockchain_length" ] in - let%bind global_slot_since_hard_fork = - find (list string) breadcrumb_consensus_state [ "slot_number" ] - in - let global_slot = + let%bind global_slot = + (* the associated field looks like "slot_number":["Since_hard_fork", 1] *) + let%map global_slot_since_hard_fork = + find (list string) breadcrumb_consensus_state + [ "curr_global_slot"; "slot_number" ] + in List.nth_exn global_slot_since_hard_fork 1 |> Int.of_string in let%map epoch = find int breadcrumb_consensus_state [ "epoch_count" ] in { block_height; global_slot; epoch; snarked_ledger_generated; state_hash } + let parse_func message = + let open Or_error.Let_syntax in + let%bind breadcrumb = get_metadata message "breadcrumb" in + parse_breadcrumb breadcrumb + let parse = From_daemon_log (structured_event_id, parse_func) end @@ -623,3 +629,230 @@ let dispatch_exn : type a b c. a t -> a -> b t -> (b -> c) -> c = () (* TODO: tests on sexp and dispatch (etc) against all_event_types *) + +let%test_unit "parse breadcrumb functions properly" = + let breadcrumb_json = + {json| + { + "transition_receipt_time": "2023-05-10T17:27:21.051560Z", + "just_emitted_a_proof": false, + "validated_transition": { + "hash": { + "state_body_hash": "3WuibKRQv4TmqEj48a39QehVueRp8fCZ1Ta4CHfCLdVGG1y2HvDy", + "state_hash": "3NLBdEiVExFLZsTHJXqNwUFtG1nwTWN7Kd4mNCNjGKcFy2QeWjFL" + }, + "data": { + "delta_transition_chain_proof": "", + "protocol_state_proof": "", + "proposed_protocol_version": "", + "protocol_state": { + "previous_state_hash": "3NKnRqx6Mp1PibTWL59P1hNCwyc4dhmam4TABP65bZyEc56h7PBF", + "body": { + "genesis_state_hash": "3NKK9p9ydnSEHrUWz6RSkt9MDytEkie6yaXSVPC55wari7okTwRH", + "blockchain_state": { + "genesis_ledger_hash": "jwbhUympjiAFLPi7w3Cg9GEeNCfACEpPxrTp45XZt3BDA5UNV8S", + "body_reference": "b94b2580ca80f27c9655289579a0d71df0b7604dfa7c404e6c309cccf7730d2f", + "ledger_proof_statement": { + "connecting_ledger_right": "jwbhUympjiAFLPi7w3Cg9GEeNCfACEpPxrTp45XZt3BDA5UNV8S", + "sok_digest": null, + "target": { + "local_state": { + "full_transaction_commitment": "0x0000000000000000000000000000000000000000000000000000000000000000", + "call_stack": "0x0000000000000000000000000000000000000000000000000000000000000000", + "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf", + "excess": { + "sgn": [ + "Pos" + ], + "magnitude": "0" + }, + "success": true, + "stack_frame": "0x0641662E94D68EC970D0AFC059D02729BBF4A2CD88C548CCD9FB1E26E570C66C", + "will_succeed": true, + "account_update_index": "0", + "supply_increase": { + "sgn": [ + "Pos" + ], + "magnitude": "0" + }, + "ledger": "jw6bz2wud1N6itRUHZ5ypo3267stk4UgzkiuWtAMPRZo9g4Udyd", + "failure_status_tbl": [], + "transaction_commitment": "0x0000000000000000000000000000000000000000000000000000000000000000" + }, + "pending_coinbase_stack": { + "state": { + "init": "4Yx5U3t3EYQycZ91yj4478bHkLwGkhDHnPbCY9TxgUk69SQityej", + "curr": "4Yx5U3t3EYQycZ91yj4478bHkLwGkhDHnPbCY9TxgUk69SQityej" + }, + "data": "4QNrZFBTDQCPfEZqBZsaPYx8qdaNFv1nebUyCUsQW9QUJqyuD3un" + }, + "first_pass_ledger": "jwbhUympjiAFLPi7w3Cg9GEeNCfACEpPxrTp45XZt3BDA5UNV8S", + "second_pass_ledger": "jwbhUympjiAFLPi7w3Cg9GEeNCfACEpPxrTp45XZt3BDA5UNV8S" + }, + "fee_excess": [ + { + "token": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf", + "amount": { + "sgn": [ + "Pos" + ], + "magnitude": "0" + } + }, + { + "amount": { + "sgn": [ + "Pos" + ], + "magnitude": "0" + }, + "token": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf" + } + ], + "source": { + "second_pass_ledger": "jwbhUympjiAFLPi7w3Cg9GEeNCfACEpPxrTp45XZt3BDA5UNV8S", + "local_state": { + "account_update_index": "0", + "supply_increase": { + "sgn": [ + "Pos" + ], + "magnitude": "0" + }, + "stack_frame": "0x0641662E94D68EC970D0AFC059D02729BBF4A2CD88C548CCD9FB1E26E570C66C", + "ledger": "jw6bz2wud1N6itRUHZ5ypo3267stk4UgzkiuWtAMPRZo9g4Udyd", + "transaction_commitment": "0x0000000000000000000000000000000000000000000000000000000000000000", + "token_id": "wSHV2S4qX9jFsLjQo8r1BsMLH2ZRKsZx6EJd1sbozGPieEC4Jf", + "excess": { + "sgn": [ + "Pos" + ], + "magnitude": "0" + }, + "call_stack": "0x0000000000000000000000000000000000000000000000000000000000000000", + "will_succeed": true, + "full_transaction_commitment": "0x0000000000000000000000000000000000000000000000000000000000000000", + "failure_status_tbl": [], + "success": true + }, + "first_pass_ledger": "jwbhUympjiAFLPi7w3Cg9GEeNCfACEpPxrTp45XZt3BDA5UNV8S", + "pending_coinbase_stack": { + "data": "4QNrZFBTDQCPfEZqBZsaPYx8qdaNFv1nebUyCUsQW9QUJqyuD3un", + "state": { + "curr": "4Yx5U3t3EYQycZ91yj4478bHkLwGkhDHnPbCY9TxgUk69SQityej", + "init": "4Yx5U3t3EYQycZ91yj4478bHkLwGkhDHnPbCY9TxgUk69SQityej" + } + } + }, + "supply_increase": { + "sgn": [ + "Pos" + ], + "magnitude": "0" + }, + "connecting_ledger_left": "jwbhUympjiAFLPi7w3Cg9GEeNCfACEpPxrTp45XZt3BDA5UNV8S" + }, + "staged_ledger_hash": { + "pending_coinbase_hash": "2n2RMBVXRRZ6t1vo2nvExPE4TREotVgq4ayBnDtNc56QoxajRDoS", + "non_snark": { + "pending_coinbase_aux": "WAQjrtxd2upVJCra8vm3pzeBD9zKq9FXnUfQcJumD9Ff9E81yR", + "ledger_hash": "jx6bKLsrYbnw6bQMYVBMGoi155GCuncBbvfLk8sp7U8aY5WTYup", + "aux_hash": "W8tzkbcpPqVSRy1PBPvkZ6dRyWcGBK9UADhs2wUp7GFjqrxRDS" + } + }, + "timestamp": "1683739622600" + }, + "consensus_state": { + "last_vrf_output": "0uRC1o3WvALejoQPlC3Axpz2jgIJopZr20cr3f0FPgE=", + "coinbase_receiver": "B62qpkCEM5N5ddVsYNbFtwWV4bsT9AwuUJXoehFhHUbYYvZ6j3fXt93", + "block_creator": "B62qpkCEM5N5ddVsYNbFtwWV4bsT9AwuUJXoehFhHUbYYvZ6j3fXt93", + "curr_global_slot": { + "slots_per_epoch": "480", + "slot_number": [ + "Since_hard_fork", + "14" + ] + }, + "staking_epoch_data": { + "lock_checkpoint": "3NK2tkzqqK5spR2sZ7tujjqPksL45M3UUrcA4WhCkeiPtnugyE2x", + "epoch_length": "1", + "start_checkpoint": "3NK2tkzqqK5spR2sZ7tujjqPksL45M3UUrcA4WhCkeiPtnugyE2x", + "ledger": { + "total_currency": "730300000001000", + "hash": "jwbhUympjiAFLPi7w3Cg9GEeNCfACEpPxrTp45XZt3BDA5UNV8S" + }, + "seed": "2va9BGv9JrLTtrzZttiEMDYw1Zj6a6EHzXjmP9evHDTG3oEquURA" + }, + "next_epoch_data": { + "epoch_length": "9", + "start_checkpoint": "3NK2tkzqqK5spR2sZ7tujjqPksL45M3UUrcA4WhCkeiPtnugyE2x", + "ledger": { + "total_currency": "730300000001000", + "hash": "jwbhUympjiAFLPi7w3Cg9GEeNCfACEpPxrTp45XZt3BDA5UNV8S" + }, + "seed": "2vaXWiu9UcJ2wfF324copSsztwG1byEEGDCTVuNNmHcGzdDoSR5f", + "lock_checkpoint": "3NKnRqx6Mp1PibTWL59P1hNCwyc4dhmam4TABP65bZyEc56h7PBF" + }, + "supercharge_coinbase": true, + "block_stake_winner": "B62qpkCEM5N5ddVsYNbFtwWV4bsT9AwuUJXoehFhHUbYYvZ6j3fXt93", + "sub_window_densities": [ + "1", + "0", + "0", + "2", + "2", + "2", + "0", + "1", + "2", + "2", + "2" + ], + "total_currency": "730300000001000", + "global_slot_since_genesis": [ + "Since_genesis", + "14" + ], + "epoch_count": "0", + "min_window_density": "22", + "has_ancestor_in_same_checkpoint_window": true, + "blockchain_length": "8" + }, + "constants": { + "slots_per_sub_window": "2", + "genesis_state_timestamp": "1683737942600", + "delta": "0", + "slots_per_epoch": "480", + "k": "20" + } + }, + "staged_ledger_diff": "", + "current_protocol_version": "3.0.0" + } + }, + "staged_ledger": "" + } + + } + |json} + in + match + let breadcrumb = Yojson.Safe.from_string breadcrumb_json in + Block_produced.parse_breadcrumb breadcrumb + with + | Ok result -> + let expected = + Block_produced. + { block_height = 8 + ; epoch = 0 + ; global_slot = 14 + ; snarked_ledger_generated = false + ; state_hash = + State_hash.of_base58_check_exn + "3NLBdEiVExFLZsTHJXqNwUFtG1nwTWN7Kd4mNCNjGKcFy2QeWjFL" + } + in + assert (Block_produced.equal result expected) + | Error e -> + failwith (Error.to_string_hum e) diff --git a/src/lib/integration_test_lib/network_state.ml b/src/lib/integration_test_lib/network_state.ml index cc372750af1..b5010e7cbba 100644 --- a/src/lib/integration_test_lib/network_state.ml +++ b/src/lib/integration_test_lib/network_state.ml @@ -84,8 +84,11 @@ module Make ignore ( Event_router.on event_router Event_type.Block_produced ~f:(fun node block_produced -> - [%log info] "Updating network state with block produced event" - ~metadata:[("snark_ledger_generated", `Bool block_produced.snarked_ledger_generated)] ; + [%log debug] "Updating network state with block produced event" + ~metadata: + [ ( "snark_ledger_generated" + , `Bool block_produced.snarked_ledger_generated ) + ] ; update ~f:(fun state -> [%log debug] "handling block production from $node" ~metadata:[ ("node", `String (Node.id node)) ] ; From f50edec8c01b5672aded1de375888220a8434065 Mon Sep 17 00:00:00 2001 From: Gregor Date: Wed, 10 May 2023 22:12:50 +0200 Subject: [PATCH 31/40] snarkyjs --- src/lib/snarkyjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/snarkyjs b/src/lib/snarkyjs index bc460836558..310a89fd174 160000 --- a/src/lib/snarkyjs +++ b/src/lib/snarkyjs @@ -1 +1 @@ -Subproject commit bc460836558ecd7675e5890a30492f75b7ab7ef7 +Subproject commit 310a89fd174982c963ebd2830d0ec217cdeaabd2 From bee90ebc628f4facb0f9d93a3032dc7b78013a78 Mon Sep 17 00:00:00 2001 From: Gregor Date: Thu, 11 May 2023 07:46:40 +0200 Subject: [PATCH 32/40] snarkyjs --- src/lib/snarkyjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/snarkyjs b/src/lib/snarkyjs index 310a89fd174..618b35a8a83 160000 --- a/src/lib/snarkyjs +++ b/src/lib/snarkyjs @@ -1 +1 @@ -Subproject commit 310a89fd174982c963ebd2830d0ec217cdeaabd2 +Subproject commit 618b35a8a837c039a8ebd426c43c1522e0f50f14 From 08adb70f63bf3bdfb1aabf5b07029a02f8e877e6 Mon Sep 17 00:00:00 2001 From: Gregor Date: Thu, 11 May 2023 07:51:16 +0200 Subject: [PATCH 33/40] snarkyjs --- src/lib/snarkyjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/snarkyjs b/src/lib/snarkyjs index 618b35a8a83..80ed0c0ae04 160000 --- a/src/lib/snarkyjs +++ b/src/lib/snarkyjs @@ -1 +1 @@ -Subproject commit 618b35a8a837c039a8ebd426c43c1522e0f50f14 +Subproject commit 80ed0c0ae04d44ba85e34b0c1be6cde203ee70c4 From f34a2b5106d64e2b80216a23ec382d26bad3f97d Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 24 May 2023 10:34:22 -0700 Subject: [PATCH 34/40] update extensional command types --- src/app/archive/lib/extensional.ml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/archive/lib/extensional.ml b/src/app/archive/lib/extensional.ml index 4edbc34114a..666e1f63fb6 100644 --- a/src/app/archive/lib/extensional.ml +++ b/src/app/archive/lib/extensional.ml @@ -13,7 +13,7 @@ open Signature_lib module User_command = struct [%%versioned module Stable = struct - module V1 = struct + module V2 = struct (* for `command_type` and `status`, a string is enough in any case, there aren't existing string conversions for the original OCaml types @@ -50,7 +50,7 @@ end module Internal_command = struct [%%versioned module Stable = struct - module V1 = struct + module V2 = struct (* for `command_type`, a string is enough no existing string conversion for the original OCaml type *) @@ -125,8 +125,8 @@ module Block = struct ; global_slot_since_genesis : Mina_numbers.Global_slot_since_genesis.Stable.V1.t ; timestamp : Block_time.Stable.V1.t - ; user_cmds : User_command.Stable.V1.t list - ; internal_cmds : Internal_command.Stable.V1.t list + ; user_cmds : User_command.Stable.V2.t list + ; internal_cmds : Internal_command.Stable.V2.t list ; zkapp_cmds : Zkapp_command.Stable.V1.t list ; protocol_version : Protocol_version.Stable.V1.t ; proposed_protocol_version : Protocol_version.Stable.V1.t option From 69f29eac19729bccb083dd942f080f1dc0d64a3f Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 31 May 2023 12:18:47 -0700 Subject: [PATCH 35/40] post-merge cleanup --- src/lib/transaction/transaction_hash.ml | 6 +++--- .../test/account_timing/account_timing.ml | 21 ++++++++++++------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/lib/transaction/transaction_hash.ml b/src/lib/transaction/transaction_hash.ml index a72fc0d5b04..eacc2059d3e 100644 --- a/src/lib/transaction/transaction_hash.ml +++ b/src/lib/transaction/transaction_hash.ml @@ -246,16 +246,16 @@ let%test_module "Transaction hashes" = "BD421DxjdoLimeUh4RA4FEvHdDn6bfxyMVWiWUwbYzQkqhNUv8B5M4gCSREpu9mVueBYoHYWkwB8BMf6iS2jjV8FffvPGkuNeczBfY7YRwLuUGBRCQJ3ktFBrNuu4abqgkYhXmcS2xyzoSGxHbXkJRAokTwjQ9HP6TLSeXz9qa92nJaTeccMnkoZBmEitsZWWnTCMqDc6rhN4Z9UMpg4wzdPMwNJvLRuJBD14Dd5pR84KBoY9rrnv66rHPc4m2hH9QSEt4aEJC76BQ446pHN9ZLmyhrk28f5xZdBmYxp3hV13fJEJ3Gv1XqJMBqFxRhzCVGoKDbLAaNRb5F1u1WxTzJu5n4cMMDEYydGEpNirY2PKQqHkR8gEqjXRTkpZzP8G19qT" in let expected_hash = - "5JuHPnnSmETfMxfC7goshhwdPuUAkTzmxg2uZzLjb3iTWBBn2Wy6" + "5JuV53FPXad1QLC46z7wsou9JjjYP87qaUeryscZqLUMmLSg8j2n" in run_test ~transaction_id ~expected_hash let%test "signed command v2 hash from transaction id" = let transaction_id = - "Av1AQg8AlEnpua7SqyAM80vJIW10/Kqnp2FHOMTCii86qa8rSjkAAAD//yIAIPVBcM7g/nXBMy303a594bnQ7OwX4fuaocUqCTbkFglTAJRJ6bmu0qsgDPNLySFtdPyqp6dhRzjEwoovOqmvK0o5AJHytSF/cBVhs1+FGudG82jtzzfsfYhiXF4bDJUQz28kAf4bDZRJ6bmu0qsgDPNLySFtdPyqp6dhRzjEwoovOqmvK0o5AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" + "Av0IlDV3VklWpVXVRQr7cidImXn8E9nqCAxPjuyUNZ2pu3pJJxkBAAD//yIAIKTVOZ2q1qG1KT11p6844pWJ3fQug1XGnzv2S3N73azIABXhN3d+nO04Y7YqBul1CY5CEq9o34KWvfcB8IWep3kkAf60JFZJVqVV1UUK+3InSJl5/BPZ6ggMT47slDWdqbt6SScZAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" in let expected_hash = - "5JuEJtMCq4yK3LnK2uv6FPVdjhYP7r4AKzr73VwQGnyRkRhL9pQL" + "5JvBt4173K3t7gQSpFoMGtbtZuYWPSg29cWad5pnnRd9BnAowoqY" in run_test ~transaction_id ~expected_hash diff --git a/src/lib/transaction_snark/test/account_timing/account_timing.ml b/src/lib/transaction_snark/test/account_timing/account_timing.ml index 3d21c05b3cd..b88bab57ff8 100644 --- a/src/lib/transaction_snark/test/account_timing/account_timing.ml +++ b/src/lib/transaction_snark/test/account_timing/account_timing.ml @@ -848,7 +848,8 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 10_000 - ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 @@ -892,9 +893,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 10_000 - ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -938,9 +941,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 10_000 - ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } else Untimed @@ -987,9 +992,11 @@ let%test_module "account timing check" = Timed { initial_minimum_balance = Currency.Balance.of_mina_int_exn 10_000 - ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 + ; cliff_time = + Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = Mina_numbers.Global_slot_since_genesis.of_int 1 + ; vesting_period = + Mina_numbers.Global_slot_since_genesis.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } else Untimed From 480006406a93f3bdd6b0537c6b947881a42577d8 Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 31 May 2023 13:43:53 -0700 Subject: [PATCH 36/40] fix test, span, not slot --- .../transaction_snark/test/account_timing/account_timing.ml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/transaction_snark/test/account_timing/account_timing.ml b/src/lib/transaction_snark/test/account_timing/account_timing.ml index b88bab57ff8..f05c2a03588 100644 --- a/src/lib/transaction_snark/test/account_timing/account_timing.ml +++ b/src/lib/transaction_snark/test/account_timing/account_timing.ml @@ -897,7 +897,7 @@ let%test_module "account timing check" = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -945,7 +945,7 @@ let%test_module "account timing check" = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } else Untimed @@ -996,7 +996,7 @@ let%test_module "account timing check" = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 ; vesting_period = - Mina_numbers.Global_slot_since_genesis.of_int 1 + Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } else Untimed From e2ff5f93f0d866e968d98a349d6bbf01df5b819b Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 31 May 2023 14:59:41 -0700 Subject: [PATCH 37/40] bump snarkyjs --- src/lib/snarkyjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/snarkyjs b/src/lib/snarkyjs index 80ed0c0ae04..a2c39023a28 160000 --- a/src/lib/snarkyjs +++ b/src/lib/snarkyjs @@ -1 +1 @@ -Subproject commit 80ed0c0ae04d44ba85e34b0c1be6cde203ee70c4 +Subproject commit a2c39023a283b20a2bcda2dd7c249490f82bc962 From 516504ab16ab9e6cd9859629561c457a7f4b87ba Mon Sep 17 00:00:00 2001 From: Paul Steckler Date: Wed, 31 May 2023 15:10:01 -0700 Subject: [PATCH 38/40] reformat --- .../test/account_timing/account_timing.ml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/lib/transaction_snark/test/account_timing/account_timing.ml b/src/lib/transaction_snark/test/account_timing/account_timing.ml index f05c2a03588..8f15258b3d3 100644 --- a/src/lib/transaction_snark/test/account_timing/account_timing.ml +++ b/src/lib/transaction_snark/test/account_timing/account_timing.ml @@ -896,8 +896,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = - Mina_numbers.Global_slot_span.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } in @@ -944,8 +943,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = - Mina_numbers.Global_slot_span.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } else Untimed @@ -995,8 +993,7 @@ let%test_module "account timing check" = ; cliff_time = Mina_numbers.Global_slot_since_genesis.of_int 10_000 ; cliff_amount = Currency.Amount.of_mina_int_exn 9_995 - ; vesting_period = - Mina_numbers.Global_slot_span.of_int 1 + ; vesting_period = Mina_numbers.Global_slot_span.of_int 1 ; vesting_increment = Currency.Amount.of_nanomina_int_exn 10 } else Untimed From 27c9732ffa37273ae9a99dc29881c7a681f25faf Mon Sep 17 00:00:00 2001 From: Gregor Date: Thu, 1 Jun 2023 18:19:08 +0200 Subject: [PATCH 39/40] snarkyjs --- src/lib/snarkyjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/snarkyjs b/src/lib/snarkyjs index a2c39023a28..4a2277bea90 160000 --- a/src/lib/snarkyjs +++ b/src/lib/snarkyjs @@ -1 +1 @@ -Subproject commit a2c39023a283b20a2bcda2dd7c249490f82bc962 +Subproject commit 4a2277bea90ef89e2e880d93c226726c3e209d15 From 23c177746ee3b8fd8e432f49f8201c40f8bba2a1 Mon Sep 17 00:00:00 2001 From: Gregor Date: Thu, 1 Jun 2023 18:25:02 +0200 Subject: [PATCH 40/40] snarkyjs --- src/lib/snarkyjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/snarkyjs b/src/lib/snarkyjs index 4a2277bea90..c309fb15df1 160000 --- a/src/lib/snarkyjs +++ b/src/lib/snarkyjs @@ -1 +1 @@ -Subproject commit 4a2277bea90ef89e2e880d93c226726c3e209d15 +Subproject commit c309fb15df14982420f7e5edaadaf4265b5bc908