Skip to content

Multi-io proofs#37

Draft
mertwole wants to merge 5 commits intomainfrom
multi-io-proofs
Draft

Multi-io proofs#37
mertwole wants to merge 5 commits intomainfrom
multi-io-proofs

Conversation

@mertwole
Copy link

@mertwole mertwole commented Mar 18, 2026

Integrates davxy/ark-vrf#79

Resolves #33

@mertwole mertwole requested a review from davxy March 18, 2026 13:21
Copy link
Member

@davxy davxy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that:

  1. ark-vrf 0.3 will not be published to crates.io until the research team delivers a proof for the implemented schemes.
  2. As a result, if this PR is merged, verifiable cannot be published to crates.io either, since it depends on a GitHub source.

It would be preferable to delay merging this until point (1) is resolved and the target branch is main. In the meantime, this work can remain on a separate branch (e.g., multi-io-proof) until it is ready to be merged.

Comment on lines +425 to +429
#[derive(CanonicalSerialize, CanonicalDeserialize)]
struct RingVrfMultiContextSignature<S: RingSuiteExt> {
outputs: Vec<ark_vrf::Output<S>>,
proof: ark_vrf::ring::Proof<S>,
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps - before merge - we can think about using the MultiContextSignature for normal proofs as well. In the end a normal proof is just a multi proof with len = 1 and we avoid repeating al the code

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was there a reason why the RingProof and Signature are enforced to be arrays of the constant length?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it's ok to have Vec then I'd agree that it'd be cleaner and then create might just reuse create_multi_context and validate will reuse validate_mutli_context impl

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was there a reason why the RingProof and Signature are enforced to be arrays of the constant length?

The reason is that these types have fixed length when encoded. So, I'd say simplicity? I also imagine to avoid allocating in the heap

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So should I replace the RingVrfSignature with RingVrfMultiContextSignature? I think it's for you to decide as I'm far less familiar with the requirements for this library

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that for now we can keep these separated. We'll need to decide before merge and we have time

@ggwpez
Copy link
Member

ggwpez commented Mar 24, 2026

As we discussed today, we can:

  • wait for the researchers to check the spec and do their internal proving
  • go ahead optimistically and let them do the proving in parallel

For Crates-io release it is possible to publish a Release Candidate, if you append -rc1 or something to the version then cargo-update should not pick it up but we can already use it. WDYT?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Multi Aliases Proofs

3 participants