2024-06-28 16:04:57 +05:30
|
|
|
{.push raises: [].}
|
2024-02-07 12:42:20 +01:00
|
|
|
|
2025-07-04 17:10:53 +10:00
|
|
|
import chronicles, results, stint
|
2025-06-06 15:50:08 +02:00
|
|
|
|
2025-07-04 17:10:53 +10:00
|
|
|
logScope:
|
|
|
|
|
topics = "waku networks conf"
|
2025-06-06 15:50:08 +02:00
|
|
|
|
2025-07-04 17:10:53 +10:00
|
|
|
type
|
|
|
|
|
ShardingConfKind* = enum
|
|
|
|
|
AutoSharding
|
|
|
|
|
StaticSharding
|
2025-05-26 21:58:02 +02:00
|
|
|
|
2025-07-04 17:10:53 +10:00
|
|
|
ShardingConf* = object
|
|
|
|
|
case kind*: ShardingConfKind
|
|
|
|
|
of AutoSharding:
|
|
|
|
|
numShardsInCluster*: uint16
|
|
|
|
|
of StaticSharding:
|
|
|
|
|
discard
|
2025-05-08 07:05:35 +10:00
|
|
|
|
2025-07-04 17:10:53 +10:00
|
|
|
type NetworkConf* = object
|
2025-05-08 07:05:35 +10:00
|
|
|
maxMessageSize*: string # TODO: static convert to a uint64
|
2024-06-05 15:32:35 +02:00
|
|
|
clusterId*: uint16
|
2024-02-07 12:42:20 +01:00
|
|
|
rlnRelay*: bool
|
|
|
|
|
rlnRelayEthContractAddress*: string
|
2025-05-26 21:58:02 +02:00
|
|
|
rlnRelayChainId*: UInt256
|
2024-02-07 12:42:20 +01:00
|
|
|
rlnRelayDynamic*: bool
|
2024-02-28 17:19:20 +01:00
|
|
|
rlnEpochSizeSec*: uint64
|
|
|
|
|
rlnRelayUserMessageLimit*: uint64
|
2025-07-04 17:10:53 +10:00
|
|
|
shardingConf*: ShardingConf
|
2024-02-07 12:42:20 +01:00
|
|
|
discv5Discovery*: bool
|
|
|
|
|
discv5BootstrapNodes*: seq[string]
|
|
|
|
|
|
2024-04-04 08:19:31 +02:00
|
|
|
# cluster-id=1 (aka The Waku Network)
|
2024-02-07 12:42:20 +01:00
|
|
|
# Cluster configuration corresponding to The Waku Network. Note that it
|
2024-02-28 17:19:20 +01:00
|
|
|
# overrides existing cli configuration
|
2025-07-04 17:10:53 +10:00
|
|
|
proc TheWakuNetworkConf*(T: type NetworkConf): NetworkConf =
|
2025-06-20 11:46:08 +02:00
|
|
|
const RelayChainId = 59141'u256
|
2025-07-04 17:10:53 +10:00
|
|
|
return NetworkConf(
|
2024-02-07 12:42:20 +01:00
|
|
|
maxMessageSize: "150KiB",
|
2024-06-05 15:32:35 +02:00
|
|
|
clusterId: 1,
|
2024-02-07 12:42:20 +01:00
|
|
|
rlnRelay: true,
|
2025-06-20 11:46:08 +02:00
|
|
|
rlnRelayEthContractAddress: "0xB9cd878C90E49F797B4431fBF4fb333108CB90e6",
|
2024-02-07 12:42:20 +01:00
|
|
|
rlnRelayDynamic: true,
|
2025-05-26 21:58:02 +02:00
|
|
|
rlnRelayChainId: RelayChainId,
|
2024-06-27 11:45:21 +02:00
|
|
|
rlnEpochSizeSec: 600,
|
2024-07-15 18:00:44 +02:00
|
|
|
rlnRelayUserMessageLimit: 100,
|
2025-07-04 17:10:53 +10:00
|
|
|
shardingConf: ShardingConf(kind: AutoSharding, numShardsInCluster: 8),
|
2024-02-07 12:42:20 +01:00
|
|
|
discv5Discovery: true,
|
|
|
|
|
discv5BootstrapNodes:
|
|
|
|
|
@[
|
2024-07-03 18:11:11 +02:00
|
|
|
"enr:-QESuED0qW1BCmF-oH_ARGPr97Nv767bl_43uoy70vrbah3EaCAdK3Q0iRQ6wkSTTpdrg_dU_NC2ydO8leSlRpBX4pxiAYJpZIJ2NIJpcIRA4VDAim11bHRpYWRkcnO4XAArNiZub2RlLTAxLmRvLWFtczMud2FrdS5zYW5kYm94LnN0YXR1cy5pbQZ2XwAtNiZub2RlLTAxLmRvLWFtczMud2FrdS5zYW5kYm94LnN0YXR1cy5pbQYfQN4DgnJzkwABCAAAAAEAAgADAAQABQAGAAeJc2VjcDI1NmsxoQOTd-h5owwj-cx7xrmbvQKU8CV3Fomfdvcv1MBc-67T5oN0Y3CCdl-DdWRwgiMohXdha3UyDw",
|
|
|
|
|
"enr:-QEkuED9X80QF_jcN9gA2ZRhhmwVEeJnsg_Hyg7IFCTYnZD0BDI7a8HArE61NhJZFwygpHCWkgwSt2vqiABXkBxzIqZBAYJpZIJ2NIJpcIQiQlleim11bHRpYWRkcnO4bgA0Ni9ub2RlLTAxLmdjLXVzLWNlbnRyYWwxLWEud2FrdS5zYW5kYm94LnN0YXR1cy5pbQZ2XwA2Ni9ub2RlLTAxLmdjLXVzLWNlbnRyYWwxLWEud2FrdS5zYW5kYm94LnN0YXR1cy5pbQYfQN4DgnJzkwABCAAAAAEAAgADAAQABQAGAAeJc2VjcDI1NmsxoQPFAS8zz2cg1QQhxMaK8CzkGQ5wdHvPJcrgLzJGOiHpwYN0Y3CCdl-DdWRwgiMohXdha3UyDw",
|
|
|
|
|
"enr:-QEkuEBfEzJm_kigJ2HoSS_RBFJYhKHocGdkhhBr6jSUAWjLdFPp6Pj1l4yiTQp7TGHyu1kC6FyaU573VN8klLsEm-XuAYJpZIJ2NIJpcIQI2SVcim11bHRpYWRkcnO4bgA0Ni9ub2RlLTAxLmFjLWNuLWhvbmdrb25nLWMud2FrdS5zYW5kYm94LnN0YXR1cy5pbQZ2XwA2Ni9ub2RlLTAxLmFjLWNuLWhvbmdrb25nLWMud2FrdS5zYW5kYm94LnN0YXR1cy5pbQYfQN4DgnJzkwABCAAAAAEAAgADAAQABQAGAAeJc2VjcDI1NmsxoQOwsS69tgD7u1K50r5-qG5hweuTwa0W26aYPnvivpNlrYN0Y3CCdl-DdWRwgiMohXdha3UyDw",
|
2024-02-07 12:42:20 +01:00
|
|
|
],
|
|
|
|
|
)
|
2025-07-04 17:10:53 +10:00
|
|
|
|
|
|
|
|
proc validateShards*(
|
|
|
|
|
shardingConf: ShardingConf, shards: seq[uint16]
|
|
|
|
|
): Result[void, string] =
|
|
|
|
|
case shardingConf.kind
|
|
|
|
|
of StaticSharding:
|
|
|
|
|
return ok()
|
|
|
|
|
of AutoSharding:
|
|
|
|
|
let numShardsInCluster = shardingConf.numShardsInCluster
|
|
|
|
|
for shard in shards:
|
|
|
|
|
if shard >= numShardsInCluster:
|
|
|
|
|
let msg =
|
|
|
|
|
"validateShards invalid shard: " & $shard & " when numShardsInCluster: " &
|
|
|
|
|
$numShardsInCluster
|
|
|
|
|
error "validateShards failed", error = msg
|
|
|
|
|
return err(msg)
|
|
|
|
|
|
|
|
|
|
return ok()
|