Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cmd/ethrex/initializers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -331,15 +331,15 @@ pub fn get_local_node_record(
) -> NodeRecord {
match read_node_config_file(datadir) {
Ok(Some(ref mut config)) => {
NodeRecord::from_node(local_p2p_node, config.node_record.seq + 1, signer)
NodeRecord::from_node(local_p2p_node, config.node_record.seq + 1, signer, None)
.expect("Node record could not be created from local node")
}
_ => {
let timestamp = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap_or_default()
.as_secs();
NodeRecord::from_node(local_p2p_node, timestamp, signer)
NodeRecord::from_node(local_p2p_node, timestamp, signer, None)
.expect("Node record could not be created from local node")
}
}
Expand Down
3 changes: 2 additions & 1 deletion crates/common/types/fork_id.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ use ethrex_rlp::{
};

use ethereum_types::H32;
use serde::{Deserialize, Serialize};
use tracing::debug;

use super::{BlockHash, BlockHeader, BlockNumber, ChainConfig};

// See https://github.com/ethereum/go-ethereum/blob/530adfc8e3ef9c8b6356facecdec10b30fb81d7d/core/forkid/forkid.go#L51
const TIMESTAMP_THRESHOLD: u64 = 1438269973;

#[derive(Clone, Debug, PartialEq, Default)]
#[derive(Clone, Debug, PartialEq, Eq, Default, Serialize, Deserialize)]
pub struct ForkId {
pub fork_hash: H32,
pub fork_next: BlockNumber,
Expand Down
10 changes: 8 additions & 2 deletions crates/networking/p2p/discv4/messages.rs
Original file line number Diff line number Diff line change
Expand Up @@ -525,6 +525,8 @@ impl RLPEncode for ENRResponseMessage {

#[cfg(test)]
mod tests {
use crate::types::NodeRecordPairs;

use super::*;
use bytes::Bytes;
use ethrex_common::{H256, H264};
Expand Down Expand Up @@ -759,10 +761,11 @@ mod tests {
(String::from("tcp").into(), tcp_rlp.clone().into()),
(String::from("udp").into(), udp_rlp.clone().into()),
];
let record_pairs = NodeRecordPairs::decode_pairs(pairs);
let node_record = NodeRecord {
signature,
seq,
pairs,
pairs: record_pairs,
};
let msg = Message::ENRResponse(ENRResponseMessage {
request_hash,
Expand Down Expand Up @@ -885,10 +888,13 @@ mod tests {
(String::from("tcp").into(), tcp_rlp.clone().into()),
(String::from("udp").into(), udp_rlp.clone().into()),
];

let record_pairs = NodeRecordPairs::decode_pairs(pairs);

let node_record = NodeRecord {
signature,
seq,
pairs,
pairs: record_pairs,
};
let expected = Message::ENRResponse(ENRResponseMessage {
request_hash,
Expand Down
5 changes: 4 additions & 1 deletion crates/networking/p2p/discv4/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ use crate::{
};
use bytes::BytesMut;
use ethrex_common::{H256, H512};
use ethrex_storage::Store;
use futures::StreamExt;
use rand::rngs::OsRng;
use secp256k1::SecretKey;
Expand Down Expand Up @@ -89,6 +90,7 @@ pub struct DiscoveryServer {

impl DiscoveryServer {
pub async fn spawn(
storage: Store,
local_node: Node,
signer: SecretKey,
udp_socket: Arc<UdpSocket>,
Expand All @@ -97,7 +99,8 @@ impl DiscoveryServer {
) -> Result<(), DiscoveryServerError> {
info!("Starting Discovery Server");

let local_node_record = NodeRecord::from_node(&local_node, 1, &signer)
let fork_id = storage.get_fork_id().await.ok();
let local_node_record = NodeRecord::from_node(&local_node, 1, &signer, fork_id)
.expect("Failed to create local node record");
let mut discovery_server = Self {
local_node: local_node.clone(),
Expand Down
1 change: 1 addition & 0 deletions crates/networking/p2p/network.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ pub async fn start_network(context: P2PContext, bootnodes: Vec<Node>) -> Result<
);

DiscoveryServer::spawn(
context.storage.clone(),
context.local_node.clone(),
context.signer,
udp_socket.clone(),
Expand Down
Loading
Loading