* set up data types and control flow for statement distribution
* add some set-like methods to View
* implement sending to peers
* start fixing equivocation handling
* Add a section to the statement distribution subsystem on equivocations and flood protection
* fix typo and amend wording
* implement flood protection
* have peer knowledge tracker follow when peer first learns about a candidate
* send dependents after circulating
* add another TODO
* trigger send in one more place
* refactors from review
* send new statements to candidate backing
* instantiate active head data with runtime API values
* track our view changes and peer view changes
* apply a benefit to peers who send us statements we want
* remove unneeded TODO
* add some comments and improve Hash implementation
* start tests and fix `note_statement`
* test active_head seconding logic
* test that the per-peer tracking logic works
* test per-peer knowledge tracker
* test that peer view updates lead to messages being sent
* test statement circulation
* address review comments
* have view set methods return references
* initial mockup
* add and wipe
* track writes
* start to add to pipeline
* return all reads/writes
* Log reads and writes from bench db
* causes panic
* Allow multiple commits
* commit before ending benchmark
* doesn't work???
* fix
* Update lib.rs
* switch to struct for `BenchmarkResults`
* add to output
* fix test
* line width
* @kianenigma review
* Add Whitelist to DB Tracking in Benchmarks Pipeline (#6405)
* hardcoded whitelist
* Add whitelist to pipeline
* Remove whitelist pipeline from CLI, add to runtime
* clean-up unused db initialized whitelist
* Add regression analysis to DB Tracking (#6475)
* Add selector
* add tests
* debug formatter for easy formula
* initial idea
* use all benchmarks
* broken
* working without trait
* Make work for multiple pallets
* Fix merge issues
* writer appends to file
* implement () for balances weight trait
* update name of trait
* Weights to WeightInfo
* auto trait writer
* Heap pages are configurable
* clean out runtime changes
* more clean up
* Fix string generation
* Update comments
* Update bin/node/runtime/src/lib.rs
Co-authored-by: arkpar <arkady.paronyan@gmail.com>
* network bridge skeleton
* move some primitives around and add debug impls
* protocol registration glue & abstract network interface
* add send_msgs to subsystemctx
* select logic
* transform different events into actions and handle
* implement remaining network bridge state machine
* start test skeleton
* make network methods asynchronous
* extract subsystem out to subsystem crate
* port over overseer to subsystem context trait
* fix minimal example
* fix overseer doc test
* update network-bridge crate
* write a subsystem test-helpers crate
* write a network test helper for network-bridge
* set up (broken) view test
* Revamp network to be more async-friendly and not require Sync
* fix spacing
* fix test compilation
* insert side-channel for actions
* Add some more message types to AllMessages
* introduce a test harness
* impl ProvideInherent for InclusionInherent
* reduce import churn; correct expect message
* move inclusion inherent identifier into primitives
It's not clear precisely why this is desired, but it's a pattern
I've seen in several places, so I'm going this to be on the
safe side. Worst case, we can revert this commit pretty easily.
* bump kusama spec_version to placate CI
* copy sc_basic_authorship::{ProposerFactory, Proposer}
We have from the problem description:
> This Proposer will require an OverseerHandle to make requests via.
That's next on the plate.
* use polkadot custom proposer instead of basic-authorship one
* add some tests
* ensure service compiles and passes tests
* fix typo
* fix service-new compilation
* Subsystem test helpers send messages synchronously
* remove smelly action inspector
* remove superfluous let binding
* fix warnings
* add license header
* empty commit; maybe github will notice the one with changes
* Update node/network/bridge/src/lib.rs
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* add sanity check to only include valid inherents
* stub: encapsulate block production mechanics instead of copying them
The goal is to end up with something like what's in
validation::block_production::*, which encapsulates
basic block production mechanics. This is a better idea than
just straight-up copying those mechanics.
* partial implementation of propose fn
Doesn't actually compile yet; need to bring in some other
commits to ensure ProvisionerMessage is a thing, and also
figure out how to get the block hash given the current
context.
* fix compilation
* clear a few more compile errors
* finish fn propose
* broken: add timeout to proposal
* add timeout to proposal
* guide: provisioner is responsible for selecting parachain candidates
* implement ProvisionerMessage::RequestInherentData & update fn propose
* impl CreateProposer::init; clean up
* impl std::error::Error for Error
* document error-handling rationale
* cause polkadot-service-new to compile correctly
* Move potentially-blocking call from fn init -> fn propose
This means that we can wrap the delayed call into the same
timeout check used elsewhere.
* document struct Proposer
* extract provisioner data fetch
This satisfies two requirements:
- only applies the timeout to actually fetching the provisioner data,
not to constructing the block after
- simplifies the problem of injecting default data if we could not
get the real provisioner data in time.
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
Co-authored-by: Gavin Wood <gavin@parity.io>
* slots: create primitives crate for consensus slots
* offences: add method to check if an offence is unknown
* babe: initial equivocation reporting implementation
* babe: organize imports
* babe: working equivocation reporting
* babe: add slot number to equivocation proof
* session: move duplicate traits to session primitives
* babe: move equivocation stuff to its own file
* offences: fix test
* session: don't have primitives depend on frame_support
* babe: use opaque type for key owner proof
* babe: cleanup client equivocation reporting
* babe: cleanup equivocation code in pallet
* babe: allow sending signed equivocation reports
* node: fix compilation
* fix test compilation
* babe: return bool on check_equivocation_proof
* babe: add test for equivocation reporting
* babe: add more tests
* babe: add test for validate unsigned
* babe: take slot number in generate_key_ownership_proof API
* babe: add benchmark for equivocation proof checking
* session: add benchmark for membership proof checking
* offences: fix babe benchmark
* babe: add weights based on benchmark results
* babe: adjust weights after benchmarking on reference hardware
* babe: reorder checks in check_and_report_equivocation
* pallet-evm: return Ok(()) when EVM execution fails
* Bump spec version
* Init test module
* Add fail_call_return_ok test
* Fix tests and use full match pattern
Co-authored-by: Gav Wood <gavin@parity.io>
Currently a collator will only send a collation to validators it is a
primary for. While testing this could lead to the situation that the
same collator was registered as prime for all Parachain validators but
failed for other reasons to generate a PoVBlock. However no other
collator was sending a collation, which stopped the Parachain until the
faulty collator was stopped.
This pr solves this problem by making sure that every collator sends a
collation to one of his validators he is connected to, but registered as backup.
* Initial commit
Forked at: 2ddbbd7c08
Parent branch: origin/master
* Remove polkadot companion detection from branch name
Even though it was nice it was also error prone as there were no indication whatsoever on the PR
that a polkadot companion branch exists.
* Initial commit
Forked at: f54614e256
Parent branch: origin/master
* Remove polkadot companion detection from branch name
Even though it was nice it was also error prone as there were no indication whatsoever on the PR
that a polkadot companion branch exists.
* Check candidate signatures before including them in `set_heads`
This work around the bug described in: https://github.com/paritytech/polkadot/issues/1327
We check the candidate signatures in `create_inherent` to ensure that
all are valid. If one isn't valid, we don't include any candidate for
the current inherent.
* Bump runtimes
* Move `create_inherents` into the block-builder
This moves the `create_inherents` call into the block-builder. This has
the advantage that `create_inherents` will be able to reuse the same
context that will be used when applying the extrinsics and we also save
one call to `on_initialize`. To make sure that `create_inherents` does
not modify any state, we execute it in a transaction that is
rolled-back after doing the runtime call.
* Feedback and build fix
* Update primitives/runtime/src/lib.rs
Co-authored-by: Sergei Shulepov <sergei@parity.io>
* Update client/block-builder/src/lib.rs
Co-authored-by: Sergei Shulepov <sergei@parity.io>
* Update SubstrateCli to return String
* Add default implementation for executable_name()
* Use display instead of PathBuf
* Get file_name in default impl of executable_name
* Remove String::from and use .into()
* Use default impl for executable_name()
* Use .as_str() and remove useless .to_string()
* Update only sp-io when running companion build
* Remove unneeded update of sp-io in CI
Co-authored-by: Cecile Tonglet <cecile@parity.io>
* Initial commit
Forked at: ece0364170
Parent branch: origin/master
* Drop the tokio runtime before the task_manager
The tokio runtime must be dropped before the task_manager. Otherwise the objects the task_manager
keep alive are dropped before the tasks are finished.
* :)
* Slight tidy
* Remove ServiceBuilderCommand
* Remove whitespace
* Keep task manager alive for check_block/import_blocks
* Pass task_manager to run_until_exit
* Make task_manager in run_until_exit and make subcommands async
* Change the async_run fn to return a future and task manager
* async_run should take a result fn
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Fix spaces in export_raw_state
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Start
* Fix compilation
* Fix chainspec
* Don't set best 2 times for the same block
* Check the status of a block before building on it
* Check that the block exists before setting it as the new best
* Reorder code
* Fork choice depends on sync status
* Switch branch again
* Downward messages, the front-end.
* Move types around to make them accessible from Parachains
* Fix compilation
* Fix branch
* Make it compile for Cumulus
* Update the branch names
* Add default generic parameter
* Implement `Partialeq`
* Move upward messages into the `ValidationResult`
* Support disabling of the runtime api
* Update branch
* Adds support for handling downward messages
* Implement sending XCMP messages as up/downward messages
* service: update to latest ServiceBuilder changes
* Make it compile
* Initial commit
Forked at: ef2aa428d7
Parent branch: origin/master
* Update substrate branch to cecton-update-polkadot-substrate
* Update substrate & polkadot to cumulus-branch
* Reset branch
* Update primitives/src/parachain.rs
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Update runtime/common/src/parachains.rs
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Update runtime/common/src/parachains.rs
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Minor fixes
* Fix wasm build
Co-authored-by: Gav Wood <gavin@parity.io>
Co-authored-by: André Silva <andre.beat@gmail.com>
Co-authored-by: Cecile Tonglet <cecile.tonglet@cecton.com>
Co-authored-by: Robert Habermeier <rphmeier@gmail.com>
* Add registrar proxy
* Add proxy filter for registrar for polkadot and westend
* Renaming + allow batch calls for Kusama
* Add batch calls for other chains
* Restrict `Protected` to some heap types.
* Comment abut Protected usage.
* Remove Protected from crypto, use secrecy crate for existing uses.
* use a parse function
* fix error convert
* Rename and move secretY string function.
* std result
The transaction queue size alert has been firing with a constant 10
transactions in the queue. While maybe problematic those 10 transactions
don't need to be the same across scrape intervals.
Instead of alerting with a size above 10, alert based on two things:
1. Monotonically increasing queue size
2. Upper limit queue size reached
* Fix mocking multiple http calls in the same function call
Fixes an issue where a function call would perform more than one http request and wait for each to complete before proceeding. The `RequestId` comes from the length of the `requests` collection in the `OffchainState` and if a request is completed before the next one starts it will be removed and the "next expected" will be off by one. This PR tries to fix that by using a request counter that tracks how many requests have been performed so that we can `remove()` items from the `expected_requests` at the right index.
I suspect that this is a sub-optimal soluton and perhaps requests and their mocks should live side by side in the same collection, e.g. in a tuple of `(PendingRequest, Option<ExpectedRequest>)`.
* Update primitives/core/src/offchain/testing.rs
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* Update primitives/core/src/offchain/testing.rs
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
* Panic on overflow
* Update primitives/core/src/offchain/testing.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Use a Deque and push/pop expected requests
* fix test
Co-authored-by: Bernhard Schuster <bernhard@ahoi.io>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Update to make cargo-deny happy
* Remove cargo deny from CI
* change (ci): run cargo deny only on tags and schedules
Co-authored-by: Denis P <denis.pisarev@parity.io>
* grandpa: replace Result<(), ()> with Option<()>
* grandpa: replace &Option<T> with Option<&T>
* grandpa: cleanup local id and keystore usages
* grandpa: return bool on check_message_signature
* grandpa: fix erroneous log message on startup
* grandpa: fix test
* Use spawner to spawn work task instead of tokio
This allows the caller to choose the runtime they want (instead of tokio).
* Replace generic by actual type
* network bridge skeleton
* move some primitives around and add debug impls
* protocol registration glue & abstract network interface
* add send_msgs to subsystemctx
* select logic
* transform different events into actions and handle
* implement remaining network bridge state machine
* start test skeleton
* make network methods asynchronous
* extract subsystem out to subsystem crate
* port over overseer to subsystem context trait
* fix minimal example
* fix overseer doc test
* update network-bridge crate
* write a subsystem test-helpers crate
* write a network test helper for network-bridge
* set up (broken) view test
* Revamp network to be more async-friendly and not require Sync
* fix spacing
* fix test compilation
* insert side-channel for actions
* Add some more message types to AllMessages
* introduce a test harness
* add some tests
* ensure service compiles and passes tests
* fix typo
* fix service-new compilation
* Subsystem test helpers send messages synchronously
* remove smelly action inspector
* remove superfluous let binding
* fix warnings
* Update node/network/bridge/src/lib.rs
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>
* fix compilation
Co-authored-by: Peter Goodspeed-Niklaus <coriolinus@users.noreply.github.com>