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

Cardano.Chain.Common.Merkle

Description

Merkle tree implementation.

See https://tools.ietf.org/html/rfc6962.

Synopsis

MerkleRoot

newtype MerkleRoot a Source #

Data type for root of Merkle tree

Constructors

MerkleRoot 

Fields

Instances

Instances details
ToJSON a ⇒ ToJSON (MerkleRoot a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

Generic (MerkleRoot a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

Associated Types

type Rep (MerkleRoot a) ∷ TypeType Source #

Methods

fromMerkleRoot a → Rep (MerkleRoot a) x Source #

toRep (MerkleRoot a) x → MerkleRoot a Source #

Show (MerkleRoot a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

DecCBOR a ⇒ FromCBOR (MerkleRoot a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

EncCBOR a ⇒ ToCBOR (MerkleRoot a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

Methods

toCBORMerkleRoot a → Encoding Source #

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

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

DecCBOR a ⇒ DecCBOR (MerkleRoot a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

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

Defined in Cardano.Chain.Common.Merkle

Methods

encCBORMerkleRoot a → Encoding Source #

encodedSizeExpr ∷ (∀ t. EncCBOR t ⇒ Proxy t → Size) → Proxy (MerkleRoot a) → Size Source #

encodedListSizeExpr ∷ (∀ t. EncCBOR t ⇒ Proxy t → Size) → Proxy [MerkleRoot a] → Size Source #

NFData (MerkleRoot a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

Methods

rnfMerkleRoot a → () Source #

Buildable (MerkleRoot a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

Methods

buildMerkleRoot a → Builder Source #

Eq (MerkleRoot a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

Methods

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

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

Ord (MerkleRoot a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

NoThunks (MerkleRoot a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

type Rep (MerkleRoot a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

type Rep (MerkleRoot a) = D1 ('MetaData "MerkleRoot" "Cardano.Chain.Common.Merkle" "cardano-ledger-byron-1.0.1.0-inplace" 'True) (C1 ('MetaCons "MerkleRoot" 'PrefixI 'True) (S1 ('MetaSel ('Just "getMerkleRoot") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Hash Raw))))

MerkleTree

data MerkleTree a Source #

Instances

Instances details
Foldable MerkleTree Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

Methods

foldMonoid m ⇒ MerkleTree m → m Source #

foldMapMonoid m ⇒ (a → m) → MerkleTree a → m Source #

foldMap'Monoid m ⇒ (a → m) → MerkleTree a → m Source #

foldr ∷ (a → b → b) → b → MerkleTree a → b Source #

foldr' ∷ (a → b → b) → b → MerkleTree a → b Source #

foldl ∷ (b → a → b) → b → MerkleTree a → b Source #

foldl' ∷ (b → a → b) → b → MerkleTree a → b Source #

foldr1 ∷ (a → a → a) → MerkleTree a → a Source #

foldl1 ∷ (a → a → a) → MerkleTree a → a Source #

toListMerkleTree a → [a] Source #

nullMerkleTree a → Bool Source #

lengthMerkleTree a → Int Source #

elemEq a ⇒ a → MerkleTree a → Bool Source #

maximumOrd a ⇒ MerkleTree a → a Source #

minimumOrd a ⇒ MerkleTree a → a Source #

sumNum a ⇒ MerkleTree a → a Source #

productNum a ⇒ MerkleTree a → a Source #

Generic (MerkleTree a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

Associated Types

type Rep (MerkleTree a) ∷ TypeType Source #

Methods

fromMerkleTree a → Rep (MerkleTree a) x Source #

toRep (MerkleTree a) x → MerkleTree a Source #

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

Defined in Cardano.Chain.Common.Merkle

(DecCBOR a, EncCBOR a) ⇒ FromCBOR (MerkleTree a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

EncCBOR a ⇒ ToCBOR (MerkleTree a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

Methods

toCBORMerkleTree a → Encoding Source #

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

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

(DecCBOR a, EncCBOR a) ⇒ DecCBOR (MerkleTree a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

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

Defined in Cardano.Chain.Common.Merkle

Methods

encCBORMerkleTree a → Encoding Source #

encodedSizeExpr ∷ (∀ t. EncCBOR t ⇒ Proxy t → Size) → Proxy (MerkleTree a) → Size Source #

encodedListSizeExpr ∷ (∀ t. EncCBOR t ⇒ Proxy t → Size) → Proxy [MerkleTree a] → Size Source #

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

Defined in Cardano.Chain.Common.Merkle

Methods

rnfMerkleTree a → () Source #

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

Defined in Cardano.Chain.Common.Merkle

Methods

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

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

type Rep (MerkleTree a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

type Rep (MerkleTree a) = D1 ('MetaData "MerkleTree" "Cardano.Chain.Common.Merkle" "cardano-ledger-byron-1.0.1.0-inplace" 'False) (C1 ('MetaCons "MerkleEmpty" 'PrefixI 'False) (U1TypeType) :+: C1 ('MetaCons "MerkleTree" 'PrefixI 'False) (S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word32) :*: S1 ('MetaSel ('NothingMaybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (MerkleNode a))))

mtRootMerkleTree a → MerkleRoot a Source #

Returns root of Merkle tree

mkMerkleTreeEncCBOR a ⇒ [a] → MerkleTree a Source #

Smart constructor for MerkleTree

mkMerkleTreeDecoded ∷ [Annotated a ByteString] → MerkleTree a Source #

Reconstruct a MerkleTree from a decoded list of items

MerkleNode

data MerkleNode a Source #

Constructors

MerkleBranch !(MerkleRoot a) !(MerkleNode a) !(MerkleNode a)

MerkleBranch mRoot mLeft mRight

MerkleLeaf !(MerkleRoot a) a

MerkleLeaf mRoot mVal

Instances

Instances details
Foldable MerkleNode Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

Methods

foldMonoid m ⇒ MerkleNode m → m Source #

foldMapMonoid m ⇒ (a → m) → MerkleNode a → m Source #

foldMap'Monoid m ⇒ (a → m) → MerkleNode a → m Source #

foldr ∷ (a → b → b) → b → MerkleNode a → b Source #

foldr' ∷ (a → b → b) → b → MerkleNode a → b Source #

foldl ∷ (b → a → b) → b → MerkleNode a → b Source #

foldl' ∷ (b → a → b) → b → MerkleNode a → b Source #

foldr1 ∷ (a → a → a) → MerkleNode a → a Source #

foldl1 ∷ (a → a → a) → MerkleNode a → a Source #

toListMerkleNode a → [a] Source #

nullMerkleNode a → Bool Source #

lengthMerkleNode a → Int Source #

elemEq a ⇒ a → MerkleNode a → Bool Source #

maximumOrd a ⇒ MerkleNode a → a Source #

minimumOrd a ⇒ MerkleNode a → a Source #

sumNum a ⇒ MerkleNode a → a Source #

productNum a ⇒ MerkleNode a → a Source #

Generic (MerkleNode a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

Associated Types

type Rep (MerkleNode a) ∷ TypeType Source #

Methods

fromMerkleNode a → Rep (MerkleNode a) x Source #

toRep (MerkleNode a) x → MerkleNode a Source #

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

Defined in Cardano.Chain.Common.Merkle

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

Defined in Cardano.Chain.Common.Merkle

Methods

rnfMerkleNode a → () Source #

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

Defined in Cardano.Chain.Common.Merkle

Methods

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

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

type Rep (MerkleNode a) Source # 
Instance details

Defined in Cardano.Chain.Common.Merkle

mkLeaf ∷ ∀ a. EncCBOR a ⇒ a → MerkleNode a Source #