• asynchronous rob's avatar
    Fixing BABE epochs to change between blocks (#3583) · 426c26b8
    asynchronous rob authored
    
    
    * always fetch epoch from runtime
    
    * node integration tests don't test light nodes
    
    * give stand-in full node a FULL role
    
    * rejig babe APIs
    
    * introduce next-epoch-descriptor type
    
    * overhaul srml-BABE epoch logic
    
    * ensure VRF outputs end up in the right epoch-randomness
    
    * rewrite `do_initialize` to remove unnecessary loop
    
    * begin accounting for next epoch in epoch function
    
    * slots passes header to epoch_data
    
    * pass slot_number to SlotWorker::epoch_data
    
    * begin extracting epoch-change logic into its own module
    
    * aux methods for block weight
    
    * aux methods for genesis configuration
    
    * comment-out most, refactor header-check pipeline
    
    * mostly flesh out verifier again
    
    * reinstantiate babe BlockImport implementation
    
    * reinstate import-queue instantiation
    
    * reintroduce slot-worker implementation
    
    * reinstate pretty much all the rest
    
    * move fork-choice logic to BlockImport
    
    * fix some, but not all errors
    
    * patch test-runtime
    
    * make is_descendent of slightly more generic
    
    * get skeleton compiling when passing is_descendent_of
    
    * make descendent-of-builder more succinct
    
    * restore ordering of authority_index / slot_number
    
    * start fiddling with tests
    
    * fix warnings
    
    * improve initialization architecture and handle genesis
    
    * tests use correct block-import
    
    * fix BABE tests
    
    * fix some compiler errors
    
    * fix node-cli compilation
    
    * all crates compile
    
    * bump runtime versions and fix some warnings
    
    * tweak fork-tree search implementation
    
    * do backtracking search in fork-tree
    
    * node-cli integration tests now work
    
    * fix broken assumption in test_connectivity
    
    * babe tests fail for the right reasons.
    
    * test genesis epoch logic for epoch_changes
    
    * test that epochs can change between blocks
    
    * First BABE SRML test
    
    * Testing infrastructure for BABE
    
    Also includes a trivial additional test.
    
    * Apply suggestions from code review
    
    Co-Authored-By: default avatarBastian Köcher <[email protected]>
    
    * A little more test progress
    
    * More work on BABE testing
    
    * Try to get the tests working
    
    * Implement `UintAuthorityId`-based test mocks
    
    * Fix compilation errors
    
    * Adjust to upstream changes
    
    * Block numbers are ignored in BABE epoch calculation
    
    * authority_index() should ignore invalid authorities
    
    * Fix compile error
    
    * Add tests that session transitions happen
    
    * Check if BABE produces logs
    
    It currently does not.
    
    * Fix test suite
    
    This was really nasty, due to a type confusion that showed up as an
    off-by-1 buffer error.
    
    * Add additional tests
    
    Most of these were derived from the current output, so they are only
    useful to guard against regressions.
    
    * Make the tests more readable
    
    Also bump impl_version.
    
    * Fix excessive line width
    
    * Remove unused imports
    
    * Update srml/babe/src/lib.rs
    
    Co-Authored-By: default avatarAndré Silva <[email protected]>
    
    * try to fix imports
    
    * Fix build errors in test suite
    
    * tests did not pass
    
    * Try to get at least one digest to be output
    
    Currently, the code emits either no digests (if I don’t call
    `Session::rotate_session()` or two digests (if I do), which is wrong.
    
    * More tests
    
    They still don’t work, but this should help debugging.
    
    * fix silly error
    
    * Don’t even try to compile a broken test
    
    * remove broken check_epoch test and add one for genesis epoch
    
    * Check that the length of the pre-digests is correct
    
    * Bump `impl_version`
    
    * use epoch_for_descendent_of even for genesis
    
    * account for competing block 1s
    
    * finish srml-babe docs
    
    Co-Authored-By: default avatarAndré Silva <[email protected]>
    
    * address grumbles
    426c26b8