@@ -912,32 +912,40 @@ start-demo:
912912
913913 export ENV=custom
914914 export GENESIS_DIR=state-demo
915- export KEY_DIR=state-demo/ envs/ custom
916- export DATA_DIR=state-demo/ rundir
917- export STAKE_POOL_DIR=state-demo/ groups/ stake-pools
918915 export BULK_CREDS=state-demo/ bulk.creds.all.json
916+ export CC_DIR=state-demo/ envs/ custom/ cc-keys
917+ export DATA_DIR=state-demo/ rundir
918+ export KEY_DIR=state-demo/ envs/ custom
919919 export PAYMENT_KEY=state-demo/ envs/ custom/ utxo-keys/ rich-utxo
920+ export STAKE_POOL_DIR=state-demo/ groups/ stake-pools
920921 export CARDANO_NODE_SOCKET_PATH=" $STATEDIR/node-demo.socket"
921922 export START_TIME=$(date --utc + " %Y-%m-%dT%H:%M:%SZ" --date " now + 30 seconds" )
922923
923- [ -z " ${NUM_GENESIS_KEYS:-}" ] && export NUM_GENESIS_KEYS=3
924- [ -z " ${TESTNET_MAGIC:-}" ] && export TESTNET_MAGIC=42
925- [ -z " ${POOL_MARGIN:-}" ] && export POOL_MARGIN=" 0.5"
926- [ -z " ${POOL_NAMES:-}" ] && export POOL_NAMES=" sp-1 sp-2 sp-3"
927- [ -z " ${UNSTABLE:-}" ] && export UNSTABLE=true
928- [ -z " ${UNSTABLE_LIB:-}" ] && export UNSTABLE_LIB=true
929- [ -z " ${USE_ENCRYPTION:-}" ] && export USE_ENCRYPTION=true
930- [ -z " ${USE_DECRYPTION:-}" ] && export USE_DECRYPTION=true
931- [ -z " ${USE_NODE_CONFIG_BP:-}" ] && export USE_NODE_CONFIG_BP=false
932- [ -z " ${DEBUG:-}" ] && export DEBUG=true
933- [ -z " ${SECURITY_PARAM:-}" ] && export SECURITY_PARAM=8
934- [ -z " ${SLOT_LENGTH:-}" ] && export SLOT_LENGTH=1000
935- [ -z " ${FIXED_DELAY_SECS:-}" ] && export FIXED_DELAY_SECS=10
936-
937- if [ " ${USE_CREATE_TESTNET_DATA:-false}" = true ]; then
924+ export NUM_CC_KEYS=" ${NUM_CC_KEYS:-1}"
925+ export NUM_GENESIS_KEYS=" ${NUM_GENESIS_KEYS:-3}"
926+ export TESTNET_MAGIC=" ${TESTNET_MAGIC:-42}"
927+ export POOL_MARGIN=" ${POOL_MARGIN:-"0.5 " }"
928+ export POOL_NAMES=" ${POOL_NAMES:-" sp-1 sp-2 sp-3" }"
929+ export UNSTABLE=" ${UNSTABLE:-true}"
930+ export UNSTABLE_LIB=" ${UNSTABLE_LIB:-true}"
931+ export USE_CREATE_TESTNET_DATA=" ${USE_CREATE_TESTNET_DATA:-true}"
932+ export USE_ENCRYPTION=" ${USE_ENCRYPTION:-true}"
933+ export USE_DECRYPTION=" ${USE_DECRYPTION:-true}"
934+ export USE_NODE_CONFIG_BP=" ${USE_NODE_CONFIG_BP:-false}"
935+ export DEBUG=" ${DEBUG:-true}"
936+ export SECURITY_PARAM=" ${SECURITY_PARAM:-8}"
937+ export SLOT_LENGTH=" ${SLOT_LENGTH:-100}"
938+ export FIXED_DELAY_SECS=" ${FIXED_DELAY_SECS:-10}"
939+
940+ if [ " $USE_CREATE_TESTNET_DATA" = true ]; then
938941 ERA_CMD=" conway" \
939942 nix run .#job-gen-custom-node-config-data
940943 else
944+ for i in " $(seq 1 " $NUM_CC_KEYS" )" ; do
945+ INDEX=" $i" \
946+ nix run .#job-gen-keys-cc
947+ done
948+
941949 ERA_CMD=" alonzo" \
942950 nix run .#job-gen-custom-node-config
943951 fi
@@ -967,7 +975,7 @@ start-demo:
967975 sleep 30
968976 echo
969977
970- if [ " ${ USE_CREATE_TESTNET_DATA:-false} " = false ]; then
978+ if [ " $USE_CREATE_TESTNET_DATA" = false ]; then
971979 echo " Moving genesis utxo in epoch 0..."
972980 BYRON_SIGNING_KEY=" $KEY_DIR"/ utxo-keys/ shelley.000. skey \
973981 ERA_CMD=" alonzo" \
@@ -1009,7 +1017,7 @@ start-demo:
10091017 MAJOR_VERSION=7 \
10101018 ERA_CMD=" alonzo" \
10111019 nix run .#job-update-proposal-hard-fork
1012- echo " Sleeping until babbage"
1020+ echo " Sleeping until babbage, epoch 2 "
10131021 WAIT_FOR_TIP " era" " Babbage"
10141022 echo
10151023
@@ -1018,7 +1026,7 @@ start-demo:
10181026 MAJOR_VERSION=8 \
10191027 ERA_CMD=" babbage" \
10201028 nix run .#job-update-proposal-hard-fork
1021- echo " Sleeping until epoch 3"
1029+ echo " Sleeping until epoch babbage (intra-era), epoch 3"
10221030 WAIT_FOR_TIP " epoch" " 3"
10231031 echo
10241032
@@ -1027,13 +1035,87 @@ start-demo:
10271035 MAJOR_VERSION=9 \
10281036 ERA_CMD=" babbage" \
10291037 nix run .#job-update-proposal-hard-fork
1030- echo " Sleeping until epoch conway "
1038+ echo " Sleeping until conway, epoch 4 "
10311039 WAIT_FOR_TIP " era" " Conway"
10321040 echo
10331041
1042+ echo " Authorizing the CC member's hot credentials..."
1043+ INDEX=1 \
1044+ nix run .#job-register-cc
1045+ echo " Sleeping $FIXED_DELAY_SECS seconds until $(date -d @$(($(date +%s) + $FIXED_DELAY_SECS)))"
1046+ sleep " $FIXED_DELAY_SECS"
1047+ echo
1048+
1049+ # If both cost model and plomin HF are submitted in the same epoch and
1050+ # ratified in the same epoch, cost model may fail to enact.
1051+ echo " Submitting a Plomin prep cost model action..."
1052+ PROPOSAL_ARGS=(" --cost-model-file" " scripts/cost-models/mainnet-plutusv3-pv10-prep.json" )
1053+ ACTION=" create-protocol-parameters-update" \
1054+ STAKE_KEY=" $STAKE_POOL_DIR/no-deploy/sp-1-owner-stake" \
1055+ nix run .#job-submit-gov-action -- "${PROPOSAL_ARGS[@]}"
1056+ echo " Sleeping $FIXED_DELAY_SECS seconds until $(date -d @$(($(date +%s) + $FIXED_DELAY_SECS)))"
1057+ echo " Sleeping until cost model can be voted on, epoch 5"
1058+ WAIT_FOR_TIP " epoch" " 5"
1059+ echo
1060+
1061+ echo " Submitting a Plomin hard fork action..."
1062+ PROPOSAL_ARGS=(" --protocol-major-version" " 10" " --protocol-minor-version" " 0" )
1063+ ACTION=" create-hardfork" \
1064+ STAKE_KEY=" $STAKE_POOL_DIR/no-deploy/sp-1-owner-stake" \
1065+ nix run .#job-submit-gov-action -- "${PROPOSAL_ARGS[@]}"
1066+ echo " Sleeping $FIXED_DELAY_SECS seconds until $(date -d @$(($(date +%s) + $FIXED_DELAY_SECS)))"
1067+ sleep " $FIXED_DELAY_SECS"
1068+ echo
1069+
1070+ # Only the CC member needs to approve the cost model, but CC and SPOs need to approve the HF
1071+ echo " Submitting the CC vote for cost model..."
1072+ ACTION_TX_ID=$(
1073+ cardano-cli latest query proposals --testnet-magic " $TESTNET_MAGIC" --all-proposals \
1074+ | jq -r ' map(select(.proposalProcedure.govAction.tag == "ParameterChange")) | .[0].actionId.txId'
1075+ ) \
1076+ DECISION=yes \
1077+ ROLE=cc \
1078+ VOTE_KEY=" $CC_DIR/cc-1-hot" \
1079+ nix run .#job-submit-vote
1080+ echo " Sleeping until plomin HF can be voted on, epoch 6"
1081+ WAIT_FOR_TIP " epoch" " 6"
1082+ echo
1083+
1084+ echo " Submitting the CC vote for the Plomin hard fork..."
1085+ export ACTION_TX_ID=$(
1086+ cardano-cli latest query proposals --testnet-magic " $TESTNET_MAGIC" --all-proposals \
1087+ | jq -r ' map(select(.proposalProcedure.govAction.tag == "HardForkInitiation")) | .[0].actionId.txId'
1088+ )
1089+ DECISION=yes \
1090+ ROLE=cc \
1091+ VOTE_KEY=" $CC_DIR/cc-1-hot \
1092+ nix run .#job-submit-vote
1093+ echo " Sleeping $FIXED_DELAY_SECS seconds until $(date -d @$(($(date + %s) + $FIXED_DELAY_SECS)))"
1094+ sleep " $FIXED_DELAY_SECS"
1095+ echo
1096+
1097+ POOL_NAME_ARR=($POOL_NAMES)
1098+ for i in $(seq 1 " ${#POOL_NAME_ARR[@]}"); do
1099+ echo " Submitting the pool $i vote for the Plomin hard fork..."
1100+ DECISION=yes \
1101+ ROLE=spo \
1102+ VOTE_KEY=" $STAKE_POOL_DIR/no-deploy/sp-${i}-cold" \
1103+ nix run .#job-submit-vote
1104+ echo " Sleeping $FIXED_DELAY_SECS seconds until $(date -d @$(($(date +%s) + $FIXED_DELAY_SECS)))"
1105+ sleep " $FIXED_DELAY_SECS"
1106+ done
1107+ echo " Sleeping until epoch 7 for the plomin HF votes to register..."
1108+ WAIT_FOR_TIP " epoch" " 7"
1109+ echo
1110+
1111+ echo " Sleeping until epoch 8 for the Plomin HF action to ratify..."
1112+ WAIT_FOR_TIP " epoch" " 8"
1113+ echo
1114+
10341115 just query-tip demo " $TESTNET_MAGIC"
10351116 echo
10361117 echo " Finished sequence..."
1118+ echo " Note that any further gov actions will require a constitution to be adopted."
10371119 echo
10381120
10391121# Start a fork to conway demo using create-testnet-data-ng job
0 commit comments