#[cfg(feature = "libp2p")]
use discv5::ConfigBuilder;
#[cfg(feature = "libp2p")]
use discv5::ListenConfig;
#[cfg(feature = "libp2p")]
use discv5::{enr::CombinedKey, Discv5};
#[cfg(feature = "libp2p")]
use std::net::Ipv4Addr;
#[cfg(not(feature = "libp2p"))]
fn main() {}
#[cfg(feature = "libp2p")]
#[tokio::main]
async fn main() {
let filter_layer = tracing_subscriber::EnvFilter::try_from_default_env()
.or_else(|_| tracing_subscriber::EnvFilter::try_new("info"))
.unwrap();
let _ = tracing_subscriber::fmt()
.with_env_filter(filter_layer)
.try_init();
let listen_config = ListenConfig::Ipv4 {
ip: Ipv4Addr::UNSPECIFIED,
port: 9000,
};
let enr_key = CombinedKey::generate_secp256k1();
let enr = enr::Enr::empty(&enr_key).unwrap();
let config = ConfigBuilder::new(listen_config).build();
let multiaddr = std::env::args()
.nth(1)
.expect("A multiaddr must be supplied");
let mut discv5: Discv5 = Discv5::new(enr, enr_key, config).unwrap();
discv5.start().await.unwrap();
match discv5.request_enr(multiaddr).await {
Ok(enr) => {
println!("ENR Found:");
println!("Base64:{}", enr.to_base64());
println!("{enr}");
}
Err(e) => {
println!("Error:{e:?}");
}
}
}