w3f / bls

Aggregatable BLS sigantures
65 stars 15 forks source link

Implement Pixel #4

Open burdges opened 5 years ago

burdges commented 5 years ago

We should implement Pixel because doing so appears fairly straightforward and somewhat orthogonal. I believe the primary hurdle would be abstracting the verification equation, but if done properly then all the underlying optimizations work.

I think EngineBLS could act as both the curve and orientation like now, while some SignatureScheme extension trait provides the verification equation. We'd have BLS<E: EngineBLS> and Pixel<E: EngineBLS> ZSTs that satisfy SignatureScheme.

In this, Pixel's associated type SignatureGroup becomes the cartesian product of both groups, which incidentally makes us more dependent upon our patched version of pairing for batch_normalization.

burdges commented 5 years ago

I've noticed ZCash's refactor aiming for some general Group trait, but our Pixel::SignatureGroup actually requires both projective and affine forms, and a batch_normalization method. It's not a curve however since it lacks a well defined base field, not sure they'll do that level of granularity.

burdges commented 5 years ago

It appears Pixel's versifier optimizations differ significantly from BLS, so maybe this fits less well than I initially thought.