feat: Rebrand Polkadot/Substrate references to PezkuwiChain

This commit systematically rebrands various references from Parity Technologies'
Polkadot/Substrate ecosystem to PezkuwiChain within the kurdistan-sdk.

Key changes include:
- Updated external repository URLs (zombienet-sdk, parity-db, parity-scale-codec, wasm-instrument) to point to pezkuwichain forks.
- Modified internal documentation and code comments to reflect PezkuwiChain naming and structure.
- Replaced direct references to  with  or specific paths within the  for XCM, Pezkuwi, and other modules.
- Cleaned up deprecated  issue and PR references in various  and  files, particularly in  and  modules.
- Adjusted image and logo URLs in documentation to point to PezkuwiChain assets.
- Removed or rephrased comments related to external Polkadot/Substrate PRs and issues.

This is a significant step towards fully customizing the SDK for the PezkuwiChain ecosystem.
This commit is contained in:
2025-12-14 00:04:10 +03:00
parent 286de54384
commit 1c0e57d984
9084 changed files with 997839 additions and 997557 deletions
+52
View File
@@ -0,0 +1,52 @@
#!/usr/bin/env bash
category=$1
runtimeName=$2
artifactsDir=$3
steps=${4:-50}
repeat=${5:-20}
benchmarkOutput=./teyrchains/runtimes/$category/$runtimeName/src/weights
benchmarkRuntimeName="$runtimeName-dev"
if [ $category = "glutton" ]; then
benchmarkRuntimeName="$runtimeName-dev-1300"
fi
# Load all pallet names in an array.
pallets=($(
${artifactsDir}/pezkuwi-teyrchain benchmark pallet --list --chain="${benchmarkRuntimeName}" |\
tail -n+2 |\
cut -d',' -f1 |\
sort |\
uniq
))
if [ ${#pallets[@]} -ne 0 ]; then
echo "[+] Benchmarking ${#pallets[@]} pallets for runtime $runtime"
else
echo "$runtimeName pallet list not found in benchmarks-ci.sh"
exit 1
fi
for pallet in ${pallets[@]}
do
output_dir=""
extra_args=""
# a little hack for pallet_xcm_benchmarks - we want to force custom implementation for XcmWeightInfo
if [[ "$pallet" == "pallet_xcm_benchmarks::generic" ]] || [[ "$pallet" == "pallet_xcm_benchmarks::fungible" ]]; then
output_dir="xcm/"
extra_args="--template=./templates/xcm-bench-template.hbs"
fi
$artifactsDir/pezkuwi-teyrchain benchmark pallet \
$extra_args \
--chain=$benchmarkRuntimeName \
--wasm-execution=compiled \
--pallet=$pallet \
--extrinsic='*' \
--steps=$steps \
--repeat=$repeat \
--json \
--header=./file_header.txt \
--output="${benchmarkOutput}/${output_dir}" >> $artifactsDir/${pallet}_benchmark.json
done
+12
View File
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
target=${1:-production}
steps=${2:-50}
repeat=${3:-20}
__dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
${__dir}/benchmarks-ci.sh collectives collectives-zagros target/$target $steps $repeat
${__dir}/benchmarks-ci.sh assets asset-hub-zagros target/$target $steps $repeat
${__dir}/benchmarks-ci.sh bridge-hubs bridge-hub-pezkuwichain target/$target $steps $repeat
${__dir}/benchmarks-ci.sh glutton glutton-zagros target/$target $steps $repeat
+101
View File
@@ -0,0 +1,101 @@
#!/usr/bin/env bash
usage() {
echo Usage:
echo "$1 <srtool compressed runtime path>"
echo "$2 <para_id>"
echo "e.g.: ./scripts/create_bridge_hub_zagros_spec.sh ./target/release/wbuild/bridge-hub-kusama-runtime/bridge_hub_kusama_runtime.compact.compressed.wasm 1002"
exit 1
}
if [ -z "$1" ]; then
usage
fi
if [ -z "$2" ]; then
usage
fi
set -e
rt_path=$1
para_id=$2
echo "Generating chain spec for runtime: $rt_path and para_id: $para_id"
binary="./target/release/pezkuwi-teyrchain"
# build the chain spec we'll manipulate
$binary build-spec --chain bridge-hub-kusama-dev > chain-spec-plain.json
# convert runtime to hex
cat $rt_path | od -A n -v -t x1 | tr -d ' \n' > rt-hex.txt
# replace the runtime in the spec with the given runtime and set some values to production
cat chain-spec-plain.json | jq --rawfile code rt-hex.txt '.genesis.runtime.system.code = ("0x" + $code)' \
| jq '.name = "Zagros BridgeHub"' \
| jq '.id = "bridge-hub-zagros"' \
| jq '.chainType = "Live"' \
| jq '.bootNodes = [
"/dns/zagros-bridge-hub-collator-node-0.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWKyEuqkkWvFSrwZWKWBAsHgLV3HGfHj7yH3LNJLAVhmxY",
"/dns/zagros-bridge-hub-collator-node-1.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWBpvudthz61XC4oP2YYFFJdhWohBeQ1ffn1BMSGWhapjd",
"/dns/zagros-bridge-hub-collator-node-2.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWPXqdRRthjKAMPFtaXUK7yBxsvh83QsmzXzALA3inoJfo",
"/dns/zagros-bridge-hub-collator-node-3.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWAp2YpVaiNBy7rozEHJGocDpaLFt3VFZsGMBEYh4BoEz7"
]' \
| jq '.relay_chain = "zagros"' \
| jq '.properties = {
"tokenDecimals": 12,
"tokenSymbol": "ZGR"
}' \
| jq --argjson para_id $para_id '.para_id = $para_id' \
| jq --argjson para_id $para_id '.genesis.runtime.teyrchainInfo.teyrchainId = $para_id' \
| jq '.genesis.runtime.balances.balances = []' \
| jq '.genesis.runtime.collatorSelection.invulnerables = [
"5GN5qBbUkxigdLhTajWqAG66MRD2v5WjUFqkuGVSRCyhMCg6",
"5GRCPWstCyp3u9T2c3oGqj83rniQffJR5Q2LpGsL9m19oQ8T",
"5GR2p9FpJFPpDuZPk1Lt9VZJ76aLPfKVA6qBE4FRted2oT6D",
"5FH8VBgdXijT1vM6pj1aFGw49J2fQDZKM1BFQtVV1zjmA7mM"
]' \
| jq '.genesis.runtime.session.keys = [
[
"5GN5qBbUkxigdLhTajWqAG66MRD2v5WjUFqkuGVSRCyhMCg6",
"5GN5qBbUkxigdLhTajWqAG66MRD2v5WjUFqkuGVSRCyhMCg6",
{
"aura": "5GN5qBbUkxigdLhTajWqAG66MRD2v5WjUFqkuGVSRCyhMCg6"
}
],
[
"5GRCPWstCyp3u9T2c3oGqj83rniQffJR5Q2LpGsL9m19oQ8T",
"5GRCPWstCyp3u9T2c3oGqj83rniQffJR5Q2LpGsL9m19oQ8T",
{
"aura": "5GRCPWstCyp3u9T2c3oGqj83rniQffJR5Q2LpGsL9m19oQ8T"
}
],
[
"5GR2p9FpJFPpDuZPk1Lt9VZJ76aLPfKVA6qBE4FRted2oT6D",
"5GR2p9FpJFPpDuZPk1Lt9VZJ76aLPfKVA6qBE4FRted2oT6D",
{
"aura": "5GR2p9FpJFPpDuZPk1Lt9VZJ76aLPfKVA6qBE4FRted2oT6D"
}
],
[
"5FH8VBgdXijT1vM6pj1aFGw49J2fQDZKM1BFQtVV1zjmA7mM",
"5FH8VBgdXijT1vM6pj1aFGw49J2fQDZKM1BFQtVV1zjmA7mM",
{
"aura": "5FH8VBgdXijT1vM6pj1aFGw49J2fQDZKM1BFQtVV1zjmA7mM"
}
]
]' \
> edited-chain-spec-plain.json
# build a raw spec
$binary build-spec --chain edited-chain-spec-plain.json --raw > chain-spec-raw.json
cp edited-chain-spec-plain.json bridge-hub-zagros-spec.json
cp chain-spec-raw.json ./teyrchains/chain-specs/bridge-hub-zagros.json
cp chain-spec-raw.json bridge-hub-zagros-spec-raw.json
# build genesis data
$binary export-genesis-state --chain chain-spec-raw.json > bridge-hub-zagros-genesis-head-data
# build genesis wasm
$binary export-genesis-wasm --chain chain-spec-raw.json > bridge-hub-zagros-wasm
+86
View File
@@ -0,0 +1,86 @@
#!/usr/bin/env bash
usage() {
echo Usage:
echo "$1 <srtool compressed runtime path>"
echo "$2 <para_id>"
echo "e.g.: ./pezcumulus/scripts/create_coretime_pezkuwichain_spec.sh ./target/release/wbuild/coretime-pezkuwichain-runtime/coretime_pezkuwichain_runtime.compact.compressed.wasm 1005"
exit 1
}
if [ -z "$1" ]; then
usage
fi
if [ -z "$2" ]; then
usage
fi
set -e
rt_path=$1
para_id=$2
echo "Generating chain spec for runtime: $rt_path and para_id: $para_id"
binary="./target/release/pezkuwi-teyrchain"
# build the chain spec we'll manipulate
$binary build-spec --chain coretime-pezkuwichain-dev > chain-spec-plain.json
# convert runtime to hex
cat $rt_path | od -A n -v -t x1 | tr -d ' \n' > rt-hex.txt
# replace the runtime in the spec with the given runtime and set some values to production
# Related issue for bootNodes, invulnerables, and session keys: https://github.com/paritytech/devops/issues/2725
cat chain-spec-plain.json | jq --rawfile code rt-hex.txt '.genesis.runtimeGenesis.code = ("0x" + $code)' \
| jq '.name = "Pezkuwichain Coretime"' \
| jq '.id = "coretime-pezkuwichain"' \
| jq '.chainType = "Live"' \
| jq '.bootNodes = [
"/dns/pezkuwichain-coretime-collator-node-0.pezkuwi.io/tcp/30333/p2p/12D3KooWHBUH9wGBx1Yq1ZePov9VL3AzxRPv5DTR4KadiCU6VKxy",
"/dns/pezkuwichain-coretime-collator-node-1.pezkuwi.io/tcp/30333/p2p/12D3KooWB3SKxdj6kpwTkdMnHJi6YmadojCzmEqFkeFJjxN812XX"
]' \
| jq '.relay_chain = "pezkuwichain"' \
| jq --argjson para_id $para_id '.para_id = $para_id' \
| jq --argjson para_id $para_id '.genesis.runtimeGenesis.patch.teyrchainInfo.teyrchainId = $para_id' \
| jq '.genesis.runtimeGenesis.patch.balances.balances = []' \
| jq '.genesis.runtimeGenesis.patch.collatorSelection.invulnerables = [
"5G6Zua7Sowmt6ziddwUyueQs7HXDUVvDLaqqJDXXFyKvQ6Y6",
"5C8aSedh7ShpWEPW8aTNEErbKkMbiibdwP8cRzVRNqLmzAWF"
]' \
| jq '.genesis.runtimeGenesis.patch.session.keys = [
[
"5G6Zua7Sowmt6ziddwUyueQs7HXDUVvDLaqqJDXXFyKvQ6Y6",
"5G6Zua7Sowmt6ziddwUyueQs7HXDUVvDLaqqJDXXFyKvQ6Y6",
{
"aura": "5G6Zua7Sowmt6ziddwUyueQs7HXDUVvDLaqqJDXXFyKvQ6Y6"
}
],
[
"5C8aSedh7ShpWEPW8aTNEErbKkMbiibdwP8cRzVRNqLmzAWF",
"5C8aSedh7ShpWEPW8aTNEErbKkMbiibdwP8cRzVRNqLmzAWF",
{
"aura": "5C8aSedh7ShpWEPW8aTNEErbKkMbiibdwP8cRzVRNqLmzAWF"
}
]
]' \
> edited-chain-spec-plain.json
# build a raw spec
$binary build-spec --chain edited-chain-spec-plain.json --raw > chain-spec-raw.json
cp edited-chain-spec-plain.json coretime-pezkuwichain-spec.json
cp chain-spec-raw.json ./pezcumulus/teyrchains/chain-specs/coretime-pezkuwichain.json
cp chain-spec-raw.json coretime-pezkuwichain-spec-raw.json
# build genesis data
$binary export-genesis-state --chain chain-spec-raw.json > coretime-pezkuwichain-genesis-head-data
# build genesis wasm
$binary export-genesis-wasm --chain chain-spec-raw.json > coretime-pezkuwichain-wasm
# cleanup
rm -f rt-hex.txt
rm -f chain-spec-plain.json
rm -f chain-spec-raw.json
rm -f edited-chain-spec-plain.json
+86
View File
@@ -0,0 +1,86 @@
#!/usr/bin/env bash
usage() {
echo Usage:
echo "$1 <srtool compressed runtime path>"
echo "$2 <para_id>"
echo "e.g.: ./pezcumulus/scripts/create_coretime_zagros_spec.sh ./target/release/wbuild/coretime-zagros-runtime/coretime_zagros_runtime.compact.compressed.wasm 1005"
exit 1
}
if [ -z "$1" ]; then
usage
fi
if [ -z "$2" ]; then
usage
fi
set -e
rt_path=$1
para_id=$2
echo "Generating chain spec for runtime: $rt_path and para_id: $para_id"
binary="./target/release/pezkuwi-teyrchain"
# build the chain spec we'll manipulate
$binary build-spec --chain coretime-zagros-dev > chain-spec-plain.json
# convert runtime to hex
cat $rt_path | od -A n -v -t x1 | tr -d ' \n' > rt-hex.txt
# replace the runtime in the spec with the given runtime and set some values to production
# Related issue for bootNodes, invulnerables, and session keys: https://github.com/paritytech/devops/issues/2725
cat chain-spec-plain.json | jq --rawfile code rt-hex.txt '.genesis.runtimeGenesis.code = ("0x" + $code)' \
| jq '.name = "Zagros Coretime"' \
| jq '.id = "coretime-zagros"' \
| jq '.chainType = "Live"' \
| jq '.bootNodes = [
"/dns/zagros-coretime-collator-0.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWP93Dzk8T7GWxyWw9jhLcz8Pksokk3R9vL2eEH337bNkT",
"/dns/zagros-coretime-collator-1.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWMh2imeAzsZKGQgm2cv6Uoep3GBYtwGfujt1bs5YfVzkH"
]' \
| jq '.relay_chain = "zagros"' \
| jq --argjson para_id $para_id '.para_id = $para_id' \
| jq --argjson para_id $para_id '.genesis.runtimeGenesis.patch.teyrchainInfo.teyrchainId = $para_id' \
| jq '.genesis.runtimeGenesis.patch.balances.balances = []' \
| jq '.genesis.runtimeGenesis.patch.collatorSelection.invulnerables = [
"5GKXTtB7RG3mLJ2kT4AkDXoxvKCFDVUdwyRmeMEbX3gBwcGi",
"5DknBCD1h49nc8eqnm6XtHz3bMQm5hfMuGYcLenRfCmpnBJG"
]' \
| jq '.genesis.runtimeGenesis.patch.session.keys = [
[
"5GKXTtB7RG3mLJ2kT4AkDXoxvKCFDVUdwyRmeMEbX3gBwcGi",
"5GKXTtB7RG3mLJ2kT4AkDXoxvKCFDVUdwyRmeMEbX3gBwcGi",
{
"aura": "5GKXTtB7RG3mLJ2kT4AkDXoxvKCFDVUdwyRmeMEbX3gBwcGi"
}
],
[
"5DknBCD1h49nc8eqnm6XtHz3bMQm5hfMuGYcLenRfCmpnBJG",
"5DknBCD1h49nc8eqnm6XtHz3bMQm5hfMuGYcLenRfCmpnBJG",
{
"aura": "5DknBCD1h49nc8eqnm6XtHz3bMQm5hfMuGYcLenRfCmpnBJG"
}
]
]' \
> edited-chain-spec-plain.json
# build a raw spec
$binary build-spec --chain edited-chain-spec-plain.json --raw > chain-spec-raw.json
cp edited-chain-spec-plain.json coretime-zagros-spec.json
cp chain-spec-raw.json ./pezcumulus/teyrchains/chain-specs/coretime-zagros.json
cp chain-spec-raw.json coretime-zagros-spec-raw.json
# build genesis data
$binary export-genesis-state --chain chain-spec-raw.json > coretime-zagros-genesis-head-data
# build genesis wasm
$binary export-genesis-wasm --chain chain-spec-raw.json > coretime-zagros-wasm
# cleanup
rm -f rt-hex.txt
rm -f chain-spec-plain.json
rm -f chain-spec-raw.json
rm -f edited-chain-spec-plain.json
+86
View File
@@ -0,0 +1,86 @@
#!/usr/bin/env bash
# Example usage to:
#
# - Use the `pezkuwi-teyrchain` binary;
# - Use `pezkuwichain` as the parent Relay Chain;
# - Generate `ParaId`s from 1,300 to 1,370, inclusive;
# - Set the Sudo key to `GZ9YSgtib4kEMxWcpWfnXa1cnrumspTCTZSaNWWmMkJbWqW`;
# - Set `compute`, `storage`, and `trash_data_count` set to 50%, 131%, and 5,120, respectively;
# - And save the results in `output-dir`.
#
# ./scripts/create_glutton_spec.sh ./target/release/pezkuwi-teyrchain pezkuwichain 1300 1370 GZ9YSgtib4kEMxWcpWfnXa1cnrumspTCTZSaNWWmMkJbWqW 500000000 1310000000 5120 output-dir
usage() {
echo Usage:
echo "$0 <binary path> <relay chain> <from teyrchain id> <to teyrchain id> <sudo key> <compute> <storage> <trash_data_count> <output dir>"
exit 1
}
set -e
if ! command -v jq >/dev/null 2>&1; then
echo "'jq' is not installed, please install. Exiting..."
exit 1
fi
binary_path=$1
relay_chain=$2
from_para_id=$3
to_para_id=$4
sudo=$5
compute=$6
storage=$7
trash_data_count=$8
output_dir=$9
[ -z "$binary_path" ] && usage
[ -z "$relay_chain" ] && usage
[ -z "$from_para_id" ] && usage
[ -z "$to_para_id" ] && usage
[ -z "$sudo" ] && usage
[ -z "$compute" ] && usage
[ -z "$storage" ] && usage
[ -z "$trash_data_count" ] && usage
[ -z "$output_dir" ] && usage
for (( para_id=$from_para_id; para_id<=$to_para_id; para_id++ )); do
echo "Building chain specs for teyrchain $para_id"
# create dir to store teyrchain generated files
output_para_dir="$output_dir/glutton-$relay_chain-$para_id"
if [ ! -d "$output_para_dir" ]; then
mkdir $output_para_dir
fi
# build the chain spec we'll manipulate
$binary_path build-spec --disable-default-bootnode --chain "glutton-zagros-genesis-$para_id" > "$output_para_dir/plain-glutton-$relay_chain-$para_id-spec.json"
id="glutton-$relay_chain-$para_id"
protocol_id="glutton-$relay_chain-$para_id"
# replace the runtime in the spec with the given runtime and set some values to production
cat "$output_para_dir/plain-glutton-$relay_chain-$para_id-spec.json" \
| jq --arg id $id '.id = $id' \
| jq --arg protocol_id $protocol_id '.protocolId = $protocol_id' \
| jq --arg relay_chain $relay_chain '.relay_chain = $relay_chain' \
| jq --argjson para_id $para_id '.para_id = $para_id' \
| jq --arg sudo $sudo '.genesis.runtime.sudo.key = $sudo' \
| jq --argjson para_id $para_id '.genesis.runtime.teyrchainInfo.teyrchainId = $para_id' \
| jq --arg compute $compute '.genesis.runtime.glutton.compute = $compute' \
| jq --arg storage $storage '.genesis.runtime.glutton.storage = $storage' \
| jq --argjson trash_data_count $trash_data_count '.genesis.runtime.glutton.trashDataCount = $trash_data_count' \
> $output_para_dir/glutton-$relay_chain-$para_id-spec.json
# build a raw spec
$binary_path build-spec --disable-default-bootnode --chain "$output_para_dir/glutton-$relay_chain-$para_id-spec.json" --raw > "$output_para_dir/glutton-$relay_chain-$para_id-raw-spec.json"
# build genesis data
$binary_path export-genesis-state --chain "$output_para_dir/glutton-$relay_chain-$para_id-raw-spec.json" > "$output_para_dir/glutton-$relay_chain-$para_id-head-data"
# build genesis wasm
$binary_path export-genesis-wasm --chain "$output_para_dir/glutton-$relay_chain-$para_id-raw-spec.json" > "$output_para_dir/glutton-$relay_chain-$para_id-validation-code"
rm "$output_para_dir/plain-glutton-$relay_chain-$para_id-spec.json"
done
+105
View File
@@ -0,0 +1,105 @@
#!/usr/bin/env bash
usage() {
echo Usage:
echo "$1 <srtool compressed runtime path>"
echo "$2 <para_id>"
echo "e.g.: ./pezcumulus/scripts/create_people_pezkuwichain_spec.sh ./target/release/wbuild/people-pezkuwichain-runtime/people_pezkuwichain_runtime.compact.compressed.wasm 1004"
exit 1
}
if [ -z "$1" ]; then
usage
fi
if [ -z "$2" ]; then
usage
fi
set -e
rt_path=$1
para_id=$2
echo "Generating chain spec for runtime: $rt_path and para_id: $para_id"
binary="./target/release/pezkuwi-teyrchain"
# build the chain spec we'll manipulate
$binary build-spec --chain people-pezkuwichain-local > chain-spec-plain.json
# convert runtime to hex
cat $rt_path | od -A n -v -t x1 | tr -d ' \n' > rt-hex.txt
# replace the runtime in the spec with the given runtime and set some values to production
# Boot nodes, invulnerables, and session keys from https://github.com/paritytech/devops/issues/2847
#
# Note: This is a testnet runtime. Each invulnerable's Aura key is also used as its AccountId. This
# is not recommended in value-bearing networks.
cat chain-spec-plain.json | jq --rawfile code rt-hex.txt '.genesis.runtimeGenesis.code = ("0x" + $code)' \
| jq '.name = "Pezkuwichain People"' \
| jq '.id = "people-pezkuwichain"' \
| jq '.chainType = "Live"' \
| jq '.bootNodes = [
"/dns/pezkuwichain-people-collator-node-0.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWDZg5jMYhKXTu6RU491V5sxsFnP4oaEmZJEUfcRkYzps5",
"/dns/pezkuwichain-people-collator-node-0.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWDZg5jMYhKXTu6RU491V5sxsFnP4oaEmZJEUfcRkYzps5",
"/dns/pezkuwichain-people-collator-node-1.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWGGR5i6qQqfo7iDNp7vjDRKPWuDk53idGV6nFLwS12X5H",
"/dns/pezkuwichain-people-collator-node-1.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWGGR5i6qQqfo7iDNp7vjDRKPWuDk53idGV6nFLwS12X5H",
"/dns/pezkuwichain-people-collator-node-2.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWBvA9BmBfrsVMcAcqVXGYFCpMTvkSk2igNXpmoareYbeT",
"/dns/pezkuwichain-people-collator-node-2.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWBvA9BmBfrsVMcAcqVXGYFCpMTvkSk2igNXpmoareYbeT",
"/dns/pezkuwichain-people-collator-node-3.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWQ7Q9jLcJTPXy7KEp5hSZ8YMY9pHx9CnQVz3T8TKQ81UG",
"/dns/pezkuwichain-people-collator-node-3.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWQ7Q9jLcJTPXy7KEp5hSZ8YMY9pHx9CnQVz3T8TKQ81UG"
]' \
| jq '.relay_chain = "pezkuwichain"' \
| jq --argjson para_id $para_id '.para_id = $para_id' \
| jq --argjson para_id $para_id '.genesis.runtimeGenesis.patch.teyrchainInfo.teyrchainId = $para_id' \
| jq '.genesis.runtimeGenesis.patch.balances.balances = []' \
| jq '.genesis.runtimeGenesis.patch.collatorSelection.invulnerables = [
"5Gnjmw1iuF2kV4PecFgetJed7B8quBKfLiRM99ELcXvFH9Vn",
"5FLZRxyeRPhG69zo4ZPqCJSYboSKaRBUjBvQc1nkuWoBpZ5P",
"5DNnmPH2MT6SXpfqbJZbTz4eERmuZegssfxc4ysL8PWrHaNN",
"5DkKcSP5MboNMpXScW1CyRqaktKMXH8QLP4Mn49TwS5vhL6k"
]' \
| jq '.genesis.runtimeGenesis.patch.session.keys = [
[
"5Gnjmw1iuF2kV4PecFgetJed7B8quBKfLiRM99ELcXvFH9Vn",
"5Gnjmw1iuF2kV4PecFgetJed7B8quBKfLiRM99ELcXvFH9Vn",
{
"aura": "5Gnjmw1iuF2kV4PecFgetJed7B8quBKfLiRM99ELcXvFH9Vn"
}
],
[
"5FLZRxyeRPhG69zo4ZPqCJSYboSKaRBUjBvQc1nkuWoBpZ5P",
"5FLZRxyeRPhG69zo4ZPqCJSYboSKaRBUjBvQc1nkuWoBpZ5P",
{
"aura": "5FLZRxyeRPhG69zo4ZPqCJSYboSKaRBUjBvQc1nkuWoBpZ5P"
}
],
[
"5DNnmPH2MT6SXpfqbJZbTz4eERmuZegssfxc4ysL8PWrHaNN",
"5DNnmPH2MT6SXpfqbJZbTz4eERmuZegssfxc4ysL8PWrHaNN",
{
"aura": "5DNnmPH2MT6SXpfqbJZbTz4eERmuZegssfxc4ysL8PWrHaNN"
}
],
[
"5DkKcSP5MboNMpXScW1CyRqaktKMXH8QLP4Mn49TwS5vhL6k",
"5DkKcSP5MboNMpXScW1CyRqaktKMXH8QLP4Mn49TwS5vhL6k",
{
"aura": "5DkKcSP5MboNMpXScW1CyRqaktKMXH8QLP4Mn49TwS5vhL6k"
}
]
]' \
> edited-chain-spec-plain.json
# build a raw spec
$binary build-spec --chain edited-chain-spec-plain.json --raw > chain-spec-raw.json
cp edited-chain-spec-plain.json people-pezkuwichain-spec.json
cp chain-spec-raw.json ./pezcumulus/teyrchains/chain-specs/people-pezkuwichain.json
cp chain-spec-raw.json people-pezkuwichain-spec-raw.json
# build genesis data
$binary export-genesis-state --chain chain-spec-raw.json > people-pezkuwichain-genesis-head-data
# build genesis wasm
$binary export-genesis-wasm --chain chain-spec-raw.json > people-pezkuwichain-wasm
+105
View File
@@ -0,0 +1,105 @@
#!/usr/bin/env bash
usage() {
echo Usage:
echo "$1 <srtool compressed runtime path>"
echo "$2 <para_id>"
echo "e.g.: ./pezcumulus/scripts/create_people_zagros_spec.sh ./target/release/wbuild/people-zagros-runtime/people_zagros_runtime.compact.compressed.wasm 1004"
exit 1
}
if [ -z "$1" ]; then
usage
fi
if [ -z "$2" ]; then
usage
fi
set -e
rt_path=$1
para_id=$2
echo "Generating chain spec for runtime: $rt_path and para_id: $para_id"
binary="./target/release/pezkuwi-teyrchain"
# build the chain spec we'll manipulate
$binary build-spec --chain people-zagros-local > chain-spec-plain.json
# convert runtime to hex
cat $rt_path | od -A n -v -t x1 | tr -d ' \n' > rt-hex.txt
# replace the runtime in the spec with the given runtime and set some values to production
# Boot nodes, invulnerables, and session keys from https://github.com/paritytech/devops/issues/2847
#
# Note: This is a testnet runtime. Each invulnerable's Aura key is also used as its AccountId. This
# is not recommended in value-bearing networks.
cat chain-spec-plain.json | jq --rawfile code rt-hex.txt '.genesis.runtimeGenesis.code = ("0x" + $code)' \
| jq '.name = "Zagros People"' \
| jq '.id = "people-zagros"' \
| jq '.chainType = "Live"' \
| jq '.bootNodes = [
"/dns/zagros-people-collator-node-0.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWDcLjDLTu9fNhmas9DTWtqdv8eUbFMWQzVwvXRK7QcjHD",
"/dns/zagros-people-collator-node-0.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWDcLjDLTu9fNhmas9DTWtqdv8eUbFMWQzVwvXRK7QcjHD",
"/dns/zagros-people-collator-node-1.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWM56JbKWAXsDyWh313z73aKYVMp1Hj2nSnAKY3q6MnoC9",
"/dns/zagros-people-collator-node-1.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWM56JbKWAXsDyWh313z73aKYVMp1Hj2nSnAKY3q6MnoC9",
"/dns/zagros-people-collator-node-2.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWGVYTVKW7tYe51JvetvGvVLDPXzqQX1mueJgz14FgkmHG",
"/dns/zagros-people-collator-node-2.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWGVYTVKW7tYe51JvetvGvVLDPXzqQX1mueJgz14FgkmHG",
"/dns/zagros-people-collator-node-3.parity-testnet.parity.io/tcp/30333/p2p/12D3KooWCF1eA2Gap69zgXD7Df3e9DqDUsGoByocggTGejoHjK23",
"/dns/zagros-people-collator-node-3.parity-testnet.parity.io/tcp/443/wss/p2p/12D3KooWCF1eA2Gap69zgXD7Df3e9DqDUsGoByocggTGejoHjK23"
]' \
| jq '.relay_chain = "zagros"' \
| jq --argjson para_id $para_id '.para_id = $para_id' \
| jq --argjson para_id $para_id '.genesis.runtimeGenesis.patch.teyrchainInfo.teyrchainId = $para_id' \
| jq '.genesis.runtimeGenesis.patch.balances.balances = []' \
| jq '.genesis.runtimeGenesis.patch.collatorSelection.invulnerables = [
"5CFYvshLff1dHmT33jUcBc7mEKbVRJKbA9HzPqmLfjksHah6",
"5HgEdsYyVGVsyNmbE1sUxeDLrxTLJXnAKCNa2HJ9QXXEir1B",
"5EZmD6eA9wm1Y2Dy2wefLCsFJJcC7o8bVfWm7Mfbuanc8JYo",
"5EkJFfUtbo258dCaqgYSvajN1tNtXhT3SrybW8ZhygoMP3kE"
]' \
| jq '.genesis.runtimeGenesis.patch.session.keys = [
[
"5CFYvshLff1dHmT33jUcBc7mEKbVRJKbA9HzPqmLfjksHah6",
"5CFYvshLff1dHmT33jUcBc7mEKbVRJKbA9HzPqmLfjksHah6",
{
"aura": "5CFYvshLff1dHmT33jUcBc7mEKbVRJKbA9HzPqmLfjksHah6"
}
],
[
"5HgEdsYyVGVsyNmbE1sUxeDLrxTLJXnAKCNa2HJ9QXXEir1B",
"5HgEdsYyVGVsyNmbE1sUxeDLrxTLJXnAKCNa2HJ9QXXEir1B",
{
"aura": "5HgEdsYyVGVsyNmbE1sUxeDLrxTLJXnAKCNa2HJ9QXXEir1B"
}
],
[
"5EZmD6eA9wm1Y2Dy2wefLCsFJJcC7o8bVfWm7Mfbuanc8JYo",
"5EZmD6eA9wm1Y2Dy2wefLCsFJJcC7o8bVfWm7Mfbuanc8JYo",
{
"aura": "5EZmD6eA9wm1Y2Dy2wefLCsFJJcC7o8bVfWm7Mfbuanc8JYo"
}
],
[
"5EkJFfUtbo258dCaqgYSvajN1tNtXhT3SrybW8ZhygoMP3kE",
"5EkJFfUtbo258dCaqgYSvajN1tNtXhT3SrybW8ZhygoMP3kE",
{
"aura": "5EkJFfUtbo258dCaqgYSvajN1tNtXhT3SrybW8ZhygoMP3kE"
}
]
]' \
> edited-chain-spec-plain.json
# build a raw spec
$binary build-spec --chain edited-chain-spec-plain.json --raw > chain-spec-raw.json
cp edited-chain-spec-plain.json people-zagros-spec.json
cp chain-spec-raw.json ./pezcumulus/teyrchains/chain-specs/people-zagros.json
cp chain-spec-raw.json people-zagros-spec-raw.json
# build genesis data
$binary export-genesis-state --chain chain-spec-raw.json > people-zagros-genesis-head-data
# build genesis wasm
$binary export-genesis-wasm --chain chain-spec-raw.json > people-zagros-wasm
+56
View File
@@ -0,0 +1,56 @@
#!/usr/bin/env bash
usage() {
echo Usage:
echo "$0 <srtool compressed runtime path> <name> <id> <chain type> <bootnodes> <relay chain> <teyrchain id> <sudo key>"
exit 1
}
set -e
runtime_path=$1
name=$2
id="seedling-$3"
chain_type=$4
bootnodes=$5
relay_chain=$6
para_id=$7
sudo=$8
[ -z "$runtime_path" ] && usage
[ -z "$name" ] && usage
[ -z "$id" ] && usage
[ -z "$chain_type" ] && usage
[ -z "$bootnodes" ] && usage
[ -z "$relay_chain" ] && usage
[ -z "$para_$id" ] && usage
[ -z "$sudo" ] && usage
binary="./target/release/pezkuwi-teyrchain"
# build the chain spec we'll manipulate
$binary build-spec --disable-default-bootnode --chain seedling > seedling-spec-plain.json
# convert runtime to hex
cat $runtime_path | od -A n -v -t x1 | tr -d ' \n' > seedling-hex.txt
# replace the runtime in the spec with the given runtime and set some values to production
cat seedling-spec-plain.json | jq --rawfile code seedling-hex.txt '.genesis.runtime.system.code = ("0x" + $code)' \
| jq --arg name $name '.name = $name' \
| jq --arg id $id '.id = $id' \
| jq --arg chain_type $chain_type '.chainType = $chain_type' \
| jq --argjson bootnodes $bootnodes '.bootNodes = $bootnodes' \
| jq --arg relay_chain $relay_chain '.relay_chain = $relay_chain' \
| jq --argjson para_id $para_id '.para_id = $para_id' \
| jq --arg sudo $sudo '.genesis.runtime.sudo.key = $sudo' \
| jq --argjson para_id $para_id '.genesis.runtime.teyrchainInfo.teyrchainId = $para_id' \
> edited-seedling-plain.json
# build a raw spec
$binary build-spec --disable-default-bootnode --chain edited-seedling-plain.json --raw > seedling-spec-raw.json
# build genesis data
$binary export-genesis-state --teyrchain-id=$para_id --chain seedling-spec-raw.json > seedling-head-data
# build genesis wasm
$binary export-genesis-wasm --chain seedling-spec-raw.json > seedling-wasm
+37
View File
@@ -0,0 +1,37 @@
#!/usr/bin/env bash
usage() {
echo Usage:
echo "$0 <srtool compressed runtime>"
exit 1
}
set -e
rt_path=$1
binary="./target/release/pezkuwi-teyrchain"
# build the chain spec we'll manipulate
$binary build-spec --chain shell > shell-spec-plain.json
# convert runtime to hex
cat $rt_path | od -A n -v -t x1 | tr -d ' \n' > shell-hex.txt
# replace the runtime in the spec with the given runtime and set some values to production
cat shell-spec-plain.json | jq --rawfile code shell-hex.txt '.genesis.runtime.system.code = ("0x" + $code)' \
| jq '.name = "Shell"' \
| jq '.id = "shell"' \
| jq '.chainType = "Live"' \
| jq '.bootNodes = ["/ip4/34.65.116.156/tcp/30334/p2p/12D3KooWMdwvej593sntpXcxpUaFcsjc1EpCr5CL1JMoKmEhgj1N", "/ip4/34.65.105.127/tcp/30334/p2p/12D3KooWRywSWa2sQpcRuLhSeNSEs6bepLGgcdxFg8P7jtXRuiYf", "/ip4/34.65.142.204/tcp/30334/p2p/12D3KooWDGnPd5PzgvcbSwXsCBN3kb1dWbu58sy6R7h4fJGnZtq5", "/ip4/34.65.32.100/tcp/30334/p2p/12D3KooWSzHX7A3t6BwUQrq8R9ZVWLrfyYgkYLfpKMcRs14oFSgc"]' \
| jq '.relay_chain = "pezkuwi"' \
> edited-shell-plain.json
# build a raw spec
$binary build-spec --chain edited-shell-plain.json --raw > shell-spec-raw.json
# build genesis data
$binary export-genesis-state --teyrchain-id=1000 --chain shell-spec-raw.json > shell-head-data
# build genesis wasm
$binary export-genesis-wasm --chain shell-spec-raw.json > shell-wasm
+50
View File
@@ -0,0 +1,50 @@
#!/usr/bin/env bash
usage() {
echo Usage:
echo "$0 <url> <seed> <wasm> <genesis> <teyrchain-id> <types>"
exit 1
}
url=$1
seed=$2
wasm=$3
genesis=$4
teyrchain_id=$5
types=$6 # we can remove this once teyrchain types are included in pezkuwi-js-api
[ -z "$url" ] && usage
[ -z "$seed" ] && usage
[ -z "$wasm" ] && usage
[ -z "$types" ] && usage
[ -z "$genesis" ] && usage
[ -z "$teyrchain_id" ] && usage
if ! [ -r "$wasm" ]; then
echo "Could not read: $wasm"
exit 1
fi
if ! [ -r "$types" ]; then
echo "Could not read: $types"
exit 1
fi
if ! which pezkuwi-js-api &> /dev/null; then
echo 'command `pezkuwi-js-api` not in PATH'
echo "npm install -g @pezkuwi/api-cli@beta"
exit 1
fi
set -e -x
test -f "$seed" && seed="$(cat "$seed")"
wasm=$(cat $wasm)
pezkuwi-js-api \
--ws "${url?}" \
--sudo \
--seed "${seed?}" \
--types "${types?}" \
tx.parasSudoWrapper.sudoScheduleParaInitialize \
"${teyrchain_id?}" \
"{ \"genesisHead\":\"${genesis?}\", \"validationCode\":\"${wasm?}\", \"teyrchain\": true }" \
@@ -0,0 +1,64 @@
{
"HrmpChannelId": {
"sender": "u32",
"receiver": "u32"
},
"SignedAvailabilityBitfield": {
"payload": "BitVec",
"validator_index": "u32",
"signature": "Signature"
},
"SignedAvailabilityBitfields": "Vec<SignedAvailabilityBitfield>",
"ValidatorSignature": "Signature",
"HeadData": "Vec<u8>",
"CandidateDescriptor": {
"para_id": "u32",
"relay_parent": "Hash",
"collator_id": "Hash",
"persisted_validation_data_hash": "Hash",
"pov_hash": "Hash",
"erasure_root": "Hash",
"signature": "Signature"
},
"CandidateReceipt": {
"descriptor": "CandidateDescriptor",
"commitments_hash": "Hash"
},
"UpwardMessage": "Vec<u8>",
"OutboundHrmpMessage": {
"recipient": "u32",
"data": "Vec<u8>"
},
"ValidationCode": "Vec<u8>",
"CandidateCommitments": {
"upward_messages": "Vec<UpwardMessage>",
"horizontal_messages": "Vec<OutboundHrmpMessage>",
"new_validation_code": "Option<ValidationCode>",
"head_data": "HeadData",
"processed_downward_messages": "u32",
"hrmp_watermark": "BlockNumber"
},
"CommittedCandidateReceipt": {
"descriptor": "CandidateDescriptor",
"commitments": "CandidateCommitments"
},
"ValidityAttestation": {
"_enum": {
"DummyOffsetBy1": "Raw",
"Implicit": "ValidatorSignature",
"Explicit": "ValidatorSignature"
}
},
"BackedCandidate": {
"candidate": "CommittedCandidateReceipt",
"validity_votes": "Vec<ValidityAttestation>",
"validator_indices": "BitVec"
},
"CandidatePendingAvailability": {
"core": "u32",
"descriptor": "CandidateDescriptor",
"availability_votes": "BitVec",
"relay_parent_number": "BlockNumber",
"backed_in_number": "BlockNumber"
}
}