Precompiles
Note that the support for these precompiles may change as the Zircuit proof system evolves. They should be used with caution. If you have any questions, please reach out via discord.
EVM Precompiles
The RIPEMD-160
(address 0x3
) blake2f
(address 0x9
), and point evaluation
(address 0x0a
) precompiles are currently not supported. We plan to enable these precompiles in future hard forks.
The modexp
precompile is supported but only supports inputs of size less than or equal to 32 bytes (i.e. u256
).
The ecPairing
precompile is supported, but the number of points(sets, pairs)
is limited to 4, instead of 6.
The other EVM precompiles are all supported: ecRecover
, identity
, ecAdd
, ecMul
.
Precompiles limits
Because of a bounded size of the zkEVM circuits, there is an upper limit on the number of calls that can be made for some precompiles. These transactions will not revert, but simply be skipped by the sequencer if they cannot fit into the space of the circuit.
Precompile/opcode | Limit |
---|---|
keccak256 | 3157 |
ecRecover | 119 |
modexp | 23 |
ecAdd | 50 |
ecMul | 50 |
ecPairing | 2 |
List of precompiles for both Zircuit and Zircuit Testnet:
Name | Address |
---|---|
ECRecover | 0x01 |
SHA256 | 0x02 |
RIPEMD | 0x03 (Not supported) |
Identity | 0x04 |
ModExp | 0x05 (Partially supported) |
ECAdd | 0x06 |
ECScalarMul | 0x07 |
ECPairing | 0x08 (Partially supported) |
BLAKE2b | 0x09 (Not supported) |
Point evaluation | 0x0a (Not supported) |
Last updated