1#![cfg_attr(not(test), warn(unused_crate_dependencies))]
13#![cfg_attr(not(feature = "std"), no_std)]
14
15#[cfg(not(feature = "std"))]
16extern crate alloc as std;
17
18pub mod constants;
19pub mod eip170;
20pub mod eip2780;
21pub mod eip3860;
22pub mod eip4844;
23pub mod eip7702;
24pub mod eip7708;
25pub mod eip7823;
26pub mod eip7825;
27pub mod eip7907;
28pub mod eip7954;
29pub mod eip8037;
30pub mod eip8038;
31pub mod hardfork;
32pub mod hints_util;
33mod once_lock;
34
35pub use constants::*;
36pub use once_lock::OnceLock;
37
38pub use alloy_primitives::{
41 self, address, b256, bytes, fixed_bytes, hex, hex_literal, keccak256,
42 map::{
43 self, hash_map, hash_set, indexmap, AddressIndexMap, AddressMap, AddressSet, B256Map,
44 HashMap, HashSet, IndexMap, U256Map,
45 },
46 ruint, uint, Address, Bytes, FixedBytes, Log, LogData, TxKind, B256, I128, I256, U128, U256,
47};
48
49pub type StorageKey = U256;
52
53pub type StorageValue = U256;
56
57pub type StorageKeyMap<V> = U256Map<V>;
59
60pub const SHORT_ADDRESS_CAP: usize = 300;
62
63#[inline]
68pub fn short_address(address: &Address) -> Option<usize> {
69 let (zeros, value) = address.split_at(18);
70 if zeros.iter().all(|b| *b == 0) {
71 let short_address = u16::from_be_bytes([value[0], value[1]]) as usize;
72 if short_address < SHORT_ADDRESS_CAP {
73 return Some(short_address);
74 }
75 }
76 None
77}
78
79pub const ONE_ETHER: u128 = 1_000_000_000_000_000_000;
81
82pub const ONE_GWEI: u128 = 1_000_000_000;