External core dependencies
Revm project is no_std compliant, and it uses alloc
crate for heap allocation.
Native types are imported from alloy-primitives
crate, this is where we get Address, Bytes, B256 types where big number U256 is exported from ruint
. Additionally hashbrown
crate or HashMap/HashSet
with different hashing algorithm are imported from it.
alloy-eip7702
and alloy-eip2930
are used in TxEnv as parts of transaction.
Precompiles require a lot of cryprography and math libs:
c-kzg
is a minimal implementation of the Polynomial Commitments API for EIP-4844, written in C. (With rust bindings)modexp
is a big integer modular exponentiation precompile.secp256k1
is an ECDSA public key recovery precompile, based onsecp256k1
curves.k256
is used as a fallback for no_std environments.- ...
serde
and serde-json
are behind a feature flag to serialize and deserialize data structures.
Some utility crates are used throughout the codebase: auto_impl
, derive_more
etc. Where in some places few libs are imported for specific use cases like nnum
or dawdaw
.