Protocol.Makemodule Auxiliary (Event : Simulator.Events.Event) (Queue : Simulator.Events.EventQueue with type ev = Event.t) (Logger : Simulator.Logging.Logger with type ev = Event.t) (Network : Abstractions.Network.Network) : sig ... endFunctor to create auxiliary functions used by Abstract and Blockchain Protocols.
According to the parametrizations, initialize data structures to keep track of which nodes are offline, and when they become online/offline.
According to the parametrizations, initialize data structures to keep track of which nodes are malicous, and when they start acting maliciously.
module ConsensusArg : sig ... endArgument for Statistics module that keeps track of the average time to reach consensus.
module EventsPerNodeArg : sig ... endArgument for Statistics module that keeps track of the number of events processed per node.
module Abstract (Event : Simulator.Events.Event) (Queue : Simulator.Events.EventQueue with type ev = Event.t) (Timer : Abstractions.Timer.Timer) (GoodNode : AbstractNode with type ev = Event.t) (BadNode : AbstractNode with type
ev = Event.t and type value = GoodNode.value and type node_data = GoodNode.node_data) (Initializer : Initializer with type node = GoodNode.t and type
ev = Event.t) (Logger : Simulator.Logging.Logger with type ev = Event.t) (Statistics : Simulator.Statistics.Stats) (Network : Abstractions.Network.Network) : ProtocolFunctor to create and implementation for an AbstractProtocol (protocol that simulates AbstractNodes).
module Blockchain (Event : Simulator.Events.Event) (Queue : Simulator.Events.EventQueue with type ev = Event.t) (Block : Simulator.Block.BlockSig) (Timer : Abstractions.Timer.Timer) (GoodNode : BlockchainNode with type ev = Event.t and type
value = Block.block) (BadNode : BlockchainNode with type ev = Event.t and type value = GoodNode.value and type node_data = GoodNode.node_data) (Initializer : Initializer with type
node = GoodNode.t and type ev = Event.t) (Logger : Simulator.Logging.Logger with type ev = Event.t) (Statistics : Simulator.Statistics.Stats) (Network : Abstractions.Network.Network) : ProtocolFunctor to create and implementation for a BlockchainProtocol (protocol that simulates BlockchainNodes).