Skip to content

Commit 647bce1

Browse files
committed
Add eth entry to local enr record.
Signed-off-by: lakshya-sky <[email protected]>
1 parent ba5b565 commit 647bce1

File tree

6 files changed

+24
-7
lines changed

6 files changed

+24
-7
lines changed

cmd/ethrex/initializers.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -331,15 +331,15 @@ pub fn get_local_node_record(
331331
) -> NodeRecord {
332332
match read_node_config_file(datadir) {
333333
Ok(Some(ref mut config)) => {
334-
NodeRecord::from_node(local_p2p_node, config.node_record.seq + 1, signer)
334+
NodeRecord::from_node(local_p2p_node, config.node_record.seq + 1, signer, None)
335335
.expect("Node record could not be created from local node")
336336
}
337337
_ => {
338338
let timestamp = SystemTime::now()
339339
.duration_since(UNIX_EPOCH)
340340
.unwrap_or_default()
341341
.as_secs();
342-
NodeRecord::from_node(local_p2p_node, timestamp, signer)
342+
NodeRecord::from_node(local_p2p_node, timestamp, signer, None)
343343
.expect("Node record could not be created from local node")
344344
}
345345
}

crates/networking/p2p/discv4/server.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use crate::{
1515
};
1616
use bytes::BytesMut;
1717
use ethrex_common::{H256, H512};
18+
use ethrex_storage::Store;
1819
use futures::StreamExt;
1920
use rand::rngs::OsRng;
2021
use secp256k1::SecretKey;
@@ -77,6 +78,7 @@ pub enum OutMessage {
7778

7879
#[derive(Debug)]
7980
pub struct DiscoveryServer {
81+
storage: Store,
8082
local_node: Node,
8183
local_node_record: NodeRecord,
8284
signer: SecretKey,
@@ -89,6 +91,7 @@ pub struct DiscoveryServer {
8991

9092
impl DiscoveryServer {
9193
pub async fn spawn(
94+
storage: Store,
9295
local_node: Node,
9396
signer: SecretKey,
9497
udp_socket: Arc<UdpSocket>,
@@ -97,9 +100,11 @@ impl DiscoveryServer {
97100
) -> Result<(), DiscoveryServerError> {
98101
info!("Starting Discovery Server");
99102

100-
let local_node_record = NodeRecord::from_node(&local_node, 1, &signer)
103+
let fork_id = storage.get_fork_id().await.ok();
104+
let local_node_record = NodeRecord::from_node(&local_node, 1, &signer, fork_id)
101105
.expect("Failed to create local node record");
102106
let mut discovery_server = Self {
107+
storage,
103108
local_node: local_node.clone(),
104109
local_node_record,
105110
signer,

crates/networking/p2p/network.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ pub async fn start_network(context: P2PContext, bootnodes: Vec<Node>) -> Result<
111111
);
112112

113113
DiscoveryServer::spawn(
114+
context.storage.clone(),
114115
context.local_node.clone(),
115116
context.signer,
116117
udp_socket.clone(),

crates/networking/p2p/types.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,12 @@ impl NodeRecord {
347347
Ok(result)
348348
}
349349

350-
pub fn from_node(node: &Node, seq: u64, signer: &SecretKey) -> Result<Self, NodeError> {
350+
pub fn from_node(
351+
node: &Node,
352+
seq: u64,
353+
signer: &SecretKey,
354+
fork_id: Option<ForkId>,
355+
) -> Result<Self, NodeError> {
351356
let mut record = NodeRecord {
352357
seq,
353358
..Default::default()
@@ -372,6 +377,12 @@ impl NodeRecord {
372377
.pairs
373378
.push(("udp".into(), node.udp_port.encode_to_vec().into()));
374379

380+
if let Some(fork_id) = fork_id {
381+
record
382+
.pairs
383+
.push(("eth".into(), fork_id.encode_to_vec().into()));
384+
}
385+
375386
record.signature = record.sign_record(signer)?;
376387

377388
Ok(record)
@@ -581,7 +592,7 @@ mod tests {
581592
addr.port(),
582593
public_key_from_signing_key(&signer),
583594
);
584-
let mut record = NodeRecord::from_node(&node, 1, &signer).unwrap();
595+
let mut record = NodeRecord::from_node(&node, 1, &signer, None).unwrap();
585596
// Drop fork ID since the test doesn't use it
586597
record.pairs.retain(|(k, _)| k != "eth");
587598
record.sign_record(&signer).unwrap();

crates/networking/rpc/admin/peers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ mod tests {
167167
fn test_peer_data_to_serialized_peer() {
168168
// Test that we can correctly serialize an active Peer
169169
let node = Node::from_enode_url("enode://4aeb4ab6c14b23e2c4cfdce879c04b0748a20d8e9b59e25ded2a08143e265c6c25936e74cbc8e641e3312ca288673d91f2f93f8e277de3cfa444ecdaaf982052@157.90.35.166:30303").unwrap();
170-
let record = NodeRecord::from_node(&node, 17, &SecretKey::new(&mut OsRng)).unwrap();
170+
let record = NodeRecord::from_node(&node, 17, &SecretKey::new(&mut OsRng), None).unwrap();
171171
let mut peer = PeerData::new(
172172
node,
173173
Some(record),

crates/networking/rpc/test_utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ pub fn example_local_node_record() -> NodeRecord {
208208
let node = Node::new("127.0.0.1".parse().unwrap(), 30303, 30303, public_key_1);
209209
let signer = SecretKey::new(&mut rand::rngs::OsRng);
210210

211-
NodeRecord::from_node(&node, 1, &signer).unwrap()
211+
NodeRecord::from_node(&node, 1, &signer, None).unwrap()
212212
}
213213

214214
// Util to start an api for testing on ports 8500 and 8501,

0 commit comments

Comments
 (0)