Open stechu opened 2 years ago
We don't need partial commitments yet, so we should restrict ourselves to commit
only, and remove the Rng
requirement, replacing it with an associated type.
trait CommitmentScheme {
type Parameters;
type Input: ?Sized;
type Randomness: ?Sized;
type Output;
fn commit(
parameters: &Self::Parameters,
input: &Self::Input,
randomness: &Self::Randomness
) -> Self::Output;
}
I would say candidate 2 Reinforcement-Concrete is a good choice since it was designed to support Plookup based on KZG commitments but it's also a fairly new design and there isn't cryptanalysis research done to verify if it's secure.
@stechu I would have liked for this issue and others concerning gadgets, in be a new repo; a gadgets repo. I would like this issue to be discussed in its own thread.
The authors of reinforced concrete claim that its design uses more analysed and battle-tested design principles than was previously possible in zk hash functions. So there is that in favour of it, but as @mathcrypto said, its overall design has still had very limited cryptanalysis.
Commitment Gadget Design
Goal
Make a commitment gadget library based on
ark-plonk
.Initial Design
We still need those features:
A two-to-one hash:
Two commitment schemes
Commitment Scheme using API like this (native and constraints)
Choice Merkle Tree Leaf Hash that matches the output of Manta's commitment
Questions: