2016-09-08 21:13:10 +04:00
|
|
|
(**************************************************************************)
|
|
|
|
(* *)
|
2018-02-06 00:17:03 +04:00
|
|
|
(* Copyright (c) 2014 - 2018. *)
|
2016-09-08 21:13:10 +04:00
|
|
|
(* Dynamic Ledger Solutions, Inc. <contact@tezos.com> *)
|
|
|
|
(* *)
|
|
|
|
(* All rights reserved. No warranty, explicit or implicit, provided. *)
|
|
|
|
(* *)
|
|
|
|
(**************************************************************************)
|
|
|
|
|
|
|
|
type t
|
|
|
|
|
2017-01-23 14:10:07 +04:00
|
|
|
type config = {
|
2018-02-16 04:26:24 +04:00
|
|
|
genesis: State.Chain.genesis ;
|
2017-01-23 14:10:07 +04:00
|
|
|
store_root: string ;
|
|
|
|
context_root: string ;
|
|
|
|
patch_context: (Context.t -> Context.t Lwt.t) option ;
|
|
|
|
p2p: (P2p.config * P2p.limits) option ;
|
2018-02-16 04:26:24 +04:00
|
|
|
test_chain_max_tll: int option ;
|
2017-01-23 14:10:07 +04:00
|
|
|
}
|
|
|
|
|
2018-01-22 20:47:18 +04:00
|
|
|
and peer_validator_limits = {
|
|
|
|
new_head_request_timeout: float ;
|
|
|
|
block_header_timeout: float ;
|
|
|
|
block_operations_timeout: float ;
|
|
|
|
protocol_timeout: float ;
|
|
|
|
worker_limits: Worker_types.limits
|
|
|
|
}
|
2017-11-29 16:51:06 +04:00
|
|
|
and prevalidator_limits = {
|
|
|
|
max_refused_operations: int ;
|
2017-11-30 21:34:22 +04:00
|
|
|
operation_timeout: float ;
|
|
|
|
worker_limits : Worker_types.limits ;
|
2017-11-29 16:51:06 +04:00
|
|
|
}
|
2018-01-26 16:10:20 +04:00
|
|
|
and block_validator_limits = {
|
|
|
|
protocol_timeout: float ;
|
|
|
|
worker_limits : Worker_types.limits ;
|
|
|
|
}
|
2018-02-16 04:26:24 +04:00
|
|
|
and chain_validator_limits = {
|
2018-01-22 20:21:23 +04:00
|
|
|
bootstrap_threshold: int ;
|
|
|
|
worker_limits : Worker_types.limits ;
|
|
|
|
}
|
2017-11-13 17:25:02 +04:00
|
|
|
|
2018-01-26 16:10:20 +04:00
|
|
|
val create:
|
|
|
|
config ->
|
2018-01-22 20:47:18 +04:00
|
|
|
peer_validator_limits ->
|
2018-01-26 16:10:20 +04:00
|
|
|
block_validator_limits ->
|
|
|
|
prevalidator_limits ->
|
2018-02-16 04:26:24 +04:00
|
|
|
chain_validator_limits ->
|
2018-01-26 16:10:20 +04:00
|
|
|
t tzresult Lwt.t
|
2016-09-08 21:13:10 +04:00
|
|
|
|
|
|
|
module RPC : sig
|
|
|
|
|
2018-01-26 16:07:49 +04:00
|
|
|
type block = Block_services.block
|
|
|
|
type block_info = Block_services.block_info
|
2016-09-08 21:13:10 +04:00
|
|
|
|
|
|
|
val inject_block:
|
2018-02-16 04:26:24 +04:00
|
|
|
t -> ?force:bool -> ?chain_id:Chain_id.t ->
|
2017-11-14 02:27:19 +04:00
|
|
|
MBytes.t -> Operation.t list list ->
|
2017-02-24 20:17:53 +04:00
|
|
|
(Block_hash.t * unit tzresult Lwt.t) tzresult Lwt.t
|
2017-03-08 21:47:01 +04:00
|
|
|
(** [inject_block node ?force bytes] tries to insert [bytes]
|
|
|
|
(supposedly the serialization of a block header) inside
|
|
|
|
[node]. If [?force] is true, the block will be inserted even on
|
|
|
|
non strictly increasing fitness. *)
|
|
|
|
|
2016-09-08 21:13:10 +04:00
|
|
|
val inject_operation:
|
2018-02-16 04:26:24 +04:00
|
|
|
t -> ?chain_id:Chain_id.t -> MBytes.t ->
|
2017-02-24 20:17:53 +04:00
|
|
|
(Operation_hash.t * unit tzresult Lwt.t) Lwt.t
|
2016-10-21 16:01:20 +04:00
|
|
|
val inject_protocol:
|
2017-04-19 21:21:23 +04:00
|
|
|
t -> ?force:bool -> Protocol.t ->
|
2017-02-24 20:17:53 +04:00
|
|
|
(Protocol_hash.t * unit tzresult Lwt.t) Lwt.t
|
2016-09-08 21:13:10 +04:00
|
|
|
|
|
|
|
val raw_block_info:
|
|
|
|
t -> Block_hash.t -> block_info Lwt.t
|
2017-04-19 23:46:10 +04:00
|
|
|
val block_header_watcher:
|
2017-11-27 09:13:12 +04:00
|
|
|
t -> (Block_hash.t * Block_header.t) Lwt_stream.t * Lwt_watcher.stopper
|
2017-04-19 23:46:10 +04:00
|
|
|
val block_watcher:
|
2017-11-27 09:13:12 +04:00
|
|
|
t -> (block_info Lwt_stream.t * Lwt_watcher.stopper)
|
2017-02-24 20:17:53 +04:00
|
|
|
val heads: t -> block_info Block_hash.Map.t Lwt.t
|
2016-09-08 21:13:10 +04:00
|
|
|
|
2017-02-15 23:38:00 +04:00
|
|
|
val predecessors:
|
|
|
|
t -> int -> Block_hash.t -> Block_hash.t list Lwt.t
|
|
|
|
|
2016-09-08 21:13:10 +04:00
|
|
|
val list:
|
|
|
|
t -> int -> Block_hash.t list -> block_info list list Lwt.t
|
|
|
|
|
2017-11-27 01:21:56 +04:00
|
|
|
val list_invalid:
|
|
|
|
t -> (Block_hash.t * int32 * error list) list Lwt.t
|
|
|
|
|
2018-01-13 02:57:08 +04:00
|
|
|
val unmark_invalid:
|
|
|
|
t -> Block_hash.t -> unit tzresult Lwt.t
|
|
|
|
|
2016-09-08 21:13:10 +04:00
|
|
|
val block_info:
|
|
|
|
t -> block -> block_info Lwt.t
|
|
|
|
|
2017-04-19 23:46:10 +04:00
|
|
|
val operation_hashes:
|
2017-03-30 15:16:21 +04:00
|
|
|
t -> block -> Operation_hash.t list list Lwt.t
|
2017-04-19 23:46:10 +04:00
|
|
|
val operations:
|
|
|
|
t -> block -> Operation.t list list Lwt.t
|
2016-09-08 21:13:10 +04:00
|
|
|
val operation_watcher:
|
2017-11-27 09:13:12 +04:00
|
|
|
t -> (Operation_hash.t * Operation.t) Lwt_stream.t * Lwt_watcher.stopper
|
2016-09-08 21:13:10 +04:00
|
|
|
|
|
|
|
val pending_operations:
|
2018-03-14 20:16:18 +04:00
|
|
|
t ->
|
2017-11-27 09:13:12 +04:00
|
|
|
(error Preapply_result.t * Operation.t Operation_hash.Map.t) Lwt.t
|
2016-09-08 21:13:10 +04:00
|
|
|
|
2016-10-21 16:01:20 +04:00
|
|
|
val protocols:
|
|
|
|
t -> Protocol_hash.t list Lwt.t
|
|
|
|
val protocol_content:
|
2017-04-19 21:21:23 +04:00
|
|
|
t -> Protocol_hash.t -> Protocol.t tzresult Lwt.t
|
2016-10-21 16:01:20 +04:00
|
|
|
val protocol_watcher:
|
2017-11-27 09:13:12 +04:00
|
|
|
t -> (Protocol_hash.t * Protocol.t) Lwt_stream.t * Lwt_watcher.stopper
|
2016-10-21 16:01:20 +04:00
|
|
|
|
2016-09-08 21:13:10 +04:00
|
|
|
val context_dir:
|
2017-12-09 06:51:58 +04:00
|
|
|
t -> block -> 'a RPC_directory.t option Lwt.t
|
2016-09-08 21:13:10 +04:00
|
|
|
|
2018-02-13 13:25:45 +04:00
|
|
|
(** Returns the content of the context at the given [path] descending
|
|
|
|
recursively into directories as far as [depth] allows.
|
|
|
|
Returns [None] if a path in not in the context or if [depth] is
|
|
|
|
negative. *)
|
|
|
|
val context_raw_get:
|
|
|
|
t -> block -> path:string list -> depth:int ->
|
|
|
|
Block_services.raw_context_result option Lwt.t
|
|
|
|
|
2016-09-08 21:13:10 +04:00
|
|
|
val preapply:
|
|
|
|
t -> block ->
|
2018-02-16 17:05:46 +04:00
|
|
|
timestamp:Time.t -> protocol_data:MBytes.t ->
|
2017-12-05 18:17:57 +04:00
|
|
|
sort_operations:bool -> Operation.t list list ->
|
|
|
|
(Block_header.shell_header * error Preapply_result.t list) tzresult Lwt.t
|
2016-09-08 21:13:10 +04:00
|
|
|
|
2016-11-14 19:26:34 +04:00
|
|
|
val complete:
|
|
|
|
t -> ?block:block -> string -> string list Lwt.t
|
|
|
|
|
2017-02-28 03:48:22 +04:00
|
|
|
val bootstrapped:
|
2017-12-09 06:51:58 +04:00
|
|
|
t -> (Block_hash.t * Time.t) RPC_answer.stream
|
2017-02-28 03:48:22 +04:00
|
|
|
|
|
|
|
|
2018-02-12 00:10:25 +04:00
|
|
|
val build_p2p_rpc_directory: t -> unit RPC_directory.t
|
2017-02-28 03:48:22 +04:00
|
|
|
|
2016-09-08 21:13:10 +04:00
|
|
|
end
|
|
|
|
|
|
|
|
val shutdown: t -> unit Lwt.t
|