|
1 | 1 | #!/bin/bash
|
2 | 2 |
|
| 3 | +# The genesis is not allowed to change. Since the wasm genesis will change |
| 4 | +# depending on the system architecture used, we need to extract the genesis from |
| 5 | +# the old chain specs and insert them into the new chain specs to ensure there |
| 6 | +# are no genesis mismatch issues. |
| 7 | + |
| 8 | +# This script updates the chain spec files keeping the genesis unchanged. |
| 9 | + |
3 | 10 | set -e
|
4 | 11 |
|
5 |
| -echo "*** Building node..." |
6 |
| -cargo build -p node-subtensor |
| 12 | +raw_finney="chainspecs/raw_spec_finney.json" |
| 13 | +plain_finney="chainspecs/plain_spec_finney.json" |
| 14 | +raw_testfinney="chainspecs/raw_spec_testfinney.json" |
| 15 | +plain_testfinney="chainspecs/plain_spec_testfinney.json" |
| 16 | +raw_devnet="chainspecs/raw_spec_devnet.json" |
| 17 | +plain_devnet="chainspecs/plain_spec_devnet.json" |
| 18 | + |
| 19 | +save_genesis() { |
| 20 | + jq -r ".genesis" "$1" >"$2" |
| 21 | +} |
| 22 | + |
| 23 | +buildspec() { |
| 24 | + local chain="$1" |
| 25 | + shift |
| 26 | + ./target/debug/node-subtensor build-spec --chain "$chain" --disable-default-bootnode "$@" |
| 27 | +} |
7 | 28 |
|
8 |
| -echo "*** Building new chainspecs..." |
| 29 | +# Update genesis in new chainspecs using the extracted genesis data from the |
| 30 | +# temporary files |
| 31 | +update_genesis() { |
| 32 | + jq --slurpfile genesis "$1" '.genesis = $genesis[0]' "$2" >"$3" |
| 33 | +} |
9 | 34 |
|
10 |
| -finney_genesis_temp=$(mktemp) |
11 |
| -testfinney_genesis_temp=$(mktemp) |
12 |
| -raw_spec_finney_temp=$(mktemp) |
13 |
| -raw_spec_testfinney_temp=$(mktemp) |
| 35 | +update_spec() { |
| 36 | + local chain="$1" |
| 37 | + local raw_path="$2" |
| 38 | + local plain_path="$3" |
14 | 39 |
|
15 |
| -# Save old genesis state before doing anything |
16 |
| -jq -r ".genesis" raw_spec_finney.json >"$finney_genesis_temp" |
17 |
| -jq -r ".genesis" raw_spec_testfinney.json >"$testfinney_genesis_temp" |
| 40 | + raw_genesis_temp=$(mktemp) |
| 41 | + plain_genesis_temp=$(mktemp) |
| 42 | + raw_spec_temp=$(mktemp) |
| 43 | + plain_spec_temp=$(mktemp) |
18 | 44 |
|
19 |
| -# Build new chainspecs |
20 |
| -./target/debug/node-subtensor build-spec --raw --chain finney >"$raw_spec_finney_temp" |
21 |
| -./target/debug/node-subtensor build-spec --chain finney >plain_spec_finney.json |
| 45 | + echo "*** Backing up genesis for '$chain'..." |
22 | 46 |
|
23 |
| -./target/debug/node-subtensor build-spec --raw --chain test_finney >"$raw_spec_testfinney_temp" |
24 |
| -./target/debug/node-subtensor build-spec --chain test_finney >plain_spec_testfinney.json |
| 47 | + save_genesis "$raw_path" "$raw_genesis_temp" |
| 48 | + save_genesis "$plain_path" "$plain_genesis_temp" |
25 | 49 |
|
26 |
| -echo "*** Updating genesis..." |
| 50 | + echo "*** Building new chainspec for '$chain'..." |
27 | 51 |
|
28 |
| -# The genesis is not allowed to change. Since the wasm genesis will change depending on the system |
29 |
| -# architecture used, we need to extract the genesis from the old chain specs and insert them into |
30 |
| -# the new chain specs to ensure there are no genesis mismatch issues. |
| 52 | + # Build new chainspecs |
| 53 | + buildspec "$chain" >"$plain_spec_temp" |
| 54 | + buildspec "$chain" --raw >"$raw_spec_temp" |
31 | 55 |
|
32 |
| -# Update genesis in new chainspecs using the extracted genesis data from the temporary files |
33 |
| -jq --slurpfile genesis "$finney_genesis_temp" '.genesis = $genesis[0]' "$raw_spec_finney_temp" >raw_spec_finney.json |
34 |
| -jq --slurpfile genesis "$testfinney_genesis_temp" '.genesis = $genesis[0]' "$raw_spec_testfinney_temp" >raw_spec_testfinney.json |
| 56 | + echo "*** Restoring genesis in '$chain'..." |
| 57 | + |
| 58 | + update_genesis "$raw_genesis_temp" "$raw_spec_temp" "$raw_path" |
| 59 | + update_genesis "$plain_genesis_temp" "$plain_spec_temp" "$plain_path" |
| 60 | + |
| 61 | + # cleanup |
| 62 | + rm -f "$raw_genesis_temp" "$plain_genesis_temp" "$raw_spec_temp" \ |
| 63 | + "$plain_spec_temp" |
| 64 | +} |
| 65 | + |
| 66 | +# SCRIPT |
| 67 | + |
| 68 | +echo "*** Building node..." |
| 69 | +cargo build -p node-subtensor |
35 | 70 |
|
36 |
| -# Cleanup |
37 |
| -rm -f "$finney_genesis_temp" "$testfinney_genesis_temp" "$raw_spec_finney_temp" "$raw_spec_testfinney_temp" |
| 71 | +update_spec finney "$raw_finney" "$plain_finney" |
| 72 | +update_spec test_finney "$raw_testfinney" "$plain_testfinney" |
| 73 | +update_spec devnet "$raw_devnet" "$plain_devnet" |
38 | 74 |
|
39 | 75 | echo "*** Done!"
|
0 commit comments