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

Move path
0xba0d…e978::admin
Functions
1412 public, 0 entry
Structs
4
Friend modules
None
admin

Bytecode469 lines

The on-chain disassembly. Offsets are instruction numbers within each function.

// Move bytecode v6
module ba0dd78bdd5d1b5f02a689444522ea9a79e1bc4cd4d8e6a57b59f3fbcae5e978.admin {
use ba0dd78bdd5d1b5f02a689444522ea9a79e1bc4cd4d8e6a57b59f3fbcae5e978::acl;
use ba0dd78bdd5d1b5f02a689444522ea9a79e1bc4cd4d8e6a57b59f3fbcae5e978::error;
use ba0dd78bdd5d1b5f02a689444522ea9a79e1bc4cd4d8e6a57b59f3fbcae5e978::farm;
use ba0dd78bdd5d1b5f02a689444522ea9a79e1bc4cd4d8e6a57b59f3fbcae5e978::version;
use fe579a58d32d38e154a8c0d4aa646238851f340258d10c7482cef9bea165b823::receipt;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000001::vector;
use 0000000000000000000000000000000000000000000000000000000000000002::balance;
use 0000000000000000000000000000000000000000000000000000000000000002::clock;
use 0000000000000000000000000000000000000000000000000000000000000002::event;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
 
struct AdminCap has store, key {
id: UID
}
 
struct ManageCap has store, key {
id: UID,
whitelisted_addresses: vector<address>
}
 
struct FarmCreatedEvent has copy, drop, store {
farm_id: ID,
base_token_type: TypeName
}
 
struct RewardsUpdatedEvent has copy, drop, store {
farm_id: ID,
reward_token_type: TypeName,
total_rewards: u64,
end_timestamp: u64,
is_claimable: bool
}
 
init(Arg0: &mut TxContext) {
B0:
0CopyLoc[0](Arg0: &mut TxContext)
1Call object::new(&mut TxContext): UID
2Pack[0](AdminCap)
3CopyLoc[0](Arg0: &mut TxContext)
4FreezeRef
5Call tx_context::sender(&TxContext): address
6Call transfer::transfer<AdminCap>(AdminCap, address)
7CopyLoc[0](Arg0: &mut TxContext)
8Call object::new(&mut TxContext): UID
9MoveLoc[0](Arg0: &mut TxContext)
10FreezeRef
11Call tx_context::sender(&TxContext): address
12Call vector::singleton<address>(address): vector<address>
13Pack[1](ManageCap)
14Call transfer::share_object<ManageCap>(ManageCap)
15Ret
}
 
public initialize_farm<Ty0>(Arg0: &ManageCap, Arg1: Balance<Ty0>, Arg2: &Version, Arg3: &Clock, Arg4: &mut TxContext) {
L5: loc0: Farm<Ty0>
B0:
0MoveLoc[0](Arg0: &ManageCap)
1CopyLoc[4](Arg4: &mut TxContext)
2FreezeRef
3Call assert_manager(&ManageCap, &TxContext)
4MoveLoc[2](Arg2: &Version)
5Call version::assert_supported_version(&Version)
6ImmBorrowLoc[1](Arg1: Balance<Ty0>)
7Call balance::value<Ty0>(&Balance<Ty0>): u64
8LdU64(0)
9Gt
10BrFalse(12)
B1:
11Branch(18)
B2:
12MoveLoc[4](Arg4: &mut TxContext)
13Pop
14MoveLoc[3](Arg3: &Clock)
15Pop
16Call error::zero_amount(): u64
17Abort
B3:
18MoveLoc[1](Arg1: Balance<Ty0>)
19MoveLoc[3](Arg3: &Clock)
20MoveLoc[4](Arg4: &mut TxContext)
21Call farm::initialize<Ty0>(Balance<Ty0>, &Clock, &mut TxContext): Farm<Ty0>
22StLoc[5](loc0: Farm<Ty0>)
23ImmBorrowLoc[5](loc0: Farm<Ty0>)
24Call object::id<Farm<Ty0>>(&Farm<Ty0>): ID
25Call type_name::get<Ty0>(): TypeName
26Pack[2](FarmCreatedEvent)
27Call event::emit<FarmCreatedEvent>(FarmCreatedEvent)
28MoveLoc[5](loc0: Farm<Ty0>)
29Call transfer::public_share_object<Farm<Ty0>>(Farm<Ty0>)
30Ret
}
 
public initialize_farm_with_return<Ty0>(Arg0: &ManageCap, Arg1: Balance<Ty0>, Arg2: &Version, Arg3: &Clock, Arg4: &mut TxContext): Farm<Ty0> {
L5: loc0: Farm<Ty0>
B0:
0MoveLoc[0](Arg0: &ManageCap)
1CopyLoc[4](Arg4: &mut TxContext)
2FreezeRef
3Call assert_manager(&ManageCap, &TxContext)
4MoveLoc[2](Arg2: &Version)
5Call version::assert_supported_version(&Version)
6MoveLoc[1](Arg1: Balance<Ty0>)
7MoveLoc[3](Arg3: &Clock)
8MoveLoc[4](Arg4: &mut TxContext)
9Call farm::initialize<Ty0>(Balance<Ty0>, &Clock, &mut TxContext): Farm<Ty0>
10StLoc[5](loc0: Farm<Ty0>)
11ImmBorrowLoc[5](loc0: Farm<Ty0>)
12Call object::id<Farm<Ty0>>(&Farm<Ty0>): ID
13Call type_name::get<Ty0>(): TypeName
14Pack[2](FarmCreatedEvent)
15Call event::emit<FarmCreatedEvent>(FarmCreatedEvent)
16MoveLoc[5](loc0: Farm<Ty0>)
17Ret
}
 
public add_reward<Ty0, Ty1>(Arg0: &ManageCap, Arg1: &mut Farm<Ty0>, Arg2: Balance<Ty1>, Arg3: u64, Arg4: u64, Arg5: bool, Arg6: &Version, Arg7: &Clock, Arg8: &mut TxContext) {
B0:
0MoveLoc[0](Arg0: &ManageCap)
1MoveLoc[8](Arg8: &mut TxContext)
2FreezeRef
3Call assert_manager(&ManageCap, &TxContext)
4MoveLoc[6](Arg6: &Version)
5Call version::assert_supported_version(&Version)
6CopyLoc[1](Arg1: &mut Farm<Ty0>)
7MoveLoc[2](Arg2: Balance<Ty1>)
8CopyLoc[3](Arg3: u64)
9CopyLoc[4](Arg4: u64)
10CopyLoc[5](Arg5: bool)
11MoveLoc[7](Arg7: &Clock)
12Call farm::add_reward<Ty0, Ty1>(&mut Farm<Ty0>, Balance<Ty1>, u64, u64, bool, &Clock)
13MoveLoc[1](Arg1: &mut Farm<Ty0>)
14FreezeRef
15Call object::id<Farm<Ty0>>(&Farm<Ty0>): ID
16Call type_name::get<Ty1>(): TypeName
17MoveLoc[3](Arg3: u64)
18MoveLoc[4](Arg4: u64)
19MoveLoc[5](Arg5: bool)
20Pack[3](RewardsUpdatedEvent)
21Call event::emit<RewardsUpdatedEvent>(RewardsUpdatedEvent)
22Ret
}
 
public add_reward_balance<Ty0, Ty1>(Arg0: &ManageCap, Arg1: &mut Farm<Ty0>, Arg2: Balance<Ty1>, Arg3: &Version, Arg4: &Clock, Arg5: &mut TxContext) {
L6: loc0: u64
L7: loc1: bool
L8: loc2: u64
B0:
0MoveLoc[0](Arg0: &ManageCap)
1MoveLoc[5](Arg5: &mut TxContext)
2FreezeRef
3Call assert_manager(&ManageCap, &TxContext)
4MoveLoc[3](Arg3: &Version)
5Call version::assert_supported_version(&Version)
6CopyLoc[1](Arg1: &mut Farm<Ty0>)
7MoveLoc[2](Arg2: Balance<Ty1>)
8MoveLoc[4](Arg4: &Clock)
9Call farm::add_reward_balance<Ty0, Ty1>(&mut Farm<Ty0>, Balance<Ty1>, &Clock)
10CopyLoc[1](Arg1: &mut Farm<Ty0>)
11FreezeRef
12Call farm::reward_info<Ty0, Ty1>(&Farm<Ty0>): u64 * u64 * u64 * u64 * bool
13StLoc[7](loc1: bool)
14StLoc[6](loc0: u64)
15Pop
16Pop
17StLoc[8](loc2: u64)
18MoveLoc[1](Arg1: &mut Farm<Ty0>)
19FreezeRef
20Call object::id<Farm<Ty0>>(&Farm<Ty0>): ID
21Call type_name::get<Ty1>(): TypeName
22MoveLoc[8](loc2: u64)
23MoveLoc[6](loc0: u64)
24MoveLoc[7](loc1: bool)
25Pack[3](RewardsUpdatedEvent)
26Call event::emit<RewardsUpdatedEvent>(RewardsUpdatedEvent)
27Ret
}
 
public update_reward_end_timestamp<Ty0, Ty1>(Arg0: &ManageCap, Arg1: &mut Farm<Ty0>, Arg2: u64, Arg3: &Version, Arg4: &Clock, Arg5: &mut TxContext) {
L6: loc0: u64
L7: loc1: bool
L8: loc2: u64
B0:
0MoveLoc[0](Arg0: &ManageCap)
1MoveLoc[5](Arg5: &mut TxContext)
2FreezeRef
3Call assert_manager(&ManageCap, &TxContext)
4MoveLoc[3](Arg3: &Version)
5Call version::assert_supported_version(&Version)
6CopyLoc[1](Arg1: &mut Farm<Ty0>)
7MoveLoc[2](Arg2: u64)
8MoveLoc[4](Arg4: &Clock)
9Call farm::update_reward_end_timestamp<Ty0, Ty1>(&mut Farm<Ty0>, u64, &Clock)
10CopyLoc[1](Arg1: &mut Farm<Ty0>)
11FreezeRef
12Call farm::reward_info<Ty0, Ty1>(&Farm<Ty0>): u64 * u64 * u64 * u64 * bool
13StLoc[7](loc1: bool)
14StLoc[6](loc0: u64)
15Pop
16Pop
17StLoc[8](loc2: u64)
18MoveLoc[1](Arg1: &mut Farm<Ty0>)
19FreezeRef
20Call object::id<Farm<Ty0>>(&Farm<Ty0>): ID
21Call type_name::get<Ty1>(): TypeName
22MoveLoc[8](loc2: u64)
23MoveLoc[6](loc0: u64)
24MoveLoc[7](loc1: bool)
25Pack[3](RewardsUpdatedEvent)
26Call event::emit<RewardsUpdatedEvent>(RewardsUpdatedEvent)
27Ret
}
 
public update_reward_is_claimable<Ty0, Ty1>(Arg0: &ManageCap, Arg1: &mut Farm<Ty0>, Arg2: bool, Arg3: &Version, Arg4: &Clock, Arg5: &mut TxContext) {
L6: loc0: u64
L7: loc1: bool
L8: loc2: u64
B0:
0MoveLoc[0](Arg0: &ManageCap)
1MoveLoc[5](Arg5: &mut TxContext)
2FreezeRef
3Call assert_manager(&ManageCap, &TxContext)
4MoveLoc[3](Arg3: &Version)
5Call version::assert_supported_version(&Version)
6CopyLoc[1](Arg1: &mut Farm<Ty0>)
7MoveLoc[2](Arg2: bool)
8MoveLoc[4](Arg4: &Clock)
9Call farm::update_reward_is_claimable<Ty0, Ty1>(&mut Farm<Ty0>, bool, &Clock)
10CopyLoc[1](Arg1: &mut Farm<Ty0>)
11FreezeRef
12Call farm::reward_info<Ty0, Ty1>(&Farm<Ty0>): u64 * u64 * u64 * u64 * bool
13StLoc[7](loc1: bool)
14StLoc[6](loc0: u64)
15Pop
16Pop
17StLoc[8](loc2: u64)
18MoveLoc[1](Arg1: &mut Farm<Ty0>)
19FreezeRef
20Call object::id<Farm<Ty0>>(&Farm<Ty0>): ID
21Call type_name::get<Ty1>(): TypeName
22MoveLoc[8](loc2: u64)
23MoveLoc[6](loc0: u64)
24MoveLoc[7](loc1: bool)
25Pack[3](RewardsUpdatedEvent)
26Call event::emit<RewardsUpdatedEvent>(RewardsUpdatedEvent)
27Ret
}
 
public update_points<Ty0>(Arg0: &ManageCap, Arg1: &mut Farm<Ty0>, Arg2: u64, Arg3: &Version, Arg4: &Clock, Arg5: &mut TxContext) {
B0:
0MoveLoc[0](Arg0: &ManageCap)
1MoveLoc[5](Arg5: &mut TxContext)
2FreezeRef
3Call assert_manager(&ManageCap, &TxContext)
4MoveLoc[3](Arg3: &Version)
5Call version::assert_supported_version(&Version)
6MoveLoc[1](Arg1: &mut Farm<Ty0>)
7MoveLoc[2](Arg2: u64)
8MoveLoc[4](Arg4: &Clock)
9Call farm::update_points<Ty0>(&mut Farm<Ty0>, u64, &Clock)
10Ret
}
 
public add_reward_with_receipt<Ty0, Ty1>(Arg0: PermissionedReceipt, Arg1: &ManageCap, Arg2: &mut Farm<Ty0>, Arg3: &Acl, Arg4: &Version, Arg5: &Clock, Arg6: &mut TxContext) {
L7: loc0: &Access
L8: loc1: Balance<Ty1>
B0:
0CopyLoc[1](Arg1: &ManageCap)
1CopyLoc[6](Arg6: &mut TxContext)
2FreezeRef
3Call assert_manager(&ManageCap, &TxContext)
4MoveLoc[3](Arg3: &Acl)
5Call acl::access(&Acl): &Access
6StLoc[7](loc0: &Access)
7MutBorrowLoc[0](Arg0: PermissionedReceipt)
8CopyLoc[7](loc0: &Access)
9LdConst[0](vector<u8>: "far..)
10Call receipt::remove_data<vector<u8>, ID, Access>(&mut PermissionedReceipt, &Access, vector<u8>): ID
11CopyLoc[2](Arg2: &mut Farm<Ty0>)
12FreezeRef
13Call object::id<Farm<Ty0>>(&Farm<Ty0>): ID
14Eq
15BrFalse(17)
B1:
16Branch(31)
B2:
17MoveLoc[4](Arg4: &Version)
18Pop
19MoveLoc[1](Arg1: &ManageCap)
20Pop
21MoveLoc[2](Arg2: &mut Farm<Ty0>)
22Pop
23MoveLoc[6](Arg6: &mut TxContext)
24Pop
25MoveLoc[5](Arg5: &Clock)
26Pop
27MoveLoc[7](loc0: &Access)
28Pop
29Call error::inavlid_farm(): u64
30Abort
B3:
31MutBorrowLoc[0](Arg0: PermissionedReceipt)
32MoveLoc[7](loc0: &Access)
33LdConst[1](vector<u8>: "rew..)
34Call receipt::remove_data<vector<u8>, Balance<Ty1>, Access>(&mut PermissionedReceipt, &Access, vector<u8>): Balance<Ty1>
35StLoc[8](loc1: Balance<Ty1>)
36MoveLoc[1](Arg1: &ManageCap)
37MoveLoc[2](Arg2: &mut Farm<Ty0>)
38MoveLoc[8](loc1: Balance<Ty1>)
39MoveLoc[4](Arg4: &Version)
40MoveLoc[5](Arg5: &Clock)
41MoveLoc[6](Arg6: &mut TxContext)
42Call add_reward_balance<Ty0, Ty1>(&ManageCap, &mut Farm<Ty0>, Balance<Ty1>, &Version, &Clock, &mut TxContext)
43MoveLoc[0](Arg0: PermissionedReceipt)
44Call receipt::burn(PermissionedReceipt)
45Ret
}
 
public update_points_with_receipt<Ty0>(Arg0: PermissionedReceipt, Arg1: &ManageCap, Arg2: &mut Farm<Ty0>, Arg3: &Acl, Arg4: &Version, Arg5: &Clock, Arg6: &mut TxContext) {
L7: loc0: &Access
L8: loc1: u64
B0:
0CopyLoc[1](Arg1: &ManageCap)
1CopyLoc[6](Arg6: &mut TxContext)
2FreezeRef
3Call assert_manager(&ManageCap, &TxContext)
4MoveLoc[3](Arg3: &Acl)
5Call acl::access(&Acl): &Access
6StLoc[7](loc0: &Access)
7MutBorrowLoc[0](Arg0: PermissionedReceipt)
8CopyLoc[7](loc0: &Access)
9LdConst[0](vector<u8>: "far..)
10Call receipt::remove_data<vector<u8>, ID, Access>(&mut PermissionedReceipt, &Access, vector<u8>): ID
11CopyLoc[2](Arg2: &mut Farm<Ty0>)
12FreezeRef
13Call object::id<Farm<Ty0>>(&Farm<Ty0>): ID
14Eq
15BrFalse(17)
B1:
16Branch(31)
B2:
17MoveLoc[4](Arg4: &Version)
18Pop
19MoveLoc[1](Arg1: &ManageCap)
20Pop
21MoveLoc[2](Arg2: &mut Farm<Ty0>)
22Pop
23MoveLoc[6](Arg6: &mut TxContext)
24Pop
25MoveLoc[5](Arg5: &Clock)
26Pop
27MoveLoc[7](loc0: &Access)
28Pop
29Call error::inavlid_farm(): u64
30Abort
B3:
31MutBorrowLoc[0](Arg0: PermissionedReceipt)
32MoveLoc[7](loc0: &Access)
33LdConst[2](vector<u8>: "poi..)
34Call receipt::remove_data<vector<u8>, u64, Access>(&mut PermissionedReceipt, &Access, vector<u8>): u64
35StLoc[8](loc1: u64)
36MoveLoc[1](Arg1: &ManageCap)
37MoveLoc[2](Arg2: &mut Farm<Ty0>)
38MoveLoc[8](loc1: u64)
39MoveLoc[4](Arg4: &Version)
40MoveLoc[5](Arg5: &Clock)
41MoveLoc[6](Arg6: &mut TxContext)
42Call update_points<Ty0>(&ManageCap, &mut Farm<Ty0>, u64, &Version, &Clock, &mut TxContext)
43MoveLoc[0](Arg0: PermissionedReceipt)
44Call receipt::burn(PermissionedReceipt)
45Ret
}
 
public withdraw_unharvested<Ty0, Ty1>(Arg0: &ManageCap, Arg1: &mut Farm<Ty0>, Arg2: &Version, Arg3: &Clock, Arg4: &mut TxContext): Balance<Ty1> {
B0:
0MoveLoc[0](Arg0: &ManageCap)
1MoveLoc[4](Arg4: &mut TxContext)
2FreezeRef
3Call assert_manager(&ManageCap, &TxContext)
4MoveLoc[2](Arg2: &Version)
5Call version::assert_supported_version(&Version)
6MoveLoc[1](Arg1: &mut Farm<Ty0>)
7MoveLoc[3](Arg3: &Clock)
8Call farm::withdraw_unharvested<Ty0, Ty1>(&mut Farm<Ty0>, &Clock): Balance<Ty1>
9Ret
}
 
public add_whitelisted_manager_address(Arg0: &AdminCap, Arg1: &mut ManageCap, Arg2: address) {
B0:
0CopyLoc[1](Arg1: &mut ManageCap)
1ImmBorrowField[0](ManageCap.whitelisted_addresses: vector<address>)
2ImmBorrowLoc[2](Arg2: address)
3Call vector::contains<address>(&vector<address>, &address): bool
4Not
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[1](Arg1: &mut ManageCap)
8Pop
9Call error::already_whitelisted(): u64
10Abort
B3:
11MoveLoc[1](Arg1: &mut ManageCap)
12MutBorrowField[0](ManageCap.whitelisted_addresses: vector<address>)
13MoveLoc[2](Arg2: address)
14VecPushBack(15)
15Ret
}
 
public remove_whitelisted_manager_address(Arg0: &AdminCap, Arg1: &mut ManageCap, Arg2: address) {
L3: loc0: u64
B0:
0CopyLoc[1](Arg1: &mut ManageCap)
1ImmBorrowField[0](ManageCap.whitelisted_addresses: vector<address>)
2ImmBorrowLoc[2](Arg2: address)
3Call vector::index_of<address>(&vector<address>, &address): bool * u64
4StLoc[3](loc0: u64)
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[1](Arg1: &mut ManageCap)
8Pop
9Call error::not_whitelisted(): u64
10Abort
B3:
11MoveLoc[1](Arg1: &mut ManageCap)
12MutBorrowField[0](ManageCap.whitelisted_addresses: vector<address>)
13MoveLoc[3](loc0: u64)
14Call vector::remove<address>(&mut vector<address>, u64): address
15Pop
16Ret
}
 
assert_manager(Arg0: &ManageCap, Arg1: &TxContext) {
L2: loc0: address
L3: loc1: &vector<address>
B0:
0MoveLoc[0](Arg0: &ManageCap)
1ImmBorrowField[0](ManageCap.whitelisted_addresses: vector<address>)
2StLoc[3](loc1: &vector<address>)
3MoveLoc[1](Arg1: &TxContext)
4Call tx_context::sender(&TxContext): address
5StLoc[2](loc0: address)
6MoveLoc[3](loc1: &vector<address>)
7ImmBorrowLoc[2](loc0: address)
8Call vector::contains<address>(&vector<address>, &address): bool
9BrFalse(11)
B1:
10Branch(13)
B2:
11Call error::inavlid_auth(): u64
12Abort
B3:
13Ret
}
 
Constants [
0 => vector<u8>: "farm_id" // interpreted as UTF8 string
1 => vector<u8>: "reward_balance" // interpreted as UTF8 string
2 => vector<u8>: "points" // interpreted as UTF8 string
]
}