* Node template love Better description in node/Cargo.toml Example dispatchables should have non-zero weights Changes to README to bring in line with current DevHub Node Template * Update README.md cleaned up, reworked text, ready for round 2 * Add DbWeight * Update README.md * Consistent Playground buttons * "setup" -> "set up" Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * Import `Get` trait to fix build Co-authored-by: Addie Wagenknecht <addie@nortd.com> Co-authored-by: Ricardo Rius <ricardo@parity.io> Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
4.1 KiB
Substrate Node Template
A new FRAME-based Substrate node, ready for hacking 🚀
Local Development
Follow these steps to prepare a local Substrate development environment 🛠️
Simple Setup
Install all the required dependencies with a single command (be patient, this can take up to 30 minutes).
curl https://getsubstrate.io -sSf | bash -s -- --fast
Manual Setup
Find manual setup instructions at the Substrate Developer Hub.
Build
Once the development environment is set up, build the node template. This command will build the Wasm and native code:
cargo build --release
Playground 
The Substrate Playground is an online development environment that supplies a pre-configured container with pre-compiled build artifacts 🤸
Run
Single Node Development Chain
Purge any existing dev chain state:
./target/release/node-template purge-chain --dev
Start a dev chain:
./target/release/node-template --dev
Or, start a dev chain with detailed logging:
RUST_LOG=debug RUST_BACKTRACE=1 ./target/release/node-template -lruntime=debug --dev
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 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).
Start Alice's node first. The command below uses the default TCP port (30333) and specifies
/tmp/alice as the chain database location. Alice's node ID will be
12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp (legacy representation:
QmRpheLN4JWdAnY7HGJfWFNbfkQCb6tFf4vvA6hgjMZKrR); this is determined by the node-key.
cargo run -- \
--base-path /tmp/alice \
--chain=local \
--alice \
--node-key 0000000000000000000000000000000000000000000000000000000000000001 \
--telemetry-url 'ws://telemetry.polkadot.io:1024 0' \
--validator
In another terminal, use the following command to start Bob's node on a different TCP port (30334)
and with a chain database location of /tmp/bob. The --bootnodes option will connect his node to
Alice's on TCP port 30333:
cargo run -- \
--base-path /tmp/bob \
--bootnodes /ip4/127.0.0.1/tcp/30333/p2p/12D3KooWEyoppNCUx8Yx66oV9fJnriXwCcXwDDUA2kj6vnc6iDEp \
--chain=local \
--bob \
--port 30334 \
--ws-port 9945 \
--telemetry-url 'ws://telemetry.polkadot.io:1024 0' \
--validator
Execute cargo run -- --help to learn more about the template node's CLI options.
Generate a Custom Node Template
Generate a Substrate node template based on a particular commit by running the following commands:
# Clone from the main Substrate repo
git clone https://github.com/paritytech/substrate.git
cd substrate
# Switch to the branch or commit to base the template on
git checkout <branch/tag/sha1>
# Run the helper script to generate a node template. This script compiles Substrate, so it will take
# a while to complete. It expects a single parameter: the location for the script's output expressed
# as a relative path.
.maintain/node-template-release.sh ../node-template.tar.gz
Custom node templates are not supported. Please use a recently tagged version of the Substrate Developer Node Template in order to receive support.