vault
Module0x19e6…967c
- Move path
- 0xbde4…f47d::vault
- Functions
- 61 public, 0 entry
- Structs
- 1
- Friend modules
- staking
vault
Bytecode101 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v6
module bde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d.vault {
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct Vault<phantom Ty0> has store, key {
id: UID,
cache_pool: Balance<Ty0>
}
public(friend) new<Ty0>(Arg0: &mut TxContext): Vault<Ty0> {
B0:
0MoveLoc[0](Arg0: &mut TxContext)
1Call object::new(&mut TxContext): UID
2Call balance::zero<Ty0>(): Balance<Ty0>
3PackGeneric[0](Vault<Ty0>)
4Ret
}
public(friend) deposit<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: Balance<Ty0>) {
B0:
0MoveLoc[0](Arg0: &mut Vault<Ty0>)
1MutBorrowFieldGeneric[0](Vault.cache_pool: Balance<Ty0>)
2MoveLoc[1](Arg1: Balance<Ty0>)
3Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
4Pop
5Ret
}
public(friend) withdraw<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: u64): Balance<Ty0> {
B0:
0MoveLoc[0](Arg0: &mut Vault<Ty0>)
1MutBorrowFieldGeneric[0](Vault.cache_pool: Balance<Ty0>)
2MoveLoc[1](Arg1: u64)
3Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
4Ret
}
public(friend) withdraw_max<Ty0>(Arg0: &mut Vault<Ty0>, Arg1: u64): Balance<Ty0> * u64 {
L2: loc0: Balance<Ty0>
L3: loc1: u64
L4: loc2: u64
B0:
0CopyLoc[0](Arg0: &mut Vault<Ty0>)
1ImmBorrowFieldGeneric[0](Vault.cache_pool: Balance<Ty0>)
2Call balance::value<Ty0>(&Balance<Ty0>): u64
3StLoc[4](loc2: u64)
4CopyLoc[4](loc2: u64)
5CopyLoc[1](Arg1: u64)
6Ge
7BrFalse(16)
B1:
8MoveLoc[0](Arg0: &mut Vault<Ty0>)
9MutBorrowFieldGeneric[0](Vault.cache_pool: Balance<Ty0>)
10MoveLoc[1](Arg1: u64)
11Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
12LdU64(0)
13StLoc[3](loc1: u64)
14StLoc[2](loc0: Balance<Ty0>)
15Branch(25)
B2:
16MoveLoc[0](Arg0: &mut Vault<Ty0>)
17MutBorrowFieldGeneric[0](Vault.cache_pool: Balance<Ty0>)
18CopyLoc[4](loc2: u64)
19Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
20MoveLoc[1](Arg1: u64)
21MoveLoc[4](loc2: u64)
22Sub
23StLoc[3](loc1: u64)
24StLoc[2](loc0: Balance<Ty0>)
B3:
25MoveLoc[2](loc0: Balance<Ty0>)
26MoveLoc[3](loc1: u64)
27Ret
}
public(friend) withdraw_all<Ty0>(Arg0: &mut Vault<Ty0>): Balance<Ty0> {
L1: loc0: u64
B0:
0CopyLoc[0](Arg0: &mut Vault<Ty0>)
1ImmBorrowFieldGeneric[0](Vault.cache_pool: Balance<Ty0>)
2Call balance::value<Ty0>(&Balance<Ty0>): u64
3StLoc[1](loc0: u64)
4MoveLoc[0](Arg0: &mut Vault<Ty0>)
5MutBorrowFieldGeneric[0](Vault.cache_pool: Balance<Ty0>)
6MoveLoc[1](loc0: u64)
7Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
8Ret
}
public vault_amount<Ty0>(Arg0: &Vault<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &Vault<Ty0>)
1ImmBorrowFieldGeneric[0](Vault.cache_pool: Balance<Ty0>)
2Call balance::value<Ty0>(&Balance<Ty0>): u64
3Ret
}
}