cardano-ledger-binary-1.8.0.0: Binary serialization library used throughout ledger
Safe HaskellSafe-Inferred
LanguageHaskell2010

Cardano.Ledger.Binary.Encoding

Synopsis

Running decoders

serializeEncCBOR a ⇒ Version → a → ByteString Source #

Serialize a Haskell value with a EncCBOR instance to an external binary representation.

The output is represented as a lazy ByteString and is constructed incrementally.

serialize'EncCBOR a ⇒ Version → a → ByteString Source #

Serialize a Haskell value to an external binary representation.

The output is represented as a strict ByteString.

serializeBuilderEncCBOR a ⇒ Version → a → Builder Source #

Serialize into a Builder. Useful if you want to throw other ByteStrings around it.

Hash

hashWithEncoder ∷ ∀ h a. HashAlgorithm h ⇒ Version → (a → Encoding) → a → Hash h a Source #

hashEncCBOR ∷ ∀ h a. (HashAlgorithm h, EncCBOR a) ⇒ Version → a → Hash h a Source #

Decoders

data Tokens Source #

A flattened representation of a term, which is independent of any underlying binary representation, but which we later serialise into CBOR format.

Since: cborg-0.2.0.0

Instances

Instances details
Show Tokens 
Instance details

Defined in Codec.CBOR.Encoding

Methods

showsPrecIntTokensShowS #

showTokensString #

showList ∷ [Tokens] → ShowS #

Eq Tokens 
Instance details

Defined in Codec.CBOR.Encoding

Methods

(==)TokensTokensBool #

(/=)TokensTokensBool #

ToCBOR (TokensTokens) 
Instance details

Defined in Cardano.Binary.ToCBOR

Methods

toCBOR ∷ (TokensTokens) → Encoding Source #

encodedSizeExpr ∷ (∀ t. ToCBOR t ⇒ Proxy t → Size) → Proxy (TokensTokens) → Size Source #

encodedListSizeExpr ∷ (∀ t. ToCBOR t ⇒ Proxy t → Size) → Proxy [TokensTokens] → Size Source #

EncCBOR (TokensTokens) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBOR ∷ (TokensTokens) → Encoding Source #

withCurrentEncodingVersion ∷ (VersionEncoding) → Encoding Source #

Get access to the current version being used in the encoder

enforceEncodingVersionVersionEncodingEncoding Source #

Ignore the current version of the encoder and enforce the supplied one instead.

ifEncodingVersionAtLeast Source #

Arguments

Version 
Encoding

Use this encoder if current encoder version is larger or equal to the supplied Version

Encoding

Use this encoder if current encoder version is lower than the supplied Version

Encoding 

Conditionoly choose the encoder newer or older deceder, depending on the current version. Supplied version acts as a pivot.

Example

Custom

encodeMaybe ∷ (a → Encoding) → Maybe a → Encoding Source #

encodeNullMaybe ∷ (a → Encoding) → Maybe a → Encoding Source #

Alternative way to encode a Maybe type.

Note - this is not the default method for encoding Maybe, use encodeMaybe instead

encodeNullStrictMaybe ∷ (a → Encoding) → StrictMaybe a → Encoding Source #

Alternative way to encode a Maybe type.

Note - this is not the default method for encoding StrictMaybe, use encodeStrictMaybe instead

encodeTuple ∷ (a → Encoding) → (b → Encoding) → (a, b) → Encoding Source #

encodeRatio ∷ (t → Encoding) → Ratio t → Encoding Source #

encodeEnumEnum a ⇒ a → Encoding Source #

Containers

encodeList ∷ (a → Encoding) → [a] → Encoding Source #

Encode a list. Versions variance:

  • [>= 2] - Variable length encoding for lists longer than 23 elements, otherwise exact length encoding
  • [< 2] - Variable length encoding

encodeSeq ∷ (a → Encoding) → Seq a → Encoding Source #

Encode a Seq. Variable length encoding for Sequences larger than 23 elements, otherwise exact length encoding

encodeSet ∷ (a → Encoding) → Set a → Encoding Source #

Encode a Set. Versions variance:

  • [>= 9] - Variable length encoding for Sets larger than 23 elements, otherwise exact length encoding. Prefixes with a special 258 setTag.
  • [>= 2] - Variable length encoding for Sets larger than 23 elements, otherwise exact length encoding
  • [< 2] - Variable length encoding. Prefixes with a special 258 setTag.

encodeMap ∷ (k → Encoding) → (v → Encoding) → Map k v → Encoding Source #

Encode a Map. Versions variance:

  • [>= 2] - Variable length encoding for Maps larger than 23 key value pairs, otherwise exact length encoding
  • [< 2] - Variable length encoding.

encodeVMap ∷ (Vector kv k, Vector vv v) ⇒ (k → Encoding) → (v → Encoding) → VMap kv vv k v → Encoding Source #

