EVM API
The EVM API provides access to headers, accounts, storage, transactions, receipts, and logs. All functions live under hdp_cairo::evm::*.
Keys
HeaderKey { chain_id, block_number }AccountKey { chain_id, block_number, address }StorageKey { chain_id, block_number, address, storage_slot }BlockTxKey { chain_id, block_number, transaction_index }BlockReceiptKey { chain_id, block_number, transaction_index }LogKey { chain_id, block_number, transaction_index, log_index }
Chain ID constants:
ETHEREUM_MAINNET_CHAIN_IDETHEREUM_TESTNET_CHAIN_IDOPTIMISM_MAINNET_CHAIN_IDOPTIMISM_TESTNET_CHAIN_ID
Header methods
Available getters:
header_get_parentheader_get_uncleheader_get_coinbaseheader_get_state_rootheader_get_transaction_rootheader_get_receipt_rootheader_get_bloomheader_get_difficultyheader_get_numberheader_get_gas_limitheader_get_gas_usedheader_get_timestampheader_get_mix_hashheader_get_nonceheader_get_base_fee_per_gasheader_get_blob_gas_usedheader_get_excess_blob_gasheader_get_requests_hash
Source: hdp_cairo/src/evm/header.cairo
Return types:
- Most header getters return
u256. header_get_bloomreturns aByteArray(logs bloom).
Not yet exposed:
header_get_extra_dataheader_get_withdrawals_rootheader_get_parent_beacon_block_root
Account methods
account_get_nonceaccount_get_balanceaccount_get_state_rootaccount_get_code_hash
Source: hdp_cairo/src/evm/account.cairo
Return types: all account getters return u256.
Storage methods
storage_get_slot
Source: hdp_cairo/src/evm/storage.cairo
Return type: u256.
Transaction methods
block_tx_get_nonceblock_tx_get_gas_priceblock_tx_get_gas_limitblock_tx_get_receiverblock_tx_get_valueblock_tx_get_vblock_tx_get_rblock_tx_get_sblock_tx_get_chain_idblock_tx_get_max_fee_per_gasblock_tx_get_max_priority_fee_per_gasblock_tx_get_max_fee_per_blob_gasblock_tx_get_tx_typeblock_tx_get_senderblock_tx_get_hash
Source: hdp_cairo/src/evm/block_tx.cairo
Return types: all transaction getters return u256.
Not yet exposed:
block_tx_get_inputblock_tx_get_access_listblock_tx_get_blob_versioned_hashesblock_tx_get_authorization_list
Receipt methods
block_receipt_get_statusblock_receipt_get_cumulative_gas_usedblock_receipt_get_bloom
Source: hdp_cairo/src/evm/block_receipt.cairo
Return types:
- Status and gas used return
u256. block_receipt_get_bloomreturns aByteArray.
Log methods
log_get_addresslog_get_topic0log_get_topic1log_get_topic2log_get_topic3log_get_topic4log_get_data
Source: hdp_cairo/src/evm/log.cairo
Return types:
- Address and topics return
u256. log_get_datareturnsArray<u128>.
Example
use hdp_cairo::HDP;
use hdp_cairo::evm::{ETHEREUM_MAINNET_CHAIN_ID, account::{AccountImpl, AccountKey}};
let key = AccountKey {
chain_id: ETHEREUM_MAINNET_CHAIN_ID,
block_number: 18_500_000,
address: 0x1234,
};
let balance = hdp.evm.account_get_balance(key);