This repository has been archived by the owner on Nov 15, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 379
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Glutton script chain spec generator (#2638)
* added script * create_glutton_spec script done * made script for many paras * comment fix * comment fix Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * update docs * check jq installed --------- Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com>
- Loading branch information
1 parent
fe42c3b
commit 02f0bf7
Showing
2 changed files
with
88 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
#!/usr/bin/env bash | ||
|
||
# Example usage to: | ||
# | ||
# - Use the `polkadot-parachain` binary; | ||
# - Use `rococo` as the parent Relay Chain; | ||
# - Generate `ParaId`s from 1,300 to 1,370, inclusive; | ||
# - Set the Sudo key to `G7Z5mTmTQsjEGBVqVGDZyR9m7RoHNZJk6JeykyfKQ3vmBiR`; | ||
# - Set `compute`, `storage`, and `trash_data_count` set to 50%, 50%, and 5,120, respectively; | ||
# - And save the results in `output-dir`. | ||
# | ||
# ./scripts/create_glutton_spec.sh ./target/release/polkadot-parachain rococo 1300 1370 G7Z5mTmTQsjEGBVqVGDZyR9m7RoHNZJk6JeykyfKQ3vmBiR 500000000 500000000 5120 output-dir | ||
|
||
usage() { | ||
echo Usage: | ||
echo "$0 <binary path> <relay chain> <from parachain id> <to parachain 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 parachain $para_id" | ||
|
||
# create dir to store parachain 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-kusama-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.parachainInfo.parachainId = $para_id' \ | ||
| jq --argjson compute $compute '.genesis.runtime.glutton.compute = $compute' \ | ||
| jq --argjson 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 |