diff --git a/cumulus/scripts/create_people_kusama_spec.sh b/cumulus/scripts/create_people_kusama_spec.sh new file mode 100755 index 000000000000..99bb05a57b34 --- /dev/null +++ b/cumulus/scripts/create_people_kusama_spec.sh @@ -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" diff --git a/cumulus/scripts/create_people_polkadot_spec.sh b/cumulus/scripts/create_people_polkadot_spec.sh new file mode 100755 index 000000000000..e2283bc0b2ca --- /dev/null +++ b/cumulus/scripts/create_people_polkadot_spec.sh @@ -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" \ No newline at end of file