Skip to content

Commit

Permalink
Add EIP-7636 support (#6793)
Browse files Browse the repository at this point in the history
* Add eip7636 support

* Add `version()` to the `lighthouse_version` crate and make the `enr.rs` file use it.

* Hardcode version, Add `client_name()`, remove unneeded flag.

* Make it use the new function.

* Make cargo fmt zip it
  • Loading branch information
JKincorperated authored Jan 21, 2025
1 parent 7a0388e commit 33c1648
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
3 changes: 2 additions & 1 deletion beacon_node/lighthouse_network/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,8 @@ pub struct Config {
pub network_load: u8,

/// Indicates if the user has set the network to be in private mode. Currently this
/// prevents sending client identifying information over identify.
/// prevents sending client identifying information over identify and prevents
/// EIP-7636 indentifiable information being provided in the ENR.
pub private: bool,

/// Shutdown beacon node after sync is completed.
Expand Down
6 changes: 6 additions & 0 deletions beacon_node/lighthouse_network/src/discovery/enr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ use crate::types::{Enr, EnrAttestationBitfield, EnrSyncCommitteeBitfield};
use crate::NetworkConfig;
use alloy_rlp::bytes::Bytes;
use libp2p::identity::Keypair;
use lighthouse_version::{client_name, version};
use slog::{debug, warn};
use ssz::{Decode, Encode};
use ssz_types::BitVector;
Expand Down Expand Up @@ -188,6 +189,11 @@ pub fn build_enr<E: EthSpec>(
builder.udp6(udp6_port.get());
}

// Add EIP 7636 client information
if !config.private {
builder.client_info(client_name().to_string(), version().to_string(), None);
}

// Add QUIC fields to the ENR.
// Since QUIC is used as an alternative transport for the libp2p protocols,
// the related fields should only be added when both QUIC and libp2p are enabled
Expand Down
26 changes: 26 additions & 0 deletions common/lighthouse_version/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,22 @@ pub fn version_with_platform() -> String {
format!("{}/{}-{}", VERSION, Target::arch(), Target::os())
}

/// Returns semantic versioning information only.
///
/// ## Example
///
/// `1.5.1`
pub fn version() -> &'static str {
"6.0.1"
}

/// Returns the name of the current client running.
///
/// This will usually be "Lighthouse"
pub fn client_name() -> &'static str {
"Lighthouse"
}

#[cfg(test)]
mod test {
use super::*;
Expand All @@ -64,4 +80,14 @@ mod test {
VERSION
);
}

#[test]
fn semantic_version_formatting() {
let re = Regex::new(r"^[0-9]+\.[0-9]+\.[0-9]+").unwrap();
assert!(
re.is_match(version()),
"semantic version doesn't match regex: {}",
version()
);
}
}

0 comments on commit 33c1648

Please sign in to comment.