lovesh / signature-schemes

Rust library for BLS signatures, MuSig, PS signatures
Apache License 2.0
66 stars 20 forks source link

General discussion #1

Open paulhauner opened 5 years ago

paulhauner commented 5 years ago

Hi @lovesh, Thanks for your work on this, it has been really helpful!

I am working on lighthouse, an Ethereum 2.0 implementation. The Eth 2.0 roadmap presently relies heavily on BLS signature aggregation.

Over the last couple of days I took this repo and turned it into a Rust crate that I can use in our project for bench-marking. This process involved stripping out the functionality I didn't need and applying some of my own opinions to the API. Please excuse any changes which you think were unnecessary.

I would be interested to have a chat about this project and what you think about my modifications. I am not a cryptographer so I cannot provide assurance that the crypto is safe or sane. However, if it turns out to be a useful project for Ethereum 2.0 I would be more than happy to provide the assistance of myself and the team I work with to maintain this repository.

If you wish, please feel free to contact me on gitter/twitter: @paulhauner

Thanks again!

lovesh commented 5 years ago

Hi Paul. I am glad that it's been helpful. I took a glance at the and looks like you have made a lot of good changes in your crate. Thanks for that. I am not a cryptographer either but regarding this project i wanted to split the project into 3 parts, one would have been a crate for BLS12 curve using milagro crypto with abstraction for groups, the other 2 crates would have been for BLS and MuSig both of which use the BLS12 curve crate. I needed to add threshold signature support in BLS sig. I see you stripped off the one of the 2 implementations of BLS sig, i would prefer to make them separate features which can be selected during building the lib; the reason for this is that one of the project that this library will be used for needs that other way (using a PoP).

burdges commented 5 years ago

Just fyi, we've a BLS implementation at https://github.com/w3f/bls with reasonable abstractions for curve orientation, optimized versifiers https://github.com/w3f/bls/blob/master/src/verifiers.rs and aggregation strategies. It eventually needs an affine/projective abstraction that hides the base field for https://github.com/w3f/bls/issues/4 but usable now.