revm_precompile/
bls12_381.rs

1//! BLS12-381 precompiles added in [`EIP-2537`](https://eips.ethereum.org/EIPS/eip-2537)
2//! For more details check modules for each precompile.
3use crate::PrecompileWithAddress;
4
5cfg_if::cfg_if! {
6    if #[cfg(feature = "blst")]{
7        mod blst;
8        use blst as crypto_backend;
9    } else {
10        mod arkworks;
11        use arkworks as crypto_backend;
12    }
13}
14
15pub mod g1_add;
16pub mod g1_msm;
17pub mod g2_add;
18pub mod g2_msm;
19pub mod map_fp2_to_g2;
20pub mod map_fp_to_g1;
21pub mod pairing;
22mod utils;
23
24/// Returns the BLS12-381 precompiles with their addresses.
25pub fn precompiles() -> impl Iterator<Item = PrecompileWithAddress> {
26    [
27        g1_add::PRECOMPILE,
28        g1_msm::PRECOMPILE,
29        g2_add::PRECOMPILE,
30        g2_msm::PRECOMPILE,
31        pairing::PRECOMPILE,
32        map_fp_to_g1::PRECOMPILE,
33        map_fp2_to_g2::PRECOMPILE,
34    ]
35    .into_iter()
36}