Search by name, SuiNS, address, digest, object ID, coin type or checkpoint.

API

treasury

Module0x7713…9f9d
Move path
0xaec9…5faa::treasury
Functions
74 public, 0 entry
Structs
1
treasury

Bytecode161 lines

The on-chain disassembly. Offsets are bytecode positions within each function.

// Move bytecode v6
module aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa.treasury {
use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::admin;
use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::events;
use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::version;
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000002::bag;
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
 
struct Treasury has store, key {
id: UID,
version: u64,
funds: Bag
}
 
check_version(Arg0: &Treasury) {
B0:
0MoveLoc[0](Arg0: &Treasury)
1ImmBorrowField[0](Treasury.version: u64)
2ReadRef
3Call version::check_version(u64)
4Ret
}
 
public balance_of<Ty0>(Arg0: &mut Treasury): u64 {
B0:
0CopyLoc[0](Arg0: &mut Treasury)
1FreezeRef
2Call check_version(&Treasury)
3MoveLoc[0](Arg0: &mut Treasury)
4ImmBorrowField[1](Treasury.funds: Bag)
5Call type_name::get<Ty0>(): TypeName
6Call bag::borrow<TypeName, Balance<Ty0>>(&Bag, TypeName): &Balance<Ty0>
7Call balance::value<Ty0>(&Balance<Ty0>): u64
8Ret
}
 
public(friend) create_treasury(Arg0: &mut TxContext): Treasury {
B0:
0CopyLoc[0](Arg0: &mut TxContext)
1Call object::new(&mut TxContext): UID
2Call version::current_version(): u64
3MoveLoc[0](Arg0: &mut TxContext)
4Call bag::new(&mut TxContext): Bag
5Pack[0](Treasury)
6Ret
}
 
public change_treasury_version(Arg0: &AdminCap, Arg1: &mut Treasury, Arg2: &mut Option<u64>) {
B0:
0CopyLoc[2](Arg2: &mut Option<u64>)
1FreezeRef
2Call option::is_some<u64>(&Option<u64>): bool
3BrFalse(10)
B1:
4MoveLoc[2](Arg2: &mut Option<u64>)
5Call option::extract<u64>(&mut Option<u64>): u64
6MoveLoc[1](Arg1: &mut Treasury)
7MutBorrowField[0](Treasury.version: u64)
8WriteRef
9Branch(14)
B2:
10MoveLoc[2](Arg2: &mut Option<u64>)
11Pop
12MoveLoc[1](Arg1: &mut Treasury)
13Pop
B3:
14Ret
}
 
public deposit<Ty0>(Arg0: &mut Treasury, Arg1: Coin<Ty0>) {
B0:
0CopyLoc[0](Arg0: &mut Treasury)
1FreezeRef
2Call check_version(&Treasury)
3CopyLoc[0](Arg0: &mut Treasury)
4ImmBorrowField[1](Treasury.funds: Bag)
5Call type_name::get<Ty0>(): TypeName
6Call bag::contains<TypeName>(&Bag, TypeName): bool
7Not
8BrFalse(16)
B1:
9MoveLoc[0](Arg0: &mut Treasury)
10MutBorrowField[1](Treasury.funds: Bag)
11Call type_name::get<Ty0>(): TypeName
12MoveLoc[1](Arg1: Coin<Ty0>)
13Call coin::into_balance<Ty0>(Coin<Ty0>): Balance<Ty0>
14Call bag::add<TypeName, Balance<Ty0>>(&mut Bag, TypeName, Balance<Ty0>)
15Branch(24)
B2:
16MoveLoc[0](Arg0: &mut Treasury)
17MutBorrowField[1](Treasury.funds: Bag)
18Call type_name::get<Ty0>(): TypeName
19Call bag::borrow_mut<TypeName, Balance<Ty0>>(&mut Bag, TypeName): &mut Balance<Ty0>
20MoveLoc[1](Arg1: Coin<Ty0>)
21Call coin::into_balance<Ty0>(Coin<Ty0>): Balance<Ty0>
22Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
23Pop
B3:
24Ret
}
 
public withdraw<Ty0>(Arg0: &AdminCap, Arg1: &mut Treasury, Arg2: &mut TxContext) {
L3: loc0: Balance<Ty0>
B0:
0CopyLoc[1](Arg1: &mut Treasury)
1FreezeRef
2Call check_version(&Treasury)
3MoveLoc[1](Arg1: &mut Treasury)
4MutBorrowField[1](Treasury.funds: Bag)
5Call type_name::get<Ty0>(): TypeName
6Call bag::remove<TypeName, Balance<Ty0>>(&mut Bag, TypeName): Balance<Ty0>
7StLoc[3](loc0: Balance<Ty0>)
8ImmBorrowLoc[3](loc0: Balance<Ty0>)
9Call balance::value<Ty0>(&Balance<Ty0>): u64
10Call events::emit_withdraw_event<Ty0>(u64)
11MoveLoc[3](loc0: Balance<Ty0>)
12CopyLoc[2](Arg2: &mut TxContext)
13Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
14MoveLoc[2](Arg2: &mut TxContext)
15FreezeRef
16Call tx_context::sender(&TxContext): address
17Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
18Ret
}
 
public withdraw_some<Ty0>(Arg0: &AdminCap, Arg1: &mut Treasury, Arg2: u64, Arg3: &mut TxContext): Coin<Ty0> {
B0:
0CopyLoc[1](Arg1: &mut Treasury)
1FreezeRef
2Call check_version(&Treasury)
3MoveLoc[1](Arg1: &mut Treasury)
4MutBorrowField[1](Treasury.funds: Bag)
5Call type_name::get<Ty0>(): TypeName
6Call bag::borrow_mut<TypeName, Balance<Ty0>>(&mut Bag, TypeName): &mut Balance<Ty0>
7MoveLoc[2](Arg2: u64)
8Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
9MoveLoc[3](Arg3: &mut TxContext)
10Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
11Ret
}
 
public(friend) borrow_from_treasury<Ty0>(Arg0: &mut Treasury): &mut Balance<Ty0> {
B0:
0CopyLoc[0](Arg0: &mut Treasury)
1FreezeRef
2Call check_version(&Treasury)
3MoveLoc[0](Arg0: &mut Treasury)
4MutBorrowField[1](Treasury.funds: Bag)
5Call type_name::get<Ty0>(): TypeName
6Call bag::borrow_mut<TypeName, Balance<Ty0>>(&mut Bag, TypeName): &mut Balance<Ty0>
7Ret
}
 
}