Module iota::iota
Coin<IOTA> is the token used to pay for gas in IOTA.
It has 9 decimals, and the smallest unit (10^-9) is called "nano".
use iota::address;
use iota::bag;
use iota::balance;
use iota::coin;
use iota::config;
use iota::deny_list;
use iota::dynamic_field;
use iota::dynamic_object_field;
use iota::event;
use iota::hex;
use iota::object;
use iota::transfer;
use iota::tx_context;
use iota::types;
use iota::url;
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 entry transfer
public entry fun transfer(c: iota::coin::Coin<iota::iota::IOTA>, recipient: address)
Implementation
public entry fun transfer(c: coin::Coin<IOTA>, recipient: address) {
transfer::public_transfer(c, recipient)
}
prv new
Register the IOTA Coin to acquire IotaTreasuryCap.
This should be called only once during genesis creation.
fun new(ctx: &mut iota::tx_context::TxContext): iota::iota::IotaTreasuryCap
Implementation
fun new(ctx: &mut TxContext): IotaTreasuryCap {
assert!(ctx.sender() == @0x0, ENotSystemAddress);
assert!(ctx.epoch() == 0, EAlreadyMinted);
let (treasury, metadata) = coin::create_currency(
IOTA {},
9,
b"IOTA",
b"IOTA",
b"The main (gas)token of the IOTA Network.",
option::some(url::new_unsafe_from_bytes(b"https://iota.org/logo.png")),
ctx,
);
transfer::public_freeze_object(metadata);
IotaTreasuryCap {
inner: treasury,
}
}
Structs
struct IOTA
Name of the coin
public struct IOTA has drop
Fields
struct IotaTreasuryCap
The IOTA token treasury capability. Protects the token from unauthorized changes.
public struct IotaTreasuryCap has store
Fields
pub burn
Destroy the IOTA coin c and decrease the total supply in cap accordingly.
public fun burn(cap: &mut iota::iota::IotaTreasuryCap, c: iota::coin::Coin<iota::iota::IOTA>, ctx: &iota::tx_context::TxContext): u64
Implementation
public fun burn(cap: &mut IotaTreasuryCap, c: Coin<IOTA>, ctx: &TxContext): u64 {
assert!(ctx.sender() == @0x0, ENotSystemAddress);
cap.inner.burn(c)
}
pub burn_balance
Destroy the IOTA balance b and decrease the total supply in cap accordingly.
public fun burn_balance(cap: &mut iota::iota::IotaTreasuryCap, b: iota::balance::Balance<iota::iota::IOTA>, ctx: &iota::tx_context::TxContext): u64
Implementation
public fun burn_balance(cap: &mut IotaTreasuryCap, b: Balance<IOTA>, ctx: &TxContext): u64 {
assert!(ctx.sender() == @0x0, ENotSystemAddress);
cap.inner.supply_mut().decrease_supply(b)
}
pub mint
Create an IOTA coin worth value and increase the total supply in cap accordingly.
public fun mint(cap: &mut iota::iota::IotaTreasuryCap, value: u64, ctx: &mut iota::tx_context::TxContext): iota::coin::Coin<iota::iota::IOTA>
Implementation
public fun mint(cap: &mut IotaTreasuryCap, value: u64, ctx: &mut TxContext): Coin<IOTA> {
assert!(ctx.sender() == @0x0, ENotSystemAddress);
cap.inner.mint(value, ctx)
}
pub mint_balance
Mint some amount of IOTA as a Balance and increase the total supply in cap accordingly.
Aborts if value + cap.inner.total_supply >= U64_MAX
public fun mint_balance(cap: &mut iota::iota::IotaTreasuryCap, value: u64, ctx: &iota::tx_context::TxContext): iota::balance::Balance<iota::iota::IOTA>
Implementation
public fun mint_balance(cap: &mut IotaTreasuryCap, value: u64, ctx: &TxContext): Balance<IOTA> {
assert!(ctx.sender() == @0x0, ENotSystemAddress);
cap.inner.mint_balance(value)
}
pub total_supply
Return the total number of IOTA's in circulation.
public fun total_supply(cap: &iota::iota::IotaTreasuryCap): u64
Implementation
public fun total_supply(cap: &IotaTreasuryCap): u64 {
cap.inner.total_supply()
}
Constants
err EAlreadyMinted
const EAlreadyMinted: u64 = 0;
err ENotSystemAddress
Sender is not @0x0 the system address.
const ENotSystemAddress: u64 = 1;