aiken/transaction/value
Types
A type-alias for ’AssetName`, which are free-form byte-arrays between 0 and 32 bytes.
Alias
AssetName = ByteArray
A multi-asset value that can be found when minting transaction. It always holds
a null quantity of Ada. Note that because of historical reasons, this is slightly
different from Value
found in transaction outputs.
Note that you’re never expected to construct a MintedValue
yourself. If you need to
manipulate multi-asset values, use Value
See also from_minted_value
.
A type-alias for a PolicyId
. A PolicyId
is always 28-byte long
Alias
PolicyId = Hash<Blake2b_224, Script>
Constants
ada_asset_name: ByteArray = #""
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_policy_id: 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
add(
self: Value,
policy_id: PolicyId,
asset_name: AssetName,
quantity: Int,
) -> Value
Add a (positive or negative) quantity of a single token to a value.
This is more efficient than merge
for a single asset.
flatten(self: Value) -> List<(PolicyId, AssetName, Int)>
Flatten a value as list of 3-tuple (PolicyId, AssetName, Quantity).
Handy to manipulate values as uniform lists.
flatten_with(
self: Value,
with: fn(PolicyId, AssetName, Int) -> Option<result>,
) -> List<result>
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.
from_asset(policy_id: PolicyId, asset_name: AssetName, quantity: Int) -> Value
Construct a Value
from an asset identifier (i.e. PolicyId
+ AssetName
)
and a given quantity.
from_lovelace(quantity: Int) -> Value
Construct a Value
from a lovelace quantity.
Friendly reminder: 1 Ada = 1.000.000 Lovelace
from_minted_value(self: MintedValue) -> Value
Convert a MintedValue
into a Value
.
is_zero(self: Value) -> Bool
Check is a Value
is zero. That is, it has no assets and holds no Ada/Lovelace.
lovelace_of(self: Value) -> Int
A specialized version of quantity_of
for the Ada currency.
merge(left: Value, right: Value) -> Value
Combine two Value
together.
negate(self: Value) -> Value
Negates quantities of all tokens (including Ada) in that Value
.
v1
|> value.negate
|> value.merge(v1)
|> value.is_zero
// True
policies(self: Value) -> List<PolicyId>
A list of all token policies in that Value with non-zero tokens.
quantity_of(self: Value, policy_id: PolicyId, asset_name: AssetName) -> Int
Extract the quantity of a given asset.
to_dict(self: Value) -> Dict<PolicyId, Dict<AssetName, Int>>
Convert the value into a dictionary of dictionaries.
to_minted_value(self: Value) -> MintedValue
Convert a Value
into a MintedValue
.
tokens(self: Value, policy_id: PolicyId) -> Dict<AssetName, Int>
Get all tokens associated with a given policy.
without_lovelace(self: Value) -> Value
Get a Value
excluding Ada.
zero() -> Value
Construct an empty Value
with nothing in it.