Adds a SIM_NETWORK=testnet path to mix_lez_chat that:
- Skips local sequencer launch; reachability-checks the testnet RPC
up front.
- Selects vendor/logos-lez-rln/testnet/ for wallet config + persistent
state. Default flow runs run_setup against the deployed RLN program
(is_initialized short-circuits to create_funded_user).
- Bootstraps from the submodule-shipped artifacts on first run:
copies testnet/storage.json.seed -> testnet/storage.json and
testnet/{supply_holding,payment_account}.txt ->
~/.logos-lez-rln/{supply_holding,payment_account}_<tree>.txt. Lets
a fresh-clone dev reuse the canonical deployment.
- Adds SIM_SLIM=1 opt-in: skip run_setup entirely, use the shipped
config_account + cached payment_account. Saves devs from building
the lez-rln Rust toolchain (and transitively the lssa nested
submodule).
- Raises timing floors for testnet block times (~60s vs local ~15s);
adds KADEMLIA_HARD_CAP and SIM_PERSIST_LOCAL escape hatches.
- Polled-readiness loops replace fixed sleeps (kademlia mesh, mix
peer counts, receiver join, delivery — each with bounded retry).
- Extracted seed_copy and wait_method_calls helpers; dropped a stale
mix-peer kademlia gate (static mixNodes config seeds the pool via
processBootNodes — kademlia counts are diagnostics only).
README updated with the testnet-flow + slim-mode + fresh-clone story.
Wires the existing mix_lez_chat simulation to drive the gifter's
EIP-191 allowlist auth path end-to-end:
* bumps vendor/nwaku and vendor/logos-lez-rln (and, transitively,
logos-delivery-module and its bundled logos-delivery copy) to pick up
the auth plugin, the auto-registering client's EIP-191 signing, and
the new --mix-gifter-allowlist / --mix-gifter-auth-key CLI flags.
* adds a `gifterAuthKey` knob on WakuConfig + the JSON config bridge in
client_api so chat sender/receiver instances sign their gifter
requests too.
* commits 5 fixed test secp256k1 keys (one per non-gifter mix node and
per chat client) under simulations/mix_lez_chat/fixtures/gifter_auth/
along with their derived addresses.
* run_simulation.sh sources keys.env+addresses.env, sets
`mixGifterAllowlist` on mix node 0, and threads the matching
`mixGifterAuthKey` / `gifterAuthKey` into nodes 1-3 and the
receiver/sender configs.
Test fixtures only — keys must never be reused outside this sim.
TREE_ID_HEX updated from 24 to 32 bytes to match SPEL's tree_id format,
fixing stale payment account lookup that caused silent registration
failures (KeyNotFound error 8).
setup_and_run.sh now restores working tree files in all nested
submodules after git submodule update --init, which resets them.
Multi-stage Dockerfile pre-builds all heavy nix dependencies. Runtime
image (~8.5GB) at ghcr.io/adklempner/logos-chat-sim:latest includes
nix store closure + Rust + cargo-risczero/r0vm + system clang.
run_in_docker.sh pulls from GHCR, symlinks pre-built modules, builds
sequencer + run_setup from source (~10 min per run).
Update vendor/logos-lez-rln to a591645 (rebased onto main with
member-expiry merged, single squashed commit).
Add INSTRUCTIONS.md with macOS, Linux (native), and Docker instructions.