Module Evm_node_lib_dev.Block_producer

type parameters = {
  1. signer : Signer.map;
  2. maximum_number_of_chunks : int;
  3. tx_container : Services_backend_sig.ex_tx_container;
  4. sequencer_sunset_sec : int64;
  5. preconfirmation_stream_enabled : bool;
}
type force =
  1. | True
    (*

    Force the creation of a block with the computed timestamp

    *)
  2. | False
    (*

    Create a block iff there is txs to be included

    *)
  3. | With_timestamp of Tezos_base.TzPervasives.Time.Protocol.t
    (*

    Force the creation of a block with the provided timestamp

    *)

force defines if the block producer should force the creation of a block even if there is no txs to be included.

type preconfirmed_transactions_result = {
  1. accepted : Evm_node_lib_dev_encoding.Ethereum_types.hash list;
    (*

    Transactions that were validated by the preconfirm_transactions request.

    *)
  2. refused : Evm_node_lib_dev_encoding.Ethereum_types.hash list;
    (*

    Transactions that were invalidated by the preconfirm_transactions request.

    *)
  3. dropped : Evm_node_lib_dev_encoding.Ethereum_types.hash list;
    (*

    Transactions that were dropped by the preconfirm_transactions request when there is already too many transaction.

    *)
}

start parameters starts the events follower.

val shutdown : unit -> unit Lwt.t

shutdown () stops the events follower.

produce_genesis ~timestamp ~parent_hash creates the first empty block with the provided timestamp and parent hash

val produce_block : force:force -> [ `Block_produced of int | `No_block ] Tezos_base.TzPervasives.tzresult Lwt.t

produce_block ~force takes the transactions in the tx pool and produces a block from it, returns the number of transaction in the block. The block is not produced if the list of transactions is empty and force is set to False.

type Tezos_base.TzPervasives.error +=
  1. | IC_disabled
val preconfirm_transactions : transactions:(string * Tx_queue_types.transaction_object_t) list -> preconfirmed_transactions_result Tezos_base.TzPervasives.tzresult Lwt.t

preconfirm_transactions ~transactions validates each transaction in transactions and streams every successfully validated one to the preconfirmation pipeline. Fails with IC_disabled if instant confirmation is not enabled.

module Internal_for_tests : sig ... end