balance
Module0x0000…0002
- Move path
- 0x0000…0002::balance
- Functions
- 1814 public, 0 entry
- Structs
- 2
balance
- 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
Bytecode330 lines
The on-chain disassembly. Offsets are instruction numbers within each function.
// Move bytecode v7
module 2.balance {
use 0000000000000000000000000000000000000000000000000000000000000001::ascii;
use 0000000000000000000000000000000000000000000000000000000000000001::internal;
use 0000000000000000000000000000000000000000000000000000000000000001::type_name;
use 0000000000000000000000000000000000000000000000000000000000000001::u128;
use 0000000000000000000000000000000000000000000000000000000000000002::accumulator;
use 0000000000000000000000000000000000000000000000000000000000000002::funds_accumulator;
use 0000000000000000000000000000000000000000000000000000000000000002::object;
use 0000000000000000000000000000000000000000000000000000000000000002::tx_context;
struct Supply<phantom Ty0> has store {
value: u64
}
struct Balance<phantom Ty0> has store {
value: u64
}
public value<Ty0>(Arg0: &Balance<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &Balance<Ty0>)
1ImmBorrowFieldGeneric[0](Balance.value: u64)
2ReadRef
3Ret
}
public supply_value<Ty0>(Arg0: &Supply<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: &Supply<Ty0>)
1ImmBorrowFieldGeneric[1](Supply.value: u64)
2ReadRef
3Ret
}
public create_supply<Ty0: drop>(Arg0: Ty0): Supply<Ty0> {
B0:
0LdU64(0)
1PackGeneric[0](Supply<Ty0>)
2Ret
}
public increase_supply<Ty0>(Arg0: &mut Supply<Ty0>, Arg1: u64): Balance<Ty0> {
B0:
0CopyLoc[1](Arg1: u64)
1LdU64(18446744073709551615)
2CopyLoc[0](Arg0: &mut Supply<Ty0>)
3ImmBorrowFieldGeneric[1](Supply.value: u64)
4ReadRef
5Sub
6Le
7BrFalse(9)
B1:
8Branch(13)
B2:
9MoveLoc[0](Arg0: &mut Supply<Ty0>)
10Pop
11LdConst[1](u64: 1)
12Abort
B3:
13CopyLoc[0](Arg0: &mut Supply<Ty0>)
14ImmBorrowFieldGeneric[1](Supply.value: u64)
15ReadRef
16CopyLoc[1](Arg1: u64)
17Add
18MoveLoc[0](Arg0: &mut Supply<Ty0>)
19MutBorrowFieldGeneric[1](Supply.value: u64)
20WriteRef
21MoveLoc[1](Arg1: u64)
22PackGeneric[1](Balance<Ty0>)
23Ret
}
public decrease_supply<Ty0>(Arg0: &mut Supply<Ty0>, Arg1: Balance<Ty0>): u64 {
L2: loc0: u64
B0:
0MoveLoc[1](Arg1: Balance<Ty0>)
1UnpackGeneric[1](Balance<Ty0>)
2StLoc[2](loc0: u64)
3CopyLoc[0](Arg0: &mut Supply<Ty0>)
4ImmBorrowFieldGeneric[1](Supply.value: u64)
5ReadRef
6CopyLoc[2](loc0: u64)
7Ge
8BrFalse(10)
B1:
9Branch(14)
B2:
10MoveLoc[0](Arg0: &mut Supply<Ty0>)
11Pop
12LdConst[1](u64: 1)
13Abort
B3:
14CopyLoc[0](Arg0: &mut Supply<Ty0>)
15ImmBorrowFieldGeneric[1](Supply.value: u64)
16ReadRef
17CopyLoc[2](loc0: u64)
18Sub
19MoveLoc[0](Arg0: &mut Supply<Ty0>)
20MutBorrowFieldGeneric[1](Supply.value: u64)
21WriteRef
22MoveLoc[2](loc0: u64)
23Ret
}
public zero<Ty0>(): Balance<Ty0> {
B0:
0LdU64(0)
1PackGeneric[1](Balance<Ty0>)
2Ret
}
public join<Ty0>(Arg0: &mut Balance<Ty0>, Arg1: Balance<Ty0>): u64 {
L2: loc0: u64
B0:
0MoveLoc[1](Arg1: Balance<Ty0>)
1UnpackGeneric[1](Balance<Ty0>)
2StLoc[2](loc0: u64)
3CopyLoc[0](Arg0: &mut Balance<Ty0>)
4ImmBorrowFieldGeneric[0](Balance.value: u64)
5ReadRef
6MoveLoc[2](loc0: u64)
7Add
8CopyLoc[0](Arg0: &mut Balance<Ty0>)
9MutBorrowFieldGeneric[0](Balance.value: u64)
10WriteRef
11MoveLoc[0](Arg0: &mut Balance<Ty0>)
12ImmBorrowFieldGeneric[0](Balance.value: u64)
13ReadRef
14Ret
}
public split<Ty0>(Arg0: &mut Balance<Ty0>, Arg1: u64): Balance<Ty0> {
B0:
0CopyLoc[0](Arg0: &mut Balance<Ty0>)
1ImmBorrowFieldGeneric[0](Balance.value: u64)
2ReadRef
3CopyLoc[1](Arg1: u64)
4Ge
5BrFalse(7)
B1:
6Branch(11)
B2:
7MoveLoc[0](Arg0: &mut Balance<Ty0>)
8Pop
9LdConst[2](u64: 2)
10Abort
B3:
11CopyLoc[0](Arg0: &mut Balance<Ty0>)
12ImmBorrowFieldGeneric[0](Balance.value: u64)
13ReadRef
14CopyLoc[1](Arg1: u64)
15Sub
16MoveLoc[0](Arg0: &mut Balance<Ty0>)
17MutBorrowFieldGeneric[0](Balance.value: u64)
18WriteRef
19MoveLoc[1](Arg1: u64)
20PackGeneric[1](Balance<Ty0>)
21Ret
}
public withdraw_all<Ty0>(Arg0: &mut Balance<Ty0>): Balance<Ty0> {
L1: loc0: u64
B0:
0CopyLoc[0](Arg0: &mut Balance<Ty0>)
1ImmBorrowFieldGeneric[0](Balance.value: u64)
2ReadRef
3StLoc[1](loc0: u64)
4MoveLoc[0](Arg0: &mut Balance<Ty0>)
5MoveLoc[1](loc0: u64)
6Call split<Ty0>(&mut Balance<Ty0>, u64): Balance<Ty0>
7Ret
}
public destroy_zero<Ty0>(Arg0: Balance<Ty0>) {
B0:
0ImmBorrowLoc[0](Arg0: Balance<Ty0>)
1ImmBorrowFieldGeneric[0](Balance.value: u64)
2ReadRef
3LdU64(0)
4Eq
5BrFalse(7)
B1:
6Branch(9)
B2:
7LdConst[0](u64: 0)
8Abort
B3:
9MoveLoc[0](Arg0: Balance<Ty0>)
10UnpackGeneric[1](Balance<Ty0>)
11Pop
12Ret
}
public send_funds<Ty0>(Arg0: Balance<Ty0>, Arg1: address) {
B0:
0MoveLoc[0](Arg0: Balance<Ty0>)
1MoveLoc[1](Arg1: address)
2Call funds_accumulator::add_impl<Balance<Ty0>>(Balance<Ty0>, address)
3Ret
}
public redeem_funds<Ty0>(Arg0: Withdrawal<Balance<Ty0>>): Balance<Ty0> {
B0:
0MoveLoc[0](Arg0: Withdrawal<Balance<Ty0>>)
1Call internal::permit<Balance<Ty0>>(): Permit<Balance<Ty0>>
2Call funds_accumulator::redeem<Balance<Ty0>>(Withdrawal<Balance<Ty0>>, Permit<Balance<Ty0>>): Balance<Ty0>
3Ret
}
public withdraw_funds_from_object<Ty0>(Arg0: &mut UID, Arg1: u64): Withdrawal<Balance<Ty0>> {
B0:
0MoveLoc[0](Arg0: &mut UID)
1MoveLoc[1](Arg1: u64)
2CastU256
3Call funds_accumulator::withdraw_from_object<Balance<Ty0>>(&mut UID, u256): Withdrawal<Balance<Ty0>>
4Ret
}
public settled_funds_value<Ty0>(Arg0: &AccumulatorRoot, Arg1: address): u64 {
L2: loc0: u128
B0:
0CopyLoc[0](Arg0: &AccumulatorRoot)
1CopyLoc[1](Arg1: address)
2Call accumulator::accumulator_u128_exists<Balance<Ty0>>(&AccumulatorRoot, address): bool
3Not
4BrFalse(9)
B1:
5MoveLoc[0](Arg0: &AccumulatorRoot)
6Pop
7LdU64(0)
8Ret
B2:
9MoveLoc[0](Arg0: &AccumulatorRoot)
10MoveLoc[1](Arg1: address)
11Call accumulator::accumulator_u128_read<Balance<Ty0>>(&AccumulatorRoot, address): u128
12StLoc[2](loc0: u128)
13LdU128(18446744073709551615)
14MoveLoc[2](loc0: u128)
15Call u128::min(u128, u128): u128
16CastU64
17Ret
}
public(friend) create_supply_internal<Ty0>(): Supply<Ty0> {
B0:
0LdU64(0)
1PackGeneric[0](Supply<Ty0>)
2Ret
}
create_staking_rewards<Ty0>(Arg0: u64, Arg1: &TxContext): Balance<Ty0> {
B0:
0MoveLoc[1](Arg1: &TxContext)
1Call tx_context::sender(&TxContext): address
2LdConst[6](address: 0x00..)
3Eq
4BrFalse(6)
B1:
5Branch(8)
B2:
6LdConst[3](u64: 3)
7Abort
B3:
8Call type_name::with_defining_ids<Ty0>(): TypeName
9Call type_name::into_string(TypeName): String
10Call ascii::into_bytes(String): vector<u8>
11LdConst[5](vector<u8>: "000..)
12Eq
13BrFalse(15)
B4:
14Branch(17)
B5:
15LdConst[4](u64: 4)
16Abort
B6:
17MoveLoc[0](Arg0: u64)
18PackGeneric[1](Balance<Ty0>)
19Ret
}
destroy_storage_rebates<Ty0>(Arg0: Balance<Ty0>, Arg1: &TxContext) {
B0:
0MoveLoc[1](Arg1: &TxContext)
1Call tx_context::sender(&TxContext): address
2LdConst[6](address: 0x00..)
3Eq
4BrFalse(6)
B1:
5Branch(8)
B2:
6LdConst[3](u64: 3)
7Abort
B3:
8Call type_name::with_defining_ids<Ty0>(): TypeName
9Call type_name::into_string(TypeName): String
10Call ascii::into_bytes(String): vector<u8>
11LdConst[5](vector<u8>: "000..)
12Eq
13BrFalse(15)
B4:
14Branch(17)
B5:
15LdConst[4](u64: 4)
16Abort
B6:
17MoveLoc[0](Arg0: Balance<Ty0>)
18UnpackGeneric[1](Balance<Ty0>)
19Pop
20Ret
}
public(friend) destroy_supply<Ty0>(Arg0: Supply<Ty0>): u64 {
B0:
0MoveLoc[0](Arg0: Supply<Ty0>)
1UnpackGeneric[0](Supply<Ty0>)
2Ret
}
Constants [
0 => u64: 0
1 => u64: 1
2 => u64: 2
3 => u64: 3
4 => u64: 4
5 => vector<u8>: "0000000000000000000000000000000000000000000000000000000000000002::sui::SUI" // interpreted as UTF8 string
6 => address: 0x0000000000000000000000000000000000000000000000000000000000000000
]
}