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

API

safeV2

Module0xe016…30f0
Move path
0xe016…30f0::safeV2
Functions
65 public, 0 entry
Structs
3
Friend modules
None
safeV2

Bytecode174 lines

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

// Move bytecode v6
module e016516cae4c27eb871870e3b1dd63d45ae180c412677784915b437a7ec930f0.safeV2 {
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::event;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
 
struct Pool<phantom Ty0> has key {
id: UID,
balance: Balance<Ty0>
}
 
struct AccessList has store, key {
id: UID,
list: vector<address>
}
 
struct RepayEvent<phantom Ty0> has copy, drop {
repaylimit_amount: u64,
repay_amount: u64
}
 
public access_list_add(Arg0: &mut AccessList, Arg1: address, Arg2: &mut TxContext) {
B0:
0MoveLoc[2](Arg2: &mut TxContext)
1FreezeRef
2Call tx_context::sender(&TxContext): address
3LdConst[2](address: 0x87..)
4Eq
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[0](Arg0: &mut AccessList)
8Pop
9LdConst[0](u64: 1)
10Abort
B3:
11MoveLoc[0](Arg0: &mut AccessList)
12MutBorrowField[0](AccessList.list: vector<address>)
13MoveLoc[1](Arg1: address)
14VecPushBack(10)
15Ret
}
 
is_valid(Arg0: &mut AccessList, Arg1: &mut TxContext): bool {
L2: loc0: vector<address>
L3: loc1: address
B0:
0MoveLoc[0](Arg0: &mut AccessList)
1ImmBorrowField[0](AccessList.list: vector<address>)
2ReadRef
3StLoc[2](loc0: vector<address>)
4MoveLoc[1](Arg1: &mut TxContext)
5FreezeRef
6Call tx_context::sender(&TxContext): address
7StLoc[3](loc1: address)
8ImmBorrowLoc[2](loc0: vector<address>)
9ImmBorrowLoc[3](loc1: address)
10Call vector::contains<address>(&vector<address>, &address): bool
11Ret
}
 
public new_access_list(Arg0: &mut TxContext) {
B0:
0CopyLoc[0](Arg0: &mut TxContext)
1FreezeRef
2Call tx_context::sender(&TxContext): address
3LdConst[2](address: 0x87..)
4Eq
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[0](Arg0: &mut TxContext)
8Pop
9LdConst[0](u64: 1)
10Abort
B3:
11MoveLoc[0](Arg0: &mut TxContext)
12Call object::new(&mut TxContext): UID
13LdConst[2](address: 0x87..)
14Call vector::singleton<address>(address): vector<address>
15Pack[1](AccessList)
16Call transfer::share_object<AccessList>(AccessList)
17Ret
}
 
public withdraw<Ty0>(Arg0: &mut AccessList, Arg1: &mut Pool<Ty0>, Arg2: u64, Arg3: &mut TxContext): Coin<Ty0> {
B0:
0MoveLoc[0](Arg0: &mut AccessList)
1CopyLoc[3](Arg3: &mut TxContext)
2Call is_valid(&mut AccessList, &mut TxContext): bool
3BrFalse(5)
B1:
4Branch(11)
B2:
5MoveLoc[1](Arg1: &mut Pool<Ty0>)
6Pop
7MoveLoc[3](Arg3: &mut TxContext)
8Pop
9LdConst[0](u64: 1)
10Abort
B3:
11MoveLoc[1](Arg1: &mut Pool<Ty0>)
12MutBorrowFieldGeneric[0](Pool.balance: Balance<Ty0>)
13MoveLoc[2](Arg2: u64)
14MoveLoc[3](Arg3: &mut TxContext)
15Call coin::take<Ty0>(&mut Balance<Ty0>, u64, &mut TxContext): Coin<Ty0>
16Ret
}
 
public new_pool<Ty0>(Arg0: &mut AccessList, Arg1: Coin<Ty0>, Arg2: &mut TxContext) {
B0:
0MoveLoc[0](Arg0: &mut AccessList)
1CopyLoc[2](Arg2: &mut TxContext)
2Call is_valid(&mut AccessList, &mut TxContext): bool
3BrFalse(5)
B1:
4Branch(9)
B2:
5MoveLoc[2](Arg2: &mut TxContext)
6Pop
7LdConst[0](u64: 1)
8Abort
B3:
9MoveLoc[2](Arg2: &mut TxContext)
10Call object::new(&mut TxContext): UID
11MoveLoc[1](Arg1: Coin<Ty0>)
12Call coin::into_balance<Ty0>(Coin<Ty0>): Balance<Ty0>
13PackGeneric[0](Pool<Ty0>)
14Call transfer::share_object<Pool<Ty0>>(Pool<Ty0>)
15Ret
}
 
public deposit<Ty0>(Arg0: &mut Pool<Ty0>, Arg1: Coin<Ty0>, Arg2: u64, Arg3: &mut TxContext) {
L4: loc0: u64
B0:
0ImmBorrowLoc[1](Arg1: Coin<Ty0>)
1Call coin::value<Ty0>(&Coin<Ty0>): u64
2StLoc[4](loc0: u64)
3CopyLoc[4](loc0: u64)
4CopyLoc[2](Arg2: u64)
5Ge
6BrFalse(8)
B1:
7Branch(12)
B2:
8MoveLoc[0](Arg0: &mut Pool<Ty0>)
9Pop
10LdConst[1](u64: 2)
11Abort
B3:
12MoveLoc[0](Arg0: &mut Pool<Ty0>)
13MutBorrowFieldGeneric[0](Pool.balance: Balance<Ty0>)
14MoveLoc[1](Arg1: Coin<Ty0>)
15Call coin::put<Ty0>(&mut Balance<Ty0>, Coin<Ty0>)
16MoveLoc[2](Arg2: u64)
17MoveLoc[4](loc0: u64)
18PackGeneric[1](RepayEvent<Ty0>)
19Call event::emit<RepayEvent<Ty0>>(RepayEvent<Ty0>)
20Ret
}
 
Constants [
0 => u64: 1
1 => u64: 2
2 => address: 0x87c9e076815e78ee63b7dc225704c428b8c51072ccead4304ae07f6c68fe1b92
]
}