paritytech / paritytech/verifiablejs
Expose multi-ring batch verification (ark-vrf #92)
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 1
- Forks
- 1
- Avg merge
- 1h 59m
- Merged PRs (30d)
- 4
Description
Summary
davxy/ark-vrf#92 ("Multi-ring batch proof", merged Apr 2026, shipped in ark-vrf 0.5.0) adds a multi-ring batch verifier: proofs from multiple rings that share the same KZG SRS can be aggregated into a single batched pairing check. This is a verification-speed optimization beyond the single-ring batching we expose today.
This issue tracks adopting that capability and exposing a multi-ring batch binding from verifiablejs.
Where we stand in the dependency chain
verifiablejs (WASM bindings)
└─ paritytech/verifiable (pinned rev f65b39df…)
└─ ark-vrf 0.5.0 ← multi-ring batch already present here
-
ark-vrf 0.5.0 (which contains #92) is already transitively in our build via the pinned
verifiablerev. The crypto primitive is compiled in. -
The blocker is not ark-vrf. It's the
verifiablecrate's API surface.GenerateVerifiable::batch_validatetakes a singlememberscommitment:fn batch_validate( config: Self::Config, members: &Self::Members, // <-- one ring proofs: &[BatchProofItem<Self::Proof>], ) -> Result<Vec<Alias>, Error>So every
BatchProofItemis verified against the same ring. Multi-ring batching is not reachable through this signature. -
Our
batch_validatebinding (packages/verifiablejs/src/lib.rs:273) inherits the same single-ring limitation.
What's needed (upstream-gated)
paritytech/verifiablemust expose a multi-ring batch method onGenerateVerifiable(e.g. accepting&[(Members, Vec<BatchProofItem>)]or equivalent) that calls into ark-vrf's multi-ringBatchVerifier.- Then
verifiablejsadds a new binding, e.g.multi_ring_batch_validate, taking multiple SCALE-encoded commitments + their proof items, returning aliases grouped per ring.
Action
- Open / track a request on
paritytech/verifiableto surface the multi-ring batch API. - Once available, bump the
verifiablerev and add themulti_ring_batch_validatebinding + tests.
This is a perf enhancement, not a correctness fix — no urgency. Filing to track until upstream verifiable is ready.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with packages/verifiablejs/src/lib.rs:273 and review the existing single-ring batch_validate binding. Check whether paritytech/verifiable has added the required multi-ring GenerateVerifiable API; the work is blocked until that upstream surface exists. Done means bumping the verifiable revision, adding multi_ring_batch_validate for grouped commitments and proof items, and adding tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust, wasm
- Domain
- api, cryptography
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100