mirror of
https://github.com/pezkuwichain/pezkuwi-runtime-templates.git
synced 2026-04-30 01:07:57 +00:00
merge changes/fixes from v2 back into main (#333)
* update version for antora * improving zombienet guide (#280) * update docs version to 2.0.1 (#315) * Change all references from rococo to paseo (#330) * remove rococo-native featire from cargo.toml and other doc changes * use evm compatible accounts, and fix properties for chain spec (#326) * doc changes * bump node and docs versions * impl_runtime_apis need to be in the same file with construct runtime for the moment * account type fix * zombienet script update * slot duration fix --------- Co-authored-by: Nikita Khateev <nikita.khateev@gmail.com> Co-authored-by: Özgün Özerk <ozgunozerk.elo@gmail.com> Co-authored-by: Gustavo Gonzalez <gustavo.gonzalez@openzeppelin.com> ---------
This commit is contained in:
@@ -16,7 +16,7 @@ cargo build --release --features="async-backing"
|
||||
|
||||
== How to test
|
||||
|
||||
You can always test it against Rococo (it should already have enabled async backing), but the fastest way is to test against a local relay chain. In our repository you can find a script, a config and a link:https://github.com/OpenZeppelin/polkadot-runtime-templates/tree/main/generic-template/zombienet-config[manual] that will run both relay chain and a parachain. To launch a parachain with a relay chain, you will need to run these commands:
|
||||
You can always test it against Paseo (it should already have enabled async backing), but the fastest way is to test against a local relay chain. In our repository you can find a script, a config and a link:https://github.com/OpenZeppelin/polkadot-runtime-templates/tree/main/generic-template/zombienet-config[manual] that will run both relay chain and a parachain. To launch a parachain with a relay chain, you will need to run these commands:
|
||||
|
||||
* Get the Polkadot binaries:
|
||||
** If you are using some Linux distro, you can download the binaries:
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
|
||||
= Quick start
|
||||
|
||||
* Begin by visiting our link:https://github.com/OpenZeppelin/polkadot-runtime-templates[repository]. You can fork it, use it as a template, or simply clone it to your local directory.
|
||||
* Begin by visiting our link:https://github.com/OpenZeppelin/polkadot-runtime-templates[repository]. You can fork it, or simply clone it to your local directory.
|
||||
```bash
|
||||
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.
|
||||
* Move to the directory of the template you want to use. We will use the `generic runtime template` for this tutorial, but it is the same for the same applies to the xref:runtimes/evm.adoc[EVM Runtime Template].
|
||||
```bash
|
||||
cd generic-template
|
||||
```
|
||||
@@ -19,41 +19,46 @@ cd generic-template
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
* Receive some `ROC` from the link:https://paritytech.github.io/polkadot-testnet-faucet/[Rococo faucet]
|
||||
* Receive some `PSO` from the link:https://paritytech.github.io/polkadot-testnet-faucet/[Paseo faucet]
|
||||
|
||||
* Reserve a ParaId on Rococo:
|
||||
* Reserve a ParaId on Paseo:
|
||||
|
||||
** Go to link:https://polkadot.js.org/apps[PolkadotJS]. Check that it points to Rococo testnet.
|
||||
** Go to link:https://polkadot.js.org/apps[PolkadotJS]. Check that it points to Paseo testnet.
|
||||
** Go to `Network` > `Parachains`
|
||||
** Go to `Parathreads` tab
|
||||
** Click the `+ ParaId` button
|
||||
** Save a `parachain id` for the further usage.
|
||||
** Save the `parachain id` for the further usage.
|
||||
** Click `Submit` and `Sign and Submit`.
|
||||
|
||||
* Generate and customize a chainspec:
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
We use the `generic-template-node` executable throughout all the commands since we are using the `generic-template`, but make sure to update the name of the executable if you are using any of the other runtime template.
|
||||
====
|
||||
|
||||
** Generate a plain chainspec with this command:
|
||||
+
|
||||
```bash
|
||||
./target/release/parachain-template-node build-spec --disable-default-bootnode > plain-parachain-chainspec.json
|
||||
./target/release/generic-template-node build-spec --disable-default-bootnode > plain-parachain-chainspec.json
|
||||
```
|
||||
|
||||
** Edit the chainspec:
|
||||
|
||||
*** Update `name`, `id` and `protocolId` to unique values.
|
||||
*** Change `relay_chain` from `rococo-local` to `rococo`.
|
||||
*** Change `relay_chain` from `paseo-local` to `paseo`.
|
||||
*** Change `para_id` and `parachainInfo.parachainId` from `1000` to the previously saved parachain id.
|
||||
|
||||
** Generate a raw chainspec with this command:
|
||||
+
|
||||
```bash
|
||||
./target/release/parachain-template-node build-spec --chain plain-parachain-chainspec.json --disable-default-bootnode --raw > raw-parachain-chainspec.json
|
||||
./target/release/generic-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, and `unsafe` skips downloading the state proofs(which we are ok with since it is Rococo).
|
||||
* Run two nodes and wait until it syncs with the Paseo 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, and `unsafe` skips downloading the state proofs(which we are ok with since it is a testnet).
|
||||
+
|
||||
```bash
|
||||
./target/release/parachain-template-node \
|
||||
./target/release/generic-template-node \
|
||||
--alice \
|
||||
--collator \
|
||||
--force-authoring \
|
||||
@@ -63,14 +68,14 @@ cargo build --release
|
||||
--rpc-port 8844 \
|
||||
-- \
|
||||
--execution wasm \
|
||||
--chain <path to the Rococo chainspec> \
|
||||
--chain <path to the Paseo chainspec> \
|
||||
--port 30343 \
|
||||
--rpc-port 9977 \
|
||||
--sync fast-unsafe
|
||||
```
|
||||
+
|
||||
```bash
|
||||
./target/release/parachain-template-node \
|
||||
./target/release/generic-template-node \
|
||||
--bob \
|
||||
--collator \
|
||||
--force-authoring \
|
||||
@@ -80,27 +85,27 @@ cargo build --release
|
||||
--rpc-port 8845 \
|
||||
-- \
|
||||
--execution wasm \
|
||||
--chain <path to the Rococo chainspec> \
|
||||
--chain <path to the Paseo 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 link:https://github.com/paritytech/polkadot-sdk/blob/release-polkadot-v1.10.0/polkadot/node/service/chain-specs/rococo.jsonofficial[official Polkadot sdk repository].
|
||||
** `<path to the Paseo chainspec>` is where your Paseo chainspec is stored. You can download this file from the link:https://github.com/paritytech/polkadot-sdk/blob/release-polkadot-v1.10.0/polkadot/node/service/chain-specs/paseo.json[official Polkadot sdk repository].
|
||||
|
||||
* Register a parathread:
|
||||
|
||||
** Generate a genesis state:
|
||||
+
|
||||
```bash
|
||||
./target/release/parachain-template-node export-genesis-state --chain raw-parachain-chainspec.json para-<paraId>-genesis-state
|
||||
./target/release/generic-template-node export-genesis-state --chain raw-parachain-chainspec.json para-<paraId>-genesis-state
|
||||
```
|
||||
** Generate a genesis wasm:
|
||||
+
|
||||
```bash
|
||||
./target/release/parachain-template-node export-genesis-wasm --chain raw-parachain-chainspec.json para-<paraId>-wasm
|
||||
./target/release/generic-template-node export-genesis-wasm --chain raw-parachain-chainspec.json para-<paraId>-wasm
|
||||
```
|
||||
** Go to link:https://polkadot.js.org/apps[PolkadotJS]. Check that it points to Rococo testnet.
|
||||
** Go to link:https://polkadot.js.org/apps[PolkadotJS]. Check that it points to Paseo testnet.
|
||||
** Go to `Network` > `Parachains`.
|
||||
** Go to `Parathreads` tab.
|
||||
** Click the `+ ParaThread` button.
|
||||
@@ -110,16 +115,16 @@ cargo build --release
|
||||
|
||||
* 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`.
|
||||
** With a PolkadotJS pointing to Paseo go to `Developer` > `Extrinsics`.
|
||||
** Submit an extrinsic `onDemandAssignmentProvider.placeOrderAllowDeath` or `onDemandAssignmentProvider.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.
|
||||
*** `maxAmount` should be not less than 10_000_000 and it is amount of 0.00001 PAS. It is an amount of PAS paid for the block.
|
||||
*** `paraId` should be set to your parachain id.
|
||||
*** Click `Submit` and `Sign 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
|
||||
** In some time your parathread will produce a block and in one of the next blocks of Paseo 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: xref:guides/runtimes/generic.adoc[Generic Runtime Template] and xref:runtimes/evm.adoc[EVM Runtime Template].
|
||||
- Learn more about the runtime configuration. Currently, we have two runtime templates: xref:runtimes/generic.adoc[Generic Runtime Template] and xref:runtimes/evm.adoc[EVM Runtime Template].
|
||||
- Explore the documentation for pallets. It may be useful if you are considering building a frontend for your parachain.
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
In this tutorial, we will demonstrate how to deploy your parachain using Zombienet, and test the functionalities of your parachain.
|
||||
|
||||
Below are the main steps of this demo:
|
||||
. Deploy our parachain against the locally simulated rococo testnet by Zombienet.
|
||||
. Deploy our parachain against the locally simulated Paseo testnet by Zombienet.
|
||||
. Deploy a Solidity smart contract on our parachain.
|
||||
. Successfully invoke the Solidity smart contract deployed on our parachain.
|
||||
|
||||
@@ -25,7 +25,7 @@ cd evm-template
|
||||
+
|
||||
```rust
|
||||
[relaychain]
|
||||
chain = "rococo-local"
|
||||
chain = "paseo-local"
|
||||
default_command = "./bin-v1.6.0/polkadot"
|
||||
|
||||
[[relaychain.nodes]]
|
||||
@@ -162,12 +162,11 @@ image::zombie-chain-spec.png[Zombie Chain Spec]
|
||||
--rpc-port 8844 \
|
||||
-- \
|
||||
--execution wasm \
|
||||
--chain /var/folders/...{redacted}.../rococo-local.json \
|
||||
--chain /var/folders/...{redacted}.../paseo-local.json \
|
||||
--port 30343 \
|
||||
--rpc-port 9977
|
||||
```
|
||||
|
||||
|
||||
. your node should be running without any problem, and should see block production in your node terminal!
|
||||
+
|
||||
image::node-success.png[Node Success]
|
||||
@@ -221,15 +220,16 @@ import { Web3 } from "web3";
|
||||
const web3 = new Web3("ws://127.0.0.1:8844");
|
||||
|
||||
console.log("Balance:");
|
||||
web3.eth.getBalance("0xe04cc55ebee1cbce552f250e85c57b70b2e2625b").then(console.log);
|
||||
// this is the address of `Alith` in our chainspec
|
||||
web3.eth.getBalance("0xf24FF3a9CF04c71Dbc94D0b566f7A27B94566cac").then(console.log);
|
||||
|
||||
let raw = await web3.eth.accounts.signTransaction({
|
||||
gas: 21000,
|
||||
gasPrice: 10000000000,
|
||||
from: "0xe04cc55ebee1cbce552f250e85c57b70b2e2625b",
|
||||
to: "0x7c98a1801f0B28dF559bCd828fc67Bd6ab558074",
|
||||
from: "0xf24FF3a9CF04c71Dbc94D0b566f7A27B94566cac", // Alith's address
|
||||
to: "0x7c98a1801f0B28dF559bCd828fc67Bd6ab558074", // Baltathar's address
|
||||
value: '100000000000000000'
|
||||
}, "0xcb6df9de1efca7a3998a8ead4e02159d5fa99c3e0d4fd6432667390bb4726854");
|
||||
}, "0x5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133"); // Alith's private key
|
||||
|
||||
let res = await web3.eth.sendSignedTransaction(raw.rawTransaction);
|
||||
console.log("Transaction details:");
|
||||
@@ -289,13 +289,13 @@ export var MyAbi = [
|
||||
node sanity_check.js
|
||||
```
|
||||
|
||||
. open a terminal instance where the current directory has the `HelloWorld.sol` file, and run:
|
||||
. open a terminal instance where the current directory has the `HelloWorld.sol` file, and run the below command to deploy the contract with Alith's private key:
|
||||
+
|
||||
```solidity
|
||||
forge create --rpc-url http://localhost:8844 --private-key 0xcb6df9de1efca7a3998a8ead4e02159d5fa99c3e0d4fd6432667390bb4726854 HelloWorld.sol:HelloWorld
|
||||
forge create --rpc-url http://localhost:9933 --private-key 0x5fb92d6e98884f76de468fa3f6278f8807c48bebc13595d45af5bdc4da702133 HelloWorld.sol:HelloWorld
|
||||
```
|
||||
+
|
||||
* don’t forget to copy the address this contract deployed to!
|
||||
* don’t forget to copy the address this contract deployed to (shown in the output of the command)!
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
|
||||
= Polkadot Parachain Runtimes
|
||||
|
||||
A collection of runtimes that describe parachains with different purposes.
|
||||
A collection of secure runtime templates to build parachains more easily on Polkadot.
|
||||
|
||||
=== Runtimes
|
||||
== Runtimes
|
||||
* xref:runtimes/generic.adoc[Generic Runtime Template]
|
||||
* xref:runtimes/evm.adoc[EVM Runtime Template]
|
||||
|
||||
|
||||
=== A Couple of Good Starting Places
|
||||
== Where to get started
|
||||
* xref:guides/quick_start.adoc[Quick Start]: a generic parachain runtime that works out of the box. It has all the must have features, and allows further customization based on your project's needs. Generic Runtime Template also serves as the base for our other runtime templates.
|
||||
* xref:guides/testing_with_zombienet.adoc[Testing with Zombienet]: a more opinionated parachain runtime template that maximizes Ethereum compatibility by using `AccountId20` and configures a local EVM instance. You can easily migrate/deploy Solidity Smart Contracts to this one.
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
:source-highlighter: highlight.js
|
||||
:highlightjs-languages: rust
|
||||
:github-icon: pass:[<svg class="icon"><use href="#github-icon"/></svg>]
|
||||
= Generic Runtime
|
||||
= EVM Runtime
|
||||
|
||||
== Purpose
|
||||
|
||||
EVM Runtime Template is built on top of the link:generic.adoc[Generic Runtime Template].
|
||||
EVM Runtime Template is built on top of the xref:runtimes/generic.adoc[Generic Runtime Template].
|
||||
|
||||
The purpose of this template is to provide EVM compatibilities embedded into the runtime.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user