* client/finality-grandpa/src/until_imported: Refactor schedule_wait
Previously `BlockUntilImported::schedule_wait` took two closures, one to
report ready items and one to report items to await. None of the implementors of
`BlockUntilImported` call both closures. From a symantic perspective it
would as well not make sense to both await something and state that it
is ready.
Instead with this commit `BlockUntilImported::schedule_wait` simply
returns whether the given item needs waiting or is ready to be passed
on.
This reduces complexity by:
- Removing side effects through the two closures.
- Reducing borrowing given that `UntilImported` `ready` and `pending`
don't need to be borrowed from within the two closures.
- Removes the need for trait bounds for the two closures.
* client/finality-grandpa/src/until_imported: Fix comments
Co-Authored-By: André Silva <andre.beat@gmail.com>
Co-authored-by: André Silva <andre.beat@gmail.com>
* Improve sc-network's documentation for network protocols
* Add note about protocol id
* Apply suggestions from code review
Co-Authored-By: Max Inden <mail@max-inden.de>
Co-authored-by: Max Inden <mail@max-inden.de>
* contracts: Remove OnKilledAccount implementation
Contracts now longer rely on this callback to tell them when they
are removed. Instead, they can only self destruct using `ext_terminate`.
* Fix account removal test
* Fix account storage removal
* Make AccountId32 hashable
* Only implement Hash in std
Co-Authored-By: Nikolay Volf <nikvolf@gmail.com>
Co-authored-by: Nikolay Volf <nikvolf@gmail.com>
* Check for url validity when creating TelemetryEndpoints
* Update code that used TelemetryEndpoints::new()
* Update commennts that referred to TelemetryEndpoints::new()
* Add tests for telemetry
* Fix typo and fix code in docs
* Return error on failing to override telemetry
* Use expect instead of suppressing errors on must-be-valid telemetry endpoints
* Update telemetry unit tests to use expect instead of unwrap
* Implement custom deserializer for TelemetryEndpoints
* Fix typo
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* client/finality-grandpa/src/until_imported: Refactor BlockGlobalMessage
`BlockGlobalMessage` owns an `inner` which contains (1) a count for the
amount of outstanding blocks to be waited on and (2) the message itself.
Given that both is already wrapped in an `Arc` there is no need to keep
track of the outstanding blocks, given that it simply corresponds to the
amount of strong reference counts on the `Arc` itself.
This commit removes the atomic counter within `inner` and piggy backs on
the `Arc` reference counter instead.
* client/finality-grandpa/src/until_imported: Remove useless match
* client/finality-grandpa/src/until_imported.rs: Remove unused var
Co-Authored-By: André Silva <andre.beat@gmail.com>
* client/finality-grandpa/src/until_imported: Address comment suggestion
Co-authored-by: André Silva <andre.beat@gmail.com>
* Init
* Fix execute.
* Duplicate macro for instances temporarilly
* Add propose.
* Add vote, close.
* Propose from own module
* Add old members to set_members.
* Add previous proposals to propose.
* Compress a bit the macro.
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
* use versioning for deprecated api, remove deprecated api from regular verification
* Update primitives/core/src/sr25519.rs
* add test to transaction pool
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Currently when we connect to a bootnode and it returns a different peer
id, than the one we provided, we disconnect silently. This pr changes
the behavior to printing an error when a bootnode returns a different
peer id than the provided one.
A gossip validator returns `ValidationResult::Discard` for messages that
should not be processed nor kept due to not being useful for the node.
Examples are out-of-scope messages or messages with bad signatures. The
corresponding log message did not reflect this, thus the update through
this patch.
One caveat is a finality grandpa neighbor packet. Given that the concept
of neighbor packets is handled in the finality grandpa gossip validator
only, valid neighbor packets are always discarded on the
`client/network-gossip` layer.
* Adds new event phase `Initialization`
Every event that was deposited inside of `on_initialize` was assigned to
the `ApplyExtrinsic(0)` phase which wasn't correct. This pr introduces a
new phase `Initialization`. This is the new phase while initializing
a block. After initialization we switch to `ApplyExtrinsic(N)` and at
the end to `Finalization` as before.
* Set `ExecutionPhase` in `initialize`
* Increment `spec_version`