Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add scripts to generate people chain base chainspecs #4910

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 90 additions & 0 deletions cumulus/parachains/chain-specs/people-polkadot.json

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions cumulus/polkadot-parachain/src/chain_spec/people.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,9 @@ impl PeopleRuntimeType {
match self {
PeopleRuntimeType::Kusama =>
todo!("Update chain-spec: ../../chain-specs/people-kusama.json - https://github.com/paritytech/polkadot-sdk/pull/3961#issuecomment-2037438431"),
PeopleRuntimeType::Polkadot =>
todo!("Generate chain-spec: ../../chain-specs/people-polkadot.json"),
PeopleRuntimeType::Polkadot => Ok(Box::new(GenericChainSpec::from_json_bytes(
&include_bytes!("../../chain-specs/people-polkadot.json")[..],
)?)),
PeopleRuntimeType::Rococo => Ok(Box::new(GenericChainSpec::from_json_bytes(
&include_bytes!("../../chain-specs/people-rococo.json")[..],
)?)),
Expand Down
160 changes: 160 additions & 0 deletions cumulus/scripts/create_people_kusama_spec.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
#!/usr/bin/env bash
set -euo pipefail

# This script generates the people-kusama base chainspec at genesis. This is then modified by the
# script in polkadot-sdk on the nacho/people-chain-spec-with-migation branch, which also generates
# the genesis wasm and head data.
# The genesis spec for Kusama was generated with the script at commit 0887f9ace688005ed78b21044b1b23bdab748c6d.

## Configure
para_id=1004
version="v1.2.0"
release_wasm="people-kusama_runtime-v1002000.compact.compressed.wasm"
build_level="release" # Change to debug for faster builds

## Download
if [ ! -f $release_wasm ]; then
curl -OL "https://github.com/polkadot-fellows/runtimes/releases/download/$version/$release_wasm"
fi

if [ -d runtimes ]; then
cd runtimes
git fetch --tags
cd -
else
git clone https://github.com/polkadot-fellows/runtimes
fi

if [ -d polkadot-sdk ]; then
cd polkadot-sdk
git checkout master && git pull
cd -
else
git clone --branch master --single-branch https://github.com/paritytech/polkadot-sdk
fi

## Prepare
cd runtimes
git checkout tags/$version --force
cargo build -p chain-spec-generator --$build_level
cd -
chain_spec_generator="./runtimes/target/$build_level/chain-spec-generator"

cd polkadot-sdk
# After people-kusama was supported, but before the breaking change which expects additional runtime api.
git checkout 68cdb12 --force
cargo build -p polkadot-parachain-bin --$build_level
cd -
polkadot_parachain="./polkadot-sdk/target/$build_level/polkadot-parachain"

# Dump the runtime to hex.
cat $release_wasm | od -A n -v -t x1 | tr -d ' \n' >rt-hex.txt

# Generate the local chainspec to manipulate.
$chain_spec_generator people-kusama-local >chain-spec-plain.json

## Patch
# Related issue for Parity 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 = "Kusama People"' |
jq '.id = "people-kusama"' |
jq '.chainType = "Live"' |
jq '.bootNodes = [
"/dns/kusama-people-connect-0.polkadot.io/tcp/30334/p2p/12D3KooWQaqG5TNmDfRWrtH7tMsN7YeqwVkSfoZT4GkemSzezNi1",
"/dns/kusama-people-connect-1.polkadot.io/tcp/30334/p2p/12D3KooWKhYoQH9LdSyvY3SVZY9gFf6ZV1bFh6317TRehUP3r5fm",
"/dns/kusama-people-connect-0.polkadot.io/tcp/443/wss/p2p/12D3KooWQaqG5TNmDfRWrtH7tMsN7YeqwVkSfoZT4GkemSzezNi1",
"/dns/kusama-people-connect-1.polkadot.io/tcp/443/wss/p2p/12D3KooWKhYoQH9LdSyvY3SVZY9gFf6ZV1bFh6317TRehUP3r5fm"
]' |
jq '.relay_chain = "kusama"' |
jq --argjson para_id $para_id '.para_id = $para_id' |
jq --argjson para_id $para_id '.genesis.runtimeGenesis.patch.parachainInfo.parachainId = $para_id' |
jq '.genesis.runtimeGenesis.patch.balances.balances = []' |
jq '.genesis.runtimeGenesis.patch.collatorSelection.invulnerables = [
"HNrgbuMxf7VLwsMd6YjnNQM6fc7VVsaoNVaMYTCCfK3TRWJ",
"CuLgnS17KwfweeoN9y59YrhDG4pekfiY8qxieDaVTcVCjuP",
"J11Rp4mjz3vRb2DL51HqRGRjhuEQRyXgtuFskebXb8zMZ9s",
"H1tAQMm3eizGcmpAhL9aA9gR844kZpQfkU7pkmMiLx9jSzE",
"CbLd7BdUr8DqD4TciR1kH6w12bbHBCW9n2MHGCtbxq4U5ty",
"CdW8izFcLeicL3zZUQaC3a39AGeNSTgc9Jb5E5sjREPryA2",
"HmatizNhXrZtXwQK2LfntvjCy3x1EuKs1WnRQ6CP3KkNfmA",
"DtuntvQBh9vajFTnd42aTTCiuCyY3ep6EVwhhPji2ejyyhW",
"HPUEzi4v3YJmhBfSbcGEFFiNKPAGVnGkfDiUzBNTR7j1CxT"
]' |
jq '.genesis.runtimeGenesis.patch.session.keys = [
[
"HNrgbuMxf7VLwsMd6YjnNQM6fc7VVsaoNVaMYTCCfK3TRWJ",
"HNrgbuMxf7VLwsMd6YjnNQM6fc7VVsaoNVaMYTCCfK3TRWJ",
{
"aura": "FF4CWRg8eGk8zEmGxswx4ppBQN96HdZhkV35YJU6rfXabpV"
}
],
[
"CuLgnS17KwfweeoN9y59YrhDG4pekfiY8qxieDaVTcVCjuP",
"CuLgnS17KwfweeoN9y59YrhDG4pekfiY8qxieDaVTcVCjuP",
{
"aura": "HEuPjdpQ3yv45zwk6h6985PNK8wszRyeAjDd4GJW5dZEpNp"
}
],
[
"J11Rp4mjz3vRb2DL51HqRGRjhuEQRyXgtuFskebXb8zMZ9s",
"J11Rp4mjz3vRb2DL51HqRGRjhuEQRyXgtuFskebXb8zMZ9s",
{
"aura": "H4s9sGNMvzdjFMKi8qMBqnxhGJR6T7Ytx6foFz9CVhGVyQn"
}
],
[
"H1tAQMm3eizGcmpAhL9aA9gR844kZpQfkU7pkmMiLx9jSzE",
"H1tAQMm3eizGcmpAhL9aA9gR844kZpQfkU7pkmMiLx9jSzE",
{
"aura": "Eis5y75gUQtH712YCyF5q6PjE8UsZzFJ4q3tSYQv2QifZKT"
}
],
[
"CbLd7BdUr8DqD4TciR1kH6w12bbHBCW9n2MHGCtbxq4U5ty",
"CbLd7BdUr8DqD4TciR1kH6w12bbHBCW9n2MHGCtbxq4U5ty",
{
"aura": "E7XKeXCdv3PF1UMmBMU8qH536LKvpwHcgFCVSUbYwK8QrqY"
}
],
[
"CdW8izFcLeicL3zZUQaC3a39AGeNSTgc9Jb5E5sjREPryA2",
"CdW8izFcLeicL3zZUQaC3a39AGeNSTgc9Jb5E5sjREPryA2",
{
"aura": "Cm8X6ekpTVidkFPUmDF7dHFLeWQyrdGW1RhEeuijeR2Pntd"
}
],
[
"HmatizNhXrZtXwQK2LfntvjCy3x1EuKs1WnRQ6CP3KkNfmA",
"HmatizNhXrZtXwQK2LfntvjCy3x1EuKs1WnRQ6CP3KkNfmA",
{
"aura": "GRvavY8h77mnRHbEQsFvUzWpw3kvH8164aVUgKqoyMW8rpV"
}
],
[
"DtuntvQBh9vajFTnd42aTTCiuCyY3ep6EVwhhPji2ejyyhW",
"DtuntvQBh9vajFTnd42aTTCiuCyY3ep6EVwhhPji2ejyyhW",
{
"aura": "HeSr4JUpXgrfKNwZGcJYU5FSn3znDoZaXnYxWB168bw5WUM"
}
],
[
"HPUEzi4v3YJmhBfSbcGEFFiNKPAGVnGkfDiUzBNTR7j1CxT",
"HPUEzi4v3YJmhBfSbcGEFFiNKPAGVnGkfDiUzBNTR7j1CxT",
{
"aura": "HppWoUUWibaZn3zgmcaWZY3BLbZzRktLiNK5e6DUBxHuniE"
}
]
]' |
jq '.genesis.runtimeGenesis.patch.polkadotXcm.safeXcmVersion = 3' \
> people-kusama-genesis.json


