Skip to content

Commit

Permalink
don't start node when it's discv5 only (#2947)
Browse files Browse the repository at this point in the history
  • Loading branch information
gabrielmer authored Aug 1, 2024
1 parent 7bd4100 commit 6485550
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 8 deletions.
5 changes: 4 additions & 1 deletion examples/wakustealthcommitments/node_spec.nim
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ proc setup*(): Waku =
# Override configuration
conf.maxMessageSize = twnClusterConf.maxMessageSize
conf.clusterId = twnClusterConf.clusterId
conf.rlnRelay = twnClusterConf.rlnRelay
conf.rlnRelayEthContractAddress = twnClusterConf.rlnRelayEthContractAddress
conf.rlnRelayDynamic = twnClusterConf.rlnRelayDynamic
conf.rlnRelayBandwidthThreshold = twnClusterConf.rlnRelayBandwidthThreshold
Expand All @@ -44,6 +43,10 @@ proc setup*(): Waku =
conf.rlnEpochSizeSec = twnClusterConf.rlnEpochSizeSec
conf.rlnRelayUserMessageLimit = twnClusterConf.rlnRelayUserMessageLimit

# Only set rlnRelay to true if relay is configured
if conf.relay:
conf.rlnRelay = twnClusterConf.rlnRelay

debug "Starting node"
var waku = Waku.init(conf).valueOr:
error "Waku initialization failed", error = error
Expand Down
6 changes: 6 additions & 0 deletions waku/factory/external_config.nim
Original file line number Diff line number Diff line change
Expand Up @@ -566,6 +566,12 @@ type WakuNodeConf* = object
name: "discv5-bits-per-hop"
.}: int

discv5Only* {.
desc: "Disable all protocols other than discv5",
defaultValue: false,
name: "discv5-only"
.}: bool

## waku peer exchange config
peerExchange* {.
desc: "Enable waku peer exchange protocol (responder side): true|false",
Expand Down
4 changes: 4 additions & 0 deletions waku/factory/node_factory.nim
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,10 @@ proc setupProtocols(
## Optionally include persistent message storage.
## No protocols are started yet.

if conf.discv5Only:
notice "Running node only with Discv5, not mounting additional protocols"
return ok()

node.mountMetadata(conf.clusterId).isOkOr:
return err("failed to mount waku metadata protocol: " & error)

Expand Down
18 changes: 11 additions & 7 deletions waku/factory/waku.nim
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,6 @@ proc init*(T: type Waku, conf: WakuNodeConf): Result[Waku, string] =
# Override configuration
confCopy.maxMessageSize = twnClusterConf.maxMessageSize
confCopy.clusterId = twnClusterConf.clusterId
confCopy.rlnRelay = twnClusterConf.rlnRelay
confCopy.rlnRelayEthContractAddress = twnClusterConf.rlnRelayEthContractAddress
confCopy.rlnRelayChainId = twnClusterConf.rlnRelayChainId
confCopy.rlnRelayDynamic = twnClusterConf.rlnRelayDynamic
Expand All @@ -115,6 +114,10 @@ proc init*(T: type Waku, conf: WakuNodeConf): Result[Waku, string] =
confCopy.discv5BootstrapNodes & twnClusterConf.discv5BootstrapNodes
confCopy.rlnEpochSizeSec = twnClusterConf.rlnEpochSizeSec
confCopy.rlnRelayUserMessageLimit = twnClusterConf.rlnRelayUserMessageLimit

# Only set rlnRelay to true if relay is configured
if confCopy.relay:
confCopy.rlnRelay = twnClusterConf.rlnRelay
else:
discard

Expand Down Expand Up @@ -216,15 +219,16 @@ proc updateWaku(waku: ptr Waku): Result[void, string] =
return ok()

proc startWaku*(waku: ptr Waku): Future[Result[void, string]] {.async: (raises: []).} =
(await startNode(waku.node, waku.conf, waku.dynamicBootstrapNodes)).isOkOr:
return err("error while calling startNode: " & $error)
if not waku[].conf.discv5Only:
(await startNode(waku.node, waku.conf, waku.dynamicBootstrapNodes)).isOkOr:
return err("error while calling startNode: " & $error)

# Update waku data that is set dynamically on node start
updateWaku(waku).isOkOr:
return err("Error in updateApp: " & $error)
# Update waku data that is set dynamically on node start
updateWaku(waku).isOkOr:
return err("Error in updateApp: " & $error)

## Discv5
if waku[].conf.discv5Discovery:
if waku[].conf.discv5Discovery or waku[].conf.discv5Only:
waku[].wakuDiscV5 = waku_discv5.setupDiscoveryV5(
waku.node.enr, waku.node.peerManager, waku.node.topicSubscriptionQueue, waku.conf,
waku.dynamicBootstrapNodes, waku.rng, waku.key,
Expand Down

0 comments on commit 6485550

Please sign in to comment.