## Description
- Refactored `RLNWitnessInput` and `RLNProofValues` into struct/enum
(`SingleV1` / `MultiV1`) to cleanly support both standard and
multi-message-id modes.
- Added version byte retrieval methods for `RLNProof` and
`RLNWitnessInput`.
- Enhanced `ProtocolError` with new variants: `EmptyMessageIds`,
`DuplicateMessageIds`, `MissingSelectorUsed`, `NoActiveSelectorUsed`,
and `FieldLengthMismatch`.
- Read `MAX_OUT` value directly from the graph file instead of
hardcoding.
- Added checks for `message_ids`, `selector_used`, `path_elements`,
`identity_path_index` in proof gen api.
- Extended FFI (C/Nim/Rust) and WASM bindings with multi-message-id
support.
- Added multi-message-id CLI example and updated existing examples.
- Added multi-message-id circuit resources (`max_out_4`) for tree depth
10 and 20; removed tree depth 16 and 24.
- Updated CI with clippy checks and nightly release for the
`multi-message-id` feature flag.
- Version bump for dependencies in all modules.
- Exposed compute_id_secret as a public API and updated README on how to
use the slashing cross feature.
## Testing
- Added multi-message-id test cases for FFI, protocol, and public API.
- Added compatibility tests to verify new witness/proof types against
old serialized data.
## Checklist
- [x] I have run the CI coverage report. Add the `run-coverage` label to
this PR to enable it.
Changes:
- Updated the rln version in the Cargo.lock file for the rln-cli and
rln-wasm modules to 1.0.0.
- Update the command to be compatible with the latest stable version of
circom-witnesscalc, and new graph.bin file.
# Changes
- Unified the `RLN` struct and core protocol types across public, FFI,
and WASM so everything works consistently.
- Fully refactored `protocol.rs` and `public.rs` to clean up the API
surface and make the flow easier to work with.
- Added (de)serialization for `RLN_Proof` and `RLN_ProofValues`, and
matched all C, Nim, WASM, and Node.js examples.
- Aligned FFI and WASM behavior, added missing APIs, and standardized
how witness are created and passed around.
- Reworked the error types, added clearer verification messages, and
simplified the overall error structure.
- Updated variable names, README, Rust docs, and examples across the
repo, updated outdated RLN RFC link.
- Refactored `rln-cli` to use the new public API, removed
serialize-based cli example, and dropped the `eyre` crate.
- Bumped dependencies, fixed CI, fixed `+atomic` flags for latest
nightly Rust and added `Clippy.toml` for better fmt.
- Added a `prelude.rs` file for easier use, cleaned up public access for
types and types import across zerokit modules.
- Separated keygen, proof handling, slashing logic, and witness into
protocol folder.