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

Move path
0x0000…0002::scratch
Functions
1811 public, 0 entry
Structs
3
Friend modules
None
scratch

Bytecode257 lines

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

// Move bytecode v7
module 2.scratch {
use 0000000000000000000000000000000000000000000000000000000000000001::internal;
use 0000000000000000000000000000000000000000000000000000000000000001::option;
use 0000000000000000000000000000000000000000000000000000000000000002::dynamic_field;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
 
struct Permit<phantom Ty0: copy + drop> has copy, drop {
dummy_field: bool
}
 
struct BorrowMarker<phantom Ty0: drop> has drop {
pos0: u64
}
 
struct BorrowMarkerKey has copy, drop {
dummy_field: bool
}
 
public permit<Ty0: copy + drop>(Arg0: Permit<Ty0>): Permit<Ty0> {
B0:
0LdFalse
1PackGeneric[0](Permit<Ty0>)
2Ret
}
 
public add<Ty0: copy + drop, Ty1: drop>(Arg0: &mut TxContext, Arg1: Permit<Ty0>, Arg2: Ty0, Arg3: Ty1) {
B0:
0MoveLoc[2](Arg2: Ty0)
1Call hash_type_and_key<Ty0>(Ty0): address
2MoveLoc[3](Arg3: Ty1)
3Call add_impl<Ty1>(address, Ty1)
4Ret
}
 
public read<Ty0: copy + drop, Ty1: copy + drop>(Arg0: &TxContext, Arg1: Permit<Ty0>, Arg2: Ty0): Ty1 {
B0:
0MoveLoc[2](Arg2: Ty0)
1Call hash_type_and_key<Ty0>(Ty0): address
2Call read_impl<Ty1>(address): Ty1
3Ret
}
 
public remove<Ty0: copy + drop, Ty1: drop>(Arg0: &mut TxContext, Arg1: Permit<Ty0>, Arg2: Ty0): Ty1 {
B0:
0MoveLoc[2](Arg2: Ty0)
1Call hash_type_and_key<Ty0>(Ty0): address
2Call remove_impl<Ty1>(address): Ty1
3Ret
}
 
public exists<Ty0: copy + drop>(Arg0: &TxContext, Arg1: Permit<Ty0>, Arg2: Ty0): bool {
B0:
0MoveLoc[2](Arg2: Ty0)
1Call hash_type_and_key<Ty0>(Ty0): address
2Call exists_impl(address): bool
3Ret
}
 
public exists_with_type<Ty0: copy + drop, Ty1: drop>(Arg0: &TxContext, Arg1: Permit<Ty0>, Arg2: Ty0): bool {
B0:
0MoveLoc[2](Arg2: Ty0)
1Call hash_type_and_key<Ty0>(Ty0): address
2Call exists_with_type_impl<Ty1>(address): bool
3Ret
}
 
public read_opt<Ty0: copy + drop, Ty1: copy + drop>(Arg0: &TxContext, Arg1: Permit<Ty0>, Arg2: Ty0): Option<Ty1> {
L3: loc0: Option<Ty1>
B0:
0CopyLoc[0](Arg0: &TxContext)
1CopyLoc[1](Arg1: Permit<Ty0>)
2CopyLoc[2](Arg2: Ty0)
3Call exists<Ty0>(&TxContext, Permit<Ty0>, Ty0): bool
4BrFalse(12)
B1:
5MoveLoc[0](Arg0: &TxContext)
6MoveLoc[1](Arg1: Permit<Ty0>)
7MoveLoc[2](Arg2: Ty0)
8Call read<Ty0, Ty1>(&TxContext, Permit<Ty0>, Ty0): Ty1
9Call option::some<Ty1>(Ty1): Option<Ty1>
10StLoc[3](loc0: Option<Ty1>)
11Branch(16)
B2:
12MoveLoc[0](Arg0: &TxContext)
13Pop
14Call option::none<Ty1>(): Option<Ty1>
15StLoc[3](loc0: Option<Ty1>)
B3:
16MoveLoc[3](loc0: Option<Ty1>)
17Ret
}
 
public remove_opt<Ty0: copy + drop, Ty1: drop>(Arg0: &mut TxContext, Arg1: Permit<Ty0>, Arg2: Ty0): Option<Ty1> {
L3: loc0: Option<Ty1>
B0:
0CopyLoc[0](Arg0: &mut TxContext)
1FreezeRef
2CopyLoc[1](Arg1: Permit<Ty0>)
3CopyLoc[2](Arg2: Ty0)
4Call exists<Ty0>(&TxContext, Permit<Ty0>, Ty0): bool
5BrFalse(13)
B1:
6MoveLoc[0](Arg0: &mut TxContext)
7MoveLoc[1](Arg1: Permit<Ty0>)
8MoveLoc[2](Arg2: Ty0)
9Call remove<Ty0, Ty1>(&mut TxContext, Permit<Ty0>, Ty0): Ty1
10Call option::some<Ty1>(Ty1): Option<Ty1>
11StLoc[3](loc0: Option<Ty1>)
12Branch(17)
B2:
13MoveLoc[0](Arg0: &mut TxContext)
14Pop
15Call option::none<Ty1>(): Option<Ty1>
16StLoc[3](loc0: Option<Ty1>)
B3:
17MoveLoc[3](loc0: Option<Ty1>)
18Ret
}
 
public replace<Ty0: copy + drop, Ty1: drop, Ty2: drop>(Arg0: &mut TxContext, Arg1: Permit<Ty0>, Arg2: Ty0, Arg3: Ty1): Option<Ty2> {
L4: loc0: Option<Ty2>
B0:
0CopyLoc[0](Arg0: &mut TxContext)
1CopyLoc[1](Arg1: Permit<Ty0>)
2CopyLoc[2](Arg2: Ty0)
3Call remove_opt<Ty0, Ty2>(&mut TxContext, Permit<Ty0>, Ty0): Option<Ty2>
4StLoc[4](loc0: Option<Ty2>)
5MoveLoc[0](Arg0: &mut TxContext)
6MoveLoc[1](Arg1: Permit<Ty0>)
7MoveLoc[2](Arg2: Ty0)
8MoveLoc[3](Arg3: Ty1)
9Call add<Ty0, Ty1>(&mut TxContext, Permit<Ty0>, Ty0, Ty1)
10MoveLoc[4](loc0: Option<Ty2>)
11Ret
}
 
public begin_borrow<Ty0: copy + drop, Ty1: drop>(Arg0: &mut TxContext, Arg1: Permit<Ty0>, Arg2: Ty0): Ty1 * BorrowMarker<Ty1> {
L3: loc0: BorrowMarker<Ty1>
L4: loc1: Ty1
B0:
0CopyLoc[0](Arg0: &mut TxContext)
1CopyLoc[1](Arg1: Permit<Ty0>)
2CopyLoc[2](Arg2: Ty0)
3Call remove<Ty0, Ty1>(&mut TxContext, Permit<Ty0>, Ty0): Ty1
4StLoc[4](loc1: Ty1)
5CopyLoc[0](Arg0: &mut TxContext)
6Call borrow_marker<Ty1>(&mut TxContext): BorrowMarker<Ty1>
7StLoc[3](loc0: BorrowMarker<Ty1>)
8MoveLoc[0](Arg0: &mut TxContext)
9MoveLoc[1](Arg1: Permit<Ty0>)
10MoveLoc[2](Arg2: Ty0)
11ImmBorrowLoc[3](loc0: BorrowMarker<Ty1>)
12ImmBorrowFieldGeneric[0](BorrowMarker.pos0: u64)
13ReadRef
14PackGeneric[1](BorrowMarker<Ty1>)
15Call add<Ty0, BorrowMarker<Ty1>>(&mut TxContext, Permit<Ty0>, Ty0, BorrowMarker<Ty1>)
16MoveLoc[4](loc1: Ty1)
17MoveLoc[3](loc0: BorrowMarker<Ty1>)
18Ret
}
 
public end_borrow<Ty0: copy + drop, Ty1: drop>(Arg0: &mut TxContext, Arg1: Permit<Ty0>, Arg2: Ty0, Arg3: Ty1, Arg4: BorrowMarker<Ty1>) {
B0:
0CopyLoc[0](Arg0: &mut TxContext)
1CopyLoc[1](Arg1: Permit<Ty0>)
2CopyLoc[2](Arg2: Ty0)
3Call remove<Ty0, BorrowMarker<Ty1>>(&mut TxContext, Permit<Ty0>, Ty0): BorrowMarker<Ty1>
4MoveLoc[4](Arg4: BorrowMarker<Ty1>)
5Eq
6BrFalse(8)
B1:
7Branch(12)
B2:
8MoveLoc[0](Arg0: &mut TxContext)
9Pop
10LdConst[4](u64: 3)
11Abort
B3:
12MoveLoc[0](Arg0: &mut TxContext)
13MoveLoc[1](Arg1: Permit<Ty0>)
14MoveLoc[2](Arg2: Ty0)
15MoveLoc[3](Arg3: Ty1)
16Call add<Ty0, Ty1>(&mut TxContext, Permit<Ty0>, Ty0, Ty1)
17Ret
}
 
borrow_marker<Ty0: drop>(Arg0: &mut TxContext): BorrowMarker<Ty0> {
L1: loc0: u64
L2: loc1: BorrowMarkerKey
L3: loc2: u64
L4: loc3: Permit<BorrowMarkerKey>
B0:
0Call internal::permit<BorrowMarkerKey>(): Permit<BorrowMarkerKey>
1Call permit<BorrowMarkerKey>(Permit<BorrowMarkerKey>): Permit<BorrowMarkerKey>
2StLoc[4](loc3: Permit<BorrowMarkerKey>)
3LdFalse
4Pack[2](BorrowMarkerKey)
5StLoc[2](loc1: BorrowMarkerKey)
6CopyLoc[0](Arg0: &mut TxContext)
7FreezeRef
8CopyLoc[4](loc3: Permit<BorrowMarkerKey>)
9CopyLoc[2](loc1: BorrowMarkerKey)
10Call exists<BorrowMarkerKey>(&TxContext, Permit<BorrowMarkerKey>, BorrowMarkerKey): bool
11BrFalse(18)
B1:
12CopyLoc[0](Arg0: &mut TxContext)
13CopyLoc[4](loc3: Permit<BorrowMarkerKey>)
14CopyLoc[2](loc1: BorrowMarkerKey)
15Call remove<BorrowMarkerKey, u64>(&mut TxContext, Permit<BorrowMarkerKey>, BorrowMarkerKey): u64
16StLoc[1](loc0: u64)
17Branch(20)
B2:
18LdU64(0)
19StLoc[1](loc0: u64)
B3:
20MoveLoc[1](loc0: u64)
21StLoc[3](loc2: u64)
22MoveLoc[0](Arg0: &mut TxContext)
23MoveLoc[4](loc3: Permit<BorrowMarkerKey>)
24MoveLoc[2](loc1: BorrowMarkerKey)
25CopyLoc[3](loc2: u64)
26LdU64(1)
27Add
28Call add<BorrowMarkerKey, u64>(&mut TxContext, Permit<BorrowMarkerKey>, BorrowMarkerKey, u64)
29MoveLoc[3](loc2: u64)
30PackGeneric[2](BorrowMarker<Ty0>)
31Ret
}
 
hash_type_and_key<Ty0: copy + drop>(Arg0: Ty0): address {
B0:
0LdConst[0](address: 0x00..)
1MoveLoc[0](Arg0: Ty0)
2Call dynamic_field::hash_type_and_key<Ty0>(address, Ty0): address
3Ret
}
 
native add_impl<Ty0: drop>(Arg0: address, Arg1: Ty0);
 
native read_impl<Ty0: copy + drop>(Arg0: address): Ty0;
 
native remove_impl<Ty0: drop>(Arg0: address): Ty0;
 
native exists_impl(Arg0: address): bool;
 
native exists_with_type_impl<Ty0: drop>(Arg0: address): bool;
 
Constants [
0 => address: 0x0000000000000000000000000000000000000000000000000000000000000000
1 => u64: 0
2 => u64: 1
3 => u64: 2
4 => u64: 3
]
}