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

API

utils

Module0x361d…7ffc
Move path
0x361d…7ffc::utils
Functions
88 public, 0 entry
Structs
0
Friend modules
None
utils

Bytecode197 lines

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

// Move bytecode v6
module 361dd589b98e8fcda9a7ee53b85efabef3569d00416640d2faa516e3801d7ffc.utils {
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::pay;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
use 361dd589b98e8fcda9a7ee53b85efabef3569d00416640d2faa516e3801d7ffc::ratio;
 
public get_epoch(Arg0: &Clock): u64 {
B0:
0MoveLoc[0](Arg0: &Clock)
1Call clock::timestamp_ms(&Clock): u64
2LdConst[0](u64: 8640..)
3Div
4Ret
}
 
public get_target_epoch_diff(Arg0: &Clock, Arg1: u64): u64 {
L2: loc0: u64
L3: loc1: u64
B0:
0MoveLoc[0](Arg0: &Clock)
1Call get_epoch(&Clock): u64
2StLoc[3](loc1: u64)
3CopyLoc[3](loc1: u64)
4CopyLoc[1](Arg1: u64)
5Ge
6BrFalse(10)
B1:
7LdU64(0)
8StLoc[2](loc0: u64)
9Branch(14)
B2:
10MoveLoc[1](Arg1: u64)
11MoveLoc[3](loc1: u64)
12Sub
13StLoc[2](loc0: u64)
B3:
14MoveLoc[2](loc0: u64)
15Ret
}
 
public merge_coins<Ty0>(Arg0: vector<Coin<Ty0>>, Arg1: &mut TxContext): Coin<Ty0> {
L2: loc0: Coin<Ty0>
L3: loc1: Coin<Ty0>
L4: loc2: Coin<Ty0>
B0:
0ImmBorrowLoc[0](Arg0: vector<Coin<Ty0>>)
1VecLen(4)
2LdU64(0)
3Eq
4BrFalse(13)
B1:
5MoveLoc[1](Arg1: &mut TxContext)
6Call coin::zero<Ty0>(&mut TxContext): Coin<Ty0>
7StLoc[3](loc1: Coin<Ty0>)
8MoveLoc[0](Arg0: vector<Coin<Ty0>>)
9VecUnpack(4, 0)
10MoveLoc[3](loc1: Coin<Ty0>)
11StLoc[2](loc0: Coin<Ty0>)
12Branch(23)
B2:
13MoveLoc[1](Arg1: &mut TxContext)
14Pop
15MutBorrowLoc[0](Arg0: vector<Coin<Ty0>>)
16VecPopBack(4)
17StLoc[4](loc2: Coin<Ty0>)
18MutBorrowLoc[4](loc2: Coin<Ty0>)
19MoveLoc[0](Arg0: vector<Coin<Ty0>>)
20Call pay::join_vec<Ty0>(&mut Coin<Ty0>, vector<Coin<Ty0>>)
21MoveLoc[4](loc2: Coin<Ty0>)
22StLoc[2](loc0: Coin<Ty0>)
B3:
23MoveLoc[2](loc0: Coin<Ty0>)
24Ret
}
 
public merge_coins_to_amount_and_transfer_back_rest<Ty0>(Arg0: vector<Coin<Ty0>>, Arg1: u64, Arg2: &mut TxContext): Coin<Ty0> {
L3: loc0: Coin<Ty0>
L4: loc1: Coin<Ty0>
L5: loc2: address
B0:
0MoveLoc[0](Arg0: vector<Coin<Ty0>>)
1CopyLoc[2](Arg2: &mut TxContext)
2Call merge_coins<Ty0>(vector<Coin<Ty0>>, &mut TxContext): Coin<Ty0>
3StLoc[3](loc0: Coin<Ty0>)
4ImmBorrowLoc[3](loc0: Coin<Ty0>)
5Call coin::value<Ty0>(&Coin<Ty0>): u64
6CopyLoc[1](Arg1: u64)
7Ge
8BrFalse(10)
B1:
9Branch(14)
B2:
10MoveLoc[2](Arg2: &mut TxContext)
11Pop
12LdConst[1](u64: 154001)
13Abort
B3:
14MutBorrowLoc[3](loc0: Coin<Ty0>)
15MoveLoc[1](Arg1: u64)
16CopyLoc[2](Arg2: &mut TxContext)
17Call coin::split<Ty0>(&mut Coin<Ty0>, u64, &mut TxContext): Coin<Ty0>
18StLoc[4](loc1: Coin<Ty0>)
19MoveLoc[2](Arg2: &mut TxContext)
20FreezeRef
21Call tx_context::sender(&TxContext): address
22StLoc[5](loc2: address)
23MoveLoc[3](loc0: Coin<Ty0>)
24MoveLoc[5](loc2: address)
25Call transfer_or_destroy_zero<Ty0>(Coin<Ty0>, address)
26MoveLoc[4](loc1: Coin<Ty0>)
27Ret
}
 
public transfer_or_destroy_zero<Ty0>(Arg0: Coin<Ty0>, Arg1: address) {
B0:
0ImmBorrowLoc[0](Arg0: Coin<Ty0>)
1Call coin::value<Ty0>(&Coin<Ty0>): u64
2LdU64(0)
3Gt
4BrFalse(9)
B1:
5MoveLoc[0](Arg0: Coin<Ty0>)
6MoveLoc[1](Arg1: address)
7Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
8Branch(11)
B2:
9MoveLoc[0](Arg0: Coin<Ty0>)
10Call coin::destroy_zero<Ty0>(Coin<Ty0>)
B3:
11Ret
}
 
public mint_from_supply<Ty0>(Arg0: &mut Supply<Ty0>, Arg1: u64, Arg2: address, Arg3: &mut TxContext) {
B0:
0MoveLoc[0](Arg0: &mut Supply<Ty0>)
1MoveLoc[1](Arg1: u64)
2Call balance::increase_supply<Ty0>(&mut Supply<Ty0>, u64): Balance<Ty0>
3MoveLoc[3](Arg3: &mut TxContext)
4Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
5MoveLoc[2](Arg2: address)
6Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
7Ret
}
 
public split_partial_balance<Ty0>(Arg0: &mut Balance<Ty0>, Arg1: Ratio): Balance<Ty0> {
L2: loc0: u64
B0:
0MoveLoc[1](Arg1: Ratio)
1CopyLoc[0](Arg0: &mut Balance<Ty0>)
2FreezeRef
3Call balance::value<Ty0>(&Balance<Ty0>): u64
4Call ratio::partial(Ratio, u64): u64
5StLoc[2](loc0: u64)
6MoveLoc[0](Arg0: &mut Balance<Ty0>)
7MoveLoc[2](loc0: u64)
8Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
9Ret
}
 
public join_balance<Ty0>(Arg0: &mut Balance<Ty0>, Arg1: &mut Balance<Ty0>) {
L2: loc0: u64
B0:
0CopyLoc[1](Arg1: &mut Balance<Ty0>)
1FreezeRef
2Call balance::value<Ty0>(&Balance<Ty0>): u64
3StLoc[2](loc0: u64)
4MoveLoc[0](Arg0: &mut Balance<Ty0>)
5MoveLoc[1](Arg1: &mut Balance<Ty0>)
6MoveLoc[2](loc0: u64)
7Call join_balance_with_amount<Ty0>(&mut Balance<Ty0>, &mut Balance<Ty0>, u64)
8Ret
}
 
public join_balance_with_amount<Ty0>(Arg0: &mut Balance<Ty0>, Arg1: &mut Balance<Ty0>, Arg2: u64) {
L3: loc0: Balance<Ty0>
B0:
0MoveLoc[1](Arg1: &mut Balance<Ty0>)
1MoveLoc[2](Arg2: u64)
2Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
3StLoc[3](loc0: Balance<Ty0>)
4MoveLoc[0](Arg0: &mut Balance<Ty0>)
5MoveLoc[3](loc0: Balance<Ty0>)
6Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
7Pop
8Ret
}
 
Constants [
0 => u64: 86400000
1 => u64: 154001
]
}