Quick start
-
Begin by visiting our repository. You can fork it, use it as a template, or simply clone it to your local directory.
git clone git@github.com:OpenZeppelin/polkadot-runtime-templates.git
-
Move to the directory of the template you want to use. We will use the
generic runtime template
for this tutorial.
cd generic-template
-
Build a release version of the runtime and node:
cargo build --release
-
Receive some
ROC
from the Rococo faucet -
Reserve a ParaId on Rococo:
-
Go to PolkadotJS. Check that it points to Rococo testnet.
-
Go to
Network
>Parachains
-
Go to
Parathreads
tab -
Click the
+ ParaId
button -
Save a
parachain id
for the further usage. -
Click
Submit
andSign and Submit
.
-
-
Generate and customize a chainspec:
-
Generate a plain chainspec with this command:
./target/release/parachain-template-node build-spec --disable-default-bootnode > plain-parachain-chainspec.json
-
Edit the chainspec:
-
Update
name
,id
andprotocolId
to unique values. -
Change
relay_chain
fromrococo-local
torococo
. -
Change
para_id
andparachainInfo.parachainId
from1000
to the previously saved parachain id.
-
-
Generate a raw chainspec with this command:
./target/release/parachain-template-node build-spec --chain plain-parachain-chainspec.json --disable-default-bootnode --raw > raw-parachain-chainspec.json
-
-
Run two nodes and wait until it syncs with the Rococo relay chain. This can take a fairly long time(up to 2 days), so we can use the
fast-unsafe
flag to make the process faster since we are on a testnet(~ 3 hours).fast
downloads the blocks without executing the transactions, andunsafe
skips downloading the state proofs(which we are ok with since it is Rococo)../target/release/parachain-template-node \ --alice \ --collator \ --force-authoring \ --chain raw-parachain-chainspec.json \ --base-path <path to datadir> \ --port 40333 \ --rpc-port 8844 \ -- \ --execution wasm \ --chain <path to the Rococo chainspec> \ --port 30343 \ --rpc-port 9977 \ --sync fast-unsafe
./target/release/parachain-template-node \ --bob \ --collator \ --force-authoring \ --chain raw-parachain-chainspec.json \ --base-path <path to datadir> \ --port 40333 \ --rpc-port 8845 \ -- \ --execution wasm \ --chain <path to the Rococo chainspec> \ --port 30343 \ --rpc-port 9977 \ --sync fast-unsafe
-
<path to datadir>
is where the downloaded chain state will be stored. It can be any folder on your computer. -
<path to the Rococo chainspec>
is where your Rococo chainspec is stored. You can download this file from the official Polkadot sdk repository.
-
-
Register a parathread:
-
Generate a genesis state:
./target/release/parachain-template-node export-genesis-state --chain raw-parachain-chainspec.json para-<paraId>-genesis-state
-
Generate a genesis wasm:
./target/release/parachain-template-node export-genesis-wasm --chain raw-parachain-chainspec.json para-<paraId>-wasm
-
Go to PolkadotJS. Check that it points to Rococo testnet.
-
Go to
Network
>Parachains
. -
Go to
Parathreads
tab. -
Click the
+ ParaThread
button. -
Insert
para-<paraId>-wasm
tocode
field. -
Insert
para-<paraId>-genesis-state
toinitial state
field. -
Click
Submit
andSign and Submit
.
-
-
When a parachain gets synced with a relaychain, you may start producing blocks as a parathread:
-
Create some transaction with a PolkadotJS pointing to your parachain setup.
-
With a PolkadotJS pointing to Rococo go to
Developer
>Extrinsics
. -
Submit an extrinsic
onDemandAssignmentProvider.placeOrderAllowDeath
oronDemandAssignmentProvider.placeOrderKeepAlive
:-
maxAmount
should be not less than 10_000_000 and it is amount of 0.00001 ROC. It is an amount of ROC paid for the block. -
paraId
should be set to your parachain id. -
Click
Submit
andSign and Submit
.
-
-
In some time your parathread will produce a block and in one of the next blocks of Rococo there will be an inclusion of this block
-
What’s next?
-
Read our general guides to understand more about the concepts of runtime development.
-
Learn more about the runtime configuration. Currently, we have two runtime templates: Generic Runtime Template and EVM Runtime Template.
-
Explore the documentation for pallets. It may be useful if you are considering building a frontend for your parachain.