swh:1:snp:505c374fd75bb208ae4e9a54e64bb310bc49295e
Tip revision: 13067b9557fb1d00d0f4f689248a1a37c891665d authored by vbot on 19 June 2020, 10:16:37 UTC
Validation: dismiss operations with unserializable metadata
Validation: dismiss operations with unserializable metadata
Tip revision: 13067b9
block_services.mli
(*****************************************************************************)
(* *)
(* Open Source License *)
(* Copyright (c) 2018 Dynamic Ledger Solutions, Inc. <contact@tezos.com> *)
(* *)
(* Permission is hereby granted, free of charge, to any person obtaining a *)
(* copy of this software and associated documentation files (the "Software"),*)
(* to deal in the Software without restriction, including without limitation *)
(* the 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. *)
(* *)
(* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR*)
(* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *)
(* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *)
(* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER*)
(* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *)
(* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *)
(* DEALINGS IN THE SOFTWARE. *)
(* *)
(*****************************************************************************)
type chain = [`Main | `Test | `Hash of Chain_id.t]
type chain_prefix = unit * chain
val chain_path : (unit, chain_prefix) RPC_path.t
val parse_chain : string -> (chain, string) result
val chain_to_string : chain -> string
val chain_arg : chain RPC_arg.t
type block =
[ `Genesis
| `Head of int
| `Alias of [`Caboose | `Checkpoint | `Save_point] * int
| `Hash of Block_hash.t * int
| `Level of Int32.t ]
val parse_block : string -> (block, string) result
val to_string : block -> string
type prefix = (unit * chain) * block
val dir_path : (chain_prefix, chain_prefix) RPC_path.t
val path : (chain_prefix, chain_prefix * block) RPC_path.t
val mempool_path : ('a, 'b) RPC_path.t -> ('a, 'b) RPC_path.t
val live_blocks_path : ('a, 'b) RPC_path.t -> ('a, 'b) RPC_path.t
type operation_list_quota = {max_size : int; max_op : int option}
type raw_context = Key of Bytes.t | Dir of (string * raw_context) list | Cut
val pp_raw_context : Format.formatter -> raw_context -> unit
type error += Invalid_depth_arg of int
module type PROTO = sig
val hash : Protocol_hash.t
type block_header_data
val block_header_data_encoding : block_header_data Data_encoding.t
type block_header_metadata
val block_header_metadata_encoding : block_header_metadata Data_encoding.t
type operation_data
type operation_receipt
type operation = {
shell : Operation.shell_header;
protocol_data : operation_data;
}
val operation_data_encoding : operation_data Data_encoding.t
val operation_receipt_encoding : operation_receipt Data_encoding.t
val operation_data_and_receipt_encoding :
(operation_data * operation_receipt) Data_encoding.t
end
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
module Make (Proto : PROTO) (Next_proto : PROTO) : sig
val path : (unit, chain_prefix * block) RPC_path.t
type raw_block_header = {
shell : Block_header.shell_header;
protocol_data : Proto.block_header_data;
}
type block_header = {
chain_id : Chain_id.t;
hash : Block_hash.t;
shell : Block_header.shell_header;
protocol_data : Proto.block_header_data;
}
type block_metadata = {
protocol_data : Proto.block_header_metadata;
test_chain_status : Test_chain_status.t;
max_operations_ttl : int;
max_operation_data_length : int;
max_block_header_length : int;
operation_list_quota : operation_list_quota list;
}
type operation = {
chain_id : Chain_id.t;
hash : Operation_hash.t;
shell : Operation.shell_header;
protocol_data : Proto.operation_data;
receipt : Proto.operation_receipt;
}
type block_info = {
chain_id : Chain_id.t;
hash : Block_hash.t;
header : raw_block_header;
metadata : block_metadata;
operations : operation list list;
}
open RPC_context
val info :
#simple ->
?chain:chain ->
?block:block ->
unit ->
block_info tzresult Lwt.t
val hash :
#simple ->
?chain:chain ->
?block:block ->
unit ->
Block_hash.t tzresult Lwt.t
val raw_header :
#simple -> ?chain:chain -> ?block:block -> unit -> Bytes.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 shell_header :
#simple ->
?chain:chain ->
?block:block ->
unit ->
Block_header.shell_header tzresult Lwt.t
val protocol_data :
#simple ->
?chain:chain ->
?block:block ->
unit ->
Proto.block_header_data tzresult Lwt.t
val raw_protocol_data :
#simple -> ?chain:chain -> ?block:block -> unit -> Bytes.t tzresult Lwt.t
end
module Operations : sig
val operations :
#simple ->
?chain:chain ->
?block:block ->
unit ->
operation list list tzresult Lwt.t
val operations_in_pass :
#simple ->
?chain:chain ->
?block:block ->
int ->
operation list tzresult Lwt.t
val operation :
#simple ->
?chain:chain ->
?block:block ->
int ->
int ->
operation tzresult Lwt.t
end
module Operation_hashes : sig
val operation_hashes :
#simple ->
?chain:chain ->
?block:block ->
unit ->
Operation_hash.t list list tzresult Lwt.t
val operation_hashes_in_pass :
#simple ->
?chain:chain ->
?block:block ->
int ->
Operation_hash.t list tzresult Lwt.t
val operation_hash :
#simple ->
?chain:chain ->
?block:block ->
int ->
int ->
Operation_hash.t tzresult Lwt.t
end
module Context : sig
val read :
#simple ->
?chain:chain ->
?block:block ->
?depth:int ->
string list ->
raw_context tzresult Lwt.t
end
module Helpers : sig
module Forge : sig
val block_header :
#RPC_context.simple ->
?chain:chain ->
?block:block ->
Block_header.t ->
Bytes.t tzresult Lwt.t
end
module Preapply : sig
val block :
#simple ->
?chain:chain ->
?block:block ->
?sort:bool ->
?timestamp:Time.Protocol.t ->
protocol_data:Next_proto.block_header_data ->
Next_proto.operation list list ->
(Block_header.shell_header * error Preapply_result.t list) tzresult
Lwt.t
val operations :
#simple ->
?chain:chain ->
?block:block ->
Next_proto.operation list ->
(Next_proto.operation_data * Next_proto.operation_receipt) list
tzresult
Lwt.t
end
val complete :
#simple ->
?chain:chain ->
?block:block ->
string ->
string list tzresult Lwt.t
end
module Mempool : sig
type t = {
applied : (Operation_hash.t * Next_proto.operation) list;
refused : (Next_proto.operation * error list) Operation_hash.Map.t;
branch_refused :
(Next_proto.operation * error list) Operation_hash.Map.t;
branch_delayed :
(Next_proto.operation * error list) Operation_hash.Map.t;
unprocessed : Next_proto.operation Operation_hash.Map.t;
}
val pending_operations :
#simple -> ?chain:chain -> unit -> t tzresult Lwt.t
val monitor_operations :
#streamed ->
?chain:chain ->
?applied:bool ->
?branch_delayed:bool ->
?branch_refused:bool ->
?refused:bool ->
unit ->
(Next_proto.operation list Lwt_stream.t * stopper) tzresult Lwt.t
val request_operations :
#simple -> ?chain:chain -> unit -> unit tzresult Lwt.t
end
val live_blocks :
#simple ->
?chain:chain ->
?block:block ->
unit ->
Block_hash.Set.t tzresult Lwt.t
module S : sig
val hash : ([`GET], prefix, prefix, unit, unit, Block_hash.t) RPC_service.t
val info : ([`GET], prefix, prefix, unit, unit, block_info) RPC_service.t
val header :
([`GET], prefix, prefix, unit, unit, block_header) RPC_service.t
val raw_header :
([`GET], prefix, prefix, unit, unit, Bytes.t) RPC_service.t
val metadata :
([`GET], prefix, prefix, unit, unit, block_metadata) RPC_service.t
val protocols :
([`GET], prefix, prefix, unit, unit, protocols) RPC_service.t
module Header : sig
val shell_header :
( [`GET],
prefix,
prefix,
unit,
unit,
Block_header.shell_header )
RPC_service.t
val protocol_data :
( [`GET],
prefix,
prefix,
unit,
unit,
Proto.block_header_data )
RPC_service.t
val raw_protocol_data :
([`GET], prefix, prefix, unit, unit, Bytes.t) RPC_service.t
end
module Operations : sig
val operations :
([`GET], prefix, prefix, unit, unit, operation list list) RPC_service.t
val operations_in_pass :
( [`GET],
prefix,
prefix * int,
unit,
unit,
operation list )
RPC_service.t
val operation :
( [`GET],
prefix,
(prefix * int) * int,
unit,
unit,
operation )
RPC_service.t
end
module Operation_hashes : sig
val operation_hashes :
( [`GET],
prefix,
prefix,
unit,
unit,
Tezos_crypto.Operation_hash.t list list )
RPC_service.t
val operation_hashes_in_pass :
( [`GET],
prefix,
prefix * int,
unit,
unit,
Tezos_crypto.Operation_hash.t list )
RPC_service.t
val operation_hash :
( [`GET],
prefix,
(prefix * int) * int,
unit,
unit,
Tezos_crypto.Operation_hash.t )
RPC_service.t
end
module Context : sig
val read :
( [`GET],
prefix,
prefix * string list,
< depth : int option >,
unit,
raw_context )
RPC_service.t
end
module Helpers : sig
module Forge : sig
val block_header :
( [`POST],
prefix,
prefix,
unit,
Block_header.t,
Bytes.t )
RPC_service.service
end
module Preapply : sig
type block_param = {
protocol_data : Next_proto.block_header_data;
operations : Next_proto.operation list list;
}
val block :
( [`POST],
prefix,
prefix,
< sort_operations : bool ; timestamp : Time.Protocol.t option >,
block_param,
Block_header.shell_header * error Preapply_result.t list )
RPC_service.t
val operations :
( [`POST],
prefix,
prefix,
unit,
Next_proto.operation list,
(Next_proto.operation_data * Next_proto.operation_receipt) list )
RPC_service.t
end
val complete :
( [`GET],
prefix,
prefix * string,
unit,
unit,
string list )
RPC_service.t
end
module Mempool : sig
val encoding : Mempool.t Data_encoding.t
val pending_operations :
('a, 'b) RPC_path.t ->
([`GET], 'a, 'b, unit, unit, Mempool.t) RPC_service.t
val monitor_operations :
('a, 'b) RPC_path.t ->
( [`GET],
'a,
'b,
< applied : bool
; branch_delayed : bool
; branch_refused : bool
; refused : bool >,
unit,
Next_proto.operation list )
RPC_service.t
val get_filter :
('a, 'b) RPC_path.t ->
([`GET], 'a, 'b, unit, unit, Data_encoding.json) RPC_service.t
val set_filter :
('a, 'b) RPC_path.t ->
([`POST], 'a, 'b, unit, Data_encoding.json, unit) RPC_service.t
val request_operations :
('a, 'b) RPC_path.t ->
([`POST], 'a, 'b, unit, unit, unit) RPC_service.t
end
val live_blocks :
([`GET], prefix, prefix, unit, unit, Block_hash.Set.t) RPC_service.t
end
end
module Fake_protocol : PROTO
module Empty : module type of Make (Fake_protocol) (Fake_protocol)