2016-09-08 21:13:10 +04:00
|
|
|
(**************************************************************************)
|
|
|
|
(* *)
|
|
|
|
(* Copyright (c) 2014 - 2016. *)
|
|
|
|
(* Dynamic Ledger Solutions, Inc. <contact@tezos.com> *)
|
|
|
|
(* *)
|
|
|
|
(* All rights reserved. No warranty, explicit or implicit, provided. *)
|
|
|
|
(* *)
|
|
|
|
(**************************************************************************)
|
|
|
|
|
2017-02-24 20:17:53 +04:00
|
|
|
module Net_id : sig
|
|
|
|
type t = Store.Net_id.t
|
|
|
|
val encoding : t Data_encoding.t
|
|
|
|
end
|
2016-09-08 21:13:10 +04:00
|
|
|
|
2017-02-24 20:17:53 +04:00
|
|
|
type shell_operation = Store.Operation.shell_header = {
|
|
|
|
net_id: Net_id.t ;
|
2016-09-08 21:13:10 +04:00
|
|
|
}
|
|
|
|
val shell_operation_encoding: shell_operation Data_encoding.t
|
|
|
|
|
2017-02-24 20:17:53 +04:00
|
|
|
type raw_operation = Store.Operation.t = {
|
2016-09-08 21:13:10 +04:00
|
|
|
shell: shell_operation ;
|
|
|
|
proto: MBytes.t ;
|
|
|
|
}
|
|
|
|
val raw_operation_encoding: raw_operation Data_encoding.t
|
|
|
|
|
|
|
|
(** The version agnostic toplevel structure of blocks. *)
|
2017-02-24 20:17:53 +04:00
|
|
|
type shell_block = Store.Block_header.shell_header = {
|
|
|
|
net_id: Net_id.t ;
|
2016-09-08 21:13:10 +04:00
|
|
|
(** The genesis of the chain this block belongs to. *)
|
|
|
|
predecessor: Block_hash.t ;
|
|
|
|
(** The preceding block in the chain. *)
|
|
|
|
timestamp: Time.t ;
|
|
|
|
(** The date at which this block has been forged. *)
|
|
|
|
fitness: MBytes.t list ;
|
|
|
|
(** The announced score of the block. As a sequence of sequences
|
|
|
|
of unsigned bytes. Ordered by length and then by contents
|
|
|
|
lexicographically. *)
|
|
|
|
operations: Operation_hash.t list ;
|
|
|
|
(** The sequence of operations. *)
|
|
|
|
}
|
2016-10-19 22:47:04 +04:00
|
|
|
val shell_block_encoding: shell_block Data_encoding.t
|
2016-09-08 21:13:10 +04:00
|
|
|
|
2017-02-24 20:17:53 +04:00
|
|
|
type raw_block = Store.Block_header.t = {
|
2016-10-19 22:47:04 +04:00
|
|
|
shell: shell_block ;
|
2016-09-08 21:13:10 +04:00
|
|
|
proto: MBytes.t ;
|
|
|
|
}
|
2016-10-19 22:47:04 +04:00
|
|
|
val raw_block_encoding: raw_block Data_encoding.t
|
2016-09-08 21:13:10 +04:00
|
|
|
|
|
|
|
type 'error preapply_result = 'error Protocol.preapply_result = {
|
|
|
|
applied: Operation_hash.t list;
|
2017-02-24 20:17:53 +04:00
|
|
|
refused: 'error list Operation_hash.Map.t; (* e.g. invalid signature. *)
|
|
|
|
branch_refused: 'error list Operation_hash.Map.t; (* e.g. past account counter;
|
2016-09-08 21:13:10 +04:00
|
|
|
insufficent balance *)
|
2017-02-24 20:17:53 +04:00
|
|
|
branch_delayed: 'error list Operation_hash.Map.t; (* e.g. futur account counter. *)
|
2016-09-08 21:13:10 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
val empty_result: 'error preapply_result
|
|
|
|
val map_result: ('a list -> 'b list) -> 'a preapply_result -> 'b preapply_result
|
|
|
|
|
2017-02-24 20:17:53 +04:00
|
|
|
val operations: 'error preapply_result -> Operation_hash.Set.t
|
2016-09-08 21:13:10 +04:00
|
|
|
|
|
|
|
val preapply_result_encoding :
|
|
|
|
'error list Data_encoding.t ->
|
|
|
|
'error preapply_result Data_encoding.t
|
|
|
|
|
|
|
|
module type PROTOCOL = Protocol.PROTOCOL
|
|
|
|
module type REGISTRED_PROTOCOL = sig
|
|
|
|
val hash: Protocol_hash.t
|
|
|
|
(* exception Ecoproto_error of error list *)
|
|
|
|
include Protocol.PROTOCOL with type error := error
|
|
|
|
and type 'a tzresult := 'a tzresult
|
2017-02-19 21:22:32 +04:00
|
|
|
val complete_b58prefix : Context.t -> string -> string list Lwt.t
|
2016-09-08 21:13:10 +04:00
|
|
|
end
|
|
|
|
|
2016-10-24 21:15:35 +04:00
|
|
|
type component = Tezos_compiler.Protocol.component = {
|
2016-09-08 21:13:10 +04:00
|
|
|
name : string ;
|
|
|
|
interface : string option ;
|
|
|
|
implementation : string ;
|
|
|
|
}
|
|
|
|
|
2016-10-25 21:00:03 +04:00
|
|
|
val extract: Lwt_io.file_name -> Protocol_hash.t -> component list -> unit Lwt.t
|
2016-09-08 21:13:10 +04:00
|
|
|
val compile: Protocol_hash.t -> component list -> bool Lwt.t
|
|
|
|
|
|
|
|
val activate: Context.t -> Protocol_hash.t -> Context.t Lwt.t
|
|
|
|
val set_test_protocol: Context.t -> Protocol_hash.t -> Context.t Lwt.t
|
|
|
|
val fork_test_network: Context.t -> Context.t Lwt.t
|
|
|
|
|
|
|
|
val register: Protocol_hash.t -> (module REGISTRED_PROTOCOL) -> unit
|
|
|
|
|
|
|
|
val get: Protocol_hash.t -> (module REGISTRED_PROTOCOL) option
|
|
|
|
val get_exn: Protocol_hash.t -> (module REGISTRED_PROTOCOL)
|
|
|
|
|
|
|
|
val init: string -> unit
|