-
Notifications
You must be signed in to change notification settings - Fork 1k
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 Specs rewrite for IETF clarity #1499
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome! I think this is the way to go.
I made some suggestions, nothing major. then ready to merge
|
||
### `bls_aggregate_pubkeys` | ||
|
||
Let `bls_aggregate_pubkeys(pubkeys: List[Bytes48]) -> Bytes48` return `pubkeys[0] + .... + pubkeys[len(pubkeys)-1]`, where `+` is the elliptic curve addition operation over the G1 curve. (When `len(pubkeys) == 0` the empty sum is the G1 point at infinity.) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there no public interface in the BLS standard to aggregate pubkeys?
I can't immediately think of a need to aggregate it independently and have the resulting aggregate pubkey, but interesting none the less.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No there isn't. It is a strange absence.
Oh shit, I just noticed the merge conflict here. I'll have a stab at it |
Merge conflicts resolved |
I like the way you've presented it here and I agree that it's much better to not redefine things that are already defined in the IETFs. So I too think this is the way forward, I'm happy to close #1398 when this is merged :) |
A few issues (discussed with Carl privately):
|
Are you suggesting moving the methods like I think it natural to present the functions from the BLS standards, immediately followed by the set of wrapper functions used explicitly throughout the rest of the spec. This allows for an auditor to quickly see the BLS standards and how we use them all in one place without having to dig through other docs |
Yes, that was the suggestion in terms of presentation :) Notice that without that separation of concerns there would be a somewhat circular definition. For example, as the PR stands, the Eth2 spec uses |
@CarlBeek: I think we're missing |
closing in favor of #1532 |
This PR is an alternate proposal to @kirk-baird's #1398.
It is based on two ideas:
If something is defined in the IETF specs, it should not be redefined in the eth2-specs. This reduces the scope for errors and reflects the workflow of integrating with an IETF spec-compliant BLS implementation.
tag
replacesdomain
. Confusion can arise due to the name collision ofdomain
in the eth2 specifications and those of the IETF.tag
is an alternative that implies also separation and is unique to the eth2-specs.PS: The diff appears large here, but most of that is due to
tag
replacingdomain
. The substantive changes are (almost entirely) limited tospecs/bls_signature.md