reth_discv5/network_stack_id.rs
//! Keys of ENR [`ForkId`](reth_ethereum_forks::ForkId) kv-pair. Identifies which network stack a
//! node belongs to.
use reth_chainspec::EthChainSpec;
/// Identifies which Ethereum network stack a node belongs to, on the discovery network.
#[derive(Debug)]
pub struct NetworkStackId;
impl NetworkStackId {
/// ENR fork ID kv-pair key, for an Ethereum L1 EL node.
pub const ETH: &'static [u8] = b"eth";
/// ENR fork ID kv-pair key, for an Ethereum L1 CL node.
pub const ETH2: &'static [u8] = b"eth2";
/// ENR fork ID kv-pair key, for an Optimism EL node.
pub const OPEL: &'static [u8] = b"opel";
/// ENR fork ID kv-pair key, for an Optimism CL node.
pub const OPSTACK: &'static [u8] = b"opstack";
/// Returns the [`NetworkStackId`] that matches the given chain spec.
pub fn id(chain: impl EthChainSpec) -> Option<&'static [u8]> {
if chain.is_optimism() {
return Some(Self::OPEL)
} else if chain.is_ethereum() {
return Some(Self::ETH)
}
None
}
}