• DemiMarie-parity's avatar
    BABE signing and verification (#2270) · cf4a28a7
    DemiMarie-parity authored
    
    
    * Add basic BABE consensus type
    
    * Update core/consensus/babe/slots/Cargo.toml
    
    Co-Authored-By: default avatarDemiMarie-parity <[email protected]>
    
    * Fix parameterization and run `rustfmt`
    
    * Respond to review comments
    
    * Update various Cargo.lock files
    
    * Revert "Update various Cargo.lock files"
    
    This reverts commit af53d762
    
    .
    
    * `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: default avatarDemiMarie-parity <[email protected]>
    
    * Remove wrongly added file
    
    * Fix copyright notice
    
    Co-Authored-By: default avatarDemiMarie-parity <[email protected]>
    
    * 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 https://github.com/paritytech/substrate/pull/2372
    
    
    
    * Remove unnecessary getters
    
    * fix compile error
    
    * Fix silly unused-variable error
    
    * Improve documentation formatting
    
    Co-Authored-By: default avatarDemiMarie-parity <[email protected]>
    
    * Add issue links
    
    * Revert excess verbosity and #![forbid(warnings)]
    
    * Apply suggestions from code review
    
    Co-Authored-By: default avatarDemiMarie-parity <[email protected]>
    
    * 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
    cf4a28a7