Skip to content
  1. Aug 04, 2022
  2. 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
  3. Jul 26, 2022
    • Sebastian Kunert's avatar
      Prepare for rust 1.62.1 (#11903) · 9f409dc0
      Sebastian Kunert authored
      
      
      * Update UI test output for rust 1.62.1
      
      * switch ci to staging image to check that everything works
      
      * fix artifacts node-bench-regression-guard
      
      * Imeplement `scale_info::TypeInfo` manually to silence aggressive rust warning
      
      * Fix more clippy lints
      
      * Make clippy happy by relying on auto-deref were possible
      
      * Add tracking issue to the comments
      
      * pin ci image
      
      Co-authored-by: default avataralvicsam <[email protected]>
      9f409dc0
  4. Jul 12, 2022
    • Nazar Mokrynskyi's avatar
      Network sync refactoring (part 4) (#11412) · 5896072b
      Nazar Mokrynskyi authored
      
      
      * Remove direct dependency of `sc-network` on `sc-network-light`
      
      * Move `WarpSyncProvider` trait and surrounding data structures into `sc-network-common`
      
      * Move `WarpSyncProvider` trait and surrounding data structures into `sc-network-common`
      
      * Create `sync` module in `sc-network-common`, create `ChainSync` trait there (not used yet), move a bunch of associated data structures from `sc-network-sync`
      
      * Switch from concrete implementation to `ChainSync` trait from `sc-network-common`
      
      * Introduce `OpaqueStateRequest`/`OpaqueStateResponse` to remove generics from `StateSync` trait
      
      * Introduce `OpaqueBlockRequest`/`OpaqueBlockResponse`, make `scheme` module of `sc-network-sync` private
      
      * Surface `sc-network-sync` into `sc-service` and make `sc-network` not depend on it anymore
      
      * Remove now unnecessary dependency from `sc-network`
      
      * Replace crate links with just text since dependencies are gone now
      
      * Remove `warp_sync` re-export from `sc-network-common`
      
      * Update copyright in network-related files
      
      * Address review comments about documentation
      
      * Apply review suggestion
      
      * Rename `extra_requests` module to `metrics`
      
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      5896072b
  5. Jun 20, 2022
  6. Jun 14, 2022
  7. May 04, 2022
    • Web3 Smith's avatar
      Update MMR Runtime API with functionality to generate MMR proof for a series... · fd45676d
      Web3 Smith authored
      
      Update MMR Runtime API with functionality to generate MMR proof for a series of leaf indices  (#10635)
      
      * updated mmr rpc api with functions for batch generation of proof
      
      * update code comments
      
      * fix build errors
      
      * added tests to mmr-rpc
      
      * add tests to pallet-mmr
      
      * update comments
      
      * minor comment fix
      
      * remove unused variables
      
      * fix rust doc errors
      
      * refactor mmr runtime api
      
      * fix tests
      
      * minor fix
      
      * minor fix
      
      * fix node-runtime
      
      * revert to initial api
      
      * impl from proof fot batchproof
      
      * minor fix
      
      * minor fix
      
      * use explicit functions to convert btw batch proof and single proof
      
      * minor fix
      
      * add new variant to mmr error
      
      * fmt
      
      * update conversion to single leaf proof
      
      * fix style nit
      
      Co-authored-by: default avatarAdrian Catangiu <[email protected]>
      fd45676d
    • Adrian Catangiu's avatar
      BEEFY voter bugfixes (#11335) · 1e2424ec
      Adrian Catangiu authored
      
      
      * beefy: gadget should always use current validator set
      
      The gadget/client-voter was using previous' session validator set
      to sign the 1st block in the new session (to have chained validator
      set handoffs).
      
      This is not necessary because:
      1. BEEFY piggy-backs on GRANDPA and only works on canonical chain,
         so it need not concern itself with the validity of the block header
         (which contains digest with the new session's validator set). It
         can safely assume header is valid and simply use new validator set.
      2. The BEEFY payload itself already contains a merkle root for the
         next validator set keys. So at the BEEFY-payload layer we already
         have a validated/trusted hand-off of authority.
      
      Signed-off-by: default avataracatangiu <[email protected]>
      
      * beefy: buffer votes for not yet finalized blocks
      
      Signed-off-by: default avataracatangiu <[email protected]>
      
      * beefy: add buffered votes regression test
      1e2424ec
  8. Apr 30, 2022
  9. Apr 28, 2022
  10. Apr 21, 2022
  11. Apr 13, 2022
    • Adrian Catangiu's avatar
      Expose MMR root through runtime API - use it in BEEFY client (#11183) · 80ce5c57
      Adrian Catangiu authored
      * beefy-gadget: allow custom runtime api provider
      
      * beefy-gadget: use mock runtime api in tests
      
      * pallet-mmr: expose mmr root from state through runtime API
      
      * beefy-gadget: get mmr root from runtime state
      
      * pallet-beefy-mmr: remove MmrRoot from header digests
      
      * frame/mmr: move mmr primitives out of frame
      
      * frame/mmr: completely move primitives out of frame
      
      * address review comments
      
      * beefy-mmr: bring back mmr root from header digest
      
      * clippy fixes for rustc 1.60
      
      * address review comments
      80ce5c57
  12. Apr 03, 2022
  13. 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
  14. Mar 04, 2022
  15. Feb 09, 2022
    • Koute's avatar
      Add a new host function for reporting fatal errors; make WASM backtraces... · 9a31b2c3
      Koute authored
      Add a new host function for reporting fatal errors; make WASM backtraces readable when printing out errors (#10741)
      
      * Add a new host function for reporting fatal errors
      
      * Fix one of the wasmtime executor tests
      
      * Have `#[runtime_interface(wasm_only)]` actually mean WASM-only, and not no_std-only
      
      * Print out errors through `Display` instead of `Debug`
      
      * Switch one more trait to require `Error` for its error instead of only `Debug`
      
      * Align to review comments
      9a31b2c3
  16. Jan 06, 2022
    • Adrian Catangiu's avatar
      Add BEEFY `latestFinalized` RPC and deduplicate code between BEEFY and GRANDPA (#10568) · fe8d2bc7
      Adrian Catangiu authored
      
      
      * beefy: add dummy latest_finalized() RPC
      
      * beefy: rpc latest_best_beefy() using shared mem
      
      * beefy: rpc populate latest_best_beefy()
      
      * beefy: rpc handle readiness
      
      * beefy: best block over channel - wip
      
      Not working because channel can't be simply opened and receiver passed
      to `rpc_extensions_builder` because `rpc_extensions_builder` has to be
      `Fn` and not `FnOnce`... and and Receiver side of mpsc can't be cloned
      
      yay!..
      
      * beefy: make notification channels payload-agnostic
      
      * beefy: use notification mechanism instead of custom channel
      
      * beefy: add tracing key to notif channels
      
      * sc-utils: add notification channel - wip
      
      * beefy: use sc-utils generic notification channel
      
      * grandpa: use sc-utils generic notification channel
      
      * fix grumbles
      
      * beefy-rpc: get best block header instead of number
      
      * beefy-rpc: rename to `beefy_getFinalizedHead`
      
      * fix nitpicks
      
      * client-rpc-notifications: move generic Error from struct to fn
      
      * beefy: use header from notification instead of getting from database
      
      * beefy-rpc: get best block hash instead of header
      
      * beefy-rpc: fix and improve latestHead test
      
      * beefy-rpc: bubble up errors from rpc-handler instantiation
      
      * update lockfile
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarAndré Silva <[email protected]>
      
      * fix errors and warnings
      
      * fix nit
      
      Co-authored-by: default avatarAndré Silva <[email protected]>
      fe8d2bc7
  17. Jan 05, 2022
  18. Jan 03, 2022
  19. Dec 21, 2021
  20. Dec 20, 2021
  21. Dec 09, 2021
  22. Dec 01, 2021
  23. Nov 25, 2021
  24. Nov 17, 2021
  25. Sep 23, 2021
    • Andreas Doerr's avatar
      Integrate BEEFY (#9833) · 283c8daa
      Andreas Doerr authored
      
      
      * Initial project setup and skeleton (#4)
      
      * initial project setup for beefy gadget client
      
      * update editorconfig
      
      * update gitignore
      
      * add initial skeleton for beefy gadget worker
      
      * add skeleton for gossip processing
      
      * add app crypto
      
      * move around some code
      
      * add basic flow for voting
      
      * add logic for picking blocks to sign
      
      * add rustfmt config
      
      * add example node with beefy gadget
      
      * use u32::next_power_of_two
      
      * make maximum periodicity configurable
      
      * add copyright header
      
      * rename max_periodicity to min_interval
      
      * CI stuff (#5)
      
      * CI stuff.
      
      * Fix workspace.
      
      * cargo fmt --all
      
      * Add license for beefy-gadget
      
      * One toolchain to rule them all.
      
      * Clippy.
      
      * Fix clippy.
      
      * Clippy in the runtime.
      
      * Fix clippy grumbles.
      
      * cargo fmt --all
      
      * Primitives & Light Client examples (#8)
      
      * Primitives.
      
      * Docs.
      
      * Document primitives.
      
      * Simple tests.
      
      * Light client examples.
      
      * Fix stuff.
      
      * cargo fmt --all
      
      * Add a bunch of tests for imports.
      
      * Add more examples.
      
      * cargo fmt --all
      
      * Fix clippy.
      
      * cargo fmt --all
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarAndré Silva <[email protected]>
      
      * Add GRANDPA / FG clarifications.
      
      * Fix min number of signatures.
      
      Co-authored-by: default avatarAndré Silva <[email protected]>
      
      * Update to substrate master (#22)
      
      * update to substrate master
      
      * update dependencies
      
      * fix clippy issues
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * Add beefy pallet (#25)
      
      * move beefy application crypto to primitives
      
      * make primitives compile under no_std
      
      * add beefy pallet that maintains authority set
      
      * add beefy pallet to node example runtime
      
      * tabify node-example cargo.toml files
      
      * use double quotes in Cargo.toml files
      
      * add missing hex-literal dependency
      
      * add runtime api to fetch BEEFY authorities
      
      * fix clippy warnings
      
      * rename beefy-pallet to pallet-beefy
      
      * sort dependencies in node-example/runtime/Cargo.toml
      
      * Signed commitments rpc pubsub (#26)
      
      * move beefy application crypto to primitives
      
      * make primitives compile under no_std
      
      * add beefy pallet that maintains authority set
      
      * add beefy pallet to node example runtime
      
      * tabify node-example cargo.toml files
      
      * use double quotes in Cargo.toml files
      
      * add missing hex-literal dependency
      
      * add runtime api to fetch BEEFY authorities
      
      * fix clippy warnings
      
      * gadget: use commitment and signedcommitment
      
      * gadget: send notifications for signed commitments
      
      * gadget: add rpc pubsub for signed commitments
      
      * node-example: enable beefy rpc
      
      * gadget: fix clippy warnings
      
      * rename beefy-pallet to pallet-beefy
      
      * sort dependencies in node-example/runtime/Cargo.toml
      
      * gadget: add documentation on SignedCommitment rpc wrapper type
      
      * gadget: add todos about dummy beefy commitments
      
      * gadget: remove redundant closure
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * Integrate MMR and deposit root into the digest. (#24)
      
      * Add basic MMR.
      
      * Deposit digest item.
      
      * cargo fmt --all
      
      * Merge with primitives.
      
      * cargo fmt --all
      
      * Fix extra spaces.
      
      * cargo fmt --all
      
      * Switch branch.
      
      * remove stray whitespace
      
      * update to latest td-mmr commit
      
      * fix clippy error
      
      Co-authored-by: default avatarAndré Silva <[email protected]>
      
      * use new mmr root as commitment payload (#27)
      
      * use new mmr root as commitment payload
      
      * fix mmr root codec index
      
      * warn on MMR root digest not found
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * add type alias for MMR root hash
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * Bump serde_json from 1.0.59 to 1.0.60 (#28)
      
      * Update to latest substrate. (#32)
      
      * Update to latest substrate.
      
      * Fix tests.
      
      * cargo fmt --all
      
      * Switch to master.
      
      * Bump serde from 1.0.117 to 1.0.118 (#29)
      
      * Bump serde from 1.0.117 to 1.0.118
      
      Bumps [serde](https://github.com/serde-rs/serde) from 1.0.117 to 1.0.118.
      - [Release notes](https://github.com/serde-rs/serde/releases)
      - [Commits](https://github.com/serde-rs/serde/compare/v1.0.117...v1.0.118)
      
      Signed-off-by: default avatardependabot-preview[bot] <[email protected]>
      
      * Bump arc-swap.
      
      Co-authored-by: default avatardependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * Remove transition flag (#35)
      
      * Get rid of is_set_transition_flag
      
      * Fix tests.
      
      * cargo fmt --all
      
      * Bump futures from 0.3.9 to 0.3.12 (#50)
      
      * Bump log from 0.4.11 to 0.4.13 (#52)
      
      * Bump Substrate and Deps (#57)
      
      * Update README (#58)
      
      * Update README
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * address review comments
      
      * missed a typo
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * Add validator set to the pallet. (#65)
      
      * Bump Substrate and Deps (#71)
      
      * Bump Substrate and Deps
      
      * pin serde and syn
      
      * bump Substrate again for '__Nonexhaustive' fix
      
      * add cargo deny ignore
      
      * Beefy pallet test (#74)
      
      * setup mock
      
      * test session change
      
      * silence beefy
      
      * clippy still
      
      * no change - no log
      
      * clippy again
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * code review changes, added additional test
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * Beefy node cleanup (#75)
      
      * bump serde
      
      * bump substrate, scale-codec 2.0.0
      
      * we need a proper beefy node
      
      * rename primitives as well
      
      * Sort members.
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * Migrate beefy-pallet to FRAMEv2 (#76)
      
      * migrate beefy-pallet to FRAMEv2
      
      * Code review
      
      Co-authored-by: default avatarHernando Castano <[email protected]>
      
      Co-authored-by: default avatarHernando Castano <[email protected]>
      
      * Run BEEFY worker as non-validator (#77)
      
      * run BEEFY worker as non-validator
      
      * don't check for roloe.is_authority
      
      * change enum type name
      
      * Bump Substrate and Deps (#79)
      
      * Add BEEFY gadget as extra peer set (#80)
      
      * Add BEEFY gadget as extra peer set
      
      * use BEEFY protocol
      
      * Add ValidatorSetId to BEEFY digest (#85)
      
      * add ValidatorSetId to BEEFY digest
      
      * apply review changes
      
      * Bump Substrate and Deps (#91)
      
      * Bump Substrate and Deps
      
      * Bump Substrate again in order to include a hot-fix
      
      * redo again
      
      * use CryptoStore issue
      
      * cargo fmt
      
      * Bump serde_json from 1.0.63 to 1.0.64 (#93)
      
      * Track BEEFY validator set (#94)
      
      * Track BEEFY validator set
      
      * Add validator_set_id to BeefyWorker
      
      * Make validattor_set_id optional
      
      * Ad 92 (#97)
      
      * sign_commitment()
      
      * Error handling todo
      
      * Add error type (#99)
      
      * Add error type
      
      * Address review
      
      * Extract worker and round logic (#104)
      
      * Bump serde from 1.0.123 to 1.0.124 (#106)
      
      * Rework BeefyAPI (#110)
      
      * Initialize BeefyWorker with current validator set (#111)
      
      * Update toolchain (#115)
      
      * Use nightly toolchain
      
      * dongradde to latest clippy stable
      
      * GH workflow trail and error
      
      * next try
      
      * use stable for clippy
      
      * update wasm builder
      
      * yet another try
      
      * fun with CI
      
      * no env var
      
      * and one more
      
      * allow from_over_into bco contruct_runtime
      
      * back to start
      
      * well ...
      
      * full circle
      
      * old version was still used
      
      * Bump Substrate and Deps (#117)
      
      * Bump Substrate and Deps
      
      * cargo fmt should enforce uniform imports
      
      * merge some imports
      
      * Delayed BEEFY worker initialization (#121)
      
      * lifecycle state
      
      * add Client convenience trait
      
      * rework trait identifiers
      
      * WIP
      
      * rework BeefyWorker::new() signature
      
      * Delayed BEEFY gadget initialization
      
      * address review
      
      * Bump substrate. (#123)
      
      * Bump substrate.
      
      * Fix tests.
      
      * Lower log-level for a missing validator set (#124)
      
      * lower log-level for a missing validator set
      
      * move best_finalized_block initialization
      
      * Setup Prometheus metrics (#125)
      
      * setup Prometheus metrics
      
      * expose validator set id
      
      * cargo fmt
      
      * Update beefy-gadget/src/lib.rs
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * add vote messages gossiped metric
      
      * track authorities change, before checking for MMR root digest
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * Make Client convenience trait public (#126)
      
      * Bump serde from 1.0.124 to 1.0.125 (#131)
      
      * Reset rounds on new validator set. (#133)
      
      * Re-set rounds on new validator set.
      
      * Fix docs.
      
      * Bump Substrate and Deps (#134)
      
      * beefy: authority set changes fixes (#139)
      
      * node: fix grandpa peers set config
      
      * gadget: update best finalized number only when finalized with beefy
      
      * gadget: process authorities changes regardless of vote status
      
      * gadget: remove superfluous signature type (#140)
      
      * node: fix grandpa peers set config
      
      * gadget: update best finalized number only when finalized with beefy
      
      * gadget: process authorities changes regardless of vote status
      
      * gadget: remove superfluous signature type
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * gadget: reduce gossip spam (#141)
      
      * node: fix grandpa peers set config
      
      * gadget: update best finalized number only when finalized with beefy
      
      * gadget: process authorities changes regardless of vote status
      
      * gadget: remove superfluous signature type
      
      * gadget: only gossip last 5 rounds
      
      * gadget: note round to gossip validator before gossiping message
      
      * gadget: fix clippy warnings
      
      * gadget: update docs
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      Co-authored-by: default avataradoerr <[email protected]>
      
      * gadget: verify SignedCommitment message signature (#142)
      
      * gadget: verify SignedCommitment message signature
      
      * gadget: log messages with bad sigs
      
      * gadget: move todo comment
      
      * Bump futures from 0.3.13 to 0.3.14 (#145)
      
      * Milestone 1 (#144)
      
      * use best_finalized, prevent race
      
      * make best_finalized_block an Option, should_vote_on bails on None
      
      * Bump futures from 0.3.13 to 0.3.14
      
      * Revert futures bump
      
      * Revert "Revert futures bump"
      
      This reverts commit a1b5e7e9bac526f2897ebfdfee7f02dd29a13ac5.
      
      * Revert "Bump futures from 0.3.13 to 0.3.14"
      
      This reverts commit a4e508b118ad2c4b52909d24143c284073961458.
      
      * debug msg if the bail voting
      
      * validator_set()
      
      * local_id()
      
      * get rid of worker state
      
      * Apply review suggestions
      
      * fix should_vote_on()
      
      * Extract BeefyGossipValidator (#147)
      
      * Extract BeefyGossipValidator
      
      * Apply review suggestions
      
      * Add block_delta parameter to start_beefy_gadget (#151)
      
      * Add block_delta parameter
      
      * rename to min_block_delta
      
      * Add additional metrics (#152)
      
      * Add additional metrics
      
      * add skipped session metric
      
      * add some comment for temp metric
      
      * don't log under info for every concluded round (#156)
      
      * don't log error on missing validator keys (#157)
      
      * don't log error on missing validator keys
      
      * remove unused import
      
      * Fix validator set change handling (#158)
      
      * reduce some logs from debug to trace
      
      * fix validator set changes handling
      
      * rename validator module to gossip
      
      * run rustfmt
      
      * Fix should_vote_on() (#160)
      
      * Fix should_vote_on()
      
      * by the textbook
      
      * fix the algorithm
      
      * Apply review suggestions
      
      * don't use NumberFor in vote_target
      
      Co-authored-by: default avatarAndré Silva <[email protected]>
      
      * Make KeyStore optional (#173)
      
      * Use builder pattern for NonDefaultSetConfig (#178)
      
      Co-authored-by: default avataradoerr <[email protected]>
      
      * Append SignedCommitment to block justifications (#177)
      
      * Append SignedCommitment
      
      * add BeefyParams
      
      * add WorkerParams
      
      * use warn
      
      * versioned variant for SignedCommitment
      
      * Bump serde from 1.0.125 to 1.0.126 (#184)
      
      Bumps [serde](https://github.com/serde-rs/serde) from 1.0.125 to 1.0.126.
      - [Release notes](https://github.com/serde-rs/serde/releases)
      - [Commits](https://github.com/serde-rs/serde/compare/v1.0.125...v1.0.126)
      
      Signed-off-by: default avatardependabot[bot] <[email protected]>
      
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      
      * Bump strum from 0.20.0 to 0.21.0 (#195)
      
      * Bump strum from 0.20.0 to 0.21.0
      
      Bumps [strum](https://github.com/Peternator7/strum) from 0.20.0 to 0.21.0.
      - [Release notes](https://github.com/Peternator7/strum/releases)
      - [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
      - [Commits](https://github.com/Peternator7/strum/commits)
      
      ---
      updated-dependencies:
      - dependency-name: strum
        dependency-type: direct:production
        update-type: version-update:semver-minor
      ...
      
      Signed-off-by: default avatardependabot[bot] <[email protected]>
      
      * use dervie feature for strum; clippy and deny housekeeping
      
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      Co-authored-by: default avataradoerr <[email protected]>
      
      * Make concluded round an info log (#200)
      
      * Remove external crypto trait bounds (#207)
      
      * BeefyKeystore newtype
      
      * WIP
      
      * remove mod ecdsa
      
      * WIP
      
      * fix tests
      
      * some polishing
      
      * Rename AuthorityId to BeefyId to avoid type conflict in UI (#211)
      
      * Add trace points; Reduce MAX_LIVE_GOSSIP_ROUNDS (#210)
      
      * Add trace points; Reduce MAX_LIVE_GOSSIP_ROUNDS
      
      * log local authority id
      
      * Additional initial authority id's (#217)
      
      * Scratch concluded rounds
      
      * adjust testnet doc
      
      * fix authority key typo
      
      * We don't want no scratches
      
      * address review comments
      
      * Fix note_round() (#219)
      
      * rename BeefyGossipValidator
      
      * Fix note_round()
      
      * use const for assert
      
      * put message trace points back in
      
      * test case note_same_round_twice()
      
      * address review comments
      
      * remove redundant check
      
      * Use LocalKeystore for tests (#224)
      
      * private_keys()
      
      * Use LocalKeystore for tests
      
      * Use keystore helper
      
      * Address review
      
      * some reformatting
      
      * Cache known votes in gossip (#227)
      
      * Implement known messages cache.
      
      * Add tests.
      
      * Appease clippy.
      
      * More clippy
      
      Co-authored-by: default avataradoerr <[email protected]>
      
      * Some key store sanity checks (#232)
      
      * verify vote message
      
      * verify_validator_set()
      
      * rework logging
      
      * some rework
      
      * Tone down warnings.
      
      * Add signature verification.
      
      * Tone down more.
      
      * Fix clippy
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * Use Binary Merkle Tree instead of a trie (#225)
      
      * Binary tree merkle root.
      
      * Add proofs and verification.
      
      * Clean up debug.
      
      * Use BEEFY addresses instead of pubkeys.
      
      * Use new merkle tree.
      
      * Optimize allocations.
      
      * Add test for larger trees.
      
      * Add tests for larger cases.
      
      * Appease clippy
      
      * Appease clippy2.
      
      * Fix proof generation & verification.
      
      * Add more test data.
      
      * Fix CLI.
      
      * Update README
      
      * Bump version.
      
      * Update docs.
      
      * Rename beefy-merkle-root to beefy-merkle-tree
      
      Co-authored-by: default avataradoerr <[email protected]>
      
      * Bump Substrate and Deps (#235)
      
      * BEEFY+MMR pallet (#236)
      
      * Add MMR leaf format to primitives.
      
      * Fix tests
      
      * Initial work on the BEEFY-MMR pallet.
      
      * Add tests to MMR pallet.
      
      * Use eth addresses.
      
      * Use binary merkle tree.
      
      * Bump libsecp256k1
      
      * Fix compilation.
      
      * Bump deps.
      
      * Appease cargo deny.
      
      * Re-format.
      
      * Module-level docs.
      
      * no-std fix.
      
      * update README
      
      Co-authored-by: default avataradoerr <[email protected]>
      
      * Fix noting rounds for non-authorities (#238)
      
      * Bump env_logger from 0.8.4 to 0.9.0 (#242)
      
      Bumps [env_logger](https://github.com/env-logger-rs/env_logger) from 0.8.4 to 0.9.0.
      - [Release notes](https://github.com/env-logger-rs/env_logger/releases)
      - [Changelog](https://github.com/env-logger-rs/env_logger/blob/main/CHANGELOG.md)
      - [Commits](https://github.com/env-logger-rs/env_logger/compare/v0.8.4...v0.9.0)
      
      ---
      updated-dependencies:
      - dependency-name: env_logger
        dependency-type: direct:production
        update-type: version-update:semver-minor
      ...
      
      Signed-off-by: default avatardependabot[bot] <[email protected]>
      
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      
      * gadget: add global timeout for rebroadcasting messages (#243)
      
      * gadget: add global timeout for rebroadcasting messages
      
      * update rustfmt.toml
      
      * make message_allowed() a debug trace
      
      Co-authored-by: default avataradoerr <[email protected]>
      
      * Bump Substrate and Deps (#245)
      
      * Bump Substrate and Deps
      
      * Bump Substrate again
      
      * Bump futures from 0.3.15 to 0.3.16 (#247)
      
      Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.15 to 0.3.16.
      - [Release notes](https://github.com/rust-lang/futures-rs/releases)
      - [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
      - [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.15...0.3.16)
      
      ---
      updated-dependencies:
      - dependency-name: futures
        dependency-type: direct:production
        update-type: version-update:semver-patch
      ...
      
      Signed-off-by: default avatardependabot[bot] <[email protected]>
      
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      
      * Bump libsecp256k1 from 0.5.0 to 0.6.0 (#249)
      
      * Bump libsecp256k1 from 0.5.0 to 0.6.0
      
      Bumps [libsecp256k1](https://github.com/paritytech/libsecp256k1) from 0.5.0 to 0.6.0.
      - [Release notes](https://github.com/paritytech/libsecp256k1/releases)
      - [Changelog](https://github.com/paritytech/libsecp256k1/blob/master/CHANGELOG.md)
      - [Commits](https://github.com/paritytech/libsecp256k1/commits)
      
      ---
      updated-dependencies:
      - dependency-name: libsecp256k1
        dependency-type: direct:production
        update-type: version-update:semver-minor
      ...
      
      Signed-off-by: default avatardependabot[bot] <[email protected]>
      
      * use correct crate name
      
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      Co-authored-by: default avataradoerr <[email protected]>
      
      * Derive `scale_info::TypeInfo` for types used in polkadot (#218)
      
      * Add scale-info TypeInfo derives
      
      * Update scale-info
      
      * Add crates.io patches
      
      * Use substrate aj-metadata-vnext branch
      
      * Revert master branch substrate deps
      
      * Add scale-info to beefy-pallet
      
      * scale-info v0.9.0
      
      * Remove github dependencies and patches
      
      * More TypeInfo derives
      
      * Update scale-info to 0.10.0
      
      * Add missing scale-info dependency
      
      * Add missing TypeInfo derive
      
      * Hide TypeInfo under a feature.
      
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      
      * Bump serde from 1.0.126 to 1.0.127 (#260)
      
      Bumps [serde](https://github.com/serde-rs/serde) from 1.0.126 to 1.0.127.
      - [Release notes](https://github.com/serde-rs/serde/releases)
      - [Commits](https://github.com/serde-rs/serde/compare/v1.0.126...v1.0.127)
      
      ---
      updated-dependencies:
      - dependency-name: serde
        dependency-type: direct:production
        update-type: version-update:semver-patch
      ...
      
      Signed-off-by: default avatardependabot[bot] <[email protected]>
      
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      
      * Bump Substrate and Deps (#262)
      
      * Update jsonrpc (#265)
      
      * Update jsonrpc
      
      * Update Substrate
      
      * bump Substrate and Deps (#268)
      
      * Bump serde from 1.0.127 to 1.0.128 (#272)
      
      Bumps [serde](https://github.com/serde-rs/serde) from 1.0.127 to 1.0.128.
      - [Release notes](https://github.com/serde-rs/serde/releases)
      - [Commits](https://github.com/serde-rs/serde/compare/v1.0.127...v1.0.128)
      
      ---
      updated-dependencies:
      - dependency-name: serde
        dependency-type: direct:production
        update-type: version-update:semver-patch
      ...
      
      Signed-off-by: default avatardependabot[bot] <[email protected]>
      
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      
      * Fix spelling (#271)
      
      * Bump serde from 1.0.128 to 1.0.130 (#276)
      
      Bumps [serde](https://github.com/serde-rs/serde) from 1.0.128 to 1.0.130.
      - [Release notes](https://github.com/serde-rs/serde/releases)
      - [Commits](https://github.com/serde-rs/serde/compare/v1.0.128...v1.0.130)
      
      ---
      updated-dependencies:
      - dependency-name: serde
        dependency-type: direct:production
        update-type: version-update:semver-patch
      ...
      
      Signed-off-by: default avatardependabot[bot] <[email protected]>
      
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      
      * Bump scale-info from 0.10.0 to 0.12.0 (#275)
      
      Bumps [scale-info](https://github.com/paritytech/scale-info) from 0.10.0 to 0.12.0.
      - [Release notes](https://github.com/paritytech/scale-info/releases)
      - [Changelog](https://github.com/paritytech/scale-info/blob/master/CHANGELOG.md)
      - [Commits](https://github.com/paritytech/scale-info/commits)
      
      ---
      updated-dependencies:
      - dependency-name: scale-info
        dependency-type: direct:production
        update-type: version-update:semver-minor
      ...
      
      Signed-off-by: default avatardependabot[bot] <[email protected]>
      
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      Co-authored-by: default avataradoerr <[email protected]>
      
      * Update to scale-info 1.0 (#278)
      
      * bump substrate (#282)
      
      * bump Substrate and Deps
      
      * cargo fmt
      
      Co-authored-by: default avatarWenfeng Wang <[email protected]>
      
      * Update worker.rs (#287)
      
      * Bump anyhow from 1.0.43 to 1.0.44 (#290)
      
      * Bump anyhow from 1.0.43 to 1.0.44
      
      Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.43 to 1.0.44.
      - [Release notes](https://github.com/dtolnay/anyhow/releases)
      - [Commits](https://github.com/dtolnay/anyhow/compare/1.0.43...1.0.44)
      
      ---
      updated-dependencies:
      - dependency-name: anyhow
        dependency-type: direct:production
        update-type: version-update:semver-patch
      ...
      
      Signed-off-by: default avatardependabot[bot] <[email protected]>
      
      * derive Default
      
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      Co-authored-by: default avataradoerr <[email protected]>
      
      * Remove optional `scale-info` feature (#292)
      
      * Make scale-info dependency non-optional
      
      * Remove feature gated TypeInfo derives
      
      * Import TypeInfo
      
      * Update substrate
      
      * Fix up runtime
      
      * prune .git suffix (#294)
      
      * remove unused deps (#295)
      
      * remove unused deps
      
      * update lock file
      
      * Bump libsecp256k1 from 0.6.0 to 0.7.0 (#296)
      
      * Bump libsecp256k1 from 0.6.0 to 0.7.0
      
      Bumps [libsecp256k1](https://github.com/paritytech/libsecp256k1) from 0.6.0 to 0.7.0.
      - [Release notes](https://github.com/paritytech/libsecp256k1/releases)
      - [Changelog](https://github.com/paritytech/libsecp256k1/blob/master/CHANGELOG.md)
      - [Commits](https://github.com/paritytech/libsecp256k1/commits)
      
      ---
      updated-dependencies:
      - dependency-name: libsecp256k1
        dependency-type: direct:production
        update-type: version-update:semver-minor
      ...
      
      Signed-off-by: default avatardependabot[bot] <[email protected]>
      
      * update sec advisories
      
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      Co-authored-by: default avataradoerr <[email protected]>
      
      * clean compile
      
      * use path dependencies
      
      * beefy-gadget license header
      
      * pallet-beefy license header
      
      * pallet-beefy-mmr license header
      
      * beefy-primitves license header
      
      * carg fmt
      
      * more formatting
      
      * shorten line
      
      * downgrade parity-scale-codec to 2.2.0
      
      * use path dependency for Prometheus endpoint
      
      * remove clippy annotations
      
      Co-authored-by: default avatarAndré Silva <[email protected]>
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      Co-authored-by: default avatarTomasz Drwięga <[email protected]>
      Co-authored-by: default avatarAndré Silva <[email protected]>
      Co-authored-by: default avatardependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
      Co-authored-by: default avatarHernando Castano <[email protected]>
      Co-authored-by: default avatarPierre Krieger <[email protected]>
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      Co-authored-by: default avatarAndrew Jones <[email protected]>
      Co-authored-by: default avatarBastian Köcher <[email protected]>
      Co-authored-by: default avatardrewstone <[email protected]>
      Co-authored-by: default avatarAndronik Ordian <[email protected]>
      Co-authored-by: default avatarWenfeng Wang <[email protected]>
      Co-authored-by: default avatarJoshy Orndorff <[email protected]>
      Co-authored-by: default avatarSquirrel <[email protected]>
      283c8daa