Precompiles
Last updated
Last updated
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.
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
.
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 |
---|---|
List of precompiles for both Zircuit and Zircuit Testnet:
Name | Address |
---|---|
keccak256
3157
ecRecover
119
modexp
23
ecAdd
50
ecMul
50
ecPairing
2
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)