Mimics Map encoder encodeMap identically.

encodeVectorVector v a ⇒ (a → Encoding) → v a → Encoding Source #

Generic encoder for vectors. Its intended use is to allow easy definition of EncCBOR instances for custom vector

variableListLenEncoding Source #

Arguments

Int

Number of elements in the encoded data structure.

Encoding

Encoding for the actual data structure

Encoding 

Conditionally use variable length encoding for list like structures with length larger than 23, otherwise use exact list length encoding.

Helpers

encodeFoldableEncoderFoldable f ⇒ (a → Encoding) → f a → Encoding Source #

Encode any Foldable with the variable list length encoding, which will use indefinite encoding over 23 elements and definite otherwise.

encodeFoldableAsIndefLenListFoldable f ⇒ (a → Encoding) → f a → Encoding Source #

Encode any Foldable with indefinite list length encoding

encodeFoldableMapEncoder Source #

Arguments

Foldable f 
⇒ (Word → a → Maybe Encoding)

A function that accepts an index of the value in the foldable data strucure, the actual value and optionally produces the encoding of the value and an index if that value should be encoded.

→ f a 
Encoding 

Encode a data structure as a Map with the 0-based index for a Key to a value. Uses variable map length encoding, which means an indefinite encoding for maps with over 23 elements and definite otherwise.

lengthThresholdInt Source #

This is the optimal maximum number for encoding exact length. Above that threashold using variable length encoding will result in less bytes on the wire.

Time

Network

Original

class EncCBOR a where Source #

Minimal complete definition

Nothing

Methods

encCBOR ∷ a → Encoding Source #

default encCBORToCBOR a ⇒ a → Encoding Source #

Instances

Instances details
EncCBOR ByteArray Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR Void Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORVoidEncoding Source #

EncCBOR Int16 Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORInt16Encoding Source #

EncCBOR Int32 Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORInt32Encoding Source #

EncCBOR Int64 Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORInt64Encoding Source #

EncCBOR Int8 Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORInt8Encoding Source #

EncCBOR Word16 Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORWord16Encoding Source #

EncCBOR Word32 Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORWord32Encoding Source #

EncCBOR Word64 Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORWord64Encoding Source #

EncCBOR Word8 Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORWord8Encoding Source #

EncCBOR ByteString Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR ByteString Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR ShortByteString Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR Proof Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORProofEncoding Source #

EncCBOR SignKey Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR VerKey Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORVerKeyEncoding Source #

EncCBOR PreEncoded Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR Encoding Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR Version Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR BlockNo Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR EpochInterval Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR EpochNo Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR EpochSize Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR SlotNo Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORSlotNoEncoding Source #

EncCBOR SystemStart Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR ByteArray Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR SlicedByteArray Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR Encoding Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR Term Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORTermEncoding Source #

EncCBOR IPv4 Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORIPv4Encoding Source #

EncCBOR IPv6 Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORIPv6Encoding Source #

EncCBOR Data Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORDataEncoding Source #

EncCBOR ScriptContext Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR ScriptContext Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR ScriptContext Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR Text Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORTextEncoding Source #

EncCBOR UTCTime Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR Integer Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR Natural Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR () Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBOR ∷ () → Encoding Source #

EncCBOR Bool Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORBoolEncoding Source #

EncCBOR Double Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORDoubleEncoding Source #

EncCBOR Float Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORFloatEncoding Source #

EncCBOR Int Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORIntEncoding Source #

EncCBOR Word Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORWordEncoding Source #

