Skip to content

Commit de3ec32

Browse files
authored
add DNS resolution for bootnodes after parsing (#152)
1 parent ac5bff3 commit de3ec32

File tree

3 files changed

+25
-4
lines changed

3 files changed

+25
-4
lines changed

p2p/discover/table.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ package discover
2525
import (
2626
"context"
2727
"fmt"
28+
"net"
2829
"net/netip"
2930
"slices"
3031
"sync"
@@ -205,6 +206,18 @@ func (tab *Table) close() {
205206
func (tab *Table) setFallbackNodes(nodes []*enode.Node) error {
206207
nursery := make([]*enode.Node, 0, len(nodes))
207208
for _, n := range nodes {
209+
// Resolve DNS names to IP addresses for bootstrap nodes if needed.
210+
if !n.IPAddr().IsValid() && n.Hostname() != "" {
211+
ips, err := net.LookupIP(n.Hostname())
212+
if err != nil {
213+
return err
214+
}
215+
ip := ips[0]
216+
if ipv4 := ip.To4(); ipv4 != nil {
217+
ip = ipv4
218+
}
219+
n = enode.NewV4(n.Pubkey(), ip, n.TCP(), n.UDP())
220+
}
208221
if err := n.ValidateComplete(); err != nil {
209222
return fmt.Errorf("bad bootstrap node %q: %v", n, err)
210223
}

p2p/enode/urlv4_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,15 @@ var parseNodeTests = []struct {
8686
3,
8787
).WithHostname("valid."),
8888
},
89+
{
90+
input: "enode://1dd9d65c4552b5eb43d5ad55a2ee3f56c6cbc1c64a5c8d659f51fcd51bace24351232b8d7821617d2b29b54b81cdefb9b3e9c37d7fd5f63270bcc9e1a6f6a439@invalid.:3",
91+
wantResult: NewV4(
92+
hexPubkey("1dd9d65c4552b5eb43d5ad55a2ee3f56c6cbc1c64a5c8d659f51fcd51bace24351232b8d7821617d2b29b54b81cdefb9b3e9c37d7fd5f63270bcc9e1a6f6a439"),
93+
nil,
94+
3,
95+
3,
96+
).WithHostname("invalid."),
97+
},
8998
{
9099
input: "enode://1dd9d65c4552b5eb43d5ad55a2ee3f56c6cbc1c64a5c8d659f51fcd51bace24351232b8d7821617d2b29b54b81cdefb9b3e9c37d7fd5f63270bcc9e1a6f6a439@[::]:52150",
91100
wantResult: NewV4(

params/bootnodes.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,15 @@ var OdysseyBootnodes = []string{
7979
// Aeneid testnet network.
8080
var AeneidBootnodes = []string{
8181
// Upstream bootnodes
82-
"enode://a7e893eb4b07bd9b0c0659730c066564dff0f5fa98c08a7df9f380b84e64fbea16165ee5cce6c3414d64bea8cacc1ac200540c50607a7bf170b9d5504f81bbf8@35.211.57.203:30303",
82+
"enode://a7e893eb4b07bd9b0c0659730c066564dff0f5fa98c08a7df9f380b84e64fbea16165ee5cce6c3414d64bea8cacc1ac200540c50607a7bf170b9d5504f81bbf8@b1-b.odyssey-devnet.storyrpc.io:30303",
8383
}
8484

8585
// StoryBootnodes are the enode URLs of the P2P bootstrap nodes running on the
8686
// Story main network.
8787
var StoryBootnodes = []string{
8888
// Upstream bootnodes
89-
// TODO: update bootnodes for mainnet
90-
"enode://f42110982b6ddaa4de8031f9fecb619d181902db5529a43bc9b1187debbc67771bf937b2210cbfd33babd2acbe138506596e23d0d1792ab3cb5229c5bb051544@35.211.238.157:30303",
91-
"enode://2ae459a7cc28b59822377deec266e24e5ed00374d7a83e2e8d0d67dd89dc2b80366c1353c7909fe81b840f6081188850677fa20dd5d262c9e3f67eb23d0be0b5@35.211.209.170:30303",
89+
"enode://f42110982b6ddaa4de8031f9fecb619d181902db5529a43bc9b1187debbc67771bf937b2210cbfd33babd2acbe138506596e23d0d1792ab3cb5229c5bb051544@b1.storyrpc.io:30303",
90+
"enode://2ae459a7cc28b59822377deec266e24e5ed00374d7a83e2e8d0d67dd89dc2b80366c1353c7909fe81b840f6081188850677fa20dd5d262c9e3f67eb23d0be0b5@b2.storyrpc.io:30303",
9291
}
9392

9493
var V5Bootnodes = []string{

0 commit comments

Comments
 (0)