This function executes the given closure in a context where the test
externalities are set. This makes the srml tests easier to write, as the
test externalities need to be created anyway.
* Move `Externalities` into `substrate-externalities`
- `Externalities` now support generic extensions
- Split of `primtives-storage` for storage primitive types
* Move the externalities scoping into `substrate-externalities`
* Fix compilation
* Review feedback
* Adds macro for declaring extensions
* Fix benchmarks
* Introduce `ExtensionStore` trait
* Last review comments
* Implement it for `ExtensionStore`
* Update all dependencies
* Upgrade dependencies whenever “easy”
“easy” means that there are no major changes required.
* Fix build and bump paste dependency to 0.1.6
* Remove dead code
* Re-add = dependency for futures-preview
* Add missing std features for runtime-io
* Remove git dependencies
as updated versions have been published to crates.io
* try to debug bug
* For sr-io, "std" should imply "no_oom" and "no_panic_handler".
Otherwise, rustc complains (correctly) about duplicate lang items.
* Add missing "runtime-io/std" features
* Fix compilation errors
* Prevent duplicate lang items
Rust does not allow duplicate lang items. When compiled without the
`std` feature, `sr-io` defines two lang items. Therefore, `sr-io`
compiled without `feature = "std"` must not be linked with `std`.
However, `pwasm-utils` and `wasmi-validation` both bring in `std` unless
compiled with `default-features = "false"`. This caused a duplicate
lang item error. Building both with `default-features = "false"`
prevents this error. When building with `feature = "std"`, they should
both be built with the `std` feature, so this feature needs to be
explicitly depended on.
* Bump `impl_version`
* Make tests pass
Three tests used 1 less gas than they had previously.
* Try to un-break build
* Add a Cargo.lock file
* Revert offchain code
* Revert "Revert offchain code"
This reverts commit d216d08cc6ca0344614669c1d24cde3aa5c0d4e2.
* Don’t try to send a body with a GET request
without adding a Transfer-Encoding or Content-Length header.
This has always been wrong, but hyperium/hyper#1925 hid the bug until
hyper was upgraded to 0.12.35.
* Change some more GET requests to POST requests
* Fix excess line width and remove an `extern crate`
* Delete commented-out extern crate
Co-Authored-By: Sergei Pepyakin <sergei@parity.io>
* Fix regression in Cargo.toml files
dev-dependencies need `default-features = false`, too.
* Bump parity-wasm dependency
* Bump `futures-preview`
* Apply suggestions from code review
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* Update Cargo.lock files
* Apply suggestions from code review
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* Update core/service/src/chain_ops.rs
Co-Authored-By: Sergei Pepyakin <sergei@parity.io>
* impl
* patch
* lock
* some refactor
* some avoided copy
* new api without ref for doublemap
* fix
* version bump
* fix
* point to incoming release
* use codec latest
* bumpd impl version
* fix unused
* fix
* Update srml/support/src/storage/mod.rs
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* srml/authority-discovery: Abstract session key type
Previously `srml/authority-discovery` dependet on the `srml/im-online`
session key type directly. With this patch `srml/authority-discovery` is
generic over the session key type it is going to use, as long as it
implements the RuntimeAppPublic trait.
With this patch one can use the `srml/authority-discovery` module
without the `srml/im-online` module.
Next to the above, this patch configures `node/runtime` to use the babe
session keys for the authority discovery module.
* srml/authority-discovery: Fix line length
* srml/authority-discovery/Cargo: Move babe to dev-dependencies
* node/runtime: Bump implementation version
* srml/authority-discovery: Add doc comment for authority discovery Trait
* Force new era only when over third validators is disabled.
* Update srml/session/src/lib.rs
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* Update srml/staking/src/lib.rs
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
* Parametrize the threshold.
* Bump runtime version.
* Update node/runtime/src/lib.rs
* Fix build.
* Fix im-online test.
With the *authority-discovery* module an authoritative node makes itself
discoverable and is able to discover other authorities. Once discovered, a node
can directly connect to other authorities instead of multi-hop gossiping
information.
1. **Making itself discoverable**
1. Retrieve its external addresses
2. Adds its network peer id to the addresses
3. Sign the above
4. Put the signature and the addresses on the libp2p Kademlia DHT
2. **Discovering other authorities**
1. Retrieve the current set of authorities
2. Start DHT queries for the ids of the authorities
3. Validate the signatures of the retrieved key value pairs
4. Add the retrieved external addresses as ~reserved~ priority nodes to the
peerset
* node/runtime: Add authority-discovery as session handler
The srml/authority-discovery module implements the OneSessionHandler in
order to keep its authority set in sync. This commit adds the module to
the set of session handlers.
* core/network: Make network worker return Dht events on poll
Instead of network worker implement the Future trait, have it implement
the Stream interface returning Dht events.
For now these events are ignored in build_network_future but will be
used by the core/authority-discovery module in subsequent commits.
* *: Add scaffolding and integration for core/authority-discovery module
* core/authority-discovery: Implement module logic itself
In order to have authorities (validators) discover each other, they need
to publish their public addresses by their ip address on the Kademlia
Dht indexed by their public key. This payload needs to be signed by a
key identifying them as a valid authority.
Code inside `/core` does not know the current set of authorities nor
can it assume what kind of cryptography primitives are currently in use.
Instead it can retrieve its public key and the current set of
authorities from the runtime and have it sign and verify Dht payloads.
This commit enables code in `/core` to do so by introducing a srml
module and runtime api to:
1. Retrieve own public key.
2. Retrieve public keys of current authority set.
3. Sign a Dht payload.
4. Verify a Dht payload.
This commit makes the logic from the previous commit
(`core/consensus/common/primitives.ConsensusApi`)
cf80af9255 obsolete and thus removes it.