Transactions
Transactions are cryptographically signed instructions from accounts.
An account will initiate a transaction to update the state of the blockchain network. Transactions always originate from an externally owned account (a smart contract can not initiate a transaction). Transactions, which change the state of the EVM, need to be broadcast to the whole network. Any node can broadcast a request for a transaction to be executed on the EVM; after this happens, a validator will execute the transaction and propagate the resulting state change to the rest of the network.
Learn more in the official Ethereum documentation here.
EIP-7702 Support (Live as of May 7, 2025)
EIP-7702 (enabled with Ethereum’s Pectra hardfork) introduces a new transaction type (type = 4) that lets EOAs delegate execution to a contract. The authorization_list includes the delegated address, chain ID, nonce, and signature data (r, s, yParity). Allium has done the work to embed authority directly in the authorization_list, enabling identification of the delegated source — built using logic from viem.
authorization_list allows you to:
- Detect if an EOA has become a smart wallet
- Identify the contract it delegated to
- Determine which chain the delegation occurred on
✅ Live on: Ethereum, BSC
⏳ Enabled and awaiting data: Base, Worldchain, Optimism, Polygon, Arbitrum, Unichain
Sample Query: Find authority & delegated contracts in 7702 transactions
Sample Query: Find authority & delegated contracts in 7702 transactions
Transaction Fees
For detailed metrics on transaction fees in native tokens and USD, including average transfer costs, see Metrics.
Transaction fees vary across different blockchains. Layer 1 chains typically have a single fee component, while Layer 2 chains include both L1 and L2 fees. Each chain may handle system transactions and fee calculations differently.
Chain-Specific Fee Calculations Details
Chain-Specific Fee Calculations Details
Layer 2 Chains with L1 + L2 Fees (Base, Mode, Scroll, Optimism, Worldchain, Unichain)
The total transaction fee consists of two components:
-
L2 Fee:
-
Total L2 Fee = Base Fee + Priority Fee
-
Note:
(receipt_effective_gas_price * receipt_gas_used) / 10^18
ETH combines both components -
Base Fee:
(block.base_fee_per_gas * receipt_gas_used) / 10^18
ETH- Requires join with blocks table on
block_number
: see example query.
- Requires join with blocks table on
-
Priority Fee: L2 fee - base fee
-
-
L1 Fee:
-
Given by
receipt_l1_fee / 10^18
ETH -
Represents cost of posting transaction data to Ethereum mainnet
-
Total Fee = L2 Fee + L1 Fee
= ((receipt_gas_used * receipt_effective_gas_price) + receipt_l1_fee) / 10^18
ETH
Standard EVM Chains (Arbitrum, BSC, Avalanche, Polygon zkEVM)
Total Fee = (receipt_gas_used * receipt_effective_gas_price) / 1e18
ETH
Note: On Arbitrum, receipt_gas_used includes both L1 and L2 fees.
Ethereum
Total Fee = Calldata Fee + Blob Fee (Post EIP-4844)
-
Calldata Fee =
(receipt_gas_used * receipt_effective_gas_price) / 1e18
ETH -
Blob Fee =
(receipt_blob_gas_used * receipt_blob_gas_price) / 1e18
ETH (for transaction_type = 3)
Polygon
Total Fee = (receipt_gas_used * COALESCE(receipt_effective_gas_price, gas_price)) / 1e18
ETH
Note: receipt_effective_gas_price values may be null, in which case gas_price is used.
System Transactions
Different chains handle system transactions differently:
-
Base/Optimism/Scroll: Identified by
receipt_l1_fee IS NULL OR receipt_l1_fee = 0
-
Polygon: Identified by
gas_price IS NULL OR gas_price = 0
(e.g., State Syncs) -
Arbitrum: Identified by
transaction_type BETWEEN 100 AND 106
-
BSC: Identified by
receipt_effective_gas_price IS NULL OR receipt_effective_gas_price = 0
Table Columns
Several columns may only be applicable for specific EVM-compatible blockchains. The list of columns present in the table is not exhaustive.
Unique Key: hash
Column Name | Description |
---|---|
block_number | The length of the chain, in blocks. |
block_timestamp | The time when the block that contains this transaction was included on the blockchain. |
block_hash | Unique identifier of the block that includes this transaction. |
hash | Unique identifier of a transaction. |
nonce | The transaction nonce, unique to the wallet |
transaction_index | The position of this transaction in the block that it belongs to. The first transaction has index 0. |
from_address | The address of the sending party of this transaction. |
to_address | The address of the receiving party of this transaction (could be a contract address). |
value | The amount of ether sent in this transaction, in wei. |
gas | The maximum amount of gas allocated for this transaction in wei. |
gas_price | Cost per unit of gas specified by the transaction in wei. The higher the gas price, the higher chance of getting included in a block. |
input | The data sent along with the transaction. |
max_fee_per_gas | The maximum fee per gas that the transaction sender is willing to pay for this transaction (introduced in EIP1559) |
max_priority_fee_per_gas | The maximum fee per gas the transaction sender is willing to give to validators (Proof of Stake) or miners (Proof of Work) to incentivize them to include their transaction (introduced in EIP1559) |
l1_base_fee | L1 base fee at the time the transaction was submitted |
receipt_gas_used | The total amount of gas consumed by a transaction as recorded in its receipt |
receipt_cumulative_gas_used | The total amount of gas used when this transaction was executed in the block. |
receipt_effective_gas_price | The sum of the base fee and tip paid per unit of gas. |
receipt_contract_address | The contract address created, if the transaction was a contract creation, otherwise null. |
receipt_root | Transaction stateroot (pre Byzantium). |
receipt_status | Success status of the transaction. Either 1 (success) or 0 (failure). |
receipt_l1_block_number | The L1 block number where this L2 transaction was finalized |
receipt_l1_fee | The Layer 1 fee paid for the transaction (applicable for Layer 2 transactions). |
receipt_l1_fee_scalar | Multiplier used to adjust L1 data fees for L2s (applicable for Layer 2 transactions). |
receipt_l1_base_fee_scalar | The base fee scalar component applied to L1 base fee to calculate L1 data costs for rollups (applicable for Layer 2 transactions). |
receipt_l1_gas_price | The gas price used to compute L1 calldata fee (applicable for Layer 2 transactions). |
receipt_l1_gas_used | The amount of gas used on the L1 chain for posting transaction data (applicable for Layer 2 transactions). |
receipt_gas_used_for_l1 | The amount of gas used for L1 data submission for the L2 transaction |
receipt_l1_blob_base_fee | Base fee per blob (in wei) on L1 (post-EIP-4844) (applicable for Layer 2 transactions). |
receipt_l1_blob_base_fee_scalar | Scalar applied to blob base fee to adjust L1 blob costs on L2 (applicable for Layer 2 transactions). |
receipt_blob_gas_used | Total blob gas used for the transactions |
receipt_deposit_nonce | Nonce used to track L1→L2 deposit transactions, for tracking cross-chain deposits and preventing replay attacks. |
receipt_deposit_receipt_version | Version identifier for the L1 deposit receipt format. |
log_count | Number of event logs emitted in the transaction. |
transaction_type | The integer of the transaction type, 0x0 for legacy transactions, 0x1 for access list types, 0x2 for dynamic fees. |
authorization_list | An array of objects present in 7702 transactions, each containing the delegated address, chain ID, nonce, signature data (r, s, yParity), and the recovered authority. |
access_list | A list of addresses and storage keys that the transaction plans to access, introduced in EIP-2930 to help optimize gas costs. |
y_parity | The parity (0 or 1) of the y-coordinate of the curve point for the signature’s recovery identifier. |
beneficiary | Address receiving block rewards or fees |
deposit_value | Amount bridged from L1 in a deposit transaction |
max_submission_fee | Maximum fee paid for submitted a retryable ticket (for Arbitrum Orbit chains) |
retry_to | Target address of the retryable transaction on rollups (for Arbitrum Orbit chains) |
retry_value | ETH value sent with the retryable transaction (for Arbitrum Orbit chains) |
retry_data | Calldata payload for the retryable execution (for Arbitrum Orbit chains) |
refund_to | Address receiving any unused submission fee refunds (for Arbitrum Orbit chains) |
request_id | Unique identifier for L1-to-L2 messages or retryable tickets (for Arbitrum Orbit chains) |
max_refund | The maximum amount that can be refunded to the user if the retryable ticket is canceled or not executed (for Arbitrum Orbit chains) |
ticket_id | The unique identifier (message hash) for a retryable ticket used in Arbitrum’s L1 → L2 messaging system (for Arbitrum Orbit chains) |
submission_fee_refund | The portion of the submission fee returned to the user (for Arbitrum Orbit chains) |
index | Position index of the transaction within a sequence, returned from the RPC response. |
l1_block_number | Block number on L1 where this L2 transaction originated |
l1_timestamp | Timestamp of the L1 block where this L2 transaction originated |
l1_tx_origin | Original sender address on L1 that initiated this L2 transaction |
queue_index | Position in the L2 transaction queue |
queue_origin | Origin of the transaction in the queue |
seq_r | R component of the sequencer’s signature |
seq_s | S component of the sequencer’s signature |
seq_v | V component of the sequencer’s signature |
raw_transaction | Complete raw transaction data in hexadecimal format |
deposit_receipt_version | Version identifier for the deposit receipt format used in L1->L2 deposits |
deposit_receipt_nonce | Unique nonce used to track and verify L1->L2 deposit transactions |
_extra_fields | Any additional fields that aren’t explicitly defined |
_created_at | Timestamp of the entry creation. |
_updated_at | Timestamp of the entry update. |