1. Mar 25, 2022
    • Georges's avatar
      Add a bounded fallback on failed elections (#10988) · e9bfdd9a
      Georges authored
      
      
      * Allow `pallet-election-provider` to accept smaller
      solutions, issue #9478
      
      * Fixing a typo
      
      * Adding some more tests
      Removing a seemingly outdated comment
      
      * making it a URL
      
      * Updating test name as per suggestion
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Updating documentation to be more explicit
      
      And to follow the general guidelines
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Fixing formatting
      
      * `Fallback` now of type `InstantElectionProvider`
      Some cleanups
      
      * Allow `pallet-election-provider` to accept smaller
      solutions, issue #9478
      
      * Fixing a typo
      
      * Adding some more tests
      Removing a seemingly outdated comment
      
      * making it a URL
      
      * Updating test name as per suggestion
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Updating documentation to be more explicit
      
      And to follow the general guidelines
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Fixing formatting
      
      * `Fallback` now of type `InstantElectionProvider`
      Some cleanups
      
      * Merging types into one type with generics
      
      * Removing `ConstUSize` and use `ConstU32`
      
      * cleaning up the code
      
      * deprecating `OnChainSequentialPhragmen`
      Renaming it to `UnboundedSequentialPhragmen` which should only be used
      at genesis and for testing.
      Use preferrably `BoundedOnChainSequentialPhragmen`
      
      * Amending docs
      
      * Adding some explicit imports
      
      * Implementing generic `BoundedOnchainExecution`
      Removing the deprecated `OnChainSequentialPhragmen`
      
      * Use the right Balancing strategy
      
      * Refactoring `onchain::Config`
      Creating `onchain::ExecutionConfig`
      
      * Merge master
      
      * fmt
      
      * Name cleanups after review suggestions
      
      * cosmetics
      
      * renaming `instant_elect` to `elect_with_bounds`
      Other corresponding changes as per @Kianenigma
      
       feedback
      
      * `BoundedOnchainExecution` -> `BoundedExecution`
      And `UnboundedOnchainExecution` -> `UnboundedExecution`
      
      * feedback from kian
      
      * fmt + unneeded import
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarkianenigma <[email protected]>
      e9bfdd9a
    • Gavin Wood's avatar
      Remove unneeded code (#11117) · cbfb1f0e
      Gavin Wood authored
      
      
      * Remove unneeded code
      
      * Remove unused imports
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      cbfb1f0e
    • Adrian Catangiu's avatar
      Implement Lean BEEFY (#10882) · 498e8c18
      Adrian Catangiu authored
      
      
      Simplified BEEFY worker logic based on the invariant that GRANDPA
      will always finalize 1st block of each new session, meaning BEEFY
      worker is guaranteed to receive finality notification for the
      BEEFY mandatory blocks.
      
      Under these conditions the current design is as follows:
      - session changes are detected based on BEEFY Digest present in
        BEEFY mandatory blocks,
      - on each new session new `Rounds` of voting is created, with old
        rounds being dropped (for gossip rounds, last 3 are still alive
        so votes are still being gossiped),
      - after processing finality for a block, the worker votes if
        a new voting target has become available as a result of said
        block finality processing,
      - incoming votes as well as self-created votes are processed
        and signed commitments are created for completed BEEFY voting
        rounds,
      - the worker votes if a new voting target becomes available
        once a round successfully completes.
      
      On worker startup, the current validator set is retrieved from
      the BEEFY pallet. If it is the genesis validator set, worker
      starts voting right away considering Block #1 as session start.
      
      Otherwise (not genesis), the worker will vote starting with
      mandatory block of the next session.
      
      Later on when we add the BEEFY initial-sync (catch-up) logic,
      the worker will sync all past mandatory blocks Signed Commitments
      and will be able to start voting right away.
      
      BEEFY mandatory block is the block with header containing the BEEFY
      `AuthoritiesChange` Digest, this block is guaranteed to be finalized
      by GRANDPA.
      
      This session-boundary block is signed by the ending-session's
      validator set. Next blocks will be signed by the new session's
      validator set. This behavior is consistent with what GRANDPA does
      as well.
      
      Also drop the limit N on active gossip rounds. In an adversarial
      network, a bad actor could create and gossip N invalid votes with
      round numbers larger than the current correct round number. This
      would lead to votes for correct rounds to no longer be gossiped.
      
      Add unit-tests for all components, including full voter consensus
      tests.
      
      Signed-off-by: default avatarAdrian Catangiu <[email protected]>
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      Co-authored-by: David Salami <Wizdave97>
      498e8c18
    • Qinxuan Chen's avatar
      pallet-conviction-voting: make the pallet instantiable (#11088) · 52967f17
      Qinxuan Chen authored
      
      
      * pallet-conviction-voting: make the pallet instanceable
      
      Signed-off-by: default avatarkoushiro <[email protected]>
      
      * Add default type param for some type alias
      
      Signed-off-by: default avatarkoushiro <[email protected]>
      52967f17
    • Shawn Tabrizi's avatar
      Improve Bounties and Child Bounties Deposit Logic (#11014) · a95dbede
      Shawn Tabrizi authored
      
      
      * basic idea
      
      * make tests better
      
      * update bounties pallet to also have similar logic
      
      * new test verifies logic for bounty pallet
      
      * add test for new child logic
      
      * better name
      
      * make `node` compile with bounties changes
      
      * * formatting
      * use uniform notion of parent and child, no "master" or "general" entity
      * README updated to match comments
      
      * Revert "* formatting"
      
      This reverts commit 1ab729e7c23b5db24a8e229d487bbc2ed81d38c3.
      
      * update bounties logic to use bounds
      
      * fix child
      
      * bounties test for max
      
      * update tests
      
      * check min bound
      
      * update node
      
      * remove stale comment
      
      * Update frame/bounties/src/lib.rs
      
      Co-authored-by: default avatarDan Shields <[email protected]>
      a95dbede
    • Oliver Tale-Yazdi's avatar
      Add `benchmark-block` command (#11091) · fa8fa8fa
      Oliver Tale-Yazdi authored
      
      
      * Add benchmark-block command
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarShawn Tabrizi <[email protected]>
      
      * Beauty fixes
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Beauty fixes
      
      Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      Co-authored-by: default avatarShawn Tabrizi <[email protected]>
      Co-authored-by: parity-processbot <>
      fa8fa8fa
  2. Mar 24, 2022
    • Oliver Tale-Yazdi's avatar
    • Qinxuan Chen's avatar
      44e71d8d
    • Koute's avatar
      Add extra WASM heap pages when precompiling the runtime blob (#11107) · a4041add
      Koute authored
      * Add extra WASM heap pages when precompiling the runtime blob
      
      * Fix compilation
      
      * Fix rustdoc
      
      * Fix rustdoc for real this time
      
      * Fix benches compilation
      
      * Improve the builder in `sc-executor-wasmtime`'s tests
      a4041add
    • Davide Galassi's avatar
      BABE's revert procedure (#11022) · c534e00f
      Davide Galassi authored
      * First rough draft for BABE revert
      
      * Proper babe revert test
      
      * Cleanup
      
      * Test trivial cleanup
      
      * Fix to make clippy happy
      
      * Check polkadot companion
      
      * Check cumulus companion
      
      * Remove babe's blocks weight on revert
      
      * Handle "empty" blockchain edge case
      
      * Run companions
      
      * Simplify the filter predicate
      
      * Saturating sub is not required
      
      * Run pipeline
      
      * Run pipeline again...
      c534e00f
    • Keith Yeung's avatar
      Allow pallet error enum variants to contain fields (#10242) · 208be869
      Keith Yeung authored
      
      
      * Allow pallet errors to contain at most one field
      
      * Update docs on pallet::error
      
      * Reword documentation
      
      * cargo fmt
      
      * Introduce CompactPalletError trait and require #[pallet::error] fields to implement them
      
      * cargo fmt
      
      * Do not assume tuple variants
      
      * Add CompactPalletError derive macro
      
      * Check for error type compactness in construct_runtime
      
      * cargo fmt
      
      * Derive CompactPalletError instead of implementing it directly during macro expansion
      
      * Implement CompactPalletError on OptionBool instead of Option<bool>
      
      * Check for type idents instead of variant ident
      
      * Add doc comments for ErrorCompactnessTest
      
      * Add an trait implementation of ErrorCompactnessTest for ()
      
      * Convert the error field of DispatchError to a 4-element byte array
      
      * Add static check for pallet error size
      
      * Rename to MAX_PALLET_ERROR_ENCODED_SIZE
      
      * Remove ErrorCompactnessTest trait
      
      * Remove check_compactness
      
      * Return only the most significant byte when constructing a custom InvalidTransaction
      
      * Rename CompactPalletError to PalletError
      
      * Use counter to generate unique idents for assert macros
      
      * Make declarative pallet macros compile with pallet error size checks
      
      * Remove unused doc comment
      
      * Try and fix build errors
      
      * Fix build errors
      
      * Add macro_use for some test modules
      
      * Test fix
      
      * Fix compilation errors
      
      * Remove unneeded #[macro_use]
      
      * Resolve import ambiguity
      
      * Make path to pallet Error enum more specific
      
      * Fix test expectation
      
      * Disambiguate imports
      
      * Fix test expectations
      
      * Revert appending pallet module name to path
      
      * Rename bags_list::list::Error to BagError
      
      * Fixes
      
      * Fixes
      
      * Fixes
      
      * Fix test expectations
      
      * Fix test expectation
      
      * Add more implementations for PalletError
      
      * Lift the 1-field requirement for nested pallet errors
      
      * Fix UI test expectation
      
      * Remove PalletError impl for OptionBool
      
      * Use saturating operations
      
      * cargo fmt
      
      * Delete obsolete test
      
      * Fix test expectation
      
      * Try and use assert macro in const context
      
      * Pull out the pallet error size check macro
      
      * Fix UI test for const assertion
      
      * cargo fmt
      
      * Apply clippy suggestion
      
      * Fix doc comment
      
      * Docs for create_tt_return_macro
      
      * Ensure TryInto is imported in earlier Rust editions
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * Fix up comments and names
      
      * Implement PalletError for Never
      
      * cargo fmt
      
      * Don't compile example code
      
      * Bump API version for block builder
      
      * Factor in codec attributes while derving PalletError
      
      * Rename module and fix unit test
      
      * Add missing attribute
      
      * Check API version and convert ApplyExtrinsicResult accordingly
      
      * Rename BagError to ListError
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Use codec crate re-exported from frame support
      
      * Add links to types mentioned in doc comments
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      
      * cargo fmt
      
      * cargo fmt
      
      * Re-add attribute for hidden docs
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      208be869
  3. Mar 23, 2022
    • Shawn Tabrizi's avatar
      Fix `generate_storage_alias!` (#11102) · 5c9f23af
      Shawn Tabrizi authored
      * add test
      
      * fix issues
      
      * make order intuitive
      5c9f23af
    • Kian Paimani's avatar
      Store validator self-vote in bags-list, and allow them to be trimmed for election (#10821) · 661d0ea5
      Kian Paimani authored
      
      
      * Implement the new validator-in-bags-list scenario + migration
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      
      * some review comments
      
      * guard the migration
      
      * some review comments
      
      * Fix tests 🤦
      
      ‍♂️
      
      * Fix build
      
      * fix weight_of_fn
      
      * reformat line width
      
      * make const
      
      * use weight of fn cached
      
      * SortedListProvider -> VoterList
      
      * Fix all build and docs
      
      * check post migration
      
      Co-authored-by: default avatarZeke Mostov <[email protected]>
      661d0ea5
    • Georges's avatar
      Implementing `MaxEncodedLen` for `generate_solution_type` (#11032) · e0cef349
      Georges authored
      * Move `sp-npos-elections-solution-type`
      to `frame-election-provider-support`
      First stab at it, will need to amend some more stuff
      
      * Fixing tests
      
      * Fixing tests
      
      * Fixing cargo.toml for std configuration
      
      * Implementing `MaxEncodedLen`
      on `generate_solution_type`
      
      * Full implementation of `max_encoded_len`
      
      * Fixing implementation bug
      adding some comments and documentation
      
      * fmt
      
      * Committing suggested changes
      renaming, and re exporting macro.
      
      * Removing unneeded imports
      
      * Implementing `MaxEncodedLen`
      on `generate_solution_type`
      
      * Full implementation of `max_encoded_len`
      
      * Fixing implementation bug
      adding some comments and documentation
      
      * Move `NposSolution` to frame
      
      * Implementing `MaxEncodedLen`
      on `generate_solution_type`
      
      * Full implementation of `max_encoded_len`
      
      * Fixing implementation bug
      adding some comments and documentation
      
      * Fixing test
      
      * Removing unneeded dependencies
      
      * `VoterSnapshotPerBlock` -> `MaxElectingVoters`
      
      * rename `SizeBound` to `MaxVoters`
      
      * Removing TODO and change bound
      
      * renaming `size_bound` to `max_voters`
      
      * Enabling tests for `solution-type`
      These got dropped off after the crate was moved from `sp_npos_elections`
      
      * Adding tests for `MaxEncodedLen` of solution_type
      
      * Better rustdocs. Better indenting and comments.
      Removing unneeded imports in tests.
      e0cef349
  4. Mar 22, 2022
  5. Mar 21, 2022
  6. Mar 19, 2022
  7. Mar 18, 2022
  8. Mar 17, 2022
  9. Mar 16, 2022
    • Georges's avatar
      Moving `NposSolution` to frame (#11031) · 26a8c7e6
      Georges authored
      
      
      * Move `sp-npos-elections-solution-type`
      to `frame-election-provider-support`
      First stab at it, will need to amend some more stuff
      
      * Fixing tests
      
      * Fixing tests
      
      * Fixing cargo.toml for std configuration
      
      * fmt
      
      * Committing suggested changes
      renaming, and re exporting macro.
      
      * Removing unneeded imports
      
      * Move `NposSolution` to frame
      
      * Removing `npos_election` dependencies
      Implementing _fpes better
      
      * some feedback for moving NPoSSolution to frame
      
      * fmt
      
      * more formatting
      
      * Fixed some imports and fmt
      
      * Fixing docs
      
      Co-authored-by: default avatarkianenigma <[email protected]>
      26a8c7e6
    • Falco Hirschenberger's avatar
      Prevent possible rocksdb-corruption by running benchmark-storage (#11040) · 7a54efd1
      Falco Hirschenberger authored
      * Prevent possible rocksdb-corruption by running benchmark-storage
      
      Also adds a `sanitize_key` function to strip path-prefixes from the db-keys (for databases that
      use prefixed keys such as rocksdb)
      
      fixes #10998
      
      * Fix @cheme
      
       's annotations.
      
      * Update utils/frame/benchmarking-cli/src/storage/write.rs
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      
      * Make logic match the name of bool flag `invert_inserts`
      
      * Remove unused lifetime
      
      Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
      7a54efd1