Skip to content

Commit

Permalink
feat(rln): init rln_keystore_generator
Browse files Browse the repository at this point in the history
  • Loading branch information
rymnc committed Aug 22, 2023
1 parent 0ac8a7f commit 7a4ea41
Show file tree
Hide file tree
Showing 6 changed files with 110 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,10 @@ chat2: | build deps librln
echo -e $(BUILD_MSG) "build/$@" && \
$(ENV_SCRIPT) nim chat2 $(NIM_PARAMS) $(EXPERIMENTAL_PARAMS) waku.nims

rln_keystore_generator: | build deps librln
echo -e $(BUILD_MSG) "build/$@" && \
$(ENV_SCRIPT) nim rlnkeystoregenerator $(NIM_PARAMS) $(EXPERIMENTAL_PARAMS) waku.nims

chat2bridge: | build deps
echo -e $(BUILD_MSG) "build/$@" && \
$(ENV_SCRIPT) nim chat2bridge $(NIM_PARAMS) waku.nims
Expand Down
3 changes: 3 additions & 0 deletions apps/rln_keystore_generator/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# rln_keystore_generator

TODO!
66 changes: 66 additions & 0 deletions apps/rln_keystore_generator/external_config.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
when (NimMajor, NimMinor) < (1, 4):
{.push raises: [Defect].}
else:
{.push raises: [].}

import
stew/results,
chronos,
confutils,
confutils/defs,
confutils/toml/defs as confTomlDefs,
confutils/toml/std/net as confTomlNet,
libp2p/crypto/crypto,
libp2p/crypto/secp,
libp2p/multiaddress,
secp256k1
import
../../waku/common/confutils/envvar/defs as confEnvvarDefs,
../../waku/common/confutils/envvar/std/net as confEnvvarNet

export
confTomlDefs,
confTomlNet,
confEnvvarDefs,
confEnvvarNet

type
RlnKeystoreGeneratorConf* = object
configFile* {.
desc: "Loads configuration from a TOML file (cmd-line parameters take precedence)",
name: "config-file" }: Option[InputFile]

execute* {.
desc: "Runs the registration function on-chain. By default, a dry-run will occur",
defaultValue: false,
name: "execute" .}: bool

## General node config
rlnRelayCredPath* {.
desc: "The path for peristing rln-relay credential",
defaultValue: "",
name: "rln-relay-cred-path" }: string

rlnRelayEthClientAddress* {.
desc: "WebSocket address of an Ethereum testnet client e.g., ws://localhost:8540/",
defaultValue: "ws://localhost:8540/",
name: "rln-relay-eth-client-address" }: string

rlnRelayEthContractAddress* {.
desc: "Address of membership contract on an Ethereum testnet",
defaultValue: "",
name: "rln-relay-eth-contract-address" }: string

rlnRelayCredentialsPassword* {.
desc: "Password for encrypting RLN credentials",
defaultValue: "",
name: "rln-relay-cred-password" }: string

proc loadConfig*(T: type RlnKeystoreGeneratorConf): Result[T, string] =
try:
let conf = RlnKeystoreGeneratorConf.load()
ok(conf)
except CatchableError:
err(getCurrentExceptionMsg())
except Exception:
err(getCurrentExceptionMsg())
3 changes: 3 additions & 0 deletions apps/rln_keystore_generator/nim.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
-d:chronicles_line_numbers
-d:chronicles_runtime_filtering=on
#-d:"chronicles_enabled_topics=GossipSub:TRACE,WakuRelay:TRACE"
30 changes: 30 additions & 0 deletions apps/rln_keystore_generator/rln_keystore_generator.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
when (NimMajor, NimMinor) < (1, 4):
{.push raises: [Defect].}
else:
{.push raises: [].}

import
chronicles,
stew/[results]

import
./external_config

logScope:
topics = "rln_keystore_generator"

when isMainModule:
{.pop.}
let confRes = RlnKeystoreGeneratorConf.loadConfig()
if confRes.isErr():
error "failure while loading the configuration", error=confRes.error()
quit(1)

let conf = confRes.get()

debug "configuration", conf = $conf

# initialize keystore



4 changes: 4 additions & 0 deletions waku.nimble
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ task networkmonitor, "Build network monitor tool":
let name = "networkmonitor"
buildBinary name, "apps/networkmonitor/"

task rln_keystore_generator, "Build the rln keystore generator":
let name = "rln_keystore_generator"
buildBinary name, "apps/rln_keystore_generator/"

task test, "Build & run Waku tests":
test "all_tests_waku"

Expand Down

0 comments on commit 7a4ea41

Please sign in to comment.