Cro Protocol package::swap bytecode | tide- Move path
- 0xaec9…5faa::swap
- Functions
- 136 public, 0 entry
- Structs
- 3
- Friend modules
- None
swap
The on-chain disassembly. Offsets are bytecode positions within each function.
1// Move bytecode v6
2module aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa.swap {
3use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::events;
4use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::nft;
5use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::protocol_fee;
6use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::treasury;
7use aec914fe1ed3be0aa3fc3cc610cccba02ace491ab45589035f657e1097c75faa::utils;
8use 0000000000000000000000000000000000000000000000000000000000000001::u64;
9use 0000000000000000000000000000000000000000000000000000000000000002::clock;
10use 0000000000000000000000000000000000000000000000000000000000000002::coin;
11use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
13struct ROUTER has drop {
17struct RouterMetadata has copy, drop {
22struct RouterCap<phantom Ty0, phantom Ty1> {
25 first_swap: RouterMetadata,
26 previous_swap: RouterMetadata,
27 final_swap: RouterMetadata
30public assert_expected_coin_in<Ty0, Ty1>(Arg0: &RouterCap<Ty0, Ty1>, Arg1: &Coin<Ty1>) {
320MoveLoc[0](Arg0: &RouterCap<Ty0, Ty1>)
331MoveLoc[1](Arg1: &Coin<Ty1>)
342Call is_valid_swap<Ty0, Ty1>(&RouterCap<Ty0, Ty1>, &Coin<Ty1>): bool
45assert_previous_swap_was_valid<Ty0, Ty1>(Arg0: &RouterCap<Ty0, Ty1>) {
470MoveLoc[0](Arg0: &RouterCap<Ty0, Ty1>)
481Call is_valid_final_swap<Ty0, Ty1>(&RouterCap<Ty0, Ty1>): bool
59assert_route_starts_with_non_zero_value(Arg0: u64) {
74calculate_percentage(Arg0: u64, Arg1: u64): u64 {
815LdU128(1000000000000000000)
87public begin_swap_router<Ty0, Ty1>(Arg0: Coin<Ty0>, Arg1: &mut TxContext): RouterCap<Ty0, Ty1> {
89L3: loc1: RouterMetadata
90L4: loc2: RouterMetadata
920ImmBorrowLoc[0](Arg0: Coin<Ty0>)
931Call coin::value<Ty0>(&Coin<Ty0>): u64
964Call assert_route_starts_with_non_zero_value(u64)
975Call utils::type_to_bytes<Ty0>(): vector<u8>
997Pack[1](RouterMetadata)
1008StLoc[4](loc2: RouterMetadata)
1019Call utils::type_to_bytes<Ty1>(): vector<u8>
10311Pack[1](RouterMetadata)
10412StLoc[3](loc1: RouterMetadata)
10513MoveLoc[0](Arg0: Coin<Ty0>)
10614MoveLoc[1](Arg1: &mut TxContext)
10715Call coin::zero<Ty1>(&mut TxContext): Coin<Ty1>
10816MoveLoc[4](loc2: RouterMetadata)
10917LdConst[0](vector<u8>: "" /..)
11119Pack[1](RouterMetadata)
11220MoveLoc[3](loc1: RouterMetadata)
11321PackGeneric[0](RouterCap<Ty0, Ty1>)
117public end_swap_router<Ty0, Ty1>(Arg0: RouterCap<Ty0, Ty1>, Arg1: &ProtocolFeeConfig, Arg2: &NftConfig, Arg3: &mut Treasury, Arg4: address, Arg5: &Clock, Arg6: &mut TxContext): Coin<Ty1> {
121L10: loc3: RouterMetadata
122L11: loc4: RouterMetadata
123L12: loc5: RouterCap<Ty0, Ty1>
1260CopyLoc[6](Arg6: &mut TxContext)
1282Call tx_context::sender(&TxContext): address
1293StLoc[13](loc6: address)
1304CopyLoc[4](Arg4: address)
1315MoveLoc[13](loc6: address)
1379MoveLoc[3](Arg3: &mut Treasury)
13911MoveLoc[1](Arg1: &ProtocolFeeConfig)
14113MoveLoc[2](Arg2: &NftConfig)
14315MoveLoc[6](Arg6: &mut TxContext)
14517MoveLoc[5](Arg5: &Clock)
15021ImmBorrowLoc[0](Arg0: RouterCap<Ty0, Ty1>)
15122Call assert_previous_swap_was_valid<Ty0, Ty1>(&RouterCap<Ty0, Ty1>)
15223MoveLoc[0](Arg0: RouterCap<Ty0, Ty1>)
15324StLoc[12](loc5: RouterCap<Ty0, Ty1>)
15425MutBorrowLoc[12](loc5: RouterCap<Ty0, Ty1>)
15526Call update_final_swap_metadata<Ty0, Ty1>(&mut RouterCap<Ty0, Ty1>)
15627MoveLoc[12](loc5: RouterCap<Ty0, Ty1>)
15728UnpackGeneric[0](RouterCap<Ty0, Ty1>)
15829StLoc[10](loc3: RouterMetadata)
16031StLoc[11](loc4: RouterMetadata)
16132StLoc[8](loc1: Coin<Ty1>)
16233StLoc[7](loc0: Coin<Ty0>)
16334MoveLoc[8](loc1: Coin<Ty1>)
16435StLoc[9](loc2: Coin<Ty1>)
16536MoveLoc[1](Arg1: &ProtocolFeeConfig)
16637CopyLoc[3](Arg3: &mut Treasury)
16738MutBorrowLoc[9](loc2: Coin<Ty1>)
16839CopyLoc[6](Arg6: &mut TxContext)
16940Call protocol_fee::distribute_protocol_fees<Ty1>(&ProtocolFeeConfig, &mut Treasury, &mut Coin<Ty1>, &mut TxContext)
17041CopyLoc[2](Arg2: &NftConfig)
17142MoveLoc[3](Arg3: &mut Treasury)
17243MoveLoc[2](Arg2: &NftConfig)
17344Call nft::get_points_per_swap(&NftConfig): u64
17445MoveLoc[5](Arg5: &Clock)
17546CopyLoc[6](Arg6: &mut TxContext)
17647Call nft::zero_obj_mint_with_points(&NftConfig, &mut Treasury, u64, &Clock, &mut TxContext)
17748MoveLoc[7](loc0: Coin<Ty0>)
17849Call coin::destroy_zero<Ty0>(Coin<Ty0>)
17950ImmBorrowLoc[11](loc4: RouterMetadata)
18051ImmBorrowField[0](RouterMetadata.typeName: vector<u8>)
18253ImmBorrowLoc[11](loc4: RouterMetadata)
18354ImmBorrowField[1](RouterMetadata.amount: u64)
18556ImmBorrowLoc[10](loc3: RouterMetadata)
18657ImmBorrowField[0](RouterMetadata.typeName: vector<u8>)
18859ImmBorrowLoc[10](loc3: RouterMetadata)
18960ImmBorrowField[1](RouterMetadata.amount: u64)
19162MoveLoc[4](Arg4: address)
19263MoveLoc[6](Arg6: &mut TxContext)
19465Call events::emit_swap_completed_event(vector<u8>, u64, vector<u8>, u64, address, &TxContext)
19566MoveLoc[9](loc2: Coin<Ty1>)
199public initiate_path<Ty0, Ty1>(Arg0: &mut RouterCap<Ty0, Ty1>, Arg1: u64, Arg2: &mut TxContext): Coin<Ty0> {
2010CopyLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
2032Call assert_previous_swap_was_valid<Ty0, Ty1>(&RouterCap<Ty0, Ty1>)
2043CopyLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
2054Call update_final_swap_metadata<Ty0, Ty1>(&mut RouterCap<Ty0, Ty1>)
2065CopyLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
2076Call utils::type_to_bytes<Ty0>(): vector<u8>
2087CopyLoc[1](Arg1: u64)
2098Call update_previous_swap_metadata<Ty0, Ty1>(&mut RouterCap<Ty0, Ty1>, vector<u8>, u64)
2109MoveLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
21110MutBorrowFieldGeneric[0](RouterCap.coin_in: Coin<Ty0>)
21211MoveLoc[1](Arg1: u64)
21312MoveLoc[2](Arg2: &mut TxContext)
21413Call coin::split<Ty0>(&mut Coin<Ty0>, u64, &mut TxContext): Coin<Ty0>
218public initiate_path_by_percent<Ty0, Ty1>(Arg0: &mut RouterCap<Ty0, Ty1>, Arg1: u64, Arg2: &mut TxContext): Coin<Ty0> {
2220CopyLoc[1](Arg1: u64)
2274CopyLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
2285ImmBorrowFieldGeneric[0](RouterCap.coin_in: Coin<Ty0>)
2296Call coin::value<Ty0>(&Coin<Ty0>): u64
2339CopyLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
23410ImmBorrowFieldGeneric[1](RouterCap.first_swap: RouterMetadata)
23511ImmBorrowField[1](RouterMetadata.amount: u64)
23713MoveLoc[1](Arg1: u64)
23814Call calculate_percentage(u64, u64): u64
23915CopyLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
24016ImmBorrowFieldGeneric[0](RouterCap.coin_in: Coin<Ty0>)
24117Call coin::value<Ty0>(&Coin<Ty0>): u64
24218Call u64::min(u64, u64): u64
24520MoveLoc[3](loc0: u64)
24722MoveLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
24823MoveLoc[4](loc1: u64)
24924MoveLoc[2](Arg2: &mut TxContext)
25025Call initiate_path<Ty0, Ty1>(&mut RouterCap<Ty0, Ty1>, u64, &mut TxContext): Coin<Ty0>
254is_valid_final_swap<Ty0, Ty1>(Arg0: &RouterCap<Ty0, Ty1>): bool {
2570CopyLoc[0](Arg0: &RouterCap<Ty0, Ty1>)
2581ImmBorrowFieldGeneric[2](RouterCap.previous_swap: RouterMetadata)
2592ImmBorrowField[0](RouterMetadata.typeName: vector<u8>)
2614CopyLoc[0](Arg0: &RouterCap<Ty0, Ty1>)
2625ImmBorrowFieldGeneric[3](RouterCap.final_swap: RouterMetadata)
2636ImmBorrowField[0](RouterMetadata.typeName: vector<u8>)
26810MoveLoc[0](Arg0: &RouterCap<Ty0, Ty1>)
27113StLoc[1](loc0: bool)
27415MoveLoc[0](Arg0: &RouterCap<Ty0, Ty1>)
27516ImmBorrowFieldGeneric[2](RouterCap.previous_swap: RouterMetadata)
27617ImmBorrowField[1](RouterMetadata.amount: u64)
28021StLoc[1](loc0: bool)
28222MoveLoc[1](loc0: bool)
286is_valid_swap<Ty0, Ty1>(Arg0: &RouterCap<Ty0, Ty1>, Arg1: &Coin<Ty1>): bool {
2890CopyLoc[0](Arg0: &RouterCap<Ty0, Ty1>)
2901ImmBorrowFieldGeneric[2](RouterCap.previous_swap: RouterMetadata)
2912ImmBorrowField[0](RouterMetadata.typeName: vector<u8>)
2934Call utils::type_to_bytes<Ty1>(): vector<u8>
2977MoveLoc[0](Arg0: &RouterCap<Ty0, Ty1>)
2988ImmBorrowFieldGeneric[2](RouterCap.previous_swap: RouterMetadata)
2999ImmBorrowField[1](RouterMetadata.amount: u64)
30111MoveLoc[1](Arg1: &Coin<Ty1>)
30212Call coin::value<Ty1>(&Coin<Ty1>): u64
30414StLoc[2](loc0: bool)
30716MoveLoc[0](Arg0: &RouterCap<Ty0, Ty1>)
30918MoveLoc[1](Arg1: &Coin<Ty1>)
31221StLoc[2](loc0: bool)
31422MoveLoc[2](loc0: bool)
318public(friend) update_final_swap_metadata<Ty0, Ty1>(Arg0: &mut RouterCap<Ty0, Ty1>) {
3200CopyLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
3211ImmBorrowFieldGeneric[3](RouterCap.final_swap: RouterMetadata)
3222ImmBorrowField[1](RouterMetadata.amount: u64)
3244CopyLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
3255ImmBorrowFieldGeneric[2](RouterCap.previous_swap: RouterMetadata)
3266ImmBorrowField[1](RouterMetadata.amount: u64)
3299MoveLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
33010MutBorrowFieldGeneric[3](RouterCap.final_swap: RouterMetadata)
33111MutBorrowField[1](RouterMetadata.amount: u64)
336public update_path_metadata<Ty0, Ty1>(Arg0: &mut RouterCap<Ty0, Ty1>, Arg1: Coin<Ty1>) {
3390ImmBorrowLoc[1](Arg1: Coin<Ty1>)
3401Call coin::value<Ty1>(&Coin<Ty1>): u64
3423CopyLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
3434MutBorrowFieldGeneric[4](RouterCap.coin_out: Coin<Ty1>)
3445MoveLoc[1](Arg1: Coin<Ty1>)
3456Call coin::join<Ty1>(&mut Coin<Ty1>, Coin<Ty1>)
3467MoveLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
3478Call utils::type_to_bytes<Ty1>(): vector<u8>
3489MoveLoc[2](loc0: u64)
34910Call update_previous_swap_metadata<Ty0, Ty1>(&mut RouterCap<Ty0, Ty1>, vector<u8>, u64)
353public(friend) update_previous_swap_metadata<Ty0, Ty1>(Arg0: &mut RouterCap<Ty0, Ty1>, Arg1: vector<u8>, Arg2: u64) {
3550MoveLoc[1](Arg1: vector<u8>)
3561MoveLoc[2](Arg2: u64)
3572Pack[1](RouterMetadata)
3583MoveLoc[0](Arg0: &mut RouterCap<Ty0, Ty1>)
3594MutBorrowFieldGeneric[2](RouterCap.previous_swap: RouterMetadata)
365 0 => vector<u8>: "" // interpreted as UTF8 string