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

API

vault

Module0xf0b2…d5c6
Move path
0x6eed…85f4::vault
Functions
1110 public, 2 entry
Structs
2
Friend modules
None
vault

Bytecode200 lines

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

// Move bytecode v6
module 6eed7ba483e3940a9c7b36e5e117c84f6a39c49d84d29946565b85f21c0b85f4.vault {
use 6eed7ba483e3940a9c7b36e5e117c84f6a39c49d84d29946565b85f21c0b85f4::event;
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
 
struct AdminCap has store, key {
id: UID
}
 
struct Vault<phantom Ty0> has store, key {
id: UID,
reserve: Balance<Ty0>
}
 
init(Arg0: &mut TxContext) {
B0:
0CopyLoc[0](Arg0: &mut TxContext)
1Call object::new(&mut TxContext): UID
2Pack[0](AdminCap)
3MoveLoc[0](Arg0: &mut TxContext)
4FreezeRef
5Call tx_context::sender(&TxContext): address
6Call transfer::transfer<AdminCap>(AdminCap, address)
7Ret
}
 
entry public create_vault<Ty0>(Arg0: &AdminCap, Arg1: &mut TxContext) {
B0:
0MoveLoc[1](Arg1: &mut TxContext)
1Call object::new(&mut TxContext): UID
2Call balance::zero<Ty0>(): Balance<Ty0>
3PackGeneric[0](Vault<Ty0>)
4Call transfer::share_object<Vault<Ty0>>(Vault<Ty0>)
5Ret
}
 
entry public new_admin(Arg0: address, Arg1: &AdminCap, Arg2: &mut TxContext) {
B0:
0MoveLoc[2](Arg2: &mut TxContext)
1Call object::new(&mut TxContext): UID
2Pack[0](AdminCap)
3MoveLoc[0](Arg0: address)
4Call transfer::transfer<AdminCap>(AdminCap, address)
5Ret
}
 
public deposit<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: Balance<Ty0>, Arg2: &AdminCap) {
B0:
0MoveLoc[0](Arg0: &mut Vault<Ty0>)
1MutBorrowFieldGeneric[0](Vault.reserve: Balance<Ty0>)
2MoveLoc[1](Arg1: Balance<Ty0>)
3Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
4Pop
5Ret
}
 
public deposit_with_threshold<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: Balance<Ty0>, Arg2: u64, Arg3: &AdminCap) {
B0:
0ImmBorrowLoc[1](Arg1: Balance<Ty0>)
1Call balance::value<Ty0>(&Balance<Ty0>): u64
2MoveLoc[2](Arg2: u64)
3Gt
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[0](Arg0: &mut Vault<Ty0>)
7Pop
8LdU64(1)
9Abort
B3:
10MoveLoc[0](Arg0: &mut Vault<Ty0>)
11MutBorrowFieldGeneric[0](Vault.reserve: Balance<Ty0>)
12MoveLoc[1](Arg1: Balance<Ty0>)
13Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
14Pop
15Ret
}
 
public deposit_with_threshold_and_event<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: Balance<Ty0>, Arg2: u64, Arg3: &AdminCap) {
B0:
0ImmBorrowLoc[1](Arg1: Balance<Ty0>)
1Call balance::value<Ty0>(&Balance<Ty0>): u64
2MoveLoc[2](Arg2: u64)
3Gt
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[0](Arg0: &mut Vault<Ty0>)
7Pop
8LdU64(1)
9Abort
B3:
10CopyLoc[0](Arg0: &mut Vault<Ty0>)
11FreezeRef
12Call object::id<Vault<Ty0>>(&Vault<Ty0>): ID
13ImmBorrowLoc[1](Arg1: Balance<Ty0>)
14Call balance::value<Ty0>(&Balance<Ty0>): u64
15Call event::emit_deposit_event(ID, u64)
16MoveLoc[0](Arg0: &mut Vault<Ty0>)
17MutBorrowFieldGeneric[0](Vault.reserve: Balance<Ty0>)
18MoveLoc[1](Arg1: Balance<Ty0>)
19Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
20Pop
21Ret
}
 
