Sui Framework
scratch
- Move path
- 0x0000…0002::scratch
- Functions
- 1811 public, 0 entry
- Structs
- 3
- Friend modules
- None
scratch
- accumulator18
- accumulator_metadata2
- accumulator_settlement8
- address10
- address_alias5
- allowance40
- authenticator_state13
- bag10
- balance18
- bcs30
- bls1238143
- borrow4
- clock3
- coin54
- coin_registry43
- config11
- deny_list21
- derived_object3
- display14
- display_registry18
- dynamic_field19
- dynamic_object_field15
- ecdsa_k13
- ecdsa_r12
- ecvrf1
- ed255191
- event3
- forwarding_address1
- funds_accumulator12
- groth1610
- group_ops23
- hash2
- hex3
- hmac1
- kiosk41
- kiosk_extension14
- linked_table19
- math7
- nitro_attestation11
- object32
- object_bag11
- object_table10
- package26
- party5
- pay8
- poseidon2
- priority_queue8
- protocol_config1
- prover0
- random20
- rangeproofs3
- ristretto25518
- scratch18
- sui2
- table10
- table_vec12
- token45
- transfer16
- transfer_policy18
- tx_context19
- types1
- url4
- vdf4
- vec_map20
- vec_set11
- versioned7
- zklogin_verified_id9
- zklogin_verified_issuer6
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
]
}