ouroboros-consensus- Consensus layer for the Ouroboros blockchain protocol
Safe Haskell None
Language Haskell2010




data BlockForging m blk Source #

Stateful wrapper around block production

NOTE: do not refer to the consensus or ledger config in the closure of this record because they might contain an EpochInfo Identity , which will be incorrect when used as part of the hard fork combinator.




type family CannotForge blk :: Type Source #

Information about why we cannot forge a block, although we are a leader

This should happen only rarely. An example might be that our hot key does not (yet/anymore) match the delegation state.

type family ForgeStateInfo blk :: Type Source #

Returned when a call to updateForgeState succeeded and caused the forge state to change. This info is traced.

data ForgeStateUpdateInfo blk Source #

The result of updateForgeState .

Note: the forge state itself is implicit and not reflected in the types.


ForgeStateUpdated ( ForgeStateInfo blk)

NB The update might have not changed the forge state.

ForgeStateUpdateFailed ( ForgeStateUpdateError blk)

A node was prevented from forging for an artificial reason, such as testing, benchmarking, etc. It's artificial in that this constructor should never occur in a production deployment.

data ShouldForge blk Source #


ForgeStateUpdateError ( ForgeStateUpdateError blk)

Before check whether we are a leader in this slot, we tried to update our forge state ( updateForgeState ), but it failed. We will not check whether we are leader and will thus not forge a block either.

E.g., we could not evolve our KES key.

CannotForge ( CannotForge blk)

We are a leader in this slot, but we cannot forge for a certain reason.

E.g., our KES key is not yet valid in this slot or we are not the current delegate of the genesis key we have a delegation certificate from.


We are not a leader in this slot

ShouldForge ( IsLeader ( BlockProtocol blk))

We are a leader in this slot and we should forge a block.


data UpdateInfo updated failed Source #

The result of updating something, e.g., the forge state.


Updated updated

NOTE: The update may have induced no change.

UpdateFailed failed


Instances details
( Show updated, Show failed) => Show ( UpdateInfo updated failed) Source #
Instance details

Defined in Ouroboros.Consensus.Block.Forging

Selecting transaction sequence prefixes

takeLargestPrefixThatFits :: TxLimits blk => Overrides blk -> TickedLedgerState blk -> [ Validated ( GenTx blk)] -> [ Validated ( GenTx blk)] Source #

The prefix of transactions to include in the block

Filters out all transactions that do not fit the maximum size of total transactions in a single block, which is determined by querying the ledger state for the current limit and the given override. The result is the pointwise minimum of the ledger-specific capacity and the result of the override. In other words, the override can only reduce (parts of) the TxMeasure .