Auto-Update substrate-node-template from polkadot-v1.0.0 (#473)
Co-authored-by: substrate-developer-hub <devops-team@parity.io>main
parent
87b1b4728e
commit
e6bf90cfbf
File diff suppressed because it is too large
Load Diff
58
README.md
58
README.md
|
@ -5,14 +5,14 @@ A fresh [Substrate](https://substrate.io/) node, ready for hacking :rocket:
|
||||||
A standalone version of this template is available for each release of Polkadot in the [Substrate Developer Hub Parachain Template](https://github.com/substrate-developer-hub/substrate-parachain-template/) repository.
|
A standalone version of this template is available for each release of Polkadot in the [Substrate Developer Hub Parachain Template](https://github.com/substrate-developer-hub/substrate-parachain-template/) repository.
|
||||||
The parachain template is generated directly at each Polkadot release branch from the [Node Template in Substrate](https://github.com/paritytech/substrate/tree/master/bin/node-template) upstream
|
The parachain template is generated directly at each Polkadot release branch from the [Node Template in Substrate](https://github.com/paritytech/substrate/tree/master/bin/node-template) upstream
|
||||||
|
|
||||||
It is usually best to use the standalone version to start a new project.
|
It is usually best to use the stand-alone version to start a new project.
|
||||||
All bugs, suggestions, and feature requests should be made upstream in the [Substrate](https://github.com/paritytech/substrate/tree/master/bin/node-template) repository.
|
All bugs, suggestions, and feature requests should be made upstream in the [Substrate](https://github.com/paritytech/substrate/tree/master/bin/node-template) repository.
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
Depending on your operating system and Rust version, there might be additional packages required to compile this template.
|
Depending on your operating system and Rust version, there might be additional packages required to compile this template.
|
||||||
Check the [installation](https://docs.substrate.io/install/) instructions for your platform for the most common dependencies.
|
Check the [Install](https://docs.substrate.io/install/) instructions for your platform for the most common dependencies.
|
||||||
Alternatively, you can use one of the [alternative installation](#alternative-installations) options.
|
Alternatively, you can use one of the [alternative installation](#alternatives-installations) options.
|
||||||
|
|
||||||
### Build
|
### Build
|
||||||
|
|
||||||
|
@ -63,6 +63,7 @@ Development chains:
|
||||||
- Use the **Alice** account as the default `sudo` account.
|
- Use the **Alice** account as the default `sudo` account.
|
||||||
- Are preconfigured with a genesis state (`/node/src/chain_spec.rs`) that includes several prefunded development accounts.
|
- Are preconfigured with a genesis state (`/node/src/chain_spec.rs`) that includes several prefunded development accounts.
|
||||||
|
|
||||||
|
|
||||||
To persist chain state between runs, specify a base path by running a command similar to the following:
|
To persist chain state between runs, specify a base path by running a command similar to the following:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
@ -89,7 +90,7 @@ You can also find the source code and instructions for hosting your own instance
|
||||||
|
|
||||||
### Multi-Node Local Testnet
|
### Multi-Node Local Testnet
|
||||||
|
|
||||||
If you want to see the multi-node consensus algorithm in action, see [Simulate a network](https://docs.substrate.io/tutorials/get-started/simulate-network/).
|
If you want to see the multi-node consensus algorithm in action, see [Simulate a network](https://docs.substrate.io/tutorials/build-a-blockchain/simulate-network/).
|
||||||
|
|
||||||
## Template Structure
|
## Template Structure
|
||||||
|
|
||||||
|
@ -111,18 +112,20 @@ Take special note of the following:
|
||||||
|
|
||||||
- [`chain_spec.rs`](./node/src/chain_spec.rs): A [chain specification](https://docs.substrate.io/build/chain-spec/) is a source code file that defines a Substrate chain's initial (genesis) state.
|
- [`chain_spec.rs`](./node/src/chain_spec.rs): A [chain specification](https://docs.substrate.io/build/chain-spec/) is a source code file that defines a Substrate chain's initial (genesis) state.
|
||||||
Chain specifications are useful for development and testing, and critical when architecting the launch of a production chain.
|
Chain specifications are useful for development and testing, and critical when architecting the launch of a production chain.
|
||||||
Take note of the `development_config` and `testnet_genesis` functions.
|
Take note of the `development_config` and `testnet_genesis` functions,.
|
||||||
These functions are used to define the genesis state for the local development chain configuration.
|
These functions are used to define the genesis state for the local development chain configuration.
|
||||||
These functions identify some [well-known accounts](https://docs.substrate.io/reference/command-line-tools/subkey/) and use them to configure the blockchain's initial state.
|
These functions identify some [well-known accounts](https://docs.substrate.io/reference/command-line-tools/subkey/) and use them to configure the blockchain's initial state.
|
||||||
- [`service.rs`](./node/src/service.rs): This file defines the node implementation.
|
- [`service.rs`](./node/src/service.rs): This file defines the node implementation.
|
||||||
Take note of the libraries that this file imports and the names of the functions it invokes.
|
Take note of the libraries that this file imports and the names of the functions it invokes.
|
||||||
In particular, there are references to consensus-related topics, such as the [block finalization and forks](https://docs.substrate.io/fundamentals/consensus/#finalization-and-forks) and other [consensus mechanisms](https://docs.substrate.io/fundamentals/consensus/#default-consensus-models) such as Aura for block authoring and GRANDPA for finality.
|
In particular, there are references to consensus-related topics, such as the [block finalization and forks](https://docs.substrate.io/fundamentals/consensus/#finalization-and-forks) and other [consensus mechanisms](https://docs.substrate.io/fundamentals/consensus/#default-consensus-models) such as Aura for block authoring and GRANDPA for finality.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Runtime
|
### Runtime
|
||||||
|
|
||||||
In Substrate, the terms "runtime" and "state transition function" are analogous.
|
In Substrate, the terms "runtime" and "state transition function" are analogous.
|
||||||
Both terms refer to the core logic of the blockchain that is responsible for validating blocks and executing the state changes they define.
|
Both terms refer to the core logic of the blockchain that is responsible for validating blocks and executing the state changes they define.
|
||||||
The Substrate project in this repository uses [FRAME](https://docs.substrate.io/fundamentals/runtime-development/#frame) to construct a blockchain runtime.
|
The Substrate project in this repository uses [FRAME](https://docs.substrate.io/learn/runtime-development/#frame) to construct a blockchain runtime.
|
||||||
FRAME allows runtime developers to declare domain-specific logic in modules called "pallets".
|
FRAME allows runtime developers to declare domain-specific logic in modules called "pallets".
|
||||||
At the heart of FRAME is a helpful [macro language](https://docs.substrate.io/reference/frame-macros/) that makes it easy to create pallets and flexibly compose them to create blockchains that can address [a variety of needs](https://substrate.io/ecosystem/projects/).
|
At the heart of FRAME is a helpful [macro language](https://docs.substrate.io/reference/frame-macros/) that makes it easy to create pallets and flexibly compose them to create blockchains that can address [a variety of needs](https://substrate.io/ecosystem/projects/).
|
||||||
|
|
||||||
|
@ -130,52 +133,31 @@ Review the [FRAME runtime implementation](./runtime/src/lib.rs) included in this
|
||||||
|
|
||||||
- This file configures several pallets to include in the runtime.
|
- This file configures several pallets to include in the runtime.
|
||||||
Each pallet configuration is defined by a code block that begins with `impl $PALLET_NAME::Config for Runtime`.
|
Each pallet configuration is defined by a code block that begins with `impl $PALLET_NAME::Config for Runtime`.
|
||||||
- The pallets are composed into a single runtime by way of the [`construct_runtime!`](https://crates.parity.io/frame_support/macro.construct_runtime.html) macro, which is part of the core FRAME Support [system](https://docs.substrate.io/reference/frame-pallets/#system-pallets) library.
|
- The pallets are composed into a single runtime by way of the [`construct_runtime!`](https://paritytech.github.io/substrate/master/frame_support/macro.construct_runtime.html) macro, which is part of the [core FRAME pallet library](https://docs.substrate.io/reference/frame-pallets/#system-pallets).
|
||||||
|
|
||||||
### Pallets
|
### Pallets
|
||||||
|
|
||||||
The runtime in this project is constructed using many FRAME pallets that ship with the [core Substrate repository](https://github.com/paritytech/substrate/tree/master/frame) and a template pallet that is [defined in the `pallets`](./pallets/template/src/lib.rs) directory.
|
The runtime in this project is constructed using many FRAME pallets that ship with [the Substrate repository](https://github.com/paritytech/substrate/tree/master/frame) and a template pallet that is [defined in the `pallets`](./pallets/template/src/lib.rs) directory.
|
||||||
|
|
||||||
A FRAME pallet is compromised of a number of blockchain primitives:
|
A FRAME pallet is comprised of a number of blockchain primitives, including:
|
||||||
|
|
||||||
- Storage: FRAME defines a rich set of powerful [storage abstractions](https://docs.substrate.io/build/runtime-storage/) that makes it easy to use Substrate's efficient key-value database to manage the evolving state of a blockchain.
|
- Storage: FRAME defines a rich set of powerful [storage abstractions](https://docs.substrate.io/build/runtime-storage/) that makes it easy to use Substrate's efficient key-value database to manage the evolving state of a blockchain.
|
||||||
- Dispatchables: FRAME pallets define special types of functions that can be invoked (dispatched) from outside of the runtime in order to update its state.
|
- Dispatchables: FRAME pallets define special types of functions that can be invoked (dispatched) from outside of the runtime in order to update its state.
|
||||||
- Events: Substrate uses [events and errors](https://docs.substrate.io/build/events-and-errors/) to notify users of important changes in the runtime.
|
- Events: Substrate uses [events](https://docs.substrate.io/build/events-and-errors/) to notify users of significant state changes.
|
||||||
- Errors: When a dispatchable fails, it returns an error.
|
- Errors: When a dispatchable fails, it returns an error.
|
||||||
- Config: The `Config` configuration interface is used to define the types and parameters upon which a FRAME pallet depends.
|
|
||||||
|
|
||||||
## Alternative Installations
|
Each pallet has its own `Config` trait which serves as a configuration interface to generically define the types and parameters it depends on.
|
||||||
|
|
||||||
|
## Alternatives Installations
|
||||||
|
|
||||||
Instead of installing dependencies and building this source directly, consider the following alternatives.
|
Instead of installing dependencies and building this source directly, consider the following alternatives.
|
||||||
|
|
||||||
### CI
|
|
||||||
|
|
||||||
#### Binary
|
|
||||||
|
|
||||||
Check the [CI release workflow](./.github/workflows/release.yml) to see how the binary is built on CI.
|
|
||||||
You can modify the compilation targets depending on your needs.
|
|
||||||
|
|
||||||
Allow GitHub actions in your forked repository to build the binary for you.
|
|
||||||
|
|
||||||
Push a tag. For example, `v0.1.1`. Based on [Semantic Versioning](https://semver.org/), the supported tag format is `v?MAJOR.MINOR.PATCH(-PRERELEASE)?(+BUILD_METADATA)?` (the leading "v", pre-release version, and build metadata are optional and the optional prefix is also supported).
|
|
||||||
|
|
||||||
After the pipeline is finished, you can download the binary from the releases page.
|
|
||||||
|
|
||||||
#### Container
|
|
||||||
|
|
||||||
Check the [CI release workflow](./.github/workflows/release.yml) to see how the Docker image is built on CI.
|
|
||||||
|
|
||||||
Add your `DOCKERHUB_USERNAME` and `DOCKERHUB_TOKEN` secrets or other organization settings to your forked repository.
|
|
||||||
Change the `DOCKER_REPO` variable in the workflow to `[your DockerHub registry name]/[image name]`.
|
|
||||||
|
|
||||||
Push a tag.
|
|
||||||
|
|
||||||
After the image is built and pushed, you can pull it with `docker pull <DOCKER_REPO>:<tag>`.
|
|
||||||
|
|
||||||
### Nix
|
### Nix
|
||||||
|
|
||||||
Install [nix](https://nixos.org/), and optionally [direnv](https://github.com/direnv/direnv) and [lorri](https://github.com/nix-community/lorri) for a fully plug-and-play experience for setting up the development environment.
|
Install [nix](https://nixos.org/) and
|
||||||
To get all the correct dependencies, activate direnv `direnv allow` and lorri `lorri shell`.
|
[nix-direnv](https://github.com/nix-community/nix-direnv) for a fully plug-and-play
|
||||||
|
experience for setting up the development environment.
|
||||||
|
To get all the correct dependencies, activate direnv `direnv allow`.
|
||||||
|
|
||||||
### Docker
|
### Docker
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1678901627,
|
||||||
|
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1679262748,
|
||||||
|
"narHash": "sha256-DQCrrAFrkxijC6haUzOC5ZoFqpcv/tg2WxnyW3np1Cc=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "60c1d71f2ba4c80178ec84523c2ca0801522e0a6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, flake-utils, ... }: flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs { inherit system; };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
devShells.default = pkgs.mkShell {
|
||||||
|
packages = with pkgs; [
|
||||||
|
rustup
|
||||||
|
clang
|
||||||
|
protobuf
|
||||||
|
];
|
||||||
|
|
||||||
|
LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
|
@ -17,55 +17,55 @@ targets = ["x86_64-unknown-linux-gnu"]
|
||||||
name = "node-template"
|
name = "node-template"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
clap = { version = "4.0.9", features = ["derive"] }
|
clap = { version = "4.2.5", features = ["derive"] }
|
||||||
futures = { version = "0.3.21", features = ["thread-pool"]}
|
futures = { version = "0.3.21", features = ["thread-pool"]}
|
||||||
|
|
||||||
sc-cli = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-cli = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-core = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-core = { version = "21.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sc-executor = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-executor = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sc-service = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-network = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sc-telemetry = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-service = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sc-keystore = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-telemetry = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sc-transaction-pool = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-transaction-pool = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sc-transaction-pool-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-transaction-pool-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sc-consensus-aura = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-offchain = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-consensus-aura = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-statement-store = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-consensus = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-consensus-aura = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sc-consensus = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-consensus-aura = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sc-consensus-grandpa = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-consensus = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-consensus-grandpa = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-consensus-grandpa = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sc-client-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-consensus-grandpa = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-runtime = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-client-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-io = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-runtime = { version = "24.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-timestamp = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-io = { version = "23.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-inherents = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-timestamp = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-keyring = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-inherents = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
frame-system = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-keyring = { version = "24.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
pallet-transaction-payment = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
frame-system = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
|
pallet-transaction-payment = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
|
|
||||||
# These dependencies are used for the node template's RPCs
|
# These dependencies are used for the node template's RPCs
|
||||||
jsonrpsee = { version = "0.16.2", features = ["server"] }
|
jsonrpsee = { version = "0.16.2", features = ["server"] }
|
||||||
sc-rpc = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-api = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-rpc-api = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sc-rpc-api = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-blockchain = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-blockchain = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-block-builder = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-block-builder = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sc-basic-authorship = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sc-basic-authorship = { version = "0.10.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
substrate-frame-rpc-system = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
substrate-frame-rpc-system = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
pallet-transaction-payment-rpc = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
pallet-transaction-payment-rpc = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
|
||||||
|
|
||||||
# These dependencies are used for runtime benchmarking
|
# These dependencies are used for runtime benchmarking
|
||||||
frame-benchmarking = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
frame-benchmarking = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
frame-benchmarking-cli = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
frame-benchmarking-cli = { version = "4.0.0-dev", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
|
|
||||||
# Local Dependencies
|
# Local Dependencies
|
||||||
node-template-runtime = { version = "4.0.0-dev", path = "../runtime" }
|
node-template-runtime = { version = "4.0.0-dev", path = "../runtime" }
|
||||||
|
|
||||||
# CLI-specific dependencies
|
# CLI-specific dependencies
|
||||||
try-runtime-cli = { version = "0.10.0-dev", optional = true, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
try-runtime-cli = { version = "0.10.0-dev", optional = true, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
substrate-build-script-utils = { version = "3.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
substrate-build-script-utils = { version = "3.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = []
|
default = []
|
||||||
|
|
|
@ -82,11 +82,8 @@ impl frame_benchmarking_cli::ExtrinsicBuilder for TransferKeepAliveBuilder {
|
||||||
let extrinsic: OpaqueExtrinsic = create_benchmark_extrinsic(
|
let extrinsic: OpaqueExtrinsic = create_benchmark_extrinsic(
|
||||||
self.client.as_ref(),
|
self.client.as_ref(),
|
||||||
acc,
|
acc,
|
||||||
BalancesCall::transfer_keep_alive {
|
BalancesCall::transfer_keep_alive { dest: self.dest.clone().into(), value: self.value }
|
||||||
dest: self.dest.clone().into(),
|
.into(),
|
||||||
value: self.value.into(),
|
|
||||||
}
|
|
||||||
.into(),
|
|
||||||
nonce,
|
nonce,
|
||||||
)
|
)
|
||||||
.into();
|
.into();
|
||||||
|
@ -143,10 +140,10 @@ pub fn create_benchmark_extrinsic(
|
||||||
let signature = raw_payload.using_encoded(|e| sender.sign(e));
|
let signature = raw_payload.using_encoded(|e| sender.sign(e));
|
||||||
|
|
||||||
runtime::UncheckedExtrinsic::new_signed(
|
runtime::UncheckedExtrinsic::new_signed(
|
||||||
call.clone(),
|
call,
|
||||||
sp_runtime::AccountId32::from(sender.public()).into(),
|
sp_runtime::AccountId32::from(sender.public()).into(),
|
||||||
runtime::Signature::Sr25519(signature.clone()),
|
runtime::Signature::Sr25519(signature),
|
||||||
extra.clone(),
|
extra,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use node_template_runtime::{
|
use node_template_runtime::{
|
||||||
AccountId, AuraConfig, BalancesConfig, GenesisConfig, GrandpaConfig, Signature, SudoConfig,
|
AccountId, AuraConfig, BalancesConfig, GrandpaConfig, RuntimeGenesisConfig, Signature,
|
||||||
SystemConfig, WASM_BINARY,
|
SudoConfig, SystemConfig, WASM_BINARY,
|
||||||
};
|
};
|
||||||
use sc_service::ChainType;
|
use sc_service::ChainType;
|
||||||
use sp_consensus_aura::sr25519::AuthorityId as AuraId;
|
use sp_consensus_aura::sr25519::AuthorityId as AuraId;
|
||||||
|
@ -12,7 +12,7 @@ use sp_runtime::traits::{IdentifyAccount, Verify};
|
||||||
// const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/";
|
// const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/";
|
||||||
|
|
||||||
/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type.
|
/// Specialized `ChainSpec`. This is a specialization of the general Substrate ChainSpec type.
|
||||||
pub type ChainSpec = sc_service::GenericChainSpec<GenesisConfig>;
|
pub type ChainSpec = sc_service::GenericChainSpec<RuntimeGenesisConfig>;
|
||||||
|
|
||||||
/// Generate a crypto pair from seed.
|
/// Generate a crypto pair from seed.
|
||||||
pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {
|
pub fn get_from_seed<TPublic: Public>(seed: &str) -> <TPublic::Pair as Pair>::Public {
|
||||||
|
@ -131,11 +131,12 @@ fn testnet_genesis(
|
||||||
root_key: AccountId,
|
root_key: AccountId,
|
||||||
endowed_accounts: Vec<AccountId>,
|
endowed_accounts: Vec<AccountId>,
|
||||||
_enable_println: bool,
|
_enable_println: bool,
|
||||||
) -> GenesisConfig {
|
) -> RuntimeGenesisConfig {
|
||||||
GenesisConfig {
|
RuntimeGenesisConfig {
|
||||||
system: SystemConfig {
|
system: SystemConfig {
|
||||||
// Add Wasm runtime to storage.
|
// Add Wasm runtime to storage.
|
||||||
code: wasm_binary.to_vec(),
|
code: wasm_binary.to_vec(),
|
||||||
|
..Default::default()
|
||||||
},
|
},
|
||||||
balances: BalancesConfig {
|
balances: BalancesConfig {
|
||||||
// Configure endowed accounts with initial balance of 1 << 60.
|
// Configure endowed accounts with initial balance of 1 << 60.
|
||||||
|
@ -146,6 +147,7 @@ fn testnet_genesis(
|
||||||
},
|
},
|
||||||
grandpa: GrandpaConfig {
|
grandpa: GrandpaConfig {
|
||||||
authorities: initial_authorities.iter().map(|x| (x.1.clone(), 1)).collect(),
|
authorities: initial_authorities.iter().map(|x| (x.1.clone(), 1)).collect(),
|
||||||
|
..Default::default()
|
||||||
},
|
},
|
||||||
sudo: SudoConfig {
|
sudo: SudoConfig {
|
||||||
// Assign network admin rights.
|
// Assign network admin rights.
|
||||||
|
|
|
@ -10,6 +10,7 @@ pub struct Cli {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, clap::Subcommand)]
|
#[derive(Debug, clap::Subcommand)]
|
||||||
|
#[allow(clippy::large_enum_variant)]
|
||||||
pub enum Subcommand {
|
pub enum Subcommand {
|
||||||
/// Key management cli utilities
|
/// Key management cli utilities
|
||||||
#[command(subcommand)]
|
#[command(subcommand)]
|
||||||
|
|
|
@ -6,7 +6,7 @@ use crate::{
|
||||||
};
|
};
|
||||||
use frame_benchmarking_cli::{BenchmarkCmd, ExtrinsicFactory, SUBSTRATE_REFERENCE_HARDWARE};
|
use frame_benchmarking_cli::{BenchmarkCmd, ExtrinsicFactory, SUBSTRATE_REFERENCE_HARDWARE};
|
||||||
use node_template_runtime::{Block, EXISTENTIAL_DEPOSIT};
|
use node_template_runtime::{Block, EXISTENTIAL_DEPOSIT};
|
||||||
use sc_cli::{ChainSpec, RuntimeVersion, SubstrateCli};
|
use sc_cli::SubstrateCli;
|
||||||
use sc_service::PartialComponents;
|
use sc_service::PartialComponents;
|
||||||
use sp_keyring::Sr25519Keyring;
|
use sp_keyring::Sr25519Keyring;
|
||||||
|
|
||||||
|
@ -46,10 +46,6 @@ impl SubstrateCli for Cli {
|
||||||
Box::new(chain_spec::ChainSpec::from_json_file(std::path::PathBuf::from(path))?),
|
Box::new(chain_spec::ChainSpec::from_json_file(std::path::PathBuf::from(path))?),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn native_runtime_version(_: &Box<dyn ChainSpec>) -> &'static RuntimeVersion {
|
|
||||||
&node_template_runtime::VERSION
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse and run command line arguments
|
/// Parse and run command line arguments
|
||||||
|
@ -124,7 +120,7 @@ pub fn run() -> sc_cli::Result<()> {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.run::<Block, service::ExecutorDispatch>(config)
|
cmd.run::<Block, ()>(config)
|
||||||
},
|
},
|
||||||
BenchmarkCmd::Block(cmd) => {
|
BenchmarkCmd::Block(cmd) => {
|
||||||
let PartialComponents { client, .. } = service::new_partial(&config)?;
|
let PartialComponents { client, .. } = service::new_partial(&config)?;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use jsonrpsee::RpcModule;
|
use jsonrpsee::RpcModule;
|
||||||
use node_template_runtime::{opaque::Block, AccountId, Balance, Index};
|
use node_template_runtime::{opaque::Block, AccountId, Balance, Nonce};
|
||||||
use sc_transaction_pool_api::TransactionPool;
|
use sc_transaction_pool_api::TransactionPool;
|
||||||
use sp_api::ProvideRuntimeApi;
|
use sp_api::ProvideRuntimeApi;
|
||||||
use sp_block_builder::BlockBuilder;
|
use sp_block_builder::BlockBuilder;
|
||||||
|
@ -34,7 +34,7 @@ where
|
||||||
C: ProvideRuntimeApi<Block>,
|
C: ProvideRuntimeApi<Block>,
|
||||||
C: HeaderBackend<Block> + HeaderMetadata<Block, Error = BlockChainError> + 'static,
|
C: HeaderBackend<Block> + HeaderMetadata<Block, Error = BlockChainError> + 'static,
|
||||||
C: Send + Sync + 'static,
|
C: Send + Sync + 'static,
|
||||||
C::Api: substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Index>,
|
C::Api: substrate_frame_rpc_system::AccountNonceApi<Block, AccountId, Nonce>,
|
||||||
C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi<Block, Balance>,
|
C::Api: pallet_transaction_payment_rpc::TransactionPaymentRuntimeApi<Block, Balance>,
|
||||||
C::Api: BlockBuilder<Block>,
|
C::Api: BlockBuilder<Block>,
|
||||||
P: TransactionPool + 'static,
|
P: TransactionPool + 'static,
|
||||||
|
@ -45,7 +45,7 @@ where
|
||||||
let mut module = RpcModule::new(());
|
let mut module = RpcModule::new(());
|
||||||
let FullDeps { client, pool, deny_unsafe } = deps;
|
let FullDeps { client, pool, deny_unsafe } = deps;
|
||||||
|
|
||||||
module.merge(System::new(client.clone(), pool.clone(), deny_unsafe).into_rpc())?;
|
module.merge(System::new(client.clone(), pool, deny_unsafe).into_rpc())?;
|
||||||
module.merge(TransactionPayment::new(client).into_rpc())?;
|
module.merge(TransactionPayment::new(client).into_rpc())?;
|
||||||
|
|
||||||
// Extend this RPC with a custom API by using the following syntax.
|
// Extend this RPC with a custom API by using the following syntax.
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
//! Service and ServiceFactory implementation. Specialized wrapper over substrate service.
|
//! Service and ServiceFactory implementation. Specialized wrapper over substrate service.
|
||||||
|
|
||||||
|
use futures::FutureExt;
|
||||||
use node_template_runtime::{self, opaque::Block, RuntimeApi};
|
use node_template_runtime::{self, opaque::Block, RuntimeApi};
|
||||||
use sc_client_api::BlockBackend;
|
use sc_client_api::{Backend, BlockBackend};
|
||||||
use sc_consensus_aura::{ImportQueueParams, SlotProportion, StartAuraParams};
|
use sc_consensus_aura::{ImportQueueParams, SlotProportion, StartAuraParams};
|
||||||
use sc_consensus_grandpa::SharedVoterState;
|
use sc_consensus_grandpa::SharedVoterState;
|
||||||
pub use sc_executor::NativeElseWasmExecutor;
|
pub use sc_executor::NativeElseWasmExecutor;
|
||||||
use sc_service::{error::Error as ServiceError, Configuration, TaskManager, WarpSyncParams};
|
use sc_service::{error::Error as ServiceError, Configuration, TaskManager, WarpSyncParams};
|
||||||
use sc_telemetry::{Telemetry, TelemetryWorker};
|
use sc_telemetry::{Telemetry, TelemetryWorker};
|
||||||
|
use sc_transaction_pool_api::OffchainTransactionPoolFactory;
|
||||||
use sp_consensus_aura::sr25519::AuthorityPair as AuraPair;
|
use sp_consensus_aura::sr25519::AuthorityPair as AuraPair;
|
||||||
use std::{sync::Arc, time::Duration};
|
use std::{sync::Arc, time::Duration};
|
||||||
|
|
||||||
|
@ -35,6 +37,7 @@ pub(crate) type FullClient =
|
||||||
type FullBackend = sc_service::TFullBackend<Block>;
|
type FullBackend = sc_service::TFullBackend<Block>;
|
||||||
type FullSelectChain = sc_consensus::LongestChain<FullBackend, Block>;
|
type FullSelectChain = sc_consensus::LongestChain<FullBackend, Block>;
|
||||||
|
|
||||||
|
#[allow(clippy::type_complexity)]
|
||||||
pub fn new_partial(
|
pub fn new_partial(
|
||||||
config: &Configuration,
|
config: &Configuration,
|
||||||
) -> Result<
|
) -> Result<
|
||||||
|
@ -68,8 +71,7 @@ pub fn new_partial(
|
||||||
})
|
})
|
||||||
.transpose()?;
|
.transpose()?;
|
||||||
|
|
||||||
let executor = sc_service::new_native_or_wasm_executor(&config);
|
let executor = sc_service::new_native_or_wasm_executor(config);
|
||||||
|
|
||||||
let (client, backend, keystore_container, task_manager) =
|
let (client, backend, keystore_container, task_manager) =
|
||||||
sc_service::new_full_parts::<Block, RuntimeApi, _>(
|
sc_service::new_full_parts::<Block, RuntimeApi, _>(
|
||||||
config,
|
config,
|
||||||
|
@ -95,7 +97,7 @@ pub fn new_partial(
|
||||||
|
|
||||||
let (grandpa_block_import, grandpa_link) = sc_consensus_grandpa::block_import(
|
let (grandpa_block_import, grandpa_link) = sc_consensus_grandpa::block_import(
|
||||||
client.clone(),
|
client.clone(),
|
||||||
&(client.clone() as Arc<_>),
|
&client,
|
||||||
select_chain.clone(),
|
select_chain.clone(),
|
||||||
telemetry.as_ref().map(|x| x.handle()),
|
telemetry.as_ref().map(|x| x.handle()),
|
||||||
)?;
|
)?;
|
||||||
|
@ -138,7 +140,7 @@ pub fn new_partial(
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Builds a new service for a full client.
|
/// Builds a new service for a full client.
|
||||||
pub fn new_full(mut config: Configuration) -> Result<TaskManager, ServiceError> {
|
pub fn new_full(config: Configuration) -> Result<TaskManager, ServiceError> {
|
||||||
let sc_service::PartialComponents {
|
let sc_service::PartialComponents {
|
||||||
client,
|
client,
|
||||||
backend,
|
backend,
|
||||||
|
@ -150,15 +152,16 @@ pub fn new_full(mut config: Configuration) -> Result<TaskManager, ServiceError>
|
||||||
other: (block_import, grandpa_link, mut telemetry),
|
other: (block_import, grandpa_link, mut telemetry),
|
||||||
} = new_partial(&config)?;
|
} = new_partial(&config)?;
|
||||||
|
|
||||||
|
let mut net_config = sc_network::config::FullNetworkConfiguration::new(&config.network);
|
||||||
|
|
||||||
let grandpa_protocol_name = sc_consensus_grandpa::protocol_standard_name(
|
let grandpa_protocol_name = sc_consensus_grandpa::protocol_standard_name(
|
||||||
&client.block_hash(0).ok().flatten().expect("Genesis block exists; qed"),
|
&client.block_hash(0).ok().flatten().expect("Genesis block exists; qed"),
|
||||||
&config.chain_spec,
|
&config.chain_spec,
|
||||||
);
|
);
|
||||||
|
net_config.add_notification_protocol(sc_consensus_grandpa::grandpa_peers_set_config(
|
||||||
|
grandpa_protocol_name.clone(),
|
||||||
|
));
|
||||||
|
|
||||||
config
|
|
||||||
.network
|
|
||||||
.extra_sets
|
|
||||||
.push(sc_consensus_grandpa::grandpa_peers_set_config(grandpa_protocol_name.clone()));
|
|
||||||
let warp_sync = Arc::new(sc_consensus_grandpa::warp_proof::NetworkProvider::new(
|
let warp_sync = Arc::new(sc_consensus_grandpa::warp_proof::NetworkProvider::new(
|
||||||
backend.clone(),
|
backend.clone(),
|
||||||
grandpa_link.shared_authority_set().clone(),
|
grandpa_link.shared_authority_set().clone(),
|
||||||
|
@ -168,6 +171,7 @@ pub fn new_full(mut config: Configuration) -> Result<TaskManager, ServiceError>
|
||||||
let (network, system_rpc_tx, tx_handler_controller, network_starter, sync_service) =
|
let (network, system_rpc_tx, tx_handler_controller, network_starter, sync_service) =
|
||||||
sc_service::build_network(sc_service::BuildNetworkParams {
|
sc_service::build_network(sc_service::BuildNetworkParams {
|
||||||
config: &config,
|
config: &config,
|
||||||
|
net_config,
|
||||||
client: client.clone(),
|
client: client.clone(),
|
||||||
transaction_pool: transaction_pool.clone(),
|
transaction_pool: transaction_pool.clone(),
|
||||||
spawn_handle: task_manager.spawn_handle(),
|
spawn_handle: task_manager.spawn_handle(),
|
||||||
|
@ -177,11 +181,23 @@ pub fn new_full(mut config: Configuration) -> Result<TaskManager, ServiceError>
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
if config.offchain_worker.enabled {
|
if config.offchain_worker.enabled {
|
||||||
sc_service::build_offchain_workers(
|
task_manager.spawn_handle().spawn(
|
||||||
&config,
|
"offchain-workers-runner",
|
||||||
task_manager.spawn_handle(),
|
"offchain-worker",
|
||||||
client.clone(),
|
sc_offchain::OffchainWorkers::new(sc_offchain::OffchainWorkerOptions {
|
||||||
network.clone(),
|
runtime_api_provider: client.clone(),
|
||||||
|
is_validator: config.role.is_authority(),
|
||||||
|
keystore: Some(keystore_container.keystore()),
|
||||||
|
offchain_db: backend.offchain_storage(),
|
||||||
|
transaction_pool: Some(OffchainTransactionPoolFactory::new(
|
||||||
|
transaction_pool.clone(),
|
||||||
|
)),
|
||||||
|
network_provider: network.clone(),
|
||||||
|
enable_http_requests: true,
|
||||||
|
custom_extensions: |_| vec![],
|
||||||
|
})
|
||||||
|
.run(client.clone(), task_manager.spawn_handle())
|
||||||
|
.boxed(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -222,7 +238,7 @@ pub fn new_full(mut config: Configuration) -> Result<TaskManager, ServiceError>
|
||||||
let proposer_factory = sc_basic_authorship::ProposerFactory::new(
|
let proposer_factory = sc_basic_authorship::ProposerFactory::new(
|
||||||
task_manager.spawn_handle(),
|
task_manager.spawn_handle(),
|
||||||
client.clone(),
|
client.clone(),
|
||||||
transaction_pool,
|
transaction_pool.clone(),
|
||||||
prometheus_registry.as_ref(),
|
prometheus_registry.as_ref(),
|
||||||
telemetry.as_ref().map(|x| x.handle()),
|
telemetry.as_ref().map(|x| x.handle()),
|
||||||
);
|
);
|
||||||
|
@ -298,6 +314,7 @@ pub fn new_full(mut config: Configuration) -> Result<TaskManager, ServiceError>
|
||||||
prometheus_registry,
|
prometheus_registry,
|
||||||
shared_voter_state: SharedVoterState::empty(),
|
shared_voter_state: SharedVoterState::empty(),
|
||||||
telemetry: telemetry.as_ref().map(|x| x.handle()),
|
telemetry: telemetry.as_ref().map(|x| x.handle()),
|
||||||
|
offchain_tx_pool_factory: OffchainTransactionPoolFactory::new(transaction_pool),
|
||||||
};
|
};
|
||||||
|
|
||||||
// the GRANDPA voter task is considered infallible, i.e.
|
// the GRANDPA voter task is considered infallible, i.e.
|
||||||
|
|
|
@ -13,18 +13,18 @@ repository = "https://github.com/substrate-developer-hub/substrate-node-template
|
||||||
targets = ["x86_64-unknown-linux-gnu"]
|
targets = ["x86_64-unknown-linux-gnu"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
codec = { package = "parity-scale-codec", version = "3.2.2", default-features = false, features = [
|
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = [
|
||||||
"derive",
|
"derive",
|
||||||
] }
|
] }
|
||||||
scale-info = { version = "2.5.0", default-features = false, features = ["derive"] }
|
scale-info = { version = "2.5.0", default-features = false, features = ["derive"] }
|
||||||
frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
frame-benchmarking = { version = "4.0.0-dev", default-features = false, optional = true, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
frame-support = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
frame-support = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
frame-system = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
frame-system = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
sp-core = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-core = { version = "21.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-io = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-io = { version = "23.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-runtime = { version = "7.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-runtime = { version = "24.0.0", git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["std"]
|
default = ["std"]
|
||||||
|
|
|
@ -2,19 +2,15 @@ use crate as pallet_template;
|
||||||
use frame_support::traits::{ConstU16, ConstU64};
|
use frame_support::traits::{ConstU16, ConstU64};
|
||||||
use sp_core::H256;
|
use sp_core::H256;
|
||||||
use sp_runtime::{
|
use sp_runtime::{
|
||||||
testing::Header,
|
|
||||||
traits::{BlakeTwo256, IdentityLookup},
|
traits::{BlakeTwo256, IdentityLookup},
|
||||||
|
BuildStorage,
|
||||||
};
|
};
|
||||||
|
|
||||||
type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
|
|
||||||
type Block = frame_system::mocking::MockBlock<Test>;
|
type Block = frame_system::mocking::MockBlock<Test>;
|
||||||
|
|
||||||
// Configure a mock runtime to test the pallet.
|
// Configure a mock runtime to test the pallet.
|
||||||
frame_support::construct_runtime!(
|
frame_support::construct_runtime!(
|
||||||
pub enum Test where
|
pub enum Test
|
||||||
Block = Block,
|
|
||||||
NodeBlock = Block,
|
|
||||||
UncheckedExtrinsic = UncheckedExtrinsic,
|
|
||||||
{
|
{
|
||||||
System: frame_system,
|
System: frame_system,
|
||||||
TemplateModule: pallet_template,
|
TemplateModule: pallet_template,
|
||||||
|
@ -28,13 +24,12 @@ impl frame_system::Config for Test {
|
||||||
type DbWeight = ();
|
type DbWeight = ();
|
||||||
type RuntimeOrigin = RuntimeOrigin;
|
type RuntimeOrigin = RuntimeOrigin;
|
||||||
type RuntimeCall = RuntimeCall;
|
type RuntimeCall = RuntimeCall;
|
||||||
type Index = u64;
|
type Nonce = u64;
|
||||||
type BlockNumber = u64;
|
|
||||||
type Hash = H256;
|
type Hash = H256;
|
||||||
type Hashing = BlakeTwo256;
|
type Hashing = BlakeTwo256;
|
||||||
type AccountId = u64;
|
type AccountId = u64;
|
||||||
type Lookup = IdentityLookup<Self::AccountId>;
|
type Lookup = IdentityLookup<Self::AccountId>;
|
||||||
type Header = Header;
|
type Block = Block;
|
||||||
type RuntimeEvent = RuntimeEvent;
|
type RuntimeEvent = RuntimeEvent;
|
||||||
type BlockHashCount = ConstU64<250>;
|
type BlockHashCount = ConstU64<250>;
|
||||||
type Version = ();
|
type Version = ();
|
||||||
|
@ -55,5 +50,5 @@ impl pallet_template::Config for Test {
|
||||||
|
|
||||||
// Build genesis storage according to the mock runtime.
|
// Build genesis storage according to the mock runtime.
|
||||||
pub fn new_test_ext() -> sp_io::TestExternalities {
|
pub fn new_test_ext() -> sp_io::TestExternalities {
|
||||||
frame_system::GenesisConfig::default().build_storage::<Test>().unwrap().into()
|
frame_system::GenesisConfig::<Test>::default().build_storage().unwrap().into()
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
// *
|
// *
|
||||||
// --steps=50
|
// --steps=50
|
||||||
// --repeat=20
|
// --repeat=20
|
||||||
// --execution=wasm
|
|
||||||
// --wasm-execution=compiled
|
// --wasm-execution=compiled
|
||||||
// --output
|
// --output
|
||||||
// pallets/template/src/weights.rs
|
// pallets/template/src/weights.rs
|
||||||
|
|
|
@ -13,45 +13,45 @@ repository = "https://github.com/substrate-developer-hub/substrate-node-template
|
||||||
targets = ["x86_64-unknown-linux-gnu"]
|
targets = ["x86_64-unknown-linux-gnu"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
codec = { package = "parity-scale-codec", version = "3.2.2", default-features = false, features = ["derive"] }
|
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] }
|
||||||
scale-info = { version = "2.5.0", default-features = false, features = ["derive"] }
|
scale-info = { version = "2.5.0", default-features = false, features = ["derive"] }
|
||||||
|
|
||||||
pallet-aura = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
pallet-aura = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
pallet-balances = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
pallet-balances = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
frame-support = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
frame-support = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
pallet-grandpa = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
pallet-grandpa = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
pallet-sudo = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
pallet-sudo = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
frame-system = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
frame-system = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
frame-try-runtime = { version = "0.10.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", optional = true , branch = "polkadot-v0.9.42" }
|
frame-try-runtime = { version = "0.10.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", optional = true , branch = "polkadot-v1.0.0" }
|
||||||
pallet-timestamp = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
pallet-timestamp = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
pallet-transaction-payment = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
pallet-transaction-payment = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
frame-executive = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
frame-executive = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-block-builder = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-block-builder = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-consensus-aura = { version = "0.10.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-consensus-aura = { version = "0.10.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-consensus-grandpa = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-consensus-grandpa = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-core = { version = "7.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-core = { version = "21.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-inherents = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-inherents = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-offchain = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-offchain = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-runtime = { version = "7.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-runtime = { version = "24.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-session = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-session = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-std = { version = "5.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-std = { version = "8.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-transaction-pool = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-transaction-pool = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
sp-version = { version = "5.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
sp-version = { version = "22.0.0", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
|
|
||||||
# Used for the node template's RPCs
|
# Used for the node template's RPCs
|
||||||
frame-system-rpc-runtime-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
frame-system-rpc-runtime-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
pallet-transaction-payment-rpc-runtime-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v0.9.42" }
|
pallet-transaction-payment-rpc-runtime-api = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", branch = "polkadot-v1.0.0" }
|
||||||
|
|
||||||
# Used for runtime benchmarking
|
# Used for runtime benchmarking
|
||||||
frame-benchmarking = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", optional = true , branch = "polkadot-v0.9.42" }
|
frame-benchmarking = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", optional = true , branch = "polkadot-v1.0.0" }
|
||||||
frame-system-benchmarking = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", optional = true , branch = "polkadot-v0.9.42" }
|
frame-system-benchmarking = { version = "4.0.0-dev", default-features = false, git = "https://github.com/paritytech/substrate.git", optional = true , branch = "polkadot-v1.0.0" }
|
||||||
|
|
||||||
# Local Dependencies
|
# Local Dependencies
|
||||||
pallet-template = { version = "4.0.0-dev", default-features = false, path = "../pallets/template" }
|
pallet-template = { version = "4.0.0-dev", default-features = false, path = "../pallets/template" }
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
substrate-wasm-builder = { version = "5.0.0-dev", git = "https://github.com/paritytech/substrate.git", optional = true , branch = "polkadot-v0.9.42" }
|
substrate-wasm-builder = { version = "5.0.0-dev", git = "https://github.com/paritytech/substrate.git", optional = true , branch = "polkadot-v1.0.0" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["std"]
|
default = ["std"]
|
||||||
|
@ -95,6 +95,7 @@ runtime-benchmarks = [
|
||||||
"frame-system/runtime-benchmarks",
|
"frame-system/runtime-benchmarks",
|
||||||
"pallet-balances/runtime-benchmarks",
|
"pallet-balances/runtime-benchmarks",
|
||||||
"pallet-grandpa/runtime-benchmarks",
|
"pallet-grandpa/runtime-benchmarks",
|
||||||
|
"pallet-sudo/runtime-benchmarks",
|
||||||
"pallet-template/runtime-benchmarks",
|
"pallet-template/runtime-benchmarks",
|
||||||
"pallet-timestamp/runtime-benchmarks",
|
"pallet-timestamp/runtime-benchmarks",
|
||||||
"sp-runtime/runtime-benchmarks",
|
"sp-runtime/runtime-benchmarks",
|
||||||
|
|
|
@ -27,7 +27,8 @@ use sp_version::RuntimeVersion;
|
||||||
pub use frame_support::{
|
pub use frame_support::{
|
||||||
construct_runtime, parameter_types,
|
construct_runtime, parameter_types,
|
||||||
traits::{
|
traits::{
|
||||||
ConstU128, ConstU32, ConstU64, ConstU8, KeyOwnerProofSystem, Randomness, StorageInfo,
|
ConstBool, ConstU128, ConstU32, ConstU64, ConstU8, KeyOwnerProofSystem, Randomness,
|
||||||
|
StorageInfo,
|
||||||
},
|
},
|
||||||
weights::{
|
weights::{
|
||||||
constants::{
|
constants::{
|
||||||
|
@ -62,7 +63,7 @@ pub type AccountId = <<Signature as Verify>::Signer as IdentifyAccount>::Account
|
||||||
pub type Balance = u128;
|
pub type Balance = u128;
|
||||||
|
|
||||||
/// Index of a transaction in the chain.
|
/// Index of a transaction in the chain.
|
||||||
pub type Index = u32;
|
pub type Nonce = u32;
|
||||||
|
|
||||||
/// A hash of some data used by the chain.
|
/// A hash of some data used by the chain.
|
||||||
pub type Hash = sp_core::H256;
|
pub type Hash = sp_core::H256;
|
||||||
|
@ -154,6 +155,8 @@ parameter_types! {
|
||||||
impl frame_system::Config for Runtime {
|
impl frame_system::Config for Runtime {
|
||||||
/// The basic call filter to use in dispatchable.
|
/// The basic call filter to use in dispatchable.
|
||||||
type BaseCallFilter = frame_support::traits::Everything;
|
type BaseCallFilter = frame_support::traits::Everything;
|
||||||
|
/// The block type for the runtime.
|
||||||
|
type Block = Block;
|
||||||
/// Block & extrinsics weights: base values and limits.
|
/// Block & extrinsics weights: base values and limits.
|
||||||
type BlockWeights = BlockWeights;
|
type BlockWeights = BlockWeights;
|
||||||
/// The maximum length of a block (in bytes).
|
/// The maximum length of a block (in bytes).
|
||||||
|
@ -164,16 +167,12 @@ impl frame_system::Config for Runtime {
|
||||||
type RuntimeCall = RuntimeCall;
|
type RuntimeCall = RuntimeCall;
|
||||||
/// The lookup mechanism to get account ID from whatever is passed in dispatchers.
|
/// The lookup mechanism to get account ID from whatever is passed in dispatchers.
|
||||||
type Lookup = AccountIdLookup<AccountId, ()>;
|
type Lookup = AccountIdLookup<AccountId, ()>;
|
||||||
/// The index type for storing how many extrinsics an account has signed.
|
/// The type for storing how many extrinsics an account has signed.
|
||||||
type Index = Index;
|
type Nonce = Nonce;
|
||||||
/// The index type for blocks.
|
|
||||||
type BlockNumber = BlockNumber;
|
|
||||||
/// The type for hashing blocks and tries.
|
/// The type for hashing blocks and tries.
|
||||||
type Hash = Hash;
|
type Hash = Hash;
|
||||||
/// The hashing algorithm used.
|
/// The hashing algorithm used.
|
||||||
type Hashing = BlakeTwo256;
|
type Hashing = BlakeTwo256;
|
||||||
/// The header type.
|
|
||||||
type Header = generic::Header<BlockNumber, BlakeTwo256>;
|
|
||||||
/// The ubiquitous event type.
|
/// The ubiquitous event type.
|
||||||
type RuntimeEvent = RuntimeEvent;
|
type RuntimeEvent = RuntimeEvent;
|
||||||
/// The ubiquitous origin type.
|
/// The ubiquitous origin type.
|
||||||
|
@ -207,6 +206,7 @@ impl pallet_aura::Config for Runtime {
|
||||||
type AuthorityId = AuraId;
|
type AuthorityId = AuraId;
|
||||||
type DisabledValidators = ();
|
type DisabledValidators = ();
|
||||||
type MaxAuthorities = ConstU32<32>;
|
type MaxAuthorities = ConstU32<32>;
|
||||||
|
type AllowMultipleBlocksPerSlot = ConstBool<false>;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl pallet_grandpa::Config for Runtime {
|
impl pallet_grandpa::Config for Runtime {
|
||||||
|
@ -245,7 +245,7 @@ impl pallet_balances::Config for Runtime {
|
||||||
type WeightInfo = pallet_balances::weights::SubstrateWeight<Runtime>;
|
type WeightInfo = pallet_balances::weights::SubstrateWeight<Runtime>;
|
||||||
type FreezeIdentifier = ();
|
type FreezeIdentifier = ();
|
||||||
type MaxFreezes = ();
|
type MaxFreezes = ();
|
||||||
type HoldIdentifier = ();
|
type RuntimeHoldReason = ();
|
||||||
type MaxHolds = ();
|
type MaxHolds = ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -265,6 +265,7 @@ impl pallet_transaction_payment::Config for Runtime {
|
||||||
impl pallet_sudo::Config for Runtime {
|
impl pallet_sudo::Config for Runtime {
|
||||||
type RuntimeEvent = RuntimeEvent;
|
type RuntimeEvent = RuntimeEvent;
|
||||||
type RuntimeCall = RuntimeCall;
|
type RuntimeCall = RuntimeCall;
|
||||||
|
type WeightInfo = pallet_sudo::weights::SubstrateWeight<Runtime>;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Configure the pallet-template in pallets/template.
|
/// Configure the pallet-template in pallets/template.
|
||||||
|
@ -275,12 +276,7 @@ impl pallet_template::Config for Runtime {
|
||||||
|
|
||||||
// Create the runtime by composing the FRAME pallets that were previously configured.
|
// Create the runtime by composing the FRAME pallets that were previously configured.
|
||||||
construct_runtime!(
|
construct_runtime!(
|
||||||
pub struct Runtime
|
pub struct Runtime {
|
||||||
where
|
|
||||||
Block = Block,
|
|
||||||
NodeBlock = opaque::Block,
|
|
||||||
UncheckedExtrinsic = UncheckedExtrinsic,
|
|
||||||
{
|
|
||||||
System: frame_system,
|
System: frame_system,
|
||||||
Timestamp: pallet_timestamp,
|
Timestamp: pallet_timestamp,
|
||||||
Aura: pallet_aura,
|
Aura: pallet_aura,
|
||||||
|
@ -336,6 +332,7 @@ mod benches {
|
||||||
[frame_system, SystemBench::<Runtime>]
|
[frame_system, SystemBench::<Runtime>]
|
||||||
[pallet_balances, Balances]
|
[pallet_balances, Balances]
|
||||||
[pallet_timestamp, Timestamp]
|
[pallet_timestamp, Timestamp]
|
||||||
|
[pallet_sudo, Sudo]
|
||||||
[pallet_template, TemplateModule]
|
[pallet_template, TemplateModule]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -458,8 +455,8 @@ impl_runtime_apis! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Index> for Runtime {
|
impl frame_system_rpc_runtime_api::AccountNonceApi<Block, AccountId, Nonce> for Runtime {
|
||||||
fn account_nonce(account: AccountId) -> Index {
|
fn account_nonce(account: AccountId) -> Nonce {
|
||||||
System::account_nonce(account)
|
System::account_nonce(account)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -571,40 +568,3 @@ impl_runtime_apis! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
use frame_support::traits::WhitelistedStorageKeys;
|
|
||||||
use sp_core::hexdisplay::HexDisplay;
|
|
||||||
use std::collections::HashSet;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn check_whitelist() {
|
|
||||||
let whitelist: HashSet<String> = AllPalletsWithSystem::whitelisted_storage_keys()
|
|
||||||
.iter()
|
|
||||||
.map(|e| HexDisplay::from(&e.key).to_string())
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
// Block Number
|
|
||||||
assert!(
|
|
||||||
whitelist.contains("26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac")
|
|
||||||
);
|
|
||||||
// Total Issuance
|
|
||||||
assert!(
|
|
||||||
whitelist.contains("c2261276cc9d1f8598ea4b6a74b15c2f57c875e4cff74148e4628f264b974c80")
|
|
||||||
);
|
|
||||||
// Execution Phase
|
|
||||||
assert!(
|
|
||||||
whitelist.contains("26aa394eea5630e07c48ae0c9558cef7ff553b5a9862a516939d82b3d3d8661a")
|
|
||||||
);
|
|
||||||
// Event Count
|
|
||||||
assert!(
|
|
||||||
whitelist.contains("26aa394eea5630e07c48ae0c9558cef70a98fdbe9ce6c55837576c60c7af3850")
|
|
||||||
);
|
|
||||||
// System Events
|
|
||||||
assert!(
|
|
||||||
whitelist.contains("26aa394eea5630e07c48ae0c9558cef780d41e5e16056765bc8461851072c9d7")
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
[toolchain]
|
||||||
|
channel = "nightly"
|
||||||
|
components = [
|
||||||
|
"cargo",
|
||||||
|
"clippy",
|
||||||
|
"rust-analyzer",
|
||||||
|
"rust-src",
|
||||||
|
"rust-std",
|
||||||
|
"rustc-dev",
|
||||||
|
"rustc",
|
||||||
|
"rustfmt",
|
||||||
|
]
|
||||||
|
targets = [ "wasm32-unknown-unknown" ]
|
||||||
|
profile = "minimal"
|
Loading…
Reference in New Issue