Module stardust::alias_output
- Struct
AliasOutput - Constants
- Function
extract_assets - Function
receive - Function
attach_alias - Function
load_alias
use iota::address;
use iota::bag;
use iota::balance;
use iota::dynamic_field;
use iota::dynamic_object_field;
use iota::hex;
use iota::object;
use iota::transfer;
use iota::tx_context;
use stardust::alias;
use std::address;
use std::ascii;
use std::bcs;
use std::option;
use std::string;
use std::type_name;
use std::vector;
Struct AliasOutput
Owned Object controlled by the Governor Address.
public struct AliasOutput<phantom T> has key
Fields
id: iota::object::UIDThis is a "random" UID, not the AliasID from Stardust.
balance: iota::balance::Balance<T>The amount of coins held by the output.
native_tokens: iota::bag::BagThe
Bagholds native tokens, key-ed by the stringified type of the asset. Example: key: "0xabcded:🔜:SOON", value:Balance<0xabcded::soon::SOON>.
Constants
The Alias dynamic object field name.
const ALIAS_NAME: vector<u8> = vector[97, 108, 105, 97, 115];
Function extract_assets
The function extracts assets from a legacy AliasOutput.
- returns the coin Balance,
- the native tokens Bag,
- and the
Aliasobject that persists the AliasID=ObjectID from Stardust.
public fun extract_assets<T>(output: stardust::alias_output::AliasOutput<T>): (iota::balance::Balance<T>, iota::bag::Bag, stardust::alias::Alias)
Implementation
public fun extract_assets<T>(mut output: AliasOutput<T>): (Balance<T>, Bag, Alias) {
// Load the related alias object.
let alias = load_alias(&mut output);
// Unpack the output into its basic part.
let AliasOutput {
id,
balance,
native_tokens,
} = output;
// Delete the output.
object::delete(id);
(balance, native_tokens, alias)
}
Function receive
Utility function to receive an AliasOutput object in other Stardust modules.
Other modules in the Stardust package can call this function to receive an AliasOutput object (nft).
public(package) fun receive<T>(parent: &mut iota::object::UID, output: iota::transfer::Receiving<stardust::alias_output::AliasOutput<T>>): stardust::alias_output::AliasOutput<T>
Implementation
public(package) fun receive<T>(
parent: &mut UID,
output: Receiving<AliasOutput<T>>,
): AliasOutput<T> {
transfer::receive(parent, output)
}
Function attach_alias
Utility function to attach an Alias to an AliasOutput.
public fun attach_alias<T>(output: &mut stardust::alias_output::AliasOutput<T>, alias: stardust::alias::Alias)
Implementation
public fun attach_alias<T>(output: &mut AliasOutput<T>, alias: Alias) {
dynamic_object_field::add(&mut output.id, ALIAS_NAME, alias)
}
Function load_alias
Loads the Alias object from the dynamic object field.
fun load_alias<T>(output: &mut stardust::alias_output::AliasOutput<T>): stardust::alias::Alias
Implementation
fun load_alias<T>(output: &mut AliasOutput<T>): Alias {
dynamic_object_field::remove(&mut output.id, ALIAS_NAME)
}