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

API

pool

Module0x6470…8cdd
Move path
0x6470…8cdd::pool
Functions
76 public, 0 entry
Structs
3
Friend modules
None
pool

Bytecode197 lines

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

// Move bytecode v6
module 64704f2f04f580cdfde7583bc35de88d4d47fe7280aa9d7939cd54da44cb8cdd.pool {
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
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 FlashLoanEvent<phantom Ty0> has copy, drop {
token: TypeName,
loan_amount: u64,
repay_amount: u64
}
 
public new_access_list(Arg0: &mut TxContext) {
L1: loc0: vector<address>
B0:
0CopyLoc[0](Arg0: &mut TxContext)
1FreezeRef
2Call tx_context::sender(&TxContext): address
3LdConst[0](address: 0xae..)
4Eq
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[0](Arg0: &mut TxContext)
8Pop
9LdConst[1](u64: 1000..)
10Abort
B3:
11LdConst[0](address: 0xae..)
12Call vector::singleton<address>(address): vector<address>
13StLoc[1](loc0: vector<address>)
14MoveLoc[0](Arg0: &mut TxContext)
15Call object::new(&mut TxContext): UID
16MoveLoc[1](loc0: vector<address>)
17Pack[1](AccessList)
18Call transfer::share_object<AccessList>(AccessList)
19Ret
}
 
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[0](address: 0xae..)
4Eq
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[0](Arg0: &mut AccessList)
8Pop
9LdConst[1](u64: 1000..)
10Abort
B3:
11MoveLoc[0](Arg0: &mut AccessList)
12MutBorrowField[0](AccessList.list: vector<address>)
13MoveLoc[1](Arg1: address)
14VecPushBack(12)
15Ret
}
 
public access_list_add_vec(Arg0: &mut AccessList, Arg1: vector<address>, Arg2: &mut TxContext) {
B0:
0MoveLoc[2](Arg2: &mut TxContext)
1FreezeRef
2Call tx_context::sender(&TxContext): address
3LdConst[0](address: 0xae..)
4Eq
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[0](Arg0: &mut AccessList)
8Pop
9LdConst[1](u64: 1000..)
10Abort
B3:
11MoveLoc[0](Arg0: &mut AccessList)
12MutBorrowField[0](AccessList.list: vector<address>)
13MoveLoc[1](Arg1: vector<address>)
14Call vector::append<address>(&mut vector<address>, vector<address>)
15Ret
}
 
is_valid(Arg0: &AccessList, Arg1: &TxContext): bool {
L2: loc0: address
L3: loc1: &vector<address>
L4: loc2: vector<address>
B0:
0MoveLoc[0](Arg0: &AccessList)
1ImmBorrowField[0](AccessList.list: vector<address>)
2ReadRef
3StLoc[4](loc2: vector<address>)
4ImmBorrowLoc[4](loc2: vector<address>)
5StLoc[3](loc1: &vector<address>)
6MoveLoc[1](Arg1: &TxContext)
7Call tx_context::sender(&TxContext): address
8StLoc[2](loc0: address)
9MoveLoc[3](loc1: &vector<address>)
10ImmBorrowLoc[2](loc0: address)
11Call vector::contains<address>(&vector<address>, &address): bool
12Ret
}
 
public new_pool<Ty0>(Arg0: Coin<Ty0>, Arg1: &mut TxContext) {
B0:
0MoveLoc[1](Arg1: &mut TxContext)
1Call object::new(&mut TxContext): UID
2MoveLoc[0](Arg0: Coin<Ty0>)
3Call coin::into_balance<Ty0>(Coin<Ty0>): Balance<Ty0>
4PackGeneric[0](Pool<Ty0>)
5Call transfer::share_object<Pool<Ty0>>(Pool<Ty0>)
6Ret
}
 
public loan<Ty0>(Arg0: &AccessList, Arg1: &mut Pool<Ty0>, Arg2: u64, Arg3: &mut TxContext): Coin<Ty0> {
B0:
0MoveLoc[0](Arg0: &AccessList)
1CopyLoc[3](Arg3: &mut TxContext)
2FreezeRef
3Call is_valid(&AccessList, &TxContext): bool
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[1](Arg1: &mut Pool<Ty0>)
7Pop
8MoveLoc[3](Arg3: &mut TxContext)
9Pop
10LdConst[3](u64: 1000..)
11Abort
B3:
12MoveLoc[1](Arg1: &mut Pool<Ty0>)
13MutBorrowFieldGeneric[0](Pool.balance: Balance<Ty0>)
14MoveLoc[2](Arg2: u64)
15MoveLoc[3](Arg3: &mut TxContext)
16Call coin::take<Ty0>(&mut Balance<Ty0>, u64, &mut TxContext): Coin<Ty0>
17Ret
}
 
public repay<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[2](u64: 1000..)
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>)
16Call type_name::get<Ty0>(): TypeName
17MoveLoc[2](Arg2: u64)
18MoveLoc[4](loc0: u64)
19PackGeneric[1](FlashLoanEvent<Ty0>)
20Call event::emit<FlashLoanEvent<Ty0>>(FlashLoanEvent<Ty0>)
21Ret
}
 
Constants [
0 => address: 0xaecdaa08f1b9f4469aa3abe357a0ec105152a9b72129245a2e3277c98e4f3914
1 => u64: 10000000000
2 => u64: 10000000001
3 => u64: 10000000002
4 => u128: 4295048016
5 => u128: 79226673515401279992447579055
]
}