4.6 KiB
title |
---|
Configure Peer Discovery |
This guide provides detailed steps to configure a nwaku
node to discover and connect with peers in the Waku Network.
:::info
You can configure a nwaku
node to use multiple peer discovery mechanisms simultaneously.
:::
Configure Static Peers
You can provide static peers to a nwaku
node during startup using the staticnode
configuration option. To connect to multiple peers on startup, repeat the staticnode
option:
./build/wakunode2 \
--staticnode=[PEER MULTIADDR 1] \
--staticnode=[PEER MULTIADDR 2]
For example, consider a nwaku
node that connects to two static peers on the same local host (IP: 0.0.0.0
) using TCP ports 60002
and 60003
:
./build/wakunode2 \
--staticnode=/ip4/0.0.0.0/tcp/60002/p2p/16Uiu2HAkzjwwgEAXfeGNMKFPSpc6vGBRqCdTLG5q3Gmk2v4pQw7H \
--staticnode=/ip4/0.0.0.0/tcp/60003/p2p/16Uiu2HAmFBA7LGtwY5WVVikdmXVo3cKLqkmvVtuDu63fe8safeQJ
Configure DNS Discovery
To enable DNS Discovery in a nwaku
node, use the following configuration options:
dns-discovery
: EnablesDNS Discovery
on the node (disabled by default).dns-discovery-url
: URL for DNS node list in the formatenrtree://<key>@<fqdn>
where<fqdn>
is the fully qualified domain name and<key>
is the base32 encoding of the compressed 32-byte public key that signed the list at that location.dns-discovery-name-server
(optional): DNS name server IPs to query. You can repeat this option to provide multiple DNS name servers.
./build/wakunode2 \
--dns-discovery=true \
--dns-discovery-url=enrtree://[PUBLIC KEY]@[DOMAIN NAME] \
--dns-discovery-name-server=[DNS NAME SERVER IP]
:::info
If you omit the dns-discovery-name-server
option, nwaku
will attempt to use the CloudFlare servers 1.1.1.1
and 1.0.0.1
.
:::
For example, consider a nwaku
node that enables DNS Discovery
, connects to a DNS node list, and queries the IPs 8.8.8.8
and 8.8.4.4
:
./build/wakunode2 \
--dns-discovery=true \
--dns-discovery-url=enrtree://AO47IDOLBKH72HIZZOXQP6NMRESAN7CHYWIBNXDXWRJRZWLODKII6@test.wakuv2.nodes.status.im \
--dns-discovery-name-server=8.8.8.8 \
--dns-discovery-name-server=8.8.4.4
Configure Discv5
To enable Discv5 in a nwaku
node, use the following configuration options:
discv5-discovery
: EnablesDiscv5
on the node (disabled by default).discv5-bootstrap-node
: ENR forDiscv5
routing table bootstrap node. You can repeat this option to provide multiple bootstrap entries.
./build/wakunode2 \
--discv5-discovery=true \
--discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 1] \
--discv5-bootstrap-node=[DISCV5 ENR BOOTSTRAP ENTRY 2]
For example, consider a nwaku
node that enables Discv5
and bootstraps its routing table using a static ENR
:
./build/wakunode2 \
--discv5-discovery=true \
--discv5-bootstrap-node=enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw
:::info
When Discv5 is enabled and used with DNS Discovery, the nwaku
node will attempt to bootstrap the Discv5 routing table by extracting ENRs
from peers discovered through DNS.
:::
Configure Peer Exchange
To enable Peer Exchange in a nwaku
node, use the following configuration options:
peer-exchange
: EnablesPeer Exchange
on the node as a responder (disabled by default).peer-exchange-node
(optional): Multiaddr for bootstrap node with the peer exchange protocol enabled.
./build/wakunode2 \
--peer-exchange=true \
--peer-exchange-node=[PEER MULTIADDR WITH EXCHANGE ENABLED]
For example, consider two nwaku
nodes configured as a server
(peer exchange responder node) and client
(node using peer exchange) on the same local host (IP: 0.0.0.0
):
./build/wakunode2 --peer-exchange=true
./build/wakunode2 \
--tcp-port=30305 \
--ports-shift=1 \
--peer-exchange-node=/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmLCe6zVqCS6KMqqRbbhyoJjfYZGr1Q3thTSbyKzibQkFR
:::info
nwaku
provides a relay-peer-exchange
option via libp2p
for peer exchange, allowing network growth through neighbouring nodes. However, this feature can compromise security and network robustness, so we recommend only using it in high-trust environments.
:::