Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ouroboros.Consensus.Cardano.Node
Synopsis
- type CardanoHardForkConstraints c = (PraosCrypto c, PraosCrypto c, TranslateProto (TPraos c) (Praos c), ShelleyCompatible (TPraos c) (ShelleyEra c), LedgerSupportsProtocol (ShelleyBlock (TPraos c) (ShelleyEra c)), ShelleyCompatible (TPraos c) (AllegraEra c), LedgerSupportsProtocol (ShelleyBlock (TPraos c) (AllegraEra c)), ShelleyCompatible (TPraos c) (MaryEra c), LedgerSupportsProtocol (ShelleyBlock (TPraos c) (MaryEra c)), ShelleyCompatible (TPraos c) (AlonzoEra c), LedgerSupportsProtocol (ShelleyBlock (TPraos c) (AlonzoEra c)), ShelleyCompatible (Praos c) (BabbageEra c), LedgerSupportsProtocol (ShelleyBlock (Praos c) (BabbageEra c)), ShelleyCompatible (Praos c) (ConwayEra c), LedgerSupportsProtocol (ShelleyBlock (Praos c) (ConwayEra c)), HASH c ~ Blake2b_256, ADDRHASH c ~ Blake2b_224, DSIGN c ~ Ed25519DSIGN)
- newtype CardanoHardForkTriggers where
- type CardanoProtocolParams c = ProtocolParams (CardanoBlock c)
- newtype MaxMajorProtVer = MaxMajorProtVer {
- getMaxMajorProtVer :: Version
- data family ProtocolParams blk
- data TriggerHardFork
- protocolClientInfoCardano :: forall c. EpochSlots -> ProtocolClientInfo (CardanoBlock c)
- protocolInfoCardano :: forall c m. (IOLike m, CardanoHardForkConstraints c) => CardanoProtocolParams c -> (ProtocolInfo (CardanoBlock c), m [BlockForging m (CardanoBlock c)])
- pattern CardanoNodeToClientVersion1 :: BlockNodeToClientVersion (CardanoBlock c)
- pattern CardanoNodeToClientVersion10 :: BlockNodeToClientVersion (CardanoBlock c)
- pattern CardanoNodeToClientVersion11 :: BlockNodeToClientVersion (CardanoBlock c)
- pattern CardanoNodeToClientVersion12 :: BlockNodeToClientVersion (CardanoBlock c)
- pattern CardanoNodeToClientVersion2 :: BlockNodeToClientVersion (CardanoBlock c)
- pattern CardanoNodeToClientVersion3 :: BlockNodeToClientVersion (CardanoBlock c)
- pattern CardanoNodeToClientVersion4 :: BlockNodeToClientVersion (CardanoBlock c)
- pattern CardanoNodeToClientVersion5 :: BlockNodeToClientVersion (CardanoBlock c)
- pattern CardanoNodeToClientVersion6 :: BlockNodeToClientVersion (CardanoBlock c)
- pattern CardanoNodeToClientVersion7 :: BlockNodeToClientVersion (CardanoBlock c)
- pattern CardanoNodeToClientVersion8 :: BlockNodeToClientVersion (CardanoBlock c)
- pattern CardanoNodeToClientVersion9 :: BlockNodeToClientVersion (CardanoBlock c)
- pattern CardanoNodeToNodeVersion1 :: BlockNodeToNodeVersion (CardanoBlock c)
- pattern CardanoNodeToNodeVersion2 :: BlockNodeToNodeVersion (CardanoBlock c)
- pattern CardanoNodeToNodeVersion3 :: BlockNodeToNodeVersion (CardanoBlock c)
- pattern CardanoNodeToNodeVersion4 :: BlockNodeToNodeVersion (CardanoBlock c)
- pattern CardanoNodeToNodeVersion5 :: BlockNodeToNodeVersion (CardanoBlock c)
- pattern CardanoNodeToNodeVersion6 :: BlockNodeToNodeVersion (CardanoBlock c)
- pattern CardanoNodeToNodeVersion7 :: BlockNodeToNodeVersion (CardanoBlock c)
Documentation
type CardanoHardForkConstraints c = (PraosCrypto c, PraosCrypto c, TranslateProto (TPraos c) (Praos c), ShelleyCompatible (TPraos c) (ShelleyEra c), LedgerSupportsProtocol (ShelleyBlock (TPraos c) (ShelleyEra c)), ShelleyCompatible (TPraos c) (AllegraEra c), LedgerSupportsProtocol (ShelleyBlock (TPraos c) (AllegraEra c)), ShelleyCompatible (TPraos c) (MaryEra c), LedgerSupportsProtocol (ShelleyBlock (TPraos c) (MaryEra c)), ShelleyCompatible (TPraos c) (AlonzoEra c), LedgerSupportsProtocol (ShelleyBlock (TPraos c) (AlonzoEra c)), ShelleyCompatible (Praos c) (BabbageEra c), LedgerSupportsProtocol (ShelleyBlock (Praos c) (BabbageEra c)), ShelleyCompatible (Praos c) (ConwayEra c), LedgerSupportsProtocol (ShelleyBlock (Praos c) (ConwayEra c)), HASH c ~ Blake2b_256, ADDRHASH c ~ Blake2b_224, DSIGN c ~ Ed25519DSIGN) Source #
newtype CardanoHardForkTriggers Source #
Constructors
CardanoHardForkTriggers | |
Fields |
Bundled Patterns
pattern CardanoHardForkTriggers' :: TriggerHardFork -> TriggerHardFork -> TriggerHardFork -> TriggerHardFork -> TriggerHardFork -> TriggerHardFork -> CardanoHardForkTriggers |
type CardanoProtocolParams c = ProtocolParams (CardanoBlock c) Source #
newtype MaxMajorProtVer #
Constructors
MaxMajorProtVer | |
Fields
|
Instances
data family ProtocolParams blk #
Instances
data TriggerHardFork #
Constructors
TriggerHardForkAtVersion !Word16 | |
TriggerHardForkAtEpoch !EpochNo | |
TriggerHardForkNotDuringThisExecution |
Instances
protocolClientInfoCardano :: forall c. EpochSlots -> ProtocolClientInfo (CardanoBlock c) Source #
protocolInfoCardano :: forall 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
, the initial
staking and funds must be empty.gNetworkId
== Mainnet
PRECONDITION: only a single set of Shelley credentials is allowed when used
for mainnet (check against
).gNetworkId
== Mainnet
SupportedNetworkProtocolVersion
pattern CardanoNodeToClientVersion1 :: BlockNodeToClientVersion (CardanoBlock c) Source #
We support the sole Byron version with the hard fork disabled.
pattern CardanoNodeToClientVersion10 :: BlockNodeToClientVersion (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 CardanoNodeToClientVersion11 :: BlockNodeToClientVersion (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 CardanoNodeToClientVersion12 :: BlockNodeToClientVersion (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 CardanoNodeToClientVersion2 :: BlockNodeToClientVersion (CardanoBlock c) Source #
The hard fork enabled and the Shelley era enabled.
pattern CardanoNodeToClientVersion3 :: BlockNodeToClientVersion (CardanoBlock c) Source #
The hard fork enabled and the Shelley era enabled, but using
ShelleyNodeToClientVersion2
and HardForkSpecificNodeToClientVersion2
.
pattern CardanoNodeToClientVersion4 :: BlockNodeToClientVersion (CardanoBlock c) Source #
The hard fork enabled, and the Shelley and Allegra eras enabled.
We don't bother with ShelleyNodeToClientVersion1
and
HardForkSpecificNodeToClientVersion1
.
pattern CardanoNodeToClientVersion5 :: BlockNodeToClientVersion (CardanoBlock c) Source #
The hard fork enabled, and the Shelley, Allegra, and Mary eras enabled.
We don't bother with ShelleyNodeToClientVersion1
.
pattern CardanoNodeToClientVersion6 :: BlockNodeToClientVersion (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 CardanoNodeToClientVersion7 :: BlockNodeToClientVersion (CardanoBlock c) Source #
The hard fork enabled, and the Shelley, Allegra, Mary and Alonzo eras enabled
pattern CardanoNodeToClientVersion8 :: BlockNodeToClientVersion (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 CardanoNodeToClientVersion9 :: BlockNodeToClientVersion (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 CardanoNodeToNodeVersion1 :: BlockNodeToNodeVersion (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 CardanoNodeToNodeVersion2 :: BlockNodeToNodeVersion (CardanoBlock c) Source #
The hard fork enabled with the latest Byron version and the Shelley era enabled.
pattern CardanoNodeToNodeVersion3 :: BlockNodeToNodeVersion (CardanoBlock c) Source #
The hard fork enabled with the latest Byron version, the Shelley and Allegra eras enabled.
pattern CardanoNodeToNodeVersion4 :: BlockNodeToNodeVersion (CardanoBlock c) Source #
The hard fork enabled with the latest Byron version, the Shelley, Allegra, and Mary eras enabled.
pattern CardanoNodeToNodeVersion5 :: BlockNodeToNodeVersion (CardanoBlock c) Source #
The hard fork enabled with the latest Byron version, the Shelley, Allegra, Mary and Alonzo eras enabled.
pattern CardanoNodeToNodeVersion6 :: BlockNodeToNodeVersion (CardanoBlock c) Source #
The hard fork enabled with the latest Byron version, the Shelley, Allegra, Mary, Alonzo and Babbage eras enabled.
pattern CardanoNodeToNodeVersion7 :: BlockNodeToNodeVersion (CardanoBlock c) Source #
The hard fork enabled with the latest Byron version, the Shelley, Allegra, Mary, Alonzo, Babbage and Conway eras enabled.
Orphan instances
SerialiseConstraintsHFC ByronBlock Source # | |
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 ( We encode a
For more details, see: https://github.com/input-output-hk/ouroboros-network/pull/1175#issuecomment-558147194 |
Methods encodeDiskHfcBlock :: CodecConfig (HardForkBlock (CardanoEras c)) -> HardForkBlock (CardanoEras c) -> Encoding decodeDiskHfcBlock :: CodecConfig (HardForkBlock (CardanoEras c)) -> forall s. Decoder s (ByteString -> HardForkBlock (CardanoEras c)) reconstructHfcPrefixLen :: proxy (Header (HardForkBlock (CardanoEras c))) -> PrefixLen reconstructHfcNestedCtxt :: proxy (Header (HardForkBlock (CardanoEras c))) -> ShortByteString -> SizeInBytes -> SomeSecond (NestedCtxt Header) (HardForkBlock (CardanoEras c)) getHfcBinaryBlockInfo :: HardForkBlock (CardanoEras c) -> BinaryBlockInfo estimateHfcBlockSize :: Header (HardForkBlock (CardanoEras c)) -> SizeInBytes | |
CardanoHardForkConstraints c => SupportedNetworkProtocolVersion (CardanoBlock c) Source # | |
Methods supportedNodeToNodeVersions :: Proxy (CardanoBlock c) -> Map NodeToNodeVersion (BlockNodeToNodeVersion (CardanoBlock c)) supportedNodeToClientVersions :: Proxy (CardanoBlock c) -> Map NodeToClientVersion (BlockNodeToClientVersion (CardanoBlock c)) latestReleasedNodeVersion :: Proxy (CardanoBlock c) -> (Maybe NodeToNodeVersion, Maybe NodeToClientVersion) |