diff --git a/templates/minimal/README.md b/templates/minimal/README.md index 583ba6242040..f00bfd4d4877 100644 --- a/templates/minimal/README.md +++ b/templates/minimal/README.md @@ -11,12 +11,13 @@ -๐Ÿค This template is a minimal (in terms of complexity and the number of components) template for building a blockchain node. +* ๐Ÿค This template is a minimal (in terms of complexity and the number of components) +template for building a blockchain node. -๐Ÿ”ง Its runtime is configured of a single custom pallet as a starting point, and a handful of ready-made pallets +* ๐Ÿ”ง Its runtime is configured of a single custom pallet as a starting point, and a handful of ready-made pallets such as a [Balances pallet](https://paritytech.github.io/polkadot-sdk/master/pallet_balances/index.html). -๐Ÿ‘ค The template has no consensus configured - it is best for experimenting with a single node network. +* ๐Ÿ‘ค The template has no consensus configured - it is best for experimenting with a single node network. ## Template Structure @@ -28,12 +29,12 @@ A Polkadot SDK based project such as this one consists of: ## Getting Started -๐Ÿฆ€ The template is using the Rust language. +* ๐Ÿฆ€ The template is using the Rust language. -๐Ÿ‘‰ Check the +* ๐Ÿ‘‰ Check the [Rust installation instructions](https://www.rust-lang.org/tools/install) for your system. -๐Ÿ› ๏ธ Depending on your operating system and Rust version, there might be additional +* ๐Ÿ› ๏ธ Depending on your operating system and Rust version, there might be additional packages required to compile this template - please take note of the Rust compiler output. ### Build @@ -69,32 +70,32 @@ Development chains: ### Connect with the Polkadot-JS Apps Front-End -๐ŸŒ You can interact with your local node using the +* ๐ŸŒ You can interact with your local node using the hosted version of the [Polkadot/Substrate Portal](https://polkadot.js.org/apps/#/explorer?rpc=ws://localhost:9944). -๐Ÿช A hosted version is also +* ๐Ÿช A hosted version is also available on [IPFS](https://dotapps.io/). -๐Ÿง‘โ€๐Ÿ”ง You can also find the source code and instructions for hosting your own instance in the +* ๐Ÿง‘โ€๐Ÿ”ง You can also find the source code and instructions for hosting your own instance in the [`polkadot-js/apps`](https://github.com/polkadot-js/apps) repository. ## Contributing -๐Ÿ”„ This template is automatically updated after releases in the main [Polkadot SDK monorepo](https://github.com/paritytech/polkadot-sdk). +* ๐Ÿ”„ This template is automatically updated after releases in the main [Polkadot SDK monorepo](https://github.com/paritytech/polkadot-sdk). -โžก๏ธ Any pull requests should be directed to this [source](https://github.com/paritytech/polkadot-sdk/tree/master/templates/minimal). +* โžก๏ธ Any pull requests should be directed to this [source](https://github.com/paritytech/polkadot-sdk/tree/master/templates/minimal). -๐Ÿ˜‡ Please refer to the monorepo's +* ๐Ÿ˜‡ Please refer to the monorepo's [contribution guidelines](https://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/CONTRIBUTING.md) and [Code of Conduct](https://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/CODE_OF_CONDUCT.md). ## Getting Help -๐Ÿง‘โ€๐Ÿซ To learn about Polkadot in general, [Polkadot.network](https://polkadot.network/) website is a good starting point. +* ๐Ÿง‘โ€๐Ÿซ To learn about Polkadot in general, [Polkadot.network](https://polkadot.network/) website is a good starting point. -๐Ÿง‘โ€๐Ÿ”ง For technical introduction, [here](https://github.com/paritytech/polkadot-sdk#-documentation) are +* ๐Ÿง‘โ€๐Ÿ”ง For technical introduction, [here](https://github.com/paritytech/polkadot-sdk#-documentation) are the Polkadot SDK documentation resources. -๐Ÿ‘ฅ Additionally, there are [GitHub issues](https://github.com/paritytech/polkadot-sdk/issues) and +* ๐Ÿ‘ฅ Additionally, there are [GitHub issues](https://github.com/paritytech/polkadot-sdk/issues) and [Substrate StackExchange](https://substrate.stackexchange.com/). diff --git a/templates/parachain/README.md b/templates/parachain/README.md index 01e9cc26d9af..a6ac91799b77 100644 --- a/templates/parachain/README.md +++ b/templates/parachain/README.md @@ -1,22 +1,121 @@ -# Substrate Cumulus Parachain Template +
-A new [Cumulus](https://github.com/paritytech/polkadot-sdk/tree/master/cumulus)-based Substrate node, ready for hacking โ˜๏ธ.. +# Polkadot SDK's Parachain Template -This project is originally a fork of the -[Substrate Node Template](https://github.com/substrate-developer-hub/substrate-node-template) -modified to include dependencies required for registering this node as a **parathread** or -**parachain** to a **relay chain**. +Polkadot SDK Logo +Polkadot SDK Logo -The stand-alone version of this template is hosted on the -[Substrate Devhub Parachain Template](https://github.com/substrate-developer-hub/substrate-parachain-template/) -for each release of Polkadot. It is generated directly to the upstream -[Parachain Template in Cumulus](https://github.com/paritytech/polkadot-sdk/tree/master/cumulus/parachain-template) -at each release branch using the -[Substrate Template Generator](https://github.com/paritytech/substrate-template-generator/). +> This is a template for creating a [parachain](https://wiki.polkadot.network/docs/learn-parachains) based on Polkadot SDK. +> +> This template is automatically updated after releases in the main [Polkadot SDK monorepo](https://github.com/paritytech/polkadot-sdk). -๐Ÿ‘‰ Learn more about parachains [here](https://wiki.polkadot.network/docs/learn-parachains), and -parathreads [here](https://wiki.polkadot.network/docs/learn-parathreads). +
+* โซ This template provides a starting point to build a [parachain](https://wiki.polkadot.network/docs/learn-parachains). -๐Ÿง™ Learn about how to use this template and run your own parachain testnet for it in the -[Devhub Cumulus Tutorial](https://docs.substrate.io/tutorials/v3/cumulus/start-relay/). +* โ˜๏ธ It is based on the +[Cumulus](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/cumulus/index.html) framework. + +* ๐Ÿ”ง Its runtime is configured of a single custom pallet as a starting point, and a handful of ready-made pallets +such as a [Balances pallet](https://paritytech.github.io/polkadot-sdk/master/pallet_balances/index.html). + +* ๐Ÿ‘‰ Learn more about parachains [here](https://wiki.polkadot.network/docs/learn-parachains) + +## Template Structure + +A Polkadot SDK based project such as this one consists of: + +* ๐Ÿ’ฟ a [Node](./node/README.md) - the binary application. +* ๐Ÿงฎ the [Runtime](./runtime/README.md) - the core logic of the parachain. +* ๐ŸŽจ the [Pallets](./pallets/README.md) - from which the runtime is constructed. + +## Getting Started + +* ๐Ÿฆ€ The template is using the Rust language. + +* ๐Ÿ‘‰ Check the +[Rust installation instructions](https://www.rust-lang.org/tools/install) for your system. + +* ๐Ÿ› ๏ธ Depending on your operating system and Rust version, there might be additional +packages required to compile this template - please take note of the Rust compiler output. + +### Build + +๐Ÿ”จ Use the following command to build the node without launching it: + +```sh +cargo build --release +``` + +๐Ÿณ Alternatively, build the docker image: + +```sh +docker build . -t polkadot-sdk-parachain-template +``` + +### Local Development Chain + +๐ŸงŸ This project uses [Zombienet](https://github.com/paritytech/zombienet) to orchestrate the relaychain and parachain nodes. +You can grab a [released binary](https://github.com/paritytech/zombienet/releases/latest) or use an [npm version](https://www.npmjs.com/package/@zombienet/cli). + +This template produces a parachain node. +You still need a relaychain node - you can download the `polkadot` +(and the accompanying `polkadot-prepare-worker` and `polkadot-execute-worker`) +binaries from [Polkadot SDK releases](https://github.com/paritytech/polkadot-sdk/releases/latest). + +Make sure to bring the parachain node - as well as `polkadot`, `polkadot-prepare-worker`, `polkadot-execute-worker`, +and `zombienet` - into `PATH` like so: + +```sh +export PATH="./target/release/:$PATH" +``` + +This way, we can conveniently use them un the following steps. + +๐Ÿ‘ฅ The following command starts a local development chain, with a single relay chain node and a single parachain collator: + +```sh +zombienet --provider native spawn ./zombienet.toml + +# Alternatively, the npm version: +npx --yes @zombienet/cli --provider native spawn ./zombienet.toml +``` + +Development chains: + +* ๐Ÿงน Do not persist the state. +* ๐Ÿ’ฐ Are preconfigured with a genesis state that includes several prefunded development accounts. +* ๐Ÿง‘โ€โš–๏ธ Development accounts are used as validators, collators, and `sudo` accounts. + +### Connect with the Polkadot-JS Apps Front-End + +* ๐ŸŒ You can interact with your local node using the +hosted version of the Polkadot/Substrate Portal: +[relay chain](https://polkadot.js.org/apps/#/explorer?rpc=ws://localhost:9944) +and [parachain](https://polkadot.js.org/apps/#/explorer?rpc=ws://localhost:9988). + +* ๐Ÿช A hosted version is also +available on [IPFS](https://dotapps.io/). + +* ๐Ÿง‘โ€๐Ÿ”ง You can also find the source code and instructions for hosting your own instance in the +[`polkadot-js/apps`](https://github.com/polkadot-js/apps) repository. + +## Contributing + +* ๐Ÿ”„ This template is automatically updated after releases in the main [Polkadot SDK monorepo](https://github.com/paritytech/polkadot-sdk). + +* โžก๏ธ Any pull requests should be directed to this [source](https://github.com/paritytech/polkadot-sdk/tree/master/templates/parachain). + +* ๐Ÿ˜‡ Please refer to the monorepo's +[contribution guidelines](https://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/CONTRIBUTING.md) and +[Code of Conduct](https://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/CODE_OF_CONDUCT.md). + +## Getting Help + +* ๐Ÿง‘โ€๐Ÿซ To learn about Polkadot in general, [Polkadot.network](https://polkadot.network/) website is a good starting point. + +* ๐Ÿง‘โ€๐Ÿ”ง For technical introduction, [here](https://github.com/paritytech/polkadot-sdk#-documentation) are +the Polkadot SDK documentation resources. + +* ๐Ÿ‘ฅ Additionally, there are [GitHub issues](https://github.com/paritytech/polkadot-sdk/issues) and +[Substrate StackExchange](https://substrate.stackexchange.com/). diff --git a/templates/parachain/node/README.md b/templates/parachain/node/README.md new file mode 100644 index 000000000000..350272c7b6ef --- /dev/null +++ b/templates/parachain/node/README.md @@ -0,0 +1,18 @@ +# Node + +โ„น๏ธ A node - in Polkadot - is a binary executable, whose primary purpose is to execute the [runtime](../runtime/README.md). + +๐Ÿ”— It communicates with other nodes in the network, and aims for +[consensus](https://wiki.polkadot.network/docs/learn-consensus) among them. + +โš™๏ธ It acts as a remote procedure call (RPC) server, allowing interaction with the blockchain. + +๐Ÿ‘‰ Learn more about the architecture, and a difference between a node and a runtime +[here](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/reference_docs/wasm_meta_protocol/index.html). + +๐Ÿ‘‡ Here are the most important files in this node template: + +- [`chain_spec.rs`](./src/chain_spec.rs): A chain specification is a source code file that defines the chain's +initial (genesis) state. +- [`service.rs`](./src/service.rs): This file defines the node implementation. +It's a place to configure consensus-related topics. diff --git a/templates/parachain/pallets/README.md b/templates/parachain/pallets/README.md new file mode 100644 index 000000000000..9fabe64a3e79 --- /dev/null +++ b/templates/parachain/pallets/README.md @@ -0,0 +1,13 @@ +# Pallets + +โ„น๏ธ A pallet is a unit of encapsulated logic, with a clearly defined responsibility. A pallet is analogous to a +module in the runtime. + +๐Ÿ’ In this template, there is a simple custom pallet based on the FRAME framework. + +๐Ÿ‘‰ Learn more about FRAME +[here](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/frame_runtime/index.html). + +๐Ÿง‘โ€๐Ÿซ Please refer to +[this guide](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/guides/your_first_pallet/index.html) +to learn how to write a basic pallet. diff --git a/templates/parachain/pallets/template/README.md b/templates/parachain/pallets/template/README.md deleted file mode 100644 index 9e4dc55267d6..000000000000 --- a/templates/parachain/pallets/template/README.md +++ /dev/null @@ -1 +0,0 @@ -License: MIT-0 diff --git a/templates/parachain/polkadot-launch/config.json b/templates/parachain/polkadot-launch/config.json deleted file mode 100644 index f03f983a4975..000000000000 --- a/templates/parachain/polkadot-launch/config.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "relaychain": { - "bin": "../../polkadot/target/release/polkadot", - "chain": "rococo-local", - "nodes": [ - { - "name": "alice", - "wsPort": 9944, - "port": 30444 - }, - { - "name": "bob", - "wsPort": 9955, - "port": 30555 - } - ] - }, - "parachains": [ - { - "bin": "../target/release/polkadot-parachain", - "id": "200", - "balance": "1000000000000000000000", - "nodes": [ - { - "wsPort": 9988, - "name": "alice", - "port": 31200, - "flags": [ - "--force-authoring", - "--", - "--execution=wasm" - ] - } - ] - } - ], - "types": { - } -} diff --git a/templates/parachain/runtime/README.md b/templates/parachain/runtime/README.md new file mode 100644 index 000000000000..acd5939fc542 --- /dev/null +++ b/templates/parachain/runtime/README.md @@ -0,0 +1,10 @@ +# Runtime + +โ„น๏ธ The runtime (in other words, a state transition function), refers to the core logic of the parachain that is +responsible for validating blocks and executing the state changes they define. + +๐Ÿ’ The runtime in this template is constructed using ready-made FRAME pallets that ship with +[Polkadot SDK](https://github.com/paritytech/polkadot-sdk), and a [template for a custom pallet](../pallets/README.md). + +๐Ÿ‘‰ Learn more about FRAME +[here](https://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/frame_runtime/index.html). diff --git a/templates/parachain/zombienet.toml b/templates/parachain/zombienet.toml new file mode 100644 index 000000000000..336ba1af4dde --- /dev/null +++ b/templates/parachain/zombienet.toml @@ -0,0 +1,16 @@ +[relaychain] +default_command = "polkadot" +chain = "dev" + +[[relaychain.nodes]] +name = "alice" +validator = true +ws_port = 9944 + +[[parachains]] +id = 1000 + +[parachains.collator] +name = "alice" +ws_port = 9988 +command = "parachain-template-node"