Skip to main content

foundry_evm_core/
precompiles.rs

1use alloy_primitives::{Address, address};
2
3/// The ECRecover precompile address.
4pub const EC_RECOVER: Address = address!("0x0000000000000000000000000000000000000001");
5
6/// The SHA-256 precompile address.
7pub const SHA_256: Address = address!("0x0000000000000000000000000000000000000002");
8
9/// The RIPEMD-160 precompile address.
10pub const RIPEMD_160: Address = address!("0x0000000000000000000000000000000000000003");
11
12/// The Identity precompile address.
13pub const IDENTITY: Address = address!("0x0000000000000000000000000000000000000004");
14
15/// The ModExp precompile address.
16pub const MOD_EXP: Address = address!("0x0000000000000000000000000000000000000005");
17
18/// The ECAdd precompile address.
19pub const EC_ADD: Address = address!("0x0000000000000000000000000000000000000006");
20
21/// The ECMul precompile address.
22pub const EC_MUL: Address = address!("0x0000000000000000000000000000000000000007");
23
24/// The ECPairing precompile address.
25pub const EC_PAIRING: Address = address!("0x0000000000000000000000000000000000000008");
26
27/// The Blake2F precompile address.
28pub const BLAKE_2F: Address = address!("0x0000000000000000000000000000000000000009");
29
30/// The PointEvaluation precompile address.
31pub const POINT_EVALUATION: Address = address!("0x000000000000000000000000000000000000000a");
32
33/// The BLS12-381 G1ADD precompile address.
34pub const BLS12_G1ADD: Address = address!("0x000000000000000000000000000000000000000b");
35
36/// The BLS12-381 G1MSM precompile address.
37pub const BLS12_G1MSM: Address = address!("0x000000000000000000000000000000000000000c");
38
39/// The BLS12-381 G2ADD precompile address.
40pub const BLS12_G2ADD: Address = address!("0x000000000000000000000000000000000000000d");
41
42/// The BLS12-381 G2MSM precompile address.
43pub const BLS12_G2MSM: Address = address!("0x000000000000000000000000000000000000000e");
44
45/// The BLS12-381 pairing check precompile address.
46pub const BLS12_PAIRING_CHECK: Address = address!("0x000000000000000000000000000000000000000f");
47
48/// The BLS12-381 map Fp to G1 precompile address.
49pub const BLS12_MAP_FP_TO_G1: Address = address!("0x0000000000000000000000000000000000000010");
50
51/// The BLS12-381 map Fp2 to G2 precompile address.
52pub const BLS12_MAP_FP2_TO_G2: Address = address!("0x0000000000000000000000000000000000000011");
53
54/// The P256VERIFY precompile address.
55pub const P256_VERIFY: Address = address!("0x0000000000000000000000000000000000000100");
56
57/// The Celo transfer precompile address.
58///
59/// See <https://specs.celo.org/token_duality.html#the-transfer-precompile>
60pub const CELO_TRANSFER: Address = address!("0x00000000000000000000000000000000000000fd");
61
62/// Precompile addresses.
63pub const PRECOMPILES: &[Address] = &[
64    EC_RECOVER,
65    SHA_256,
66    RIPEMD_160,
67    IDENTITY,
68    MOD_EXP,
69    EC_ADD,
70    EC_MUL,
71    EC_PAIRING,
72    BLAKE_2F,
73    POINT_EVALUATION,
74    BLS12_G1ADD,
75    BLS12_G1MSM,
76    BLS12_G2ADD,
77    BLS12_G2MSM,
78    BLS12_PAIRING_CHECK,
79    BLS12_MAP_FP_TO_G1,
80    BLS12_MAP_FP2_TO_G2,
81    P256_VERIFY,
82];