2023-03-21 05:54:29 +01:00
|
|
|
global sys_balance:
|
|
|
|
|
// stack: kexit_info, address
|
2023-03-23 20:22:25 +01:00
|
|
|
SWAP1 %u256_to_addr
|
|
|
|
|
// stack: address, kexit_info
|
|
|
|
|
DUP1 %insert_accessed_addresses
|
|
|
|
|
// stack: cold_access, address, kexit_info
|
|
|
|
|
PUSH @GAS_COLDACCOUNTACCESS_MINUS_WARMACCESS
|
|
|
|
|
MUL
|
|
|
|
|
PUSH @GAS_WARMACCESS
|
|
|
|
|
ADD
|
|
|
|
|
%stack (gas, address, kexit_info) -> (gas, kexit_info, address)
|
|
|
|
|
%charge_gas
|
|
|
|
|
// stack: kexit_info, address
|
|
|
|
|
|
2023-03-21 05:54:29 +01:00
|
|
|
SWAP1
|
|
|
|
|
// stack: address, kexit_info
|
|
|
|
|
%balance
|
|
|
|
|
// stack: balance, kexit_info
|
|
|
|
|
SWAP1
|
|
|
|
|
EXIT_KERNEL
|
|
|
|
|
|
|
|
|
|
%macro balance
|
|
|
|
|
%stack (address) -> (address, %%after)
|
|
|
|
|
%jump(balance)
|
|
|
|
|
%%after:
|
|
|
|
|
%endmacro
|
|
|
|
|
|
2022-11-02 10:03:40 +01:00
|
|
|
global balance:
|
|
|
|
|
// stack: address, retdest
|
2022-10-28 11:15:43 +02:00
|
|
|
%mpt_read_state_trie
|
2022-11-02 10:03:40 +01:00
|
|
|
// stack: account_ptr, retdest
|
|
|
|
|
DUP1 ISZERO %jumpi(retzero) // If the account pointer is null, return 0.
|
2022-10-28 11:15:43 +02:00
|
|
|
%add_const(1)
|
2022-12-06 23:05:47 -08:00
|
|
|
// stack: balance_ptr, retdest
|
2022-10-28 11:15:43 +02:00
|
|
|
%mload_trie_data
|
|
|
|
|
// stack: balance, retdest
|
|
|
|
|
SWAP1 JUMP
|
|
|
|
|
|
2022-11-02 10:03:40 +01:00
|
|
|
retzero:
|
|
|
|
|
%stack (account_ptr, retdest) -> (retdest, 0)
|
|
|
|
|
JUMP
|
|
|
|
|
|
2023-03-21 05:54:29 +01:00
|
|
|
global sys_selfbalance:
|
|
|
|
|
// stack: kexit_info
|
|
|
|
|
%charge_gas_const(@GAS_LOW)
|
|
|
|
|
%selfbalance
|
|
|
|
|
// stack: balance, kexit_info
|
|
|
|
|
SWAP1
|
|
|
|
|
EXIT_KERNEL
|
2022-11-02 10:03:40 +01:00
|
|
|
|
2023-03-21 05:54:29 +01:00
|
|
|
%macro selfbalance
|
|
|
|
|
PUSH %%after
|
2022-11-02 10:03:40 +01:00
|
|
|
%address
|
2023-03-21 05:54:29 +01:00
|
|
|
%jump(balance)
|
|
|
|
|
%%after:
|
2023-03-20 21:40:58 -07:00
|
|
|
%endmacro
|