- **WASM cold start/load latency:** The WASM blob load time improved from ~15 seconds (v0.1.0) to ~5 seconds (v0.2.0).
- The split of the 5 seconds is as follows:
- ~1.2 seconds for the WASM files download + decoding/compilation (~1MB)
- ~3.6 seconds for the zkey download (~3MB)
Notably, the current `rln-wasm` build includes proof generation and verification, which not all web apps built with Waku require. And even if one web app requires both credentials and proof verification/generation, it is likely done in different areas from a UX and functional PoV. This suggests a smaller, credential-only and proof-handling-only WASM libraries could further reduce load times for js-waku.
- **Endianness mismatch:** js-waku uses big-endian (BE) throughout, as required by contracts, while Zerokit expects little-endian (LE). This necessitates conversion when interfacing between the two, though this is less critical than load latency.
- Ambiguity around the sequence and role of initialization functions such as `init()`, `initPanicHook()`, etc.
We aim to align expectations and optimize collaboration between the Waku and Vac ACZ teams by clearly expressing our functional and non-functional requirements.
---
## Use Case 1: Credential Generation and Management
**Used during:**
- RLN registration
- Identity derivation and key export
- Interoperability between js-waku and nwaku
### Functionality
- **F1.1:** Generate deterministic identity commitment (`idCommitment`) from entropy/seed.
- **F1.2:** Generate full identity object (`commitment`, `secret`, `nullifier`, `trapdoor`).