Package::spam bytecode | tide- Move path
- 0xf7f2…8b35::spam
- Functions
- 128 public, 2 entry
- Structs
- 7
- Friend modules
- None
spam
The on-chain disassembly. Offsets are bytecode positions within each function.
1// Move bytecode v6
2module f7f2afc9a0a9558e950b4d369c84f2fd0d406ea42579424972b115faf8918b35.spam {
3use f7f2afc9a0a9558e950b4d369c84f2fd0d406ea42579424972b115faf8918b35::icon;
4use 0000000000000000000000000000000000000000000000000000000000000001::option;
5use 0000000000000000000000000000000000000000000000000000000000000002::coin;
6use 0000000000000000000000000000000000000000000000000000000000000002::object;
7use 0000000000000000000000000000000000000000000000000000000000000002::table;
8use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
9use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
10use 0000000000000000000000000000000000000000000000000000000000000002::url;
11
12struct SPAM has drop {
13
dummy_field: bool
16struct AdminCap has store, key {
20struct Director has store, key {
26 treasury: TreasuryCap<SPAM>,
27 epoch_counters: Table<u64, EpochCounter>
30struct EpochCounter has store {
36 user_counts: Table<address, u64>
39struct UserCounter has key {
49struct Stats has copy, drop {
55 epochs: vector<EpochStats>
58struct EpochStats has copy, drop {
65entry new_user_counter(Arg0: &Director, Arg1: address, Arg2: &mut TxContext) {
670MoveLoc[0](Arg0: &Director)
681ImmBorrowField[0](Director.paused: bool)
767MoveLoc[2](Arg2: &mut TxContext)
8111CopyLoc[2](Arg2: &mut TxContext)
8212Call object::new(&mut TxContext): UID
8313CopyLoc[2](Arg2: &mut TxContext)
8515Call tx_context::epoch(&TxContext): u64
8919MoveLoc[1](Arg1: address)
9222MoveLoc[2](Arg2: &mut TxContext)
9424Call tx_context::sender(&TxContext): address
9525Call transfer::transfer<UserCounter>(UserCounter, address)
99entry increment_user_counter(Arg0: &mut UserCounter, Arg1: &TxContext) {
1010CopyLoc[0](Arg0: &mut UserCounter)
1021ImmBorrowField[1](UserCounter.epoch: u64)
1043CopyLoc[1](Arg1: &TxContext)
1054Call tx_context::epoch(&TxContext): u64
1118MoveLoc[0](Arg0: &mut UserCounter)
11310MoveLoc[1](Arg1: &TxContext)
11512LdConst[0](u64: 100)
11814CopyLoc[0](Arg0: &mut UserCounter)
11915ImmBorrowField[2](UserCounter.inv_address: address)
12117MoveLoc[1](Arg1: &TxContext)
12218Call tx_context::sender(&TxContext): address
12621CopyLoc[0](Arg0: &mut UserCounter)
12722ImmBorrowField[3](UserCounter.tx_count: u64)
13126CopyLoc[0](Arg0: &mut UserCounter)
13227MutBorrowField[3](UserCounter.tx_count: u64)
13429CopyLoc[0](Arg0: &mut UserCounter)
13530ImmBorrowField[4](UserCounter.tx_shares: u64)
13934MoveLoc[0](Arg0: &mut UserCounter)
14035MutBorrowField[4](UserCounter.tx_shares: u64)
14438CopyLoc[0](Arg0: &mut UserCounter)
14539ImmBorrowField[3](UserCounter.tx_count: u64)
14943CopyLoc[0](Arg0: &mut UserCounter)
15044MutBorrowField[3](UserCounter.tx_count: u64)
15246CopyLoc[0](Arg0: &mut UserCounter)
15347ImmBorrowField[4](UserCounter.tx_shares: u64)
15751CopyLoc[0](Arg0: &mut UserCounter)
15852MutBorrowField[4](UserCounter.tx_shares: u64)
16054CopyLoc[0](Arg0: &mut UserCounter)
16155ImmBorrowField[5](UserCounter.inv_shares: u64)
16559MoveLoc[0](Arg0: &mut UserCounter)
16660MutBorrowField[5](UserCounter.inv_shares: u64)
172public destroy_user_counter(Arg0: UserCounter) {
1740MoveLoc[0](Arg0: UserCounter)
1751Unpack[4](UserCounter)
1828Call object::delete(UID)
186public register_user_counter(Arg0: &mut Director, Arg1: &mut UserCounter, Arg2: &mut TxContext) {
187L3: loc0: &mut EpochCounter
1960CopyLoc[0](Arg0: &mut Director)
1971ImmBorrowField[0](Director.paused: bool)
2057MoveLoc[1](Arg1: &mut UserCounter)
2079MoveLoc[0](Arg0: &mut Director)
20911MoveLoc[2](Arg2: &mut TxContext)
21113LdConst[1](u64: 101)
21415CopyLoc[1](Arg1: &mut UserCounter)
21516ImmBorrowField[6](UserCounter.registered: bool)
22322MoveLoc[1](Arg1: &mut UserCounter)
22524MoveLoc[0](Arg0: &mut Director)
22726MoveLoc[2](Arg2: &mut TxContext)
22928LdConst[3](u64: 103)
23230CopyLoc[2](Arg2: &mut TxContext)
23432Call tx_context::epoch(&TxContext): u64
23836CopyLoc[1](Arg1: &mut UserCounter)
23937ImmBorrowField[1](UserCounter.epoch: u64)
24139CopyLoc[4](loc1: u64)
24743MoveLoc[1](Arg1: &mut UserCounter)
24945MoveLoc[0](Arg0: &mut Director)
25147MoveLoc[2](Arg2: &mut TxContext)
25349LdConst[0](u64: 100)
25651CopyLoc[2](Arg2: &mut TxContext)
25853Call tx_context::sender(&TxContext): address
25954StLoc[7](loc4: address)
26055CopyLoc[0](Arg0: &mut Director)
26156MoveLoc[4](loc1: u64)
26257MoveLoc[2](Arg2: &mut TxContext)
26358Call get_or_create_epoch_counter(&mut Director, u64, &mut TxContext): &mut EpochCounter
26459StLoc[3](loc0: &mut EpochCounter)
26560CopyLoc[1](Arg1: &mut UserCounter)
26661ImmBorrowField[5](UserCounter.inv_shares: u64)
26863CopyLoc[1](Arg1: &mut UserCounter)
26964ImmBorrowField[4](UserCounter.tx_shares: u64)
27267StLoc[10](loc7: u64)
27368CopyLoc[3](loc0: &mut EpochCounter)
27469ImmBorrowField[7](EpochCounter.user_counts: Table<address, u64>)
27570CopyLoc[7](loc4: address)
27671Call table::contains<address, u64>(&Table<address, u64>, address): bool
27973CopyLoc[3](loc0: &mut EpochCounter)
28074MutBorrowField[7](EpochCounter.user_counts: Table<address, u64>)
28175CopyLoc[7](loc4: address)
28276Call table::borrow_mut<address, u64>(&mut Table<address, u64>, address): &mut u64
28377StLoc[8](loc5: &mut u64)
28478CopyLoc[8](loc5: &mut u64)
28680CopyLoc[10](loc7: u64)
28983MoveLoc[8](loc5: &mut u64)
29386CopyLoc[3](loc0: &mut EpochCounter)
29487MutBorrowField[7](EpochCounter.user_counts: Table<address, u64>)
29588CopyLoc[7](loc4: address)
29689CopyLoc[10](loc7: u64)
29790Call table::add<address, u64>(&mut Table<address, u64>, address, u64)
30193CopyLoc[1](Arg1: &mut UserCounter)
30294ImmBorrowField[2](UserCounter.inv_address: address)
30496StLoc[5](loc2: address)
30597MoveLoc[7](loc4: address)
30698CopyLoc[5](loc2: address)
310101CopyLoc[1](Arg1: &mut UserCounter)
311102ImmBorrowField[3](UserCounter.tx_count: u64)
316107StLoc[6](loc3: u64)
317108CopyLoc[3](loc0: &mut EpochCounter)
318109ImmBorrowField[7](EpochCounter.user_counts: Table<address, u64>)
319110CopyLoc[5](loc2: address)
320111Call table::contains<address, u64>(&Table<address, u64>, address): bool
323113CopyLoc[3](loc0: &mut EpochCounter)
324114MutBorrowField[7](EpochCounter.user_counts: Table<address, u64>)
325115MoveLoc[5](loc2: address)
326116Call table::borrow_mut<address, u64>(&mut Table<address, u64>, address): &mut u64
327117StLoc[9](loc6: &mut u64)
328118CopyLoc[9](loc6: &mut u64)
330120CopyLoc[6](loc3: u64)
332122MoveLoc[9](loc6: &mut u64)
336125CopyLoc[3](loc0: &mut EpochCounter)
337126MutBorrowField[7](EpochCounter.user_counts: Table<address, u64>)
338127MoveLoc[5](loc2: address)
339128CopyLoc[6](loc3: u64)
340129Call table::add<address, u64>(&mut Table<address, u64>, address, u64)
342130CopyLoc[3](loc0: &mut EpochCounter)
343131ImmBorrowField[8](EpochCounter.tx_count: u64)
345133CopyLoc[1](Arg1: &mut UserCounter)
346134ImmBorrowField[3](UserCounter.tx_count: u64)
349137CopyLoc[3](loc0: &mut EpochCounter)
350138MutBorrowField[8](EpochCounter.tx_count: u64)
352140CopyLoc[3](loc0: &mut EpochCounter)
353141ImmBorrowField[9](EpochCounter.tx_shares: u64)
355143CopyLoc[1](Arg1: &mut UserCounter)
356144ImmBorrowField[4](UserCounter.tx_shares: u64)
359147CopyLoc[3](loc0: &mut EpochCounter)
360148MutBorrowField[9](EpochCounter.tx_shares: u64)
362150CopyLoc[3](loc0: &mut EpochCounter)
363151ImmBorrowField[10](EpochCounter.inv_shares: u64)
365153CopyLoc[1](Arg1: &mut UserCounter)
366154ImmBorrowField[5](UserCounter.inv_shares: u64)
369157CopyLoc[6](loc3: u64)
371159MoveLoc[3](loc0: &mut EpochCounter)
372160MutBorrowField[10](EpochCounter.inv_shares: u64)
374162CopyLoc[0](Arg0: &mut Director)
375163ImmBorrowField[11](Director.tx_count: u64)
377165CopyLoc[1](Arg1: &mut UserCounter)
378166ImmBorrowField[3](UserCounter.tx_count: u64)
381169CopyLoc[0](Arg0: &mut Director)
382170MutBorrowField[11](Director.tx_count: u64)
384172CopyLoc[0](Arg0: &mut Director)
385173ImmBorrowField[12](Director.shares_count: u64)
387175MoveLoc[10](loc7: u64)
389177MoveLoc[6](loc3: u64)
391179MoveLoc[0](Arg0: &mut Director)
392180MutBorrowField[12](Director.shares_count: u64)
395183MoveLoc[1](Arg1: &mut UserCounter)
396184MutBorrowField[6](UserCounter.registered: bool)
401public claim_user_counter(Arg0: &mut Director, Arg1: UserCounter, Arg2: &mut TxContext): Coin<SPAM> {
403L4: loc1: &mut EpochCounter
4090CopyLoc[2](Arg2: &mut TxContext)
4112Call tx_context::epoch(&TxContext): u64
4156ImmBorrowLoc[1](Arg1: UserCounter)
4167ImmBorrowField[1](UserCounter.epoch: u64)
4189MoveLoc[6](loc3: u64)
42413MoveLoc[0](Arg0: &mut Director)
42615MoveLoc[2](Arg2: &mut TxContext)
42817LdConst[0](u64: 100)
43119ImmBorrowLoc[1](Arg1: UserCounter)
43220ImmBorrowField[6](UserCounter.registered: bool)
44026MoveLoc[0](Arg0: &mut Director)
44228MoveLoc[2](Arg2: &mut TxContext)
44430LdConst[4](u64: 104)
44732CopyLoc[0](Arg0: &mut Director)
44833MutBorrowField[13](Director.epoch_counters: Table<u64, EpochCounter>)
44934ImmBorrowLoc[1](Arg1: UserCounter)
45035ImmBorrowField[1](UserCounter.epoch: u64)
45237Call table::borrow_mut<u64, EpochCounter>(&mut Table<u64, EpochCounter>, u64): &mut EpochCounter
45338StLoc[4](loc1: &mut EpochCounter)
45439CopyLoc[4](loc1: &mut EpochCounter)
45540ImmBorrowField[14](EpochCounter.epoch_reward: u64)
45843CopyLoc[4](loc1: &mut EpochCounter)
45944MutBorrowField[7](EpochCounter.user_counts: Table<address, u64>)
46045CopyLoc[2](Arg2: &mut TxContext)
46247Call tx_context::sender(&TxContext): address
46348Call table::remove<address, u64>(&mut Table<address, u64>, address): u64
46550CopyLoc[4](loc1: &mut EpochCounter)
46651ImmBorrowField[9](EpochCounter.tx_shares: u64)
46853MoveLoc[4](loc1: &mut EpochCounter)
46954ImmBorrowField[10](EpochCounter.inv_shares: u64)
47358MoveLoc[5](loc2: u64)
47560MoveLoc[8](loc5: u64)
47863MoveLoc[3](loc0: u64)
48368MoveLoc[1](Arg1: UserCounter)
48469Call destroy_user_counter(UserCounter)
48570MoveLoc[0](Arg0: &mut Director)
48671MutBorrowField[15](Director.treasury: TreasuryCap<SPAM>)
48772MoveLoc[7](loc4: u64)
48873MoveLoc[2](Arg2: &mut TxContext)
48974Call coin::mint<SPAM>(&mut TreasuryCap<SPAM>, u64, &mut TxContext): Coin<SPAM>
493public stats_for_specific_epochs(Arg0: &Director, Arg1: vector<u64>, Arg2: &TxContext): Stats {
495L4: loc1: &EpochCounter
497L6: loc3: vector<EpochStats>
5031StLoc[6](loc3: vector<EpochStats>)
5064ImmBorrowLoc[1](Arg1: vector<u64>)
5107CopyLoc[7](loc4: u64)
5118CopyLoc[3](loc0: u64)
51712ImmBorrowLoc[1](Arg1: vector<u64>)
51813CopyLoc[7](loc4: u64)
52217CopyLoc[0](Arg0: &Director)
52318ImmBorrowField[13](Director.epoch_counters: Table<u64, EpochCounter>)
52419CopyLoc[5](loc2: u64)
52520Call table::contains<u64, EpochCounter>(&Table<u64, EpochCounter>, u64): bool
52822CopyLoc[0](Arg0: &Director)
52923ImmBorrowField[13](Director.epoch_counters: Table<u64, EpochCounter>)
53024MoveLoc[5](loc2: u64)
53125Call table::borrow<u64, EpochCounter>(&Table<u64, EpochCounter>, u64): &EpochCounter
53226StLoc[4](loc1: &EpochCounter)
53327CopyLoc[4](loc1: &EpochCounter)
53428ImmBorrowField[16](EpochCounter.epoch: u64)
53630CopyLoc[4](loc1: &EpochCounter)
53731ImmBorrowField[8](EpochCounter.tx_count: u64)
53933CopyLoc[4](loc1: &EpochCounter)
54034ImmBorrowField[9](EpochCounter.tx_shares: u64)
54236MoveLoc[4](loc1: &EpochCounter)
54337ImmBorrowField[10](EpochCounter.inv_shares: u64)
54640StLoc[8](loc5: EpochStats)
54741MutBorrowLoc[6](loc3: vector<EpochStats>)
54842MoveLoc[8](loc5: EpochStats)
55245MoveLoc[5](loc2: u64)
55750StLoc[9](loc6: EpochStats)
55851MutBorrowLoc[6](loc3: vector<EpochStats>)
55952MoveLoc[9](loc6: EpochStats)
56254MoveLoc[7](loc4: u64)
56859MoveLoc[2](Arg2: &TxContext)
56960Call tx_context::epoch(&TxContext): u64
57061CopyLoc[0](Arg0: &Director)
57162ImmBorrowField[0](Director.paused: bool)
57364CopyLoc[0](Arg0: &Director)
57465ImmBorrowField[11](Director.tx_count: u64)
57667CopyLoc[0](Arg0: &Director)
57768ImmBorrowField[12](Director.shares_count: u64)
57970MoveLoc[0](Arg0: &Director)
58071ImmBorrowField[15](Director.treasury: TreasuryCap<SPAM>)
58172Call coin::total_supply<SPAM>(&TreasuryCap<SPAM>): u64
58273MoveLoc[6](loc3: vector<EpochStats>)
587public stats_for_recent_epochs(Arg0: &Director, Arg1: u64, Arg2: &TxContext): Stats {
5930CopyLoc[2](Arg2: &TxContext)
5941Call tx_context::epoch(&TxContext): u64
5963LdConst[7](vector<u64>: 00)
5974StLoc[5](loc2: vector<u64>)
6017CopyLoc[6](loc3: u64)
6028CopyLoc[1](Arg1: u64)
60812CopyLoc[6](loc3: u64)
60913CopyLoc[4](loc1: u64)
61115StLoc[3](loc0: bool)
61518StLoc[3](loc0: bool)
61719MoveLoc[3](loc0: bool)
62021MoveLoc[6](loc3: u64)
62425MutBorrowLoc[5](loc2: vector<u64>)
62526CopyLoc[4](loc1: u64)
62627CopyLoc[6](loc3: u64)
63131MoveLoc[0](Arg0: &Director)
63232MoveLoc[5](loc2: vector<u64>)
63333MoveLoc[2](Arg2: &TxContext)
63434Call stats_for_specific_epochs(&Director, vector<u64>, &TxContext): Stats
638public admin_pause(Arg0: &mut Director, Arg1: &AdminCap) {
6411MoveLoc[0](Arg0: &mut Director)
6422MutBorrowField[0](Director.paused: bool)
647public admin_resume(Arg0: &mut Director, Arg1: &AdminCap) {
6501MoveLoc[0](Arg0: &mut Director)
6512MutBorrowField[0](Director.paused: bool)
656public admin_destroy(Arg0: AdminCap) {
6580MoveLoc[0](Arg0: AdminCap)
6602Call object::delete(UID)
664get_or_create_epoch_counter(Arg0: &mut Director, Arg1: u64, Arg2: &mut TxContext): &mut EpochCounter {
666L4: loc1: Table<address, u64>
668L6: loc3: EpochCounter
6710CopyLoc[0](Arg0: &mut Director)
6721ImmBorrowField[13](Director.epoch_counters: Table<u64, EpochCounter>)
6732CopyLoc[1](Arg1: u64)
6743Call table::contains<u64, EpochCounter>(&Table<u64, EpochCounter>, u64): bool
6786CopyLoc[0](Arg0: &mut Director)
6797ImmBorrowField[13](Director.epoch_counters: Table<u64, EpochCounter>)
6808CopyLoc[1](Arg1: u64)
68311Call table::contains<u64, EpochCounter>(&Table<u64, EpochCounter>, u64): bool
68714CopyLoc[0](Arg0: &mut Director)
68815ImmBorrowField[17](Director.epoch_reward: u64)
69319CopyLoc[0](Arg0: &mut Director)
69420ImmBorrowField[13](Director.epoch_counters: Table<u64, EpochCounter>)
69521CopyLoc[1](Arg1: u64)
69824Call table::borrow<u64, EpochCounter>(&Table<u64, EpochCounter>, u64): &EpochCounter
69925ImmBorrowField[14](EpochCounter.epoch_reward: u64)
70732CopyLoc[1](Arg1: u64)
70934MoveLoc[2](Arg2: &mut TxContext)
71035Call table::new<address, u64>(&mut TxContext): Table<address, u64>
71136StLoc[4](loc1: Table<address, u64>)
71237MoveLoc[7](loc4: u64)
71439MoveLoc[3](loc0: u64)
71540MoveLoc[5](loc2: u64)
71944MoveLoc[4](loc1: Table<address, u64>)
72045Pack[3](EpochCounter)
72146StLoc[6](loc3: EpochCounter)
72247CopyLoc[0](Arg0: &mut Director)
72348MutBorrowField[13](Director.epoch_counters: Table<u64, EpochCounter>)
72449CopyLoc[1](Arg1: u64)
72550MoveLoc[6](loc3: EpochCounter)
72651Call table::add<u64, EpochCounter>(&mut Table<u64, EpochCounter>, u64, EpochCounter)
72953MoveLoc[2](Arg2: &mut TxContext)
73255MoveLoc[0](Arg0: &mut Director)
73356MutBorrowField[13](Director.epoch_counters: Table<u64, EpochCounter>)
73457MoveLoc[1](Arg1: u64)
73558Call table::borrow_mut<u64, EpochCounter>(&mut Table<u64, EpochCounter>, u64): &mut EpochCounter
739init(Arg0: SPAM, Arg1: &mut TxContext) {
741L3: loc1: TreasuryCap<SPAM>
742L4: loc2: Table<u64, EpochCounter>
744L6: loc4: CoinMetadata<SPAM>
746L8: loc6: TreasuryCap<SPAM>
7480CopyLoc[1](Arg1: &mut TxContext)
7502Call tx_context::sender(&TxContext): address
7513StLoc[7](loc5: address)
7524MoveLoc[0](Arg0: SPAM)
7546LdConst[8](vector<u8>: "SPA..)
7557LdConst[8](vector<u8>: "SPA..)
7568LdConst[9](vector<u8>: "The..)
7579Call icon::get_icon_url(): Url
75810Call option::some<Url>(Url): Option<Url>
75911CopyLoc[1](Arg1: &mut TxContext)
76012Call coin::create_currency<SPAM>(SPAM, u8, vector<u8>, vector<u8>, vector<u8>, Option<Url>, &mut TxContext): TreasuryCap<SPAM> * CoinMetadata<SPAM>
76113StLoc[6](loc4: CoinMetadata<SPAM>)
76214StLoc[8](loc6: TreasuryCap<SPAM>)
76315MoveLoc[6](loc4: CoinMetadata<SPAM>)
76416Call transfer::public_freeze_object<CoinMetadata<SPAM>>(CoinMetadata<SPAM>)
76517CopyLoc[1](Arg1: &mut TxContext)
76618Call object::new(&mut TxContext): UID
76820MoveLoc[8](loc6: TreasuryCap<SPAM>)
76921StLoc[3](loc1: TreasuryCap<SPAM>)
77022CopyLoc[1](Arg1: &mut TxContext)
77123Call table::new<u64, EpochCounter>(&mut TxContext): Table<u64, EpochCounter>
77224StLoc[4](loc2: Table<u64, EpochCounter>)
77325MoveLoc[2](loc0: UID)
77729LdConst[6](u64: 1000..)
77830MoveLoc[3](loc1: TreasuryCap<SPAM>)
77931MoveLoc[4](loc2: Table<u64, EpochCounter>)
78133StLoc[5](loc3: Director)
78234MutBorrowLoc[5](loc3: Director)
78335MutBorrowField[15](Director.treasury: TreasuryCap<SPAM>)
78436LdConst[6](u64: 1000..)
78537MoveLoc[7](loc5: address)
78638CopyLoc[1](Arg1: &mut TxContext)
78739Call coin::mint_and_transfer<SPAM>(&mut TreasuryCap<SPAM>, u64, address, &mut TxContext)
78840MoveLoc[5](loc3: Director)
78941Call transfer::share_object<Director>(Director)
79042CopyLoc[1](Arg1: &mut TxContext)
79143Call object::new(&mut TxContext): UID
79345MoveLoc[1](Arg1: &mut TxContext)
79547Call tx_context::sender(&TxContext): address
79648Call transfer::transfer<AdminCap>(AdminCap, address)
807 6 => u64: 10000000000
809 8 => vector<u8>: "SPAM2" // interpreted as UTF8 string
810 9 => vector<u8>: "The original Proof of Spam coin,SPAM 2.0 now." // interpreted as UTF8 string