address_alias
Module0x0000…0002
- Move path
- 0x0000…0002::address_alias
- Functions
- 50 public, 4 entry
- Structs
- 3
- Friend modules
- None
address_alias
- 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
Bytecode207 lines
The on-chain disassembly. Offsets are bytecode positions within each function.
// Move bytecode v7
module 2.address_alias {
use 0000000000000000000000000000000000000000000000000000000000000002::derived_object;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::party;
use 0000000000000000000000000000000000000000000000000000000000000002::transfer;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
use 0000000000000000000000000000000000000000000000000000000000000002::vec_set;
struct AddressAliasState has key {
id: UID,
version: u64
}
struct AddressAliases has key {
id: UID,
aliases: VecSet<address>
}
struct AliasKey has copy, drop, store {
pos0: address
}
create(Arg0: &TxContext) {
B0:
0MoveLoc[0](Arg0: &TxContext)
1Call tx_context::sender(&TxContext): address
2LdConst[12](address: 0x00..)
3Eq
4BrFalse(6)
B1:
5Branch(8)
B2:
6LdU64(13835058231375822849)
7Abort
B3:
8Call object::address_alias_state(): UID
9LdConst[10](u64: 0)
10Pack[0](AddressAliasState)
11Call transfer::share_object<AddressAliasState>(AddressAliasState)
12Ret
}
entry enable(Arg0: &mut AddressAliasState, Arg1: &TxContext) {
B0:
0CopyLoc[0](Arg0: &mut AddressAliasState)
1ImmBorrowField[0](AddressAliasState.id: UID)
2CopyLoc[1](Arg1: &TxContext)
3Call tx_context::sender(&TxContext): address
4Pack[2](AliasKey)
5Call derived_object::exists<AliasKey>(&UID, AliasKey): bool
6Not
7BrFalse(9)
B1:
8Branch(15)
B2:
9MoveLoc[1](Arg1: &TxContext)
10Pop
11MoveLoc[0](Arg0: &mut AddressAliasState)
12Pop
13LdU64(13835621305883557893)
14Abort
B3:
15MoveLoc[0](Arg0: &mut AddressAliasState)
16MutBorrowField[0](AddressAliasState.id: UID)
17CopyLoc[1](Arg1: &TxContext)
18Call tx_context::sender(&TxContext): address
19Pack[2](AliasKey)
20Call derived_object::claim<AliasKey>(&mut UID, AliasKey): UID
21CopyLoc[1](Arg1: &TxContext)
22Call tx_context::sender(&TxContext): address
23Call vec_set::singleton<address>(address): VecSet<address>
24Pack[1](AddressAliases)
25MoveLoc[1](Arg1: &TxContext)
26Call tx_context::sender(&TxContext): address
27Call party::single_owner(address): Party
28Call transfer::party_transfer<AddressAliases>(AddressAliases, Party)
29Ret
}
entry add(Arg0: &mut AddressAliases, Arg1: address) {
B0:
0CopyLoc[0](Arg0: &mut AddressAliases)
1ImmBorrowField[1](AddressAliases.aliases: VecSet<address>)
2ImmBorrowLoc[1](Arg1: address)
3Call vec_set::contains<address>(&VecSet<address>, &address): bool
4Not
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[0](Arg0: &mut AddressAliases)
8Pop
9LdU64(13835621361718132741)
10Abort
B3:
11CopyLoc[0](Arg0: &mut AddressAliases)
12MutBorrowField[1](AddressAliases.aliases: VecSet<address>)
13MoveLoc[1](Arg1: address)
14Call vec_set::insert<address>(&mut VecSet<address>, address)
15MoveLoc[0](Arg0: &mut AddressAliases)
16ImmBorrowField[1](AddressAliases.aliases: VecSet<address>)
17Call vec_set::length<address>(&VecSet<address>): u64
18LdConst[11](u64: 8)
19Le
20BrFalse(22)
B4:
21Branch(24)
B5:
22LdU64(13836184320261750793)
23Abort
B6:
24Ret
}
entry replace_all(Arg0: &mut AddressAliases, Arg1: vector<address>) {
L2: loc0: VecSet<address>
B0:
0MoveLoc[1](Arg1: vector<address>)
1Call vec_set::from_keys<address>(vector<address>): VecSet<address>
2StLoc[2](loc0: VecSet<address>)
3ImmBorrowLoc[2](loc0: VecSet<address>)
4Call vec_set::length<address>(&VecSet<address>): u64
5LdU64(0)
6Gt
7BrFalse(9)
B1:
8Branch(13)
B2:
9MoveLoc[0](Arg0: &mut AddressAliases)
10Pop
11LdU64(13835902871054712839)
12Abort
B3:
13ImmBorrowLoc[2](loc0: VecSet<address>)
14Call vec_set::length<address>(&VecSet<address>): u64
15LdConst[11](u64: 8)
16Le
17BrFalse(19)
B4:
18Branch(23)
B5:
19MoveLoc[0](Arg0: &mut AddressAliases)
20Pop
21LdU64(13836184350326521865)
22Abort
B6:
23MoveLoc[2](loc0: VecSet<address>)
24MoveLoc[0](Arg0: &mut AddressAliases)
25MutBorrowField[1](AddressAliases.aliases: VecSet<address>)
26WriteRef
27Ret
}
entry remove(Arg0: &mut AddressAliases, Arg1: address) {
B0:
0CopyLoc[0](Arg0: &mut AddressAliases)
1ImmBorrowField[1](AddressAliases.aliases: VecSet<address>)
2ImmBorrowLoc[1](Arg1: address)
3Call vec_set::contains<address>(&VecSet<address>, &address): bool
4BrFalse(6)
B1:
5Branch(10)
B2:
6MoveLoc[0](Arg0: &mut AddressAliases)
7Pop
8LdU64(13835339951165800451)
9Abort
B3:
10CopyLoc[0](Arg0: &mut AddressAliases)
11ImmBorrowField[1](AddressAliases.aliases: VecSet<address>)
12Call vec_set::length<address>(&VecSet<address>): u64
13LdU64(1)
14Gt
15BrFalse(17)
B4:
16Branch(21)
B5:
17MoveLoc[0](Arg0: &mut AddressAliases)
18Pop
19LdU64(13835902905414451207)
20Abort
B6:
21MoveLoc[0](Arg0: &mut AddressAliases)
22MutBorrowField[1](AddressAliases.aliases: VecSet<address>)
23ImmBorrowLoc[1](Arg1: address)
24Call vec_set::remove<address>(&mut VecSet<address>, &address)
25Ret
}
Constants [
0 => vector<u8>: "ENotSystemAddress" // interpreted as UTF8 string
1 => vector<u8>: "Only the system can create the alias state object." // interpreted as UTF8 string
2 => vector<u8>: "ENoSuchAlias" // interpreted as UTF8 string
3 => vector<u8>: "Given alias does not exist." // interpreted as UTF8 string
4 => vector<u8>: "EAliasAlreadyExists" // interpreted as UTF8 string
5 => vector<u8>: "Alias already exists." // interpreted as UTF8 string
6 => vector<u8>: "ECannotRemoveLastAlias" // interpreted as UTF8 string
7 => vector<u8>: "Cannot remove the last alias." // interpreted as UTF8 string
8 => vector<u8>: "ETooManyAliases" // interpreted as UTF8 string
9 => vector<u8>: "The number of aliases exceeds the maximum allowed." // interpreted as UTF8 string
10 => u64: 0
11 => u64: 8
12 => address: 0x0000000000000000000000000000000000000000000000000000000000000000
]
}