Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data family NestedCtxt_ blk :: ( Type -> Type ) -> Type -> Type
- type RawBoundaryHeader = ABoundaryHeader ByteString
- type RawHeader = AHeader ByteString
- byronBlockEncodingOverhead :: Word32
- decodeByronBlock :: EpochSlots -> Decoder s ( ByteString -> ByronBlock )
- decodeByronBoundaryBlock :: EpochSlots -> Decoder s ( ByteString -> ByronBlock )
- decodeByronBoundaryHeader :: Decoder s ( ByteString -> RawBoundaryHeader )
- decodeByronHeaderHash :: Decoder s ( HeaderHash ByronBlock )
- decodeByronRegularBlock :: EpochSlots -> Decoder s ( ByteString -> ByronBlock )
- decodeByronRegularHeader :: EpochSlots -> Decoder s ( ByteString -> RawHeader )
- encodeByronBlock :: ByronBlock -> Encoding
- encodeByronBoundaryHeader :: RawBoundaryHeader -> Encoding
- encodeByronHeaderHash :: HeaderHash ByronBlock -> Encoding
- encodeByronRegularHeader :: RawHeader -> Encoding
- byronBinaryBlockInfo :: ByronBlock -> BinaryBlockInfo
- addV1Envelope :: ( SomeSecond ( NestedCtxt Header ) ByronBlock , ByteString ) -> ByteString
- decodeUnsizedHeader :: EpochSlots -> Decoder s ( ByteString -> UnsizedHeader )
- dropV1Envelope :: ByteString -> Except String ( SomeSecond ( NestedCtxt Header ) ByronBlock , ByteString )
- encodeUnsizedHeader :: UnsizedHeader -> Encoding
- fakeByronBlockSizeHint :: SizeInBytes
Data family instances
data family NestedCtxt_ blk :: ( Type -> Type ) -> Type -> Type Source #
Context identifying what kind of block we have
In almost all places we will use
NestedCtxt
rather than
NestedCtxt_
.
Instances
SameDepIndex ( NestedCtxt_ ByronBlock f) Source # | |
Defined in Ouroboros.Consensus.Byron.Ledger.Serialisation sameDepIndex :: NestedCtxt_ ByronBlock f a -> NestedCtxt_ ByronBlock f b -> Maybe (a :~: b) Source # |
|
Show ( NestedCtxt_ ByronBlock f a) Source # | |
Defined in Ouroboros.Consensus.Byron.Ledger.Serialisation showsPrec :: Int -> NestedCtxt_ ByronBlock f a -> ShowS Source # show :: NestedCtxt_ ByronBlock f a -> String Source # showList :: [ NestedCtxt_ ByronBlock f a] -> ShowS Source # |
|
data NestedCtxt_ ByronBlock f a Source # |
Since the Byron header does not contain the size, we include it in the nested type instead. |
|
type RawHeader = AHeader ByteString Source #
Serialisation
byronBlockEncodingOverhead :: Word32 Source #
The Byron block encoding overhead size in bytes.
This encompasses the overhead in bytes for everything that is encoded within a Byron block, excluding the actual generalized transactions (transactions, delegation certificates, update votes, and update proposals).
decodeByronBlock :: EpochSlots -> Decoder s ( ByteString -> ByronBlock ) Source #
Inverse of
encodeByronBlock
decodeByronBoundaryBlock :: EpochSlots -> Decoder s ( ByteString -> ByronBlock ) Source #
Decoder for a boundary Byron block.
PRECONDITION: the
ByteString
given as argument to the decoder is the
same as the one that is decoded.
This is a wrapper for
fromCBORABoundaryBlock
.
Use
decodeByronBlock
when you can, this function is provided for use by
the hard-fork combinator.
decodeByronBoundaryHeader :: Decoder s ( ByteString -> RawBoundaryHeader ) Source #
Inverse of
encodeByronBoundaryHeader
decodeByronHeaderHash :: Decoder s ( HeaderHash ByronBlock ) Source #
decodeByronRegularBlock :: EpochSlots -> Decoder s ( ByteString -> ByronBlock ) Source #
Decoder for a regular (non-EBB) Byron block.
PRECONDITION: the
ByteString
given as argument to the decoder is the
same as the one that is decoded.
This is a wrapper for
fromCBORABlock
.
Use
decodeByronBlock
when you can, this function is provided for use by
the hard-fork combinator.
decodeByronRegularHeader :: EpochSlots -> Decoder s ( ByteString -> RawHeader ) Source #
Inverse of
encodeByronRegularHeader
encodeByronBlock :: ByronBlock -> Encoding Source #
Encode a block
Should be backwards compatible with legacy (cardano-sl) nodes.
Implementation note: the decoder uses
fromCBORABlockOrBoundary
, which
has inverse
toCBORABlockOrBoundary
. This encoder is intended to be
binary compatible with
toCBORABlockOrBoundary
, but does not use it and
instead takes advantage of the annotations (using
encodePreEncoded
).
encodeByronBoundaryHeader :: RawBoundaryHeader -> Encoding Source #
Encodes a raw Byron EBB header without a tag indicating whether it's a regular header or an EBB header.
Uses the annotation, so cheap.
encodeByronRegularHeader :: RawHeader -> Encoding Source #
Encodes a raw Byron header without a tag indicating whether it's a regular header or an EBB header.
Uses the annotation, so cheap.
Support for on-disk format
byronBinaryBlockInfo :: ByronBlock -> BinaryBlockInfo Source #
The
BinaryBlockInfo
of the given
ByronBlock
.
NOTE: the bytestring obtained by slicing the serialised block using the
header offset and size will correspond to the
header annotation
, but not
to the serialised header, as we add an envelope (
encodeListLen
+ tag)
around a header in
encodeByronHeader
. This envelope must thus still be
added to the sliced bytestring before it can be deserialised using
decodeByronHeader
.
Unsized header
addV1Envelope :: ( SomeSecond ( NestedCtxt Header ) ByronBlock , ByteString ) -> ByteString Source #
decodeUnsizedHeader :: EpochSlots -> Decoder s ( ByteString -> UnsizedHeader ) Source #
Inverse of
encodeSizedHeader
dropV1Envelope :: ByteString -> Except String ( SomeSecond ( NestedCtxt Header ) ByronBlock , ByteString ) Source #
Drop the V1 EBB-or-regular-header envelope and reconstruct the context.
Since we don't know the block size, use
fakeByronBlockSizeHint
.
encodeUnsizedHeader :: UnsizedHeader -> Encoding Source #
Encode an unsized header
Does
not
have to backwards compatible with legacy (cardano-sl) nodes
(which never send or store these headers), but should be inverse to
decodeSizedHeader
, and moreover uses
fromCBORABlockOrBoundaryHdr
from
cardano-ledger-byron, and so we don't have too much choice in this encoder.
fakeByronBlockSizeHint :: SizeInBytes Source #
Fake size (used in compatibility mode)
Orphan instances
Serialise ByronHash Source # | |
HasNestedContent Header ByronBlock Source # | |
unnest :: Header ByronBlock -> DepPair ( NestedCtxt Header ByronBlock ) Source # nest :: DepPair ( NestedCtxt Header ByronBlock ) -> Header ByronBlock Source # |
|
SameDepIndex ( NestedCtxt_ ByronBlock f) Source # | |
sameDepIndex :: NestedCtxt_ ByronBlock f a -> NestedCtxt_ ByronBlock f b -> Maybe (a :~: b) Source # |
|
Show ( NestedCtxt_ ByronBlock f a) Source # | |
showsPrec :: Int -> NestedCtxt_ ByronBlock f a -> ShowS Source # show :: NestedCtxt_ ByronBlock f a -> String Source # showList :: [ NestedCtxt_ ByronBlock f a] -> ShowS Source # |