ouroboros-consensus-cardano-0.1.0.0: The instantation of the Ouroboros consensus layer used by Cardano
Safe HaskellNone
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
Eq MaxMajorProtVer 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos.Common

Show MaxMajorProtVer 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos.Common

Generic MaxMajorProtVer 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos.Common

Associated Types

type Rep MaxMajorProtVerTypeType Source #

NoThunks MaxMajorProtVer 
Instance details

Defined in Ouroboros.Consensus.Protocol.Praos.Common

Methods

noThunks ∷ Context → MaxMajorProtVerIO (Maybe ThunkInfo) #

wNoThunks ∷ Context → MaxMajorProtVerIO (Maybe ThunkInfo) #

showTypeOfProxy MaxMajorProtVerString #

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.1.0.0-inplace" 'True) (C1 ('MetaCons "MaxMajorProtVer" 'PrefixI 'True) (S1 ('MetaSel ('Just "getMaxMajorProtVer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Natural)))

data ProtocolParamsMary c Source #

Parameters needed to run Mary

data ProtocolTransitionParamsShelleyBased era Source #

Parameters needed to transition to a Shelley era.

data TriggerHardFork Source #

The trigger condition that will cause the hard fork transition.

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.

TriggerHardForkNever

Never trigger a hard fork

Instances

Instances details
Show TriggerHardFork 
Instance details

Defined in Ouroboros.Consensus.HardFork.Simple

Generic TriggerHardFork 
Instance details

Defined in Ouroboros.Consensus.HardFork.Simple

Associated Types

type Rep TriggerHardForkTypeType Source #

NoThunks TriggerHardFork 
Instance details

Defined in Ouroboros.Consensus.HardFork.Simple

Methods

noThunks ∷ Context → TriggerHardForkIO (Maybe ThunkInfo) #

wNoThunks ∷ Context → TriggerHardForkIO (Maybe ThunkInfo) #

showTypeOfProxy TriggerHardForkString #

type Rep TriggerHardFork 
Instance details

Defined in Ouroboros.Consensus.HardFork.Simple

type Rep TriggerHardFork = D1 ('MetaData "TriggerHardFork" "Ouroboros.Consensus.HardFork.Simple" "ouroboros-consensus-0.1.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 "TriggerHardForkNever" 'PrefixI 'False) (U1TypeType)))

protocolInfoCardano ∷ ∀ c m. (IOLike m, CardanoHardForkConstraints c) ⇒ ProtocolParamsByronProtocolParamsShelleyBased (ShelleyEra c) → ProtocolParamsShelley c → ProtocolParamsAllegra c → ProtocolParamsMary c → ProtocolParamsAlonzo c → ProtocolParamsBabbage c → ProtocolTransitionParamsShelleyBased (ShelleyEra c) → ProtocolTransitionParamsShelleyBased (AllegraEra c) → ProtocolTransitionParamsShelleyBased (MaryEra c) → ProtocolTransitionParamsShelleyBased (AlonzoEra c) → ProtocolTransitionParamsShelleyBased (BabbageEra c) → ProtocolInfo m (CardanoBlock c) Source #

Create a ProtocolInfo for CardanoBlock

NOTE: the initial staking and funds in the ShelleyGenesis are ignored, unless configured to skip the Byron era and hard fork to Shelley or a later era from the start using TriggerHardForkAtEpoch 0 for testing purposes.

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

SupportedNetworkProtocolVersion

pattern CardanoNodeToClientVersion1BlockNodeToClientVersion (CardanoBlock c) Source #

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

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 with the latest Byron version and the Shelley era enabled.

pattern CardanoNodeToNodeVersion3BlockNodeToNodeVersion (CardanoBlock c) Source #

The hard fork enabled with the latest Byron version, the Shelley and Allegra eras enabled.

pattern CardanoNodeToNodeVersion4BlockNodeToNodeVersion (CardanoBlock c) Source #

The hard fork enabled with the latest Byron version, the Shelley, Allegra, and Mary eras enabled.

pattern CardanoNodeToNodeVersion5BlockNodeToNodeVersion (CardanoBlock c) Source #

The hard fork enabled with the latest Byron version, the Shelley, Allegra, Mary and Alonzo eras enabled.

pattern CardanoNodeToNodeVersion6BlockNodeToNodeVersion (CardanoBlock c) Source #

The hard fork enabled with the latest Byron version, the Shelley, Allegra, Mary, Alonzo and Babbage eras enabled.

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/input-output-hk/ouroboros-network/pull/1175#issuecomment-558147194

Instance details

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