[package] authors = ["Dragan Rakita "] description = "revm Precompiles - Ethereum compatible precompiled contracts" edition = "2021" keywords = ["no_std", "ethereum", "evm", "revm", "precompiles"] license = "MIT" name = "revm-precompile" repository = "https://github.com/bluealloy/revm" version = "15.0.0" readme = "../../README.md" [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] [lints.rust] unreachable_pub = "warn" unused_must_use = "deny" rust_2018_idioms = "deny" [lints.rustdoc] all = "warn" [dependencies] revm-primitives = { path = "../primitives", version = "14.0.0", default-features = false } once_cell = { version = "1.19", default-features = false, features = ["alloc"] } # ecRecover k256 = { version = "0.13.3", default-features = false, features = ["ecdsa"] } secp256k1 = { version = ">=0.28, <=0.29", default-features = false, features = [ "alloc", "recovery", "rand", "global-context", ], optional = true } # SHA2-256 and RIPEMD-160 sha2 = { version = "0.10", default-features = false } ripemd = { version = "0.1", default-features = false } # modexp aurora-engine-modexp = { version = "1.1", default-features = false } # ecAdd, ecMul, ecPairing bn = { package = "substrate-bn", version = "0.6", default-features = false } # KZG point evaluation precompile c-kzg = { version = "1.0.3", default-features = false, optional = true, features = [ "ethereum_kzg_settings", ] } # Optionally use `kzg-rs` for a pure Rust implementation of KZG point evaluation. kzg-rs = { version = "0.2.3", default-features = false, optional = true } # BLS12-381 precompiles blst = { version = "0.3.13", optional = true } # p256verify precompile p256 = { version = "0.13.2", optional = true, default-features = false, features = [ "ecdsa", ] } # utils cfg-if = { version = "1.0", default-features = false } [dev-dependencies] criterion = "0.5" rand = { version = "0.8", features = ["std"] } eyre = "0.6.12" rstest = "0.22.0" serde = "1.0" serde_json = "1.0" serde_derive = "1.0" [features] default = ["std", "c-kzg", "secp256k1", "portable", "blst"] std = [ "revm-primitives/std", "k256/std", "once_cell/std", "ripemd/std", "sha2/std", "c-kzg?/std", "secp256k1?/std", ] hashbrown = ["revm-primitives/hashbrown"] asm-keccak = ["revm-primitives/asm-keccak"] optimism = ["revm-primitives/optimism", "secp256r1"] # Optimism default handler enabled Optimism handler register by default in EvmBuilder. optimism-default-handler = [ "optimism", "revm-primitives/optimism-default-handler", ] negate-optimism-default-handler = [ "revm-primitives/negate-optimism-default-handler", ] # Enables the p256verify precompile. secp256r1 = ["dep:p256"] # These libraries may not work on all no_std platforms as they depend on C. # Enables the KZG point evaluation precompile. c-kzg = ["dep:c-kzg", "revm-primitives/c-kzg"] # `kzg-rs` is not audited but useful for `no_std` environment, use it with causing and default to `c-kzg` if possible. kzg-rs = ["dep:kzg-rs", "revm-primitives/kzg-rs"] portable = ["revm-primitives/portable", "c-kzg?/portable"] # Use `secp256k1` as a faster alternative to `k256`. # The problem that `secp256k1` has is it fails to build for `wasm` target on Windows and Mac as it is c lib. # In Linux it passes. If you don't require to build wasm on win/mac, it is safe to use it and it is enabled by default. secp256k1 = ["dep:secp256k1"] # Enables the BLS12-381 precompiles. blst = ["dep:blst"] [[bench]] name = "bench" path = "benches/bench.rs" harness = false