Precompile Usage on Mainnet
Question
Which EVM precompiles consume the most gas on Ethereum mainnet, and who is driving that usage?
Background
The EVM has precompiled contracts at addresses 0x01 through 0x13. These are native implementations of cryptographic and utility functions that would be too expensive to run as Solidity bytecode:
| Address | Name | Function |
|---|---|---|
0x01 | ecrecover | ECDSA public key recovery |
0x02 | sha256 | SHA-256 hash |
0x03 | ripemd160 | RIPEMD-160 hash |
0x04 | identity | Data copy (returns input unchanged) |
0x05 | modexp | Modular exponentiation |
0x06–0x08 | BN128 ops | ecAdd, ecMul, ecPairing |
0x09 | blake2f | BLAKE2b compression function |
0x0a | point_eval | KZG point evaluation (EIP-4844) |
0x0b–0x13 | BLS12-381 ops | G1/G2 add, mul, multiexp, pairing, map-to-curve (EIP-2537, Pectra) |
Precompile gas pricing is a live debate. If a precompile is underpriced relative to its actual execution cost, attackers can stuff blocks with cheap-but-slow calls. But repricing has real consequences for every protocol that depends on that precompile.
We use the int_transaction_call_frame table, which records every internal call frame from transaction execution traces. Precompile calls show up as frames with opcode_count = 0 (no EVM bytecode to run). The gas field tells us how much gas the call consumed, and for variable-cost precompiles like modexp, gas maps directly to input complexity.
Data range: blocks 24,120,001 to 24,546,241 (~426,000 blocks, approximately 59 days from late December 2025 to late February 2026).
Investigation
Overall ranking
View Query: precompile_ranking
modexp is #1 in both: 25% of all precompile calls, 38% of all gas. The gas ranking looks quite different from calls though. ecPairing jumps from 7th in calls to 4th in gas because each call costs ~129,000 gas (the most expensive per-call by far). ecMul is similar at 6,000 gas per call.
The cheap ones (identity at 27 gas, sha256 at 89 gas, ecAdd at 150 gas) get called a lot but barely register on total gas.
Each precompile has its own page (linked in the table above) with caller breakdowns and gas distributions.
Calls over time
View Query: precompile_time_series
Pretty flat. Total calls hover around 1.1-1.2M per day-bucket, with modexp (red) as the largest band, followed by ecrecover (blue) and identity (green). No sudden shifts or spikes over the 59-day window.
Gas over time
Same data, but showing gas instead of calls. The picture shifts — modexp and ecrecover dominate gas even though the call counts look more evenly spread.
Takeaways
- Over ~426,000 blocks (~59 days), 70.4 million precompile calls consumed 188.7 billion gas
- modexp is #1 by both call count (25.3%) and gas (37.7%), driven almost entirely by Aztec's ZK rollup (details)
- The gas ranking differs from the call ranking — expensive-per-call precompiles like ecPairing punch above their weight
- Usage is flat over the analysis period, no sudden shifts
- BLS12-381 precompiles (Pectra) have 63 calls total — g2multiexp accounts for most of them (details)