EncCBOR a ⇒ EncCBOR (NonEmpty a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORNonEmpty a → Encoding Source #

EncCBOR a ⇒ EncCBOR (Ratio a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORRatio a → Encoding Source #

DSIGNAlgorithm v ⇒ EncCBOR (SigDSIGN v) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORSigDSIGN v → Encoding Source #

DSIGNAlgorithm v ⇒ EncCBOR (SignKeyDSIGN v) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

DSIGNAlgorithm v ⇒ EncCBOR (VerKeyDSIGN v) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

KESAlgorithm k ⇒ EncCBOR (SigKES k) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORSigKES k → Encoding Source #

KESAlgorithm k ⇒ EncCBOR (VerKeyKES k) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORVerKeyKES k → Encoding Source #

EncCBOR (CertVRF MockVRF) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR (CertVRF SimpleVRF) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR (CertVRF PraosVRF) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR (OutputVRF v) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBOROutputVRF v → Encoding Source #

EncCBOR (SignKeyVRF MockVRF) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR (SignKeyVRF SimpleVRF) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR (SignKeyVRF PraosVRF) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR (VerKeyVRF MockVRF) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR (VerKeyVRF SimpleVRF) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR (VerKeyVRF PraosVRF) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR a ⇒ EncCBOR (Sized a) Source #

Discards the size.

Instance details

Defined in Cardano.Ledger.Binary.Decoding.Sized

Methods

encCBORSized a → Encoding Source #

EncCBORGroup a ⇒ EncCBOR (CBORGroup a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Group

Methods

encCBORCBORGroup a → Encoding Source #

Serialise t ⇒ EncCBOR (WithOrigin t) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR a ⇒ EncCBOR (StrictMaybe a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

EncCBOR a ⇒ EncCBOR (StrictSeq a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORStrictSeq a → Encoding Source #

EncCBOR a ⇒ EncCBOR (Seq a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORSeq a → Encoding Source #

EncCBOR a ⇒ EncCBOR (Set a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORSet a → Encoding Source #

EncCBOR a ⇒ EncCBOR (Vector a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORVector a → Encoding Source #

(EncCBOR a, Prim a) ⇒ EncCBOR (Vector a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORVector a → Encoding Source #

(EncCBOR a, Storable a) ⇒ EncCBOR (Vector a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORVector a → Encoding Source #

(EncCBOR a, Unbox a) ⇒ EncCBOR (Vector a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORVector a → Encoding Source #

EncCBOR a ⇒ EncCBOR (Maybe a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORMaybe a → Encoding Source #

EncCBOR a ⇒ EncCBOR [a] Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBOR ∷ [a] → Encoding Source #

(EncCBOR a, EncCBOR b) ⇒ EncCBOR (Either a b) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBOREither a b → Encoding Source #

EncCBOR (Fixed p) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORFixed p → Encoding Source #

DSIGNAlgorithm v ⇒ EncCBOR (SignedDSIGN v a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORSignedDSIGN v a → Encoding Source #

HashAlgorithm h ⇒ EncCBOR (Hash h a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORHash h a → Encoding Source #

VRFAlgorithm v ⇒ EncCBOR (CertifiedVRF v a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORCertifiedVRF v a → Encoding Source #

(EncCBOR k, EncCBOR v) ⇒ EncCBOR (Map k v) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORMap k v → Encoding Source #

(EncCBOR a, EncCBOR b) ⇒ EncCBOR (a, b) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBOR ∷ (a, b) → Encoding Source #

EncCBOR (TokensTokens) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBOR ∷ (TokensTokens) → Encoding Source #

EncCBOR a ⇒ EncCBOR (Tagged s a) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORTagged s a → Encoding Source #

(EncCBOR a, EncCBOR b, EncCBOR c) ⇒ EncCBOR (a, b, c) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBOR ∷ (a, b, c) → Encoding Source #

(EncCBOR k, EncCBOR v, Vector kv k, Vector vv v) ⇒ EncCBOR (VMap kv vv k v) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBORVMap kv vv k v → Encoding Source #

(EncCBOR a, EncCBOR b, EncCBOR c, EncCBOR d) ⇒ EncCBOR (a, b, c, d) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBOR ∷ (a, b, c, d) → Encoding Source #

(EncCBOR a, EncCBOR b, EncCBOR c, EncCBOR d, EncCBOR e) ⇒ EncCBOR (a, b, c, d, e) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBOR ∷ (a, b, c, d, e) → Encoding Source #

(EncCBOR a, EncCBOR b, EncCBOR c, EncCBOR d, EncCBOR e, EncCBOR f) ⇒ EncCBOR (a, b, c, d, e, f) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBOR ∷ (a, b, c, d, e, f) → Encoding Source #

(EncCBOR a, EncCBOR b, EncCBOR c, EncCBOR d, EncCBOR e, EncCBOR f, EncCBOR g) ⇒ EncCBOR (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

Methods

encCBOR ∷ (a, b, c, d, e, f, g) → Encoding Source #

newtype PreEncoded Source #

Constructors

PreEncoded 

Instances

Instances details
EncCBOR PreEncoded Source # 
Instance details

Defined in Cardano.Ledger.Binary.Encoding.EncCBOR

toByronCBOREncCBOR a ⇒ a → Encoding Source #

Convert a versioned EncCBOR instance to a plain Encoding using Byron protocol version.

Nested CBOR-in-CBOR

encodeNestedCborEncCBOR a ⇒ a → Encoding Source #

Encode and serialise the given a and surround it with the semantic tag 24 In CBOR diagnostic notation: > 24(hDEADBEEF)

encodeNestedCborBytesByteStringEncoding Source #

Like encodeNestedCbor, but assumes nothing about the shape of input object, so that it must be passed as a binary ByteString blob. It's the caller responsibility to ensure the input ByteString correspond indeed to valid, previously-serialised CBOR data.

Tools

runByteBuilderIntBuilderByteString Source #

Run a ByteString Builder using a strategy aimed at making smaller things efficiently.

It takes a size hint and produces a strict ByteString. This will be fast when the size hint is the same or slightly bigger than the true size.

encodeMemPackMemPack a ⇒ a → Encoding Source #

Encode as bytes using MemPack and then encode those bytes as CBOR