Skip to main content

Module stardust::alias_output

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) }