package tezos-baking-alpha
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=7062cd57addd452852598a2214ade393130efa087b99068d53713bdf912b3680
sha512=08e4091144a03ce3c107fb91a66501bd8b65ca3278917c455a2eaac6df3e108ade63f6ab8340a4bb152d60f404326e464d0ec95d26cafe8e82f870465d24a5fc
doc/tezos-baking-alpha.mockup-simulator/Tezos_alpha_mockup_simulator/Mockup_simulator/index.html
Module Tezos_alpha_mockup_simulator.Mockup_simulatorSource
type block = {rpc_context : Tezos_protocol_environment.rpc_context;protocol_data : Tezos_protocol_alpha.Protocol.Alpha_context.Block_header.protocol_data;raw_protocol_data : Tezos_base.TzPervasives.Bytes.t;operations : Tezos_client_alpha.Mockup.M.Block_services.operation list list;resulting_context_hash : Tezos_base.TzPervasives.Context_hash.t;
}Representation of a block in the simulator.
How an operation or block should propagate through the network.
Values of this type specify to which bakers a block or operation should be delivered.
The default hook implementation.
type config = {debug : bool;(*Whether to initialize the event system in order to display information about the progress of the simulation.
*)round0 : int64;(*Duration of the round 0 in seconds.
*)round1 : int64;(*Duration of the round 1 in seconds.
*)timeout : int;(*Maximal duration of the test. If the test takes longer to terminate it'll be aborted with an error.
*)delegate_selection : (int32 * (int32 * Tezos_base.TzPervasives.Signature.public_key_hash) list) list;(*Desired selection of delegates per level/round
*)initial_seed : Tezos_protocol_alpha.Protocol.State_hash.t option;(*Optional initial seed for protocol (used to control delegate selection)
*)consensus_committee_size : int;(*Size of the committee for tenderbake in number of slots
*)consensus_threshold : int;(*Threshold, in number of slots, for the quorum to be considered reached. Should be
*)2 * consensus_committee_size / 3 + 1in usual setting for tenderbake.
}Simulation configuration.
val run :
?config:config ->
(int * (module Hooks)) list ->
unit Tezos_base.TzPervasives.tzresult Lwt.trun spec runs a simulation according to the spec. Elements of spec describe bakers: how many delegate each baker has and how it behaves. The total number of delegates cannot exceed 5 for now (it is easy to increase this limit). The delegates are assigned in order, gradually exhausting the standard bootstrap accounts. For example, if the first baker has 3 delegates and the second one has 2 delegates, we have the following distribution of bootstrap accounts:
Baker no. 1: bootstrap1, bootstrap2, bootstrap3
Baker no. 2: bootstrap4, bootstrap5
A simulation continues till all nodes finish either with an error or successfully. If at least one node finishes with an error, it propagates to the final result.
val check_block_signature :
block_hash:Tezos_base.TzPervasives.Block_hash.t ->
block_header:Tezos_base.TzPervasives.Block_header.t ->
public_key:Tezos_base.TzPervasives.Signature.public_key ->
unit Tezos_base.TzPervasives.tzresult Lwt.tCheck if a block header is signed by a given delegate.
type op_predicate =
Tezos_base.TzPervasives.Operation_hash.t ->
Tezos_protocol_alpha.Protocol.Alpha_context.packed_operation ->
bool Tezos_base.TzPervasives.tzresult Lwt.tA shortcut type for predicates on operations.
val mempool_count_ops :
mempool:
(Tezos_base.TzPervasives.Operation_hash.t
* Tezos_client_alpha.Mockup.M.Protocol.operation)
list ->
predicate:op_predicate ->
int Tezos_base.TzPervasives.tzresult Lwt.tCount the number of operations in the mempool that satisfy the given predicate.
val mempool_has_op :
mempool:
(Tezos_base.TzPervasives.Operation_hash.t
* Tezos_client_alpha.Mockup.M.Protocol.operation)
list ->
predicate:op_predicate ->
bool Tezos_base.TzPervasives.tzresult Lwt.tCheck if the mempool has at least one operation that satisfies the given predicate.
val mempool_has_op_ref :
mempool:
(Tezos_base.TzPervasives.Operation_hash.t
* Tezos_client_alpha.Mockup.M.Protocol.operation)
list ->
predicate:op_predicate ->
var:bool ref ->
unit Tezos_base.TzPervasives.tzresult Lwt.tSimilar to mempool_has_op but instead of returning a bool it sets the given bool ref.
Check if an operation is signed by the given delegate.
Check that an operation is a preendorsement.
Check that an operation is an endorsement.
Combine two predicates.
val save_proposal_payload :
protocol_data:
Tezos_protocol_alpha.Protocol.Alpha_context.Block_header.protocol_data ->
var:
(Tezos_protocol_alpha.Protocol.Block_payload_hash.t
* Tezos_protocol_alpha.Protocol.Alpha_context.Round.t)
option
ref ->
unit Tezos_base.TzPervasives.tzresult Lwt.tSet the given variable to save payload hash and payload round.
val verify_payload_hash :
protocol_data:
Tezos_protocol_alpha.Protocol.Alpha_context.Block_header.protocol_data ->
original_proposal:
(Tezos_protocol_alpha.Protocol.Block_payload_hash.t
* Tezos_protocol_alpha.Protocol.Alpha_context.Round.t)
option
ref ->
message:string ->
unit Tezos_base.TzPervasives.tzresult Lwt.tCheck that payload hashes match, fail if it is not the case.
val parse_protocol_data :
Tezos_base.TzPervasives.Bytes.t ->
Tezos_protocol_alpha.Protocol.Alpha_context.Block_header.protocol_data
Tezos_base.TzPervasives.tzresult
Lwt.tParse protocol data.
Get round of a block.