Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

BABE signing and verification#2270

Merged
Demi-Marie merged 105 commits intomasterfrom
demi-babe-progress
May 2, 2019
Merged

BABE signing and verification#2270
Demi-Marie merged 105 commits intomasterfrom
demi-babe-progress

Conversation

@Demi-Marie
Copy link
Contributor

This branch adds BABE signing and verification. Randomness is not implemented.

Demi-Marie and others added 30 commits April 1, 2019 16:51
Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>
This was highly non-trivial, due to cyclic dependencies.
Some of the code duplication was removed using a macro.
Also, bump some library versions in `Cargo.toml`.
It was more trouble than it was worth.

Also, delete useless dependencies on Serde.
This required removing the `impl_slot` macro, and adding a new trait to
`slots`.  That in turn required modifications to both AuRa and BABE.
Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>
Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>
@rphmeier
Copy link
Contributor

rphmeier commented May 2, 2019

How do we push a new version of BABE then? We tell everyone to upgrade substrate, and then later push the WASM that uses it, and anyone who did not upgrade drops off the network? I guess that works.

Yeah. Consensus upgrades are hard forks. We also have plans to enable swappable consensus, where we support both versions of the consensus, but the runtime issues a signal in the header-chain that tells nodes to migrate to a new version. #1304. This doesn't change the fact that they are hard forks, only that consensus hard-forks can be much more impromptu and managed by the on-chain governance explicitly.

@rphmeier rphmeier added A6-mustntgrumble and removed A0-please_review Pull request needs code review. labels May 2, 2019
@Demi-Marie Demi-Marie merged commit cf4a28a into master May 2, 2019
@Demi-Marie Demi-Marie deleted the demi-babe-progress branch May 2, 2019 15:17
@Demi-Marie Demi-Marie restored the demi-babe-progress branch May 2, 2019 15:17
@Demi-Marie Demi-Marie deleted the demi-babe-progress branch May 2, 2019 15:18
MTDK1 pushed a commit to bdevux/substrate that referenced this pull request Jul 10, 2019
* Add basic BABE consensus type

* Update core/consensus/babe/slots/Cargo.toml

Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>

* Fix parameterization and run `rustfmt`

* Respond to review comments

* Update various Cargo.lock files

* Revert "Update various Cargo.lock files"

This reverts commit af53d76.

* `BabeSealSignature` → `BabeSeal`

* Move slot code to its own crate

This was highly non-trivial, due to cyclic dependencies.

* Remove redundancy between AuRa and BABE

Some of the code duplication was removed using a macro.

* Fix build error

* Avoid non-`#[doc(hidden)]` re-exports

Also, bump some library versions in `Cargo.toml`.

* Remove dead code in AuRa

* Remove impl_slot macro

It was more trouble than it was worth.

Also, delete useless dependencies on Serde.

* AuRa and BABE need different DB keys

* Bring back `aura::Network`, but deprecate it.

* Improve docs and add `slot_duration` inherent method

* Add docs to `substrate_consensus_aura::SlotDuration`

* Add missing documentation and #![forbid(missing_docs, unsafe_code)]

* Add a #![forbid(missing_docs)]

* Remove dependency of `test-runtime` on `slots`

* Update core/consensus/babe/src/lib.rs

Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>

* Remove wrongly added file

* Fix copyright notice

Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>

* Bump `impl_version` and `spec_version`

* Add more code to BABE

Most of it is copied from AuRa code, but at least the initial core is
there.

* Stuck on horrible compiler error message

* add missing files

* Spaces → tabs

* Simplify code

* Fix compilation

This involved fixing dependencies and adding a `Mutex`.

* More work on BABE

* Fix deprecation version

* Fix deprecation version; remove spurious carets

* Fix Cargo.toml

* Implement VRF signing logic

* The import queue code compiles, though it probably doesn’t work.

* Add VRF verification

* Update Cargo.lock

* Update dependencies

* Move test network to sr25519 authority keys

* Fix accidental build bustage

* Trying to get the tests to work

* Add logging messages and remove dead code

There seems to be a problem with the test network.  Since AuRa and BABE
are both affected, this is most likely due to the switch from ed25519 to
sr25519.

* Trying to get the tests to work

* Add logging messages and remove dead code

There seems to be a problem with the test network.  Since AuRa and BABE
are both affected, this is most likely due to the switch from ed25519 to
sr25519.

* Working testsuite at last!

The problem was with serialization and deserialization.  Normally,
those functions are generated automatically, but those for `BabeSeal`
had to be written manually.  The hand-written versions were not
correct, however, as shown by the decoder not being able to decode the
output of the encoder.

* Enable BabeSeal::Encode asserts in --release tests

* Bump runtime and dependency versions

* Fix wasm compilation

The wasm build was broken because of a typo in
`core/test-runtime/src/lib.rs`, and missing gates on the `std` feature
in `core/consensus/{aura,babe}/primitives/Cargo.toml`.  Additionally,
improve the quotation in the build scripts.

* Merge Cargo.lock

* Change expected JSON string

The test was also broken on `master`, so I suspect that the test was
incorrect.

* Responded to review

* Remove hard-coded threshold from production code

A hard-coded threshold is now only used in tests.

* Fix swapped doc comments

* Fix unused import warnings

* fix ci error

* fix typo

* Fix spacing in docs

* Minor changes suggested by @joepetrowski

on paritytech#2372

* Remove unnecessary getters

* fix compile error

* Fix silly unused-variable error

* Improve documentation formatting

Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>

* Add issue links

* Revert excess verbosity and #![forbid(warnings)]

* Apply suggestions from code review

Co-Authored-By: DemiMarie-parity <48690212+DemiMarie-parity@users.noreply.github.com>

* Reformat some comments

* Threshold should depend on number of validators

Also, respond to code review

* Fix silly compilation errors

* Reduce logging verbosity

* Fix missing import
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.