| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Cardano.Ledger.Mary.Value
Synopsis
- newtype PolicyID = PolicyID {}
- newtype AssetName = AssetName {}
- data MaryValue = MaryValue !Coin !MultiAsset
- newtype MultiAsset = MultiAsset (Map PolicyID (Map AssetName Integer))
- insertMultiAsset ∷ (Integer → Integer → Integer) → PolicyID → AssetName → Integer → MultiAsset → MultiAsset
- lookupMultiAsset ∷ PolicyID → AssetName → MaryValue → Integer
- multiAssetFromList ∷ [(PolicyID, AssetName, Integer)] → MultiAsset
- policies ∷ MultiAsset → Set PolicyID
- mapMaybeMultiAsset ∷ (PolicyID → AssetName → Integer → Maybe Integer) → MultiAsset → MultiAsset
- filterMultiAsset ∷ (PolicyID → AssetName → Integer → Bool) → MultiAsset → MultiAsset
- pruneZeroMultiAsset ∷ MultiAsset → MultiAsset
- representationSize ∷ [(PolicyID, AssetName, Integer)] → Int
- showValue ∷ MaryValue → String
- flattenMultiAsset ∷ MultiAsset → [(PolicyID, AssetName, Integer)]
- valueFromList ∷ Coin → [(PolicyID, AssetName, Integer)] → MaryValue
- data CompactValue
- data family CompactForm a
- isMultiAssetSmallEnough ∷ MultiAsset → Bool
- assetNameToTextAsHex ∷ AssetName → Text
Documentation
Policy ID
Constructors
| PolicyID | |
Fields | |
Instances
Asset Name
Constructors
| AssetName | |
Fields | |
Instances
| ToJSON AssetName Source # | |
| ToJSONKey AssetName Source # | |
Defined in Cardano.Ledger.Mary.Value | |
| DecCBOR AssetName Source # | |
| EncCBOR AssetName Source # | |
| NFData AssetName Source # | |
Defined in Cardano.Ledger.Mary.Value | |
| Show AssetName Source # | |
| Eq AssetName Source # | |
| Ord AssetName Source # | |
Defined in Cardano.Ledger.Mary.Value | |
| NoThunks AssetName Source # | |
The Value representing MultiAssets
Constructors
| MaryValue !Coin !MultiAsset |
Instances
| ToJSON MaryValue Source # | |||||
| DecCBOR MaryValue Source # | |||||
| EncCBOR MaryValue Source # | |||||
| ToKeyValuePairs MaryValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods toKeyValuePairs ∷ KeyValue e kv ⇒ MaryValue → [kv] Source # | |||||
| Compactible MaryValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value Associated Types
| |||||
| Val MaryValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods (<+>) ∷ MaryValue → MaryValue → MaryValue Source # (<×>) ∷ Integral i ⇒ i → MaryValue → MaryValue Source # (<->) ∷ MaryValue → MaryValue → MaryValue Source # isZero ∷ MaryValue → Bool Source # coin ∷ MaryValue → Coin Source # modifyCoin ∷ (Coin → Coin) → MaryValue → MaryValue Source # size ∷ MaryValue → Integer Source # pointwise ∷ (Integer → Integer → Bool) → MaryValue → MaryValue → Bool Source # isAdaOnly ∷ MaryValue → Bool Source # isAdaOnlyCompact ∷ CompactForm MaryValue → Bool Source # coinCompact ∷ CompactForm MaryValue → CompactForm Coin Source # injectCompact ∷ CompactForm Coin → CompactForm MaryValue Source # modifyCompactCoin ∷ (CompactForm Coin → CompactForm Coin) → CompactForm MaryValue → CompactForm MaryValue Source # | |||||
| NFData MaryValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| Monoid MaryValue Source # | |||||
| Semigroup MaryValue Source # | |||||
| Generic MaryValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value Associated Types
| |||||
| Show MaryValue Source # | |||||
| Eq MaryValue Source # | |||||
| Abelian MaryValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| Group MaryValue Source # | |||||
| NoThunks MaryValue Source # | |||||
| Inject Coin MaryValue Source # | |||||
| DecCBOR (CompactForm MaryValue) Source # | |||||
| EncCBOR (CompactForm MaryValue) Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| NFData (CompactForm MaryValue) Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods rnf ∷ CompactForm MaryValue → () # | |||||
| Show (CompactForm MaryValue) Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| Eq (CompactForm MaryValue) Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods (==) ∷ CompactForm MaryValue → CompactForm MaryValue → Bool # (/=) ∷ CompactForm MaryValue → CompactForm MaryValue → Bool # | |||||
| MemPack (CompactForm MaryValue) Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| NoThunks (CompactForm MaryValue) Source # | |||||
| newtype CompactForm MaryValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| type Rep MaryValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value type Rep MaryValue = D1 ('MetaData "MaryValue" "Cardano.Ledger.Mary.Value" "cardano-ledger-mary-1.10.0.0-inplace" 'False) (C1 ('MetaCons "MaryValue" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Coin) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 MultiAsset))) | |||||
newtype MultiAsset Source #
The MultiAssets map
Instances
| ToJSON MultiAsset Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods toJSON ∷ MultiAsset → Value Source # toEncoding ∷ MultiAsset → Encoding Source # toJSONList ∷ [MultiAsset] → Value Source # toEncodingList ∷ [MultiAsset] → Encoding Source # omitField ∷ MultiAsset → Bool Source # | |||||
| DecCBOR MultiAsset Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| EncCBOR MultiAsset Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods encCBOR ∷ MultiAsset → Encoding Source # | |||||
| NFData MultiAsset Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods rnf ∷ MultiAsset → () # | |||||
| Monoid MultiAsset Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| Semigroup MultiAsset Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods (<>) ∷ MultiAsset → MultiAsset → MultiAsset # sconcat ∷ NonEmpty MultiAsset → MultiAsset # stimes ∷ Integral b ⇒ b → MultiAsset → MultiAsset # | |||||
| Generic MultiAsset Source # | |||||
Defined in Cardano.Ledger.Mary.Value Associated Types
| |||||
| Show MultiAsset Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods showsPrec ∷ Int → MultiAsset → ShowS # show ∷ MultiAsset → String # showList ∷ [MultiAsset] → ShowS # | |||||
| Eq MultiAsset Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| Group MultiAsset Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods invert ∷ MultiAsset → MultiAsset Source # (~~) ∷ MultiAsset → MultiAsset → MultiAsset Source # pow ∷ Integral x ⇒ MultiAsset → x → MultiAsset Source # | |||||
| NoThunks MultiAsset Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| type Rep MultiAsset Source # | |||||
Defined in Cardano.Ledger.Mary.Value type Rep MultiAsset = D1 ('MetaData "MultiAsset" "Cardano.Ledger.Mary.Value" "cardano-ledger-mary-1.10.0.0-inplace" 'True) (C1 ('MetaCons "MultiAsset" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map PolicyID (Map AssetName Integer))))) | |||||
| type MemoHashIndex (MaryTxBodyRaw l) Source # | |||||
Defined in Cardano.Ledger.Mary.TxBody | |||||
insertMultiAsset ∷ (Integer → Integer → Integer) → PolicyID → AssetName → Integer → MultiAsset → MultiAsset Source #
insertMultiAsset comb policy asset n v, if comb = old new -> old, the integer in the MultiAsset is prefered over n if comb = old new -> new, then n is prefered over the integer in the MultiAsset if (comb old new) == 0, then that value should not be stored in the MultiAsset
multiAssetFromList ∷ [(PolicyID, AssetName, Integer)] → MultiAsset Source #
Rather than using prune to remove 0 assets, when can avoid adding them in the first place by using valueFromList to construct a MultiAsset
policies ∷ MultiAsset → Set PolicyID Source #
Extract the set of policies in the Value.
This function is equivalent to computing the support of the value in the spec.
mapMaybeMultiAsset ∷ (PolicyID → AssetName → Integer → Maybe Integer) → MultiAsset → MultiAsset Source #
Map a function over each multi asset value while optionally filtering values out. Canonical form is preserved.
Arguments
| ∷ (PolicyID → AssetName → Integer → Bool) | Predicate that needs to return |
| → MultiAsset | |
| → MultiAsset |
Filter multi assets. Canonical form is preserved.
pruneZeroMultiAsset ∷ MultiAsset → MultiAsset Source #
Remove all assets with that have zero amount specified
flattenMultiAsset ∷ MultiAsset → [(PolicyID, AssetName, Integer)] Source #
data CompactValue Source #
Constructors
| CompactValueAdaOnly !(CompactForm Coin) | |
| CompactValueMultiAsset !(CompactForm Coin) !Word32 !ShortByteString |
Instances
| DecCBOR CompactValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| EncCBOR CompactValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods | |||||
| NFData CompactValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods rnf ∷ CompactValue → () # | |||||
| Generic CompactValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value Associated Types
| |||||
| Show CompactValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods showsPrec ∷ Int → CompactValue → ShowS # show ∷ CompactValue → String # showList ∷ [CompactValue] → ShowS # | |||||
| Eq CompactValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| MemPack CompactValue Source # | We need to manually pack/unpack `CompactForm Coin` here because its MemPack instance can't be
used due to the requirement of it being compatible with the first case of
| ||||
Defined in Cardano.Ledger.Mary.Value | |||||
| NoThunks CompactValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| type Rep CompactValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value type Rep CompactValue = D1 ('MetaData "CompactValue" "Cardano.Ledger.Mary.Value" "cardano-ledger-mary-1.10.0.0-inplace" 'False) (C1 ('MetaCons "CompactValueAdaOnly" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 (CompactForm Coin))) :+: C1 ('MetaCons "CompactValueMultiAsset" 'PrefixI 'False) (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 (CompactForm Coin)) :*: (S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 Word32) :*: S1 ('MetaSel ('Nothing ∷ Maybe Symbol) 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 ShortByteString)))) | |||||
data family CompactForm a Source #
Instances
| FromJSON (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin Methods parseJSON ∷ Value → Parser (CompactForm Coin) Source # parseJSONList ∷ Value → Parser [CompactForm Coin] Source # | |||||
| ToJSON (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin Methods toJSON ∷ CompactForm Coin → Value Source # toEncoding ∷ CompactForm Coin → Encoding Source # toJSONList ∷ [CompactForm Coin] → Value Source # toEncodingList ∷ [CompactForm Coin] → Encoding Source # | |||||
| ToJSON (CompactForm DeltaCoin) | |||||
Defined in Cardano.Ledger.Coin Methods toJSON ∷ CompactForm DeltaCoin → Value Source # toEncoding ∷ CompactForm DeltaCoin → Encoding Source # toJSONList ∷ [CompactForm DeltaCoin] → Value Source # toEncodingList ∷ [CompactForm DeltaCoin] → Encoding Source # | |||||
| ToCBOR (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin | |||||
| DecCBOR (CompactForm Coin) | |||||
| DecCBOR (CompactForm DeltaCoin) | |||||
| DecCBOR (CompactForm MaryValue) Source # | |||||
| EncCBOR (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin | |||||
| EncCBOR (CompactForm DeltaCoin) | |||||
Defined in Cardano.Ledger.Coin | |||||
| EncCBOR (CompactForm MaryValue) Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| ToPlutusData (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Plutus.ToPlutusData Methods toPlutusData ∷ CompactForm Coin → Data Source # fromPlutusData ∷ Data → Maybe (CompactForm Coin) Source # | |||||
| NFData (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin Methods rnf ∷ CompactForm Coin → () # | |||||
| NFData (CompactForm DeltaCoin) | |||||
Defined in Cardano.Ledger.Coin Methods rnf ∷ CompactForm DeltaCoin → () # | |||||
| NFData (CompactForm MaryValue) Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods rnf ∷ CompactForm MaryValue → () # | |||||
| Monoid (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin Methods mappend ∷ CompactForm Coin → CompactForm Coin → CompactForm Coin # mconcat ∷ [CompactForm Coin] → CompactForm Coin # | |||||
| Semigroup (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin Methods (<>) ∷ CompactForm Coin → CompactForm Coin → CompactForm Coin # sconcat ∷ NonEmpty (CompactForm Coin) → CompactForm Coin # stimes ∷ Integral b ⇒ b → CompactForm Coin → CompactForm Coin # | |||||
| Generic (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin Associated Types
Methods from ∷ CompactForm Coin → Rep (CompactForm Coin) x # to ∷ Rep (CompactForm Coin) x → CompactForm Coin # | |||||
| Show (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin | |||||
| Show (CompactForm DeltaCoin) | |||||
Defined in Cardano.Ledger.Coin | |||||
| Show (CompactForm MaryValue) Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| Eq (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin Methods (==) ∷ CompactForm Coin → CompactForm Coin → Bool # (/=) ∷ CompactForm Coin → CompactForm Coin → Bool # | |||||
| Eq (CompactForm DeltaCoin) | |||||
Defined in Cardano.Ledger.Coin Methods (==) ∷ CompactForm DeltaCoin → CompactForm DeltaCoin → Bool # (/=) ∷ CompactForm DeltaCoin → CompactForm DeltaCoin → Bool # | |||||
| Eq (CompactForm MaryValue) Source # | |||||
Defined in Cardano.Ledger.Mary.Value Methods (==) ∷ CompactForm MaryValue → CompactForm MaryValue → Bool # (/=) ∷ CompactForm MaryValue → CompactForm MaryValue → Bool # | |||||
| Ord (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin Methods compare ∷ CompactForm Coin → CompactForm Coin → Ordering # (<) ∷ CompactForm Coin → CompactForm Coin → Bool # (<=) ∷ CompactForm Coin → CompactForm Coin → Bool # (>) ∷ CompactForm Coin → CompactForm Coin → Bool # (>=) ∷ CompactForm Coin → CompactForm Coin → Bool # max ∷ CompactForm Coin → CompactForm Coin → CompactForm Coin # min ∷ CompactForm Coin → CompactForm Coin → CompactForm Coin # | |||||
| Abelian (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin | |||||
| Group (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin Methods invert ∷ CompactForm Coin → CompactForm Coin Source # (~~) ∷ CompactForm Coin → CompactForm Coin → CompactForm Coin Source # pow ∷ Integral x ⇒ CompactForm Coin → x → CompactForm Coin Source # | |||||
| MemPack (CompactForm Coin) | This instance prefixes with a 0 Tag for binary compatibility with compact form of multiassets. | ||||
Defined in Cardano.Ledger.Coin | |||||
| MemPack (CompactForm MaryValue) Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| NoThunks (CompactForm Coin) | |||||
| NoThunks (CompactForm DeltaCoin) | |||||
| NoThunks (CompactForm MaryValue) Source # | |||||
| Prim (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin Methods sizeOfType# ∷ Proxy (CompactForm Coin) → Int# Source # sizeOf# ∷ CompactForm Coin → Int# Source # alignmentOfType# ∷ Proxy (CompactForm Coin) → Int# Source # alignment# ∷ CompactForm Coin → Int# Source # indexByteArray# ∷ ByteArray# → Int# → CompactForm Coin Source # readByteArray# ∷ MutableByteArray# s → Int# → State# s → (# State# s, CompactForm Coin #) Source # writeByteArray# ∷ MutableByteArray# s → Int# → CompactForm Coin → State# s → State# s Source # setByteArray# ∷ MutableByteArray# s → Int# → Int# → CompactForm Coin → State# s → State# s Source # indexOffAddr# ∷ Addr# → Int# → CompactForm Coin Source # readOffAddr# ∷ Addr# → Int# → State# s → (# State# s, CompactForm Coin #) Source # writeOffAddr# ∷ Addr# → Int# → CompactForm Coin → State# s → State# s Source # setOffAddr# ∷ Addr# → Int# → Int# → CompactForm Coin → State# s → State# s Source # | |||||
| Prim (CompactForm DeltaCoin) | |||||
Defined in Cardano.Ledger.Coin Methods sizeOfType# ∷ Proxy (CompactForm DeltaCoin) → Int# Source # sizeOf# ∷ CompactForm DeltaCoin → Int# Source # alignmentOfType# ∷ Proxy (CompactForm DeltaCoin) → Int# Source # alignment# ∷ CompactForm DeltaCoin → Int# Source # indexByteArray# ∷ ByteArray# → Int# → CompactForm DeltaCoin Source # readByteArray# ∷ MutableByteArray# s → Int# → State# s → (# State# s, CompactForm DeltaCoin #) Source # writeByteArray# ∷ MutableByteArray# s → Int# → CompactForm DeltaCoin → State# s → State# s Source # setByteArray# ∷ MutableByteArray# s → Int# → Int# → CompactForm DeltaCoin → State# s → State# s Source # indexOffAddr# ∷ Addr# → Int# → CompactForm DeltaCoin Source # readOffAddr# ∷ Addr# → Int# → State# s → (# State# s, CompactForm DeltaCoin #) Source # writeOffAddr# ∷ Addr# → Int# → CompactForm DeltaCoin → State# s → State# s Source # setOffAddr# ∷ Addr# → Int# → Int# → CompactForm DeltaCoin → State# s → State# s Source # | |||||
| Uniform (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin Methods uniformM ∷ StatefulGen g m ⇒ g → m (CompactForm Coin) Source # | |||||
| UniformRange (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin Methods uniformRM ∷ StatefulGen g m ⇒ (CompactForm Coin, CompactForm Coin) → g → m (CompactForm Coin) Source # isInRange ∷ (CompactForm Coin, CompactForm Coin) → CompactForm Coin → Bool Source # | |||||
| newtype CompactForm Coin | |||||
Defined in Cardano.Ledger.Coin | |||||
| newtype CompactForm DeltaCoin | |||||
Defined in Cardano.Ledger.Coin | |||||
| newtype CompactForm MaryValue Source # | |||||
Defined in Cardano.Ledger.Mary.Value | |||||
| type Rep (CompactForm Coin) | |||||
Defined in Cardano.Ledger.Coin type Rep (CompactForm Coin) = D1 ('MetaData "CompactForm" "Cardano.Ledger.Coin" "cardano-ledger-core-1.19.0.0-inplace" 'True) (C1 ('MetaCons "CompactCoin" 'PrefixI 'True) (S1 ('MetaSel ('Just "unCompactCoin") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64))) | |||||
isMultiAssetSmallEnough ∷ MultiAsset → Bool Source #
Unlike representationSize, this function cheaply checks whether
any offset within a MultiAsset compact representation is likely to overflow Word16.
compact form inequality: 8n (Word64) + 2n (Word16) + 2n (Word16) + 28p (policy ids) + sum of lengths of unique asset names <= 65535 maximum size for the asset name is 32 bytes, so: 8n + 2n + 2n + 28p + 32n <= 65535 where: n = total number of assets, p = number of unique policy ids