ouroboros-consensus-cardano-0.16.0.0: The instantation of the Ouroboros consensus layer used by Cardano
Safe HaskellSafe-Inferred
LanguageHaskell2010

Ouroboros.Consensus.Cardano.Node

Synopsis

Documentation

newtype MaxMajorProtVer Source #

The maximum major protocol version.

Must be at least the current major protocol version. For Cardano mainnet, the Shelley era has major protocol verison 2.

Constructors

MaxMajorProtVer 

Instances

Instances details
Generic MaxMajorProtVer 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos.Common

Associated Types

type Rep MaxMajorProtVerTypeType #

Show MaxMajorProtVer 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos.Common

Eq MaxMajorProtVer 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos.Common

NoThunks MaxMajorProtVer 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos.Common

type Rep MaxMajorProtVer 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos.Common

type Rep MaxMajorProtVer = D1 ('MetaData "MaxMajorProtVer" "Ouroboros.Consensus.Protocol.Praos.Common" "ouroboros-consensus-protocol-0.9.0.0-inplace" 'True) (C1 ('MetaCons "MaxMajorProtVer" 'PrefixI 'True) (S1 ('MetaSel ('Just "getMaxMajorProtVer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version)))

data family ProtocolParams blk Source #

Instances

Instances details
data ProtocolParams ByronBlock Source #

Parameters needed to run Byron

Instance details

Defined in Ouroboros.Consensus.Byron.Node

data ProtocolParams (CardanoBlock c) Source #

Parameters needed to run Cardano.

Instance details

Defined in Ouroboros.Consensus.Cardano.Node

data ProtocolParams (ShelleyBlock (Praos c) (BabbageEra c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Shelley.Node.Praos

data ProtocolParams (ShelleyBlock (Praos c) (ConwayEra c)) Source # 
Instance details

Defined in Ouroboros.Consensus.Shelley.Node.Praos

data ProtocolParams (ShelleyBlock (TPraos c) (AllegraEra c)) Source #

Parameters needed to run Allegra

Instance details

Defined in Ouroboros.Consensus.Shelley.Node.TPraos

data ProtocolParams (ShelleyBlock (TPraos c) (AlonzoEra c)) Source #

Parameters needed to run Alonzo

Instance details

Defined in Ouroboros.Consensus.Shelley.Node.TPraos

data ProtocolParams (ShelleyBlock (TPraos c) (MaryEra c)) Source #

Parameters needed to run Mary

Instance details

Defined in Ouroboros.Consensus.Shelley.Node.TPraos

data ProtocolParams (ShelleyBlock (TPraos c) (ShelleyEra c)) Source #

Parameters needed to run Shelley

Instance details

Defined in Ouroboros.Consensus.Shelley.Node.TPraos

data TriggerHardFork Source #

The trigger condition that will cause the hard fork transition.

This type is only intended for use as part of a LedgerCfg, which means it is "static": it cannot change during an execution of the node process.

Constructors

TriggerHardForkAtVersion !Word16

Trigger the transition when the on-chain protocol major version (from the ledger state) reaches this number.

Note: The HFC logic does not require the trigger version for one era to be the successor of the trigger version for the previous era.

TriggerHardForkAtEpoch !EpochNo

For testing only, trigger the transition at a specific hard-coded epoch, irrespective of the ledger state.

TriggerHardForkNotDuringThisExecution

Ledger states in this era cannot determine when the hard fork transition will happen.

It's crucial to note that this option does not imply that "the era will never end". Instead, the era cannot end within this node process before it restarts with different software and/or configuration for this era.

Instances

Instances details
Generic TriggerHardFork 
Instance details

Defined in Ouroboros.Consensus.HardFork.Simple

Associated Types

type Rep TriggerHardForkTypeType #

Show TriggerHardFork 
Instance details

Defined in Ouroboros.Consensus.HardFork.Simple

NoThunks TriggerHardFork 
Instance details

Defined in Ouroboros.Consensus.HardFork.Simple

type Rep TriggerHardFork 
Instance details

Defined in Ouroboros.Consensus.HardFork.Simple

type Rep TriggerHardFork = D1 ('MetaData "TriggerHardFork" "Ouroboros.Consensus.HardFork.Simple" "ouroboros-consensus-0.18.0.0-inplace" 'False) (C1 ('MetaCons "TriggerHardForkAtVersion" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word16)) :+: (C1 ('MetaCons "TriggerHardForkAtEpoch" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 EpochNo)) :+: C1 ('MetaCons "TriggerHardForkNotDuringThisExecution" 'PrefixI 'False) (U1TypeType)))

protocolInfoCardano ∷ ∀ c m. (IOLike m, CardanoHardForkConstraints c) ⇒ CardanoProtocolParams c → (ProtocolInfo (CardanoBlock c), m [BlockForging m (CardanoBlock c)]) Source #

Create a ProtocolInfo for CardanoBlock

NOTE: For testing and benchmarking purposes, the ShelleyGenesis can contain initial staking and funds. These are registered in the initial ledger state only if the given CardanoHardForkTriggers tell us to skip the Byron era and hard fork directly to Shelley or a later era by using TestXHardForkAtEpoch 0. When gNetworkId == Mainnet, the initial staking and funds must be empty.

PRECONDITION: only a single set of Shelley credentials is allowed when used for mainnet (check against gNetworkId == Mainnet).

SupportedNetworkProtocolVersion

pattern CardanoNodeToClientVersion1BlockNodeToClientVersion (CardanoBlock c) Source #

We support the sole Byron version with the hard fork disabled.

pattern CardanoNodeToClientVersion10BlockNodeToClientVersion (CardanoBlock c) Source #

The hard fork enabled, and the Shelley, Allegra, Mary, Alonzo and Babbage eras enabled Using ShelleyNodeToClientVersion6 for the Shelley-based eras, which enables new queries.

pattern CardanoNodeToClientVersion11BlockNodeToClientVersion (CardanoBlock c) Source #

The hard fork enabled, and the Shelley, Allegra, Mary, Alonzo and Babbage eras enabled, using ShelleyNodeToClientVersion7 for the Shelley-based eras, which enables new queries.

pattern CardanoNodeToClientVersion12BlockNodeToClientVersion (CardanoBlock c) Source #

The hard fork enabled, and the Shelley, Allegra, Mary, Alonzo and Babbage and Conway eras enabled, using ShelleyNodeToClientVersion7 for the Shelley-based eras.

pattern CardanoNodeToClientVersion2BlockNodeToClientVersion (CardanoBlock c) Source #

The hard fork enabled and the Shelley era enabled.

pattern CardanoNodeToClientVersion4BlockNodeToClientVersion (CardanoBlock c) Source #

The hard fork enabled, and the Shelley and Allegra eras enabled.

We don't bother with ShelleyNodeToClientVersion1 and HardForkSpecificNodeToClientVersion1.

pattern CardanoNodeToClientVersion5BlockNodeToClientVersion (CardanoBlock c) Source #

The hard fork enabled, and the Shelley, Allegra, and Mary eras enabled.

We don't bother with ShelleyNodeToClientVersion1.

pattern CardanoNodeToClientVersion6BlockNodeToClientVersion (CardanoBlock c) Source #

The hard fork enabled, and the Shelley, Allegra, and Mary eras enabled, but using ShelleyNodeToClientVersion3 for the Shelley-based eras , which enables new queries.

pattern CardanoNodeToClientVersion7BlockNodeToClientVersion (CardanoBlock c) Source #

The hard fork enabled, and the Shelley, Allegra, Mary and Alonzo eras enabled

pattern CardanoNodeToClientVersion8BlockNodeToClientVersion (CardanoBlock c) Source #

The hard fork enabled, and the Shelley, Allegra, Mary and Alonzo eras enabled Using ShelleyNodeToClientVersion5 for the Shelley-based eras , which enables new queries.

pattern CardanoNodeToClientVersion9BlockNodeToClientVersion (CardanoBlock c) Source #

The hard fork enabled, and the Shelley, Allegra, Mary, Alonzo and Babbage eras enabled Using ShelleyNodeToClientVersion5 for the Shelley-based eras, which enables new queries.

pattern CardanoNodeToNodeVersion1BlockNodeToNodeVersion (CardanoBlock c) Source #

We support only Byron V1 with the hard fork disabled, as no other versions have been released before the hard fork

pattern CardanoNodeToNodeVersion2BlockNodeToNodeVersion (CardanoBlock c) Source #

The hard fork enabled using the latest version of Byron and Shelley for each Byron and Shelley era.

Orphan instances

SerialiseConstraintsHFC ByronBlock Source # 
Instance details

CardanoHardForkConstraints c ⇒ SerialiseHFC (CardanoEras c) Source #

Important: we need to maintain binary compatibility with Byron blocks, as they are already stored on disk.

We also want to be able to efficiently detect (without having to peek far ahead) whether we're dealing with a Byron or Shelley block, so that we can invoke the right decoder. We plan to have a few more hard forks after Shelley (Goguen, Basho, Voltaire), so we want a future-proof envelope for distinguishing the different block types, i.e., a byte indicating the era.

Byron does not provide such an envelope. However, a Byron block is a CBOR 2-tuple with the first element being a tag (Word: 0 = EBB; 1 = regular block) and the second being the payload. We can easily extend this encoding format with support for Shelley, Goguen, etc.

We encode a CardanoBlock as the same CBOR 2-tuple as a Byron block, but we use the tags after 1 for the hard forks after Byron:

  1. Byron EBB
  2. Byron regular block
  3. Shelley block
  4. Allegra block
  5. Mary block
  6. Goguen block
  7. etc.

For more details, see: https://github.com/IntersectMBO/ouroboros-network/pull/1175#issuecomment-558147194

Instance details

CardanoHardForkConstraints c ⇒ SupportedNetworkProtocolVersion (CardanoBlock c) Source # 
Instance details