mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-03-29 12:23:42 +00:00
112 lines
4.7 KiB
Nim
112 lines
4.7 KiB
Nim
{.push raises: [].}
|
|
|
|
import chronicles, results, stint
|
|
|
|
logScope:
|
|
topics = "waku networks conf"
|
|
|
|
type
|
|
ShardingConfKind* = enum
|
|
AutoSharding
|
|
StaticSharding
|
|
|
|
ShardingConf* = object
|
|
case kind*: ShardingConfKind
|
|
of AutoSharding:
|
|
numShardsInCluster*: uint16
|
|
of StaticSharding:
|
|
discard
|
|
|
|
type NetworkConf* = object
|
|
maxMessageSize*: string # TODO: static convert to a uint64
|
|
clusterId*: uint16
|
|
rlnRelay*: bool
|
|
rlnRelayEthContractAddress*: string
|
|
rlnRelayChainId*: UInt256
|
|
rlnRelayDynamic*: bool
|
|
rlnEpochSizeSec*: uint64
|
|
rlnRelayUserMessageLimit*: uint64
|
|
shardingConf*: ShardingConf
|
|
discv5Discovery*: bool
|
|
discv5BootstrapNodes*: seq[string]
|
|
enableKadDiscovery*: bool
|
|
kadBootstrapNodes*: seq[string]
|
|
entryNodes*: seq[string]
|
|
mix*: bool
|
|
p2pReliability*: bool
|
|
|
|
# cluster-id=1 (aka The Waku Network)
|
|
# Cluster configuration corresponding to The Waku Network. Note that it
|
|
# overrides existing cli configuration
|
|
proc TheWakuNetworkConf*(T: type NetworkConf): NetworkConf =
|
|
const RelayChainId = 59141'u256
|
|
return NetworkConf(
|
|
maxMessageSize: "150KiB",
|
|
clusterId: 1,
|
|
rlnRelay: true,
|
|
rlnRelayEthContractAddress: "0xB9cd878C90E49F797B4431fBF4fb333108CB90e6",
|
|
rlnRelayDynamic: true,
|
|
rlnRelayChainId: RelayChainId,
|
|
rlnEpochSizeSec: 600,
|
|
rlnRelayUserMessageLimit: 100,
|
|
shardingConf: ShardingConf(kind: AutoSharding, numShardsInCluster: 8),
|
|
enableKadDiscovery: false,
|
|
kadBootstrapNodes: @[],
|
|
entryNodes: @[],
|
|
mix: false,
|
|
p2pReliability: false,
|
|
discv5Discovery: true,
|
|
discv5BootstrapNodes: @[
|
|
"enr:-QESuED0qW1BCmF-oH_ARGPr97Nv767bl_43uoy70vrbah3EaCAdK3Q0iRQ6wkSTTpdrg_dU_NC2ydO8leSlRpBX4pxiAYJpZIJ2NIJpcIRA4VDAim11bHRpYWRkcnO4XAArNiZub2RlLTAxLmRvLWFtczMud2FrdS5zYW5kYm94LnN0YXR1cy5pbQZ2XwAtNiZub2RlLTAxLmRvLWFtczMud2FrdS5zYW5kYm94LnN0YXR1cy5pbQYfQN4DgnJzkwABCAAAAAEAAgADAAQABQAGAAeJc2VjcDI1NmsxoQOTd-h5owwj-cx7xrmbvQKU8CV3Fomfdvcv1MBc-67T5oN0Y3CCdl-DdWRwgiMohXdha3UyDw",
|
|
"enr:-QEkuED9X80QF_jcN9gA2ZRhhmwVEeJnsg_Hyg7IFCTYnZD0BDI7a8HArE61NhJZFwygpHCWkgwSt2vqiABXkBxzIqZBAYJpZIJ2NIJpcIQiQlleim11bHRpYWRkcnO4bgA0Ni9ub2RlLTAxLmdjLXVzLWNlbnRyYWwxLWEud2FrdS5zYW5kYm94LnN0YXR1cy5pbQZ2XwA2Ni9ub2RlLTAxLmdjLXVzLWNlbnRyYWwxLWEud2FrdS5zYW5kYm94LnN0YXR1cy5pbQYfQN4DgnJzkwABCAAAAAEAAgADAAQABQAGAAeJc2VjcDI1NmsxoQPFAS8zz2cg1QQhxMaK8CzkGQ5wdHvPJcrgLzJGOiHpwYN0Y3CCdl-DdWRwgiMohXdha3UyDw",
|
|
"enr:-QEkuEBfEzJm_kigJ2HoSS_RBFJYhKHocGdkhhBr6jSUAWjLdFPp6Pj1l4yiTQp7TGHyu1kC6FyaU573VN8klLsEm-XuAYJpZIJ2NIJpcIQI2SVcim11bHRpYWRkcnO4bgA0Ni9ub2RlLTAxLmFjLWNuLWhvbmdrb25nLWMud2FrdS5zYW5kYm94LnN0YXR1cy5pbQZ2XwA2Ni9ub2RlLTAxLmFjLWNuLWhvbmdrb25nLWMud2FrdS5zYW5kYm94LnN0YXR1cy5pbQYfQN4DgnJzkwABCAAAAAEAAgADAAQABQAGAAeJc2VjcDI1NmsxoQOwsS69tgD7u1K50r5-qG5hweuTwa0W26aYPnvivpNlrYN0Y3CCdl-DdWRwgiMohXdha3UyDw",
|
|
],
|
|
)
|
|
|
|
# cluster-id=2 (Logos Dev Network)
|
|
# Cluster configuration for the Logos Dev Network.
|
|
proc LogosDevConf*(T: type NetworkConf): NetworkConf =
|
|
const ZeroChainId = 0'u256
|
|
return NetworkConf(
|
|
maxMessageSize: "150KiB",
|
|
clusterId: 2,
|
|
rlnRelay: false,
|
|
rlnRelayEthContractAddress: "",
|
|
rlnRelayDynamic: false,
|
|
rlnRelayChainId: ZeroChainId,
|
|
rlnEpochSizeSec: 0,
|
|
rlnRelayUserMessageLimit: 0,
|
|
shardingConf: ShardingConf(kind: AutoSharding, numShardsInCluster: 8),
|
|
enableKadDiscovery: true,
|
|
mix: true,
|
|
p2pReliability: true,
|
|
discv5Discovery: true,
|
|
discv5BootstrapNodes: @[],
|
|
entryNodes: @[
|
|
"/dns4/delivery-01.do-ams3.logos.dev.status.im/tcp/30303/p2p/16Uiu2HAmTUbnxLGT9JvV6mu9oPyDjqHK4Phs1VDJNUgESgNSkuby",
|
|
"/dns4/delivery-02.do-ams3.logos.dev.status.im/tcp/30303/p2p/16Uiu2HAmMK7PYygBtKUQ8EHp7EfaD3bCEsJrkFooK8RQ2PVpJprH",
|
|
"/dns4/delivery-01.gc-us-central1-a.logos.dev.status.im/tcp/30303/p2p/16Uiu2HAm4S1JYkuzDKLKQvwgAhZKs9otxXqt8SCGtB4hoJP1S397",
|
|
"/dns4/delivery-02.gc-us-central1-a.logos.dev.status.im/tcp/30303/p2p/16Uiu2HAm8Y9kgBNtjxvCnf1X6gnZJW5EGE4UwwCL3CCm55TwqBiH",
|
|
"/dns4/delivery-01.ac-cn-hongkong-c.logos.dev.status.im/tcp/30303/p2p/16Uiu2HAm8YokiNun9BkeA1ZRmhLbtNUvcwRr64F69tYj9fkGyuEP",
|
|
"/dns4/delivery-02.ac-cn-hongkong-c.logos.dev.status.im/tcp/30303/p2p/16Uiu2HAkvwhGHKNry6LACrB8TmEFoCJKEX29XR5dDUzk3UT3UNSE",
|
|
],
|
|
)
|
|
|
|
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()
|