Skip to content
  1. Oct 05, 2022
  2. Sep 29, 2022
  3. Sep 21, 2022
  4. Jul 29, 2022
    • Adrian Catangiu's avatar
      Lean BEEFY to Full BEEFY - don't skip (older) mandatory blocks and import justifications (#11821) · 1c6867c6
      Adrian Catangiu authored
      
      
      * client/beefy: don't accept vote for older rounds
      
      * client/beefy: clean up and reorg the worker struct
      
      * client/beefy: first step towards Full BEEFY
      
      The first step from Lean->Full BEEFY is to have the worker
      enforce uninterrupted line of BEEFY finalized mandatory blocks.
      
      There is one mandatory block per session (the first block in the
      session). As such, votes processing and votes generation now
      enforces that all mandatory blocks are finalized in strict
      monotonically increasing sequence and no block 'N' will be worked
      on if there is any GRANDPA finalized but BEEFY non-final mandatory
      block 'M', where 'M < N'.
      
      Implementation details:
      
      - Introduced 'VoterOracle' to separate the voting decisions logic,
        and track new/pending sessions.
      
      - New sessions get queued up with the worker operating either:
        1. up-to-date - all mandatory blocks leading up to current GRANDPA
           finalized: queue has ONE element, the 'current session' where
           `mandatory_done == true`,
        2. lagging behind GRANDPA: queue has [1, N] elements, where all
           `mandatory_done == false`.
           In this state, everytime a session gets its mandatory block
           BEEFY finalized, the session is popped off the queue,
           eventually getting to operating mode `1. up-to-date`.
      
      - Votes get triaged and those that fall withing the `VoterOracle`
        allowed window get processed, the others get dropped if stale,
        or buffered for later processing (when they reach the window).
      
      - Worker general code was also updated to fall in one of two roles:
        1. react to external events and change internal 'state',
        2. generate events/votes based on internal 'state'.
      
      Signed-off-by: default avataracatangiu <[email protected]>
      
      * client/beefy: sketch idea for block import and sync
      
      Signed-off-by: default avataracatangiu <[email protected]>
      
      * client/beefy: add BEEFY block import
      
      * client/beefy: process justifications from block import
      
      * client/beefy: add TODOs for sync protocol
      
      * client/beefy: add more docs and comments
      
      * client/beefy-rpc: fix RPC error
      
      * client/beefy: verify justification validity on block import
      
      * client/beefy: more tests
      
      * client/beefy: small fixes
      
      - first handle and note the self vote before gossiping it,
      - don't shortcircuit on err when processing pending votes.
      
      * client/beefy: remove invalid justifications at block import
      
      * todo: beefy block import tests
      
      * RFC: ideas for multiple justifications per block
      
      * Revert "RFC: ideas for multiple justifications per block"
      
      This reverts commit 8256fb07d3124db69daf252720b3c0208202624d.
      
      * client/beefy: append justif to backend on block import
      
      * client/beefy: groundwork for block import test
      
      * client/beefy: groundwork2 for block import test
      
      * client/beefy: groundwork3 for block import test
      
      * client/beefy: add block import test
      
      * client/beefy: add required trait bounds to block import builder
      
      * remove client from beefy block import, backend gets the job done
      
      Signed-off-by: default avataracatangiu <[email protected]>
      1c6867c6
  5. Jun 22, 2022
    • Adrian Catangiu's avatar
      pallet-beefy-mmr: add API for BEEFY Authority Sets (#11406) · 3018051c
      Adrian Catangiu authored
      
      
      * pallet-beefy: add Config::OnNewValidatorSet type
      
      Add a hook to pallet-beefy for doing specific work when
      BEEFY validator set changes.
      
      For example, this can be used by pallet-beefy-mmr to cache
      a lightweight MMR root over validators and make it available
      to light clients.
      
      * pallet-beefy-mmr: implement OnNewValidatorSet
      
      Implement pallet-beefy::OnNewValidatorSet to be notified of BEEFY
      validator set changes. Use the notifications to compute and cache
      a light weight 'BEEFY authority set' which is an MMR root over
      BEEFY validator set plus some extra info.
      
      Previously, pallet-beefy-mmr was interogating pallet-beefy about
      validator set id on every block to find out when it needs to recompute
      the authority set.
      By using the event-driven approach in this commit, we also save one
      extra state interogation per block.
      
      * pallet-beefy-mmr: add new authority_set() API
      
      Expose current and next BEEFY authority sets through runtime API.
      These can be directly used by light clients to avoid having them
      compute them themselves based on BEEFY validator sets.
      
      Signed-off-by: default avataracatangiu <[email protected]>
      
      * rename BeefyMmr exposed runtime api
      3018051c
  6. May 16, 2022
  7. May 04, 2022
  8. Apr 01, 2022
  9. Mar 25, 2022
    • 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
  10. Mar 02, 2022
  11. Mar 01, 2022
    • Andrew Jones's avatar
      Release primitive crates (#10937) · a3a7fe90
      Andrew Jones authored
      * cargo set-version --bump major -p pallet-contracts-primitives
      
      * cargo set-version --bump major -p sp-core
      
      * cargo set-version --bump major -p sp-runtime-interface
      
      * cargo set-version --bump major -p sp-wasm-interface
      
      * cargo set-version --bump major -p sp-runtime
      
      * cargo set-version --bump major -p sp-storage
      
      * cargo set-version --bump major -p sp-rpc
      
      * cargo set-version --bump major -p sp-io
      
      * cargo set-version --bump major -p sp-trie
      
      * cargo set-version -p sp-state-machine  -- 0.12.0
      
      * cargo set-version -p sp-externalities  -- 0.12.0
      
      * cargo set-version -p sp-keystore -- 0.12.0
      
      * cargo set-version --bump major -p sp-keyring
      
      * cargo set-version --bump major -p sp-version
      
      * cargo set-version --bump major -p sp-tracing
      
      * cargo set-version --bump major -p sp-application-crypto
      
      * cargo set-version --bump major -p sp-arithmetic
      
      * cargo unleash version bump-major -p sp-runtime-interface-proc-macro
      
      * Add codec max-encoded-len feature to sp-arithmetic
      
      * cargo unleash version bump-major -p sp-core-hashing-proc-macro
      a3a7fe90
  12. Feb 24, 2022
    • wigy's avatar
      Upgrading parity-scale-codec to v3 (#10825) · 535325d2
      wigy authored
      * Upgraded dependencies
      
      * Adapting code to scale v3
      
      * Empty commit to trigger CI
      
      * Triggering CI
      
      * Fixing UI test
      
      * Remove superfluous dev-dep added by #9228
      
      * Cryout for CI
      535325d2
  13. Feb 08, 2022
  14. Feb 01, 2022
    • Alexander Theißen's avatar
      Release `pallet-contracts-primitives` (#10772) · 3938c1cb
      Alexander Theißen authored
      * Bump sp-storage
      
      * Bump sp-rpc
      
      * Bump sp-io
      
      * Bump sp-trie
      
      * Bump sp-state-machine
      
      * Bump sp-externalities
      
      * Bump sp-keystore
      
      * Bump sp-application-crypto
      
      * Bump pallet-contracts-primitives
      
      * Bump sp-core
      
      * Bump sp-runtime-interface
      
      * Bump sp-wasm-interface
      
      * Bump sp-runtime
      
      * Bump sp-storage
      
      * Update lock file
      
      * Revert "Bump sp-storage"
      
      This reverts commit f86c6db1ae334e28207b658fd90714ade0332e3b.
      
      * Update lock file
      3938c1cb
  15. Jan 20, 2022
  16. Jan 03, 2022
  17. Dec 21, 2021
  18. Dec 20, 2021
  19. Dec 15, 2021
  20. Dec 11, 2021
    • Bastian Köcher's avatar
      `inspect-key`: Adds support for `expect-public` (#10430) · f6f58f95
      Bastian Köcher authored
      * Introduce `SecretUri`
      
      * `inspect-key`: Adds support for `expect-public`
      
      `expect-public` can be used to check that a given secret uri corresponds to the given public key.
      This is mainly useful when the secret uri is protected by a password and a new derived account
      should be generated. With `--expect-public` the user can pass the public key/account-id of the
      "base" secret uri aka the one without any derivation to ensure the correct password was inserted.
      
      * Fixes
      
      * 🤦
      
      
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarAndré Silva <[email protected]>
      
      * Review feedback
      
      * FMT
      
      * Bump the versions
      
      Co-authored-by: default avatarAndré Silva <[email protected]>
      f6f58f95
  21. Dec 08, 2021
    • David's avatar
      Release sp-core 4.0.0 (#10447) · 92dc635f
      David authored
      * Bump versions of sp-core and dependencies to v4.0.0
      
      * Update references from `4.0.0-dev` –> `4.0.0`
      
      * Funny whitespace
      
      * Funny whitespace 2
      92dc635f
  22. Dec 03, 2021
  23. Dec 01, 2021
  24. Nov 22, 2021
  25. Nov 10, 2021
    • Benjamin Kampmann's avatar
      Intend to reactivate cargo-unleash check (#10167) · 2168a6d0
      Benjamin Kampmann authored
      * Intend to reactivate cargo-unleash check
      
      It appears the bug it was deactivated for has been resolved a while ago. Trying to reactivate the checks.
      
      * adding missing cargo.toml metadata for BEEFY crates
      
      * fix wrong version reference
      
      * matching up versions
      
      * disable faulty cache
      
      * switching more versions to prerelease
      
      * Revert "disable faulty cache"
      
      This reverts commit 411a12ae444a9695a8bfea4458a868438d870b06.
      
      * bump minor of sc-allocator to fix already-published-issue
      
      * fixup another pre-released dependency problem
      
      * temp switch to latest unleash
      
      * fixing dependency version and features
      
      * prometheus endpoint has also been changed
      
      * fixing proposer metrics versioning
      
      * fixing hex feature for beefy
      
      * fix generate-bags feature selection
      
      * fixup Cargo.lock
      
      * upgrade prometheus dependencies
      
      * missed one
      
      * switch to latest release
      2168a6d0
  26. Nov 04, 2021
  27. Sep 23, 2021