[package]
edition = "2024"
rust-version = "1.88"
name = "evm-fork-cache"
version = "0.2.1"
build = false
exclude = [
"docs/*-spec.md",
"docs/*-plan.md",
".github/",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Forked EVM state cache, snapshots, overlays, and simulation utilities for EVM search"
documentation = "https://docs.rs/evm-fork-cache"
readme = "README.md"
keywords = [
"evm",
"revm",
"defi",
"simulation",
"ethereum",
]
categories = [
"cryptography::cryptocurrencies",
"simulation",
"caching",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/KaiCode2/evm-fork-cache"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
default = [
"reactive",
"reactive-ws",
]
reactive = []
reactive-polling = ["reactive"]
reactive-ws = [
"reactive",
"alloy-provider/ws",
"dep:rustls",
"rustls/ring",
]
[lib]
name = "evm_fork_cache"
path = "src/lib.rs"
[[example]]
name = "bulk_storage_bench"
path = "examples/bulk_storage_bench.rs"
[[example]]
name = "bundle_simulation"
path = "examples/bundle_simulation.rs"
[[example]]
name = "call_tracer"
path = "examples/call_tracer.rs"
[[example]]
name = "cold_start"
path = "examples/cold_start.rs"
required-features = ["reactive"]
[[example]]
name = "create3_addresses"
path = "examples/create3_addresses.rs"
[[example]]
name = "custom_revert_errors"
path = "examples/custom_revert_errors.rs"
[[example]]
name = "deploy_and_override"
path = "examples/deploy_and_override.rs"
[[example]]
name = "discover_and_track"
path = "examples/discover_and_track.rs"
[[example]]
name = "erc20_balance_override"
path = "examples/erc20_balance_override.rs"
[[example]]
name = "fetch_minimization_counted"
path = "examples/fetch_minimization_counted.rs"
[[example]]
name = "fork_override_balance"
path = "examples/fork_override_balance.rs"
[[example]]
name = "fork_token_balance"
path = "examples/fork_token_balance.rs"
[[example]]
name = "foundry_artifact_etching"
path = "examples/foundry_artifact_etching.rs"
[[example]]
name = "freshness_multi_sim"
path = "examples/freshness_multi_sim.rs"
[[example]]
name = "freshness_optimistic"
path = "examples/freshness_optimistic.rs"
[[example]]
name = "mock_and_simulate"
path = "examples/mock_and_simulate.rs"
[[example]]
name = "multicall_batch"
path = "examples/multicall_batch.rs"
[[example]]
name = "multicall_with_error_handling"
path = "examples/multicall_with_error_handling.rs"
[[example]]
name = "parallel_overlays"
path = "examples/parallel_overlays.rs"
[[example]]
name = "prefetch_registry"
path = "examples/prefetch_registry.rs"
[[example]]
name = "reactive_alloy_amm_live_probe"
path = "examples/reactive_alloy_amm_live_probe.rs"
required-features = ["reactive"]
[[example]]
name = "reactive_cache"
path = "examples/reactive_cache.rs"
[[example]]
name = "reactive_engine_lifecycle"
path = "examples/reactive_engine_lifecycle.rs"
required-features = ["reactive"]
[[example]]
name = "reactive_runtime"
path = "examples/reactive_runtime.rs"
required-features = ["reactive"]
[[example]]
name = "revert_decoding"
path = "examples/revert_decoding.rs"
[[example]]
name = "snapshot_and_restore"
path = "examples/snapshot_and_restore.rs"
[[example]]
name = "state_update_apply"
path = "examples/state_update_apply.rs"
[[example]]
name = "storage_access_list"
path = "examples/storage_access_list.rs"
[[example]]
name = "transfer_inspector"
path = "examples/transfer_inspector.rs"
[[test]]
name = "block_context"
path = "tests/block_context.rs"
[[test]]
name = "builder_chain_id"
path = "tests/builder_chain_id.rs"
[[test]]
name = "bulk_storage"
path = "tests/bulk_storage.rs"
[[test]]
name = "bundle_simulation"
path = "tests/bundle_simulation.rs"
[[test]]
name = "bundle_simulation_extra"
path = "tests/bundle_simulation_extra.rs"
[[test]]
name = "cache_state"
path = "tests/cache_state.rs"
[[test]]
name = "call_tracer"
path = "tests/call_tracer.rs"
[[test]]
name = "code_seeding"
path = "tests/code_seeding.rs"
[[test]]
name = "cold_start"
path = "tests/cold_start.rs"
[[test]]
name = "cow_snapshot"
path = "tests/cow_snapshot.rs"
[[test]]
name = "errors"
path = "tests/errors.rs"
[[test]]
name = "event_pipeline"
path = "tests/event_pipeline.rs"
[[test]]
name = "fetch_minimization"
path = "tests/fetch_minimization.rs"
[[test]]
name = "freshness"
path = "tests/freshness.rs"
[[test]]
name = "liveness_cold_start"
path = "tests/liveness_cold_start.rs"
[[test]]
name = "liveness_root_gate"
path = "tests/liveness_root_gate.rs"
[[test]]
name = "mapping_probe"
path = "tests/mapping_probe.rs"
[[test]]
name = "multicall"
path = "tests/multicall.rs"
[[test]]
name = "public_release_surface"
path = "tests/public_release_surface.rs"
[[test]]
name = "reactive_alloy_subscriber"
path = "tests/reactive_alloy_subscriber.rs"
[[test]]
name = "reactive_engine"
path = "tests/reactive_engine.rs"
[[test]]
name = "reactive_freshness"
path = "tests/reactive_freshness.rs"
[[test]]
name = "reactive_health"
path = "tests/reactive_health.rs"
[[test]]
name = "reactive_registry"
path = "tests/reactive_registry.rs"
[[test]]
name = "reactive_reorg"
path = "tests/reactive_reorg.rs"
[[test]]
name = "reactive_resync"
path = "tests/reactive_resync.rs"
[[test]]
name = "reactive_router"
path = "tests/reactive_router.rs"
[[test]]
name = "reactive_runtime"
path = "tests/reactive_runtime.rs"
[[test]]
name = "reactive_subscriber_ingest"
path = "tests/reactive_subscriber_ingest.rs"
[[test]]
name = "reactive_trace_resync"
path = "tests/reactive_trace_resync.rs"
[[test]]
name = "serialization_roundtrip"
path = "tests/serialization_roundtrip.rs"
[[test]]
name = "shared_memory_capacity"
path = "tests/shared_memory_capacity.rs"
[[test]]
name = "snapshot_overlay"
path = "tests/snapshot_overlay.rs"
[[test]]
name = "state_update"
path = "tests/state_update.rs"
[[test]]
name = "transfer_inspector"
path = "tests/transfer_inspector.rs"
[[test]]
name = "typed_sol_call"
path = "tests/typed_sol_call.rs"
[[bench]]
name = "access_list"
path = "benches/access_list.rs"
harness = false
[[bench]]
name = "create3"
path = "benches/create3.rs"
harness = false
[[bench]]
name = "event_pipeline"
path = "benches/event_pipeline.rs"
harness = false
[[bench]]
name = "fanout"
path = "benches/fanout.rs"
harness = false
[[bench]]
name = "freshness"
path = "benches/freshness.rs"
harness = false
[[bench]]
name = "mapping_probe"
path = "benches/mapping_probe.rs"
harness = false
[[bench]]
name = "revert_decoding"
path = "benches/revert_decoding.rs"
harness = false
[[bench]]
name = "rpc_mainnet"
path = "benches/rpc_mainnet.rs"
harness = false
[[bench]]
name = "simulation"
path = "benches/simulation.rs"
harness = false
[[bench]]
name = "state_update"
path = "benches/state_update.rs"
harness = false
[dependencies.alloy-consensus]
version = "1.1.2"
[dependencies.alloy-contract]
version = "1.0.38"
[dependencies.alloy-eips]
version = "1.0.38"
[dependencies.alloy-network]
version = "1.0.38"
[dependencies.alloy-primitives]
version = "1.4"
features = ["map"]
[dependencies.alloy-provider]
version = "1.0.38"
[dependencies.alloy-rlp]
version = "0.3"
[dependencies.alloy-rpc-client]
version = "1.0.38"
[dependencies.alloy-rpc-types-eth]
version = "1.0.38"
[dependencies.alloy-sol-types]
version = "1.4"
[dependencies.bincode]
version = "1.3"
[dependencies.foundry-fork-db]
version = "0.22"
[dependencies.futures]
version = "0.3"
[dependencies.revm]
version = "34.0"
features = [
"std",
"serde",
"optional_eip3607",
"optional_no_base_fee",
"optional_balance_check",
]
[dependencies.rustls]
version = "0.23"
optional = true
default-features = false
[dependencies.serde]
version = "1.0.228"
features = ["derive"]
[dependencies.serde_json]
version = "1.0.145"
[dependencies.thiserror]
version = "2.0"
[dependencies.tokio]
version = "1.48.0"
features = [
"rt-multi-thread",
"time",
]
[dependencies.tracing]
version = "0.1.41"
[dev-dependencies.alloy-node-bindings]
version = "1.1.2"
[dev-dependencies.alloy-rpc-client]
version = "1.0.38"
features = ["reqwest"]
[dev-dependencies.alloy-transport]
version = "1.0.38"
[dev-dependencies.alloy-transport-http]
version = "1.0.38"
[dev-dependencies.anyhow]
version = "1.0.98"
[dev-dependencies.criterion]
version = "0.5"
[dev-dependencies.reqwest]
version = "0.12"
features = ["gzip"]
default-features = false
[dev-dependencies.tokio]
version = "1.48.0"
features = [
"macros",
"rt-multi-thread",
"time",
]