core
Module0x07e7…67a7
- Move path
- 0xd5b3…fd97::core
- Functions
- 472 public, 0 entry
- Structs
- 20
Bytecode2055 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v6
module d5b301aae5f5bbd01d7cc067efd1ea27f566aaa2f62e504aac60dd0062ebfd97.core {
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::coin;
use 0000000000000000000000000000000000000000000000000000000000000002::event;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::table;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
use 0000000000000000000000000000000000000000000000000000000000000002::vec_map;
struct Setting has key {
id: UID,
version: u64,
pools: VecMap<TypeName, address>,
boosts: VecMap<address, u64>
}
struct Pool<phantom Ty0> has store, key {
id: UID,
active: bool,
balance: Balance<Ty0>,
total_share: u128,
total_boost_share: u128,
reward_configs: VecMap<TypeName, RewardConfig>,
users: Table<address, address>
}
struct RewardConfig has store {
reward_rate_before: u64,
rate_change_at: u64,
reward_rate_after: u64,
per_share: u128,
last_update_time: u64,
bank: address,
boost_active: bool
}
struct Bank<phantom Ty0, phantom Ty1> has key {
id: UID,
pool: address,
balance: Balance<Ty1>
}
struct Deposit<phantom Ty0> has key {
id: UID,
pool: address,
amount: u64,
share: u128,
boost_share: u128,
debts: VecMap<TypeName, u64>,
credits: VecMap<TypeName, u64>,
owner: address
}
struct DepositInfo<phantom Ty0> has key {
id: UID,
pool: address,
deposit: address
}
struct AddPoolEvent<phantom Ty0> has copy, drop {
pool: address,
coin_type: TypeName
}
struct SetPoolEvent<phantom Ty0> has copy, drop {
pool: address,
active: bool
}
struct AddRewardConfigEvent<phantom Ty0> has copy, drop {
pool: address,
reward_type: TypeName,
reward_rate: u64,
start_at: u64,
bank: address,
boost_active: bool
}
struct SetRewardConfigEvent<phantom Ty0> has copy, drop {
pool: address,
reward_type: TypeName,
reward_rate: u64,
start_at: u64
}
struct FlipBoostEvent has copy, drop {
pool: address,
reward_type: TypeName
}
struct SettleEvent has copy, drop {
pool: address,
deposit: address,
old_debts: VecMap<TypeName, u64>,
new_debts: VecMap<TypeName, u64>
}
struct AfterSetBoostEvent has copy, drop {
pool: address,
deposit: address,
old_debts: VecMap<TypeName, u64>,
old_share: u128,
old_boost_share: u128,
new_debts: VecMap<TypeName, u64>,
new_share: u128,
new_boost_share: u128
}
struct FundingBankEvent<phantom Ty0> has copy, drop {
bank: address,
amount: u64
}
struct DepositEvent<phantom Ty0> has copy, drop {
deposit: address,
owner: address,
pool: address,
amount: u64
}
struct AddDepositEvent<phantom Ty0> has copy, drop {
deposit: address,
amount: u64
}
struct WithdrawEvent<phantom Ty0> has copy, drop {
deposit: address,
amount: u64
}
struct HarvestEvent<phantom Ty0> has copy, drop {
deposit: address,
reward_type: TypeName,
amount: u64
}
struct SetBoostEvent has copy, drop {
addr: address,
boost: u64
}
struct VersionUpdatedEvent has copy, drop {
old: u64,
new: u64
}
public assert_version(Arg0: &Setting) {
B0:
0MoveLoc[0](Arg0: &Setting)
1ImmBorrowField[0](Setting.version: u64)
2ReadRef
3LdConst[0](u64: 2)
4Le
5BrFalse(7)
B1:
6Branch(9)
B2:
7LdConst[8](u64: 6)
8Abort
B3:
9Ret
}
public(friend) migrate(Arg0: &mut Setting) {
B0:
0CopyLoc[0](Arg0: &mut Setting)
1ImmBorrowField[0](Setting.version: u64)
2ReadRef
3LdConst[0](u64: 2)
4Lt
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[0](Arg0: &mut Setting)
8Pop
9LdConst[8](u64: 6)
10Abort
B3:
11CopyLoc[0](Arg0: &mut Setting)
12ImmBorrowField[0](Setting.version: u64)
13ReadRef
14LdConst[0](u64: 2)
15Pack[19](VersionUpdatedEvent)
16Call event::emit<VersionUpdatedEvent>(VersionUpdatedEvent)
17LdConst[0](u64: 2)
18MoveLoc[0](Arg0: &mut Setting)
19MutBorrowField[0](Setting.version: u64)
20WriteRef
21Ret
}
init(Arg0: &mut TxContext) {
B0:
0MoveLoc[0](Arg0: &mut TxContext)
1Call object::new(&mut TxContext): UID
2LdConst[0](u64: 2)
3Call vec_map::empty<TypeName, address>(): VecMap<TypeName, address>
4Call vec_map::empty<address, u64>(): VecMap<address, u64>
5Pack[0](Setting)
6Call transfer::share_object<Setting>(Setting)
7Ret
}
now(Arg0: &Clock): u64 {
B0:
0MoveLoc[0](Arg0: &Clock)
1Call clock::timestamp_ms(&Clock): u64
2LdU64(1000)
3Div
4Ret
}
create_pool<Ty0>(Arg0: &mut TxContext): Pool<Ty0> {
B0:
0CopyLoc[0](Arg0: &mut TxContext)
1Call object::new(&mut TxContext): UID
2LdTrue
3Call balance::zero<Ty0>(): Balance<Ty0>
4LdU128(0)
5LdU128(0)
6Call vec_map::empty<TypeName, RewardConfig>(): VecMap<TypeName, RewardConfig>
7MoveLoc[0](Arg0: &mut TxContext)
8Call table::new<address, address>(&mut TxContext): Table<address, address>
9PackGeneric[0](Pool<Ty0>)
10Ret
}
create_reward_config_with_bank<Ty0, Ty1>(Arg0: address, Arg1: u64, Arg2: u64, Arg3: bool, Arg4: &Clock, Arg5: &mut TxContext): RewardConfig * Bank<Ty0, Ty1> {
L6: loc0: Bank<Ty0, Ty1>
B0:
0MoveLoc[5](Arg5: &mut TxContext)
1Call object::new(&mut TxContext): UID
2MoveLoc[0](Arg0: address)
3Call balance::zero<Ty1>(): Balance<Ty1>
4PackGeneric[1](Bank<Ty0, Ty1>)
5StLoc[6](loc0: Bank<Ty0, Ty1>)
6LdU64(0)
7MoveLoc[1](Arg1: u64)
8MoveLoc[2](Arg2: u64)
9LdU128(0)
10MoveLoc[4](Arg4: &Clock)
11Call now(&Clock): u64
12ImmBorrowLoc[6](loc0: Bank<Ty0, Ty1>)
13ImmBorrowFieldGeneric[0](Bank.id: UID)
14Call object::uid_to_address(&UID): address
15MoveLoc[3](Arg3: bool)
16Pack[2](RewardConfig)
17MoveLoc[6](loc0: Bank<Ty0, Ty1>)
18Ret
}
create_deposit<Ty0>(Arg0: &mut Pool<Ty0>, Arg1: u64, Arg2: u64, Arg3: address, Arg4: &Clock, Arg5: &mut TxContext): Deposit<Ty0> {
B0:
0MoveLoc[5](Arg5: &mut TxContext)
1Call object::new(&mut TxContext): UID
2CopyLoc[0](Arg0: &mut Pool<Ty0>)
3ImmBorrowFieldGeneric[1](Pool.id: UID)
4Call object::uid_to_address(&UID): address
5CopyLoc[1](Arg1: u64)
6LdU128(0)
7LdU128(0)
8MoveLoc[0](Arg0: &mut Pool<Ty0>)
9MoveLoc[1](Arg1: u64)
10MoveLoc[2](Arg2: u64)
11MoveLoc[4](Arg4: &Clock)
12Call debts<Ty0>(&mut Pool<Ty0>, u64, u64, &Clock): VecMap<TypeName, u64>
13Call vec_map::empty<TypeName, u64>(): VecMap<TypeName, u64>
14MoveLoc[3](Arg3: address)
15PackGeneric[2](Deposit<Ty0>)
16Ret
}
create_deposit_info<Ty0>(Arg0: address, Arg1: address, Arg2: &mut TxContext): DepositInfo<Ty0> {
B0:
0MoveLoc[2](Arg2: &mut TxContext)
1Call object::new(&mut TxContext): UID
2MoveLoc[0](Arg0: address)
3MoveLoc[1](Arg1: address)
4PackGeneric[3](DepositInfo<Ty0>)
5Ret
}
set_pool_active<Ty0>(Arg0: &mut Pool<Ty0>, Arg1: bool) {
B0:
0MoveLoc[1](Arg1: bool)
1MoveLoc[0](Arg0: &mut Pool<Ty0>)
2MutBorrowFieldGeneric[2](Pool.active: bool)
3WriteRef
4Ret
}
B0:
0CopyLoc[0](Arg0: &mut RewardConfig)
1ImmBorrowField[4](RewardConfig.reward_rate_before: u64)
2ReadRef
3CopyLoc[0](Arg0: &mut RewardConfig)
4ImmBorrowField[5](RewardConfig.rate_change_at: u64)
5ReadRef
6CopyLoc[0](Arg0: &mut RewardConfig)
7ImmBorrowField[6](RewardConfig.reward_rate_after: u64)
8ReadRef
9CopyLoc[0](Arg0: &mut RewardConfig)
10ImmBorrowField[7](RewardConfig.per_share: u128)
11ReadRef
12CopyLoc[0](Arg0: &mut RewardConfig)
13ImmBorrowField[8](RewardConfig.last_update_time: u64)
14ReadRef
15MoveLoc[1](Arg1: u128)
16CopyLoc[2](Arg2: &Clock)
17Call now(&Clock): u64
18Call calculate_per_share_of_reward_config(u64, u64, u64, u128, u64, u128, u64): u128
19CopyLoc[0](Arg0: &mut RewardConfig)
20MutBorrowField[7](RewardConfig.per_share: u128)
21WriteRef
22MoveLoc[2](Arg2: &Clock)
23Call now(&Clock): u64
24MoveLoc[0](Arg0: &mut RewardConfig)
25MutBorrowField[8](RewardConfig.last_update_time: u64)
26WriteRef
27Ret
}
update_reward_rate(Arg0: &mut RewardConfig, Arg1: u64, Arg2: u64, Arg3: u128, Arg4: &Clock) {
B0:
0CopyLoc[0](Arg0: &mut RewardConfig)
1MoveLoc[3](Arg3: u128)
2CopyLoc[4](Arg4: &Clock)
3Call update_per_share(&mut RewardConfig, u128, &Clock)
4MoveLoc[4](Arg4: &Clock)
5Call now(&Clock): u64
6CopyLoc[0](Arg0: &mut RewardConfig)
7ImmBorrowField[5](RewardConfig.rate_change_at: u64)
8ReadRef
9Gt
10BrFalse(17)
B1:
11CopyLoc[0](Arg0: &mut RewardConfig)
12ImmBorrowField[6](RewardConfig.reward_rate_after: u64)
13ReadRef
14CopyLoc[0](Arg0: &mut RewardConfig)
15MutBorrowField[4](RewardConfig.reward_rate_before: u64)
16WriteRef
B2:
17MoveLoc[1](Arg1: u64)
18CopyLoc[0](Arg0: &mut RewardConfig)
19MutBorrowField[5](RewardConfig.rate_change_at: u64)
20WriteRef
21MoveLoc[2](Arg2: u64)
22MoveLoc[0](Arg0: &mut RewardConfig)
23MutBorrowField[6](RewardConfig.reward_rate_after: u64)
24WriteRef
25Ret
}
L4: loc0: u128
L5: loc1: u128
B0:
0CopyLoc[0](Arg0: &mut Deposit<Ty0>)
1FreezeRef
2MoveLoc[1](Arg1: &Setting)
3Call cal_share<Ty0>(&Deposit<Ty0>, &Setting): u128 * u128
4StLoc[4](loc0: u128)
5StLoc[5](loc1: u128)
6MoveLoc[3](Arg3: bool)
7Not
8BrFalse(29)
B1:
9CopyLoc[2](Arg2: &mut Pool<Ty0>)
10ImmBorrowFieldGeneric[3](Pool.total_share: u128)
11ReadRef
12CopyLoc[0](Arg0: &mut Deposit<Ty0>)
13ImmBorrowFieldGeneric[4](Deposit.share: u128)
14ReadRef
15Sub
16CopyLoc[2](Arg2: &mut Pool<Ty0>)
17MutBorrowFieldGeneric[3](Pool.total_share: u128)
18WriteRef
19CopyLoc[2](Arg2: &mut Pool<Ty0>)
20ImmBorrowFieldGeneric[5](Pool.total_boost_share: u128)
21ReadRef
22CopyLoc[0](Arg0: &mut Deposit<Ty0>)
23ImmBorrowFieldGeneric[6](Deposit.boost_share: u128)
24ReadRef
25Sub
26CopyLoc[2](Arg2: &mut Pool<Ty0>)
27MutBorrowFieldGeneric[5](Pool.total_boost_share: u128)
28WriteRef
B2:
29MoveLoc[5](loc1: u128)
30CopyLoc[0](Arg0: &mut Deposit<Ty0>)
31MutBorrowFieldGeneric[4](Deposit.share: u128)
32WriteRef
33CopyLoc[2](Arg2: &mut Pool<Ty0>)
34ImmBorrowFieldGeneric[3](Pool.total_share: u128)
35ReadRef
36CopyLoc[0](Arg0: &mut Deposit<Ty0>)
37ImmBorrowFieldGeneric[4](Deposit.share: u128)
38ReadRef
39Add
40CopyLoc[2](Arg2: &mut Pool<Ty0>)
41MutBorrowFieldGeneric[3](Pool.total_share: u128)
42WriteRef
43MoveLoc[4](loc0: u128)
44CopyLoc[0](Arg0: &mut Deposit<Ty0>)
45MutBorrowFieldGeneric[6](Deposit.boost_share: u128)
46WriteRef
47CopyLoc[2](Arg2: &mut Pool<Ty0>)
48ImmBorrowFieldGeneric[5](Pool.total_boost_share: u128)
49ReadRef
50MoveLoc[0](Arg0: &mut Deposit<Ty0>)
51ImmBorrowFieldGeneric[6](Deposit.boost_share: u128)
52ReadRef
53Add
54MoveLoc[2](Arg2: &mut Pool<Ty0>)
55MutBorrowFieldGeneric[5](Pool.total_boost_share: u128)
56WriteRef
57Ret
}
update_boost(Arg0: &mut Setting, Arg1: address, Arg2: u64) {
B0:
0CopyLoc[0](Arg0: &mut Setting)
1ImmBorrowField[13](Setting.boosts: VecMap<address, u64>)
2ImmBorrowLoc[1](Arg1: address)
3Call vec_map::contains<address, u64>(&VecMap<address, u64>, &address): bool
4BrFalse(11)
B1:
5CopyLoc[0](Arg0: &mut Setting)
6MutBorrowField[13](Setting.boosts: VecMap<address, u64>)
7ImmBorrowLoc[1](Arg1: address)
8Call vec_map::remove<address, u64>(&mut VecMap<address, u64>, &address): address * u64
9Pop
10Pop
B2:
11CopyLoc[2](Arg2: u64)
12LdConst[2](u128: 1000)
13CastU64
14Neq
15BrFalse(22)
B3:
16MoveLoc[0](Arg0: &mut Setting)
17MutBorrowField[13](Setting.boosts: VecMap<address, u64>)
18MoveLoc[1](Arg1: address)
19MoveLoc[2](Arg2: u64)
20Call vec_map::insert<address, u64>(&mut VecMap<address, u64>, address, u64)
21Branch(24)
B4:
22MoveLoc[0](Arg0: &mut Setting)
23Pop
B5:
24Ret
}
add_credit<Ty0>(Arg0: &mut Deposit<Ty0>, Arg1: &TypeName, Arg2: u64) {
L3: loc0: &mut u64
B0:
0CopyLoc[0](Arg0: &mut Deposit<Ty0>)
1ImmBorrowFieldGeneric[7](Deposit.credits: VecMap<TypeName, u64>)
2CopyLoc[1](Arg1: &TypeName)
3Call vec_map::contains<TypeName, u64>(&VecMap<TypeName, u64>, &TypeName): bool
4BrFalse(17)
B1:
5MoveLoc[0](Arg0: &mut Deposit<Ty0>)
6MutBorrowFieldGeneric[7](Deposit.credits: VecMap<TypeName, u64>)
7MoveLoc[1](Arg1: &TypeName)
8Call vec_map::get_mut<TypeName, u64>(&mut VecMap<TypeName, u64>, &TypeName): &mut u64
9StLoc[3](loc0: &mut u64)
10CopyLoc[3](loc0: &mut u64)
11ReadRef
12MoveLoc[2](Arg2: u64)
13Add
14MoveLoc[3](loc0: &mut u64)
15WriteRef
16Branch(23)
B2:
17MoveLoc[0](Arg0: &mut Deposit<Ty0>)
18MutBorrowFieldGeneric[7](Deposit.credits: VecMap<TypeName, u64>)
19MoveLoc[1](Arg1: &TypeName)
20ReadRef
21MoveLoc[2](Arg2: u64)
22Call vec_map::insert<TypeName, u64>(&mut VecMap<TypeName, u64>, TypeName, u64)
B3:
23Ret
}
extract_credit<Ty0>(Arg0: &mut Deposit<Ty0>, Arg1: &TypeName): u64 {
L2: loc0: u64
B0:
0CopyLoc[0](Arg0: &mut Deposit<Ty0>)
1ImmBorrowFieldGeneric[7](Deposit.credits: VecMap<TypeName, u64>)
2CopyLoc[1](Arg1: &TypeName)
3Call vec_map::contains<TypeName, u64>(&VecMap<TypeName, u64>, &TypeName): bool
4Not
5BrFalse(12)
B1:
6MoveLoc[0](Arg0: &mut Deposit<Ty0>)
7Pop
8MoveLoc[1](Arg1: &TypeName)
9Pop
10LdU64(0)
11Ret
B2:
12MoveLoc[0](Arg0: &mut Deposit<Ty0>)
13MutBorrowFieldGeneric[7](Deposit.credits: VecMap<TypeName, u64>)
14MoveLoc[1](Arg1: &TypeName)
15Call vec_map::remove<TypeName, u64>(&mut VecMap<TypeName, u64>, &TypeName): TypeName * u64
16StLoc[2](loc0: u64)
17Pop
18MoveLoc[2](loc0: u64)
19Ret
}
update_debt<Ty0>(Arg0: &mut Deposit<Ty0>, Arg1: &TypeName, Arg2: u64) {
B0:
0CopyLoc[0](Arg0: &mut Deposit<Ty0>)
1ImmBorrowFieldGeneric[8](Deposit.debts: VecMap<TypeName, u64>)
2CopyLoc[1](Arg1: &TypeName)
3Call vec_map::contains<TypeName, u64>(&VecMap<TypeName, u64>, &TypeName): bool
4BrFalse(11)
B1:
5CopyLoc[0](Arg0: &mut Deposit<Ty0>)
6MutBorrowFieldGeneric[8](Deposit.debts: VecMap<TypeName, u64>)
7CopyLoc[1](Arg1: &TypeName)
8Call vec_map::remove<TypeName, u64>(&mut VecMap<TypeName, u64>, &TypeName): TypeName * u64
9Pop
10Pop
B2:
11MoveLoc[0](Arg0: &mut Deposit<Ty0>)
12MutBorrowFieldGeneric[8](Deposit.debts: VecMap<TypeName, u64>)
13MoveLoc[1](Arg1: &TypeName)
14ReadRef
15MoveLoc[2](Arg2: u64)
16Call vec_map::insert<TypeName, u64>(&mut VecMap<TypeName, u64>, TypeName, u64)
17Ret
}
get_credit<Ty0>(Arg0: &Deposit<Ty0>, Arg1: &TypeName): u64 {
B0:
0CopyLoc[0](Arg0: &Deposit<Ty0>)
1ImmBorrowFieldGeneric[7](Deposit.credits: VecMap<TypeName, u64>)
2CopyLoc[1](Arg1: &TypeName)
3Call vec_map::contains<TypeName, u64>(&VecMap<TypeName, u64>, &TypeName): bool
4Not
5BrFalse(12)
B1:
6MoveLoc[0](Arg0: &Deposit<Ty0>)
7Pop
8MoveLoc[1](Arg1: &TypeName)
9Pop
10LdU64(0)
11Ret
B2:
12MoveLoc[0](Arg0: &Deposit<Ty0>)
13ImmBorrowFieldGeneric[7](Deposit.credits: VecMap<TypeName, u64>)
14MoveLoc[1](Arg1: &TypeName)
15Call vec_map::get<TypeName, u64>(&VecMap<TypeName, u64>, &TypeName): &u64
16ReadRef
17Ret
}
get_debt<Ty0>(Arg0: &Deposit<Ty0>, Arg1: &TypeName): u64 {
B0:
0CopyLoc[0](Arg0: &Deposit<Ty0>)
1ImmBorrowFieldGeneric[8](Deposit.debts: VecMap<TypeName, u64>)
2CopyLoc[1](Arg1: &TypeName)
3Call vec_map::contains<TypeName, u64>(&VecMap<TypeName, u64>, &TypeName): bool
4Not
5BrFalse(12)
B1:
6MoveLoc[0](Arg0: &Deposit<Ty0>)
7Pop
8MoveLoc[1](Arg1: &TypeName)
9Pop
10LdU64(0)
11Ret
B2:
12MoveLoc[0](Arg0: &Deposit<Ty0>)
13ImmBorrowFieldGeneric[8](Deposit.debts: VecMap<TypeName, u64>)
14MoveLoc[1](Arg1: &TypeName)
15Call vec_map::get<TypeName, u64>(&VecMap<TypeName, u64>, &TypeName): &u64
16ReadRef
17Ret
}
public get_boost(Arg0: &Setting, Arg1: &address): u64 {
B0:
0CopyLoc[0](Arg0: &Setting)
1ImmBorrowField[13](Setting.boosts: VecMap<address, u64>)
2CopyLoc[1](Arg1: &address)
3Call vec_map::contains<address, u64>(&VecMap<address, u64>, &address): bool
4Not
5BrFalse(13)
B1:
6MoveLoc[0](Arg0: &Setting)
7Pop
8MoveLoc[1](Arg1: &address)
9Pop
10LdConst[2](u128: 1000)
11CastU64
12Ret
B2:
13MoveLoc[0](Arg0: &Setting)
14ImmBorrowField[13](Setting.boosts: VecMap<address, u64>)
15MoveLoc[1](Arg1: &address)
16Call vec_map::get<address, u64>(&VecMap<address, u64>, &address): &u64
17ReadRef
18Ret
}
L2: loc0: u128
L3: loc1: u128
B0:
0CopyLoc[0](Arg0: &Deposit<Ty0>)
1ImmBorrowFieldGeneric[9](Deposit.amount: u64)
2ReadRef
3CastU128
4LdConst[2](u128: 1000)
5Mul
6StLoc[3](loc1: u128)
7CopyLoc[0](Arg0: &Deposit<Ty0>)
8ImmBorrowFieldGeneric[9](Deposit.amount: u64)
9ReadRef
10CastU128
11MoveLoc[1](Arg1: &Setting)
12MoveLoc[0](Arg0: &Deposit<Ty0>)
13ImmBorrowFieldGeneric[10](Deposit.owner: address)
14Call get_boost(&Setting, &address): u64
15CastU128
16Mul
17StLoc[2](loc0: u128)
18MoveLoc[3](loc1: u128)
19MoveLoc[2](loc0: u128)
20Ret
}
B0:
0MoveLoc[1](Arg1: &RewardConfig)
1ImmBorrowField[18](RewardConfig.boost_active: bool)
2ReadRef
3BrFalse(8)
B1:
4MoveLoc[0](Arg0: &Deposit<Ty0>)
5ImmBorrowFieldGeneric[6](Deposit.boost_share: u128)
6ReadRef
7Ret
B2:
8MoveLoc[0](Arg0: &Deposit<Ty0>)
9ImmBorrowFieldGeneric[4](Deposit.share: u128)
10ReadRef
11Ret
}
L3: loc0: u128
B0:
0MoveLoc[0](Arg0: &RewardConfig)
1ImmBorrowField[18](RewardConfig.boost_active: bool)
2ReadRef
3BrFalse(7)
B1:
4MoveLoc[2](Arg2: u128)
5StLoc[3](loc0: u128)
6Branch(9)
B2:
7MoveLoc[1](Arg1: u128)
8StLoc[3](loc0: u128)
B3:
9MoveLoc[3](loc0: u128)
10Ret
}
get_reward_config_info_by_idx_mut<Ty0>(Arg0: &mut Pool<Ty0>, Arg1: u64): &TypeName * &mut RewardConfig * u128 {
L2: loc0: &TypeName
L3: loc1: &mut RewardConfig
L4: loc2: u128
B0:
0CopyLoc[0](Arg0: &mut Pool<Ty0>)
1MutBorrowFieldGeneric[11](Pool.reward_configs: VecMap<TypeName, RewardConfig>)
2MoveLoc[1](Arg1: u64)
3Call vec_map::get_entry_by_idx_mut<TypeName, RewardConfig>(&mut VecMap<TypeName, RewardConfig>, u64): &TypeName * &mut RewardConfig
4StLoc[3](loc1: &mut RewardConfig)
5StLoc[2](loc0: &TypeName)
6CopyLoc[3](loc1: &mut RewardConfig)
7FreezeRef
8CopyLoc[0](Arg0: &mut Pool<Ty0>)
9ImmBorrowFieldGeneric[3](Pool.total_share: u128)
10ReadRef
11MoveLoc[0](Arg0: &mut Pool<Ty0>)
12ImmBorrowFieldGeneric[5](Pool.total_boost_share: u128)
13ReadRef
14Call current_total_share(&RewardConfig, u128, u128): u128
15StLoc[4](loc2: u128)
16MoveLoc[2](loc0: &TypeName)
17MoveLoc[3](loc1: &mut RewardConfig)
18MoveLoc[4](loc2: u128)
19Ret
}
L4: loc0: bool
L5: loc1: u128
B0:
0CopyLoc[1](Arg1: u64)
1CopyLoc[0](Arg0: u64)
2Le
3BrFalse(7)
B1:
4LdTrue
5StLoc[4](loc0: bool)
6Branch(11)
B2:
7CopyLoc[3](Arg3: u128)
8LdU128(0)
9Eq
10StLoc[4](loc0: bool)
B3:
11MoveLoc[4](loc0: bool)
12BrFalse(16)
B4:
13LdU128(0)
14StLoc[5](loc1: u128)
15Branch(29)
B5:
16MoveLoc[1](Arg1: u64)
17MoveLoc[0](Arg0: u64)
18Sub
19CastU128
20MoveLoc[2](Arg2: u64)
21CastU128
22Mul
23LdConst[1](u128: 1844..)
24Mul
25MoveLoc[3](Arg3: u128)
26CastU128
27Div
28StLoc[5](loc1: u128)
B6:
29MoveLoc[5](loc1: u128)
30Ret
}
L7: loc0: u128
L8: loc1: u64
L9: loc2: u64
L10: loc3: u128
B0:
0CopyLoc[6](Arg6: u64)
1CopyLoc[1](Arg1: u64)
2Lt
3BrFalse(7)
B1:
4CopyLoc[6](Arg6: u64)
5StLoc[9](loc2: u64)
6Branch(9)
B2:
7CopyLoc[1](Arg1: u64)
8StLoc[9](loc2: u64)
B3:
9CopyLoc[4](Arg4: u64)
10MoveLoc[9](loc2: u64)
11MoveLoc[0](Arg0: u64)
12CopyLoc[5](Arg5: u128)
13Call per_share_of_period(u64, u64, u64, u128): u128
14StLoc[10](loc3: u128)
15CopyLoc[1](Arg1: u64)
16CopyLoc[4](Arg4: u64)
17Lt
18BrFalse(22)
B4:
19MoveLoc[4](Arg4: u64)
20StLoc[8](loc1: u64)
21Branch(24)
B5:
22MoveLoc[1](Arg1: u64)
23StLoc[8](loc1: u64)
B6:
24MoveLoc[8](loc1: u64)
25MoveLoc[6](Arg6: u64)
26MoveLoc[2](Arg2: u64)
27MoveLoc[5](Arg5: u128)
28Call per_share_of_period(u64, u64, u64, u128): u128
29StLoc[7](loc0: u128)
30MoveLoc[3](Arg3: u128)
31MoveLoc[10](loc3: u128)
32Add
33MoveLoc[7](loc0: u128)
34Add
35Ret
}
debt(Arg0: &mut RewardConfig, Arg1: u128, Arg2: u128, Arg3: &Clock): u64 {
B0:
0CopyLoc[0](Arg0: &mut RewardConfig)
1MoveLoc[2](Arg2: u128)
2MoveLoc[3](Arg3: &Clock)
3Call update_per_share(&mut RewardConfig, u128, &Clock)
4MoveLoc[0](Arg0: &mut RewardConfig)
5ImmBorrowField[7](RewardConfig.per_share: u128)
6ReadRef
7MoveLoc[1](Arg1: u128)
8Mul
9LdConst[1](u128: 1844..)
10Div
11CastU64
12Ret
}
debts<Ty0>(Arg0: &mut Pool<Ty0>, Arg1: u64, Arg2: u64, Arg3: &Clock): VecMap<TypeName, u64> {
L4: loc0: &TypeName
L5: loc1: u64
L6: loc2: VecMap<TypeName, u64>
L7: loc3: u64
L8: loc4: &mut RewardConfig
L9: loc5: u128
L10: loc6: u64
L11: loc7: u128
B0:
0Call vec_map::empty<TypeName, u64>(): VecMap<TypeName, u64>
1StLoc[6](loc2: VecMap<TypeName, u64>)
2LdU64(0)
3StLoc[7](loc3: u64)
4CopyLoc[0](Arg0: &mut Pool<Ty0>)
5ImmBorrowFieldGeneric[11](Pool.reward_configs: VecMap<TypeName, RewardConfig>)
6Call vec_map::size<TypeName, RewardConfig>(&VecMap<TypeName, RewardConfig>): u64
7StLoc[10](loc6: u64)
B1:
8CopyLoc[7](loc3: u64)
9CopyLoc[10](loc6: u64)
10Lt
11BrFalse(51)
B2:
12Branch(13)
B3:
13CopyLoc[0](Arg0: &mut Pool<Ty0>)
14CopyLoc[7](loc3: u64)
15Call get_reward_config_info_by_idx_mut<Ty0>(&mut Pool<Ty0>, u64): &TypeName * &mut RewardConfig * u128
16StLoc[11](loc7: u128)
17StLoc[8](loc4: &mut RewardConfig)
18StLoc[4](loc0: &TypeName)
19CopyLoc[8](loc4: &mut RewardConfig)
20ImmBorrowField[18](RewardConfig.boost_active: bool)
21ReadRef
22BrFalse(30)
B4:
23CopyLoc[1](Arg1: u64)
24CastU128
25CopyLoc[2](Arg2: u64)
26CastU128
27Mul
28StLoc[9](loc5: u128)
29Branch(35)
B5:
30CopyLoc[1](Arg1: u64)
31CastU128
32LdConst[2](u128: 1000)
33Mul
34StLoc[9](loc5: u128)
B6:
35MoveLoc[8](loc4: &mut RewardConfig)
36MoveLoc[9](loc5: u128)
37MoveLoc[11](loc7: u128)
38CopyLoc[3](Arg3: &Clock)
39Call debt(&mut RewardConfig, u128, u128, &Clock): u64
40StLoc[5](loc1: u64)
41MutBorrowLoc[6](loc2: VecMap<TypeName, u64>)
42MoveLoc[4](loc0: &TypeName)
43ReadRef
44MoveLoc[5](loc1: u64)
45Call vec_map::insert<TypeName, u64>(&mut VecMap<TypeName, u64>, TypeName, u64)
46MoveLoc[7](loc3: u64)
47LdU64(1)
48Add
49StLoc[7](loc3: u64)
50Branch(8)
B7:
51MoveLoc[0](Arg0: &mut Pool<Ty0>)
52Pop
53MoveLoc[3](Arg3: &Clock)
54Pop
55MoveLoc[6](loc2: VecMap<TypeName, u64>)
56Ret
}
get_reward<Ty0>(Arg0: &Deposit<Ty0>, Arg1: &RewardConfig, Arg2: &TypeName): u64 {
B0:
0CopyLoc[0](Arg0: &Deposit<Ty0>)
1CopyLoc[1](Arg1: &RewardConfig)
2Call share_in_the_reward_config<Ty0>(&Deposit<Ty0>, &RewardConfig): u128
3CastU128
4MoveLoc[1](Arg1: &RewardConfig)
5ImmBorrowField[7](RewardConfig.per_share: u128)
6ReadRef
7Mul
8LdConst[1](u128: 1844..)
9Div
10CastU64
11MoveLoc[0](Arg0: &Deposit<Ty0>)
12MoveLoc[2](Arg2: &TypeName)
13Call get_debt<Ty0>(&Deposit<Ty0>, &TypeName): u64
14Sub
15Ret
}
reward_to_credit<Ty0>(Arg0: &mut Deposit<Ty0>, Arg1: &TypeName, Arg2: &mut RewardConfig, Arg3: u128, Arg4: &Clock) {
L5: loc0: u64
B0:
0CopyLoc[2](Arg2: &mut RewardConfig)
1MoveLoc[3](Arg3: u128)
2MoveLoc[4](Arg4: &Clock)
3Call update_per_share(&mut RewardConfig, u128, &Clock)
4CopyLoc[0](Arg0: &mut Deposit<Ty0>)
5FreezeRef
6MoveLoc[2](Arg2: &mut RewardConfig)
7FreezeRef
8CopyLoc[1](Arg1: &TypeName)
9Call get_reward<Ty0>(&Deposit<Ty0>, &RewardConfig, &TypeName): u64
10StLoc[5](loc0: u64)
11MoveLoc[0](Arg0: &mut Deposit<Ty0>)
12MoveLoc[1](Arg1: &TypeName)
13MoveLoc[5](loc0: u64)
14Call add_credit<Ty0>(&mut Deposit<Ty0>, &TypeName, u64)
15Ret
}
rewards_to_credits<Ty0>(Arg0: &mut Pool<Ty0>, Arg1: &mut Deposit<Ty0>, Arg2: &Clock) {
L3: loc0: &TypeName
L4: loc1: u64
L5: loc2: &mut RewardConfig
L6: loc3: u64
L7: loc4: u128
B0:
0LdU64(0)
1StLoc[4](loc1: u64)
2CopyLoc[0](Arg0: &mut Pool<Ty0>)
3ImmBorrowFieldGeneric[11](Pool.reward_configs: VecMap<TypeName, RewardConfig>)
4Call vec_map::size<TypeName, RewardConfig>(&VecMap<TypeName, RewardConfig>): u64
5StLoc[6](loc3: u64)
B1:
6CopyLoc[4](loc1: u64)
7CopyLoc[6](loc3: u64)
8Lt
9BrFalse(28)
B2:
10Branch(11)
B3:
11CopyLoc[0](Arg0: &mut Pool<Ty0>)
12CopyLoc[4](loc1: u64)
13Call get_reward_config_info_by_idx_mut<Ty0>(&mut Pool<Ty0>, u64): &TypeName * &mut RewardConfig * u128
14StLoc[7](loc4: u128)
15StLoc[5](loc2: &mut RewardConfig)
16StLoc[3](loc0: &TypeName)
17CopyLoc[1](Arg1: &mut Deposit<Ty0>)
18MoveLoc[3](loc0: &TypeName)
19MoveLoc[5](loc2: &mut RewardConfig)
20MoveLoc[7](loc4: u128)
21CopyLoc[2](Arg2: &Clock)
22Call reward_to_credit<Ty0>(&mut Deposit<Ty0>, &TypeName, &mut RewardConfig, u128, &Clock)
23MoveLoc[4](loc1: u64)
24LdU64(1)
25Add
26StLoc[4](loc1: u64)
27Branch(6)
B4:
28MoveLoc[0](Arg0: &mut Pool<Ty0>)
29Pop
30MoveLoc[1](Arg1: &mut Deposit<Ty0>)
31Pop
32MoveLoc[2](Arg2: &Clock)
33Pop
34Ret
}
update_deposit_amount<Ty0>(Arg0: &Setting, Arg1: &mut Pool<Ty0>, Arg2: &mut Deposit<Ty0>, Arg3: u64, Arg4: &Clock) {
B0:
0CopyLoc[1](Arg1: &mut Pool<Ty0>)
1CopyLoc[2](Arg2: &mut Deposit<Ty0>)
2CopyLoc[4](Arg4: &Clock)
3Call rewards_to_credits<Ty0>(&mut Pool<Ty0>, &mut Deposit<Ty0>, &Clock)
4MoveLoc[3](Arg3: u64)
5CopyLoc[2](Arg2: &mut Deposit<Ty0>)
6MutBorrowFieldGeneric[9](Deposit.amount: u64)
7WriteRef
8CopyLoc[2](Arg2: &mut Deposit<Ty0>)
9CopyLoc[0](Arg0: &Setting)
10CopyLoc[1](Arg1: &mut Pool<Ty0>)
11LdFalse
12Call update_share<Ty0>(&mut Deposit<Ty0>, &Setting, &mut Pool<Ty0>, bool)
13MoveLoc[1](Arg1: &mut Pool<Ty0>)
14CopyLoc[2](Arg2: &mut Deposit<Ty0>)
15ImmBorrowFieldGeneric[9](Deposit.amount: u64)
16ReadRef
17MoveLoc[0](Arg0: &Setting)
18CopyLoc[2](Arg2: &mut Deposit<Ty0>)
19ImmBorrowFieldGeneric[10](Deposit.owner: address)
20Call get_boost(&Setting, &address): u64
21MoveLoc[4](Arg4: &Clock)
22Call debts<Ty0>(&mut Pool<Ty0>, u64, u64, &Clock): VecMap<TypeName, u64>
23MoveLoc[2](Arg2: &mut Deposit<Ty0>)
24MutBorrowFieldGeneric[8](Deposit.debts: VecMap<TypeName, u64>)
25WriteRef
26Ret
}
public(friend) add_pool<Ty0>(Arg0: &mut Setting, Arg1: &mut TxContext) {
L2: loc0: TypeName
L3: loc1: Pool<Ty0>
B0:
0Call type_name::get<Ty0>(): TypeName
1StLoc[2](loc0: TypeName)
2CopyLoc[0](Arg0: &mut Setting)
3ImmBorrowField[20](Setting.pools: VecMap<TypeName, address>)
4ImmBorrowLoc[2](loc0: TypeName)
5Call vec_map::contains<TypeName, address>(&VecMap<TypeName, address>, &TypeName): bool
6Not
7BrFalse(9)
B1:
8Branch(15)
B2:
9MoveLoc[0](Arg0: &mut Setting)
10Pop
11MoveLoc[1](Arg1: &mut TxContext)
12Pop
13LdConst[7](u64: 5)
14Abort
B3:
15MoveLoc[1](Arg1: &mut TxContext)
16Call create_pool<Ty0>(&mut TxContext): Pool<Ty0>
17StLoc[3](loc1: Pool<Ty0>)
18MoveLoc[0](Arg0: &mut Setting)
19MutBorrowField[20](Setting.pools: VecMap<TypeName, address>)
20MoveLoc[2](loc0: TypeName)
21ImmBorrowLoc[3](loc1: Pool<Ty0>)
22ImmBorrowFieldGeneric[1](Pool.id: UID)
23Call object::uid_to_address(&UID): address
24Call vec_map::insert<TypeName, address>(&mut VecMap<TypeName, address>, TypeName, address)
25ImmBorrowLoc[3](loc1: Pool<Ty0>)
26ImmBorrowFieldGeneric[1](Pool.id: UID)
27Call object::uid_to_address(&UID): address
28Call type_name::get<Ty0>(): TypeName
29PackGeneric[4](AddPoolEvent<Ty0>)
30Call event::emit<AddPoolEvent<Ty0>>(AddPoolEvent<Ty0>)
31MoveLoc[3](loc1: Pool<Ty0>)
32Call transfer::share_object<Pool<Ty0>>(Pool<Ty0>)
33Ret
}
public(friend) set_pool<Ty0>(Arg0: &mut Pool<Ty0>, Arg1: bool) {
B0:
0CopyLoc[0](Arg0: &mut Pool<Ty0>)
1CopyLoc[1](Arg1: bool)
2Call set_pool_active<Ty0>(&mut Pool<Ty0>, bool)
3MoveLoc[0](Arg0: &mut Pool<Ty0>)
4ImmBorrowFieldGeneric[1](Pool.id: UID)
5Call object::uid_to_address(&UID): address
6MoveLoc[1](Arg1: bool)
7PackGeneric[5](SetPoolEvent<Ty0>)
8Call event::emit<SetPoolEvent<Ty0>>(SetPoolEvent<Ty0>)
9Ret
}
public(friend) add_reward_config<Ty0, Ty1>(Arg0: &mut Pool<Ty0>, Arg1: u64, Arg2: u64, Arg3: bool, Arg4: &Clock, Arg5: &mut TxContext) {
L6: loc0: Bank<Ty0, Ty1>
L7: loc1: TypeName
L8: loc2: RewardConfig
B0:
0Call type_name::get<Ty1>(): TypeName
1StLoc[7](loc1: TypeName)
2CopyLoc[0](Arg0: &mut Pool<Ty0>)
3ImmBorrowFieldGeneric[11](Pool.reward_configs: VecMap<TypeName, RewardConfig>)
4ImmBorrowLoc[7](loc1: TypeName)
5Call vec_map::contains<TypeName, RewardConfig>(&VecMap<TypeName, RewardConfig>, &TypeName): bool
6Not
7BrFalse(9)
B1:
8Branch(17)
B2:
9MoveLoc[0](Arg0: &mut Pool<Ty0>)
10Pop
11MoveLoc[5](Arg5: &mut TxContext)
12Pop
13MoveLoc[4](Arg4: &Clock)
14Pop
15LdConst[4](u64: 1)
16Abort
B3:
17CopyLoc[4](Arg4: &Clock)
18Call now(&Clock): u64
19CopyLoc[1](Arg1: u64)
20Lt
21BrFalse(23)
B4:
22Branch(31)
B5:
23MoveLoc[0](Arg0: &mut Pool<Ty0>)
24Pop
25MoveLoc[5](Arg5: &mut TxContext)
26Pop
27MoveLoc[4](Arg4: &Clock)
28Pop
29LdConst[6](u64: 4)
30Abort
B6:
31CopyLoc[0](Arg0: &mut Pool<Ty0>)
32ImmBorrowFieldGeneric[1](Pool.id: UID)
33Call object::uid_to_address(&UID): address
34CopyLoc[1](Arg1: u64)
35CopyLoc[2](Arg2: u64)
36CopyLoc[3](Arg3: bool)
37MoveLoc[4](Arg4: &Clock)
38MoveLoc[5](Arg5: &mut TxContext)
39Call create_reward_config_with_bank<Ty0, Ty1>(address, u64, u64, bool, &Clock, &mut TxContext): RewardConfig * Bank<Ty0, Ty1>
40StLoc[6](loc0: Bank<Ty0, Ty1>)
41StLoc[8](loc2: RewardConfig)
42CopyLoc[0](Arg0: &mut Pool<Ty0>)
43MutBorrowFieldGeneric[11](Pool.reward_configs: VecMap<TypeName, RewardConfig>)
44CopyLoc[7](loc1: TypeName)
45MoveLoc[8](loc2: RewardConfig)
46Call vec_map::insert<TypeName, RewardConfig>(&mut VecMap<TypeName, RewardConfig>, TypeName, RewardConfig)
47MoveLoc[0](Arg0: &mut Pool<Ty0>)
48ImmBorrowFieldGeneric[1](Pool.id: UID)
49Call object::uid_to_address(&UID): address
50MoveLoc[7](loc1: TypeName)
51MoveLoc[2](Arg2: u64)
52MoveLoc[1](Arg1: u64)
53ImmBorrowLoc[6](loc0: Bank<Ty0, Ty1>)
54ImmBorrowFieldGeneric[0](Bank.id: UID)
55Call object::uid_to_address(&UID): address
56MoveLoc[3](Arg3: bool)
57PackGeneric[6](AddRewardConfigEvent<Ty0>)
58Call event::emit<AddRewardConfigEvent<Ty0>>(AddRewardConfigEvent<Ty0>)
59MoveLoc[6](loc0: Bank<Ty0, Ty1>)
60Call transfer::share_object<Bank<Ty0, Ty1>>(Bank<Ty0, Ty1>)
61Ret
}
public(friend) set_reward_config<Ty0, Ty1>(Arg0: &mut Pool<Ty0>, Arg1: u64, Arg2: u64, Arg3: &Clock) {
L4: loc0: TypeName
L5: loc1: &mut RewardConfig
L6: loc2: u128
B0:
0CopyLoc[3](Arg3: &Clock)
1Call now(&Clock): u64
2CopyLoc[1](Arg1: u64)
3Lt
4BrFalse(6)
B1:
5Branch(12)
B2:
6MoveLoc[0](Arg0: &mut Pool<Ty0>)
7Pop
8MoveLoc[3](Arg3: &Clock)
9Pop
10LdConst[6](u64: 4)
11Abort
B3:
12Call type_name::get<Ty1>(): TypeName
13StLoc[4](loc0: TypeName)
14CopyLoc[0](Arg0: &mut Pool<Ty0>)
15MutBorrowFieldGeneric[11](Pool.reward_configs: VecMap<TypeName, RewardConfig>)
16ImmBorrowLoc[4](loc0: TypeName)
17Call vec_map::get_mut<TypeName, RewardConfig>(&mut VecMap<TypeName, RewardConfig>, &TypeName): &mut RewardConfig
18StLoc[5](loc1: &mut RewardConfig)
19CopyLoc[5](loc1: &mut RewardConfig)
20FreezeRef
21CopyLoc[0](Arg0: &mut Pool<Ty0>)
22ImmBorrowFieldGeneric[3](Pool.total_share: u128)
23ReadRef
24CopyLoc[0](Arg0: &mut Pool<Ty0>)
25ImmBorrowFieldGeneric[5](Pool.total_boost_share: u128)
26ReadRef
27Call current_total_share(&RewardConfig, u128, u128): u128
28StLoc[6](loc2: u128)
29MoveLoc[5](loc1: &mut RewardConfig)
30CopyLoc[1](Arg1: u64)
31CopyLoc[2](Arg2: u64)
32MoveLoc[6](loc2: u128)
33MoveLoc[3](Arg3: &Clock)
34Call update_reward_rate(&mut RewardConfig, u64, u64, u128, &Clock)
35MoveLoc[0](Arg0: &mut Pool<Ty0>)
36ImmBorrowFieldGeneric[1](Pool.id: UID)
37Call object::uid_to_address(&UID): address
38MoveLoc[4](loc0: TypeName)
39MoveLoc[2](Arg2: u64)
40MoveLoc[1](Arg1: u64)
41PackGeneric[7](SetRewardConfigEvent<Ty0>)
42Call event::emit<SetRewardConfigEvent<Ty0>>(SetRewardConfigEvent<Ty0>)
43Ret
}
public(friend) funding_bank<Ty0, Ty1>(Arg0: &mut Bank<Ty0, Ty1>, Arg1: Coin<Ty1>) {
L2: loc0: Balance<Ty1>
B0:
0MoveLoc[1](Arg1: Coin<Ty1>)
1Call coin::into_balance<Ty1>(Coin<Ty1>): Balance<Ty1>
2StLoc[2](loc0: Balance<Ty1>)
3CopyLoc[0](Arg0: &mut Bank<Ty0, Ty1>)
4ImmBorrowFieldGeneric[0](Bank.id: UID)
5Call object::uid_to_address(&UID): address
6ImmBorrowLoc[2](loc0: Balance<Ty1>)
7Call balance::value<Ty1>(&Balance<Ty1>): u64
8PackGeneric[8](FundingBankEvent<Ty1>)
9Call event::emit<FundingBankEvent<Ty1>>(FundingBankEvent<Ty1>)
10MoveLoc[0](Arg0: &mut Bank<Ty0, Ty1>)
11MutBorrowFieldGeneric[12](Bank.balance: Balance<Ty1>)
12MoveLoc[2](loc0: Balance<Ty1>)
13Call balance::join<Ty1>(&mut Balance<Ty1>, Balance<Ty1>): u64
14Pop
15Ret
}
public(friend) extract_bank<Ty0, Ty1>(Arg0: &mut Bank<Ty0, Ty1>, Arg1: u64, Arg2: &mut TxContext): Coin<Ty1> {
B0:
0MoveLoc[0](Arg0: &mut Bank<Ty0, Ty1>)
1MutBorrowFieldGeneric[12](Bank.balance: Balance<Ty1>)
2MoveLoc[1](Arg1: u64)
3Call balance::split<Ty1>(&mut Balance<Ty1>, u64): Balance<Ty1>
4MoveLoc[2](Arg2: &mut TxContext)
5Call coin::from_balance<Ty1>(Balance<Ty1>, &mut TxContext): Coin<Ty1>
6Ret
}
public(friend) flip_boost<Ty0, Ty1>(Arg0: &mut Pool<Ty0>, Arg1: &Clock) {
L2: loc0: TypeName
L3: loc1: &mut RewardConfig
L4: loc2: u128
B0:
0Call type_name::get<Ty1>(): TypeName
1StLoc[2](loc0: TypeName)
2CopyLoc[0](Arg0: &mut Pool<Ty0>)
3MutBorrowFieldGeneric[11](Pool.reward_configs: VecMap<TypeName, RewardConfig>)
4ImmBorrowLoc[2](loc0: TypeName)
5Call vec_map::get_mut<TypeName, RewardConfig>(&mut VecMap<TypeName, RewardConfig>, &TypeName): &mut RewardConfig
6StLoc[3](loc1: &mut RewardConfig)
7CopyLoc[3](loc1: &mut RewardConfig)
8FreezeRef
9CopyLoc[0](Arg0: &mut Pool<Ty0>)
10ImmBorrowFieldGeneric[3](Pool.total_share: u128)
11ReadRef
12CopyLoc[0](Arg0: &mut Pool<Ty0>)
13ImmBorrowFieldGeneric[5](Pool.total_boost_share: u128)
14ReadRef
15Call current_total_share(&RewardConfig, u128, u128): u128
16StLoc[4](loc2: u128)
17CopyLoc[3](loc1: &mut RewardConfig)
18MoveLoc[4](loc2: u128)
19MoveLoc[1](Arg1: &Clock)
20Call update_per_share(&mut RewardConfig, u128, &Clock)
21CopyLoc[3](loc1: &mut RewardConfig)
22ImmBorrowField[18](RewardConfig.boost_active: bool)
23ReadRef
24Not
25MoveLoc[3](loc1: &mut RewardConfig)
26MutBorrowField[18](RewardConfig.boost_active: bool)
27WriteRef
28MoveLoc[0](Arg0: &mut Pool<Ty0>)
29ImmBorrowFieldGeneric[1](Pool.id: UID)
30Call object::uid_to_address(&UID): address
31MoveLoc[2](loc0: TypeName)
32Pack[10](FlipBoostEvent)
33Call event::emit<FlipBoostEvent>(FlipBoostEvent)
34Ret
}
public(friend) settle<Ty0>(Arg0: &Setting, Arg1: &mut Pool<Ty0>, Arg2: &mut Deposit<Ty0>, Arg3: &Clock) {
L4: loc0: VecMap<TypeName, u64>
B0:
0CopyLoc[1](Arg1: &mut Pool<Ty0>)
1ImmBorrowFieldGeneric[2](Pool.active: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(15)
B2:
5MoveLoc[0](Arg0: &Setting)
6Pop
7MoveLoc[1](Arg1: &mut Pool<Ty0>)
8Pop
9MoveLoc[2](Arg2: &mut Deposit<Ty0>)
10Pop
11MoveLoc[3](Arg3: &Clock)
12Pop
13LdConst[3](u64: 0)
14Abort
B3:
15CopyLoc[2](Arg2: &mut Deposit<Ty0>)
16ImmBorrowFieldGeneric[13](Deposit.pool: address)
17ReadRef
18CopyLoc[1](Arg1: &mut Pool<Ty0>)
19ImmBorrowFieldGeneric[1](Pool.id: UID)
20Call object::uid_to_address(&UID): address
21Eq
22BrFalse(24)
B4:
23Branch(34)
B5:
24MoveLoc[0](Arg0: &Setting)
25Pop
26MoveLoc[1](Arg1: &mut Pool<Ty0>)
27Pop
28MoveLoc[2](Arg2: &mut Deposit<Ty0>)
29Pop
30MoveLoc[3](Arg3: &Clock)
31Pop
32LdConst[9](u64: 7)
33Abort
B6:
34CopyLoc[2](Arg2: &mut Deposit<Ty0>)
35ImmBorrowFieldGeneric[8](Deposit.debts: VecMap<TypeName, u64>)
36ReadRef
37StLoc[4](loc0: VecMap<TypeName, u64>)
38CopyLoc[1](Arg1: &mut Pool<Ty0>)
39CopyLoc[2](Arg2: &mut Deposit<Ty0>)
40CopyLoc[3](Arg3: &Clock)
41Call rewards_to_credits<Ty0>(&mut Pool<Ty0>, &mut Deposit<Ty0>, &Clock)
42CopyLoc[1](Arg1: &mut Pool<Ty0>)
43CopyLoc[2](Arg2: &mut Deposit<Ty0>)
44ImmBorrowFieldGeneric[9](Deposit.amount: u64)
45ReadRef
46MoveLoc[0](Arg0: &Setting)
47CopyLoc[2](Arg2: &mut Deposit<Ty0>)
48ImmBorrowFieldGeneric[10](Deposit.owner: address)
49Call get_boost(&Setting, &address): u64
50MoveLoc[3](Arg3: &Clock)
51Call debts<Ty0>(&mut Pool<Ty0>, u64, u64, &Clock): VecMap<TypeName, u64>
52CopyLoc[2](Arg2: &mut Deposit<Ty0>)
53MutBorrowFieldGeneric[8](Deposit.debts: VecMap<TypeName, u64>)
54WriteRef
55MoveLoc[1](Arg1: &mut Pool<Ty0>)
56ImmBorrowFieldGeneric[1](Pool.id: UID)
57Call object::uid_to_address(&UID): address
58CopyLoc[2](Arg2: &mut Deposit<Ty0>)
59ImmBorrowFieldGeneric[14](Deposit.id: UID)
60Call object::uid_to_address(&UID): address
61MoveLoc[4](loc0: VecMap<TypeName, u64>)
62MoveLoc[2](Arg2: &mut Deposit<Ty0>)
63ImmBorrowFieldGeneric[8](Deposit.debts: VecMap<TypeName, u64>)
64ReadRef
65Pack[11](SettleEvent)
66Call event::emit<SettleEvent>(SettleEvent)
67Ret
}
public(friend) set_boost(Arg0: &mut Setting, Arg1: address, Arg2: u64) {
B0:
0MoveLoc[0](Arg0: &mut Setting)
1CopyLoc[1](Arg1: address)
2CopyLoc[2](Arg2: u64)
3Call update_boost(&mut Setting, address, u64)
4MoveLoc[1](Arg1: address)
5MoveLoc[2](Arg2: u64)
6Pack[18](SetBoostEvent)
7Call event::emit<SetBoostEvent>(SetBoostEvent)
8Ret
}
public(friend) after_set_boost<Ty0>(Arg0: &Setting, Arg1: &mut Pool<Ty0>, Arg2: &mut Deposit<Ty0>, Arg3: &Clock) {
L4: loc0: u128
L5: loc1: VecMap<TypeName, u64>
L6: loc2: u128
B0:
0CopyLoc[2](Arg2: &mut Deposit<Ty0>)
1ImmBorrowFieldGeneric[8](Deposit.debts: VecMap<TypeName, u64>)
2ReadRef
3StLoc[5](loc1: VecMap<TypeName, u64>)
4CopyLoc[2](Arg2: &mut Deposit<Ty0>)
5ImmBorrowFieldGeneric[4](Deposit.share: u128)
6ReadRef
7StLoc[6](loc2: u128)
8CopyLoc[2](Arg2: &mut Deposit<Ty0>)
9ImmBorrowFieldGeneric[6](Deposit.boost_share: u128)
10ReadRef
11StLoc[4](loc0: u128)
12CopyLoc[2](Arg2: &mut Deposit<Ty0>)
13CopyLoc[0](Arg0: &Setting)
14CopyLoc[1](Arg1: &mut Pool<Ty0>)
15LdFalse
16Call update_share<Ty0>(&mut Deposit<Ty0>, &Setting, &mut Pool<Ty0>, bool)
17CopyLoc[1](Arg1: &mut Pool<Ty0>)
18CopyLoc[2](Arg2: &mut Deposit<Ty0>)
19ImmBorrowFieldGeneric[9](Deposit.amount: u64)
20ReadRef
21MoveLoc[0](Arg0: &Setting)
22CopyLoc[2](Arg2: &mut Deposit<Ty0>)
23ImmBorrowFieldGeneric[10](Deposit.owner: address)
24Call get_boost(&Setting, &address): u64
25MoveLoc[3](Arg3: &Clock)
26Call debts<Ty0>(&mut Pool<Ty0>, u64, u64, &Clock): VecMap<TypeName, u64>
27CopyLoc[2](Arg2: &mut Deposit<Ty0>)
28MutBorrowFieldGeneric[8](Deposit.debts: VecMap<TypeName, u64>)
29WriteRef
30MoveLoc[1](Arg1: &mut Pool<Ty0>)
31ImmBorrowFieldGeneric[1](Pool.id: UID)
32Call object::uid_to_address(&UID): address
33CopyLoc[2](Arg2: &mut Deposit<Ty0>)
34ImmBorrowFieldGeneric[14](Deposit.id: UID)
35Call object::uid_to_address(&UID): address
36MoveLoc[5](loc1: VecMap<TypeName, u64>)
37MoveLoc[6](loc2: u128)
38MoveLoc[4](loc0: u128)
39CopyLoc[2](Arg2: &mut Deposit<Ty0>)
40ImmBorrowFieldGeneric[8](Deposit.debts: VecMap<TypeName, u64>)
41ReadRef
42CopyLoc[2](Arg2: &mut Deposit<Ty0>)
43ImmBorrowFieldGeneric[4](Deposit.share: u128)
44ReadRef
45MoveLoc[2](Arg2: &mut Deposit<Ty0>)
46ImmBorrowFieldGeneric[6](Deposit.boost_share: u128)
47ReadRef
48Pack[12](AfterSetBoostEvent)
49Call event::emit<AfterSetBoostEvent>(AfterSetBoostEvent)
50Ret
}
public(friend) deposit<Ty0>(Arg0: &Setting, Arg1: Coin<Ty0>, Arg2: &mut Pool<Ty0>, Arg3: &Clock, Arg4: &mut TxContext) {
L5: loc0: address
L6: loc1: &Setting
L7: loc2: u64
L8: loc3: Balance<Ty0>
L9: loc4: u64
L10: loc5: Deposit<Ty0>
L11: loc6: DepositInfo<Ty0>
B0:
0CopyLoc[2](Arg2: &mut Pool<Ty0>)
1ImmBorrowFieldGeneric[2](Pool.active: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(15)
B2:
5MoveLoc[0](Arg0: &Setting)
6Pop
7MoveLoc[2](Arg2: &mut Pool<Ty0>)
8Pop
9MoveLoc[4](Arg4: &mut TxContext)
10Pop
11MoveLoc[3](Arg3: &Clock)
12Pop
13LdConst[3](u64: 0)
14Abort
B3:
15CopyLoc[2](Arg2: &mut Pool<Ty0>)
16ImmBorrowFieldGeneric[15](Pool.users: Table<address, address>)
17CopyLoc[4](Arg4: &mut TxContext)
18FreezeRef
19Call tx_context::sender(&TxContext): address
20Call table::contains<address, address>(&Table<address, address>, address): bool
21Not
22BrFalse(24)
B4:
23Branch(34)
B5:
24MoveLoc[0](Arg0: &Setting)
25Pop
26MoveLoc[2](Arg2: &mut Pool<Ty0>)
27Pop
28MoveLoc[4](Arg4: &mut TxContext)
29Pop
30MoveLoc[3](Arg3: &Clock)
31Pop
32LdConst[0](u64: 2)
33Abort
B6:
34ImmBorrowLoc[1](Arg1: Coin<Ty0>)
35Call coin::value<Ty0>(&Coin<Ty0>): u64
36StLoc[7](loc2: u64)
37CopyLoc[0](Arg0: &Setting)
38StLoc[6](loc1: &Setting)
39CopyLoc[4](Arg4: &mut TxContext)
40FreezeRef
41Call tx_context::sender(&TxContext): address
42StLoc[5](loc0: address)
43MoveLoc[6](loc1: &Setting)
44ImmBorrowLoc[5](loc0: address)
45Call get_boost(&Setting, &address): u64
46StLoc[9](loc4: u64)
47CopyLoc[2](Arg2: &mut Pool<Ty0>)
48CopyLoc[7](loc2: u64)
49MoveLoc[9](loc4: u64)
50CopyLoc[4](Arg4: &mut TxContext)
51FreezeRef
52Call tx_context::sender(&TxContext): address
53MoveLoc[3](Arg3: &Clock)
54CopyLoc[4](Arg4: &mut TxContext)
55Call create_deposit<Ty0>(&mut Pool<Ty0>, u64, u64, address, &Clock, &mut TxContext): Deposit<Ty0>
56StLoc[10](loc5: Deposit<Ty0>)
57CopyLoc[2](Arg2: &mut Pool<Ty0>)
58ImmBorrowFieldGeneric[1](Pool.id: UID)
59Call object::uid_to_address(&UID): address
60ImmBorrowLoc[10](loc5: Deposit<Ty0>)
61ImmBorrowFieldGeneric[14](Deposit.id: UID)
62Call object::uid_to_address(&UID): address
63CopyLoc[4](Arg4: &mut TxContext)
64Call create_deposit_info<Ty0>(address, address, &mut TxContext): DepositInfo<Ty0>
65StLoc[11](loc6: DepositInfo<Ty0>)
66MutBorrowLoc[10](loc5: Deposit<Ty0>)
67MoveLoc[0](Arg0: &Setting)
68CopyLoc[2](Arg2: &mut Pool<Ty0>)
69LdTrue
70Call update_share<Ty0>(&mut Deposit<Ty0>, &Setting, &mut Pool<Ty0>, bool)
71CopyLoc[2](Arg2: &mut Pool<Ty0>)
72MutBorrowFieldGeneric[15](Pool.users: Table<address, address>)
73CopyLoc[4](Arg4: &mut TxContext)
74FreezeRef
75Call tx_context::sender(&TxContext): address
76ImmBorrowLoc[10](loc5: Deposit<Ty0>)
77ImmBorrowFieldGeneric[14](Deposit.id: UID)
78Call object::uid_to_address(&UID): address
79Call table::add<address, address>(&mut Table<address, address>, address, address)
80ImmBorrowLoc[10](loc5: Deposit<Ty0>)
81ImmBorrowFieldGeneric[14](Deposit.id: UID)
82Call object::uid_to_address(&UID): address
83CopyLoc[4](Arg4: &mut TxContext)
84FreezeRef
85Call tx_context::sender(&TxContext): address
86CopyLoc[2](Arg2: &mut Pool<Ty0>)
87ImmBorrowFieldGeneric[1](Pool.id: UID)
88Call object::uid_to_address(&UID): address
89MoveLoc[7](loc2: u64)
90PackGeneric[9](DepositEvent<Ty0>)
91Call event::emit<DepositEvent<Ty0>>(DepositEvent<Ty0>)
92MoveLoc[1](Arg1: Coin<Ty0>)
93Call coin::into_balance<Ty0>(Coin<Ty0>): Balance<Ty0>
94StLoc[8](loc3: Balance<Ty0>)
95MoveLoc[2](Arg2: &mut Pool<Ty0>)
96MutBorrowFieldGeneric[16](Pool.balance: Balance<Ty0>)
97MoveLoc[8](loc3: Balance<Ty0>)
98Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
99Pop
100MoveLoc[10](loc5: Deposit<Ty0>)
101Call transfer::share_object<Deposit<Ty0>>(Deposit<Ty0>)
102MoveLoc[11](loc6: DepositInfo<Ty0>)
103MoveLoc[4](Arg4: &mut TxContext)
104FreezeRef
105Call tx_context::sender(&TxContext): address
106Call transfer::transfer<DepositInfo<Ty0>>(DepositInfo<Ty0>, address)
107Ret
}
public(friend) add_deposit<Ty0>(Arg0: &Setting, Arg1: Coin<Ty0>, Arg2: &mut Pool<Ty0>, Arg3: &mut Deposit<Ty0>, Arg4: &Clock) {
L5: loc0: u64
L6: loc1: Balance<Ty0>
L7: loc2: u64
B0:
0CopyLoc[2](Arg2: &mut Pool<Ty0>)
1ImmBorrowFieldGeneric[2](Pool.active: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(15)
B2:
5MoveLoc[0](Arg0: &Setting)
6Pop
7MoveLoc[2](Arg2: &mut Pool<Ty0>)
8Pop
9MoveLoc[3](Arg3: &mut Deposit<Ty0>)
10Pop
11MoveLoc[4](Arg4: &Clock)
12Pop
13LdConst[3](u64: 0)
14Abort
B3:
15CopyLoc[3](Arg3: &mut Deposit<Ty0>)
16ImmBorrowFieldGeneric[13](Deposit.pool: address)
17ReadRef
18CopyLoc[2](Arg2: &mut Pool<Ty0>)
19ImmBorrowFieldGeneric[1](Pool.id: UID)
20Call object::uid_to_address(&UID): address
21Eq
22BrFalse(24)
B4:
23Branch(34)
B5:
24MoveLoc[0](Arg0: &Setting)
25Pop
26MoveLoc[2](Arg2: &mut Pool<Ty0>)
27Pop
28MoveLoc[3](Arg3: &mut Deposit<Ty0>)
29Pop
30MoveLoc[4](Arg4: &Clock)
31Pop
32LdConst[9](u64: 7)
33Abort
B6:
34ImmBorrowLoc[1](Arg1: Coin<Ty0>)
35Call coin::value<Ty0>(&Coin<Ty0>): u64
36StLoc[5](loc0: u64)
37CopyLoc[3](Arg3: &mut Deposit<Ty0>)
38ImmBorrowFieldGeneric[9](Deposit.amount: u64)
39ReadRef
40CopyLoc[5](loc0: u64)
41Add
42StLoc[7](loc2: u64)
43MoveLoc[0](Arg0: &Setting)
44CopyLoc[2](Arg2: &mut Pool<Ty0>)
45CopyLoc[3](Arg3: &mut Deposit<Ty0>)
46MoveLoc[7](loc2: u64)
47MoveLoc[4](Arg4: &Clock)
48Call update_deposit_amount<Ty0>(&Setting, &mut Pool<Ty0>, &mut Deposit<Ty0>, u64, &Clock)
49MoveLoc[1](Arg1: Coin<Ty0>)
50Call coin::into_balance<Ty0>(Coin<Ty0>): Balance<Ty0>
51StLoc[6](loc1: Balance<Ty0>)
52MoveLoc[2](Arg2: &mut Pool<Ty0>)
53MutBorrowFieldGeneric[16](Pool.balance: Balance<Ty0>)
54MoveLoc[6](loc1: Balance<Ty0>)
55Call balance::join<Ty0>(&mut Balance<Ty0>, Balance<Ty0>): u64
56Pop
57MoveLoc[3](Arg3: &mut Deposit<Ty0>)
58ImmBorrowFieldGeneric[14](Deposit.id: UID)
59Call object::uid_to_address(&UID): address
60MoveLoc[5](loc0: u64)
61PackGeneric[10](AddDepositEvent<Ty0>)
62Call event::emit<AddDepositEvent<Ty0>>(AddDepositEvent<Ty0>)
63Ret
}
public(friend) get_deposit<Ty0>(Arg0: &Pool<Ty0>, Arg1: &TxContext): address {
L2: loc0: address
L3: loc1: address
B0:
0MoveLoc[1](Arg1: &TxContext)
1Call tx_context::sender(&TxContext): address
2StLoc[3](loc1: address)
3CopyLoc[0](Arg0: &Pool<Ty0>)
4ImmBorrowFieldGeneric[15](Pool.users: Table<address, address>)
5CopyLoc[3](loc1: address)
6Call table::contains<address, address>(&Table<address, address>, address): bool
7BrFalse(15)
B1:
8MoveLoc[0](Arg0: &Pool<Ty0>)
9ImmBorrowFieldGeneric[15](Pool.users: Table<address, address>)
10MoveLoc[3](loc1: address)
11Call table::borrow<address, address>(&Table<address, address>, address): &address
12ReadRef
13StLoc[2](loc0: address)
14Branch(19)
B2:
15MoveLoc[0](Arg0: &Pool<Ty0>)
16Pop
17LdConst[12](address: 0x00..)
18StLoc[2](loc0: address)
B3:
19MoveLoc[2](loc0: address)
20Ret
}
public(friend) withdraw<Ty0>(Arg0: &Setting, Arg1: &mut Pool<Ty0>, Arg2: &mut Deposit<Ty0>, Arg3: u64, Arg4: &Clock, Arg5: &mut TxContext): Coin<Ty0> {
L6: loc0: u64
B0:
0CopyLoc[1](Arg1: &mut Pool<Ty0>)
1ImmBorrowFieldGeneric[2](Pool.active: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(17)
B2:
5MoveLoc[0](Arg0: &Setting)
6Pop
7MoveLoc[1](Arg1: &mut Pool<Ty0>)
8Pop
9MoveLoc[2](Arg2: &mut Deposit<Ty0>)
10Pop
11MoveLoc[5](Arg5: &mut TxContext)
12Pop
13MoveLoc[4](Arg4: &Clock)
14Pop
15LdConst[3](u64: 0)
16Abort
B3:
17CopyLoc[2](Arg2: &mut Deposit<Ty0>)
18ImmBorrowFieldGeneric[9](Deposit.amount: u64)
19ReadRef
20CopyLoc[3](Arg3: u64)
21Ge
22BrFalse(24)
B4:
23Branch(36)
B5:
24MoveLoc[0](Arg0: &Setting)
25Pop
26MoveLoc[1](Arg1: &mut Pool<Ty0>)
27Pop
28MoveLoc[2](Arg2: &mut Deposit<Ty0>)
29Pop
30MoveLoc[5](Arg5: &mut TxContext)
31Pop
32MoveLoc[4](Arg4: &Clock)
33Pop
34LdConst[5](u64: 3)
35Abort
B6:
36CopyLoc[2](Arg2: &mut Deposit<Ty0>)
37ImmBorrowFieldGeneric[13](Deposit.pool: address)
38ReadRef
39CopyLoc[1](Arg1: &mut Pool<Ty0>)
40ImmBorrowFieldGeneric[1](Pool.id: UID)
41Call object::uid_to_address(&UID): address
42Eq
43BrFalse(45)
B7:
44Branch(57)
B8:
45MoveLoc[0](Arg0: &Setting)
46Pop
47MoveLoc[1](Arg1: &mut Pool<Ty0>)
48Pop
49MoveLoc[2](Arg2: &mut Deposit<Ty0>)
50Pop
51MoveLoc[5](Arg5: &mut TxContext)
52Pop
53MoveLoc[4](Arg4: &Clock)
54Pop
55LdConst[9](u64: 7)
56Abort
B9:
57CopyLoc[2](Arg2: &mut Deposit<Ty0>)
58ImmBorrowFieldGeneric[10](Deposit.owner: address)
59ReadRef
60CopyLoc[5](Arg5: &mut TxContext)
61FreezeRef
62Call tx_context::sender(&TxContext): address
63Eq
64BrFalse(66)
B10:
65Branch(78)
B11:
66MoveLoc[0](Arg0: &Setting)
67Pop
68MoveLoc[1](Arg1: &mut Pool<Ty0>)
69Pop
70MoveLoc[2](Arg2: &mut Deposit<Ty0>)
71Pop
72MoveLoc[5](Arg5: &mut TxContext)
73Pop
74MoveLoc[4](Arg4: &Clock)
75Pop
76LdConst[11](u64: 9)
77Abort
B12:
78CopyLoc[2](Arg2: &mut Deposit<Ty0>)
79ImmBorrowFieldGeneric[9](Deposit.amount: u64)
80ReadRef
81CopyLoc[3](Arg3: u64)
82Sub
83StLoc[6](loc0: u64)
84MoveLoc[0](Arg0: &Setting)
85CopyLoc[1](Arg1: &mut Pool<Ty0>)
86CopyLoc[2](Arg2: &mut Deposit<Ty0>)
87MoveLoc[6](loc0: u64)
88MoveLoc[4](Arg4: &Clock)
89Call update_deposit_amount<Ty0>(&Setting, &mut Pool<Ty0>, &mut Deposit<Ty0>, u64, &Clock)
90MoveLoc[2](Arg2: &mut Deposit<Ty0>)
91ImmBorrowFieldGeneric[14](Deposit.id: UID)
92Call object::uid_to_address(&UID): address
93CopyLoc[3](Arg3: u64)
94PackGeneric[11](WithdrawEvent<Ty0>)
95Call event::emit<WithdrawEvent<Ty0>>(WithdrawEvent<Ty0>)
96MoveLoc[1](Arg1: &mut Pool<Ty0>)
97MutBorrowFieldGeneric[16](Pool.balance: Balance<Ty0>)
98MoveLoc[3](Arg3: u64)
99Call balance::split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
100MoveLoc[5](Arg5: &mut TxContext)
101Call coin::from_balance<Ty0>(Balance<Ty0>, &mut TxContext): Coin<Ty0>
102Ret
}
public(friend) harvest<Ty0, Ty1>(Arg0: &mut Pool<Ty0>, Arg1: &mut Deposit<Ty0>, Arg2: &mut Bank<Ty0, Ty1>, Arg3: &Clock, Arg4: &mut TxContext): Coin<Ty1> {
L5: loc0: TypeName
L6: loc1: u64
L7: loc2: u64
L8: loc3: &mut RewardConfig
L9: loc4: u128
L10: loc5: u128
B0:
0CopyLoc[0](Arg0: &mut Pool<Ty0>)
1ImmBorrowFieldGeneric[2](Pool.active: bool)
2ReadRef
3BrFalse(5)
B1:
4Branch(17)
B2:
5MoveLoc[0](Arg0: &mut Pool<Ty0>)
6Pop
7MoveLoc[1](Arg1: &mut Deposit<Ty0>)
8Pop
9MoveLoc[4](Arg4: &mut TxContext)
10Pop
11MoveLoc[3](Arg3: &Clock)
12Pop
13MoveLoc[2](Arg2: &mut Bank<Ty0, Ty1>)
14Pop
15LdConst[3](u64: 0)
16Abort
B3:
17CopyLoc[1](Arg1: &mut Deposit<Ty0>)
18ImmBorrowFieldGeneric[13](Deposit.pool: address)
19ReadRef
20CopyLoc[0](Arg0: &mut Pool<Ty0>)
21ImmBorrowFieldGeneric[1](Pool.id: UID)
22Call object::uid_to_address(&UID): address
23Eq
24BrFalse(26)
B4:
25Branch(38)
B5:
26MoveLoc[0](Arg0: &mut Pool<Ty0>)
27Pop
28MoveLoc[1](Arg1: &mut Deposit<Ty0>)
29Pop
30MoveLoc[4](Arg4: &mut TxContext)
31Pop
32MoveLoc[3](Arg3: &Clock)
33Pop
34MoveLoc[2](Arg2: &mut Bank<Ty0, Ty1>)
35Pop
36LdConst[9](u64: 7)
37Abort
B6:
38CopyLoc[2](Arg2: &mut Bank<Ty0, Ty1>)
39ImmBorrowFieldGeneric[17](Bank.pool: address)
40ReadRef
41CopyLoc[0](Arg0: &mut Pool<Ty0>)
42ImmBorrowFieldGeneric[1](Pool.id: UID)
43Call object::uid_to_address(&UID): address
44Eq
45BrFalse(47)
B7:
46Branch(59)
B8:
47MoveLoc[0](Arg0: &mut Pool<Ty0>)
48Pop
49MoveLoc[1](Arg1: &mut Deposit<Ty0>)
50Pop
51MoveLoc[4](Arg4: &mut TxContext)
52Pop
53MoveLoc[3](Arg3: &Clock)
54Pop
55MoveLoc[2](Arg2: &mut Bank<Ty0, Ty1>)
56Pop
57LdConst[10](u64: 8)
58Abort
B9:
59CopyLoc[1](Arg1: &mut Deposit<Ty0>)
60ImmBorrowFieldGeneric[10](Deposit.owner: address)
61ReadRef
62CopyLoc[4](Arg4: &mut TxContext)
63FreezeRef
64Call tx_context::sender(&TxContext): address
65Eq
66BrFalse(68)
B10:
67Branch(80)
B11:
68MoveLoc[0](Arg0: &mut Pool<Ty0>)
69Pop
70MoveLoc[1](Arg1: &mut Deposit<Ty0>)
71Pop
72MoveLoc[4](Arg4: &mut TxContext)
73Pop
74MoveLoc[3](Arg3: &Clock)
75Pop
76MoveLoc[2](Arg2: &mut Bank<Ty0, Ty1>)
77Pop
78LdConst[11](u64: 9)
79Abort
B12:
80Call type_name::get<Ty1>(): TypeName
81StLoc[5](loc0: TypeName)
82CopyLoc[0](Arg0: &mut Pool<Ty0>)
83MutBorrowFieldGeneric[11](Pool.reward_configs: VecMap<TypeName, RewardConfig>)
84ImmBorrowLoc[5](loc0: TypeName)
85Call vec_map::get_mut<TypeName, RewardConfig>(&mut VecMap<TypeName, RewardConfig>, &TypeName): &mut RewardConfig
86StLoc[8](loc3: &mut RewardConfig)
87CopyLoc[8](loc3: &mut RewardConfig)
88FreezeRef
89CopyLoc[0](Arg0: &mut Pool<Ty0>)
90ImmBorrowFieldGeneric[3](Pool.total_share: u128)
91ReadRef
92MoveLoc[0](Arg0: &mut Pool<Ty0>)
93ImmBorrowFieldGeneric[5](Pool.total_boost_share: u128)
94ReadRef
95Call current_total_share(&RewardConfig, u128, u128): u128
96StLoc[10](loc5: u128)
97CopyLoc[1](Arg1: &mut Deposit<Ty0>)
98ImmBorrowLoc[5](loc0: TypeName)
99CopyLoc[8](loc3: &mut RewardConfig)
100CopyLoc[10](loc5: u128)
101CopyLoc[3](Arg3: &Clock)
102Call reward_to_credit<Ty0>(&mut Deposit<Ty0>, &TypeName, &mut RewardConfig, u128, &Clock)
103CopyLoc[1](Arg1: &mut Deposit<Ty0>)
104FreezeRef
105CopyLoc[8](loc3: &mut RewardConfig)
106FreezeRef
107Call share_in_the_reward_config<Ty0>(&Deposit<Ty0>, &RewardConfig): u128
108StLoc[9](loc4: u128)
109MoveLoc[8](loc3: &mut RewardConfig)
110MoveLoc[9](loc4: u128)
111MoveLoc[10](loc5: u128)
112MoveLoc[3](Arg3: &Clock)
113Call debt(&mut RewardConfig, u128, u128, &Clock): u64
114StLoc[7](loc2: u64)
115CopyLoc[1](Arg1: &mut Deposit<Ty0>)
116ImmBorrowLoc[5](loc0: TypeName)
117MoveLoc[7](loc2: u64)
118Call update_debt<Ty0>(&mut Deposit<Ty0>, &TypeName, u64)
119CopyLoc[1](Arg1: &mut Deposit<Ty0>)
120ImmBorrowLoc[5](loc0: TypeName)
121Call extract_credit<Ty0>(&mut Deposit<Ty0>, &TypeName): u64
122StLoc[6](loc1: u64)
123MoveLoc[1](Arg1: &mut Deposit<Ty0>)
124ImmBorrowFieldGeneric[14](Deposit.id: UID)
125Call object::uid_to_address(&UID): address
126MoveLoc[5](loc0: TypeName)
127CopyLoc[6](loc1: u64)
128PackGeneric[12](HarvestEvent<Ty0>)
129Call event::emit<HarvestEvent<Ty0>>(HarvestEvent<Ty0>)
130MoveLoc[2](Arg2: &mut Bank<Ty0, Ty1>)
131MutBorrowFieldGeneric[12](Bank.balance: Balance<Ty1>)
132MoveLoc[6](loc1: u64)
133Call balance::split<Ty1>(&mut Balance<Ty1>, u64): Balance<Ty1>
134MoveLoc[4](Arg4: &mut TxContext)
135Call coin::from_balance<Ty1>(Balance<Ty1>, &mut TxContext): Coin<Ty1>
136Ret
}
public(friend) remaining<Ty0>(Arg0: &Pool<Ty0>, Arg1: &Deposit<Ty0>, Arg2: &Clock): VecMap<TypeName, u64> {
L3: loc0: &TypeName
L4: loc1: u64
L5: loc2: u64
L6: loc3: u64
L7: loc4: u128
L8: loc5: VecMap<TypeName, u64>
L9: loc6: &RewardConfig
L10: loc7: u64
L11: loc8: u128
B0:
0Call vec_map::empty<TypeName, u64>(): VecMap<TypeName, u64>
1StLoc[8](loc5: VecMap<TypeName, u64>)
2LdU64(0)
3StLoc[6](loc3: u64)
4CopyLoc[0](Arg0: &Pool<Ty0>)
5ImmBorrowFieldGeneric[11](Pool.reward_configs: VecMap<TypeName, RewardConfig>)
6Call vec_map::size<TypeName, RewardConfig>(&VecMap<TypeName, RewardConfig>): u64
7StLoc[10](loc7: u64)
B1:
8CopyLoc[6](loc3: u64)
9CopyLoc[10](loc7: u64)
10Lt
11BrFalse(79)
B2:
12Branch(13)
B3:
13CopyLoc[0](Arg0: &Pool<Ty0>)
14ImmBorrowFieldGeneric[11](Pool.reward_configs: VecMap<TypeName, RewardConfig>)
15CopyLoc[6](loc3: u64)
16Call vec_map::get_entry_by_idx<TypeName, RewardConfig>(&VecMap<TypeName, RewardConfig>, u64): &TypeName * &RewardConfig
17StLoc[9](loc6: &RewardConfig)
18StLoc[3](loc0: &TypeName)
19CopyLoc[9](loc6: &RewardConfig)
20CopyLoc[0](Arg0: &Pool<Ty0>)
21ImmBorrowFieldGeneric[3](Pool.total_share: u128)
22ReadRef
23CopyLoc[0](Arg0: &Pool<Ty0>)
24ImmBorrowFieldGeneric[5](Pool.total_boost_share: u128)
25ReadRef
26Call current_total_share(&RewardConfig, u128, u128): u128
27StLoc[11](loc8: u128)
28CopyLoc[9](loc6: &RewardConfig)
29ImmBorrowField[4](RewardConfig.reward_rate_before: u64)
30ReadRef
31CopyLoc[9](loc6: &RewardConfig)
32ImmBorrowField[5](RewardConfig.rate_change_at: u64)
33ReadRef
34CopyLoc[9](loc6: &RewardConfig)
35ImmBorrowField[6](RewardConfig.reward_rate_after: u64)
36ReadRef
37CopyLoc[9](loc6: &RewardConfig)
38ImmBorrowField[7](RewardConfig.per_share: u128)
39ReadRef
40CopyLoc[9](loc6: &RewardConfig)
41ImmBorrowField[8](RewardConfig.last_update_time: u64)
42ReadRef
43MoveLoc[11](loc8: u128)
44CopyLoc[2](Arg2: &Clock)
45Call now(&Clock): u64
46Call calculate_per_share_of_reward_config(u64, u64, u64, u128, u64, u128, u64): u128
47StLoc[7](loc4: u128)
48CopyLoc[1](Arg1: &Deposit<Ty0>)
49CopyLoc[3](loc0: &TypeName)
50Call get_debt<Ty0>(&Deposit<Ty0>, &TypeName): u64
51StLoc[5](loc2: u64)
52CopyLoc[1](Arg1: &Deposit<Ty0>)
53CopyLoc[3](loc0: &TypeName)
54Call get_credit<Ty0>(&Deposit<Ty0>, &TypeName): u64
55CastU64
56StLoc[4](loc1: u64)
57MutBorrowLoc[8](loc5: VecMap<TypeName, u64>)
58MoveLoc[3](loc0: &TypeName)
59ReadRef
60MoveLoc[7](loc4: u128)
61CopyLoc[1](Arg1: &Deposit<Ty0>)
62MoveLoc[9](loc6: &RewardConfig)
63Call share_in_the_reward_config<Ty0>(&Deposit<Ty0>, &RewardConfig): u128
64CastU128
65Mul
66LdConst[1](u128: 1844..)
67Div
68CastU64
69MoveLoc[4](loc1: u64)
70Add
71MoveLoc[5](loc2: u64)
72Sub
73Call vec_map::insert<TypeName, u64>(&mut VecMap<TypeName, u64>, TypeName, u64)
74MoveLoc[6](loc3: u64)
75LdU64(1)
76Add
77StLoc[6](loc3: u64)
78Branch(8)
B4:
79MoveLoc[0](Arg0: &Pool<Ty0>)
80Pop
81MoveLoc[1](Arg1: &Deposit<Ty0>)
82Pop
83MoveLoc[2](Arg2: &Clock)
84Pop
85MoveLoc[8](loc5: VecMap<TypeName, u64>)
86Ret
}
Constants [
0 => u64: 2
1 => u128: 18446744073709551616
2 => u128: 1000
3 => u64: 0
4 => u64: 1
5 => u64: 3
6 => u64: 4
7 => u64: 5
8 => u64: 6
9 => u64: 7
10 => u64: 8
11 => u64: 9
12 => address: 0x0000000000000000000000000000000000000000000000000000000000000000
]
}