revm 18.0.0

revm - Rust Ethereum Virtual Machine
Documentation
[package]
authors = ["Dragan Rakita <dragan0rakita@gmail.com>"]
description = "revm - Rust Ethereum Virtual Machine"
edition = "2021"
keywords = ["no_std", "ethereum", "evm", "revm"]
license = "MIT"
name = "revm"
repository = "https://github.com/bluealloy/revm"
version = "18.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
revm-interpreter = { path = "../interpreter", version = "14.0.0", default-features = false }
revm-precompile = { path = "../precompile", version = "15.0.0", default-features = false }

# misc
auto_impl = { version = "1.2", default-features = false }
cfg-if = "1.0"
dyn-clone = "1.0"

# Optional
serde = { version = "1.0", default-features = false, features = [
    "derive",
    "rc",
], optional = true }
serde_json = { version = "1.0", default-features = false, features = [
    "alloc",
], optional = true }

# ethersdb
tokio = { version = "1.40", features = [
    "rt-multi-thread",
    "macros",
], optional = true }
ethers-providers = { version = "2.0", optional = true }
ethers-core = { version = "2.0", optional = true }

# alloydb
alloy-provider = { version = "0.5.4", optional = true, default-features = false }
alloy-eips = { version = "0.5.4", optional = true, default-features = false }
alloy-transport = { version = "0.5.4", optional = true, default-features = false }

[dev-dependencies]
alloy-sol-types = { version = "0.8.2", default-features = false, features = [
    "std",
] }
ethers-contract = { version = "2.0.14", default-features = false }
anyhow = "1.0.87"
criterion = "0.5"
indicatif = "0.17"
reqwest = { version = "0.12" }
rstest = "0.22.0"
alloy-provider = "0.5.3"

[features]
default = ["std", "c-kzg", "secp256k1", "portable", "blst"]
std = [
    "serde?/std",
    "serde_json?/std",
    "serde_json?/preserve_order",
    "revm-interpreter/std",
    "revm-precompile/std",
]
hashbrown = ["revm-interpreter/hashbrown", "revm-precompile/hashbrown"]
serde = ["dep:serde", "revm-interpreter/serde"]
serde-json = ["serde", "dep:serde_json"]
arbitrary = ["revm-interpreter/arbitrary"]
asm-keccak = ["revm-interpreter/asm-keccak", "revm-precompile/asm-keccak"]
portable = ["revm-precompile/portable", "revm-interpreter/portable"]

test-utils = []

optimism = ["revm-interpreter/optimism", "revm-precompile/optimism"]
# Optimism default handler enabled Optimism handler register by default in EvmBuilder.
optimism-default-handler = [
    "optimism",
    "revm-precompile/optimism-default-handler",
    "revm-interpreter/optimism-default-handler",
]
negate-optimism-default-handler = [
    "revm-precompile/negate-optimism-default-handler",
    "revm-interpreter/negate-optimism-default-handler",
]

ethersdb = ["std", "dep:tokio", "dep:ethers-providers", "dep:ethers-core"]

alloydb = [
    "std",
    "dep:tokio",
    "dep:alloy-provider",
    "dep:alloy-eips",
    "dep:alloy-transport",
]

dev = [
    "memory_limit",
    "optional_balance_check",
    "optional_block_gas_limit",
    "optional_eip3607",
    "optional_gas_refund",
    "optional_no_base_fee",
    "optional_beneficiary_reward",
]
memory_limit = ["revm-interpreter/memory_limit"]
optional_balance_check = ["revm-interpreter/optional_balance_check"]
optional_block_gas_limit = ["revm-interpreter/optional_block_gas_limit"]
optional_eip3607 = ["revm-interpreter/optional_eip3607"]
optional_gas_refund = ["revm-interpreter/optional_gas_refund"]
optional_no_base_fee = ["revm-interpreter/optional_no_base_fee"]
optional_beneficiary_reward = ["revm-interpreter/optional_beneficiary_reward"]

# See comments in `revm-precompile`
secp256k1 = ["revm-precompile/secp256k1"]
c-kzg = ["revm-precompile/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 = ["revm-precompile/kzg-rs"]
blst = ["revm-precompile/blst"]

[[example]]
name = "fork_ref_transact"
path = "../../examples/fork_ref_transact.rs"
required-features = ["ethersdb"]

[[example]]
name = "generate_block_traces"
path = "../../examples/generate_block_traces.rs"
required-features = ["std", "serde-json", "ethersdb"]

[[example]]
name = "db_by_ref"
path = "../../examples/db_by_ref.rs"
required-features = ["std", "serde-json"]

#[[example]]
#name = "uniswap_v2_usdc_swap"
#path = "../../examples/uniswap_v2_usdc_swap.rs"
#required-features = ["alloydb"]

[[bench]]
name = "bench"
path = "benches/bench.rs"
harness = false