Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BLS m-n threshold signature support #123

Open
franjoespejo opened this issue Jun 24, 2022 · 3 comments
Open

BLS m-n threshold signature support #123

franjoespejo opened this issue Jun 24, 2022 · 3 comments

Comments

@franjoespejo
Copy link

franjoespejo commented Jun 24, 2022

Please see below the set of available operations for BLS at the moment:

BLS12-381 signature (sign, verify, aggregate)

The BLS scheme also supports threshold signatures. This is where a secret key is divided between n parties. For a predefined value of m≤n, if m of the parties sign a message then a single joint public key of all the parties can be used to verify the signature.

It would be very useful to have a new operation "recover" or "reconstruct" that builds a collective BLS signature. Supporting BLS threshold signature completes the BLS scheme. This seems to have been requested previously in #50

For reference:

BLS threshold is implemented:
https://github.com/herumi/bls#api-for-k-of-n-threshold-signature

Specifically the "recover" function can be found at: https://github.com/herumi/bls/blob/cf2b578f1c414fdcef74f1a01bc43991b4f5fd76/src/bls_c_impl.hpp#L602

@dot-asm
Copy link
Collaborator

dot-asm commented Jun 24, 2022

Have you seen blsttc? Just in case, I haven't looked into it myself, so it's not like I'm saying that it will actually solve your problem.

@mratsim
Copy link
Contributor

mratsim commented Jun 28, 2022

@mcdee
Copy link

mcdee commented Sep 18, 2023

Looking to implement this feature in Go as it isn't supplied in blst itself, but the functions for field element creation and maths appear to be missing from the Go bindings. Are there any plans to either implement this natively in blst, and if not to expose the full set of blst functions in the Go bindings to allow others to do so?

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

No branches or pull requests

4 participants