diff --git a/bin/node-template/README.md b/bin/node-template/README.md
index 5623fedb5342bef16f03285b33ce9fc1daf184cd..8c8b82a14bb86975bda14410d6313500b0388cbe 100644
--- a/bin/node-template/README.md
+++ b/bin/node-template/README.md
@@ -55,7 +55,7 @@ RUST_LOG=debug RUST_BACKTRACE=1 ./target/release/node-template -lruntime=debug -
### Multi-Node Local Testnet
To see the multi-node consensus algorithm in action, run a local testnet with two validator nodes,
-Alice and Bob, that have been [configured](/bin/node-template/node/src/chain_spec.rs) as the initial
+Alice and Bob, that have been [configured](./node/src/chain_spec.rs) as the initial
authorities of the `local` testnet chain and endowed with testnet units.
Note: this will require two terminal sessions (one for each node).
@@ -157,7 +157,7 @@ Review the [FRAME runtime implementation](./runtime/src/lib.rs) included in this
the following:
- 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::Trait for Runtime`.
+ 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
@@ -181,8 +181,8 @@ A FRAME pallet is compromised of a number of blockchain primitives:
- Events: Substrate uses [events](https://substrate.dev/docs/en/knowledgebase/runtime/events) to
notify users of important changes in the runtime.
- Errors: When a dispatchable fails, it returns an error.
-- Trait: The `Trait` configuration interface is used to define the types and parameters upon which
- a FRAME pallet depends.
+- Config: The `Config` configuration interface is used to define the types and parameters upon
+ which a FRAME pallet depends.
## Generate a Custom Node Template
diff --git a/bin/node-template/node/Cargo.toml b/bin/node-template/node/Cargo.toml
index d8cc9478bbda8e07459b06433095de1b0550cccb..38cdaa1eea48c7b7ef257474ef5d73842e20ac84 100644
--- a/bin/node-template/node/Cargo.toml
+++ b/bin/node-template/node/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "node-template"
-version = "2.0.0-rc6"
+version = "2.0.0"
authors = ["Anonymous"]
description = "A new FRAME-based Substrate node, ready for hacking."
edition = "2018"
@@ -18,34 +18,45 @@ name = "node-template"
[dependencies]
structopt = "0.3.8"
-sc-cli = { version = "0.8.0-rc6", path = "../../../client/cli", features = ["wasmtime"] }
-sp-core = { version = "2.0.0-rc6", path = "../../../primitives/core" }
-sc-executor = { version = "0.8.0-rc6", path = "../../../client/executor", features = ["wasmtime"] }
-sc-service = { version = "0.8.0-rc6", path = "../../../client/service", features = ["wasmtime"] }
-sp-inherents = { version = "2.0.0-rc6", path = "../../../primitives/inherents" }
-sc-transaction-pool = { version = "2.0.0-rc6", path = "../../../client/transaction-pool" }
-sp-transaction-pool = { version = "2.0.0-rc6", path = "../../../primitives/transaction-pool" }
-sc-consensus-aura = { version = "0.8.0-rc6", path = "../../../client/consensus/aura" }
-sp-consensus-aura = { version = "0.8.0-rc6", path = "../../../primitives/consensus/aura" }
-sp-consensus = { version = "0.8.0-rc6", path = "../../../primitives/consensus/common" }
-sc-consensus = { version = "0.8.0-rc6", path = "../../../client/consensus/common" }
-sc-finality-grandpa = { version = "0.8.0-rc6", path = "../../../client/finality-grandpa" }
-sp-finality-grandpa = { version = "2.0.0-rc6", path = "../../../primitives/finality-grandpa" }
-sc-client-api = { version = "2.0.0-rc6", path = "../../../client/api" }
-sp-runtime = { version = "2.0.0-rc6", path = "../../../primitives/runtime" }
+sc-cli = { version = "0.8.0", path = "../../../client/cli", features = ["wasmtime"] }
+sp-core = { version = "2.0.0", path = "../../../primitives/core" }
+sc-executor = { version = "0.8.0", path = "../../../client/executor", features = ["wasmtime"] }
+sc-service = { version = "0.8.0", path = "../../../client/service", features = ["wasmtime"] }
+sc-keystore = { version = "2.0.0", path = "../../../client/keystore" }
+sp-inherents = { version = "2.0.0", path = "../../../primitives/inherents" }
+sc-transaction-pool = { version = "2.0.0", path = "../../../client/transaction-pool" }
+sp-transaction-pool = { version = "2.0.0", path = "../../../primitives/transaction-pool" }
+sc-consensus-aura = { version = "0.8.0", path = "../../../client/consensus/aura" }
+sp-consensus-aura = { version = "0.8.0", path = "../../../primitives/consensus/aura" }
+sp-consensus = { version = "0.8.0", path = "../../../primitives/consensus/common" }
+sc-consensus = { version = "0.8.0", path = "../../../client/consensus/common" }
+sc-finality-grandpa = { version = "0.8.0", path = "../../../client/finality-grandpa" }
+sp-finality-grandpa = { version = "2.0.0", path = "../../../primitives/finality-grandpa" }
+sc-client-api = { version = "2.0.0", path = "../../../client/api" }
+sp-runtime = { version = "2.0.0", path = "../../../primitives/runtime" }
# These dependencies are used for the node template's RPCs
-jsonrpc-core = "14.0.3"
-sc-rpc = { version = "2.0.0-rc6", path = "../../../client/rpc" }
-sp-api = { version = "2.0.0-rc6", path = "../../../primitives/api" }
-sc-rpc-api = { version = "0.8.0-rc6", path = "../../../client/rpc-api" }
-sp-blockchain = { version = "2.0.0-rc6", path = "../../../primitives/blockchain" }
-sp-block-builder = { version = "2.0.0-rc6", path = "../../../primitives/block-builder" }
-sc-basic-authorship = { version = "0.8.0-rc6", path = "../../../client/basic-authorship" }
-substrate-frame-rpc-system = { version = "2.0.0-rc6", path = "../../../utils/frame/rpc/system" }
-pallet-transaction-payment-rpc = { version = "2.0.0-rc6", path = "../../../frame/transaction-payment/rpc/" }
-
-node-template-runtime = { version = "2.0.0-rc6", path = "../runtime" }
+jsonrpc-core = "15.1.0"
+sc-rpc = { version = "2.0.0", path = "../../../client/rpc" }
+sp-api = { version = "2.0.0", path = "../../../primitives/api" }
+sc-rpc-api = { version = "0.8.0", path = "../../../client/rpc-api" }
+sp-blockchain = { version = "2.0.0", path = "../../../primitives/blockchain" }
+sp-block-builder = { version = "2.0.0", path = "../../../primitives/block-builder" }
+sc-basic-authorship = { version = "0.8.0", path = "../../../client/basic-authorship" }
+substrate-frame-rpc-system = { version = "2.0.0", path = "../../../utils/frame/rpc/system" }
+pallet-transaction-payment-rpc = { version = "2.0.0", path = "../../../frame/transaction-payment/rpc/" }
+
+# These dependencies are used for runtime benchmarking
+frame-benchmarking = { version = "2.0.0", path = "../../../frame/benchmarking" }
+frame-benchmarking-cli = { version = "2.0.0", path = "../../../utils/frame/benchmarking-cli" }
+
+node-template-runtime = { version = "2.0.0", path = "../runtime" }
[build-dependencies]
-substrate-build-script-utils = { version = "2.0.0-rc6", path = "../../../utils/build-script-utils" }
+substrate-build-script-utils = { version = "2.0.0", path = "../../../utils/build-script-utils" }
+
+[features]
+default = []
+runtime-benchmarks = [
+ "node-template-runtime/runtime-benchmarks",
+]
diff --git a/bin/node-template/node/src/chain_spec.rs b/bin/node-template/node/src/chain_spec.rs
index 41f582fb64a46cf598c0f424b23793b95f0291db..c5451e81f20c10b064df046010f7989036002925 100644
--- a/bin/node-template/node/src/chain_spec.rs
+++ b/bin/node-template/node/src/chain_spec.rs
@@ -39,7 +39,7 @@ pub fn authority_keys_from_seed(s: &str) -> (AuraId, GrandpaId) {
}
pub fn development_config() -> Result ,
/// The SelectChain Strategy
pub select_chain: SC,
+ /// A copy of the chain spec.
+ pub chain_spec: Box