chore(deps): bump enr, discv5, secp256k1 (#7000)

Co-authored-by: Emilia Hane <elsaemiliaevahane@gmail.com>
This commit is contained in:
DaniPopes
2024-04-25 21:50:38 +02:00
committed by GitHub
parent 3ad3bbc593
commit e2e5201d8a
18 changed files with 169 additions and 270 deletions

View File

@@ -392,8 +392,6 @@ pub enum DnsDiscoveryEvent {
/// Converts an [Enr] into a [NodeRecord]
fn convert_enr_node_record(enr: &Enr<SecretKey>) -> Option<DnsNodeRecordUpdate> {
use alloy_rlp::Decodable;
let node_record = NodeRecord {
address: enr.ip4().map(IpAddr::from).or_else(|| enr.ip6().map(IpAddr::from))?,
tcp_port: enr.tcp4().or_else(|| enr.tcp6())?,
@@ -402,8 +400,7 @@ fn convert_enr_node_record(enr: &Enr<SecretKey>) -> Option<DnsNodeRecordUpdate>
}
.into_ipv4_mapped();
let mut maybe_fork_id = enr.get(b"eth")?;
let fork_id = ForkId::decode(&mut maybe_fork_id).ok();
let fork_id = enr.get_decodable::<ForkId>(b"eth").transpose().ok()?;
Some(DnsNodeRecordUpdate { node_record, fork_id, enr: enr.clone() })
}
@@ -412,12 +409,63 @@ fn convert_enr_node_record(enr: &Enr<SecretKey>) -> Option<DnsNodeRecordUpdate>
mod tests {
use super::*;
use crate::tree::TreeRootEntry;
use alloy_rlp::Encodable;
use alloy_rlp::{Decodable, Encodable};
use enr::EnrKey;
use reth_primitives::{Chain, Hardfork, MAINNET};
use reth_primitives::{Chain, ForkHash, Hardfork, MAINNET};
use secp256k1::rand::thread_rng;
use std::{future::poll_fn, net::Ipv4Addr};
#[test]
fn test_convert_enr_node_record() {
// rig
let secret_key = SecretKey::new(&mut secp256k1::rand::thread_rng());
let enr = Enr::builder()
.ip("127.0.0.1".parse().unwrap())
.udp4(9000)
.tcp4(30303)
.add_value(b"eth", &MAINNET.latest_fork_id())
.build(&secret_key)
.unwrap();
// test
let node_record_update = convert_enr_node_record(&enr).unwrap();
assert_eq!(node_record_update.node_record.address, "127.0.0.1".parse::<IpAddr>().unwrap());
assert_eq!(node_record_update.node_record.tcp_port, 30303);
assert_eq!(node_record_update.node_record.udp_port, 9000);
assert_eq!(node_record_update.fork_id, Some(MAINNET.latest_fork_id()));
assert_eq!(node_record_update.enr, enr);
}
#[test]
fn test_decode_and_convert_enr_node_record() {
// rig
let secret_key = SecretKey::new(&mut secp256k1::rand::thread_rng());
let enr = Enr::builder()
.ip("127.0.0.1".parse().unwrap())
.udp4(9000)
.tcp4(30303)
.add_value(b"eth", &MAINNET.latest_fork_id())
.add_value(b"opstack", &ForkId { hash: ForkHash(rand::random()), next: rand::random() })
.build(&secret_key)
.unwrap();
let mut encoded_enr = vec![];
enr.encode(&mut encoded_enr);
// test
let decoded_enr = Enr::decode(&mut &encoded_enr[..]).unwrap();
let node_record_update = convert_enr_node_record(&decoded_enr).unwrap();
assert_eq!(node_record_update.node_record.address, "127.0.0.1".parse::<IpAddr>().unwrap());
assert_eq!(node_record_update.node_record.tcp_port, 30303);
assert_eq!(node_record_update.node_record.udp_port, 9000);
assert_eq!(node_record_update.fork_id, Some(MAINNET.latest_fork_id()));
assert_eq!(node_record_update.enr, enr);
}
#[tokio::test]
async fn test_start_root_sync() {
reth_tracing::init_test_tracing();
@@ -461,10 +509,8 @@ mod tests {
resolver.insert(link.domain.clone(), root.to_string());
let mut builder = Enr::builder();
let mut buf = Vec::new();
let fork_id = MAINNET.hardfork_fork_id(Hardfork::Frontier).unwrap();
fork_id.encode(&mut buf);
builder.ip4(Ipv4Addr::LOCALHOST).udp4(30303).tcp4(30303).add_value(b"eth", &buf);
builder.ip4(Ipv4Addr::LOCALHOST).udp4(30303).tcp4(30303).add_value(b"eth", &fork_id);
let enr = builder.build(&secret_key).unwrap();
resolver.insert(format!("{}.{}", root.enr_root.clone(), link.domain), enr.to_base64());

View File

@@ -22,7 +22,7 @@ use crate::error::{
ParseEntryResult,
};
use data_encoding::{BASE32_NOPAD, BASE64URL_NOPAD};
use enr::{Enr, EnrError, EnrKey, EnrKeyUnambiguous, EnrPublicKey};
use enr::{Enr, EnrKey, EnrKeyUnambiguous, EnrPublicKey, Error as EnrError};
use reth_primitives::{hex, Bytes};
use secp256k1::SecretKey;
#[cfg(feature = "serde")]