• DemiMarie-parity's avatar
    Introduce inherent digests (#2466) · 6e253c89
    DemiMarie-parity authored
    
    
    * Introduce inherent digests
    
    * Implement inherent digests
    
    * fix silly error
    
    * Implementation of inherent digests in BABE
    
    All tests pass. There are still limitations:
    
    1. The runtime strips out inherent digests, so BABE must re-add them.
    2. The test runtime checks that it can re-compute all digests.  It
       can’t, so I had to comment out that test.
    
    * Fix compilation and seal import
    
    Seals were not imported correctly: the pre-digest was imported twice,
    instead of both it and the seal being imported.  Also, other parts of
    the code did not compile due to incomplete refactoring.
    
    * Remove bogus assertion
    
    * Fix testsuite compilation
    
    * Remove unused import
    
    * Fix compiler diagnostics
    
    * Add inherent digest parameters to block constructors
    
    This enforces that inherent digests are added first.
    
    * Fixup Cargo.lock
    
    * Fix build errors
    
    * Re-add an incorrectly removed import
    
    * Bump primitive-types version
    
    * Update Cargo.lock
    
    * Refactoring
    
    * Use inherent digests for AuRa
    
    They do reach the runtime, but get stripped.  I have not figured out
    where.
    
    * Fix compilation errors
    
    * Fix compilation errors due to incorrect types
    
    * Fix whitespace
    
    Suggested-by: default avatarTomasz Drwiega <[email protected]>
    
    * Add preamble
    
    Suggested-by: default avatarTomasz Drwiega <[email protected]>
    
    * Fix silly compile error
    
    * Refactor pre-digest finding code into a separate function
    
    * Remove unwanted assertion
    
    It is too likely to bring down the entire blockchain.
    
    Suggested-by: default avatarTomasz Drwiega <[email protected]>
    
    * Use `find_pre_digest` after runtime, too
    
    Also, use `Member` trait rather than rolling our own requirements.
    
    Suggested-by: default avatarTomasz Drwiega <[email protected]>
    
    * Fix various warnings
    
    mostly due to upgrading the dependency on `error_chain`.
    
    * Pre-digests nearly complete
    
    This nearly completes the implementation of pre-runtime digests.
    
    * `Seal2` → `Seal` and fix test suite
    
    * Try to fix the storage error
    
    * Try to fix storage (again)
    
    * Fix tests
    
    * Hopefully finish pre-runtime digests
    
    The key is to pass *only* the pre-runtime digests to the runtime.  The
    others must be stripped out by `initialize_block`.
    
    * Fix silly typo
    
    * Fix another silly mistake
    
    * Remove unnecessary filtering of BABE pre-digests
    
    We no longer get duplicate BABE pre-digests, so if they appear, the
    header should be rejected outright.
    
    * Update Cargo.lock files
    
    * Reformatting
    
    * Fix silly typo in inherent digest code
    
    Also, revert `error.rs` files that contained calls to the `error_chain!`
    macro.
    
    * Try to keep the runtime from stripping pre-digests
    
    Currently runs into the “Storage root must match that calculated”
    assertion.
    
    * Don’t compute storage root until storage changes are done.
    
    Also, fix a compilation error.
    
    * Fix compile-time error
    
    * Fix compilation errors
    
    * Fix more compile errors
    
    * Hopefully it compiles this time…
    
    * Fix compilation and add docs
    
    * Prevent BABE from adding duplicate pre-runtime digests
    
    Found by comparing with the AuRa code.  I also did some refactoring.
    
    * Respond to review and fix some warnings
    
    * Delete some dead code introduced earlier
    
    * More dead code goes away
    
    * `ref mut` → `&mut`
    
    * Respond to review and fix some warnings
    
    * Fix compilation error
    
    * Remove unneeded `HashT` type parameter
    
    Suggested-by: default avatarRobert Habermeier <[email protected]>
    
    * Remove spurious #[allow(deprecated)]
    
    * Document inherent digest parameter to `build_block`
    
    * Delete `Simple` trait
    
    It wasn’t needed
    
    * delete wrongly added files
    
    * Fix trait bounds
    
    * Digest serialization tests
    
    I also did some reformatting and cleanup.
    
    * Apply suggestions from code review
    
    Reformatting
    
    Co-Authored-By: default avatarAndré Silva <[email protected]>
    
    * Swap two arguments to `propose` and `propose_with`
    
    Also, remove some needless unsafe code.
    
    * Remove bogus `#![allow(deprecated)]` annotations
    
    With the removal of the deprecated `Seal` variant, these are not needed.
    
    * Add a missing `#[allow(deprecated)]` in the AuRa tests
    
    * Fix silly compile error
    
    * Fix silly compiler error
    
    RLS did not tell me that I hadn’t fixed `babe/lib.rs`, so I missed it.
    
    * Fixes made automatically by Cargo
    6e253c89