mirror of
https://github.com/pezkuwichain/pezkuwi-runtime-templates.git
synced 2026-06-13 23:21:02 +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)!
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user