1010# #
1111# # Usage: nim c -r setup_credentials.nim
1212
13- import
14- std/ [os, strformat, options],
15- chronicles,
16- chronos,
17- results
13+ import std/ [os, strformat, options], chronicles, chronos, results
1814
1915import
2016 mix_rln_spam_protection/ credentials,
2319 mix_rln_spam_protection/ types
2420
2521const
26- KeystorePassword = " mix-rln-password" # Must match protocol.nim
27- DefaultUserMessageLimit = 100 'u64 # Network-wide default rate limit
28- SpammerUserMessageLimit = 3 'u64 # Lower limit for spammer testing
22+ KeystorePassword = " mix-rln-password" # Must match protocol.nim
23+ DefaultUserMessageLimit = 100 'u64 # Network-wide default rate limit
24+ SpammerUserMessageLimit = 3 'u64 # Lower limit for spammer testing
2925
3026 # Peer IDs derived from nodekeys in config files
3127 # config.toml: nodekey = "f98e3fba96c32e8d1967d460f1b79457380e1a895f7971cecc8528abe733781a"
@@ -35,18 +31,23 @@ const
3531 # config4.toml: nodekey = "3ce887b3c34b7a92dd2868af33941ed1dbec4893b054572cd5078da09dd923d4"
3632 # chat2mix.sh: nodekey = "cb6fe589db0e5d5b48f7e82d33093e4d9d35456f4aaffc2322c473a173b2ac49"
3733 # chat2mix1.sh: nodekey = "35eace7ccb246f20c487e05015ca77273d8ecaed0ed683de3d39bf4f69336feb"
38- # spammer.sh: nodekey = "390460d51bdedbe8414ba104f3a1b648331e888545cb6580117ead47d6171368"
3934
4035 # Node info: (peerId, userMessageLimit)
4136 NodeConfigs = [
42- (" 16Uiu2HAmPiEs2ozjjJF2iN2Pe2FYeMC9w4caRHKYdLdAfjgbWM6o" , DefaultUserMessageLimit ), # config.toml (service node)
43- (" 16Uiu2HAmLtKaFaSWDohToWhWUZFLtqzYZGPFuXwKrojFVF6az5UF" , DefaultUserMessageLimit ), # config1.toml (mix node 1)
44- (" 16Uiu2HAmTEDHwAziWUSz6ZE23h5vxG2o4Nn7GazhMor4bVuMXTrA" , DefaultUserMessageLimit ), # config2.toml (mix node 2)
45- (" 16Uiu2HAmPwRKZajXtfb1Qsv45VVfRZgK3ENdfmnqzSrVm3BczF6f" , DefaultUserMessageLimit ), # config3.toml (mix node 3)
46- (" 16Uiu2HAmRhxmCHBYdXt1RibXrjAUNJbduAhzaTHwFCZT4qWnqZAu" , DefaultUserMessageLimit ), # config4.toml (mix node 4)
47- (" 16Uiu2HAm1QxSjNvNbsT2xtLjRGAsBLVztsJiTHr9a3EK96717hpj" , DefaultUserMessageLimit ), # chat2mix client 1
48- (" 16Uiu2HAmC9h26U1C83FJ5xpE32ghqya8CaZHX1Y7qpfHNnRABscN" , DefaultUserMessageLimit ), # chat2mix client 2
49- (" 16Uiu2HAmQwJtaL3r54D7WzCoBaUPdb1XRakHpWeEVqSPnYYXHQDL" , SpammerUserMessageLimit ), # spammer (lower limit for testing)
37+ (" 16Uiu2HAmPiEs2ozjjJF2iN2Pe2FYeMC9w4caRHKYdLdAfjgbWM6o" , DefaultUserMessageLimit ),
38+ # config.toml (service node)
39+ (" 16Uiu2HAmLtKaFaSWDohToWhWUZFLtqzYZGPFuXwKrojFVF6az5UF" , DefaultUserMessageLimit ),
40+ # config1.toml (mix node 1)
41+ (" 16Uiu2HAmTEDHwAziWUSz6ZE23h5vxG2o4Nn7GazhMor4bVuMXTrA" , DefaultUserMessageLimit ),
42+ # config2.toml (mix node 2)
43+ (" 16Uiu2HAmPwRKZajXtfb1Qsv45VVfRZgK3ENdfmnqzSrVm3BczF6f" , DefaultUserMessageLimit ),
44+ # config3.toml (mix node 3)
45+ (" 16Uiu2HAmRhxmCHBYdXt1RibXrjAUNJbduAhzaTHwFCZT4qWnqZAu" , DefaultUserMessageLimit ),
46+ # config4.toml (mix node 4)
47+ (" 16Uiu2HAm1QxSjNvNbsT2xtLjRGAsBLVztsJiTHr9a3EK96717hpj" , DefaultUserMessageLimit ),
48+ # chat2mix client 1
49+ (" 16Uiu2HAmC9h26U1C83FJ5xpE32ghqya8CaZHX1Y7qpfHNnRABscN" , DefaultUserMessageLimit ),
50+ # chat2mix client 2
5051 ]
5152
5253proc setupCredentialsAndTree () {.async .} =
@@ -56,15 +57,16 @@ proc setupCredentialsAndTree() {.async.} =
5657 echo " Generating credentials for " , NodeConfigs .len, " nodes...\n "
5758
5859 # Generate credentials for all nodes
59- var allCredentials: seq [tuple [peerId: string , cred: IdentityCredential , rateLimit: uint64 ]]
60+ var allCredentials:
61+ seq [tuple [peerId: string , cred: IdentityCredential , rateLimit: uint64 ]]
6062 for (peerId, rateLimit) in NodeConfigs :
6163 let cred = generateCredentials ().valueOr:
6264 echo " Failed to generate credentials for " , peerId, " : " , error
6365 quit (1 )
6466
6567 allCredentials.add ((peerId: peerId, cred: cred, rateLimit: rateLimit))
6668 echo " Generated credentials for " , peerId
67- echo " idCommitment: " , cred.idCommitment.toHex ()[0 .. 15 ], " ..."
69+ echo " idCommitment: " , cred.idCommitment.toHex ()[0 .. 15 ], " ..."
6870 echo " userMessageLimit: " , rateLimit
6971
7072 echo " "
@@ -85,10 +87,13 @@ proc setupCredentialsAndTree() {.async.} =
8587 # Register all credentials in the tree with their specific rate limits
8688 echo " Registering all credentials in the Merkle tree..."
8789 for i, entry in allCredentials:
88- let index = (await groupManager.registerWithLimit (entry.cred.idCommitment, entry.rateLimit)).valueOr:
90+ let index = (
91+ await groupManager.registerWithLimit (entry.cred.idCommitment, entry.rateLimit)
92+ ).valueOr:
8993 echo " Failed to register credential for " , entry.peerId, " : " , error
9094 quit (1 )
91- echo " Registered " , entry.peerId, " at index " , index, " (limit: " , entry.rateLimit, " )"
95+ echo " Registered " ,
96+ entry.peerId, " at index " , index, " (limit: " , entry.rateLimit, " )"
9297
9398 echo " "
9499
@@ -113,7 +118,7 @@ proc setupCredentialsAndTree() {.async.} =
113118 KeystorePassword ,
114119 keystorePath,
115120 some (MembershipIndex (i)),
116- some (entry.rateLimit)
121+ some (entry.rateLimit),
117122 )
118123 if saveResult.isErr:
119124 echo " Failed to save keystore for " , entry.peerId, " : " , saveResult.error
0 commit comments