* 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
* 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>
* 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
* 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>
* 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
* WIP
* Making progress
* Almost ready
* Get service tests compiling
* Fix node screenshot
* Line widths
* Fix node cli tests
* Fix node cli warning
* ChainComponents -> ServiceComponents, fix tests
* make spawn_handle public
* Remove spawnnamed impl for taskmanager
* Move the keep alive stuff to the task manager
* Move the telemetry, base path, rpc keep_alive to the service builder
* Make the task manager keep alive an internal detail
* Rewrite the browser start_client future
* Remove run_node etc
* Revert my personal changes to browser-demo/build.sh
* use |config|
* Add a runtime_version function to SubstrateCli
* Reexport role and runtime version from sc cli
* Update Cargo.lock
* runtime_version -> native_runtime_version
* Pass chain spec to native_runtime_version for polkadot
* Fix line widths
* Traitify ServiceComponents Client
* Fix tx-pool returning the same transaction multiple times
This fixes a bug that lead to returning the same transaction multiple
times when iterating the `ready` iterator. Internally the transaction
was kept in the `best` list and could be duplicated in that list be
re-inserting it again. This `best` list is using a `TransactionRef`
which internally uses a `insertion_id`. This `insertion_id` could lead
to the same transaction being inserted multiple times into the `best`
list.
* Update client/transaction-pool/src/testing/pool.rs
Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
* Initial commit
Forked at: 82bdf1a891
No parent branch.
* Ensure the listen addresses are consistent with the transport
* Update client/network/src/error.rs
* Update client/network/src/service.rs
* Better implementation
* Fix bad previous impl
* add boot_nodes
* reserved nodes
* test boot nodes
* reserved nodes tests
* add public_addresses and make specific error type
* Update client/network/src/error.rs
Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>
Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>
* client/network/service: Add primary dimension to connection metrics
Two nodes can be interconnected via one or more connections. The first
of those connections is called the primary connection.
This commit adds another dimension to the
`sub_libp2p_connections_{closed,opened}_total` metrics to differentiate
primary and non-primary connections being opened / closed.
By intuition more than one connection between two nodes is rare.
Tracking the fact whether a connection is primary or not will help prove
or disprove this intuition.
* .maintain/monitoring: Ensure to sum over all connections_closed variants
* client/network/service: Rename is_primary to is_first
* client/network/service: Split by metric name with two additional metrics
* Revert ".maintain/monitoring: Ensure to sum over all connections_closed variants"
This reverts commit 2d2f93e414440b9fc9e8f7fae6fe48bd95af6b8f.
* client/network/service: Remove labels from distinct metrics
* Fix browser informant
* Fix documentation
* Add an informant_output_format function to the cli config
* Wrap informant output format in an option
* Revert batch verifier
* Remove wasm-timer from primitives io cargo lock
* Drop informant_output_format function
* derive debug for output format
* Fix typo in offchain's docs
* Use Self keyword in AsyncApi::new()
* Move httpclient to be part of OffchainWorkers to optimize block import
* Fix compilation errors for tests
* Add wrapper struct for HyperClient
* Use lazy_static share SharedClient amongst OffchainWorkers. Remove the need to raise the fd limit
* Revert "Use lazy_static share SharedClient amongst OffchainWorkers. Remove the need to raise the fd limit"
This reverts commit 7af97498a2383b5d7405e27823db8fd97245da41.
* Add lazy_static for tests
In order to tell whether an address is the local nodes address the
authority discovery module previously compared the Multihash within the
`p2p` Multiaddr protocol.
rust-libp2p recently switched to a new PeerId representation (see [1]).
Multihashes of the same PeerId in the new and the old format don't
equal.
Instead of comparing the Multihashes, this patch ensures the module
compares the PeerIds
[1] https://github.com/libp2p/rust-libp2p/issues/555
Before we only updated the chain info of sync when we have imported
something using the import queue. However, if you import your own
blocks, this is not done using the import queue and so sync is not
updated. If we don't do this, it can lead to sync switching to "major
sync" mode because sync is not informed about new blocks. This
especially happens on Cumulus, where a collator is selected multiple
times to include its block into the relay chain and thus, sync switches
to major sync mode while the node is still building blocks.
* Initial commit
Forked at: 252416d385
No parent branch.
* Errors if slot_duration is zero
* Errors if slot_duration is zero
* Revert "Errors if slot_duration is zero"
This reverts commit a9e9820e124571f73d3e498e969a74d01fd3fe96.
* Update client/consensus/slots/src/lib.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
This implements tracking of the last seen blocks in informant display
to prevent printing the import message twice. In Cumulus we first import
blocks as part of the block building with `new_best == false` and set
the best block after we know which one was included by the relay chain.
This leads to printing the import messages two times. This pr solves the
problem by track the latest seen blocks to not print the message twice.
* Introduce trait
* Implement VRFSigner in keystore
* Use vrf_sign from keystore
* Convert output to VRFInOut
* Simplify conversion
* vrf_sign secondary slot using keystore
* Fix RPC call to claim_slot
* Use Public instead of Pair
* Check primary threshold in signer
* Fix interface to return error
* Move vrf_sign to BareCryptoStore
* Fix authorship_works test
* Fix BABE logic leaks
* Acquire a read lock once
* Also fix RPC acquiring the read lock once
* Implement a generic way to construct VRF Transcript
* Use make_transcript_data to call sr25519_vrf_sign
* Make sure VRFTranscriptData is serializable
* Cleanup
* Move VRF to it's own module
* Implement & test VRF signing in testing module
* Remove leftover
* Fix feature requirements
* Revert removing vec macro
* Drop keystore pointer to prevent deadlock
* Nitpicks
* Add test to make sure make_transcript works
* Fix mismatch in VRF transcript
* Add a test to verify transcripts match in babe
* Return VRFOutput and VRFProof from keystore
* Add span recording to tracing implementation
* Add tracing proxy
* switch to rustc_hash::FxHashMap
* Replace lazy_static and hashmap with thread_local and vec.
* fix marking valid span as invalid while removing invalid spans
* refactor, add wasm_tracing module in `support`
* update registered spans
* tidy up
* typos
* refactor
* update flag name to signal lost trace - `is_valid_trace`
* update flag name to signal lost trace - `is_valid_trace`
* update docs
* update docs
* Use tracing Field recording to store the actual `name` and `target`
from wasm traces.
* fix debug log in subscriber + small refactor
* add tests
* handle misuse in case trying to exit span not held
* Implement filter for wasm traces, simplify field recording for primitive types
* remove superfluous warning
* update docs
* Update primitives/tracing/src/proxy.rs
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* update docs, apply suggestions
* move Proxy from thread_local to `Extension`, rename macro
* fix test
* unify native & wasm span macro calls
* implement wasm tracing control facility in primitives and frame
* add cli flag `--wasm-tracing`
* fix
* switch to `Option<u4>` (possible performance degradation), switch
to static mut bool
* performance improvement using u64 vs Option<u64>
* performance improvement moving concat to client
* update docs
* Update client/cli/src/params/import_params.rs
Co-authored-by: Cecile Tonglet <cecile@parity.io>
* performance improvement
* Revert "performance improvement"
This reverts commit 55ff8817a86302cd93bb6197eb4ca5bc7f4fb524.
* small refactor
* formatting
* bump impl_version
* Update client/cli/src/config.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* update docs
* small fixes, remove pub static
* nit
* add integration tests and refactor Subscriber
* tests
* revert formatting
* try fix test that works locally but not in CI
* try fix test that works locally but not in CI
* debug test that works locally but not in CI
* fix test that works locally but not in CI
* remove pub visibility from bool in runtime
* make TracingSpanGuard #[cfg(not(feature = "std"))], update docs, comments
* make TracingProxy drop implementation conditional on !empty state
* add docs for TraceHandler
* remove blank line
* update expect message
* update tests
* rename cli option to tracing_enable_wasm
* rename cli option to tracing_enable_wasm
* fix
* ensure wasm-tracing features are wasm only
* bump impl_version
* bump impl_version
* add `"pallet-scheduler/std"` to `[features]` `std` in node/runtime
* refactor service to remove sp_tracing dependency
* refactor: line width, trait bounds
* improve LogTraceHandler output
* fix test
* improve tracing log output
* Apply suggestions from code review
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* swap wasm indication from trace name to a separate value
* Update client/tracing/src/lib.rs
* add docs
* remove runtime features
remove wasm_tracing option from CLI
remove wasm_tracing flag from ProfilingSubscriber
Co-authored-by: Matt Rutherford <mattrutherford@users.noreply.github.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Cecile Tonglet <cecile@parity.io>
* client/authority-discovery: Don't add own address to priority group
In the scenario of a validator publishing the address of its sentry node
to the DHT, said sentry node should not add its own Multiaddr to the
peerset "authority" priority group.
Related to 273f31b.
* client/authority-discovery: Remove unused import PeerId
* client/authority-discovery/tests: Add tcp protocol to multiaddresses
* Seperate out the complexity in ServiceBuilder::build_common into seperate functions
* Fix line widths
* Move some functions to their respective crates