| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Ouroboros.Consensus.Cardano
Synopsis
- type CardanoBlock c = HardForkBlock (CardanoEras c)
- type ProtocolByron = HardForkProtocol '[ByronBlock]
- type ProtocolShelley = HardForkProtocol '[ShelleyBlock StandardShelley]
- type ProtocolCardano = HardForkProtocol '[ByronBlock, ShelleyBlock StandardShelley, ShelleyBlock StandardAllegra, ShelleyBlock StandardMary]
- data ProtocolParamsByron = ProtocolParamsByron {}
- data ProtocolParamsShelley c (f :: Type -> Type) = ProtocolParamsShelley {}
- data ProtocolParamsAllegra c (f :: Type -> Type) = ProtocolParamsAllegra {}
- data ProtocolParamsMary c (f :: Type -> Type) = ProtocolParamsMary {}
- data ProtocolParamsTransition eraFrom eraTo = ProtocolParamsTransition {}
- data Protocol (m :: Type -> Type) blk p where
- ProtocolByron :: ProtocolParamsByron -> Protocol m ByronBlockHFC ProtocolByron
- ProtocolShelley :: ProtocolParamsShelley StandardCrypto [] -> Protocol m (ShelleyBlockHFC StandardShelley) ProtocolShelley
- ProtocolCardano :: ProtocolParamsByron -> ProtocolParamsShelley StandardCrypto Maybe -> ProtocolParamsAllegra StandardCrypto Maybe -> ProtocolParamsMary StandardCrypto Maybe -> ProtocolParamsTransition ByronBlock (ShelleyBlock StandardShelley) -> ProtocolParamsTransition (ShelleyBlock StandardShelley) (ShelleyBlock StandardAllegra) -> ProtocolParamsTransition (ShelleyBlock StandardAllegra) (ShelleyBlock StandardMary) -> Protocol m (CardanoBlock StandardCrypto) ProtocolCardano
- verifyProtocol :: Protocol m blk p -> p :~: BlockProtocol blk
- protocolInfo :: forall m blk p. IOLike m => Protocol m blk p -> ProtocolInfo m blk
- runProtocol :: Protocol m blk p -> Dict (RunNode blk)
- module Ouroboros.Consensus.Shelley.Node
- module Ouroboros.Consensus.Byron.Node
- module Ouroboros.Consensus.Protocol.PBFT
- module Ouroboros.Consensus.Protocol.Abstract
- data ProtocolClient blk p where
- protocolClientInfo :: ProtocolClient blk p -> ProtocolClientInfo blk
- runProtocolClient :: ProtocolClient blk p -> Dict (RunNode blk)
- verifyProtocolClient :: ProtocolClient blk p -> p :~: BlockProtocol blk
The block type of the Cardano block chain
type CardanoBlock c = HardForkBlock (CardanoEras c) Source #
The Cardano block.
Thanks to the pattern synonyms, you can treat this as a sum type with
constructors BlockByron and BlockShelley.
f :: CardanoBlock c -> _ f (BlockByron b) = _ f (BlockShelley s) = _ f (BlockAllegra a) = _ f (BlockMary m) = _
Supported protocols
type ProtocolByron = HardForkProtocol '[ByronBlock] Source #
type ProtocolCardano = HardForkProtocol '[ByronBlock, ShelleyBlock StandardShelley, ShelleyBlock StandardAllegra, ShelleyBlock StandardMary] Source #
Abstract over the various protocols
data ProtocolParamsByron Source #
Parameters needed to run Byron
data ProtocolParamsShelley c (f :: Type -> Type) Source #
Parameters needed to run Shelley
Constructors
| ProtocolParamsShelley | |
Fields
| |
data ProtocolParamsAllegra c (f :: Type -> Type) Source #
Parameters needed to run Allegra
Constructors
| ProtocolParamsAllegra | |
Fields | |
data ProtocolParamsMary c (f :: Type -> Type) Source #
Parameters needed to run Mary
Constructors
| ProtocolParamsMary | |
Fields | |
data ProtocolParamsTransition eraFrom eraTo Source #
Parameters needed to transition between two eras.
The two eras are phantom type parameters of this type to avoid mixing up
multiple ProtocolParamsTransitions
Constructors
| ProtocolParamsTransition | |
Fields
| |
data Protocol (m :: Type -> Type) blk p where Source #
Consensus protocol to use
Constructors
| ProtocolByron :: ProtocolParamsByron -> Protocol m ByronBlockHFC ProtocolByron | Run PBFT against the real Byron ledger |
| ProtocolShelley :: ProtocolParamsShelley StandardCrypto [] -> Protocol m (ShelleyBlockHFC StandardShelley) ProtocolShelley | Run TPraos against the real Shelley ledger |
| ProtocolCardano :: ProtocolParamsByron -> ProtocolParamsShelley StandardCrypto Maybe -> ProtocolParamsAllegra StandardCrypto Maybe -> ProtocolParamsMary StandardCrypto Maybe -> ProtocolParamsTransition ByronBlock (ShelleyBlock StandardShelley) -> ProtocolParamsTransition (ShelleyBlock StandardShelley) (ShelleyBlock StandardAllegra) -> ProtocolParamsTransition (ShelleyBlock StandardAllegra) (ShelleyBlock StandardMary) -> Protocol m (CardanoBlock StandardCrypto) ProtocolCardano | Run the protocols of the Cardano block |
verifyProtocol :: Protocol m blk p -> p :~: BlockProtocol blk Source #
Data required to run a protocol
protocolInfo :: forall m blk p. IOLike m => Protocol m blk p -> ProtocolInfo m blk Source #
Data required to run the selected protocol
Evidence that we can run all the supported protocols
Client support for nodes running a protocol
data ProtocolClient blk p where Source #
Node client support for each consensus protocol.
This is like Protocol but for clients of the node, so with less onerous
requirements than to run a node.
protocolClientInfo :: ProtocolClient blk p -> ProtocolClientInfo blk Source #
Data required by clients of a node running the specified protocol.
runProtocolClient :: ProtocolClient blk p -> Dict (RunNode blk) Source #
Sanity check that we have the right class instances available
verifyProtocolClient :: ProtocolClient blk p -> p :~: BlockProtocol blk Source #
Sanity check that we have the right type combinations