diff --git a/src/bin_client/main_client.ml b/src/bin_client/main_client.ml index d0062e854..828b8f63d 100644 --- a/src/bin_client/main_client.ml +++ b/src/bin_client/main_client.ml @@ -10,8 +10,8 @@ open Client_config let get_commands_for_version ctxt block protocol = - Shell_services.Blocks.Metadata.next_protocol_hash ctxt ~block () >>= function - | Ok version -> begin + Shell_services.Blocks.protocols ctxt ~block () >>= function + | Ok { next_protocol = version } -> begin match protocol with | None -> return (Some version, Client_commands.commands_for_version version) diff --git a/src/bin_client/test/test_injection.sh b/src/bin_client/test/test_injection.sh index 6e97a7070..31dc853d1 100755 --- a/src/bin_client/test/test_injection.sh +++ b/src/bin_client/test/test_injection.sh @@ -19,9 +19,9 @@ protocol_version="PsgZ1PB2h82sTKznNbmZxtbsU432eKDv1W6cf1cJFhCFmGYSiJs" $admin_client inject protocol "$test_dir/demo" $admin_client list protocols $client activate protocol $protocol_version with fitness 1 and key dictator and parameters $parameters_file -answ=$($client -p ProtoALphaALph rpc get /chains/main/blocks/head/metadata/next_protocol_hash 2>/dev/null) +answ=$($client -p ProtoALphaALph rpc get /chains/main/blocks/head/metadata 2>/dev/null) -if ! grep "$protocol_version" <<< $answ ; then +if ! grep "\"next_protocol\": \"$protocol_version\"" <<< $answ ; then exit 1 fi diff --git a/src/bin_client/test/test_multinode.sh b/src/bin_client/test/test_multinode.sh index 282ca1943..6e48e9d42 100755 --- a/src/bin_client/test/test_multinode.sh +++ b/src/bin_client/test/test_multinode.sh @@ -40,8 +40,8 @@ assert_propagation_level() { level=$1 printf "\n\nAsserting all nodes have reached level %s\n" "$level" for client in "${client_instances[@]}"; do - ( $client rpc get /chains/main/blocks/head/header/shell/level \ - | assert_in_output "$level" ) \ + ( $client rpc get /chains/main/blocks/head/header/shell \ + | assert_in_output "\"level\": $level" ) \ || exit 2 done } @@ -51,7 +51,7 @@ assert_protocol() { proto=$1 printf "\n\nAsserting protocol propagation\n" for client in "${client_instances[@]}"; do - ( $client rpc get /chains/main/blocks/head/metadata/next_protocol_hash | assert_in_output "$proto" ) \ + ( $client rpc get /chains/main/blocks/head/metadata | assert_in_output "\"next_protocol\": \"$proto\"" ) \ || exit 2 done } diff --git a/src/lib_client_base/client_confirmations.ml b/src/lib_client_base/client_confirmations.ml index ed0134bad..a6c32a9f8 100644 --- a/src/lib_client_base/client_confirmations.ml +++ b/src/lib_client_base/client_confirmations.ml @@ -27,8 +27,8 @@ let wait_for_operation_inclusion let fetch_predecessors block = let rec loop acc block = - Block_services.Empty.Header.Shell.predecessor - ctxt ~chain ~block:(`Hash (block, 0)) () >>=? fun predecessor -> + Block_services.Empty.Header.shell_header + ctxt ~chain ~block:(`Hash (block, 0)) () >>=? fun { predecessor } -> if Block_hash.Table.mem blocks predecessor then return acc else @@ -48,8 +48,8 @@ let wait_for_operation_inclusion let process block = Shell_services.Blocks.hash ctxt ~chain ~block () >>=? fun hash -> - Shell_services.Blocks.Header.Shell.predecessor - ctxt ~chain ~block () >>=? fun predecessor -> + Shell_services.Blocks.Header.shell_header + ctxt ~chain ~block () >>=? fun { predecessor } -> match Block_hash.Table.find blocks predecessor with | Some (block_with_op, n) -> ctxt#answer diff --git a/src/lib_shell/block_directory.ml b/src/lib_shell/block_directory.ml index e069c646d..6009c3df0 100644 --- a/src/lib_shell/block_directory.ml +++ b/src/lib_shell/block_directory.ml @@ -56,7 +56,7 @@ let build_raw_rpc_directory (* block header *) - register0 S.Header.header begin fun block () () -> + register0 S.header begin fun block () () -> let chain_id = State.Block.chain_id block in let hash = State.Block.hash block in let header = State.Block.header block in @@ -70,30 +70,6 @@ let build_raw_rpc_directory register0 S.Header.shell_header begin fun block () () -> return (State.Block.header block).shell end ; - register0 S.Header.Shell.level begin fun block () () -> - return (State.Block.header block).shell.level - end ; - register0 S.Header.Shell.protocol_level begin fun block () () -> - return (State.Block.header block).shell.proto_level - end ; - register0 S.Header.Shell.predecessor begin fun block () () -> - return (State.Block.header block).shell.predecessor - end ; - register0 S.Header.Shell.timestamp begin fun block () () -> - return (State.Block.header block).shell.timestamp - end ; - register0 S.Header.Shell.validation_passes begin fun block () () -> - return (State.Block.header block).shell.validation_passes - end ; - register0 S.Header.Shell.operations_hash begin fun block () () -> - return (State.Block.header block).shell.operations_hash - end ; - register0 S.Header.Shell.fitness begin fun block () () -> - return (State.Block.header block).shell.fitness - end ; - register0 S.Header.Shell.context_hash begin fun block () () -> - return (State.Block.header block).shell.context - end ; register0 S.Header.protocol_data begin fun block () () -> let header = State.Block.header block in return @@ -123,40 +99,9 @@ let build_raw_rpc_directory Next_proto.validation_passes ; } in - register0 S.Metadata.metadata begin fun block () () -> + register0 S.metadata begin fun block () () -> metadata block end ; - register0 S.Metadata.protocol_data begin fun block () () -> - return - (Data_encoding.Binary.of_bytes_exn - Proto.block_header_metadata_encoding - (State.Block.metadata block)) - end ; - register0 S.Metadata.protocol_hash begin fun _block () () -> - return Proto.hash - end ; - register0 S.Metadata.next_protocol_hash begin fun _block () () -> - return Next_proto.hash - end ; - register0 S.Metadata.test_chain_status begin fun block () () -> - State.Block.test_chain block >>= return - end ; - register0 S.Metadata.max_operations_ttl begin fun block () () -> - return (State.Block.max_operations_ttl block) - end ; - register0 S.Metadata.max_operation_data_length begin fun block () () -> - return (State.Block.max_operation_data_length block) - end ; - register0 S.Metadata.max_block_header_length begin fun _block () () -> - return (Next_proto.max_block_length) ; - end ; - register0 S.Metadata.operation_list_quota begin fun _block () () -> - return - (List.map - (fun { Tezos_protocol_environment_shell.max_size; max_op } -> - { Tezos_shell_services.Block_services.max_size ; max_op } ) - Next_proto.validation_passes) - end ; (* operations *) diff --git a/src/lib_shell_services/block_services.ml b/src/lib_shell_services/block_services.ml index f60f43ca7..72cdcdca8 100644 --- a/src/lib_shell_services/block_services.ml +++ b/src/lib_shell_services/block_services.ml @@ -158,6 +158,24 @@ module type PROTO = sig (operation_data * operation_receipt) Data_encoding.t end + +type protocols = { + current_protocol: Protocol_hash.t ; + next_protocol: Protocol_hash.t ; +} + +let raw_protocol_encoding = + conv + (fun { current_protocol ; next_protocol } -> + ((current_protocol, next_protocol), ())) + (fun ((current_protocol, next_protocol), ()) -> + { current_protocol ; next_protocol }) + (merge_objs + (obj2 + (req "protocol" Protocol_hash.encoding) + (req "next_protocol" Protocol_hash.encoding)) + unit) + module Make(Proto : PROTO)(Next_proto : PROTO) = struct let protocol_hash = Protocol_hash.to_b58check Proto.hash @@ -310,17 +328,32 @@ module Make(Proto : PROTO)(Next_proto : PROTO) = struct ~output: Block_hash.encoding RPC_path.(path / "hash") + let header = + RPC_service.get_service + ~description:"The whole block header." + ~query: RPC_query.empty + ~output: block_header_encoding + RPC_path.(path / "header") + + let metadata = + RPC_service.get_service + ~description:"All the metadata associated to the block." + ~query: RPC_query.empty + ~output: block_metadata_encoding + RPC_path.(path / "metadata") + + let protocols = + (* same endpoint than 'metadata' *) + RPC_service.get_service + ~description:".. unexported ..." + ~query: RPC_query.empty + ~output: raw_protocol_encoding + RPC_path.(path / "metadata") + module Header = struct let path = RPC_path.(path / "header") - let header = - RPC_service.get_service - ~description:"The whole block header." - ~query: RPC_query.empty - ~output: block_header_encoding - path - let shell_header = RPC_service.get_service ~description:"The shell-specific fragment of the block header." @@ -340,142 +373,6 @@ module Make(Proto : PROTO)(Next_proto : PROTO) = struct Proto.block_header_data_encoding)) RPC_path.(path / "protocol_data") - module Shell = struct - - let path = RPC_path.(path / "shell") - - let level = - RPC_service.get_service - ~description:"The block's level." - ~query: RPC_query.empty - ~output: int32 - RPC_path.(path / "level") - - let protocol_level = - RPC_service.get_service - ~description:"The block's protocol level (modulo 256)." - ~query: RPC_query.empty - ~output: uint8 - RPC_path.(path / "proto_level") - - let predecessor = - RPC_service.get_service - ~description:"The previous block's id." - ~query: RPC_query.empty - ~output: Block_hash.encoding - RPC_path.(path / "predecessor") - - let timestamp = - RPC_service.get_service - ~description:"The block's timestamp." - ~query: RPC_query.empty - ~output: Time.encoding - RPC_path.(path / "timestamp") - - let validation_passes = - RPC_service.get_service - ~description:"The number of validation passes for the block." - ~query: RPC_query.empty - ~output: uint8 - RPC_path.(path / "validation_passes") - - let operations_hash = - RPC_service.get_service - ~description:"The hash of merkle tree of the operations included in the block." - ~query: RPC_query.empty - ~output: Operation_list_list_hash.encoding - RPC_path.(path / "operations_hash") - - let fitness = - RPC_service.get_service - ~description:"The block's fitness." - ~query: RPC_query.empty - ~output: Fitness.encoding - RPC_path.(path / "fitness") - - let context_hash = - RPC_service.get_service - ~description:"The hash of the resulting validation context." - ~query: RPC_query.empty - ~output: Context_hash.encoding - RPC_path.(path / "context_hash") - - end - - end - - module Metadata = struct - - let path = RPC_path.(path / "metadata") - - let metadata = - RPC_service.get_service - ~description:"All the metadata associated to the block." - ~query: RPC_query.empty - ~output: block_metadata_encoding - path - - let protocol_data = - RPC_service.get_service - ~description:"The protocol-specific metadata associated to the block." - ~query: RPC_query.empty - ~output: - (conv - (fun h -> ((), h)) (fun ((), h) -> h) - (merge_objs - (obj1 (req "protocol" (constant protocol_hash))) - Proto.block_header_metadata_encoding)) - RPC_path.(path / "protocol_data") - - let protocol_hash = - RPC_service.get_service - ~description:"The protocol used to bake this block." - ~query: RPC_query.empty - ~output: Protocol_hash.encoding - RPC_path.(path / "protocol_hash") - - let next_protocol_hash = - RPC_service.get_service - ~description:"The protocol required to bake the next block." - ~query: RPC_query.empty - ~output: Protocol_hash.encoding - RPC_path.(path / "next_protocol_hash") - - let test_chain_status = - RPC_service.get_service - ~description:"The status of the associated test chain." - ~query: RPC_query.empty - ~output: Test_chain_status.encoding - RPC_path.(path / "test_chain_status") - - let max_operations_ttl = - RPC_service.get_service - ~description:"... FIXME ..." - ~query: RPC_query.empty - ~output: int31 - RPC_path.(path / "max_operations_ttl") - - let max_operation_data_length = - RPC_service.get_service - ~description:"... FIXME ..." - ~query: RPC_query.empty - ~output: int31 - RPC_path.(path / "max_operation_data_length") - - let max_block_header_length = - RPC_service.get_service - ~description:"... FIXME ..." - ~query: RPC_query.empty - ~output: int31 - RPC_path.(path / "max_block_header_length") - - let operation_list_quota = - RPC_service.get_service - ~description:"... FIXME ..." - ~query: RPC_query.empty - ~output: (list operation_list_quota_encoding) - RPC_path.(path / "operation_list_quota") - end module Operation = struct @@ -707,14 +604,25 @@ module Make(Proto : PROTO)(Next_proto : PROTO) = struct | `Hash (h, 0) -> return h | _ -> f chain block () () + let header ctxt = + let f = make_call0 S.header ctxt in + fun ?(chain = `Main) ?(block = `Head 0) () -> + f chain block () () + + let metadata ctxt = + let f = make_call0 S.metadata ctxt in + fun ?(chain = `Main) ?(block = `Head 0) () -> + f chain block () () + + let protocols ctxt = + let f = make_call0 S.protocols ctxt in + fun ?(chain = `Main) ?(block = `Head 0) () -> + f chain block () () + module Header = struct module S = S.Header - let header ctxt = - let f = make_call0 S.header ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () let shell_header ctxt = let f = make_call0 S.shell_header ctxt in fun ?(chain = `Main) ?(block = `Head 0) () -> @@ -724,103 +632,6 @@ module Make(Proto : PROTO)(Next_proto : PROTO) = struct fun ?(chain = `Main) ?(block = `Head 0) () -> f chain block () () - module Shell = struct - - module S = S.Shell - - let level ctxt = - let f = make_call0 S.level ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let protocol_level ctxt = - let f = make_call0 S.protocol_level ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let predecessor ctxt = - let f = make_call0 S.predecessor ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let timestamp ctxt = - let f = make_call0 S.timestamp ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let validation_passes ctxt = - let f = make_call0 S.validation_passes ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let operations_hash ctxt = - let f = make_call0 S.operations_hash ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let fitness ctxt = - let f = make_call0 S.fitness ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let context_hash ctxt = - let f = make_call0 S.context_hash ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - end - - end - - module Metadata = struct - - module S = S.Metadata - - let metadata ctxt = - let f = make_call0 S.metadata ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let protocol_data ctxt = - let f = make_call0 S.protocol_data ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let protocol_hash ctxt = - let f = make_call0 S.protocol_hash ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let next_protocol_hash ctxt = - let f = make_call0 S.next_protocol_hash ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let test_chain_status ctxt = - let f = make_call0 S.test_chain_status ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let max_operations_ttl ctxt = - let f = make_call0 S.max_operations_ttl ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let max_operation_data_length ctxt = - let f = make_call0 S.max_operation_data_length ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let max_block_header_length ctxt = - let f = make_call0 S.max_block_header_length ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - - let max_operation_list_length ctxt = - let f = make_call0 S.operation_list_quota ctxt in - fun ?(chain = `Main) ?(block = `Head 0) () -> - f chain block () () - end module Operation = struct @@ -961,3 +772,5 @@ let () = | Json_schema.Duplicate_definition _ ) as exn -> Some (Format.asprintf "%a" (fun ppf -> Json_schema.print_error ppf) exn) | _ -> None) + +let protocols = Empty.protocols diff --git a/src/lib_shell_services/block_services.mli b/src/lib_shell_services/block_services.mli index 25399be73..38dab6164 100644 --- a/src/lib_shell_services/block_services.mli +++ b/src/lib_shell_services/block_services.mli @@ -120,11 +120,16 @@ module Make(Proto : PROTO)(Next_proto : PROTO) : sig #simple -> ?chain:chain -> ?block:block -> unit -> Block_hash.t tzresult Lwt.t + val header: + #simple -> ?chain:chain -> ?block:block -> + unit -> block_header tzresult Lwt.t + + val metadata: + #simple -> ?chain:chain -> ?block:block -> + unit -> block_metadata tzresult Lwt.t + module Header : sig - val header: - #simple -> ?chain:chain -> ?block:block -> - unit -> block_header tzresult Lwt.t val shell_header: #simple -> ?chain:chain -> ?block:block -> unit -> Block_header.shell_header tzresult Lwt.t @@ -132,67 +137,6 @@ module Make(Proto : PROTO)(Next_proto : PROTO) : sig #simple -> ?chain:chain -> ?block:block -> unit -> Proto.block_header_data tzresult Lwt.t - module Shell : sig - - val level: - #simple -> ?chain:chain -> ?block:block -> - unit -> Int32.t tzresult Lwt.t - val protocol_level: - #simple -> ?chain:chain -> ?block:block -> - unit -> int tzresult Lwt.t - val predecessor: - #simple -> ?chain:chain -> ?block:block -> - unit -> Block_hash.t tzresult Lwt.t - val timestamp: - #simple -> ?chain:chain -> ?block:block -> - unit -> Time.t tzresult Lwt.t - val validation_passes: - #simple -> ?chain:chain -> ?block:block -> - unit -> int tzresult Lwt.t - val operations_hash: - #simple -> ?chain:chain -> ?block:block -> - unit -> Operation_list_list_hash.t tzresult Lwt.t - val fitness: - #simple -> ?chain:chain -> ?block:block -> - unit -> Fitness.t tzresult Lwt.t - val context_hash: - #simple -> ?chain:chain -> ?block:block -> - unit -> Context_hash.t tzresult Lwt.t - - end - - end - - module Metadata : sig - - val metadata: - #simple -> ?chain:chain -> ?block:block -> - unit -> block_metadata tzresult Lwt.t - val protocol_data: - #simple -> ?chain:chain -> ?block:block -> - unit -> Proto.block_header_metadata tzresult Lwt.t - val protocol_hash: - #simple -> ?chain:chain -> ?block:block -> - unit -> Protocol_hash.t tzresult Lwt.t - val next_protocol_hash: - #simple -> ?chain:chain -> ?block:block -> - unit -> Protocol_hash.t tzresult Lwt.t - val test_chain_status: - #simple -> ?chain:chain -> ?block:block -> - unit -> Test_chain_status.t tzresult Lwt.t - val max_operations_ttl: - #simple -> ?chain:chain -> ?block:block -> - unit -> int tzresult Lwt.t - val max_operation_data_length: - #simple -> ?chain:chain -> ?block:block -> - unit -> int tzresult Lwt.t - val max_block_header_length: - #simple -> ?chain:chain -> ?block:block -> - unit -> int tzresult Lwt.t - val max_operation_list_length: - #simple -> ?chain:chain -> ?block:block -> - unit -> operation_list_quota list tzresult Lwt.t - end module Operation : sig @@ -280,12 +224,17 @@ module Make(Proto : PROTO)(Next_proto : PROTO) : sig prefix, unit, unit, block_info) RPC_service.t - module Header : sig + val header: + ([ `GET ], prefix, + prefix, unit, unit, + block_header) RPC_service.t - val header: - ([ `GET ], prefix, - prefix, unit, unit, - block_header) RPC_service.t + val metadata: + ([ `GET ], prefix, + prefix, unit, unit, + block_metadata) RPC_service.t + + module Header : sig val shell_header: ([ `GET ], prefix, @@ -297,99 +246,6 @@ module Make(Proto : PROTO)(Next_proto : PROTO) : sig prefix, unit, unit, Proto.block_header_data) RPC_service.t - module Shell : sig - - val level: - ([ `GET ], prefix, - prefix, unit, unit, - Int32.t) RPC_service.t - - val protocol_level: - ([ `GET ], prefix, - prefix, unit, unit, - int) RPC_service.t - - val predecessor: - ([ `GET ], prefix, - prefix, unit, unit, - Block_hash.t) RPC_service.t - - val timestamp: - ([ `GET ], prefix, - prefix, unit, unit, - Time.t) RPC_service.t - - val validation_passes: - ([ `GET ], prefix, - prefix, unit, unit, - int) RPC_service.t - - val operations_hash: - ([ `GET ], prefix, - prefix, unit, unit, - Operation_list_list_hash.t) RPC_service.t - - val fitness: - ([ `GET ], prefix, - prefix, unit, unit, - Fitness.t) RPC_service.t - - val context_hash: - ([ `GET ], prefix, - prefix, unit, unit, - Context_hash.t) RPC_service.t - - end - - end - - module Metadata : sig - - val metadata: - ([ `GET ], prefix, - prefix, unit, unit, - block_metadata) RPC_service.t - - val protocol_data: - ([ `GET ], prefix, - prefix, unit, unit, - Proto.block_header_metadata) RPC_service.t - - val protocol_hash: - ([ `GET ], prefix, - prefix, unit, unit, - Protocol_hash.t) RPC_service.t - - val next_protocol_hash: - ([ `GET ], prefix, - prefix, unit, unit, - Protocol_hash.t) RPC_service.t - - val test_chain_status: - ([ `GET ], prefix, - prefix, unit, unit, - Test_chain_status.t) RPC_service.t - - val max_operations_ttl: - ([ `GET ], prefix, - prefix, unit, unit, - int) RPC_service.t - - val max_operation_data_length: - ([ `GET ], prefix, - prefix, unit, unit, - int) RPC_service.t - - val max_block_header_length: - ([ `GET ], prefix, - prefix, unit, unit, - int) RPC_service.t - - val operation_list_quota: - ([ `GET ], prefix, - prefix, unit, unit, - operation_list_quota list) RPC_service.t - end module Operation : sig @@ -482,3 +338,12 @@ end module Fake_protocol : PROTO module Empty : (module type of Make(Fake_protocol)(Fake_protocol)) + +type protocols = { + current_protocol: Protocol_hash.t ; + next_protocol: Protocol_hash.t ; +} + +val protocols: + #RPC_context.simple -> ?chain:chain -> ?block:block -> + unit -> protocols tzresult Lwt.t diff --git a/src/lib_shell_services/chain_services.ml b/src/lib_shell_services/chain_services.ml index 80731669b..9a3c3f32d 100644 --- a/src/lib_shell_services/chain_services.ml +++ b/src/lib_shell_services/chain_services.ml @@ -190,6 +190,13 @@ module Blocks = struct include Block_services.Empty + type protocols = Block_services.protocols = { + current_protocol: Protocol_hash.t ; + next_protocol: Protocol_hash.t ; + } + + let protocols = Block_services.protocols + end module Invalid_blocks = struct diff --git a/src/lib_shell_services/chain_services.mli b/src/lib_shell_services/chain_services.mli index c97fd16b4..dc6b7bdd9 100644 --- a/src/lib_shell_services/chain_services.mli +++ b/src/lib_shell_services/chain_services.mli @@ -56,6 +56,15 @@ module Blocks : sig include (module type of Block_services.Empty) + type protocols = { + current_protocol: Protocol_hash.t ; + next_protocol: Protocol_hash.t ; + } + + val protocols: + #RPC_context.simple -> ?chain:chain -> ?block:Block_services.block -> + unit -> protocols tzresult Lwt.t + end module Invalid_blocks : sig diff --git a/src/proto_alpha/lib_baking/client_baking_blocks.ml b/src/proto_alpha/lib_baking/client_baking_blocks.ml index a9531c826..18783cd81 100644 --- a/src/proto_alpha/lib_baking/client_baking_blocks.ml +++ b/src/proto_alpha/lib_baking/client_baking_blocks.ml @@ -25,11 +25,11 @@ let info cctxt ?(chain = `Main) block = Shell_services.Chain.chain_id cctxt ~chain () >>=? fun chain_id -> Shell_services.Blocks.hash cctxt ~chain ~block () >>=? fun hash -> Shell_services.Blocks.Header.shell_header cctxt ~chain ~block () >>=? fun header -> - Shell_services.Blocks.Metadata.next_protocol_hash - cctxt ~chain ~block () >>=? fun next_protocol -> - Shell_services.Blocks.Metadata.protocol_hash - cctxt ~chain ~block () >>=? fun protocol -> - Alpha_block_services.Metadata.protocol_data cctxt ~chain ~block () >>=? fun { level } -> + Shell_services.Blocks.protocols + cctxt ~chain ~block () >>=? fun { current_protocol = protocol ; + next_protocol } -> + Alpha_block_services.metadata cctxt + ~chain ~block () >>=? fun { protocol_data = { level } } -> let { Tezos_base.Block_header.predecessor ; fitness ; timestamp ; _ } = header in return { hash ; chain_id ; predecessor ; fitness ; timestamp ; protocol ; next_protocol ; level } @@ -50,8 +50,8 @@ let monitor_heads cctxt ?next_protocols chain = let blocks_from_current_cycle cctxt ?(chain = `Main) block ?(offset = 0l) () = Shell_services.Blocks.hash cctxt ~chain ~block () >>=? fun hash -> - Alpha_block_services.Metadata.protocol_data - cctxt ~chain ~block () >>=? fun { level } -> + Alpha_block_services.metadata + cctxt ~chain ~block () >>=? fun { protocol_data = { level } } -> Alpha_services.Helpers.levels_in_current_cycle cctxt ~offset (chain, block) >>=? fun (first, last) -> let length = Int32.to_int (Raw_level.diff level.level first) in diff --git a/src/proto_alpha/lib_baking/client_baking_endorsement.ml b/src/proto_alpha/lib_baking/client_baking_endorsement.ml index e7b5fff6e..370c1ab87 100644 --- a/src/proto_alpha/lib_baking/client_baking_endorsement.ml +++ b/src/proto_alpha/lib_baking/client_baking_endorsement.ml @@ -130,8 +130,8 @@ let forge_endorsement (cctxt : #Proto_alpha.full) ?(chain = `Main) block ~src_sk ?slots src_pk = let src_pkh = Signature.Public_key.hash src_pk in - Alpha_block_services.Metadata.protocol_data - cctxt ~chain ~block () >>=? fun { level = { level } } -> + Alpha_block_services.metadata cctxt + ~chain ~block () >>=? fun { protocol_data = { level = { level } } } -> begin match slots with | Some slots -> return slots diff --git a/src/proto_alpha/lib_baking/client_baking_forge.ml b/src/proto_alpha/lib_baking/client_baking_forge.ml index fdbf62412..c99d7807c 100644 --- a/src/proto_alpha/lib_baking/client_baking_forge.ml +++ b/src/proto_alpha/lib_baking/client_baking_forge.ml @@ -410,8 +410,8 @@ let get_unrevealed_nonces Client_baking_nonces.find cctxt hash >>=? function | None -> return None | Some nonce -> - Alpha_block_services.Metadata.protocol_data - cctxt ~chain ~block:(`Hash (hash, 0)) () >>=? fun { level } -> + Alpha_block_services.metadata + cctxt ~chain ~block:(`Hash (hash, 0)) () >>=? fun { protocol_data = { level } } -> if force then return (Some (hash, (level.level, nonce))) else diff --git a/src/proto_alpha/lib_baking/test/proto_alpha_helpers.ml b/src/proto_alpha/lib_baking/test/proto_alpha_helpers.ml index 8fe8f2b18..7d65e28fa 100644 --- a/src/proto_alpha/lib_baking/test/proto_alpha_helpers.ml +++ b/src/proto_alpha/lib_baking/test/proto_alpha_helpers.ml @@ -147,8 +147,8 @@ let init ?exe ?vote ?rpc_port () = return (pid, hash) let level (chain, block) = - Alpha_block_services.Metadata.protocol_data - !rpc_ctxt ~chain ~block () >>=? fun { level } -> + Alpha_block_services.metadata + !rpc_ctxt ~chain ~block () >>=? fun { protocol_data = { level } } -> return level let rpc_raw_context block path depth = @@ -336,8 +336,8 @@ module Protocol = struct open Account let voting_period_kind ?(block = `Head 0) () = - Alpha_block_services.Metadata.protocol_data - !rpc_ctxt ~chain:`Main ~block () >>=? fun { voting_period_kind } -> + Alpha_block_services.metadata + !rpc_ctxt ~chain:`Main ~block () >>=? fun { protocol_data = { voting_period_kind } } -> return voting_period_kind let proposals ?(block = `Head 0) ~src:({ pkh; sk } : Account.t) proposals = @@ -488,17 +488,17 @@ module Assert = struct end let check_protocol ?msg ~block h = - Alpha_block_services.Metadata.next_protocol_hash - !rpc_ctxt ~block () >>=? fun block_proto -> + Block_services.protocols + !rpc_ctxt ~block () >>=? fun { next_protocol } -> return @@ equal ?msg ~prn:Protocol_hash.to_b58check ~eq:Protocol_hash.equal - block_proto h + next_protocol h let check_voting_period_kind ?msg ~block kind = - Alpha_block_services.Metadata.protocol_data - !rpc_ctxt ~chain:`Main ~block () >>=? fun { voting_period_kind } -> + Alpha_block_services.metadata + !rpc_ctxt ~chain:`Main ~block () >>=? fun { protocol_data = { voting_period_kind } } -> return @@ equal ?msg voting_period_kind @@ -550,8 +550,8 @@ module Endorse = struct src_sk slot = Shell_services.Blocks.hash !rpc_ctxt ~block () >>=? fun hash -> - Alpha_block_services.Metadata.protocol_data - !rpc_ctxt ~chain:`Main ~block () >>=? fun { level } -> + Alpha_block_services.metadata + !rpc_ctxt ~chain:`Main ~block () >>=? fun { protocol_data = { level } } -> let level = level.level in let shell = { Tezos_base.Operation.branch = hash } in let contents = @@ -572,8 +572,8 @@ module Endorse = struct ?slot (contract : Account.t) block = - Alpha_block_services.Metadata.protocol_data - !rpc_ctxt ~chain:`Main ~block () >>=? fun { level } -> + Alpha_block_services.metadata + !rpc_ctxt ~chain:`Main ~block () >>=? fun { protocol_data = { level } } -> let level = level.level in begin match slot with @@ -601,8 +601,8 @@ module Endorse = struct | _ -> () in let { Account.b1 ; b2 ; b3 ; b4 ; b5 } = Account.bootstrap_accounts in let result = Array.make 32 b1 in - Alpha_block_services.Metadata.protocol_data - !rpc_ctxt ~chain:`Main ~block () >>=? fun { level } -> + Alpha_block_services.metadata + !rpc_ctxt ~chain:`Main ~block () >>=? fun { protocol_data = { level } } -> let level = level.level in get_endorser_list result b1 level block >>=? fun () -> get_endorser_list result b2 level block >>=? fun () -> @@ -613,8 +613,8 @@ module Endorse = struct let endorsement_rights (contract : Account.t) block = - Alpha_block_services.Metadata.protocol_data - !rpc_ctxt ~chain:`Main ~block () >>=? fun { level } -> + Alpha_block_services.metadata + !rpc_ctxt ~chain:`Main ~block () >>=? fun { protocol_data = { level } } -> let level = level.level in let delegate = contract.pkh in Alpha_services.Delegate.Endorsing_rights.get @@ -628,8 +628,8 @@ module Endorse = struct end let display_level block = - Alpha_block_services.Metadata.protocol_data - !rpc_ctxt ~chain:`Main ~block () >>=? fun { level } -> + Alpha_block_services.metadata + !rpc_ctxt ~chain:`Main ~block () >>=? fun { protocol_data = { level } } -> Format.eprintf "Level: %a@." Level.pp_full level ; return () diff --git a/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml b/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml index 2d742b253..0b88aa7da 100644 --- a/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml +++ b/src/proto_alpha/lib_client_commands/client_proto_context_commands.ml @@ -56,8 +56,8 @@ let commands () = (switch ~doc:"output time in seconds" ~short:'s' ~long:"seconds" ())) (fixed [ "get" ; "timestamp" ]) begin fun seconds (cctxt : Proto_alpha.full) -> - Shell_services.Blocks.Header.Shell.timestamp - cctxt ~block:cctxt#block () >>=? fun v -> + Shell_services.Blocks.Header.shell_header + cctxt ~block:cctxt#block () >>=? fun { timestamp = v } -> begin if seconds then cctxt#message "%Ld" (Time.to_seconds v)