cardano-ledger-byron-1.0.1.0: The blockchain layer of Cardano during the Byron era
Safe HaskellSafe-Inferred
LanguageHaskell2010

Cardano.Chain.Block.Block

Synopsis

Block

type Block = ABlock () Source #

data ABlock a Source #

Constructors

ABlock 

Fields

Instances

Instances details
Functor ABlock Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Methods

fmap ∷ (a → b) → ABlock a → ABlock b Source #

(<$) ∷ a → ABlock b → ABlock a Source #

ToJSON a ⇒ ToJSON (ABlock a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Generic (ABlock a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Associated Types

type Rep (ABlock a) ∷ TypeType Source #

Methods

fromABlock a → Rep (ABlock a) x Source #

toRep (ABlock a) x → ABlock a Source #

Show a ⇒ Show (ABlock a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Methods

showsPrecIntABlock a → ShowS Source #

showABlock a → String Source #

showList ∷ [ABlock a] → ShowS Source #

NFData a ⇒ NFData (ABlock a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Methods

rnfABlock a → () Source #

Buildable (WithEpochSlots Block) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Eq a ⇒ Eq (ABlock a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Methods

(==)ABlock a → ABlock a → Bool Source #

(/=)ABlock a → ABlock a → Bool Source #

type Rep (ABlock a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

type Rep (ABlock a) = D1 ('MetaData "ABlock" "Cardano.Chain.Block.Block" "cardano-ledger-byron-1.0.1.0-inplace" 'False) (C1 ('MetaCons "ABlock" 'PrefixI 'True) (S1 ('MetaSel ('Just "blockHeader") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (AHeader a)) :*: (S1 ('MetaSel ('Just "blockBody") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ABody a)) :*: S1 ('MetaSel ('Just "blockAnnotation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))))

Block Constructors

mkBlock Source #

Arguments

ProtocolMagicId 
ProtocolVersion 
SoftwareVersion 
Either GenesisHash Header 
EpochSlots 
SlotNumber 
SigningKey

The SigningKey used for signing the block

Certificate

A certificate of delegation from a genesis key to the SigningKey

Body 
Block 

Smart constructor for Block

mkBlockExplicit Source #

Arguments

ProtocolMagicId 
ProtocolVersion 
SoftwareVersion 
HeaderHash 
ChainDifficulty 
EpochSlots 
SlotNumber 
SigningKey

The SigningKey used for signing the block

Certificate

A certificate of delegation from a genesis key to the SigningKey

Body 
Block 

Smart constructor for Block, without requiring the entire previous Header. Instead, you give its hash and the difficulty of this block. These are derived from the previous header in mkBlock so if you have the previous header, consider using that one.

Block Accessors

Block Binary Serialization

encCBORBlockEpochSlotsBlockEncoding Source #

Encode a block, given a number of slots-per-epoch.

Unlike encCBORABOBBlock, this function does not take the deprecated epoch boundary blocks into account.

Block Formatting

ABlockOrBoundary

data ABlockOrBoundary a Source #

Instances

Instances details
Functor ABlockOrBoundary Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Methods

fmap ∷ (a → b) → ABlockOrBoundary a → ABlockOrBoundary b Source #

(<$) ∷ a → ABlockOrBoundary b → ABlockOrBoundary a Source #

ToJSON a ⇒ ToJSON (ABlockOrBoundary a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Generic (ABlockOrBoundary a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Associated Types

type Rep (ABlockOrBoundary a) ∷ TypeType Source #

Show a ⇒ Show (ABlockOrBoundary a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Eq a ⇒ Eq (ABlockOrBoundary a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

type Rep (ABlockOrBoundary a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

type Rep (ABlockOrBoundary a) = D1 ('MetaData "ABlockOrBoundary" "Cardano.Chain.Block.Block" "cardano-ledger-byron-1.0.1.0-inplace" 'False) (C1 ('MetaCons "ABOBBlock" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ABlock a))) :+: C1 ('MetaCons "ABOBBoundary" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ABoundaryBlock a))))

encCBORABOBBlockEpochSlotsABlock a → Encoding Source #

Encode a Block accounting for deprecated epoch boundary blocks

decCBORABOBBlockEpochSlotsDecoder s (Maybe Block) Source #

Decode a Block accounting for deprecated epoch boundary blocks

decCBORABlockOrBoundaryEpochSlotsDecoder s (ABlockOrBoundary ByteSpan) Source #

Decode a Block accounting for deprecated epoch boundary blocks

Previous versions of Cardano had an explicit boundary block between epochs. A Block was then represented as 'Either BoundaryBlock MainBlock'. We have now deprecated these explicit boundary blocks, but we still need to decode blocks in the old format. In the case that we find a boundary block, we drop it using dropBoundaryBlock and return a Nothing.

ABoundaryBlock

data ABoundaryBlock a Source #

For a boundary block, we keep the header, body, and an annotation for the whole thing (commonly the bytes from which it was decoded).

Constructors

ABoundaryBlock 

Fields

Instances

Instances details
Functor ABoundaryBlock Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Methods

fmap ∷ (a → b) → ABoundaryBlock a → ABoundaryBlock b Source #

(<$) ∷ a → ABoundaryBlock b → ABoundaryBlock a Source #

ToJSON a ⇒ ToJSON (ABoundaryBlock a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Generic (ABoundaryBlock a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Associated Types

type Rep (ABoundaryBlock a) ∷ TypeType Source #

Show a ⇒ Show (ABoundaryBlock a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Decoded (ABoundaryBlock ByteString) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Associated Types

type BaseType (ABoundaryBlock ByteString) Source #

Buildable (ABoundaryBlock a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Eq a ⇒ Eq (ABoundaryBlock a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

type Rep (ABoundaryBlock a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

type Rep (ABoundaryBlock a) = D1 ('MetaData "ABoundaryBlock" "Cardano.Chain.Block.Block" "cardano-ledger-byron-1.0.1.0-inplace" 'False) (C1 ('MetaCons "ABoundaryBlock" 'PrefixI 'True) ((S1 ('MetaSel ('Just "boundaryBlockLength") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int64) :*: S1 ('MetaSel ('Just "boundaryHeader") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ABoundaryHeader a))) :*: (S1 ('MetaSel ('Just "boundaryBody") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ABoundaryBody a)) :*: S1 ('MetaSel ('Just "boundaryAnnotation") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a))))
type BaseType (ABoundaryBlock ByteString) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

boundaryHashAnnotatedABoundaryBlock ByteStringHeaderHash Source #

Extract the hash of a boundary block from its annotation.

encCBORABoundaryBlockProtocolMagicIdABoundaryBlock a → Encoding Source #

See note on encCBORABoundaryHeader. This as well does not necessarily invert the decoder decCBORABoundaryBlock.

encCBORABOBBoundaryProtocolMagicIdABoundaryBlock a → Encoding Source #

encCBORABoundaryBlock but with the list length and tag discriminator bytes.

boundaryBlockSlot Source #

Arguments

EpochSlots 
Word64

Epoch number

SlotNumber 

Compute the slot number assigned to a boundary block

data ABoundaryBody a Source #

For boundary body data, we only keep an annotation. It's the body and extra body data.

Constructors

ABoundaryBody 

Fields

Instances

Instances details
Functor ABoundaryBody Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Methods

fmap ∷ (a → b) → ABoundaryBody a → ABoundaryBody b Source #

(<$) ∷ a → ABoundaryBody b → ABoundaryBody a Source #

ToJSON a ⇒ ToJSON (ABoundaryBody a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Generic (ABoundaryBody a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Associated Types

type Rep (ABoundaryBody a) ∷ TypeType Source #

Show a ⇒ Show (ABoundaryBody a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Decoded (ABoundaryBody ByteString) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Associated Types

type BaseType (ABoundaryBody ByteString) Source #

Eq a ⇒ Eq (ABoundaryBody a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

type Rep (ABoundaryBody a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

type Rep (ABoundaryBody a) = D1 ('MetaData "ABoundaryBody" "Cardano.Chain.Block.Block" "cardano-ledger-byron-1.0.1.0-inplace" 'False) (C1 ('MetaCons "ABoundaryBody" 'PrefixI 'True) (S1 ('MetaSel ('Just "boundaryBodyAnnotation") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a)))
type BaseType (ABoundaryBody ByteString) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

ABlockOrBoundaryHdr

data ABlockOrBoundaryHdr a Source #

Instances

Instances details
Functor ABlockOrBoundaryHdr Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Generic (ABlockOrBoundaryHdr a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Associated Types

type Rep (ABlockOrBoundaryHdr a) ∷ TypeType Source #

Show a ⇒ Show (ABlockOrBoundaryHdr a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

Eq a ⇒ Eq (ABlockOrBoundaryHdr a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

NoThunks a ⇒ NoThunks (ABlockOrBoundaryHdr a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

type Rep (ABlockOrBoundaryHdr a) Source # 
Instance details

Defined in Cardano.Chain.Block.Block

type Rep (ABlockOrBoundaryHdr a) = D1 ('MetaData "ABlockOrBoundaryHdr" "Cardano.Chain.Block.Block" "cardano-ledger-byron-1.0.1.0-inplace" 'False) (C1 ('MetaCons "ABOBBlockHdr" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (AHeader a))) :+: C1 ('MetaCons "ABOBBoundaryHdr" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ABoundaryHeader a))))

aBlockOrBoundaryHdr ∷ (AHeader a → b) → (ABoundaryHeader a → b) → ABlockOrBoundaryHdr a → b Source #

The analogue of either

encCBORABlockOrBoundaryHdrABlockOrBoundaryHdr ByteStringEncoding Source #

Encoder for ABlockOrBoundaryHdr which is using the annotation. It is right inverse of decCBORAblockOrBoundaryHdr.

TODO: add a round trip test, e.g.

decCBORABlockOrBoundaryHdr . encCBORABlockOrBoundaryHdr = id

which does not type check, but convey the meaning.

abobHdrSlotNoEpochSlotsABlockOrBoundaryHdr a → SlotNumber Source #

Slot number of the header

NOTE: Epoch slot number calculation must match the one in applyBoundary.