public deposit_with_event<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: Balance<Ty0>, Arg2: &AdminCap) {
B0:
0CopyLoc[0](Arg0: &mut Vault<Ty0>)
1FreezeRef
2Call object::id<Vault<Ty0>>(&Vault<Ty0>): ID
3ImmBorrowLoc[1](Arg1: Balance<Ty0>)
4Call balance::value<Ty0>(&Balance<Ty0>): u64
5Call event::emit_deposit_event(ID, u64)
6MoveLoc[0](Arg0: &mut Vault<Ty0>)
7MutBorrowFieldGeneric[0](Vault.reserve: Balance<Ty0>)
8MoveLoc[1](Arg1: Balance<Ty0>)
9Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
10Pop
11Ret
}
 
public deposit_partial<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: Balance<Ty0>, Arg2: u64, Arg3: u64, Arg4: &AdminCap, Arg5: &mut TxContext) {
B0:
0ImmBorrowLoc[1](Arg1: Balance<Ty0>)
1Call balance::value<Ty0>(&Balance<Ty0>): u64
2MoveLoc[2](Arg2: u64)
3Gt
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[0](Arg0: &mut Vault<Ty0>)
7Pop
8MoveLoc[5](Arg5: &mut TxContext)
9Pop
10LdU64(1)
11Abort
B3:
12CopyLoc[0](Arg0: &mut Vault<Ty0>)
13FreezeRef
14Call object::id<Vault<Ty0>>(&Vault<Ty0>): ID
15ImmBorrowLoc[1](Arg1: Balance<Ty0>)
16Call balance::value<Ty0>(&Balance<Ty0>): u64
17Call event::emit_deposit_event(ID, u64)
18MutBorrowLoc[1](Arg1: Balance<Ty0>)
19MoveLoc[3](Arg3: u64)
20Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
21CopyLoc[5](Arg5: &mut TxContext)
22Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
23MoveLoc[5](Arg5: &mut TxContext)
24FreezeRef
25Call tx_context::sender(&TxContext): address
26Call transfer::public_transfer<Coin<Ty0>>(Coin<Ty0>, address)
27MoveLoc[0](Arg0: &mut Vault<Ty0>)
28MutBorrowFieldGeneric[0](Vault.reserve: Balance<Ty0>)
29MoveLoc[1](Arg1: Balance<Ty0>)
30Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
31Pop
32Ret
}
 
public withdraw<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: u64, Arg2: &AdminCap): Balance<Ty0> {
B0:
0MoveLoc[0](Arg0: &mut Vault<Ty0>)
1MutBorrowFieldGeneric[0](Vault.reserve: Balance<Ty0>)
2MoveLoc[1](Arg1: u64)
3Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
4Ret
}
 
public deposit_coin<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: Coin<Ty0>, Arg2: &AdminCap) {
B0:
0MoveLoc[0](Arg0: &mut Vault<Ty0>)
1MutBorrowFieldGeneric[0](Vault.reserve: Balance<Ty0>)
2MoveLoc[1](Arg1: Coin<Ty0>)
3Call coin::into_balance<Ty0>(Coin<Ty0>): Balance<Ty0>
4Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
5Pop
6Ret
}
 
public withdraw_coin<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: u64, Arg2: &AdminCap, Arg3: &mut TxContext): Coin<Ty0> {
B0:
0MoveLoc[0](Arg0: &mut Vault<Ty0>)
1MutBorrowFieldGeneric[0](Vault.reserve: Balance<Ty0>)
2MoveLoc[1](Arg1: u64)
3MoveLoc[3](Arg3: &mut TxContext)
4Call coin::take<Ty0>(&mut Balance<Ty0>, u64, &mut TxContext): Coin<Ty0>
5Ret
}
 
}