## Convert to raw
$polkadot_parachain build-spec --raw --chain ./people-kusama-genesis.json > people-kusama.json

## Cleanup
rm -f rt-hex.txt
rm -f chain-spec-plain.json

echo "The genesis wasm and head data can now be generated using the script in polkadot-sdk on the nacho/people-chain-spec-with-migation branch. This will also modify the chainspec"
echo "See https://github.com/paritytech/polkadot-sdk/blob/0887f9ace688005ed78b21044b1b23bdab748c6d/cumulus/scripts/migrate_storage_to_genesis/README.md"
144 changes: 144 additions & 0 deletions cumulus/scripts/create_people_polkadot_spec.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
#!/usr/bin/env bash
set -euo pipefail

# This script generates the people-polkadot base chainspec at genesis. This is then modified by the
# script in polkadot-sdk on the nacho/people-chain-spec-with-migation branch, which also generates
# the genesis wasm and head data.

## Configure
para_id=1004
version="v1.2.6"
release_wasm="people-polkadot_runtime-v1002006.compact.compressed.wasm"
build_level="release"

## Download
if [ ! -f $release_wasm ]; then
curl -OL "https://github.com/polkadot-fellows/runtimes/releases/download/$version/$release_wasm"
fi

if [ -d runtimes ]; then
cd runtimes
git fetch --tags
cd -
else
git clone https://github.com/polkadot-fellows/runtimes
fi

