SuiMine package::fomo bytecode | tide- Move path
- 0xa340…54f2::fomo
- Functions
- 149 public, 0 entry
- Structs
- 4
- Friend modules
- None
fomo
The on-chain disassembly. Offsets are bytecode positions within each function.
1// Move bytecode v6
2module a340e3db1332c21f20f5c08bef0fa459e733575f9a7e2f5faca64f72cd5a54f2.fomo {
3use a340e3db1332c21f20f5c08bef0fa459e733575f9a7e2f5faca64f72cd5a54f2::icon;
4use a340e3db1332c21f20f5c08bef0fa459e733575f9a7e2f5faca64f72cd5a54f2::locker;
5use a340e3db1332c21f20f5c08bef0fa459e733575f9a7e2f5faca64f72cd5a54f2::miner;
6use 0000000000000000000000000000000000000000000000000000000000000001::option;
7use 0000000000000000000000000000000000000000000000000000000000000001::vector;
8use 0000000000000000000000000000000000000000000000000000000000000002::balance;
9use 0000000000000000000000000000000000000000000000000000000000000002::bcs;
10use 0000000000000000000000000000000000000000000000000000000000000002::clock;
11use 0000000000000000000000000000000000000000000000000000000000000002::coin;
12use 0000000000000000000000000000000000000000000000000000000000000002::hash;
13use 0000000000000000000000000000000000000000000000000000000000000002::math;
14use 0000000000000000000000000000000000000000000000000000000000000002::object;
15use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
16use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
17use 0000000000000000000000000000000000000000000000000000000000000002::url;
19struct Config has key {
23 treasury: Locker<FOMO>,
24 last_difficulty_adjustment: u64,
36 rewards: Balance<FOMO>,
44struct AdminCap has store, key {
48init(Arg0: FOMO, Arg1: &mut TxContext) {
53L6: loc4: Balance<FOMO>
58L11: loc9: Balance<FOMO>
60L13: loc11: CoinMetadata<FOMO>
62L15: loc13: Balance<FOMO>
63L16: loc14: Locker<FOMO>
64L17: loc15: TreasuryCap<FOMO>
670MoveLoc[0](Arg0: FOMO)
692LdConst[18](vector<u8>: "FOM..)
703LdConst[18](vector<u8>: "FOM..)
714LdConst[19](vector<u8>: "Alg..)
725Call icon::get_icon_url(): Url
736Call option::some<Url>(Url): Option<Url>
747CopyLoc[1](Arg1: &mut TxContext)
758Call coin::create_currency<FOMO>(FOMO, u8, vector<u8>, vector<u8>, vector<u8>, Option<Url>, &mut TxContext): TreasuryCap<FOMO> * CoinMetadata<FOMO>
769StLoc[13](loc11: CoinMetadata<FOMO>)
7710StLoc[17](loc15: TreasuryCap<FOMO>)
7811MutBorrowLoc[17](loc15: TreasuryCap<FOMO>)
7912LdConst[8](u64: 2100..)
8013CopyLoc[1](Arg1: &mut TxContext)
8114Call coin::mint<FOMO>(&mut TreasuryCap<FOMO>, u64, &mut TxContext): Coin<FOMO>
8215Call coin::into_balance<FOMO>(Coin<FOMO>): Balance<FOMO>
8316StLoc[15](loc13: Balance<FOMO>)
8417MoveLoc[17](loc15: TreasuryCap<FOMO>)
8518ImmBorrowLoc[13](loc11: CoinMetadata<FOMO>)
8619Call object::id_address<CoinMetadata<FOMO>>(&CoinMetadata<FOMO>): address
8720Call transfer::public_transfer<TreasuryCap<FOMO>>(TreasuryCap<FOMO>, address)
8821MoveLoc[13](loc11: CoinMetadata<FOMO>)
8922Call transfer::public_freeze_object<CoinMetadata<FOMO>>(CoinMetadata<FOMO>)
9023MutBorrowLoc[15](loc13: Balance<FOMO>)
9124LdConst[13](u64: 1944..)
9225Call balance::split<FOMO>(&mut Balance<FOMO>, u64): Balance<FOMO>
9326StLoc[11](loc9: Balance<FOMO>)
9427LdConst[13](u64: 1944..)
9831LdConst[12](u64: 9722..)
10134StLoc[12](loc10: u64)
10537CopyLoc[9](loc7: u64)
11242CopyLoc[1](Arg1: &mut TxContext)
11343Call object::new(&mut TxContext): UID
11545CopyLoc[12](loc10: u64)
11747MutBorrowLoc[11](loc9: Balance<FOMO>)
11848CopyLoc[8](loc6: u64)
11949Call balance::split<FOMO>(&mut Balance<FOMO>, u64): Balance<FOMO>
12050StLoc[6](loc4: Balance<FOMO>)
12151MoveLoc[2](loc0: UID)
12555MoveLoc[5](loc3: u64)
12757MoveLoc[6](loc4: Balance<FOMO>)
13060Call transfer::share_object<Bus>(Bus)
13161MoveLoc[9](loc7: u64)
13766MoveLoc[11](loc9: Balance<FOMO>)
13867Call balance::destroy_zero<FOMO>(Balance<FOMO>)
13968CopyLoc[1](Arg1: &mut TxContext)
14170Call tx_context::epoch_timestamp_ms(&TxContext): u64
14271StLoc[10](loc8: u64)
14473LdConst[13](u64: 1944..)
14877StLoc[14](loc12: u64)
14978LdConst[13](u64: 1944..)
15079MoveLoc[14](loc12: u64)
15483StLoc[18](loc16: u64)
15584MoveLoc[15](loc13: Balance<FOMO>)
15786MoveLoc[18](loc16: u64)
15887Call locker::create<FOMO>(Balance<FOMO>, u64, u64): Locker<FOMO>
15988StLoc[16](loc14: Locker<FOMO>)
16089CopyLoc[1](Arg1: &mut TxContext)
16190Call object::new(&mut TxContext): UID
16392MoveLoc[16](loc14: Locker<FOMO>)
16493StLoc[3](loc1: Locker<FOMO>)
16594MoveLoc[10](loc8: u64)
16796MoveLoc[7](loc5: UID)
17099MoveLoc[3](loc1: Locker<FOMO>)
171100MoveLoc[4](loc2: u64)
175104Call transfer::share_object<Config>(Config)
176105CopyLoc[1](Arg1: &mut TxContext)
177106Call object::new(&mut TxContext): UID
179108MoveLoc[1](Arg1: &mut TxContext)
181110Call tx_context::sender(&TxContext): address
182111Call transfer::transfer<AdminCap>(AdminCap, address)
186public epoch_reset(Arg0: &mut Config, Arg1: vector<Bus>, Arg2: &Clock, Arg3: &mut TxContext) {
188L5: loc1: Balance<FOMO>
189L6: loc2: Balance<FOMO>
196L13: loc9: Balance<FOMO>
202L19: loc15: Balance<FOMO>
206L23: loc19: Balance<FOMO>
207L24: loc20: Balance<FOMO>
210L27: loc23: Balance<FOMO>
211L28: loc24: Balance<FOMO>
2140ImmBorrowLoc[1](Arg1: vector<Bus>)
2162CopyLoc[0](Arg0: &mut Config)
2173ImmBorrowField[0](Config.bus_count: u64)
2248MoveLoc[0](Arg0: &mut Config)
22610MoveLoc[2](Arg2: &Clock)
22812LdConst[4](u64: 4005)
23114ImmBorrowLoc[1](Arg1: vector<Bus>)
23417ImmBorrowField[1](Bus.live: bool)
24021MoveLoc[0](Arg0: &mut Config)
24223MoveLoc[2](Arg2: &Clock)
24425LdConst[6](u64: 4007)
24727CopyLoc[2](Arg2: &Clock)
24828Call clock::timestamp_ms(&Clock): u64
24929StLoc[11](loc7: u64)
25030CopyLoc[0](Arg0: &mut Config)
25131ImmBorrowField[2](Config.treasury: Locker<FOMO>)
25232Call locker::unlock_start_ts_sec<FOMO>(&Locker<FOMO>): u64
25535StLoc[29](loc25: u64)
25636CopyLoc[11](loc7: u64)
25737MoveLoc[29](loc25: u64)
26341MoveLoc[0](Arg0: &mut Config)
26543MoveLoc[2](Arg2: &Clock)
26745LdConst[7](u64: 4008)
27047ImmBorrowLoc[1](Arg1: vector<Bus>)
27350ImmBorrowField[3](Bus.last_reset: u64)
27552LdConst[11](u64: 60000)
27754StLoc[20](loc16: u64)
27855CopyLoc[11](loc7: u64)
27956MoveLoc[20](loc16: u64)
28560MoveLoc[0](Arg0: &mut Config)
28762MoveLoc[2](Arg2: &Clock)
28964LdConst[2](u64: 4003)
29569StLoc[15](loc11: u64)
29770CopyLoc[15](loc11: u64)
29871CopyLoc[0](Arg0: &mut Config)
29972ImmBorrowField[0](Config.bus_count: u64)
30476ImmBorrowLoc[1](Arg1: vector<Bus>)
30577CopyLoc[15](loc11: u64)
30779StLoc[7](loc3: &Bus)
30880MoveLoc[4](loc0: u64)
30981MoveLoc[7](loc3: &Bus)
31082ImmBorrowField[4](Bus.epoch_hashes: u64)
31486MoveLoc[15](loc11: u64)
31789StLoc[15](loc11: u64)
32091MoveLoc[4](loc0: u64)
32192StLoc[25](loc21: u64)
32293LdConst[13](u64: 1944..)
32394CopyLoc[0](Arg0: &mut Config)
32495ImmBorrowField[0](Config.bus_count: u64)
32798StLoc[10](loc6: u64)
329100StLoc[26](loc22: u64)
331102StLoc[16](loc12: u64)
332103Call balance::zero<FOMO>(): Balance<FOMO>
333104StLoc[5](loc1: Balance<FOMO>)
335105CopyLoc[16](loc12: u64)
336106CopyLoc[0](Arg0: &mut Config)
337107ImmBorrowField[0](Config.bus_count: u64)
342111MutBorrowLoc[1](Arg1: vector<Bus>)
343112CopyLoc[16](loc12: u64)
345114MutBorrowField[5](Bus.rewards: Balance<FOMO>)
346115Call balance::withdraw_all<FOMO>(&mut Balance<FOMO>): Balance<FOMO>
347116StLoc[19](loc15: Balance<FOMO>)
348117CopyLoc[10](loc6: u64)
349118ImmBorrowLoc[19](loc15: Balance<FOMO>)
350119Call balance::value<FOMO>(&Balance<FOMO>): u64
352121StLoc[12](loc8: u64)
353122MoveLoc[26](loc22: u64)
354123MoveLoc[12](loc8: u64)
356125StLoc[26](loc22: u64)
357126MutBorrowLoc[5](loc1: Balance<FOMO>)
358127MoveLoc[19](loc15: Balance<FOMO>)
359128Call balance::join<FOMO>(&mut Balance<FOMO>, Balance<FOMO>): u64
361130MoveLoc[16](loc12: u64)
364133StLoc[16](loc12: u64)
367135CopyLoc[0](Arg0: &mut Config)
368136MutBorrowField[2](Config.treasury: Locker<FOMO>)
369137CopyLoc[2](Arg2: &Clock)
370138Call locker::withdraw_all<FOMO>(&mut Locker<FOMO>, &Clock): Balance<FOMO>
371139StLoc[27](loc23: Balance<FOMO>)
372140MutBorrowLoc[5](loc1: Balance<FOMO>)
373141MoveLoc[27](loc23: Balance<FOMO>)
374142Call balance::join<FOMO>(&mut Balance<FOMO>, Balance<FOMO>): u64
376144MoveLoc[5](loc1: Balance<FOMO>)
377145MoveLoc[26](loc22: u64)
378146StLoc[18](loc14: u64)
379147StLoc[6](loc2: Balance<FOMO>)
380148CopyLoc[0](Arg0: &mut Config)
381149ImmBorrowField[6](Config.total_hashes: u64)
383151MoveLoc[25](loc21: u64)
385153CopyLoc[0](Arg0: &mut Config)
386154MutBorrowField[6](Config.total_hashes: u64)
388156CopyLoc[0](Arg0: &mut Config)
389157ImmBorrowField[7](Config.total_rewards: u64)
391159CopyLoc[18](loc14: u64)
393161CopyLoc[0](Arg0: &mut Config)
394162MutBorrowField[7](Config.total_rewards: u64)
396164ImmBorrowLoc[6](loc2: Balance<FOMO>)
397165Call balance::value<FOMO>(&Balance<FOMO>): u64
398166LdConst[13](u64: 1944..)
402169ImmBorrowLoc[1](Arg1: vector<Bus>)
405172Call reward_rate(&Bus): u64
406173MoveLoc[18](loc14: u64)
407174CopyLoc[10](loc6: u64)
408175Call calculate_new_reward_rate(u64, u64, u64): u64
409176StLoc[17](loc13: u64)
410177CopyLoc[0](Arg0: &mut Config)
411178ImmBorrowField[6](Config.total_hashes: u64)
413180Call calculate_difficulty(u64): u8
414181StLoc[22](loc18: u8)
415182ImmBorrowLoc[1](Arg1: vector<Bus>)
418185Call difficulty(&Bus): u8
419186CopyLoc[22](loc18: u8)
421188StLoc[21](loc17: bool)
422189CopyLoc[21](loc17: bool)
425191CopyLoc[11](loc7: u64)
426192CopyLoc[0](Arg0: &mut Config)
427193MutBorrowField[8](Config.last_difficulty_adjustment: u64)
431196ImmBorrowLoc[1](Arg1: vector<Bus>)
432197Call vector::is_empty<Bus>(&vector<Bus>): bool
436200MutBorrowLoc[1](Arg1: vector<Bus>)
438202StLoc[8](loc4: Bus)
439203MutBorrowLoc[6](loc2: Balance<FOMO>)
440204CopyLoc[10](loc6: u64)
441205Call balance::split<FOMO>(&mut Balance<FOMO>, u64): Balance<FOMO>
442206StLoc[23](loc19: Balance<FOMO>)
443207MutBorrowLoc[8](loc4: Bus)
444208MutBorrowField[5](Bus.rewards: Balance<FOMO>)
445209MoveLoc[23](loc19: Balance<FOMO>)
446210Call balance::join<FOMO>(&mut Balance<FOMO>, Balance<FOMO>): u64
448212CopyLoc[11](loc7: u64)
449213MutBorrowLoc[8](loc4: Bus)
450214MutBorrowField[3](Bus.last_reset: u64)
452216CopyLoc[17](loc13: u64)
453217MutBorrowLoc[8](loc4: Bus)
454218MutBorrowField[9](Bus.reward_rate: u64)
457221MutBorrowLoc[8](loc4: Bus)
458222MutBorrowField[4](Bus.epoch_hashes: u64)
460224CopyLoc[21](loc17: bool)
463226CopyLoc[22](loc18: u8)
464227MutBorrowLoc[8](loc4: Bus)
465228MutBorrowField[10](Bus.difficulty: u8)
468230MoveLoc[8](loc4: Bus)
469231Call transfer::share_object<Bus>(Bus)
472233MutBorrowLoc[6](loc2: Balance<FOMO>)
473234Call balance::withdraw_all<FOMO>(&mut Balance<FOMO>): Balance<FOMO>
474235StLoc[28](loc24: Balance<FOMO>)
475236MoveLoc[0](Arg0: &mut Config)
476237MutBorrowField[2](Config.treasury: Locker<FOMO>)
477238MoveLoc[28](loc24: Balance<FOMO>)
478239MoveLoc[2](Arg2: &Clock)
479240Call locker::top_up<FOMO>(&mut Locker<FOMO>, Balance<FOMO>, &Clock)
482242CopyLoc[0](Arg0: &mut Config)
483243ImmBorrowField[2](Config.treasury: Locker<FOMO>)
484244MoveLoc[2](Arg2: &Clock)
485245Call locker::remaining_unlock<FOMO>(&Locker<FOMO>, &Clock): u64
492250MoveLoc[0](Arg0: &mut Config)
494252LdConst[5](u64: 4006)
497254CopyLoc[0](Arg0: &mut Config)
498255MutBorrowField[2](Config.treasury: Locker<FOMO>)
499256Call locker::skim_extraneous_balance<FOMO>(&mut Locker<FOMO>): Balance<FOMO>
500257StLoc[13](loc9: Balance<FOMO>)
501258MutBorrowLoc[6](loc2: Balance<FOMO>)
502259MoveLoc[13](loc9: Balance<FOMO>)
503260Call balance::join<FOMO>(&mut Balance<FOMO>, Balance<FOMO>): u64
505262ImmBorrowLoc[6](loc2: Balance<FOMO>)
506263Call balance::value<FOMO>(&Balance<FOMO>): u64
507264StLoc[14](loc10: u64)
508265CopyLoc[0](Arg0: &mut Config)
509266ImmBorrowField[7](Config.total_rewards: u64)
511268MoveLoc[14](loc10: u64)
513270MoveLoc[0](Arg0: &mut Config)
514271MutBorrowField[7](Config.total_rewards: u64)
516273MutBorrowLoc[6](loc2: Balance<FOMO>)
517274Call balance::withdraw_all<FOMO>(&mut Balance<FOMO>): Balance<FOMO>
518275StLoc[24](loc20: Balance<FOMO>)
519276MutBorrowLoc[1](Arg1: vector<Bus>)
522279MutBorrowField[5](Bus.rewards: Balance<FOMO>)
523280MoveLoc[24](loc20: Balance<FOMO>)
524281Call balance::join<FOMO>(&mut Balance<FOMO>, Balance<FOMO>): u64
527283ImmBorrowLoc[1](Arg1: vector<Bus>)
528284Call vector::is_empty<Bus>(&vector<Bus>): bool
532287MutBorrowLoc[1](Arg1: vector<Bus>)
534289StLoc[9](loc5: Bus)
536291MutBorrowLoc[9](loc5: Bus)
537292MutBorrowField[1](Bus.live: bool)
539294MoveLoc[9](loc5: Bus)
540295Call transfer::share_object<Bus>(Bus)
543297MoveLoc[6](loc2: Balance<FOMO>)
544298Call balance::destroy_zero<FOMO>(Balance<FOMO>)
545299MoveLoc[1](Arg1: vector<Bus>)
550public mine(Arg0: u64, Arg1: &mut Bus, Arg2: &mut Miner, Arg3: &Clock, Arg4: &mut TxContext): Coin<FOMO> {
552L6: loc1: &mut vector<u8>
557L11: loc6: Balance<FOMO>
5600CopyLoc[1](Arg1: &mut Bus)
5611ImmBorrowField[1](Bus.live: bool)
5665MoveLoc[3](Arg3: &Clock)
5687MoveLoc[1](Arg1: &mut Bus)
5698MutBorrowField[5](Bus.rewards: Balance<FOMO>)
5709Call balance::withdraw_all<FOMO>(&mut Balance<FOMO>): Balance<FOMO>
57110StLoc[11](loc6: Balance<FOMO>)
57211ImmBorrowLoc[11](loc6: Balance<FOMO>)
57312Call balance::value<FOMO>(&Balance<FOMO>): u64
57413StLoc[10](loc5: u64)
57514CopyLoc[10](loc5: u64)
58018MoveLoc[2](Arg2: &mut Miner)
58220MoveLoc[4](Arg4: &mut TxContext)
58422LdConst[6](u64: 4007)
58724MoveLoc[2](Arg2: &mut Miner)
58825MoveLoc[10](loc5: u64)
58926Call miner::record_rewards(&mut Miner, u64)
59027MoveLoc[11](loc6: Balance<FOMO>)
59128MoveLoc[4](Arg4: &mut TxContext)
59229Call coin::from_balance<FOMO>(Balance<FOMO>, &mut TxContext): Coin<FOMO>
59531MoveLoc[3](Arg3: &Clock)
59632Call clock::timestamp_ms(&Clock): u64
59834CopyLoc[1](Arg1: &mut Bus)
59935ImmBorrowField[3](Bus.last_reset: u64)
60137LdConst[11](u64: 60000)
60339StLoc[12](loc7: u64)
60440CopyLoc[7](loc2: u64)
60541MoveLoc[12](loc7: u64)
61145MoveLoc[2](Arg2: &mut Miner)
61347MoveLoc[4](Arg4: &mut TxContext)
61549MoveLoc[1](Arg1: &mut Bus)
61751LdConst[1](u64: 4002)
62053CopyLoc[1](Arg1: &mut Bus)
62154ImmBorrowField[5](Bus.rewards: Balance<FOMO>)
62255Call balance::value<FOMO>(&Balance<FOMO>): u64
62356CopyLoc[1](Arg1: &mut Bus)
62457ImmBorrowField[9](Bus.reward_rate: u64)
63162MoveLoc[2](Arg2: &mut Miner)
63364MoveLoc[4](Arg4: &mut TxContext)
63566MoveLoc[1](Arg1: &mut Bus)
63768LdConst[0](u64: 4001)
64070CopyLoc[2](Arg2: &mut Miner)
64272Call miner::current_hash(&Miner): vector<u8>
64373CopyLoc[4](Arg4: &mut TxContext)
64575Call tx_context::sender(&TxContext): address
64676MoveLoc[0](Arg0: u64)
64777Call generate_proof(vector<u8>, address, u64): vector<u8>
64878StLoc[9](loc4: vector<u8>)
64979CopyLoc[9](loc4: vector<u8>)
65080CopyLoc[1](Arg1: &mut Bus)
65181ImmBorrowField[10](Bus.difficulty: u8)
65383Call validate_proof(vector<u8>, u8)
65585StLoc[8](loc3: vector<u8>)
65686MutBorrowLoc[8](loc3: vector<u8>)
65787MoveLoc[9](loc4: vector<u8>)
65888Call vector::append<u8>(&mut vector<u8>, vector<u8>)
65989MutBorrowLoc[8](loc3: vector<u8>)
66090ImmBorrowLoc[7](loc2: u64)
66191Call bcs::to_bytes<u64>(&u64): vector<u8>
66292Call vector::append<u8>(&mut vector<u8>, vector<u8>)
66393MutBorrowLoc[8](loc3: vector<u8>)
66494StLoc[6](loc1: &mut vector<u8>)
66595CopyLoc[4](Arg4: &mut TxContext)
66696Call tx_context::fresh_object_address(&mut TxContext): address
66797StLoc[5](loc0: address)
66898MoveLoc[6](loc1: &mut vector<u8>)
66999ImmBorrowLoc[5](loc0: address)
670100Call bcs::to_bytes<address>(&address): vector<u8>
671101Call vector::append<u8>(&mut vector<u8>, vector<u8>)
672102ImmBorrowLoc[8](loc3: vector<u8>)
673103Call hash::keccak256(&vector<u8>): vector<u8>
674104CopyLoc[2](Arg2: &mut Miner)
675105Call miner::current_hash_mut(&mut Miner): &mut vector<u8>
677107CopyLoc[2](Arg2: &mut Miner)
678108Call miner::record_hash(&mut Miner)
679109MoveLoc[2](Arg2: &mut Miner)
680110CopyLoc[1](Arg1: &mut Bus)
681111ImmBorrowField[9](Bus.reward_rate: u64)
683113Call miner::record_rewards(&mut Miner, u64)
684114CopyLoc[1](Arg1: &mut Bus)
685115ImmBorrowField[4](Bus.epoch_hashes: u64)
689119CopyLoc[1](Arg1: &mut Bus)
690120MutBorrowField[4](Bus.epoch_hashes: u64)
692122CopyLoc[1](Arg1: &mut Bus)
693123MutBorrowField[5](Bus.rewards: Balance<FOMO>)
694124MoveLoc[1](Arg1: &mut Bus)
695125ImmBorrowField[9](Bus.reward_rate: u64)
697127Call balance::split<FOMO>(&mut Balance<FOMO>, u64): Balance<FOMO>
698128MoveLoc[4](Arg4: &mut TxContext)
699129Call coin::from_balance<FOMO>(Balance<FOMO>, &mut TxContext): Coin<FOMO>
703public live(Arg0: &Bus): bool {
7050MoveLoc[0](Arg0: &Bus)
7061ImmBorrowField[1](Bus.live: bool)
711public difficulty(Arg0: &Bus): u8 {
7130MoveLoc[0](Arg0: &Bus)
7141ImmBorrowField[10](Bus.difficulty: u8)
719public reward_rate(Arg0: &Bus): u64 {
7210MoveLoc[0](Arg0: &Bus)
7221ImmBorrowField[9](Bus.reward_rate: u64)
727public rewards(Arg0: &Bus): &Balance<FOMO> {
7290MoveLoc[0](Arg0: &Bus)
7301ImmBorrowField[5](Bus.rewards: Balance<FOMO>)
734public total_rewards(Arg0: &Config): u64 {
7360MoveLoc[0](Arg0: &Config)
7371ImmBorrowField[7](Config.total_rewards: u64)
742public total_hashes(Arg0: &Config): u64 {
7440MoveLoc[0](Arg0: &Config)
7451ImmBorrowField[6](Config.total_hashes: u64)
750public treasury(Arg0: &Config): &Locker<FOMO> {
7520MoveLoc[0](Arg0: &Config)
7531ImmBorrowField[2](Config.treasury: Locker<FOMO>)
757validate_proof(Arg0: vector<u8>, Arg1: u8) {
7674LdConst[3](u64: 4004)
77812ImmBorrowLoc[0](Arg0: vector<u8>)
77913CopyLoc[4](loc2: u8)
78519MoveLoc[3](loc1: &u8)
78620ImmBorrowLoc[2](loc0: u8)
79224LdConst[3](u64: 4004)
79526MoveLoc[4](loc2: u8)
804generate_proof(Arg0: vector<u8>, Arg1: address, Arg2: u64): vector<u8> {
8081StLoc[3](loc0: vector<u8>)
8092MutBorrowLoc[3](loc0: vector<u8>)
8103MoveLoc[0](Arg0: vector<u8>)
8114Call vector::append<u8>(&mut vector<u8>, vector<u8>)
8125MutBorrowLoc[3](loc0: vector<u8>)
8136ImmBorrowLoc[1](Arg1: address)
8147Call bcs::to_bytes<address>(&address): vector<u8>
8158Call vector::append<u8>(&mut vector<u8>, vector<u8>)
8169MutBorrowLoc[3](loc0: vector<u8>)
81710ImmBorrowLoc[2](Arg2: u64)
81811Call bcs::to_bytes<u64>(&u64): vector<u8>
81912Call vector::append<u8>(&mut vector<u8>, vector<u8>)
82013ImmBorrowLoc[3](loc0: vector<u8>)
82114Call hash::keccak256(&vector<u8>): vector<u8>
825calculate_new_reward_rate(Arg0: u64, Arg1: u64, Arg2: u64): u64 {
8332CopyLoc[1](Arg1: u64)
8386MoveLoc[0](Arg0: u64)
8418CopyLoc[0](Arg0: u64)
8429CopyLoc[6](loc3: u64)
84512CopyLoc[0](Arg0: u64)
84613MoveLoc[6](loc3: u64)
84916LdConst[12](u64: 9722..)
85017MoveLoc[1](Arg1: u64)
85219MoveLoc[0](Arg0: u64)
85522MoveLoc[5](loc2: u64)
85623MoveLoc[4](loc1: u64)
85724MoveLoc[3](loc0: u64)
85825Call math::min(u64, u64): u64
85926Call math::max(u64, u64): u64
86128Call math::max(u64, u64): u64
86229MoveLoc[2](Arg2: u64)
86330Call math::min(u64, u64): u64
867calculate_difficulty(Arg0: u64): u8 {
8774LdConst[9](u64: 1000..)
8807Call math::pow(u64, u8): u64
88310MoveLoc[1](loc0: u64)
88411MoveLoc[3](loc2: u64)
88714CopyLoc[1](loc0: u64)
88815LdConst[8](u64: 2100..)
89419CopyLoc[0](Arg0: u64)
89520CopyLoc[1](loc0: u64)
89923MoveLoc[2](loc1: u8)
90629MoveLoc[2](loc1: u8)
920 8 => u64: 2100000000000000000
924 12 => u64: 97222000000000
925 13 => u64: 194444000000000
930 18 => vector<u8>: "FOMO" // interpreted as UTF8 string
931 19 => vector<u8>: "Algorithmic Proof-of-Work MEME." // interpreted as UTF8 string