w3f / schnorrkel

Schnorr VRFs and signatures on the Ristretto group
BSD 3-Clause "New" or "Revised" License
309 stars 93 forks source link

ThinVRF #71

Open burdges opened 3 years ago

burdges commented 3 years ago

I discovered a trick that avoids the separate individual and batchable VRFProof types, which we'll adopt in the ring VRF crate, so maybe the correct solution would be adopting that here via some VRF2 proof/signature type that requires a PoK. We'd maybe remove VRFProofBatchable from the older VRF design.

I believe VRF2 simplifies doing https://github.com/w3f/schnorrkel/issues/5 with some pre-signing abstraction for witness creation, so we'd eventually generalize the multi-signatures to cover VRF2 after doing https://github.com/w3f/schnorrkel/issues/6 and https://github.com/w3f/schnorrkel/issues/11

I've closed paritytech/polkadot#26 in favor of this. It's different functionality but if you go too far that direction you need bulletproofs really, and the little step never materialized.

burdges commented 2 years ago

We'll do this first in a new crate for the ring VRF based upon arkworks instead of dalek, not because the ring VRF needs it but because it fits naturally there.

burdges commented 1 year ago

We now have thin VRF in the dleq_vrf crate https://github.com/w3f/ring-vrf/blob/master/dleq_vrf/src/thin.rs#L62 and substrate needs faster VRF signature checking ala https://github.com/paritytech/polkadot-sdk/issues/730 and ..

burdges commented 1 year ago

Also I've maybe finally understood from @davxy what the substrate keystore requires for traits in https://github.com/w3f/ring-vrf/blob/master/dleq_vrf/src/traits.rs so maybe we could provide some similar ready to go traits here, if only for VRFs.