Skip to main content

reth_network_peers/
bootnodes.rs

1//! Bootnodes for the network
2//!
3//! Ethereum bootnodes come from <https://github.com/ledgerwatch/erigon/blob/devel/params/bootnodes.go>
4
5use crate::NodeRecord;
6use alloc::vec::Vec;
7
8/// Ethereum Foundation Go Bootnodes
9pub static MAINNET_BOOTNODES: [&str; 4] = [
10    "enode://d860a01f9722d78051619d1e2351aba3f43f943f6f00718d1b9baa4101932a1f5011f16bb2b1bb35db20d6fe28fa0bf09636d26a87d31de9ec6203eeedb1f666@18.138.108.67:30303",   // bootnode-aws-ap-southeast-1-001
11    "enode://22a8232c3abc76a16ae9d6c3b164f98775fe226f0917b0ca871128a74a8e9630b458460865bab457221f1d448dd9791d24c4e5d88786180ac185df813a68d4de@3.209.45.79:30303",     // bootnode-aws-us-east-1-001
12    "enode://2b252ab6a1d0f971d9722cb839a42cb81db019ba44c08754628ab4a823487071b5695317c8ccd085219c3a03af063495b2f1da8d18218da2d6a82981b45e6ffc@65.108.70.101:30303",   // bootnode-hetzner-hel
13    "enode://4aeb4ab6c14b23e2c4cfdce879c04b0748a20d8e9b59e25ded2a08143e265c6c25936e74cbc8e641e3312ca288673d91f2f93f8e277de3cfa444ecdaaf982052@157.90.35.166:30303",   // bootnode-hetzner-fsn
14];
15
16/// Ethereum Foundation Sepolia Bootnodes
17pub static SEPOLIA_BOOTNODES: [&str; 5] = [
18    "enode://4e5e92199ee224a01932a377160aa432f31d0b351f84ab413a8e0a42f4f36476f8fb1cbe914af0d9aef0d51665c214cf653c651c4bbd9d5550a934f241f1682b@138.197.51.181:30303", // sepolia-bootnode-1-nyc3
19    "enode://143e11fb766781d22d92a2e33f8f104cddae4411a122295ed1fdb6638de96a6ce65f5b7c964ba3763bba27961738fef7d3ecc739268f3e5e771fb4c87b6234ba@146.190.1.103:30303",  // sepolia-bootnode-1-sfo3
20    "enode://8b61dc2d06c3f96fddcbebb0efb29d60d3598650275dc469c22229d3e5620369b0d3dedafd929835fe7f489618f19f456fe7c0df572bf2d914a9f4e006f783a9@170.64.250.88:30303",  // sepolia-bootnode-1-syd1
21    "enode://10d62eff032205fcef19497f35ca8477bea0eadfff6d769a147e895d8b2b8f8ae6341630c645c30f5df6e67547c03494ced3d9c5764e8622a26587b083b028e8@139.59.49.206:30303",  // sepolia-bootnode-1-blr1
22    "enode://9e9492e2e8836114cc75f5b929784f4f46c324ad01daf87d956f98b3b6c5fcba95524d6e5cf9861dc96a2c8a171ea7105bb554a197455058de185fa870970c7c@138.68.123.152:30303", // sepolia-bootnode-1-ams3
23];
24
25/// Ethereum Foundation Holesky Bootnodes
26pub static HOLESKY_BOOTNODES: [&str; 2] = [
27    "enode://ac906289e4b7f12df423d654c5a962b6ebe5b3a74cc9e06292a85221f9a64a6f1cfdd6b714ed6dacef51578f92b34c60ee91e9ede9c7f8fadc4d347326d95e2b@146.190.13.128:30303",
28    "enode://a3435a0155a3e837c02f5e7f5662a2f1fbc25b48e4dc232016e1c51b544cb5b4510ef633ea3278c0e970fa8ad8141e2d4d0f9f95456c537ff05fdf9b31c15072@178.128.136.233:30303",
29];
30
31/// Ethereum Foundation Hoodi Bootnodes
32/// From: <https://github.com/eth-clients/hoodi/blob/main/metadata/enodes.yaml>
33pub static HOODI_BOOTNODES: [&str; 3] = [
34    "enode://2112dd3839dd752813d4df7f40936f06829fc54c0e051a93967c26e5f5d27d99d886b57b4ffcc3c475e930ec9e79c56ef1dbb7d86ca5ee83a9d2ccf36e5c240c@134.209.138.84:30303",
35    "enode://60203fcb3524e07c5df60a14ae1c9c5b24023ea5d47463dfae051d2c9f3219f309657537576090ca0ae641f73d419f53d8e8000d7a464319d4784acd7d2abc41@209.38.124.160:30303",
36    "enode://8ae4a48101b2299597341263da0deb47cc38aa4d3ef4b7430b897d49bfa10eb1ccfe1655679b1ed46928ef177fbf21b86837bd724400196c508427a6f41602cd@134.199.184.23:30303",
37];
38
39/// Returns parsed mainnet nodes
40pub fn mainnet_nodes() -> Vec<NodeRecord> {
41    parse_nodes(&MAINNET_BOOTNODES[..])
42}
43
44/// Returns parsed sepolia nodes
45pub fn sepolia_nodes() -> Vec<NodeRecord> {
46    parse_nodes(&SEPOLIA_BOOTNODES[..])
47}
48
49/// Returns parsed holesky nodes
50pub fn holesky_nodes() -> Vec<NodeRecord> {
51    parse_nodes(&HOLESKY_BOOTNODES[..])
52}
53
54/// Returns parsed hoodi nodes
55pub fn hoodi_nodes() -> Vec<NodeRecord> {
56    parse_nodes(&HOODI_BOOTNODES[..])
57}
58
59/// Parses all the nodes
60pub fn parse_nodes(nodes: impl IntoIterator<Item = impl AsRef<str>>) -> Vec<NodeRecord> {
61    nodes.into_iter().map(|s| s.as_ref().parse().unwrap()).collect()
62}