2024-03-06 13:14:33 +00:00
|
|
|
|
when (NimMajor, NimMinor) < (1, 4):
|
|
|
|
|
{.push raises: [Defect].}
|
|
|
|
|
else:
|
|
|
|
|
{.push raises: [].}
|
|
|
|
|
|
|
|
|
|
import ../../apps/wakunode2/[networks_config, app, external_config]
|
|
|
|
|
import ../../waku/common/logging
|
|
|
|
|
import
|
|
|
|
|
std/[options, strutils, os, sequtils],
|
|
|
|
|
stew/shims/net as stewNet,
|
|
|
|
|
chronicles,
|
|
|
|
|
chronos,
|
|
|
|
|
metrics,
|
|
|
|
|
libbacktrace,
|
|
|
|
|
libp2p/crypto/crypto
|
|
|
|
|
|
|
|
|
|
export
|
2024-03-15 23:08:47 +00:00
|
|
|
|
networks_config, app, logging, options, strutils, os, sequtils, stewNet, chronicles,
|
|
|
|
|
chronos, metrics, libbacktrace, crypto
|
2024-03-06 13:14:33 +00:00
|
|
|
|
|
|
|
|
|
proc setup*(): App =
|
|
|
|
|
const versionString = "version / git commit hash: " & app.git_version
|
|
|
|
|
let rng = crypto.newRng()
|
|
|
|
|
|
|
|
|
|
let confRes = WakuNodeConf.load(version = versionString)
|
|
|
|
|
if confRes.isErr():
|
|
|
|
|
error "failure while loading the configuration", error = $confRes.error
|
|
|
|
|
quit(QuitFailure)
|
|
|
|
|
|
|
|
|
|
var conf = confRes.get()
|
|
|
|
|
|
|
|
|
|
let twnClusterConf = ClusterConf.TheWakuNetworkConf()
|
|
|
|
|
if len(conf.shards) != 0:
|
|
|
|
|
conf.pubsubTopics = conf.shards.mapIt(twnClusterConf.pubsubTopics[it.uint16])
|
|
|
|
|
else:
|
|
|
|
|
conf.pubsubTopics = twnClusterConf.pubsubTopics
|
|
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
conf.discv5Discovery = twnClusterConf.discv5Discovery
|
|
|
|
|
conf.discv5BootstrapNodes =
|
|
|
|
|
conf.discv5BootstrapNodes & twnClusterConf.discv5BootstrapNodes
|
|
|
|
|
conf.rlnEpochSizeSec = twnClusterConf.rlnEpochSizeSec
|
|
|
|
|
conf.rlnRelayUserMessageLimit = twnClusterConf.rlnRelayUserMessageLimit
|
|
|
|
|
|
|
|
|
|
var wakunode2 = App.init(rng, conf)
|
|
|
|
|
## Peer persistence
|
|
|
|
|
let res1 = wakunode2.setupPeerPersistence()
|
|
|
|
|
if res1.isErr():
|
|
|
|
|
error "1/5 Setting up storage failed", error = $res1.error
|
|
|
|
|
quit(QuitFailure)
|
|
|
|
|
|
|
|
|
|
debug "2/5 Retrieve dynamic bootstrap nodes"
|
|
|
|
|
|
|
|
|
|
let res3 = wakunode2.setupDyamicBootstrapNodes()
|
|
|
|
|
if res3.isErr():
|
|
|
|
|
error "2/5 Retrieving dynamic bootstrap nodes failed", error = $res3.error
|
|
|
|
|
quit(QuitFailure)
|
|
|
|
|
|
|
|
|
|
debug "3/5 Initializing node"
|
|
|
|
|
|
|
|
|
|
let res4 = wakunode2.setupWakuApp()
|
|
|
|
|
if res4.isErr():
|
|
|
|
|
error "3/5 Initializing node failed", error = $res4.error
|
|
|
|
|
quit(QuitFailure)
|
|
|
|
|
|
|
|
|
|
debug "4/5 Mounting protocols"
|
|
|
|
|
|
|
|
|
|
var res5: Result[void, string]
|
|
|
|
|
try:
|
|
|
|
|
res5 = waitFor wakunode2.setupAndMountProtocols()
|
|
|
|
|
if res5.isErr():
|
|
|
|
|
error "4/5 Mounting protocols failed", error = $res5.error
|
|
|
|
|
quit(QuitFailure)
|
|
|
|
|
except Exception:
|
|
|
|
|
error "4/5 Mounting protocols failed", error = getCurrentExceptionMsg()
|
|
|
|
|
quit(QuitFailure)
|
|
|
|
|
|
|
|
|
|
debug "5/5 Starting node and mounted protocols"
|
|
|
|
|
|
|
|
|
|
# set triggerSelf to false, we don't want to process our own stealthCommitments
|
|
|
|
|
wakunode2.node.wakuRelay.triggerSelf = false
|
|
|
|
|
|
|
|
|
|
let res6 = wakunode2.startApp()
|
|
|
|
|
if res6.isErr():
|
|
|
|
|
error "5/5 Starting node and protocols failed", error = $res6.error
|
|
|
|
|
quit(QuitFailure)
|
|
|
|
|
|
|
|
|
|
info "Node setup complete"
|
|
|
|
|
return wakunode2
|