cardano/assets
Types
A type-alias for ’AssetName`, which are free-form byte-arrays between 0 and 32 bytes.
Alias
AssetName = ByteArrayLovelace is now a type wrapper for Int.
Alias
Lovelace = IntA type-alias for a PolicyId. A PolicyId is always 28-byte long
Alias
PolicyId = Hash<Blake2b_224, Script>Constants
Ada, the native currency, isn’t associated with any AssetName (it’s not
possible to mint Ada!).
By convention, it is an empty ByteArray.
Ada, the native currency, isn’t associated with any PolicyId (it’s not
possible to mint Ada!).
By convention, it is an empty ByteArray.
Functions
Constructing
      
  
  
  
      
        
        Construct a Value from an asset identifier (i.e. PolicyId + AssetName)
and a given quantity.
      
    
  
  
      
        
        Promote an arbitrary list of assets into a Value. This function fails
(i.e. halt the program execution) if:
- there’s any duplicate amongst PolicyId;
- there’s any duplicate amongst AssetName;
- the AssetNamearen’t sorted in ascending lexicographic order; or
- any asset quantity is null.
This function is meant to turn arbitrary user-defined Data into safe Value,
while checking for internal invariants.
      
    
  
  
      
        
        Construct a Value from a lovelace quantity.
Friendly reminder: 1 Ada = 1.000.000 Lovelace
      
    
  
  
      
        Inspecting
      
  
  
  
      
        
        Check is a Value is zero. That is, it has no assets and holds no Ada/Lovelace.
      
    
  
  
      
        
        Efficiently compare two values together, allowing a custom behaviour for Ada/Lovelace.
The second parameter is provided as Data, allowing to conveniently compare serialized
datums or similar structurually equivalent types (such as Pairs<PolicyId, Pairs<AssetName, Lovelace>>).
The third argument is a callback function to assert the left and right lovelace
quantities. Its first argument refers to the quantity of the first argument of
match, and the second argument of the callback to the quantity of the second
argument of match. In the absence of lovelace in any value, it defaults to 0.
const value: Value =
  assets.from_lovelace(30)
    |> assets.add("foo", "bar", 1)
    |> assets.add("foo", "baz", 42)
const datum: Data =
  assets.from_lovelace(20)
    |> assets.add("foo", "bar", 1)
    |> assets.add("foo", "baz", 42)
True == assets.match(value, datum, >=)
False == assets.match(value, datum, ==)
True == assets.match(value, datum, fn(value_lovelace, datum_lovelace) {
  2 * datum_lovelace >= value_lovelace
})
      
    
  
  
      
    
  
  
      
        
        A list of all token policies in that Value with non-zero tokens.
      
    
  
  
      
        
        Extract the quantity of a given asset.
      
    
  
  
      
        
        Get all tokens associated with a given policy.
      
    
  
  
      
        Combining
      
  
  
  
      
        
        Add a (positive or negative) quantity of a single token to a assets.
This is more efficient than merge for a single asset.
      
    
  
  
      
    
  
  
      
        
        Negates quantities of all tokens (including Ada) in that Value.
v1
  |> assets.negate
  |> assets.merge(v1)
  |> assets.is_zero
// True
      
    
  
  
      
        
        Get a subset of the assets restricted to the given policies.
      
    
  
  
      
    
  
  
      
        Transforming
      
  
  
  
      
        
        Flatten a Value as list of 3-tuple (PolicyId, AssetName, Quantity).
Handy to manipulate values as uniform lists.
      
    
  
  
      
        
        Flatten a Value as a list of results, possibly discarding some along the way.
When the transform function returns None, the result is discarded altogether.
      
    
  
  
      
    
  
  
      
    
  
Construct a Value from an asset identifier (i.e. PolicyId + AssetName)
and a given quantity.
Promote an arbitrary list of assets into a Value. This function fails
(i.e. halt the program execution) if:
- there’s any duplicate amongst PolicyId;
- there’s any duplicate amongst AssetName;
- the AssetNamearen’t sorted in ascending lexicographic order; or
- any asset quantity is null.
This function is meant to turn arbitrary user-defined Data into safe Value,
while checking for internal invariants.
Construct a Value from a lovelace quantity.
Friendly reminder: 1 Ada = 1.000.000 Lovelace
Check is a Value is zero. That is, it has no assets and holds no Ada/Lovelace.
Efficiently compare two values together, allowing a custom behaviour for Ada/Lovelace.
The second parameter is provided as Data, allowing to conveniently compare serialized
datums or similar structurually equivalent types (such as Pairs<PolicyId, Pairs<AssetName, Lovelace>>).
The third argument is a callback function to assert the left and right lovelace
quantities. Its first argument refers to the quantity of the first argument of
match, and the second argument of the callback to the quantity of the second
argument of match. In the absence of lovelace in any value, it defaults to 0.
const value: Value =
  assets.from_lovelace(30)
    |> assets.add("foo", "bar", 1)
    |> assets.add("foo", "baz", 42)
const datum: Data =
  assets.from_lovelace(20)
    |> assets.add("foo", "bar", 1)
    |> assets.add("foo", "baz", 42)
True == assets.match(value, datum, >=)
False == assets.match(value, datum, ==)
True == assets.match(value, datum, fn(value_lovelace, datum_lovelace) {
  2 * datum_lovelace >= value_lovelace
})
A list of all token policies in that Value with non-zero tokens.
Extract the quantity of a given asset.
Get all tokens associated with a given policy.
Combining
      
  
  
  
      
        
        Add a (positive or negative) quantity of a single token to a assets.
This is more efficient than merge for a single asset.
      
    
  
  
      
    
  
  
      
        
        Negates quantities of all tokens (including Ada) in that Value.
v1
  |> assets.negate
  |> assets.merge(v1)
  |> assets.is_zero
// True
      
    
  
  
      
        
        Get a subset of the assets restricted to the given policies.
      
    
  
  
      
    
  
  
      
        Transforming
      
  
  
  
      
        
        Flatten a Value as list of 3-tuple (PolicyId, AssetName, Quantity).
Handy to manipulate values as uniform lists.
      
    
  
  
      
        
        Flatten a Value as a list of results, possibly discarding some along the way.
When the transform function returns None, the result is discarded altogether.
      
    
  
  
      
    
  
  
      
    
  
Add a (positive or negative) quantity of a single token to a assets.
This is more efficient than merge for a single asset.
Negates quantities of all tokens (including Ada) in that Value.
v1
  |> assets.negate
  |> assets.merge(v1)
  |> assets.is_zero
// True
Get a subset of the assets restricted to the given policies.
Flatten a Value as list of 3-tuple (PolicyId, AssetName, Quantity).
Handy to manipulate values as uniform lists.
Flatten a Value as a list of results, possibly discarding some along the way.
When the transform function returns None, the result is discarded altogether.