diff --git a/scripts/alphanet.sh b/scripts/alphanet.sh index 71264ae08..23ee1eac2 100755 --- a/scripts/alphanet.sh +++ b/scripts/alphanet.sh @@ -392,7 +392,6 @@ go_alpha_go() { activate \ protocol ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK \ with fitness 1 \ - and passes 1 \ and key dictator } diff --git a/src/bin_client/tezos-init-sandboxed-client.sh b/src/bin_client/tezos-init-sandboxed-client.sh index e7e7350a8..155f98f08 100755 --- a/src/bin_client/tezos-init-sandboxed-client.sh +++ b/src/bin_client/tezos-init-sandboxed-client.sh @@ -199,7 +199,6 @@ activate_alpha() { -block genesis \ activate protocol ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK \ with fitness 1 \ - and passes 1 \ and key dictator } @@ -232,7 +231,7 @@ main () { cat </dev/null 2>&1 ; then tezos-client-reset; fi ; alias tezos-client="$client" ; -alias tezos-activate-alpha="$client -block genesis activate protocol ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK with fitness 1 and passes 1 and key dictator" ; +alias tezos-activate-alpha="$client -block genesis activate protocol ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK with fitness 1 and key dictator" ; alias tezos-client-reset="rm -rf \"$client_dir\"; unalias tezos-client tezos-activate-alpha tezos-client-reset" ; alias tezos-autocomplete="source \"$bin_dir/bash-completion.sh\"" ; trap tezos-client-reset EXIT ; diff --git a/src/lib_protocol_environment_client/fake_updater.ml b/src/lib_protocol_environment_client/fake_updater.ml index 31a3d635b..b4169824c 100644 --- a/src/lib_protocol_environment_client/fake_updater.ml +++ b/src/lib_protocol_environment_client/fake_updater.ml @@ -14,10 +14,14 @@ module Make(Context : sig type t end) = struct fitness: Fitness.t ; message: string option ; max_operation_data_length: int ; - max_number_of_operations: int list ; max_operations_ttl: int ; } + type quota = { + max_size: int ; + max_op: int option ; + } + type rpc_context = { block_hash: Block_hash.t ; block_header: Block_header.t ; @@ -30,6 +34,7 @@ module Make(Context : sig type t end) = struct type error = .. type 'a tzresult = ('a, error list) result val max_block_length: int + val validation_passes: quota list type operation val parse_operation: Operation_hash.t -> Operation.t -> operation tzresult diff --git a/src/lib_protocol_environment_sigs/v1/updater.mli b/src/lib_protocol_environment_sigs/v1/updater.mli index 6f20d8215..0ec3b3d3f 100644 --- a/src/lib_protocol_environment_sigs/v1/updater.mli +++ b/src/lib_protocol_environment_sigs/v1/updater.mli @@ -27,10 +27,6 @@ type validation_result = { max_operation_data_length: int ; (** The maximum size of operations in bytes. *) - max_number_of_operations: int list ; - (** The maximum number of operations allowed in one block - (per validation pass). *) - max_operations_ttl: int ; (** The "time-to-live" of operation for the next block: any operations whose 'branch' is older than 'ttl' blocks in the @@ -38,6 +34,15 @@ type validation_result = { } +type quota = { + max_size: int ; + (** The maximum size (in bytes) of the serialized list of + operations. *) + max_op: int option ; + (** The maximum number of operation. + [None] means no limit. *) +} + type rpc_context = { block_hash: Block_hash.t ; block_header: Block_header.t ; @@ -53,6 +58,10 @@ module type PROTOCOL = sig (** The maximum size of block headers in bytes. *) val max_block_length: int + (** The number of validation passes (length of the list) and the + operation's quota for each pass. *) + val validation_passes: quota list + (** The version specific type of operations. *) type operation diff --git a/src/lib_protocol_updater/updater.ml b/src/lib_protocol_updater/updater.ml index aa3fb9ff3..d94a0ad0e 100644 --- a/src/lib_protocol_updater/updater.ml +++ b/src/lib_protocol_updater/updater.ml @@ -16,10 +16,14 @@ type validation_result = { fitness: Fitness.t ; message: string option ; max_operation_data_length: int ; - max_number_of_operations: int list ; max_operations_ttl: int ; } +type quota = { + max_size: int ; + max_op: int option ; +} + type rpc_context = { block_hash: Block_hash.t ; block_header: Block_header.t ; @@ -112,6 +116,7 @@ module Node_protocol_environment_sigs = struct and type Block_header.t = Block_header.t and type 'a RPC_directory.t = 'a RPC_directory.t and type Updater.validation_result = validation_result + and type Updater.quota = quota and type Updater.rpc_context = rpc_context type error += Ecoproto_error of Error_monad.error list @@ -125,6 +130,7 @@ module type RAW_PROTOCOL = sig type error = .. type 'a tzresult = ('a, error list) result val max_block_length: int + val validation_passes: quota list type operation val parse_operation: Operation_hash.t -> Operation.t -> operation tzresult diff --git a/src/lib_protocol_updater/updater.mli b/src/lib_protocol_updater/updater.mli index 770b6a3df..f14b122b0 100644 --- a/src/lib_protocol_updater/updater.mli +++ b/src/lib_protocol_updater/updater.mli @@ -21,10 +21,14 @@ type validation_result = { fitness: Fitness.t ; message: string option ; max_operation_data_length: int ; - max_number_of_operations: int list ; max_operations_ttl: int ; } +type quota = { + max_size: int ; + max_op: int option ; +} + type rpc_context = { block_hash: Block_hash.t ; block_header: Block_header.t ; @@ -37,6 +41,7 @@ module type RAW_PROTOCOL = sig type error = .. type 'a tzresult = ('a, error list) result val max_block_length: int + val validation_passes: quota list type operation val parse_operation: Operation_hash.t -> Operation.t -> operation tzresult @@ -102,6 +107,7 @@ module Node_protocol_environment_sigs : sig and type Block_header.t = Block_header.t and type 'a RPC_directory.t = 'a RPC_directory.t and type Updater.validation_result = validation_result + and type Updater.quota = quota and type Updater.rpc_context = rpc_context type error += Ecoproto_error of Error_monad.error list diff --git a/src/lib_shell/block_validator.ml b/src/lib_shell/block_validator.ml index f8f1a4792..2480ccb31 100644 --- a/src/lib_shell/block_validator.ml +++ b/src/lib_shell/block_validator.ml @@ -61,7 +61,7 @@ let debug w = Format.kasprintf (fun msg -> Worker.record_event w (Debug msg)) let check_header - (pred: State.Block.t) hash (header: Block_header.t) = + (pred: State.Block.t) validation_passes hash (header: Block_header.t) = let pred_header = State.Block.header pred in fail_unless (Int32.succ pred_header.shell.level = header.shell.level) @@ -75,8 +75,7 @@ let check_header Fitness.(pred_header.shell.fitness < header.shell.fitness) (invalid_block hash Non_increasing_fitness) >>=? fun () -> fail_unless - (header.shell.validation_passes = - List.length (State.Block.max_number_of_operations pred)) + (header.shell.validation_passes = validation_passes) (invalid_block hash (Unexpected_number_of_validation_passes header.shell.validation_passes) ) >>=? fun () -> @@ -120,12 +119,14 @@ let apply_block operations = let pred_header = State.Block.header pred and pred_hash = State.Block.hash pred in - check_header pred hash header >>=? fun () -> + check_header pred (List.length Proto.validation_passes) hash header >>=? fun () -> iteri2_p - (fun i ops max -> + (fun i ops quota -> fail_unless - (List.length ops <= max) - (invalid_block hash @@ + (Option.unopt_map ~default:true + ~f:(fun max -> List.length ops <= max) quota.Updater.max_op) + (let max = Option.unopt ~default:~-1 quota.Updater.max_op in + invalid_block hash @@ Too_many_operations { pass = i + 1 ; found = List.length ops ; max }) >>=? fun () -> let max_size = State.Block.max_operation_data_length pred in @@ -138,7 +139,7 @@ let apply_block { operation = Operation.hash op ; size ; max = max_size })) ops >>=? fun () -> return ()) - operations (State.Block.max_number_of_operations pred) >>=? fun () -> + operations Proto.validation_passes >>=? fun () -> let operation_hashes = List.map (List.map Operation.hash) operations in check_liveness net_state pred hash operation_hashes operations >>=? fun () -> map2_s (map2_s begin fun op_hash raw -> diff --git a/src/lib_shell/prevalidation.ml b/src/lib_shell/prevalidation.ml index a4449d1a0..40cf33cd9 100644 --- a/src/lib_shell/prevalidation.ml +++ b/src/lib_shell/prevalidation.ml @@ -57,19 +57,12 @@ and 'a proto = let start_prevalidation ?proto_header - ?max_number_of_operations ~predecessor ~timestamp () = let { Block_header.shell = { fitness = predecessor_fitness ; timestamp = predecessor_timestamp ; level = predecessor_level } } = State.Block.header predecessor in - let max_number_of_operations = - match max_number_of_operations with - | Some max -> max - | None -> - try List.hd (State.Block.max_number_of_operations predecessor) - with _ -> 0 in let max_operation_data_length = State.Block.max_operation_data_length predecessor in State.Block.context predecessor >>= fun predecessor_context -> @@ -98,6 +91,8 @@ let start_prevalidation ?proto_header () >>=? fun state -> + (* FIXME arbitrary value, to be customisable *) + let max_number_of_operations = 1000 in return (State { proto = (module Proto) ; state ; max_number_of_operations ; max_operation_data_length }) diff --git a/src/lib_shell/prevalidation.mli b/src/lib_shell/prevalidation.mli index 547e37aee..2d7cdca4d 100644 --- a/src/lib_shell/prevalidation.mli +++ b/src/lib_shell/prevalidation.mli @@ -11,7 +11,6 @@ type prevalidation_state val start_prevalidation : ?proto_header: MBytes.t -> - ?max_number_of_operations: int -> predecessor: State.Block.t -> timestamp: Time.t -> unit -> prevalidation_state tzresult Lwt.t diff --git a/src/lib_shell/state.ml b/src/lib_shell/state.ml index 2f7ca6506..df79e9548 100644 --- a/src/lib_shell/state.ml +++ b/src/lib_shell/state.ml @@ -172,7 +172,6 @@ module Locked_block = struct Store.Block.Contents.store (store, genesis.block) { Store.Block.header ; message = Some "Genesis" ; max_operations_ttl = 0 ; context ; - max_number_of_operations = []; max_operation_data_length = 0; } >>= fun () -> Lwt.return header @@ -379,8 +378,6 @@ module Block = struct let message { contents = { message } } = message let max_operations_ttl { contents = { max_operations_ttl } } = max_operations_ttl - let max_number_of_operations { contents = { max_number_of_operations } } = - max_number_of_operations let max_operation_data_length { contents = { max_operation_data_length } } = max_operation_data_length @@ -474,7 +471,7 @@ module Block = struct let store net_state block_header operations { Updater.context ; message ; max_operations_ttl ; - max_number_of_operations ; max_operation_data_length } = + max_operation_data_length } = let bytes = Block_header.to_bytes block_header in let hash = Block_header.hash_raw bytes in (* let's the validator check the consistency... of fitness, level, ... *) @@ -494,7 +491,6 @@ module Block = struct Store.Block.header = block_header ; message ; max_operations_ttl ; - max_number_of_operations ; max_operation_data_length ; context = commit ; } in diff --git a/src/lib_shell/state.mli b/src/lib_shell/state.mli index d08cadfb8..eebfa37a7 100644 --- a/src/lib_shell/state.mli +++ b/src/lib_shell/state.mli @@ -134,7 +134,6 @@ module Block : sig val level: t -> Int32.t val message: t -> string option val max_operations_ttl: t -> int - val max_number_of_operations: t -> int list val max_operation_data_length: t -> int val is_genesis: t -> bool diff --git a/src/lib_storage/store.ml b/src/lib_storage/store.ml index 36eb6c6a9..93b0722cd 100644 --- a/src/lib_storage/store.ml +++ b/src/lib_storage/store.ml @@ -84,7 +84,6 @@ module Block = struct header: Block_header.t ; message: string option ; max_operations_ttl: int ; - max_number_of_operations: int list; max_operation_data_length: int; context: Context_hash.t ; } @@ -99,21 +98,17 @@ module Block = struct let open Data_encoding in conv (fun { header ; message ; max_operations_ttl ; - max_number_of_operations ; max_operation_data_length ; - context } -> + max_operation_data_length ; context } -> (message, max_operations_ttl, - max_number_of_operations, max_operation_data_length, - context, header)) + max_operation_data_length, context, header)) (fun (message, max_operations_ttl, - max_number_of_operations, max_operation_data_length, - context, header) -> + max_operation_data_length, context, header) -> { header ; message ; max_operations_ttl ; - max_number_of_operations ; max_operation_data_length ; + max_operation_data_length ; context }) - (obj6 + (obj5 (opt "message" string) (req "max_operations_ttl" uint16) - (req "max_number_of_operations" (list uint16)) (req "max_operation_data_length" uint16) (req "context" Context_hash.encoding) (req "header" Block_header.encoding)) diff --git a/src/lib_storage/store.mli b/src/lib_storage/store.mli index 2e7e6ad03..15b6d0ead 100644 --- a/src/lib_storage/store.mli +++ b/src/lib_storage/store.mli @@ -88,7 +88,6 @@ module Block : sig header: Block_header.t ; message: string option ; max_operations_ttl: int ; - max_number_of_operations: int list; max_operation_data_length: int; context: Context_hash.t ; } diff --git a/src/proto_alpha/lib_protocol/src/main.ml b/src/proto_alpha/lib_protocol/src/main.ml index ad2f20a30..439175fd8 100644 --- a/src/proto_alpha/lib_protocol/src/main.ml +++ b/src/proto_alpha/lib_protocol/src/main.ml @@ -16,6 +16,9 @@ let parse_operation = Tezos_context.Operation.parse let max_block_length = Tezos_context.Block_header.max_header_length +let validation_passes = + [ Updater.{ max_size = 1024 * 1024 ; max_op = None } ] (* 1MB *) + let rpc_services = Services_registration.rpc_services type validation_mode = diff --git a/src/proto_alpha/lib_protocol/src/tezos_context.ml b/src/proto_alpha/lib_protocol/src/tezos_context.ml index 67c778bda..a95d9b7d1 100644 --- a/src/proto_alpha/lib_protocol/src/tezos_context.ml +++ b/src/proto_alpha/lib_protocol/src/tezos_context.ml @@ -137,7 +137,6 @@ let finalize ?commit_message:message c = let constants = Raw_context.constants c in { Updater.context ; fitness ; message ; max_operations_ttl = 60 ; max_operation_data_length = constants.max_operation_data_length ; - max_number_of_operations = constants.max_number_of_operations ; } let configure_sandbox = Raw_context.configure_sandbox diff --git a/src/proto_demo/lib_protocol/src/main.ml b/src/proto_demo/lib_protocol/src/main.ml index 2f5ac6355..c1e6aea35 100644 --- a/src/proto_demo/lib_protocol/src/main.ml +++ b/src/proto_demo/lib_protocol/src/main.ml @@ -11,7 +11,7 @@ type operation = Operation_hash.t let max_operation_data_length = 42 let max_block_length = 42 -let max_number_of_operations = 42 +let validation_passes = [] let parse_operation h _ = Ok h @@ -88,8 +88,7 @@ let finalize_block ctxt = let message = Some (Format.asprintf "fitness <- %Ld" fitness) in let fitness = Fitness.from_int64 fitness in return { Updater.message ; context = ctxt.context ; fitness ; - max_operations_ttl = 0 ; max_operation_data_length = 0 ; - max_number_of_operations = [] } + max_operations_ttl = 0 ; max_operation_data_length = 0 } let rpc_services = Services.rpc_services diff --git a/src/proto_genesis/lib_client/client_proto_main.ml b/src/proto_genesis/lib_client/client_proto_main.ml index e1622389d..a7a145af2 100644 --- a/src/proto_genesis/lib_client/client_proto_main.ml +++ b/src/proto_genesis/lib_client/client_proto_main.ml @@ -66,19 +66,16 @@ let commands () = @@ param ~name:"fitness" ~desc:"Hardcoded fitness of the first block (integer)" int64_parameter - @@ prefixes [ "and" ; "passes" ] - @@ param ~name:"passes" - ~desc:"Hardcoded number of validation passes (integer)" - int_parameter @@ prefixes [ "and" ; "key" ] @@ Client_keys.Secret_key.source_param ~name:"password" ~desc:"Dictator's key" @@ stop) - begin fun timestamp hash fitness validation_passes sk (cctxt : Client_commands.full_context) -> + begin fun timestamp hash fitness sk (cctxt : Client_commands.full_context) -> let fitness = Tezos_client_alpha.Proto_alpha.Fitness_repr.from_int64 fitness in bake cctxt ?timestamp cctxt#block - (Activate { protocol = hash ; validation_passes ; fitness }) sk >>=? fun hash -> + (Activate { protocol = hash ; fitness }) + sk >>=? fun hash -> cctxt#answer "Injected %a" Block_hash.pp_short hash >>= fun () -> return () end ; @@ -87,18 +84,13 @@ let commands () = args (prefixes [ "fork" ; "test" ; "protocol" ] @@ Protocol_hash.param ~name:"version" ~desc:"Protocol version (b58check)" - @@ prefixes [ "with" ; "passes" ] - @@ param ~name:"passes" - ~desc:"Hardcoded number of validation passes (integer)" - int_parameter - @@ prefixes [ "and" ; "key" ] + @@ prefixes [ "with" ; "key" ] @@ Client_keys.Secret_key.source_param ~name:"password" ~desc:"Dictator's key" @@ stop) - begin fun timestamp hash validation_passes sk cctxt -> + begin fun timestamp hash sk cctxt -> bake cctxt ?timestamp cctxt#block (Activate_testnet { protocol = hash ; - validation_passes ; delay = Int64.mul 24L 3600L }) sk >>=? fun hash -> cctxt#answer "Injected %a" Block_hash.pp_short hash >>= fun () -> diff --git a/src/proto_genesis/lib_protocol/src/data.ml b/src/proto_genesis/lib_protocol/src/data.ml index fb91ad9d7..b2320addd 100644 --- a/src/proto_genesis/lib_protocol/src/data.ml +++ b/src/proto_genesis/lib_protocol/src/data.ml @@ -13,14 +13,12 @@ module Command = struct (* Activate a protocol *) | Activate of { protocol: Protocol_hash.t ; - validation_passes: int ; fitness: Fitness.t ; } (* Activate a protocol as a testnet *) | Activate_testnet of { protocol: Protocol_hash.t ; - validation_passes: int ; delay: Int64.t ; } @@ -38,29 +36,27 @@ module Command = struct union ~tag_size:`Uint8 [ case (Tag 0) (mk_case "activate" - (obj3 + (obj2 (req "hash" Protocol_hash.encoding) - (req "validation_passes" uint8) (req "fitness" Fitness.encoding) )) (function - | Activate { protocol ; validation_passes ; fitness} -> - Some (protocol, validation_passes, fitness) + | Activate { protocol ; fitness} -> + Some (protocol, fitness) | _ -> None) - (fun (protocol, validation_passes, fitness) -> - Activate { protocol ; validation_passes ; fitness }) ; + (fun (protocol, fitness) -> + Activate { protocol ; fitness }) ; case (Tag 1) (mk_case "activate_testnet" - (obj3 + (obj2 (req "hash" Protocol_hash.encoding) - (req "validation_passes" uint8) (req "validity_time" int64))) (function - | Activate_testnet { protocol ; validation_passes ; delay } -> - Some (protocol, validation_passes, delay) + | Activate_testnet { protocol ; delay } -> + Some (protocol, delay) | _ -> None) - (fun (protocol, validation_passes, delay) -> - Activate_testnet { protocol ; validation_passes ; delay }) ; + (fun (protocol, delay) -> + Activate_testnet { protocol ; delay }) ; ] let signed_encoding = diff --git a/src/proto_genesis/lib_protocol/src/main.ml b/src/proto_genesis/lib_protocol/src/main.ml index 8c69789e1..f869c2bf9 100644 --- a/src/proto_genesis/lib_protocol/src/main.ml +++ b/src/proto_genesis/lib_protocol/src/main.ml @@ -33,10 +33,9 @@ let () = (fun () -> Invalid_signature) type operation = unit -let max_operation_data_length = 0 let parse_operation _h _op = Error [] let compare_operations _ _ = 0 -let max_number_of_operations = 0 +let validation_passes = [] type block = { shell: Block_header.shell_header ; @@ -48,7 +47,6 @@ let max_block_length = Data_encoding.Binary.length Data.Command.encoding (Activate_testnet { protocol = Protocol_hash.hash_bytes [] ; - validation_passes = 0 ; delay = 0L }) + begin @@ -83,24 +81,20 @@ let precheck_block let prepare_application ctxt command timestamp fitness = match command with - | Data.Command.Activate { protocol = hash ; validation_passes ; fitness } -> + | Data.Command.Activate { protocol = hash ; fitness } -> let message = Some (Format.asprintf "activate %a" Protocol_hash.pp_short hash) in Updater.activate ctxt hash >>= fun ctxt -> return { Updater.message ; context = ctxt ; fitness ; max_operations_ttl = 0 ; - max_number_of_operations = - Array.to_list (Array.make validation_passes 0) ; max_operation_data_length = 0 } - | Activate_testnet { protocol = hash ; validation_passes ; delay } -> + | Activate_testnet { protocol = hash ; delay } -> let message = Some (Format.asprintf "activate testnet %a" Protocol_hash.pp_short hash) in let expiration = Time.add timestamp delay in Updater.fork_test_network ctxt ~protocol:hash ~expiration >>= fun ctxt -> return { Updater.message ; context = ctxt ; fitness ; max_operations_ttl = 0 ; - max_number_of_operations = - Array.to_list (Array.make validation_passes 0) ; max_operation_data_length = 0 } @@ -129,7 +123,6 @@ let begin_construction return { Updater.message = None ; context = ctxt ; fitness ; max_operations_ttl = 0 ; max_operation_data_length = 0 ; - max_number_of_operations = [] ; } | Some command -> match Data_encoding.Binary.of_bytes Data.Command.encoding command with diff --git a/src/proto_genesis/lib_protocol/src/main.mli b/src/proto_genesis/lib_protocol/src/main.mli new file mode 100644 index 000000000..4a1654398 --- /dev/null +++ b/src/proto_genesis/lib_protocol/src/main.mli @@ -0,0 +1,12 @@ +(**************************************************************************) +(* *) +(* Copyright (c) 2014 - 2017. *) +(* Dynamic Ledger Solutions, Inc. *) +(* *) +(* All rights reserved. No warranty, explicit or implicit, provided. *) +(* *) +(**************************************************************************) + +(** Tezos Protocol Implementation - Protocol Signature Instance *) + +include Updater.PROTOCOL diff --git a/test/proto_alpha/proto_alpha_helpers.ml b/test/proto_alpha/proto_alpha_helpers.ml index 42202d7e0..59f91d351 100644 --- a/test/proto_alpha/proto_alpha_helpers.ml +++ b/test/proto_alpha/proto_alpha_helpers.ml @@ -41,7 +41,7 @@ let activate_alpha () = ~location:"edsk31vznjHSSpGExDMHYASz45VZqXN4DPxvsa4hAyY8dHM28cZzp6" in Tezos_client_genesis.Client_proto_main.bake (new Client_rpcs.http_ctxt !rpc_config) (`Head 0) - (Activate { protocol = Client_proto_main.protocol ; validation_passes = 1 ; + (Activate { protocol = Client_proto_main.protocol ; fitness }) dictator_sk diff --git a/test/proto_alpha_isolate_helpers/helpers_init.ml b/test/proto_alpha_isolate_helpers/helpers_init.ml index cdec77ad5..986d6d094 100644 --- a/test/proto_alpha_isolate_helpers/helpers_init.ml +++ b/test/proto_alpha_isolate_helpers/helpers_init.ml @@ -56,7 +56,7 @@ let get_activation_block baker context_hash head = let fitness = Tezos_embedded_raw_protocol_alpha.Fitness_repr.from_int64 100L in let command: Data.Command.t = - Data.Command.Activate({protocol = Helpers_constants.alpha_hash ; validation_passes = 0 ; fitness}) in + Data.Command.Activate({protocol = Helpers_constants.alpha_hash ; fitness}) in let content_bytes = Data.Command.forge shell_header command in let signature = Ed25519.sign baker.ppk content_bytes in let proto = (command , signature) in diff --git a/test/shell/test_store.ml b/test/shell/test_store.ml index c53e0b7d5..cbd07a97a 100644 --- a/test/shell/test_store.ml +++ b/test/shell/test_store.ml @@ -90,7 +90,6 @@ let lolblock ?(operations = []) header = max_operations_ttl = 0 ; message = None ; context = Context_hash.zero ; - max_number_of_operations = [] ; max_operation_data_length = 0 ; } diff --git a/test/test_utils.sh b/test/test_utils.sh index 6cd02ecf3..472aae619 100755 --- a/test/test_utils.sh +++ b/test/test_utils.sh @@ -80,7 +80,6 @@ activate_alpha() { activate \ protocol ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK \ with fitness 1 \ - and passes 1 \ and key edsk31vznjHSSpGExDMHYASz45VZqXN4DPxvsa4hAyY8dHM28cZzp6 \ > /dev/stderr }