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::UID
This 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::Bag
The
Bag
holds 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
Alias
object 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)
}