mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-02 22:13:07 +00:00
* Reserve `networkconfig` name to waku network related settings * Rename cluster conf to network conf A `NetworkConf` is a Waku network configuration. # Conflicts: # tests/factory/test_waku_conf.nim # Conflicts: # tests/factory/test_waku_conf.nim * Improve sharding configuration A smarter data types simplifies the logic. * Fixing tests * fixup! rename to endpointConf * wip: autosharding is a specific configuration state and treat it like it # Conflicts: # waku/factory/external_config.nim * refactor lightpush handler some metrics error reporting were missing # Conflicts: # waku/waku_lightpush/protocol.nim * test_node_factory tests pass * remove warnings * fix tests * Revert eager previous replace-all command * fix up build tools compilation * metadata is used to store cluster id * Mount relay routes in static sharding * Rename activeRelayShards to subscribeShards To make it clearer that these are the shards the node will subscribe to. * Remove unused msg var * Improve error handling * Set autosharding as default, with 1 shard in network Also makes shards to subscribe to all shards in auto sharding, none in static sharding.
62 lines
2.0 KiB
Nim
62 lines
2.0 KiB
Nim
{.push raises: [].}
|
||
|
||
import waku/[common/logging, factory/[waku, networks_config, external_config]]
|
||
import
|
||
std/[options, strutils, os, sequtils],
|
||
chronicles,
|
||
chronos,
|
||
metrics,
|
||
libbacktrace,
|
||
libp2p/crypto/crypto
|
||
|
||
export
|
||
networks_config, waku, logging, options, strutils, os, sequtils, stewNet, chronicles,
|
||
chronos, metrics, libbacktrace, crypto
|
||
|
||
proc setup*(): Waku =
|
||
const versionString = "version / git commit hash: " & waku.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 twnNetworkConf = NetworkConf.TheWakuNetworkConf()
|
||
if len(conf.shards) != 0:
|
||
conf.pubsubTopics = conf.shards.mapIt(twnNetworkConf.pubsubTopics[it.uint16])
|
||
else:
|
||
conf.pubsubTopics = twnNetworkConf.pubsubTopics
|
||
|
||
# Override configuration
|
||
conf.maxMessageSize = twnNetworkConf.maxMessageSize
|
||
conf.clusterId = twnNetworkConf.clusterId
|
||
conf.rlnRelayEthContractAddress = twnNetworkConf.rlnRelayEthContractAddress
|
||
conf.rlnRelayDynamic = twnNetworkConf.rlnRelayDynamic
|
||
conf.discv5Discovery = twnNetworkConf.discv5Discovery
|
||
conf.discv5BootstrapNodes =
|
||
conf.discv5BootstrapNodes & twnNetworkConf.discv5BootstrapNodes
|
||
conf.rlnEpochSizeSec = twnNetworkConf.rlnEpochSizeSec
|
||
conf.rlnRelayUserMessageLimit = twnNetworkConf.rlnRelayUserMessageLimit
|
||
|
||
# Only set rlnRelay to true if relay is configured
|
||
if conf.relay:
|
||
conf.rlnRelay = twnNetworkConf.rlnRelay
|
||
|
||
debug "Starting node"
|
||
var waku = Waku.new(conf).valueOr:
|
||
error "Waku initialization failed", error = error
|
||
quit(QuitFailure)
|
||
|
||
(waitFor startWaku(addr waku)).isOkOr:
|
||
error "Starting waku failed", error = error
|
||
quit(QuitFailure)
|
||
|
||
# set triggerSelf to false, we don't want to process our own stealthCommitments
|
||
waku.node.wakuRelay.triggerSelf = false
|
||
|
||
info "Node setup complete"
|
||
return waku
|