diff --git a/Cargo.lock b/Cargo.lock index 6077800..0829c64 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1841,6 +1841,7 @@ dependencies = [ "sha2", "snap", "ssz_types", + "thiserror 2.0.17", "tracing", "tree_hash", "tree_hash_derive", diff --git a/crates/net/p2p/Cargo.toml b/crates/net/p2p/Cargo.toml index 4751a03..77fa2e7 100644 --- a/crates/net/p2p/Cargo.toml +++ b/crates/net/p2p/Cargo.toml @@ -33,6 +33,8 @@ ssz_types = "0.14.0" tree_hash = "0.12.0" tree_hash_derive = "0.12.0" +thiserror.workspace = true + sha2 = "0.10" prometheus.workspace = true diff --git a/crates/net/p2p/src/lib.rs b/crates/net/p2p/src/lib.rs index 487bbc8..aeca617 100644 --- a/crates/net/p2p/src/lib.rs +++ b/crates/net/p2p/src/lib.rs @@ -202,6 +202,14 @@ pub fn parse_enrs(enrs: Vec) -> Vec { .iter() .find(|(key, _)| key.as_ref() == b"secp256k1") .expect("node record missing public key"); + + let (_, ip_bytes) = record + .pairs + .iter() + .find(|(key, _)| key.as_ref() == b"ip") + .expect("node record missing IP address"); + + let ip = IpAddr::decode(ip_bytes).unwrap(); let public_key_bytes = H264::decode(public_key_rlp).unwrap(); let public_key = @@ -210,7 +218,7 @@ pub fn parse_enrs(enrs: Vec) -> Vec { let quic_port = u16::decode(quic_port_bytes.as_ref()).unwrap(); bootnodes.push(Bootnode { - ip: "127.0.0.1".parse().unwrap(), + ip, quic_port, public_key: public_key.into(), }); @@ -237,4 +245,4 @@ fn compute_message_id(message: &libp2p::gossipsub::Message) -> libp2p::gossipsub hasher.update(data); let hash = hasher.finalize(); libp2p::gossipsub::MessageId(hash[..20].to_vec()) -} +} \ No newline at end of file