plonky2/evm/src/cpu/kernel/asm/balance.asm

47 lines
988 B
NASM
Raw Normal View History

global sys_balance:
// stack: kexit_info, address
// TODO: assuming a cold account access for now.
%charge_gas_const(@GAS_COLDACCOUNTACCESS)
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)
// 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
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
%macro selfbalance
PUSH %%after
2022-11-02 10:03:40 +01:00
%address
%jump(balance)
%%after:
2023-03-20 21:40:58 -07:00
%endmacro