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".
- Struct
IOTA
- Struct
IotaTreasuryCap
- Constants
- Function
new
- Function
transfer
- Function
mint
- Function
mint_balance
- Function
burn
- Function
burn_balance
- Function
total_supply
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;
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
Constants
const EAlreadyMinted: u64 = 0;
Sender is not @0x0 the system address.
const ENotSystemAddress: u64 = 1;
Function 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,
}
}
Function 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)
}
Function 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)
}
Function 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)
}
Function 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)
}
Function 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)
}
Function 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()
}