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

Update BLST and Milagro to BLS draft v4 #1707

Closed
michaelsproul opened this issue Oct 2, 2020 · 0 comments
Closed

Update BLST and Milagro to BLS draft v4 #1707

michaelsproul opened this issue Oct 2, 2020 · 0 comments
Labels
consensus An issue/PR that touches consensus code, such as state_processing or block verification. security

Comments

@michaelsproul
Copy link
Member

Description

Presently our BLS implementation is aligned with v0.12.3 of the Eth2 spec, and v3 of the BLS specification draft. The latest version of the BLS draft is v4, and the Eth2 spec intends to switch to it before mainnet.

Although we don't yet want to switch to BLSv4, we would like to move away from using a forked version of BLST. This was attempted in #1595, but reverted in #1649 due to a bug in BLST: supranational/blst#31. Although a fix exists upstream, we can't yet bring it in, because it also forces us onto BLSv4 (a potentially consensus-breaking change).

An attempt to update to BLSv4 and upstream BLST is provided here (#1703), although it may need further adjustments depending on how we decide to handle the consensus breakage.

bors bot pushed a commit that referenced this issue Oct 28, 2020
## Issue Addressed

Closes #1504 
Closes #1505
Replaces #1703
Closes #1707

## Proposed Changes

* Update BLST and Milagro to versions compatible with BLSv4 spec
* Update Lighthouse to spec v1.0.0-rc.0, and update EF test vectors
* Use the v1.0.0 constants for `MainnetEthSpec`.
* Rename `InteropEthSpec` -> `V012LegacyEthSpec`
    * Change all constants to suit the mainnet `v0.12.3` specification (i.e., Medalla).
* Deprecate the `--spec` flag for the `lighthouse` binary
    * This value is now obtained from the `config_name` field of the `YamlConfig`.
        * Built in testnet YAML files have been updated.
    * Ignore the `--spec` value, if supplied, log a warning that it will be deprecated
    * `lcli` still has the spec flag, that's fine because it's dev tooling.
* Remove the `E: EthSpec` from `YamlConfig`
    * This means we need to deser the genesis `BeaconState` on-demand, but this is fine.
* Swap the old "minimal", "mainnet" strings over to the new `EthSpecId` enum.
* Always require a `CONFIG_NAME` field in `YamlConfig` (it used to have a default).

## Additional Info

Lots of breaking changes, do not merge! ~~We will likely need a Lighthouse v0.4.0 branch, and possibly a long-term v0.3.0 branch to keep Medalla alive~~.

Co-authored-by: Kirk Baird <[email protected]>
Co-authored-by: Paul Hauner <[email protected]>
@bors bors bot closed this as completed in 36bd4d8 Oct 28, 2020
@michaelsproul michaelsproul added the consensus An issue/PR that touches consensus code, such as state_processing or block verification. label Nov 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
consensus An issue/PR that touches consensus code, such as state_processing or block verification. security
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant