Skip to content
  1. Apr 01, 2021
    • ordian's avatar
      gossip: do not try to connect if we are not validators (#2786) · 7a2e1ef6
      ordian authored
      * gossip: do not issue a connection request if we are not a validator
      
      * guide updates
      
      * use all relevant authorities when issuing a request
      
      * use AuthorityDiscoveryApi instead
      
      * update comments to the status quo
      7a2e1ef6
    • Tomasz Drwięga's avatar
      Merkle Mountain Range & BEEFY integration (#2101) · 5b77a898
      Tomasz Drwięga authored
      
      
      * Switch branch.
      
      * Implement basic MMR leaf.
      
      * Revert "Switch branch."
      
      This reverts commit 7f4d41c67f27ca560c53fc63fd3bd06ac182403c.
      
      * Bump substrate.
      
      * Integrate BEEFY.
      
      Bump all.
      
      Fix missing imports.
      
      * Use beefy pallet to get authorities.
      
      * Bump BEEFY repo.
      
      * Use next authority set instead of the current one.
      
      * Start BEEFY service.
      
      * Fix BEEFY start up.
      
      * Cache BEEFY authority set.
      
      * Add BEEFY ValidatorSetId to MMR
      
      * Fix code.
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarAndré Silva <[email protected]>
      Co-authored-by: default avatarHernando Castano <[email protected]>
      
      * Review grumbles.
      
      * Update beefy repo.
      
      * Work-around missing protocol.
      
      * Revert "Work-around missing protocol."
      
      This reverts commit 0a6257a8bccc1c67e966898cdedc408c6469ffd6.
      
      * Add beefy peers set config.
      
      * Expose storage of BEEFY.
      
      * Uncompress BEEFY keys for merkle tree.
      
      * Update ordering.
      
      * Switch to branch.
      
      * Bump deps.
      
      * Switch to custom beefy.
      
      * Add MMR RuntimeApi and custom rpc.
      
      * Add set length details.
      
      * Fix compilation.
      
      * Expose MmrLeaf storage.
      
      * Expose MmrLeaf storage.
      
      * Don't use session handler, and rather compute & cache beefy details on call.
      
      * Don't use session handler, and rather compute & cache beefy details on call.
      
      * Fixes.
      
      * Update Cargo.lock.
      
      * Switch back to master.
      
      * Update lockfile.
      
      * Fix xcm print issue.
      
      * Cargo.lock.
      
      * Use master branch.
      
      * Remove extra dep.
      
      * Fix tests.
      
      * Update Cargo.lock
      
      * Add BEEFY & MMR to westend.
      
      * Implement session keys migration.
      
      * Update testnet script.
      
      * start BEEFY for all node types
      
      * Update Cargo.lock
      
      * fix Cargo.toml
      
      * resolve another merge conflict
      
      * add Westend BEEFY keys
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarHernando Castano <[email protected]>
      
      * Update BEEFY.
      
      * Add Rococo BEEFY keys
      
      * resolve merge issue
      
      * fix pallet indices
      
      * fix Westend OldSessionKey
      
      * remove unused imports in Westend runtime
      
      * Fix compilation for Westend.
      
      * address review
      
      * start BEEFY gadget conditionally
      
      * address review again
      
      * fix typo
      
      * remove duplicate
      
      * remove another duplicate
      
      * well
      
      * add missing stuff
      
      * cleanup Cargo.toml files
      
      - revert unnecessary changes
      - add missing /std dependencies
      - remove unused dependencies
      
      * runtime: remove unused structs from rococo runtime
      
      * node: cleanup service
      
      Co-authored-by: default avatarAndré Silva <[email protected]>
      Co-authored-by: default avatarHernando Castano <[email protected]>
      Co-authored-by: default avataradoerr <[email protected]>
      Co-authored-by: default avatarAndré Silva <[email protected]>
      5b77a898
  2. Mar 31, 2021
  3. Mar 28, 2021
    • Robert Klotzner's avatar
      Request based PoV distribution (#2640) · c6f07d8f
      Robert Klotzner authored
      * Indentation fix.
      
      * Prepare request-response for PoV fetching.
      
      * Drop old PoV distribution.
      
      * WIP: Fetch PoV directly from backing.
      
      * Backing compiles.
      
      * Runtime access and connection management for PoV distribution.
      
      * Get rid of seemingly dead code.
      
      * Implement PoV fetching.
      
      Backing does not yet use it.
      
      * Don't send `ConnectToValidators` for empty list.
      
      * Even better - no need to check over and over again.
      
      * PoV fetching implemented.
      
      + Typechecks
      + Should work
      
      Missing:
      
      - Guide
      - Tests
      - Do fallback fetching in case fetching from seconding validator fails.
      
      * Check PoV hash upon reception.
      
      * Implement retry of PoV fetching in backing.
      
      * Avoid pointless validation spawning.
      
      * Add jaeger span to pov requesting.
      
      * Add back tracing.
      
      * Review remarks.
      
      * Whitespace.
      
      * Whitespace again.
      
      * Cleanup + fix tests.
      
      * Log to log target in overseer.
      
      * Fix more tests.
      
      * Don't fail if group cannot be found.
      
      * Simple test for PoV fetcher.
      
      * Handle missing group membership better.
      
      * Add test for retry functionality.
      
      * Fix flaky test.
      
      * Spaces again.
      
      * Guide updates.
      
      * Spaces.
      c6f07d8f
  4. Mar 24, 2021
    • André Silva's avatar
      collator-protocol: add message authentication (#2635) · bfbb0785
      André Silva authored
      * collator: authenticate collator protocol messages
      
      * fix tests compilation
      
      * node: verify collator protocol signatures in tests
      
      * collator: fix tests
      
      * implementers-guide: update CollatorProtocol messages
      
      * collator: add test for verification of collator protocol signatures
      
      * node: remove fixmes
      
      * node: remove signature from advertisecollation message
      
      * node: add magic constant to Declare message signature payload
      bfbb0785
    • asynchronous rob's avatar
      Evict inactive peers from the collator protocol peer-set (#2680) · b8867d71
      asynchronous rob authored
      * malicious reputation cost is fatal
      
      * make ReportBad a malicious cost
      
      * futures control-flow for cleaning up inactive collator peers
      
      * guide: network bridge updates
      
      * add `PeerDisconnected` message
      
      * guide: update
      
      * reverse order
      
      * remember to match
      
      * implement disconnect peer in network bridge
      
      * implement disconnect_inactive_peers
      
      * test
      
      * remove println
      
      * don't hardcore policy
      
      * add fuse outside of loop
      
      * use default eviction policy
      b8867d71
  5. Mar 19, 2021
  6. Mar 17, 2021
    • Bastian Köcher's avatar
      Companion for Substrate#8386 (#2634) · f33f6bad
      Bastian Köcher authored
      * Companion for Substrate#8386
      
      https://github.com/paritytech/substrate/pull/8386
      
      * "Update Substrate"
      
      Co-authored-by: parity-processbot <>
      f33f6bad
    • Bastian Köcher's avatar
      Reduce number of active leaves at startup (#2631) · 04f04ea6
      Bastian Köcher authored
      Currently we will take all leaves and give that to the overseer on
      startup, but this is a bad idea when the finality is lagging for
      example. There can be many of unfinalized leaves, we don't even need to
      look at anymore. To solve this, the pr adds a maximum of 4 leaves we
      forward to the overseer and the pr also checks that we only pass uncles
      of the best block.
      04f04ea6
  7. Mar 12, 2021
  8. Mar 11, 2021
  9. Mar 10, 2021
    • Tomasz Drwięga's avatar
      Companion for #8137 (MMR Custom RPC) (#2463) · 639dcc2e
      Tomasz Drwięga authored
      * Switch branch
      
      * Fix compilation.
      
      * Revert "Switch branch"
      
      This reverts commit a3bd3621772ae98618c46102d03501856b7950ba.
      
      * Update Cargo.lock.
      
      * Add telemetry span back.
      
      * Fix telemetry_span issues.
      
      * Update substrate.
      639dcc2e
  10. Mar 09, 2021
  11. Mar 05, 2021
  12. Mar 02, 2021
  13. Feb 25, 2021
  14. Feb 24, 2021
  15. Feb 19, 2021
  16. Feb 18, 2021
  17. Feb 17, 2021
    • asynchronous rob's avatar
      A fast-path for requesting `AvailableData` from backing validators (#2453) · b7aac513
      asynchronous rob authored
      
      
      * guide changes for a fast-path requesting from backing validators
      
      * add backing group to availability recovery message
      
      * add new phase to interaction
      
      * typos
      
      * add full data messages
      
      * handle new network messages
      
      * dispatch full data requests
      
      * cleanup
      
      * check chunk index
      
      * test for invalid recovery
      
      * tests
      
      * Typos.
      
      * fix some grumbles
      
      * be more explicit about error handling and control flow
      
      * fast-path param
      
      * use with_chunks_only in Service
      
      Co-authored-by: default avatarRobert Klotzner <[email protected]>
      b7aac513
    • Cecile Tonglet's avatar
      Polkadot companion for #8043 (#2382) · 0771537a
      Cecile Tonglet authored
      * WIP
      
      * WIP
      
      * WIP
      
      * Revert branch change
      
      * CLEANUP
      
      * "Update Substrate"
      
      * Fix build
      
      * Revert "Fix build"
      
      This reverts commit 2dcc3f2a14d28febb84c2c35d682243bc03523a8.
      
      * cargo update -p sp-io
      
      Co-authored-by: parity-processbot <>
      0771537a
  18. Feb 16, 2021
    • asynchronous rob's avatar
      Integrate Approval Voting into Overseer / Service / GRANDPA (#2412) · 4f21cc7e
      asynchronous rob authored
      * integrate approval voting into overseer
      
      * expose public API and make keystore arc
      
      * integrate overseer in service
      
      * guide: `ApprovedAncestor` returns block number
      
      * return block number along with hash from ApprovedAncestor
      
      * introduce a voting rule for reporting on approval checking
      
      * integrate the delay voting rule
      
      * Rococo configuration
      
      * fix compilation and add slack
      
      * fix web-wasm build
      
      * tweak parameterization
      
      * migrate voting rules to asycn
      
      * remove hack comment
      4f21cc7e
  19. Feb 15, 2021
  20. Feb 11, 2021
    • asynchronous rob's avatar
      Implement Approval Voting Subsystem (#2112) · e48c6875
      asynchronous rob authored
      
      
      * skeleton
      
      * skeleton aux-schema module
      
      * start approval types
      
      * start aux schema with aux store
      
      * doc
      
      * finish basic types
      
      * start approval types
      
      * doc
      
      * finish basic types
      
      * write out schema types
      
      * add debug and codec impls to approval types
      
      * add debug and codec impls to approval types
      
      also add some key computation
      
      * add debug and codec impls to approval types
      
      * getters for block and candidate entries
      
      * grumbles
      
      * remove unused AssignmentId
      
      * load_decode utility
      
      * implement DB clearing
      
      * function for adding new block entry to aux store
      
      * start `canonicalize` implementation
      
      * more skeleton
      
      * finish implementing canonicalize
      
      * tag TODO
      
      * implement a test AuxStore
      
      * add allow(unused)
      
      * basic loading and deleting test
      
      * block_entry test function
      
      * add a test for `add_block_entry`
      
      * ensure range is exclusive at end
      
      * test clear()
      
      * test that add_block sets children
      
      * add a test for canonicalize
      
      * extract Pre-digest from header
      
      * utilities for extracting RelayVRFStory from the header-chain
      
      * add approval voting message types
      
      * approval distribution message type
      
      * subsystem skeleton
      
      * state struct
      
      * add futures-timer
      
      * prepare service for babe slot duration
      
      * more skeleton
      
      * better integrate AuxStore
      
      * RelayVRF -> RelayVRFStory
      
      * canonicalize
      
      * implement some tick functionality
      
      * guide: tweaks
      
      * check_approval
      
      * more tweaks and helpers
      
      * guide: add core index to candidate event
      
      * primitives: add core index to candidate event
      
      * runtime: add core index to candidate events
      
      * head handling (session window)
      
      * implement `determine_new_blocks`
      
      * add TODO
      
      * change error type on functions
      
      * compute RelayVRFModulo assignments
      
      * compute RelayVRFDelay assignments
      
      * fix delay tranche calc
      
      * assignment checking
      
      * pluralize
      
      * some dummy code for fetching assignments
      
      * guide: add babe epoch runtime API
      
      * implement a current_epoch() runtime API
      
      * compute assignments
      
      * candidate events get backing group
      
      * import blocks and assignments into DB
      
      * push block approval meta
      
      * add message types, no overseer integration yet
      
      * notify approval distribution of new blocks
      
      * refactor import into separate functions
      
      * impl tranches_to_approve
      
      * guide: improve function signatures
      
      * guide: remove Tick from ApprovalEntry
      
      * trigger and broadcast assignment
      
      * most of approval launching
      
      * remove byteorder crate
      
      * load blocks back to finality, except on startup
      
      * check unchecked assignments
      
      * add claimed core to approval voting message
      
      * fix checks
      
      * assign only to backing group
      
      * remove import_checked_assignment from guide
      
      * newline
      
      * import assignments
      
      * abstract out a bit
      
      * check and import approvals
      
      * check full approvals from assignment import too
      
      * comment
      
      * create a Transaction utility
      
      * must_use
      
      * use transaction in `check_full_approvals`
      
      * wire up wakeups
      
      * add Ord to CandidateHash
      
      * wakeup refactoring
      
      * return candidate info from add_block_entry
      
      * schedule wakeups
      
      * background task: do candidate validation
      
      * forward candidate validation requests
      
      * issue approval votes when requested
      
      * clean up a couple TODOs
      
      * fix up session caching
      
      * clean up last unimplemented!() items
      
      * fix remaining warnings
      
      * remove TODO
      
      * implement handle_approved_ancestor
      
      * update Cargo.lock
      
      * fix runtime API tests
      
      * guide: cleanup assignment checking
      
      * use claimed candidate index instead of core
      
      * extract time to a trait
      
      * tests module
      
      * write a mock clock for testing
      
      * allow swapping out the clock
      
      * make abstract over assignment criteria
      
      * add some skeleton tests and simplify params
      
      * fix backing group check
      
      * do backing group check inside check_assignment_cert
      
      * write some empty test functions to implement
      
      * add a test for non-backing
      
      * test that produced checks pass
      
      * some empty test ideas
      
      * runtime/inclusion: remove outdated TODO
      
      * fix compilation
      
      * av-store: fix tests
      
      * dummy cert
      
      * criteria tests
      
      * move `TestStore` to main tests file
      
      * fix unused warning
      
      * test harness beginnings
      
      * resolve slots renaming fallout
      
      * more compilation fixes
      
      * wip: extract pure data into a separate module
      
      * wip: extract pure data into a separate module
      
      * move types completely to v1
      
      * add persisted_entries
      
      * add conversion trait impls
      
      * clean up some warnings
      
      * extract import logic to own module
      
      * schedule wakeups
      
      * experiment with Actions
      
      * uncomment approval-checking
      
      * separate module for approval checking utilities
      
      * port more code to use actions
      
      * get approval pipeline using actions
      
      * all logic is uncommented
      
      * main loop processes actions
      
      * all loop logic uncommented
      
      * separate function for handling actions
      
      * remove last unimplemented item
      
      * clean up warnings
      
      * State gives read-only access to underlying DB
      
      * tests for approval checking
      
      * tests for approval criteria
      
      * skeleton test module for import
      
      * list of import tests to do
      
      * some test glue code
      
      * test reject bad assignment
      
      * test slot too far in future
      
      * test reject assignment with unknown candidate
      
      * remove loads_blocks tests
      
      * determine_new_blocks back to finalized & harness
      
      * more coverage for determining new blocks
      
      * make `imported_block_info` have less reliance on State
      
      * candidate_info tests
      
      * tests for session caching
      
      * remove println
      
      * extricate DB and main TestStores
      
      * rewrite approval checking logic to counteract early delays
      
      * move state out of function
      
      * update approval-checking tests
      
      * tweak wakeups & scheduling logic
      
      * rename check_full_approvals
      
      * test that assignment import updates candidate
      
      * some approval import tests
      
      * some tests for check_and_apply_approval
      
      * add 'full' qualifier to avoid confusion
      
      * extract should-trigger logic to separate function
      
      * some tests for all triggering
      
      * tests for when we trigger assignments
      
      * test wakeups
      
      * add block utilities for testing
      
      * some more tests for approval updates
      
      * approved_ancestor tests
      
      * new action type for launch approval
      
      * process-wakeup tests
      
      * clean up some warnings
      
      * fix in_future test
      
      * approval checking tests
      
      * tighten up too-far-in-future
      
      * special-case genesis when caching sessions
      
      * fix bitfield len
      
      Co-authored-by: default avatarAndronik Ordian <[email protected]>
      e48c6875
  21. Feb 09, 2021
  22. Feb 04, 2021
  23. Feb 03, 2021
    • Robert Klotzner's avatar
      Generic request/response infrastructure for Polkadot (#2352) · 0cb1ccd1
      Robert Klotzner authored
      * Move NetworkBridgeEvent to subsystem::messages.
      
      It is not protocol related at all, it is in fact only part of the
      subsystem communication as it gets wrapped into messages of each
      subsystem.
      
      * Request/response infrastructure is taking shape.
      
      WIP: Does not compile.
      
      * Multiplexer variant not supported by Rusts type system.
      
      * request_response::request type checks.
      
      * Cleanup.
      
      * Minor fixes for request_response.
      
      * Implement request sending + move multiplexer.
      
      Request multiplexer is moved to bridge, as there the implementation is
      more straight forward as we can specialize on `AllMessages` for the
      multiplexing target.
      
      Sending of requests is mostly complete, apart from a few `From`
      instances. Receiving is also almost done, initializtion needs to be
      fixed and the multiplexer needs to be invoked.
      
      * Remove obsolete multiplexer.
      
      * Initialize bridge with multiplexer.
      
      * Finish generic request sending/receiving.
      
      Subsystems are now able to receive and send requests and responses via
      the overseer.
      
      * Doc update.
      
      * Fixes.
      
      * Link issue for not yet implemented code.
      
      * Fixes suggested by @ordian
      
       - thanks!
      
      - start encoding at 0
      - don't crash on zero protocols
      - don't panic on not yet implemented request handling
      
      * Update node/network/protocol/src/request_response/v1.rs
      
      Use index 0 instead of 1.
      
      Co-authored-by: default avatarAndronik Ordian <[email protected]>
      
      * Update node/network/protocol/src/request_response.rs
      
      Co-authored-by: default avatarAndronik Ordian <[email protected]>
      
      * Fix existing tests.
      
      * Better avoidance of division by zoro errors.
      
      * Doc fixes.
      
      * send_request -> start_request.
      
      * Fix missing renamings.
      
      * Update substrate.
      
      * Pass TryConnect instead of true.
      
      * Actually import `IfDisconnected`.
      
      * Fix wrong import.
      
      * Update node/network/bridge/src/lib.rs
      
      typo
      
      Co-authored-by: default avatarPierre Krieger <[email protected]>
      
      * Update node/network/bridge/src/multiplexer.rs
      
      Remove redundant import.
      
      Co-authored-by: default avatarPierre Krieger <[email protected]>
      
      * Stop doing tracing from within `From` instance.
      
      Thanks for the catch @tomaka
      
      !
      
      * Get rid of redundant import.
      
      * Formatting cleanup.
      
      * Fix tests.
      
      * Add link to issue.
      
      * Clarify comments some more.
      
      * Fix tests.
      
      * Formatting fix.
      
      * tabs
      
      * Fix link
      
      Co-authored-by: default avatarBernhard Schuster <[email protected]>
      
      * Use map_err.
      
      Co-authored-by: default avatarBernhard Schuster <[email protected]>
      
      * Improvements inspired by suggestions by @drahnr.
      
      - Channel size is now determined by function.
      - Explicitely scope NetworkService::start_request.
      
      Co-authored-by: default avatarAndronik Ordian <[email protected]>
      Co-authored-by: default avatarPierre Krieger <[email protected]>
      Co-authored-by: default avatarBernhard Schuster <[email protected]>
      0cb1ccd1
  24. Jan 29, 2021
  25. Jan 26, 2021
  26. Jan 25, 2021
    • ordian's avatar
      impl approval distribution (#2160) · 3f1e1a6f
      ordian authored
      * initial impl approval distribution
      
      * initial tests and fixes
      
      * batching seems difficult: different peers have different needs
      
      * bridge: fix test after merge
      
      * some guide updates
      
      * only send assignments to peers who know about the block
      
      * fix a test, add approvals test
      
      * simplify
      
      * do not send assignment to peers for finalized blocks
      
      * guide: protocol input and output
      
      * one more test
      
      * more comments, logs, initial metrics
      
      * fix a typo
      
      * one more thing: early return when reimporting a thing locally
      3f1e1a6f
  27. Jan 21, 2021