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 eip3860;
21pub mod eip4844;
22pub mod eip7702;
23pub mod eip7823;
24pub mod eip7825;
25pub mod eip7907;
26pub mod eip7918;
27pub mod hardfork;
28mod once_lock;
29
30pub use constants::*;
31pub use once_lock::OnceLock;
32
33pub use alloy_primitives::map::{self, hash_map, hash_set, HashMap, HashSet};
36pub use alloy_primitives::{
37 self, address, b256, bytes, fixed_bytes, hex, hex_literal, keccak256, ruint, uint, Address,
38 Bytes, FixedBytes, Log, LogData, TxKind, B256, I128, I256, U128, U256,
39};
40
41pub type StorageKey = U256;
44
45pub type StorageValue = U256;
48
49pub const SHORT_ADDRESS_CAP: usize = 300;
51
52#[inline]
57pub fn short_address(address: &Address) -> Option<usize> {
58 if address.0[..18].iter().all(|b| *b == 0) {
59 let short_address = u16::from_be_bytes([address.0[18], address.0[19]]) as usize;
60 if short_address < SHORT_ADDRESS_CAP {
61 return Some(short_address);
62 }
63 }
64 None
65}