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;

Module Functions​

pub(pkg) 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) }

Structs​

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>.

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

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

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

Constants​

const ALIAS_NAME​

The Alias dynamic object field name.

const ALIAS_NAME: vector<u8> = vector[97, 108, 105, 97, 115];