if [ -d polkadot-sdk ]; then
cd polkadot-sdk
git checkout master && git pull
cd -
else
git clone --branch master --single-branch https://github.com/paritytech/polkadot-sdk
fi

## Prepare
cd runtimes
git checkout tags/$version --force
cargo build -p chain-spec-generator --$build_level
cd -
chain_spec_generator="./runtimes/target/$build_level/chain-spec-generator"


cd polkadot-sdk
# After people-polkadot was supported, but before the breaking change which expects additional runtime api.
git checkout 68cdb12 --force
cargo build -p polkadot-parachain-bin --$build_level
cd -
polkadot_parachain="./polkadot-sdk/target/$build_level/polkadot-parachain"

# Dump the runtime to hex.
cat $release_wasm | od -A n -v -t x1 | tr -d ' \n' >rt-hex.txt

# Generate the local chainspec to manipulate.
$chain_spec_generator people-polkadot-local >chain-spec-plain.json

## Patch
# Related issue for Parity bootNodes, invulnerables, and session keys: https://github.com/paritytech/infrastructure/issues/6
cat chain-spec-plain.json | jq --rawfile code rt-hex.txt '.genesis.runtimeGenesis.code = ("0x" + $code)' |
jq '.name = "Polkadot People"' |
jq '.id = "people-polkadot"' |
jq '.chainType = "Live"' |
jq '.bootNodes = [
"/dns/polkadot-people-connect-0.polkadot.io/tcp/30334/p2p/12D3KooWP7BoJ7nAF9QnsreN8Eft1yHNUhvhxFiQyKFEUePi9mu3",
"/dns/polkadot-people-connect-1.polkadot.io/tcp/30334/p2p/12D3KooWSSfWY3fTGJvGkuNUNBSNVCdLLNJnwkZSNQt7GCRYXu4o",
"/dns/polkadot-people-connect-0.polkadot.io/tcp/443/wss/p2p/12D3KooWP7BoJ7nAF9QnsreN8Eft1yHNUhvhxFiQyKFEUePi9mu3",
"/dns/polkadot-people-connect-1.polkadot.io/tcp/443/wss/p2p/12D3KooWSSfWY3fTGJvGkuNUNBSNVCdLLNJnwkZSNQt7GCRYXu4o"
]' |
jq '.relay_chain = "polkadot"' |
jq --argjson para_id $para_id '.para_id = $para_id' |
jq --argjson para_id $para_id '.genesis.runtimeGenesis.patch.parachainInfo.parachainId = $para_id' |
jq '.genesis.runtimeGenesis.patch.balances.balances = []' |
jq '.genesis.runtimeGenesis.patch.collatorSelection.invulnerables = [
"1CVdL7sb6AQGMQYZb8NfQhcBQMhmTLN3e7NDEby8rZkjyJo",
"14QhqUX7kux5PggbBwUFFZNuLvfX2CjzUQ9V56m4d4S67Pgn",
"112FKz5UNxjXqe3Wowe73a8FHnR5B4R9qi2pbMaXJczGNJsx",
"16FyxKfMF3LnX4CmDsv1PUDPNwqDYiR7rKurwuJxSGgnTsH2",
"14EQvBy9h8xGbh2R3ustnkfkF514E7wpmHtg27gDaTLM2str",
"14sD2iYm1HsFPoHaT2GJNUMD2KJzvJNfVe9PBrG1KGyDBeHn",
"1bLdd7zvNvjGpseQ8BGbGJekCppb1X5Gb228c9MQfHfmmBr"
]' |
jq '.genesis.runtimeGenesis.patch.session.keys = [
[
"1CVdL7sb6AQGMQYZb8NfQhcBQMhmTLN3e7NDEby8rZkjyJo",
"1CVdL7sb6AQGMQYZb8NfQhcBQMhmTLN3e7NDEby8rZkjyJo",
{
"aura": "1WyMcPD9qNrweNu6SKR1TTE2MybFiG8QsZSYxTMsFomuL1o"
}
],
[
"14QhqUX7kux5PggbBwUFFZNuLvfX2CjzUQ9V56m4d4S67Pgn",
"14QhqUX7kux5PggbBwUFFZNuLvfX2CjzUQ9V56m4d4S67Pgn",
{
"aura": "15wq6YmW6panxKmFaLEmrKpsypM2eT4VDY3JvrATnA6eMqvk"
}
],
[
"112FKz5UNxjXqe3Wowe73a8FHnR5B4R9qi2pbMaXJczGNJsx",
"112FKz5UNxjXqe3Wowe73a8FHnR5B4R9qi2pbMaXJczGNJsx",
{
"aura": "13Th3imMymWAXD54sMyTYAVyuWsz2GSix5SMAyHKszdFtSxc"
}
],
[
"16FyxKfMF3LnX4CmDsv1PUDPNwqDYiR7rKurwuJxSGgnTsH2",
"16FyxKfMF3LnX4CmDsv1PUDPNwqDYiR7rKurwuJxSGgnTsH2",
{
"aura": "14ii4R1kDMf4X1nLVHN2nGEu85ptTiFbAAaFzMGu2wcrCAJ5"
}
],
[
"14EQvBy9h8xGbh2R3ustnkfkF514E7wpmHtg27gDaTLM2str",
"14EQvBy9h8xGbh2R3ustnkfkF514E7wpmHtg27gDaTLM2str",
{
"aura": "12sBnnQpA3pV98pakjbc23cVSmpYdYxCEEs83FSybwWpS4Ub"
}
],
[
"14sD2iYm1HsFPoHaT2GJNUMD2KJzvJNfVe9PBrG1KGyDBeHn",
"14sD2iYm1HsFPoHaT2GJNUMD2KJzvJNfVe9PBrG1KGyDBeHn",
{
"aura": "12uVrDhFxe6Lx8U1eZtmfjsyohjB5TwLszij2pu4uiH4NGbF"
}
],
[
"1bLdd7zvNvjGpseQ8BGbGJekCppb1X5Gb228c9MQfHfmmBr",
"1bLdd7zvNvjGpseQ8BGbGJekCppb1X5Gb228c9MQfHfmmBr",
{
"aura": "14QNHMVxTUFs4HfPZoZtLpZXR9cvPhEDGvUyNPusznKVpCzC"
}
]
]' |
jq '.genesis.runtimeGenesis.patch.polkadotXcm.safeXcmVersion = 3' \
> people-polkadot-genesis.json


## Convert to raw
$polkadot_parachain build-spec --raw --chain ./people-polkadot-genesis.json > people-polkadot.json

## Cleanup
rm -f rt-hex.txt
rm -f chain-spec-plain.json

echo "The genesis wasm and head data can now be generated using the script in polkadot-sdk on the nacho/people-chain-spec-with-migation branch. This will also modify the chainspec"
echo "See https://github.com/paritytech/polkadot-sdk/blob/0887f9ace688005ed78b21044b1b23bdab748c6d/cumulus/scripts/migrate_storage_to_genesis/README.md"
Loading