From 4ea89bb36998238cc5315b9f31c07d9d0ab798df Mon Sep 17 00:00:00 2001 From: Agustin Mista Date: Wed, 17 Sep 2025 20:20:15 +0200 Subject: [PATCH 1/7] Add initial scripts to setup and launch demo testnet This PR provides two bash scripts: * `setup.sh`, to build: + A patched version of `cardano-node` from `cardano-node@peras/10.5` with Peras-specific changes being brought in from multiple places, including: * `cardano-base@5c18017546dc1032e76a985c45fe7c3df2a76616` * `ouroboros-network@peras/10.5` * `ouroboros-consensus@peras/10.5` + `#1684` cherry-picked on top + `cardano-cli` and `cardano-testnet` from `cardano-node@master` * `launch.sh`, to start a new local testnet via `cardano-testnet` --- scripts/demo/launch.sh | 14 +++++++ scripts/demo/setup.sh | 92 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100755 scripts/demo/launch.sh create mode 100755 scripts/demo/setup.sh diff --git a/scripts/demo/launch.sh b/scripts/demo/launch.sh new file mode 100755 index 0000000..b6764b3 --- /dev/null +++ b/scripts/demo/launch.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +set -e + +CARDANO_CLI=$(realpath bin/cardano-cli) +CARDANO_NODE=$(realpath bin/cardano-node) +CARDANO_TESTNET=$(realpath bin/cardano-testnet) + +export CARDANO_CLI +export CARDANO_NODE +export ENABLE_PERAS=1 +export PERAS_CERT_CONJURING=1 + +$CARDANO_TESTNET cardano diff --git a/scripts/demo/setup.sh b/scripts/demo/setup.sh new file mode 100755 index 0000000..f25284f --- /dev/null +++ b/scripts/demo/setup.sh @@ -0,0 +1,92 @@ +#!/usr/bin/env bash + +set -e +set -x + +mkdir -p bin src + +# Clone needed repositories +if [[ ! -d src/cardano-base ]]; then + git clone https://github.com/IntersectMBO/cardano-base src/cardano-base +fi + +if [[ ! -d src/ouroboros-network ]]; then + git clone https://github.com/IntersectMBO/ouroboros-network src/ouroboros-network +fi + +if [[ ! -d src/ouroboros-consensus ]]; then + git clone https://github.com/IntersectMBO/ouroboros-consensus src/ouroboros-consensus +fi + +if [[ ! -d src/cardano-node ]]; then + git clone https://github.com/IntersectMBO/cardano-node src/cardano-node +fi + +# Checkout specific commits/branches +git -C src/cardano-base checkout 5c18017546dc1032e76a985c45fe7c3df2a76616 +git -C src/ouroboros-network checkout peras/10.5 +git -C src/ouroboros-consensus checkout peras/10.5 + +# Cherry-pick the changes from #1684 into ouroboros-consensus/peras/10.5 +pushd src/ouroboros-consensus + +PR=1684 +BASE_BRANCH=peras-staging +git fetch origin "$BASE_BRANCH" pull/"$PR"/head:pr-"$PR" +mapfile -t PR_COMMITS < <(git log --format="%H" --reverse origin/"$BASE_BRANCH"..pr-"$PR") + +git reset --hard origin/peras/10.5 # for idempotency +git -c user.name="none" -c user.email="none" cherry-pick "${PR_COMMITS[@]}" + +popd + +# Build the needed binaries inside cardano-node +pushd src/cardano-node + +# cardano-cli @master +if [[ ! -f ../../bin/cardano-cli ]] || [[ -n "$REBUILD_CARDANO_CLI" ]]; then + git checkout master + nix develop -c cabal clean + nix develop -c cabal build cardano-cli + cp "$(nix develop -c cabal list-bin cardano-cli)" ../../bin/cardano-cli +fi + +# cardano-testnet @master +if [[ ! -f ../../bin/cardano-testnet ]] || [[ -n "$REBUILD_CARDANO_TESTNET" ]]; then + git checkout master + nix develop -c cabal clean + nix develop -c cabal build cardano-testnet + cp "$(nix develop -c cabal list-bin cardano-testnet)" ../../bin/cardano-testnet +fi + +# cardano-node @peras/10.5 +if [[ ! -f ../../bin/cardano-node ]] || [[ -n "$REBUILD_CARDANO_NODE" ]]; then + git checkout peras/10.5 + cat > cabal.project.local < Date: Thu, 18 Sep 2025 13:29:53 +0200 Subject: [PATCH 2/7] Separate config creation from runtime, and export static filesx --- scripts/demo/launch.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/scripts/demo/launch.sh b/scripts/demo/launch.sh index b6764b3..745c90b 100755 --- a/scripts/demo/launch.sh +++ b/scripts/demo/launch.sh @@ -5,10 +5,19 @@ set -e CARDANO_CLI=$(realpath bin/cardano-cli) CARDANO_NODE=$(realpath bin/cardano-node) CARDANO_TESTNET=$(realpath bin/cardano-testnet) +STATIC_FILES=$(realpath src/ouroboros-consensus/static) export CARDANO_CLI export CARDANO_NODE export ENABLE_PERAS=1 export PERAS_CERT_CONJURING=1 +export PERAS_CERT_CONJURING_STATIC_FILES="$STATIC_FILES" -$CARDANO_TESTNET cardano +OUTPUT_DIR=testnet + +rm -rf "$OUTPUT_DIR" +$CARDANO_TESTNET create-env --output "$OUTPUT_DIR" + +# Modify the configuration files in $OUTPUT_DIR + +$CARDANO_TESTNET cardano --node-env "$OUTPUT_DIR" From b3961a6e4a342d241a55499f74a331c60656caaf Mon Sep 17 00:00:00 2001 From: Agustin Mista Date: Thu, 18 Sep 2025 16:24:38 +0200 Subject: [PATCH 3/7] Use ouroboros-consensus@peras/10.5-with-cert-conjuring in setup script --- .gitignore | 5 +++++ scripts/demo/setup.sh | 15 +-------------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index b741472..3bbe750 100644 --- a/.gitignore +++ b/.gitignore @@ -311,3 +311,8 @@ TSWLatexianTemp* # glossaries *.glstex + +# demo files +scripts/demo/src/ +scripts/demo/bin/ +scripts/demo/testnet/ diff --git a/scripts/demo/setup.sh b/scripts/demo/setup.sh index f25284f..62e91de 100755 --- a/scripts/demo/setup.sh +++ b/scripts/demo/setup.sh @@ -25,20 +25,7 @@ fi # Checkout specific commits/branches git -C src/cardano-base checkout 5c18017546dc1032e76a985c45fe7c3df2a76616 git -C src/ouroboros-network checkout peras/10.5 -git -C src/ouroboros-consensus checkout peras/10.5 - -# Cherry-pick the changes from #1684 into ouroboros-consensus/peras/10.5 -pushd src/ouroboros-consensus - -PR=1684 -BASE_BRANCH=peras-staging -git fetch origin "$BASE_BRANCH" pull/"$PR"/head:pr-"$PR" -mapfile -t PR_COMMITS < <(git log --format="%H" --reverse origin/"$BASE_BRANCH"..pr-"$PR") - -git reset --hard origin/peras/10.5 # for idempotency -git -c user.name="none" -c user.email="none" cherry-pick "${PR_COMMITS[@]}" - -popd +git -C src/ouroboros-consensus checkout peras/10.5-with-cert-conjuring # Build the needed binaries inside cardano-node pushd src/cardano-node From 42ed5f2e1f087c3f0ba4ff7049bf4044c5909f59 Mon Sep 17 00:00:00 2001 From: Agustin Mista Date: Thu, 18 Sep 2025 16:25:18 +0200 Subject: [PATCH 4/7] Add oneliner to launch node1's web UI --- scripts/demo/open_webui.sh | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100755 scripts/demo/open_webui.sh diff --git a/scripts/demo/open_webui.sh b/scripts/demo/open_webui.sh new file mode 100755 index 0000000..b01c0fa --- /dev/null +++ b/scripts/demo/open_webui.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +NODE=node1 + +grep -Po "(?<=Serving files at: )(.*)" "testnet/logs/$NODE/stdout.log" | \ + xargs xdg-open From 43b1e4094ed2a0190200c43f973e62a2b134f232 Mon Sep 17 00:00:00 2001 From: Agustin Mista Date: Tue, 23 Sep 2025 14:02:19 +0200 Subject: [PATCH 5/7] Use a static testnet environment --- scripts/demo/create_env.sh | 18 + scripts/demo/env/alonzo-genesis.json | 375 ++++++++++++++++++ .../byron-gen-command/genesis-keys.000.key | 2 + .../byron-gen-command/genesis-keys.001.key | 1 + .../byron-gen-command/genesis-keys.002.key | Bin 0 -> 130 bytes scripts/demo/env/byron-genesis.json | 67 ++++ scripts/demo/env/configuration.yaml | 98 +++++ scripts/demo/env/conway-genesis.json | 368 +++++++++++++++++ scripts/demo/env/delegate-keys/README.md | 2 + .../demo/env/delegate-keys/delegate1/kes.skey | 5 + .../demo/env/delegate-keys/delegate1/kes.vkey | 5 + .../demo/env/delegate-keys/delegate1/key.skey | 5 + .../demo/env/delegate-keys/delegate1/key.vkey | 5 + .../env/delegate-keys/delegate1/opcert.cert | 5 + .../delegate-keys/delegate1/opcert.counter | 5 + .../demo/env/delegate-keys/delegate1/vrf.skey | 5 + .../demo/env/delegate-keys/delegate1/vrf.vkey | 5 + .../demo/env/delegate-keys/delegate2/kes.skey | 5 + .../demo/env/delegate-keys/delegate2/kes.vkey | 5 + .../demo/env/delegate-keys/delegate2/key.skey | 5 + .../demo/env/delegate-keys/delegate2/key.vkey | 5 + .../env/delegate-keys/delegate2/opcert.cert | 5 + .../delegate-keys/delegate2/opcert.counter | 5 + .../demo/env/delegate-keys/delegate2/vrf.skey | 5 + .../demo/env/delegate-keys/delegate2/vrf.vkey | 5 + .../demo/env/delegate-keys/delegate3/kes.skey | 5 + .../demo/env/delegate-keys/delegate3/kes.vkey | 5 + .../demo/env/delegate-keys/delegate3/key.skey | 5 + .../demo/env/delegate-keys/delegate3/key.vkey | 5 + .../env/delegate-keys/delegate3/opcert.cert | 5 + .../delegate-keys/delegate3/opcert.counter | 5 + .../demo/env/delegate-keys/delegate3/vrf.skey | 5 + .../demo/env/delegate-keys/delegate3/vrf.vkey | 5 + scripts/demo/env/drep-keys/README.md | 4 + scripts/demo/env/drep-keys/drep1/drep.skey | 5 + scripts/demo/env/drep-keys/drep1/drep.vkey | 5 + scripts/demo/env/drep-keys/drep2/drep.skey | 5 + scripts/demo/env/drep-keys/drep2/drep.vkey | 5 + scripts/demo/env/drep-keys/drep3/drep.skey | 5 + scripts/demo/env/drep-keys/drep3/drep.vkey | 5 + scripts/demo/env/genesis-keys/README.md | 4 + .../demo/env/genesis-keys/genesis1/key.skey | 5 + .../demo/env/genesis-keys/genesis1/key.vkey | 5 + .../demo/env/genesis-keys/genesis2/key.skey | 5 + .../demo/env/genesis-keys/genesis2/key.vkey | 5 + .../demo/env/genesis-keys/genesis3/key.skey | 5 + .../demo/env/genesis-keys/genesis3/key.vkey | 5 + .../demo/env/node-data/node1/topology.json | 6 + .../demo/env/node-data/node2/topology.json | 6 + .../demo/env/node-data/node3/topology.json | 6 + scripts/demo/env/pools-keys/README.md | 1 + .../env/pools-keys/pool1/byron-delegate.key | Bin 0 -> 130 bytes .../pools-keys/pool1/byron-delegation.cert | 8 + scripts/demo/env/pools-keys/pool1/cold.skey | 5 + scripts/demo/env/pools-keys/pool1/cold.vkey | 5 + scripts/demo/env/pools-keys/pool1/kes.skey | 5 + scripts/demo/env/pools-keys/pool1/kes.vkey | 5 + scripts/demo/env/pools-keys/pool1/opcert.cert | 5 + .../demo/env/pools-keys/pool1/opcert.counter | 5 + .../env/pools-keys/pool1/staking-reward.skey | 5 + .../env/pools-keys/pool1/staking-reward.vkey | 5 + scripts/demo/env/pools-keys/pool1/vrf.skey | 5 + scripts/demo/env/pools-keys/pool1/vrf.vkey | 5 + .../env/pools-keys/pool2/byron-delegate.key | Bin 0 -> 130 bytes .../pools-keys/pool2/byron-delegation.cert | 8 + scripts/demo/env/pools-keys/pool2/cold.skey | 5 + scripts/demo/env/pools-keys/pool2/cold.vkey | 5 + scripts/demo/env/pools-keys/pool2/kes.skey | 5 + scripts/demo/env/pools-keys/pool2/kes.vkey | 5 + scripts/demo/env/pools-keys/pool2/opcert.cert | 5 + .../demo/env/pools-keys/pool2/opcert.counter | 5 + .../env/pools-keys/pool2/staking-reward.skey | 5 + .../env/pools-keys/pool2/staking-reward.vkey | 5 + scripts/demo/env/pools-keys/pool2/vrf.skey | 5 + scripts/demo/env/pools-keys/pool2/vrf.vkey | 5 + .../env/pools-keys/pool3/byron-delegate.key | 1 + .../pools-keys/pool3/byron-delegation.cert | 8 + scripts/demo/env/pools-keys/pool3/cold.skey | 5 + scripts/demo/env/pools-keys/pool3/cold.vkey | 5 + scripts/demo/env/pools-keys/pool3/kes.skey | 5 + scripts/demo/env/pools-keys/pool3/kes.vkey | 5 + scripts/demo/env/pools-keys/pool3/opcert.cert | 5 + .../demo/env/pools-keys/pool3/opcert.counter | 5 + .../env/pools-keys/pool3/staking-reward.skey | 5 + .../env/pools-keys/pool3/staking-reward.vkey | 5 + scripts/demo/env/pools-keys/pool3/vrf.skey | 5 + scripts/demo/env/pools-keys/pool3/vrf.vkey | 5 + scripts/demo/env/shelley-genesis.json | 116 ++++++ .../stake-delegators/delegator1/payment.skey | 5 + .../stake-delegators/delegator1/payment.vkey | 5 + .../stake-delegators/delegator1/staking.skey | 5 + .../stake-delegators/delegator1/staking.vkey | 5 + .../stake-delegators/delegator2/payment.skey | 5 + .../stake-delegators/delegator2/payment.vkey | 5 + .../stake-delegators/delegator2/staking.skey | 5 + .../stake-delegators/delegator2/staking.vkey | 5 + .../stake-delegators/delegator3/payment.skey | 5 + .../stake-delegators/delegator3/payment.vkey | 5 + .../stake-delegators/delegator3/staking.skey | 5 + .../stake-delegators/delegator3/staking.vkey | 5 + scripts/demo/env/utxo-keys/README.md | 1 + scripts/demo/env/utxo-keys/utxo1/utxo.skey | 5 + scripts/demo/env/utxo-keys/utxo1/utxo.vkey | 5 + scripts/demo/env/utxo-keys/utxo2/utxo.skey | 5 + scripts/demo/env/utxo-keys/utxo2/utxo.vkey | 5 + scripts/demo/env/utxo-keys/utxo3/utxo.skey | 5 + scripts/demo/env/utxo-keys/utxo3/utxo.vkey | 5 + scripts/demo/launch.sh | 58 ++- scripts/demo/open_webui.sh | 6 - 109 files changed, 1572 insertions(+), 12 deletions(-) create mode 100755 scripts/demo/create_env.sh create mode 100644 scripts/demo/env/alonzo-genesis.json create mode 100644 scripts/demo/env/byron-gen-command/genesis-keys.000.key create mode 100644 scripts/demo/env/byron-gen-command/genesis-keys.001.key create mode 100644 scripts/demo/env/byron-gen-command/genesis-keys.002.key create mode 100644 scripts/demo/env/byron-genesis.json create mode 100644 scripts/demo/env/configuration.yaml create mode 100644 scripts/demo/env/conway-genesis.json create mode 100644 scripts/demo/env/delegate-keys/README.md create mode 100755 scripts/demo/env/delegate-keys/delegate1/kes.skey create mode 100644 scripts/demo/env/delegate-keys/delegate1/kes.vkey create mode 100644 scripts/demo/env/delegate-keys/delegate1/key.skey create mode 100644 scripts/demo/env/delegate-keys/delegate1/key.vkey create mode 100644 scripts/demo/env/delegate-keys/delegate1/opcert.cert create mode 100644 scripts/demo/env/delegate-keys/delegate1/opcert.counter create mode 100644 scripts/demo/env/delegate-keys/delegate1/vrf.skey create mode 100644 scripts/demo/env/delegate-keys/delegate1/vrf.vkey create mode 100755 scripts/demo/env/delegate-keys/delegate2/kes.skey create mode 100644 scripts/demo/env/delegate-keys/delegate2/kes.vkey create mode 100644 scripts/demo/env/delegate-keys/delegate2/key.skey create mode 100644 scripts/demo/env/delegate-keys/delegate2/key.vkey create mode 100644 scripts/demo/env/delegate-keys/delegate2/opcert.cert create mode 100644 scripts/demo/env/delegate-keys/delegate2/opcert.counter create mode 100644 scripts/demo/env/delegate-keys/delegate2/vrf.skey create mode 100644 scripts/demo/env/delegate-keys/delegate2/vrf.vkey create mode 100755 scripts/demo/env/delegate-keys/delegate3/kes.skey create mode 100644 scripts/demo/env/delegate-keys/delegate3/kes.vkey create mode 100644 scripts/demo/env/delegate-keys/delegate3/key.skey create mode 100644 scripts/demo/env/delegate-keys/delegate3/key.vkey create mode 100644 scripts/demo/env/delegate-keys/delegate3/opcert.cert create mode 100644 scripts/demo/env/delegate-keys/delegate3/opcert.counter create mode 100644 scripts/demo/env/delegate-keys/delegate3/vrf.skey create mode 100644 scripts/demo/env/delegate-keys/delegate3/vrf.vkey create mode 100644 scripts/demo/env/drep-keys/README.md create mode 100644 scripts/demo/env/drep-keys/drep1/drep.skey create mode 100644 scripts/demo/env/drep-keys/drep1/drep.vkey create mode 100644 scripts/demo/env/drep-keys/drep2/drep.skey create mode 100644 scripts/demo/env/drep-keys/drep2/drep.vkey create mode 100644 scripts/demo/env/drep-keys/drep3/drep.skey create mode 100644 scripts/demo/env/drep-keys/drep3/drep.vkey create mode 100644 scripts/demo/env/genesis-keys/README.md create mode 100644 scripts/demo/env/genesis-keys/genesis1/key.skey create mode 100644 scripts/demo/env/genesis-keys/genesis1/key.vkey create mode 100644 scripts/demo/env/genesis-keys/genesis2/key.skey create mode 100644 scripts/demo/env/genesis-keys/genesis2/key.vkey create mode 100644 scripts/demo/env/genesis-keys/genesis3/key.skey create mode 100644 scripts/demo/env/genesis-keys/genesis3/key.vkey create mode 100644 scripts/demo/env/node-data/node1/topology.json create mode 100644 scripts/demo/env/node-data/node2/topology.json create mode 100644 scripts/demo/env/node-data/node3/topology.json create mode 100644 scripts/demo/env/pools-keys/README.md create mode 100644 scripts/demo/env/pools-keys/pool1/byron-delegate.key create mode 100644 scripts/demo/env/pools-keys/pool1/byron-delegation.cert create mode 100644 scripts/demo/env/pools-keys/pool1/cold.skey create mode 100644 scripts/demo/env/pools-keys/pool1/cold.vkey create mode 100755 scripts/demo/env/pools-keys/pool1/kes.skey create mode 100644 scripts/demo/env/pools-keys/pool1/kes.vkey create mode 100644 scripts/demo/env/pools-keys/pool1/opcert.cert create mode 100644 scripts/demo/env/pools-keys/pool1/opcert.counter create mode 100644 scripts/demo/env/pools-keys/pool1/staking-reward.skey create mode 100644 scripts/demo/env/pools-keys/pool1/staking-reward.vkey create mode 100755 scripts/demo/env/pools-keys/pool1/vrf.skey create mode 100644 scripts/demo/env/pools-keys/pool1/vrf.vkey create mode 100644 scripts/demo/env/pools-keys/pool2/byron-delegate.key create mode 100644 scripts/demo/env/pools-keys/pool2/byron-delegation.cert create mode 100644 scripts/demo/env/pools-keys/pool2/cold.skey create mode 100644 scripts/demo/env/pools-keys/pool2/cold.vkey create mode 100755 scripts/demo/env/pools-keys/pool2/kes.skey create mode 100644 scripts/demo/env/pools-keys/pool2/kes.vkey create mode 100644 scripts/demo/env/pools-keys/pool2/opcert.cert create mode 100644 scripts/demo/env/pools-keys/pool2/opcert.counter create mode 100644 scripts/demo/env/pools-keys/pool2/staking-reward.skey create mode 100644 scripts/demo/env/pools-keys/pool2/staking-reward.vkey create mode 100755 scripts/demo/env/pools-keys/pool2/vrf.skey create mode 100644 scripts/demo/env/pools-keys/pool2/vrf.vkey create mode 100644 scripts/demo/env/pools-keys/pool3/byron-delegate.key create mode 100644 scripts/demo/env/pools-keys/pool3/byron-delegation.cert create mode 100644 scripts/demo/env/pools-keys/pool3/cold.skey create mode 100644 scripts/demo/env/pools-keys/pool3/cold.vkey create mode 100755 scripts/demo/env/pools-keys/pool3/kes.skey create mode 100644 scripts/demo/env/pools-keys/pool3/kes.vkey create mode 100644 scripts/demo/env/pools-keys/pool3/opcert.cert create mode 100644 scripts/demo/env/pools-keys/pool3/opcert.counter create mode 100644 scripts/demo/env/pools-keys/pool3/staking-reward.skey create mode 100644 scripts/demo/env/pools-keys/pool3/staking-reward.vkey create mode 100755 scripts/demo/env/pools-keys/pool3/vrf.skey create mode 100644 scripts/demo/env/pools-keys/pool3/vrf.vkey create mode 100644 scripts/demo/env/shelley-genesis.json create mode 100644 scripts/demo/env/stake-delegators/delegator1/payment.skey create mode 100644 scripts/demo/env/stake-delegators/delegator1/payment.vkey create mode 100644 scripts/demo/env/stake-delegators/delegator1/staking.skey create mode 100644 scripts/demo/env/stake-delegators/delegator1/staking.vkey create mode 100644 scripts/demo/env/stake-delegators/delegator2/payment.skey create mode 100644 scripts/demo/env/stake-delegators/delegator2/payment.vkey create mode 100644 scripts/demo/env/stake-delegators/delegator2/staking.skey create mode 100644 scripts/demo/env/stake-delegators/delegator2/staking.vkey create mode 100644 scripts/demo/env/stake-delegators/delegator3/payment.skey create mode 100644 scripts/demo/env/stake-delegators/delegator3/payment.vkey create mode 100644 scripts/demo/env/stake-delegators/delegator3/staking.skey create mode 100644 scripts/demo/env/stake-delegators/delegator3/staking.vkey create mode 100644 scripts/demo/env/utxo-keys/README.md create mode 100644 scripts/demo/env/utxo-keys/utxo1/utxo.skey create mode 100644 scripts/demo/env/utxo-keys/utxo1/utxo.vkey create mode 100644 scripts/demo/env/utxo-keys/utxo2/utxo.skey create mode 100644 scripts/demo/env/utxo-keys/utxo2/utxo.vkey create mode 100644 scripts/demo/env/utxo-keys/utxo3/utxo.skey create mode 100644 scripts/demo/env/utxo-keys/utxo3/utxo.vkey delete mode 100755 scripts/demo/open_webui.sh diff --git a/scripts/demo/create_env.sh b/scripts/demo/create_env.sh new file mode 100755 index 0000000..eb72445 --- /dev/null +++ b/scripts/demo/create_env.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +set -e + +CARDANO_CLI=$(realpath bin/cardano-cli) +CARDANO_NODE=$(realpath bin/cardano-node) +CARDANO_TESTNET=$(realpath bin/cardano-testnet) +STATIC_ENV=$(realpath env) +NUM_POOL_NODES=3 + +export CARDANO_CLI +export CARDANO_NODE + +rm -rf "$STATIC_ENV" +$CARDANO_TESTNET \ + create-env \ + --output "$STATIC_ENV" \ + --num-pool-nodes="$NUM_POOL_NODES" diff --git a/scripts/demo/env/alonzo-genesis.json b/scripts/demo/env/alonzo-genesis.json new file mode 100644 index 0000000..0a6d69f --- /dev/null +++ b/scripts/demo/env/alonzo-genesis.json @@ -0,0 +1,375 @@ +{ + "collateralPercentage": 150, + "costModels": { + "PlutusV1": [ + 205665, + 812, + 1, + 1, + 1000, + 571, + 0, + 1, + 1000, + 24177, + 4, + 1, + 1000, + 32, + 117366, + 10475, + 4, + 23000, + 100, + 23000, + 100, + 23000, + 100, + 23000, + 100, + 23000, + 100, + 23000, + 100, + 100, + 100, + 23000, + 100, + 19537, + 32, + 175354, + 32, + 46417, + 4, + 221973, + 511, + 0, + 1, + 89141, + 32, + 497525, + 14068, + 4, + 2, + 196500, + 453240, + 220, + 0, + 1, + 1, + 1000, + 28662, + 4, + 2, + 245000, + 216773, + 62, + 1, + 1060367, + 12586, + 1, + 208512, + 421, + 1, + 187000, + 1000, + 52998, + 1, + 80436, + 32, + 43249, + 32, + 1000, + 32, + 80556, + 1, + 57667, + 4, + 1000, + 10, + 197145, + 156, + 1, + 197145, + 156, + 1, + 204924, + 473, + 1, + 208896, + 511, + 1, + 52467, + 32, + 64832, + 32, + 65493, + 32, + 22558, + 32, + 16563, + 32, + 76511, + 32, + 196500, + 453240, + 220, + 0, + 1, + 1, + 69522, + 11687, + 0, + 1, + 60091, + 32, + 196500, + 453240, + 220, + 0, + 1, + 1, + 196500, + 453240, + 220, + 0, + 1, + 1, + 806990, + 30482, + 4, + 1927926, + 82523, + 4, + 265318, + 0, + 4, + 0, + 85931, + 32, + 205665, + 812, + 1, + 1, + 41182, + 32, + 212342, + 32, + 31220, + 32, + 32696, + 32, + 43357, + 32, + 32247, + 32, + 38314, + 32, + 57996947, + 18975, + 10 + ], + "PlutusV2": [ + 205665, + 812, + 1, + 1, + 1000, + 571, + 0, + 1, + 1000, + 24177, + 4, + 1, + 1000, + 32, + 117366, + 10475, + 4, + 23000, + 100, + 23000, + 100, + 23000, + 100, + 23000, + 100, + 23000, + 100, + 23000, + 100, + 100, + 100, + 23000, + 100, + 19537, + 32, + 175354, + 32, + 46417, + 4, + 221973, + 511, + 0, + 1, + 89141, + 32, + 497525, + 14068, + 4, + 2, + 196500, + 453240, + 220, + 0, + 1, + 1, + 1000, + 28662, + 4, + 2, + 245000, + 216773, + 62, + 1, + 1060367, + 12586, + 1, + 208512, + 421, + 1, + 187000, + 1000, + 52998, + 1, + 80436, + 32, + 43249, + 32, + 1000, + 32, + 80556, + 1, + 57667, + 4, + 1000, + 10, + 197145, + 156, + 1, + 197145, + 156, + 1, + 204924, + 473, + 1, + 208896, + 511, + 1, + 52467, + 32, + 64832, + 32, + 65493, + 32, + 22558, + 32, + 16563, + 32, + 76511, + 32, + 196500, + 453240, + 220, + 0, + 1, + 1, + 69522, + 11687, + 0, + 1, + 60091, + 32, + 196500, + 453240, + 220, + 0, + 1, + 1, + 196500, + 453240, + 220, + 0, + 1, + 1, + 1159724, + 392670, + 0, + 2, + 806990, + 30482, + 4, + 1927926, + 82523, + 4, + 265318, + 0, + 4, + 0, + 85931, + 32, + 205665, + 812, + 1, + 1, + 41182, + 32, + 212342, + 32, + 31220, + 32, + 32696, + 32, + 43357, + 32, + 32247, + 32, + 38314, + 32, + 35892428, + 10, + 9462713, + 1021, + 10, + 38887044, + 32947, + 10, + 1292075, + 24469, + 74, + 0, + 1, + 936157, + 49601, + 237, + 0, + 1 + ] + }, + "executionPrices": { + "priceMemory": 5.77e-2, + "priceSteps": 7.21e-5 + }, + "lovelacePerUTxOWord": 34482, + "maxBlockExUnits": { + "memory": 62000000, + "steps": 20000000000 + }, + "maxCollateralInputs": 3, + "maxTxExUnits": { + "memory": 140000000, + "steps": 10000000000 + }, + "maxValueSize": 5000 +} \ No newline at end of file diff --git a/scripts/demo/env/byron-gen-command/genesis-keys.000.key b/scripts/demo/env/byron-gen-command/genesis-keys.000.key new file mode 100644 index 0000000..8f34ea8 --- /dev/null +++ b/scripts/demo/env/byron-gen-command/genesis-keys.000.key @@ -0,0 +1,2 @@ +Xx2(2fM BS*i3\c1|Oh-hfbhO@8Kp;ludr}FmS90#VqHq@<+d&)0t^`=Nm>~$S&#C7pv2xm#cvI5 zk;jyP!5;uB49g>;{KcE;_{a6Mb*{@o9u+y;ZvzSyRZ0UqG5`Po literal 0 HcmV?d00001 diff --git a/scripts/demo/env/byron-genesis.json b/scripts/demo/env/byron-genesis.json new file mode 100644 index 0000000..7519368 --- /dev/null +++ b/scripts/demo/env/byron-genesis.json @@ -0,0 +1,67 @@ +{ "bootStakeholders": + { "a03fe68c7e793476a25fad6163e6fa11b7f7e81ec9298f039323e11a": 1 + , "c3c6a3f53e6b8b3fcea0227bd1fee98730d0610dade1878535e4365d": 1 + , "ec6346d7938b7a56d5835e942d63fa833e4b4f8a66b15131b3539860": 1 + } +, "heavyDelegation": + { "a03fe68c7e793476a25fad6163e6fa11b7f7e81ec9298f039323e11a": + { "omega": 0 + , "issuerPk": + "c61ewIg0e3Fy4xyZFI6l9anOZszse8mlQ3we6ImKsRDAm4OFJb+yAQqtXGZe5DnFWoZdUf6hse8qZ+xLN0wzgQ==" + , "delegatePk": + "MEpOYmbSjh+Lz4koHFqqJBRJpIbIBm3O1TY+99UCD+bjk7pOYekJrL0LZptvCxj3cu6G7pFk678ParpV0w7CbA==" + , "cert": + "01e1a70ee4eb9960496706fc39cbe3652c35fa439b4b86eace5c2e5f7c37ad770e02e1822a3c9ca3c2d383a28cdb3704b7c8e2b31cd51f8a9c15cbbba0744600" + } + , "c3c6a3f53e6b8b3fcea0227bd1fee98730d0610dade1878535e4365d": + { "omega": 0 + , "issuerPk": + "dX0deGsxMA3Z6SKzuVrSqIjTk8p50HUeTH5HapUxTHwhHFmTPcUfDMsjovzFm+n4x/W0da7LQh4VOdtvAwoVVQ==" + , "delegatePk": + "4R/D2/kcXliEOezrw5hPzJAzLY+fu1n2fH8Wq2X0AWxGI1Gv+qEGcWGOcWsw7JMSlN+SBYMSyb59GmsOGVC8oQ==" + , "cert": + "2e7c8c023f0185c11d696fa8e6f4381a9499e299bec9cb4a379b1244f4b75eeee75a7c895a40ffd5dc21fbb99f4672372327f8e40acc92d02676cdce19847906" + } + , "ec6346d7938b7a56d5835e942d63fa833e4b4f8a66b15131b3539860": + { "omega": 0 + , "issuerPk": + "iAhfBlMuI0jWkTBeTAwdF1FpFgxMt4wlF4Xv3Jz8aEkCpKmjbOLEQo86AjsNXLdXNrXtm7XFLEP6UwXChXFK8w==" + , "delegatePk": + "2ha8d6fM46aCqfrJqKrLvIxbFrCEJ18a5ICo8IgPS47idVjroTViVA9pH1gEH9GMbj4OIWmwIBit/kXqCbwz3A==" + , "cert": + "7a3b0c0edfbe95e3130794c22eec9d2ecbe866366e795c5f57ca4b1831a8e7dfab19488a590b041cc7fa9a98e545beae8f129da683df6157d312b70609500102" + } + } +, "startTime": 1758648583 +, "nonAvvmBalances": + { "2657WMsDfac5XnnXeSbRsKQW66e3m8uWRbwPYAJSwrQJWd6STV8ZJkSVdtqpd1SBV": + "3000000000" + , "2657WMsDfac6aK63D1ByHDpKpFSqzXy78VcrKsFSKsuHVhoBJZz2Fg5gjYF3uW1jb": + "3000000000" + , "2657WMsDfac7fy2daVejmbM4vdcrwGzmcfC3Hej8Qq3sQc9P9b3BwhRoxTUtpf6hB": + "3000000000" + } +, "blockVersionData": + { "scriptVersion": 0 + , "slotDuration": "1000" + , "maxBlockSize": "2000000" + , "maxHeaderSize": "2000000" + , "maxTxSize": "4096" + , "maxProposalSize": "700" + , "mpcThd": "20000000000000" + , "heavyDelThd": "300000000000" + , "updateVoteThd": "1000000000000" + , "updateProposalThd": "100000000000000" + , "updateImplicit": "10000" + , "softforkRule": + { "initThd": "900000000000000" + , "minThd": "600000000000000" + , "thdDecrement": "50000000000000" + } + , "txFeePolicy": + { "summand": "155381000000000" , "multiplier": "43946000000" } + , "unlockStakeEpoch": "18446744073709551615" + } +, "protocolConsts": { "k": 10 , "protocolMagic": 42 } +, "avvmDistr": {} +} \ No newline at end of file diff --git a/scripts/demo/env/configuration.yaml b/scripts/demo/env/configuration.yaml new file mode 100644 index 0000000..6da59b1 --- /dev/null +++ b/scripts/demo/env/configuration.yaml @@ -0,0 +1,98 @@ +{ + "AlonzoGenesisFile": "alonzo-genesis.json", + "ByronGenesisFile": "byron-genesis.json", + "ConwayGenesisFile": "conway-genesis.json", + "EnableLogMetrics": false, + "EnableLogging": true, + "EnableP2P": false, + "ExperimentalHardForksEnabled": true, + "ExperimentalProtocolsEnabled": true, + "LastKnownBlockVersion-Alt": 0, + "LastKnownBlockVersion-Major": 9, + "LastKnownBlockVersion-Minor": 0, + "MaxConcurrencyBulkSync": 1, + "MaxConcurrencyDeadline": 2, + "PBftSignatureThreshold": 0.6, + "Protocol": "Cardano", + "RequiresNetworkMagic": "RequiresMagic", + "ShelleyGenesisFile": "shelley-genesis.json", + "SocketPath": "db/node.socket", + "TestAllegraHardForkAtEpoch": 0, + "TestAlonzoHardForkAtEpoch": 0, + "TestBabbageHardForkAtEpoch": 0, + "TestConwayHardForkAtEpoch": 0, + "TestMaryHardForkAtEpoch": 0, + "TestShelleyHardForkAtEpoch": 0, + "TraceBlockFetchClient": false, + "TraceBlockFetchDecisions": false, + "TraceBlockFetchProtocol": false, + "TraceBlockFetchProtocolSerialised": false, + "TraceBlockFetchServer": false, + "TraceBlockchainTime": true, + "TraceChainDb": true, + "TraceChainSyncBlockServer": false, + "TraceChainSyncClient": false, + "TraceChainSyncHeaderServer": false, + "TraceChainSyncProtocol": false, + "TraceConnectionManager": true, + "TraceDnsResolver": true, + "TraceDnsSubscription": true, + "TraceErrorPolicy": true, + "TraceForge": true, + "TraceHandshake": false, + "TraceIpSubscription": true, + "TraceLocalChainSyncProtocol": false, + "TraceLocalConnectionManager": false, + "TraceLocalErrorPolicy": true, + "TraceLocalHandshake": false, + "TraceLocalRootPeers": true, + "TraceLocalServer": false, + "TraceLocalTxSubmissionProtocol": false, + "TraceLocalTxSubmissionServer": false, + "TraceMempool": true, + "TraceMux": false, + "TraceOptions": {}, + "TracePeerSelection": true, + "TracePeerSelectionActions": true, + "TracePublicRootPeers": true, + "TraceServer": true, + "TraceTxInbound": false, + "TraceTxOutbound": false, + "TraceTxSubmissionProtocol": false, + "TurnOnLogMetrics": false, + "defaultBackends": [ + "KatipBK" + ], + "defaultScribes": [ + [ + "FileSK", + "logs/mainnet.log" + ], + [ + "StdoutSK", + "stdout" + ] + ], + "minSeverity": "Debug", + "options": {}, + "rotation": { + "rpKeepFilesNum": 3, + "rpLogLimitBytes": 5000000, + "rpMaxAgeHours": 24 + }, + "setupBackends": [ + "KatipBK" + ], + "setupScribes": [ + { + "scFormat": "ScJson", + "scKind": "FileSK", + "scName": "logs/node.log" + }, + { + "scFormat": "ScJson", + "scKind": "StdoutSK", + "scName": "stdout" + } + ] +} \ No newline at end of file diff --git a/scripts/demo/env/conway-genesis.json b/scripts/demo/env/conway-genesis.json new file mode 100644 index 0000000..e0059d6 --- /dev/null +++ b/scripts/demo/env/conway-genesis.json @@ -0,0 +1,368 @@ +{ + "committee": { + "members": {}, + "threshold": 0 + }, + "committeeMaxTermLength": 200, + "committeeMinSize": 0, + "constitution": { + "anchor": { + "dataHash": "0000000000000000000000000000000000000000000000000000000000000000", + "url": "" + } + }, + "dRepActivity": 100, + "dRepDeposit": 1000000, + "dRepVotingThresholds": { + "committeeNoConfidence": 0, + "committeeNormal": 0.5, + "hardForkInitiation": 0.5, + "motionNoConfidence": 0, + "ppEconomicGroup": 0.5, + "ppGovGroup": 0.5, + "ppNetworkGroup": 0.5, + "ppTechnicalGroup": 0.5, + "treasuryWithdrawal": 0.5, + "updateToConstitution": 0 + }, + "delegs": { + "keyHash-1faa9a2118774b9dc20a71085d3b6e6c82b7875bc2c79689ebec94f8": { + "dRep": "drep-keyHash-aa15812fa13b0e1b115a83a5b7eadfbbf1531764a213cf0abdb2a070", + "kind": "DelegVote" + }, + "keyHash-4828b5af7399f0225ff4710b4bf837a3d5d99668463434bf0a39b5bb": { + "dRep": "drep-keyHash-1989ac8adda2a434992681aba262c8de930188628df9a8190dfe85b6", + "kind": "DelegVote" + }, + "keyHash-495c9b49153f7f785a3ad778761829b32f7d86ccb8ba9a7e9358f5ec": { + "dRep": "drep-keyHash-ef478b5bbc184a7d380252ff7b83840f057c63b84c23bffca7f5bb3a", + "kind": "DelegVote" + } + }, + "govActionDeposit": 1000000, + "govActionLifetime": 1, + "initialDReps": { + "keyHash-1989ac8adda2a434992681aba262c8de930188628df9a8190dfe85b6": { + "delegators": [], + "deposit": 1000000, + "expiry": 1000 + }, + "keyHash-aa15812fa13b0e1b115a83a5b7eadfbbf1531764a213cf0abdb2a070": { + "delegators": [], + "deposit": 1000000, + "expiry": 1000 + }, + "keyHash-ef478b5bbc184a7d380252ff7b83840f057c63b84c23bffca7f5bb3a": { + "delegators": [], + "deposit": 1000000, + "expiry": 1000 + } + }, + "minFeeRefScriptCostPerByte": 0, + "plutusV3CostModel": [ + 100788, + 420, + 1, + 1, + 1000, + 173, + 0, + 1, + 1000, + 59957, + 4, + 1, + 11183, + 32, + 201305, + 8356, + 4, + 16000, + 100, + 16000, + 100, + 16000, + 100, + 16000, + 100, + 16000, + 100, + 16000, + 100, + 100, + 100, + 16000, + 100, + 94375, + 32, + 132994, + 32, + 61462, + 4, + 72010, + 178, + 0, + 1, + 22151, + 32, + 91189, + 769, + 4, + 2, + 85848, + 123203, + 7305, + -900, + 1716, + 549, + 57, + 85848, + 0, + 1, + 1, + 1000, + 42921, + 4, + 2, + 24548, + 29498, + 38, + 1, + 898148, + 27279, + 1, + 51775, + 558, + 1, + 39184, + 1000, + 60594, + 1, + 141895, + 32, + 83150, + 32, + 15299, + 32, + 76049, + 1, + 13169, + 4, + 22100, + 10, + 28999, + 74, + 1, + 28999, + 74, + 1, + 43285, + 552, + 1, + 44749, + 541, + 1, + 33852, + 32, + 68246, + 32, + 72362, + 32, + 7243, + 32, + 7391, + 32, + 11546, + 32, + 85848, + 123203, + 7305, + -900, + 1716, + 549, + 57, + 85848, + 0, + 1, + 90434, + 519, + 0, + 1, + 74433, + 32, + 85848, + 123203, + 7305, + -900, + 1716, + 549, + 57, + 85848, + 0, + 1, + 1, + 85848, + 123203, + 7305, + -900, + 1716, + 549, + 57, + 85848, + 0, + 1, + 955506, + 213312, + 0, + 2, + 270652, + 22588, + 4, + 1457325, + 64566, + 4, + 20467, + 1, + 4, + 0, + 141992, + 32, + 100788, + 420, + 1, + 1, + 81663, + 32, + 59498, + 32, + 20142, + 32, + 24588, + 32, + 20744, + 32, + 25933, + 32, + 24623, + 32, + 43053543, + 10, + 53384111, + 14333, + 10, + 43574283, + 26308, + 10, + 16000, + 100, + 16000, + 100, + 962335, + 18, + 2780678, + 6, + 442008, + 1, + 52538055, + 3756, + 18, + 267929, + 18, + 76433006, + 8868, + 18, + 52948122, + 18, + 1995836, + 36, + 3227919, + 12, + 901022, + 1, + 166917843, + 4307, + 36, + 284546, + 36, + 158221314, + 26549, + 36, + 74698472, + 36, + 333849714, + 1, + 254006273, + 72, + 2174038, + 72, + 2261318, + 64571, + 4, + 207616, + 8310, + 4, + 1293828, + 28716, + 63, + 0, + 1, + 1006041, + 43623, + 251, + 0, + 1, + 100181, + 726, + 719, + 0, + 1, + 100181, + 726, + 719, + 0, + 1, + 100181, + 726, + 719, + 0, + 1, + 107878, + 680, + 0, + 1, + 95336, + 1, + 281145, + 18848, + 0, + 1, + 180194, + 159, + 1, + 1, + 158519, + 8942, + 0, + 1, + 159378, + 8813, + 0, + 1, + 107490, + 3298, + 1, + 106057, + 655, + 1, + 1964219, + 24520, + 3 + ], + "poolVotingThresholds": { + "committeeNoConfidence": 0.5, + "committeeNormal": 0.5, + "hardForkInitiation": 0.5, + "motionNoConfidence": 0.5, + "ppSecurityGroup": 0.5 + } +} \ No newline at end of file diff --git a/scripts/demo/env/delegate-keys/README.md b/scripts/demo/env/delegate-keys/README.md new file mode 100644 index 0000000..639821d --- /dev/null +++ b/scripts/demo/env/delegate-keys/README.md @@ -0,0 +1,2 @@ +Keys generated by the --genesis-keys flag. These keys are used to mint blocks when not being completely decentralized +(e.g. when stake pools are not the sole block producers). These keys are intended to run nodes. \ No newline at end of file diff --git a/scripts/demo/env/delegate-keys/delegate1/kes.skey b/scripts/demo/env/delegate-keys/delegate1/kes.skey new file mode 100755 index 0000000..92cf9af --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate1/kes.skey @@ -0,0 +1,5 @@ +{ + "type": "KesSigningKey_ed25519_kes_2^6", + "description": "KES Signing Key", + "cborHex": "590260ed247e449538bcbc6d91bc57f8373f33249c0ad1ad03d3b0118ec8af9bd240ffce971d5cd2de7875c4bca2bf25b2c638b0158ffbb81fbca84d854b678d48c1f82fc6a686bcaa63d0d5363fe17c37645bc2113b538fcf82c2b59ec2ed9bfc3068ea111988510736ab919d8385ac17e9660b92009ff48744ddb8e98c342af77827bb2e0ad49663f2261ebe2a9a21b01d7ba221254cd9b5f5f2389b11d4ac516ed63f5dc0c1ccffb2e0f780ac90ca580cf7c5ed2aadea1fde139041f936bb3b3f58895d6d684da1a0708f48148077675c17530c2f1eb36ad84c0aeccc88f28c392b024f9a7edb1b3250ac95978a58ed1e54bad3331eb8c52b9c65d8c51e909c853b79076a56bf27a4b9121333824beb01cf5f2fe69c3157aa922c4886bf3068385b5b464a7725795215190ffddb7cba58990c424d587a562d78938067dcd736ce55ac8151ac09b752ee186df97563f8eede987070372914e41963e33059f6fd9896221afc108334df58d77f9e715db4df20e9d69f9a5c4c55145712d7eb7d0f5d49c68b4d95624d664cdd7252b319c34fd5617bb4dffc3585f39abeda05c60a06d44a5219c96145e92416e15b636d4c9e02492573f9b35a07415f7a1dfa44bde81f1a88509e46da648904d33bb621b5026c0b5c7e31b62d7486453658a45ffe36b8a03d7c5df9cbe75b32b012c4470ab6219a0524e04174964a6fd62738e6acf4d8aad8bee6b1778a0f6ab7cb140d86003fb88f28765962c4950168cd9ae4120b5747c65507196667c8a237d12002bcee5168a5a66e693bbb19720d624ae8fc58ec6c8210e213fd739606814a9802879255526a117e020c0fe5faa9a59e49581775" +} diff --git a/scripts/demo/env/delegate-keys/delegate1/kes.vkey b/scripts/demo/env/delegate-keys/delegate1/kes.vkey new file mode 100644 index 0000000..de3b7b0 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate1/kes.vkey @@ -0,0 +1,5 @@ +{ + "type": "KesVerificationKey_ed25519_kes_2^6", + "description": "KES Verification Key", + "cborHex": "5820c228fe2efbcc4a56aa48818d5539cfa8dcf314148e5074e7a5986050e304d13b" +} diff --git a/scripts/demo/env/delegate-keys/delegate1/key.skey b/scripts/demo/env/delegate-keys/delegate1/key.skey new file mode 100644 index 0000000..612156d --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate1/key.skey @@ -0,0 +1,5 @@ +{ + "type": "GenesisDelegateSigningKey_ed25519", + "description": "Genesis delegate operator key", + "cborHex": "5820215d27923669585ca6e4210c654d87ad60381a69e1a6ebcf51b425dd0da10647" +} diff --git a/scripts/demo/env/delegate-keys/delegate1/key.vkey b/scripts/demo/env/delegate-keys/delegate1/key.vkey new file mode 100644 index 0000000..8f8d451 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate1/key.vkey @@ -0,0 +1,5 @@ +{ + "type": "GenesisDelegateVerificationKey_ed25519", + "description": "Genesis delegate operator key", + "cborHex": "58201f6ebffd47453a02c7abb10c3c76243cd7cc88579f9e8b275cb45d7550daaae4" +} diff --git a/scripts/demo/env/delegate-keys/delegate1/opcert.cert b/scripts/demo/env/delegate-keys/delegate1/opcert.cert new file mode 100644 index 0000000..6b19644 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate1/opcert.cert @@ -0,0 +1,5 @@ +{ + "type": "NodeOperationalCertificate", + "description": "", + "cborHex": "82845820c228fe2efbcc4a56aa48818d5539cfa8dcf314148e5074e7a5986050e304d13b0000584044c4640594fe864dcb6f7c46fa6a9c934c89b6fee15276d5a4954491ca9be2b868fb0ded2c20d985854f3c9c0eaa9bbccaadc9f97dc51fcf3c7fd0da919cec0358201f6ebffd47453a02c7abb10c3c76243cd7cc88579f9e8b275cb45d7550daaae4" +} diff --git a/scripts/demo/env/delegate-keys/delegate1/opcert.counter b/scripts/demo/env/delegate-keys/delegate1/opcert.counter new file mode 100644 index 0000000..395f06f --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate1/opcert.counter @@ -0,0 +1,5 @@ +{ + "type": "NodeOperationalCertificateIssueCounter", + "description": "Next certificate issue number: 1", + "cborHex": "820158201f6ebffd47453a02c7abb10c3c76243cd7cc88579f9e8b275cb45d7550daaae4" +} diff --git a/scripts/demo/env/delegate-keys/delegate1/vrf.skey b/scripts/demo/env/delegate-keys/delegate1/vrf.skey new file mode 100644 index 0000000..a9b4e3b --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate1/vrf.skey @@ -0,0 +1,5 @@ +{ + "type": "VrfSigningKey_PraosVRF", + "description": "VRF Signing Key", + "cborHex": "5840d89132641d3125057b6f413d869331d16e09e4e06b7a03168cb49e4a91517f7dbad8e5a9d7dd15777756fa3ea596939cc020e589f3cb95e148fad524994539fe" +} diff --git a/scripts/demo/env/delegate-keys/delegate1/vrf.vkey b/scripts/demo/env/delegate-keys/delegate1/vrf.vkey new file mode 100644 index 0000000..e120285 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate1/vrf.vkey @@ -0,0 +1,5 @@ +{ + "type": "VrfVerificationKey_PraosVRF", + "description": "VRF Verification Key", + "cborHex": "5820bad8e5a9d7dd15777756fa3ea596939cc020e589f3cb95e148fad524994539fe" +} diff --git a/scripts/demo/env/delegate-keys/delegate2/kes.skey b/scripts/demo/env/delegate-keys/delegate2/kes.skey new file mode 100755 index 0000000..94da717 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate2/kes.skey @@ -0,0 +1,5 @@ +{ + "type": "KesSigningKey_ed25519_kes_2^6", + "description": "KES Signing Key", + "cborHex": "590260eb7a193a86783ced8f8fad15513e235ec071f0f7940eca01a688f15621d954c7c2b71f18d816d31324a365eaa8068367a9067b7acd11664111095876fdfac331a1bb776951d1e7918d12dc58e544a00b2e6e87804258c67eeac1c36c64043b4c485de4951b3565a5ba5e10f72575d98b6f49b4a09860d7f28211b6263b688e90eb35da7c65011db0dcf37e112509e035eb1b21dc3c64af346de6332c11b3e8c8aa5edaf35b4165a231655460c87a5d5c1d1c1cef431c881e9220f46ff9ecf8dbf514ecc0505afb7dc8c70f90e579118b68398b3b30863deea20ee8b1880b8450aceac2b965a43f6287d24ff1efa4dd4726dc2f4232dc26cc5f1519019f236b4bd243b2b95fb7f24d03ff35cb99d0c8335c4af57698eb2bb515c5b074a5bff0ecf7b7a3bfedf41f429e8fbc9aeb0754c984b7b6e97388dc43bf9d9dc6431e3a01954922c980cecfcf23ccbe65294a36096971209a259a51a8bb23d4e1834663b53a05307f830f0eb2068ac52016bccbb55d93f7763c1ed3ec115df5858a763095ddbbaebf4bc4c00a3642e32cf5f79c80be150d825b96cb273d78623e0439c6390a1a655bcd3774649e03743dabff5c9a62ade5da388da6de635f8ed72c373a4d70e9f007ea7d6fa3b4c58137225a457d83865d372ac370abe7ff734e42f664c86512a8dedee7ecaf8e3cc63f017b71c7da19c2764eda690c3d6a76bfa50b5fcafdada0aa6095f0057ff1d36ab9ad1264b8a3f8cac2780520996a8a7dcb4f05f6ae2f0fa0e3504a9982edb0e17bd4257d14e496a3fb6e7054f3d06bcc08adca3958da2f99a5822c8ab2b6521c8faf9469873181c14a3be818e2a4848e88a0aac2" +} diff --git a/scripts/demo/env/delegate-keys/delegate2/kes.vkey b/scripts/demo/env/delegate-keys/delegate2/kes.vkey new file mode 100644 index 0000000..f5895df --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate2/kes.vkey @@ -0,0 +1,5 @@ +{ + "type": "KesVerificationKey_ed25519_kes_2^6", + "description": "KES Verification Key", + "cborHex": "5820d7b18687a5bbe47b3afa028c3c805f73383a28b2f3c75c58a9a094b4482eadb9" +} diff --git a/scripts/demo/env/delegate-keys/delegate2/key.skey b/scripts/demo/env/delegate-keys/delegate2/key.skey new file mode 100644 index 0000000..1f7ab6b --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate2/key.skey @@ -0,0 +1,5 @@ +{ + "type": "GenesisDelegateSigningKey_ed25519", + "description": "Genesis delegate operator key", + "cborHex": "5820e0c0b7638a9be69dcdee0a35f65c9d0abc76da16c14addeed8bd91b15f39123d" +} diff --git a/scripts/demo/env/delegate-keys/delegate2/key.vkey b/scripts/demo/env/delegate-keys/delegate2/key.vkey new file mode 100644 index 0000000..f98481b --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate2/key.vkey @@ -0,0 +1,5 @@ +{ + "type": "GenesisDelegateVerificationKey_ed25519", + "description": "Genesis delegate operator key", + "cborHex": "582015aa5d09e21fd5a8edc4b2bcb69605f56a9a08615add9fd3a910426ca18bcaf8" +} diff --git a/scripts/demo/env/delegate-keys/delegate2/opcert.cert b/scripts/demo/env/delegate-keys/delegate2/opcert.cert new file mode 100644 index 0000000..6841623 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate2/opcert.cert @@ -0,0 +1,5 @@ +{ + "type": "NodeOperationalCertificate", + "description": "", + "cborHex": "82845820d7b18687a5bbe47b3afa028c3c805f73383a28b2f3c75c58a9a094b4482eadb9000058400a9853ee2e552e298b0a48800e586f8c8ab1609ae63e7666b81fd640334b8085dfbab5af70001ec4be496f5e53ff3289ed2535432763244272d8adb5dd82e109582015aa5d09e21fd5a8edc4b2bcb69605f56a9a08615add9fd3a910426ca18bcaf8" +} diff --git a/scripts/demo/env/delegate-keys/delegate2/opcert.counter b/scripts/demo/env/delegate-keys/delegate2/opcert.counter new file mode 100644 index 0000000..830b853 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate2/opcert.counter @@ -0,0 +1,5 @@ +{ + "type": "NodeOperationalCertificateIssueCounter", + "description": "Next certificate issue number: 1", + "cborHex": "8201582015aa5d09e21fd5a8edc4b2bcb69605f56a9a08615add9fd3a910426ca18bcaf8" +} diff --git a/scripts/demo/env/delegate-keys/delegate2/vrf.skey b/scripts/demo/env/delegate-keys/delegate2/vrf.skey new file mode 100644 index 0000000..43cd987 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate2/vrf.skey @@ -0,0 +1,5 @@ +{ + "type": "VrfSigningKey_PraosVRF", + "description": "VRF Signing Key", + "cborHex": "58407af49057b0d6cc4da3f44e074c3ce6693a7a02d7c077ecb07381b9d5d717c6ef4159aac2a82c6e8c73fbd52950e95409abe854c94bef7247127fe4c2619eaa9b" +} diff --git a/scripts/demo/env/delegate-keys/delegate2/vrf.vkey b/scripts/demo/env/delegate-keys/delegate2/vrf.vkey new file mode 100644 index 0000000..3232966 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate2/vrf.vkey @@ -0,0 +1,5 @@ +{ + "type": "VrfVerificationKey_PraosVRF", + "description": "VRF Verification Key", + "cborHex": "58204159aac2a82c6e8c73fbd52950e95409abe854c94bef7247127fe4c2619eaa9b" +} diff --git a/scripts/demo/env/delegate-keys/delegate3/kes.skey b/scripts/demo/env/delegate-keys/delegate3/kes.skey new file mode 100755 index 0000000..92e0e51 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate3/kes.skey @@ -0,0 +1,5 @@ +{ + "type": "KesSigningKey_ed25519_kes_2^6", + "description": "KES Signing Key", + "cborHex": "590260abfa0adc2237c4fa21a21fa42c75fc30b88d2d50f0929af718ff2954b7d783c74c7ea8656123d723e8770383c50d079c54260d737cf9c83c5028836959f68a0ce009c1a4d797bcc1f8208084059b72ad2dfe3ccb01b0017cc9a5cd7fdea4314d77d27e120bdfaeb5d5c6ccef7a4dbd153a22831e513dea31d37227ddb78516d0063d89416cfc30ddee2de55d754ff5b0347bb3da313e8946b1b5c407b0320ead8af5c5b23c782d1526a3923a03a321e30d696f1a50cf28185f241145a4adb618a57366a1dfe1d7e50d5e09086e28645746c81eb65ad520eb4b02d128ec2ad8c7e267926562bda07cf7a7b55f0f3c3fd0ac0b0145e4ded953e672878b32e5c9ca94b57c43e9ace25b1738c6ec330887f367e1b8323cd3153f7a2adf56115924fe3716e1f4d32b5bbe25a976ac26ca4c92469f4c9ce39c46a7b7aabc34e991e84d7415059a8d8d401f9104f1bf44f976a6e540b94c54c423d9386535787f1c29e92c81378666e0f8755f2a034eb01db066026d6d66e0825f4bba2b211e8a044c9996d18bf64748e54d30e480f0efd9d011ebcba91df7c8a9dd9a3a9bf174990f5851c23c975028bc06042065313a2920f23c98b244034b03625c1a067d9a4e8fe978e173079b850a8568266d8b807c2efcf238ba0c760d5b36a46b321a8fab2abd120fb50c9285877e76916fdbc4d26567d2be0aec8548b40d20875425e123487f15cb0583e18f4a36f50a4c9be5d127c363a3d0658d98138e2ce77a26d2d579a27a943f0598f3c612e9bf8fa50c89a6a67a1434b9d3071b7948b016e0b9fa37b0b45870203cf8bd51377c34ef984898e9d170f343a43b31c198bb2d7738c0d153" +} diff --git a/scripts/demo/env/delegate-keys/delegate3/kes.vkey b/scripts/demo/env/delegate-keys/delegate3/kes.vkey new file mode 100644 index 0000000..be459e0 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate3/kes.vkey @@ -0,0 +1,5 @@ +{ + "type": "KesVerificationKey_ed25519_kes_2^6", + "description": "KES Verification Key", + "cborHex": "58206f29ae34f357e93c0e8fa65ec18d2da67495db9ec4c5b554e29e13298a6c524d" +} diff --git a/scripts/demo/env/delegate-keys/delegate3/key.skey b/scripts/demo/env/delegate-keys/delegate3/key.skey new file mode 100644 index 0000000..c0ad912 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate3/key.skey @@ -0,0 +1,5 @@ +{ + "type": "GenesisDelegateSigningKey_ed25519", + "description": "Genesis delegate operator key", + "cborHex": "582067b5bf86c49b139529d3c6811af456f80115e6c8bb8a1c49bcc3c233671c8dd0" +} diff --git a/scripts/demo/env/delegate-keys/delegate3/key.vkey b/scripts/demo/env/delegate-keys/delegate3/key.vkey new file mode 100644 index 0000000..83c35da --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate3/key.vkey @@ -0,0 +1,5 @@ +{ + "type": "GenesisDelegateVerificationKey_ed25519", + "description": "Genesis delegate operator key", + "cborHex": "582086bc200baccbffaadc5fb4c7e47e4fbfc2a3b5535ee73112ad619e7d0bef14b1" +} diff --git a/scripts/demo/env/delegate-keys/delegate3/opcert.cert b/scripts/demo/env/delegate-keys/delegate3/opcert.cert new file mode 100644 index 0000000..7079209 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate3/opcert.cert @@ -0,0 +1,5 @@ +{ + "type": "NodeOperationalCertificate", + "description": "", + "cborHex": "828458206f29ae34f357e93c0e8fa65ec18d2da67495db9ec4c5b554e29e13298a6c524d00005840abc770fbe0e6f92a5b1b5b32049e131475772c318a82290dcf67a6f5c1c2613be76d51a7073b4fc5b32e70cf640b8c4ffa772f1abdf8dbf631ab14716dfc700d582086bc200baccbffaadc5fb4c7e47e4fbfc2a3b5535ee73112ad619e7d0bef14b1" +} diff --git a/scripts/demo/env/delegate-keys/delegate3/opcert.counter b/scripts/demo/env/delegate-keys/delegate3/opcert.counter new file mode 100644 index 0000000..22b1870 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate3/opcert.counter @@ -0,0 +1,5 @@ +{ + "type": "NodeOperationalCertificateIssueCounter", + "description": "Next certificate issue number: 1", + "cborHex": "8201582086bc200baccbffaadc5fb4c7e47e4fbfc2a3b5535ee73112ad619e7d0bef14b1" +} diff --git a/scripts/demo/env/delegate-keys/delegate3/vrf.skey b/scripts/demo/env/delegate-keys/delegate3/vrf.skey new file mode 100644 index 0000000..db5ef76 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate3/vrf.skey @@ -0,0 +1,5 @@ +{ + "type": "VrfSigningKey_PraosVRF", + "description": "VRF Signing Key", + "cborHex": "5840ff6815899934908a55a6ca923e55c58d6d71ecdb906974f24f772b22b0c1d47373e571a471f3d8d2b6f5db6ef176710c4117de0d9be973e3ab081cffd470642d" +} diff --git a/scripts/demo/env/delegate-keys/delegate3/vrf.vkey b/scripts/demo/env/delegate-keys/delegate3/vrf.vkey new file mode 100644 index 0000000..7d73bf7 --- /dev/null +++ b/scripts/demo/env/delegate-keys/delegate3/vrf.vkey @@ -0,0 +1,5 @@ +{ + "type": "VrfVerificationKey_PraosVRF", + "description": "VRF Verification Key", + "cborHex": "582073e571a471f3d8d2b6f5db6ef176710c4117de0d9be973e3ab081cffd470642d" +} diff --git a/scripts/demo/env/drep-keys/README.md b/scripts/demo/env/drep-keys/README.md new file mode 100644 index 0000000..3849276 --- /dev/null +++ b/scripts/demo/env/drep-keys/README.md @@ -0,0 +1,4 @@ +Keys generated by the --drep-keys flag. These keys are for Delegated Representatives (DReps) that make decisions +related to Cardano governance. Delegators that do not want to vote for each decision will pick DReps in line with +their views delegate their voting power to them. The DRep's in this generated testnet data will automatically get +registered and all the stake delegators (if any) will automatically delegate their vote to one of the DReps here. \ No newline at end of file diff --git a/scripts/demo/env/drep-keys/drep1/drep.skey b/scripts/demo/env/drep-keys/drep1/drep.skey new file mode 100644 index 0000000..554866a --- /dev/null +++ b/scripts/demo/env/drep-keys/drep1/drep.skey @@ -0,0 +1,5 @@ +{ + "type": "DRepSigningKey_ed25519", + "description": "Delegated Representative Signing Key", + "cborHex": "58202047851da6debc80a9acf6513994c93951452ad53c363c3bb81f3131e9db76cf" +} diff --git a/scripts/demo/env/drep-keys/drep1/drep.vkey b/scripts/demo/env/drep-keys/drep1/drep.vkey new file mode 100644 index 0000000..97ecd6e --- /dev/null +++ b/scripts/demo/env/drep-keys/drep1/drep.vkey @@ -0,0 +1,5 @@ +{ + "type": "DRepVerificationKey_ed25519", + "description": "Delegated Representative Verification Key", + "cborHex": "5820bff2d09f365a6c164d533f34cbe351c7004e3397f2c0969f885ff679929b4519" +} diff --git a/scripts/demo/env/drep-keys/drep2/drep.skey b/scripts/demo/env/drep-keys/drep2/drep.skey new file mode 100644 index 0000000..1ec516c --- /dev/null +++ b/scripts/demo/env/drep-keys/drep2/drep.skey @@ -0,0 +1,5 @@ +{ + "type": "DRepSigningKey_ed25519", + "description": "Delegated Representative Signing Key", + "cborHex": "5820ecc587af3ae3e07b4a83da7775385227455ed99591276edaff888ffc4d2470a0" +} diff --git a/scripts/demo/env/drep-keys/drep2/drep.vkey b/scripts/demo/env/drep-keys/drep2/drep.vkey new file mode 100644 index 0000000..ff9d21e --- /dev/null +++ b/scripts/demo/env/drep-keys/drep2/drep.vkey @@ -0,0 +1,5 @@ +{ + "type": "DRepVerificationKey_ed25519", + "description": "Delegated Representative Verification Key", + "cborHex": "582048b98f52061756ed7106f4c2bc0c567686bb2b3be1ab806fa4c8ee311dc05896" +} diff --git a/scripts/demo/env/drep-keys/drep3/drep.skey b/scripts/demo/env/drep-keys/drep3/drep.skey new file mode 100644 index 0000000..73d2d1f --- /dev/null +++ b/scripts/demo/env/drep-keys/drep3/drep.skey @@ -0,0 +1,5 @@ +{ + "type": "DRepSigningKey_ed25519", + "description": "Delegated Representative Signing Key", + "cborHex": "582094b38c950408caf60e2ee02d7aefc131a51c7d7e0d97fde327cade14d99b06bd" +} diff --git a/scripts/demo/env/drep-keys/drep3/drep.vkey b/scripts/demo/env/drep-keys/drep3/drep.vkey new file mode 100644 index 0000000..24d239f --- /dev/null +++ b/scripts/demo/env/drep-keys/drep3/drep.vkey @@ -0,0 +1,5 @@ +{ + "type": "DRepVerificationKey_ed25519", + "description": "Delegated Representative Verification Key", + "cborHex": "582079b8abb46cbae1ec152dfac557bc20b24ed5452f02abd0ec9fbc37eec6c4cd4e" +} diff --git a/scripts/demo/env/genesis-keys/README.md b/scripts/demo/env/genesis-keys/README.md new file mode 100644 index 0000000..804b759 --- /dev/null +++ b/scripts/demo/env/genesis-keys/README.md @@ -0,0 +1,4 @@ +Keys generated by the --genesis-keys flag. In Byron these keys were used to mint blocks and initiate hard forks. +Starting with Shelley and decentralization, blocks started being produced by other keys than genesis keys. +Still, these keys were required to trigger hard forks. +With the introduction of Conway, these keys should become useless \ No newline at end of file diff --git a/scripts/demo/env/genesis-keys/genesis1/key.skey b/scripts/demo/env/genesis-keys/genesis1/key.skey new file mode 100644 index 0000000..8340bf6 --- /dev/null +++ b/scripts/demo/env/genesis-keys/genesis1/key.skey @@ -0,0 +1,5 @@ +{ + "type": "GenesisSigningKey_ed25519", + "description": "Genesis Signing Key", + "cborHex": "582000bc92e733992324d229c62cc67d30b47cdab68def411b1335ea1b90758bf58c" +} diff --git a/scripts/demo/env/genesis-keys/genesis1/key.vkey b/scripts/demo/env/genesis-keys/genesis1/key.vkey new file mode 100644 index 0000000..c7e7ccf --- /dev/null +++ b/scripts/demo/env/genesis-keys/genesis1/key.vkey @@ -0,0 +1,5 @@ +{ + "type": "GenesisVerificationKey_ed25519", + "description": "Genesis Verification Key", + "cborHex": "5820ddab7815b28c78eb0088de469e071b8a9c938f7026ae1969d5d8f43c6622527f" +} diff --git a/scripts/demo/env/genesis-keys/genesis2/key.skey b/scripts/demo/env/genesis-keys/genesis2/key.skey new file mode 100644 index 0000000..03e038f --- /dev/null +++ b/scripts/demo/env/genesis-keys/genesis2/key.skey @@ -0,0 +1,5 @@ +{ + "type": "GenesisSigningKey_ed25519", + "description": "Genesis Signing Key", + "cborHex": "582028f63ed5e2e3910d1856232db11c22571f5848e8d9b3a4c97aa230da7fee8c37" +} diff --git a/scripts/demo/env/genesis-keys/genesis2/key.vkey b/scripts/demo/env/genesis-keys/genesis2/key.vkey new file mode 100644 index 0000000..02f5864 --- /dev/null +++ b/scripts/demo/env/genesis-keys/genesis2/key.vkey @@ -0,0 +1,5 @@ +{ + "type": "GenesisVerificationKey_ed25519", + "description": "Genesis Verification Key", + "cborHex": "5820320989f98e6c0906b80ee36b7bd2866872fba337812c80304d324f7fd6ba6a7e" +} diff --git a/scripts/demo/env/genesis-keys/genesis3/key.skey b/scripts/demo/env/genesis-keys/genesis3/key.skey new file mode 100644 index 0000000..e0c02a2 --- /dev/null +++ b/scripts/demo/env/genesis-keys/genesis3/key.skey @@ -0,0 +1,5 @@ +{ + "type": "GenesisSigningKey_ed25519", + "description": "Genesis Signing Key", + "cborHex": "582062b4326cb8b5f853989a4bb2b6f2ac157ec126a4e104aa7b38024e5847764aee" +} diff --git a/scripts/demo/env/genesis-keys/genesis3/key.vkey b/scripts/demo/env/genesis-keys/genesis3/key.vkey new file mode 100644 index 0000000..29f9824 --- /dev/null +++ b/scripts/demo/env/genesis-keys/genesis3/key.vkey @@ -0,0 +1,5 @@ +{ + "type": "GenesisVerificationKey_ed25519", + "description": "Genesis Verification Key", + "cborHex": "582076b49575fbecaeff81d96095a9296096a61ce02045349db0d93ca935467f1a6d" +} diff --git a/scripts/demo/env/node-data/node1/topology.json b/scripts/demo/env/node-data/node1/topology.json new file mode 100644 index 0000000..4bffdec --- /dev/null +++ b/scripts/demo/env/node-data/node1/topology.json @@ -0,0 +1,6 @@ +{ + "Producers": [ + "node_2", + "node_3" + ] +} \ No newline at end of file diff --git a/scripts/demo/env/node-data/node2/topology.json b/scripts/demo/env/node-data/node2/topology.json new file mode 100644 index 0000000..e0dce02 --- /dev/null +++ b/scripts/demo/env/node-data/node2/topology.json @@ -0,0 +1,6 @@ +{ + "Producers": [ + "node_1", + "node_3" + ] +} \ No newline at end of file diff --git a/scripts/demo/env/node-data/node3/topology.json b/scripts/demo/env/node-data/node3/topology.json new file mode 100644 index 0000000..40b9a04 --- /dev/null +++ b/scripts/demo/env/node-data/node3/topology.json @@ -0,0 +1,6 @@ +{ + "Producers": [ + "node_1", + "node_2" + ] +} \ No newline at end of file diff --git a/scripts/demo/env/pools-keys/README.md b/scripts/demo/env/pools-keys/README.md new file mode 100644 index 0000000..cd9df0d --- /dev/null +++ b/scripts/demo/env/pools-keys/README.md @@ -0,0 +1 @@ +Keys generated by the --pools flag. These keys are intended to run nodes. \ No newline at end of file diff --git a/scripts/demo/env/pools-keys/pool1/byron-delegate.key b/scripts/demo/env/pools-keys/pool1/byron-delegate.key new file mode 100644 index 0000000000000000000000000000000000000000..6aa456f72d4fc07746ab7a7c47c672c2fede702f GIT binary patch literal 130 zcmV-|0Db>hfOrf{k;-{#k7VmRI~pXNxqL+10I}m<2~LQ~k9&FRQ&jcg)$$(1@hXN_ z$KBUMmFTAb>X54emgop}UzC2)+b~K_VrJ5gAB)e4C>&ahfGEiaX`bkr3ScU8(gwZ1tsmm4xB$!CGbR1aw%SOg!@jBY*-A!)E67_I(A>Iu9v+)o@k{{R30 literal 0 HcmV?d00001 diff --git a/scripts/demo/env/pools-keys/pool2/byron-delegation.cert b/scripts/demo/env/pools-keys/pool2/byron-delegation.cert new file mode 100644 index 0000000..9195161 --- /dev/null +++ b/scripts/demo/env/pools-keys/pool2/byron-delegation.cert @@ -0,0 +1,8 @@ +{ "omega": 0 +, "issuerPk": + "iAhfBlMuI0jWkTBeTAwdF1FpFgxMt4wlF4Xv3Jz8aEkCpKmjbOLEQo86AjsNXLdXNrXtm7XFLEP6UwXChXFK8w==" +, "delegatePk": + "2ha8d6fM46aCqfrJqKrLvIxbFrCEJ18a5ICo8IgPS47idVjroTViVA9pH1gEH9GMbj4OIWmwIBit/kXqCbwz3A==" +, "cert": + "7a3b0c0edfbe95e3130794c22eec9d2ecbe866366e795c5f57ca4b1831a8e7dfab19488a590b041cc7fa9a98e545beae8f129da683df6157d312b70609500102" +} \ No newline at end of file diff --git a/scripts/demo/env/pools-keys/pool2/cold.skey b/scripts/demo/env/pools-keys/pool2/cold.skey new file mode 100644 index 0000000..9ac2290 --- /dev/null +++ b/scripts/demo/env/pools-keys/pool2/cold.skey @@ -0,0 +1,5 @@ +{ + "type": "StakePoolSigningKey_ed25519", + "description": "Stake Pool Operator Signing Key", + "cborHex": "5820b009f101a99ea84ec96b47880aa86c8e836a61bb00a01ec5c57dd1ce293ed381" +} diff --git a/scripts/demo/env/pools-keys/pool2/cold.vkey b/scripts/demo/env/pools-keys/pool2/cold.vkey new file mode 100644 index 0000000..5dd5cbe --- /dev/null +++ b/scripts/demo/env/pools-keys/pool2/cold.vkey @@ -0,0 +1,5 @@ +{ + "type": "StakePoolVerificationKey_ed25519", + "description": "Stake Pool Operator Verification Key", + "cborHex": "58200d5326045445c4b7c32c2159de2aeeb642ca7f1befa76e02cd3d6ce4f2630107" +} diff --git a/scripts/demo/env/pools-keys/pool2/kes.skey b/scripts/demo/env/pools-keys/pool2/kes.skey new file mode 100755 index 0000000..77fbbb4 --- /dev/null +++ b/scripts/demo/env/pools-keys/pool2/kes.skey @@ -0,0 +1,5 @@ +{ + "type": "KesSigningKey_ed25519_kes_2^6", + "description": "KES Signing Key", + "cborHex": "590260b126622eb3592e9c682765b4fec1349bb4f4e81b1e090b0247bf02c03226688b618ccb7edabe32b60c65f47e3607c3b93eea32caf5c6a07e7831166efa6f4ff1dc21d44c43f71ace08744e08761159ed41eb5791967aa8522b92290ec3ea977fb56f6f2114b5729b6b47034a4557912117500ee9e0fee39829269b61c08ce9650c08fe4705818509e1f6fc877006e3e997a5efa531b3868db287d6a3da1fe60c072aa3a399da96ff2e43eaf4d333513d3e011c1e83dc2ce5508a6b2d2cb6f1a703373f77546b4f472b7ab3ebf7a6318f28bc429f16ab874e6e27181bbe9976221fb30ccd823b6ab31acf18389c376349e3d94e8440f34011d6fa7a2659ab18baa3af1c416ae459a7b4b269605a15d174c662cafdcc01cdc700c88ee828c0e66baa72944174427c35f03c8d6722fe6fa6702c91b66f15c39d3ec59a1a020478fc81c9c08294423e4a9c81079c334b532bb1e020516737f1269f70a853afcfb00687ef7ab02a7001c0edf9e41d53f91d9a69dfa364793fc5089f86f88c7b3dc5c163d394cbb8d2d3184b623bca0b4e3c91c059da6d404ca4da7fd376246d902c6aa086ebfae0a3f547e90e5a7e3cf51ce306f9272de5cbe7da1bd08a1d4980a434925e75ee44eaa94e78ec2275a47184436b408297e34061cb4c38748806fda50506440c7b05cfc202ba7729b376213116711ee0a1a52c9537ebe3dd162b03559f2213d7268ee1a9cd723828210ea69e2302198a78cddaa55bd0e1a0c177184b4c1051c4a060222f3eb6cb39961c0afcadb4aa0681da0ff49ac1ed6ff0d069462df0e42c14edf647c3c68fa66e50bc3f1cd70556dd9457f2372a506b6599865f67" +} diff --git a/scripts/demo/env/pools-keys/pool2/kes.vkey b/scripts/demo/env/pools-keys/pool2/kes.vkey new file mode 100644 index 0000000..2250352 --- /dev/null +++ b/scripts/demo/env/pools-keys/pool2/kes.vkey @@ -0,0 +1,5 @@ +{ + "type": "KesVerificationKey_ed25519_kes_2^6", + "description": "KES Verification Key", + "cborHex": "5820d437a8905f2a48c9ed1ca31312e4cfb2bbceceac89610543cc22405718887d15" +} diff --git a/scripts/demo/env/pools-keys/pool2/opcert.cert b/scripts/demo/env/pools-keys/pool2/opcert.cert new file mode 100644 index 0000000..036daaf --- /dev/null +++ b/scripts/demo/env/pools-keys/pool2/opcert.cert @@ -0,0 +1,5 @@ +{ + "type": "NodeOperationalCertificate", + "description": "", + "cborHex": "82845820d437a8905f2a48c9ed1ca31312e4cfb2bbceceac89610543cc22405718887d1500005840ff3cea9c3b2af639486f3fb7daa5bf44152d3016b0d39c63c7af84760fee047ea3d7f2362a52ce7ad4dfa582a202d3b7c4e7f0c7d0ca96b3d8ce74e1e5a5ea0e58200d5326045445c4b7c32c2159de2aeeb642ca7f1befa76e02cd3d6ce4f2630107" +} diff --git a/scripts/demo/env/pools-keys/pool2/opcert.counter b/scripts/demo/env/pools-keys/pool2/opcert.counter new file mode 100644 index 0000000..9fcdd46 --- /dev/null +++ b/scripts/demo/env/pools-keys/pool2/opcert.counter @@ -0,0 +1,5 @@ +{ + "type": "NodeOperationalCertificateIssueCounter", + "description": "Next certificate issue number: 1", + "cborHex": "820158200d5326045445c4b7c32c2159de2aeeb642ca7f1befa76e02cd3d6ce4f2630107" +} diff --git a/scripts/demo/env/pools-keys/pool2/staking-reward.skey b/scripts/demo/env/pools-keys/pool2/staking-reward.skey new file mode 100644 index 0000000..6da4ff0 --- /dev/null +++ b/scripts/demo/env/pools-keys/pool2/staking-reward.skey @@ -0,0 +1,5 @@ +{ + "type": "StakeSigningKeyShelley_ed25519", + "description": "Stake Signing Key", + "cborHex": "58204935a1a2b96e04ea96e1410e9a0b89089d36f7383689f83bd45b5ef9e23f15a3" +} diff --git a/scripts/demo/env/pools-keys/pool2/staking-reward.vkey b/scripts/demo/env/pools-keys/pool2/staking-reward.vkey new file mode 100644 index 0000000..02a1c36 --- /dev/null +++ b/scripts/demo/env/pools-keys/pool2/staking-reward.vkey @@ -0,0 +1,5 @@ +{ + "type": "StakeVerificationKeyShelley_ed25519", + "description": "Stake Verification Key", + "cborHex": "5820ee15e2898c548660a1f16904c22f5516e6d545430e71db00eb9f35e666c543d1" +} diff --git a/scripts/demo/env/pools-keys/pool2/vrf.skey b/scripts/demo/env/pools-keys/pool2/vrf.skey new file mode 100755 index 0000000..6966dfc --- /dev/null +++ b/scripts/demo/env/pools-keys/pool2/vrf.skey @@ -0,0 +1,5 @@ +{ + "type": "VrfSigningKey_PraosVRF", + "description": "VRF Signing Key", + "cborHex": "5840cd88fbae1fb02cad524e0c1ceaf90aaddc2adf5c61d60c69a30a3e374483b853b46de4613c73ffb5b0654727af9b5bef4a63c5b82ffadaaaa3a792846c4a9750" +} diff --git a/scripts/demo/env/pools-keys/pool2/vrf.vkey b/scripts/demo/env/pools-keys/pool2/vrf.vkey new file mode 100644 index 0000000..7d3e8ba --- /dev/null +++ b/scripts/demo/env/pools-keys/pool2/vrf.vkey @@ -0,0 +1,5 @@ +{ + "type": "VrfVerificationKey_PraosVRF", + "description": "VRF Verification Key", + "cborHex": "5820b46de4613c73ffb5b0654727af9b5bef4a63c5b82ffadaaaa3a792846c4a9750" +} diff --git a/scripts/demo/env/pools-keys/pool3/byron-delegate.key b/scripts/demo/env/pools-keys/pool3/byron-delegate.key new file mode 100644 index 0000000..25b7c2d --- /dev/null +++ b/scripts/demo/env/pools-keys/pool3/byron-delegate.key @@ -0,0 +1 @@ +XqL{XyQ[GHFm0c߄J]q7 *s [^X9ØO̐3-Y|elF#Qqaqk0ߒɾ}kP \ No newline at end of file diff --git a/scripts/demo/env/pools-keys/pool3/byron-delegation.cert b/scripts/demo/env/pools-keys/pool3/byron-delegation.cert new file mode 100644 index 0000000..fd2ac6b --- /dev/null +++ b/scripts/demo/env/pools-keys/pool3/byron-delegation.cert @@ -0,0 +1,8 @@ +{ "omega": 0 +, "issuerPk": + "dX0deGsxMA3Z6SKzuVrSqIjTk8p50HUeTH5HapUxTHwhHFmTPcUfDMsjovzFm+n4x/W0da7LQh4VOdtvAwoVVQ==" +, "delegatePk": + "4R/D2/kcXliEOezrw5hPzJAzLY+fu1n2fH8Wq2X0AWxGI1Gv+qEGcWGOcWsw7JMSlN+SBYMSyb59GmsOGVC8oQ==" +, "cert": + "2e7c8c023f0185c11d696fa8e6f4381a9499e299bec9cb4a379b1244f4b75eeee75a7c895a40ffd5dc21fbb99f4672372327f8e40acc92d02676cdce19847906" +} \ No newline at end of file diff --git a/scripts/demo/env/pools-keys/pool3/cold.skey b/scripts/demo/env/pools-keys/pool3/cold.skey new file mode 100644 index 0000000..6fae72d --- /dev/null +++ b/scripts/demo/env/pools-keys/pool3/cold.skey @@ -0,0 +1,5 @@ +{ + "type": "StakePoolSigningKey_ed25519", + "description": "Stake Pool Operator Signing Key", + "cborHex": "5820b9c8c6ed68e39afb2c9b8ca786cdfbb95f1cf00b9b1763ecba6e7f3a0c86dc0a" +} diff --git a/scripts/demo/env/pools-keys/pool3/cold.vkey b/scripts/demo/env/pools-keys/pool3/cold.vkey new file mode 100644 index 0000000..a11d24b --- /dev/null +++ b/scripts/demo/env/pools-keys/pool3/cold.vkey @@ -0,0 +1,5 @@ +{ + "type": "StakePoolVerificationKey_ed25519", + "description": "Stake Pool Operator Verification Key", + "cborHex": "582055a6101667e2ee1d03b402cb80c94a57ef5d36aad7f83e47e70757cda283aa1e" +} diff --git a/scripts/demo/env/pools-keys/pool3/kes.skey b/scripts/demo/env/pools-keys/pool3/kes.skey new file mode 100755 index 0000000..d22fc7e --- /dev/null +++ b/scripts/demo/env/pools-keys/pool3/kes.skey @@ -0,0 +1,5 @@ +{ + "type": "KesSigningKey_ed25519_kes_2^6", + "description": "KES Signing Key", + "cborHex": "5902600bb0b96db81f08817389d1b6f265168de448a3a976caf95b724fdf7d5b9a56b094bd3f55b6f03ba93d9f2422cea48c8f4f1c6187dc1d1bfcc6165a36dd082829a5849f883fc6ea22449dda7e853a9cbfd89fc5bc9bf85cd0f21c15d538afea31e6425c76924d5949fd9b89f8f7a7f24f516cbbccaca8c779263de5d999c6824758cc7734be69e6d9c70d90bcbbc5e69169878f070f2236b0e6d791d667503cac0711d9fadf6989e595a3e0e29123da44943f74b26012e258ffdb357a19dbd017fb7cbf450c7b7c790d8982c63bb8c30ee38439da3efdc96ef8b28b1be74d1f917812a79c34468740a5591645007c1bfb160362653afb262b5fb342cc95455c13d92e85bd347335e1c06ce1a1294529d77a5d1a1fef96be6caf903cad9033b8869fc3fe3d6d1f04d4ff509622abccaf4b7db124f04810febe6b348d9580ff2dcd46d4147c6cbd929deb31f3d4aeba9f1fb7921359e5a335e4e73abb05f1995dfc1e5b3d99e7aea8b8d8469b57ecf540526ce0075f42ee1b2cc617cf85228b018cbfbd1bf7b917493f1aa5c1441755ecfb1dc86bdde7fdf24473dd5a27c6efa7c91ec362e2481d8dcf93deab211429716adbe2a8a8dcf1b7b50cb2a1783692587fe710e700f4dbe61df9d71a1f9582f5a76f867e1589866232e077858ccb0272c58a3e8b0c5a1813effcfda0b8694f575ef6a9bd018b53ed9a405bf259e0cdfbfc94e81f54588ef135f80945c197362f9c8fbf4f671d09bd53c22708df4afa2993bc4b31d92c49e92ebe9d530a6a7508ba489f836105795af10a37022448c1e89f44ef0dc2de94e63bd7e369d263d745da92ba792a579e1976332ff03e237d9142" +} diff --git a/scripts/demo/env/pools-keys/pool3/kes.vkey b/scripts/demo/env/pools-keys/pool3/kes.vkey new file mode 100644 index 0000000..b197073 --- /dev/null +++ b/scripts/demo/env/pools-keys/pool3/kes.vkey @@ -0,0 +1,5 @@ +{ + "type": "KesVerificationKey_ed25519_kes_2^6", + "description": "KES Verification Key", + "cborHex": "5820bbb99e1c2ea5c7c6ab1b595ab863ce74d7e06acde7062bb044b56250080b0299" +} diff --git a/scripts/demo/env/pools-keys/pool3/opcert.cert b/scripts/demo/env/pools-keys/pool3/opcert.cert new file mode 100644 index 0000000..46ce02d --- /dev/null +++ b/scripts/demo/env/pools-keys/pool3/opcert.cert @@ -0,0 +1,5 @@ +{ + "type": "NodeOperationalCertificate", + "description": "", + "cborHex": "82845820bbb99e1c2ea5c7c6ab1b595ab863ce74d7e06acde7062bb044b56250080b0299000058401e0ca4238539ebd8bc7fc1b92bd436fcd31d7c67199a101105002eb955927575ddf9c4d01bcc0eb6f6dfa5f0dbd211d9297d9402a1615e2046c37c6ef3907902582055a6101667e2ee1d03b402cb80c94a57ef5d36aad7f83e47e70757cda283aa1e" +} diff --git a/scripts/demo/env/pools-keys/pool3/opcert.counter b/scripts/demo/env/pools-keys/pool3/opcert.counter new file mode 100644 index 0000000..ba565ed --- /dev/null +++ b/scripts/demo/env/pools-keys/pool3/opcert.counter @@ -0,0 +1,5 @@ +{ + "type": "NodeOperationalCertificateIssueCounter", + "description": "Next certificate issue number: 1", + "cborHex": "8201582055a6101667e2ee1d03b402cb80c94a57ef5d36aad7f83e47e70757cda283aa1e" +} diff --git a/scripts/demo/env/pools-keys/pool3/staking-reward.skey b/scripts/demo/env/pools-keys/pool3/staking-reward.skey new file mode 100644 index 0000000..23a608a --- /dev/null +++ b/scripts/demo/env/pools-keys/pool3/staking-reward.skey @@ -0,0 +1,5 @@ +{ + "type": "StakeSigningKeyShelley_ed25519", + "description": "Stake Signing Key", + "cborHex": "5820af2b6cd862fea60b96ffc39bdcf63c2eea851b972179333dbf693a9bbe93fd34" +} diff --git a/scripts/demo/env/pools-keys/pool3/staking-reward.vkey b/scripts/demo/env/pools-keys/pool3/staking-reward.vkey new file mode 100644 index 0000000..965e3c3 --- /dev/null +++ b/scripts/demo/env/pools-keys/pool3/staking-reward.vkey @@ -0,0 +1,5 @@ +{ + "type": "StakeVerificationKeyShelley_ed25519", + "description": "Stake Verification Key", + "cborHex": "5820986f74d488ca78630aed22d7b067b392b87173791ddb1c63274d3e48bbdd5bf9" +} diff --git a/scripts/demo/env/pools-keys/pool3/vrf.skey b/scripts/demo/env/pools-keys/pool3/vrf.skey new file mode 100755 index 0000000..5c7e0e8 --- /dev/null +++ b/scripts/demo/env/pools-keys/pool3/vrf.skey @@ -0,0 +1,5 @@ +{ + "type": "VrfSigningKey_PraosVRF", + "description": "VRF Signing Key", + "cborHex": "584062a8cf47d69fe741441ad78ed4c6c3dfef30247187ed3fb84c1383b433a033650af8783ab2d77ca7d5d6cd1064e4e0ab1988771919d19d6581174ebc66eeafcf" +} diff --git a/scripts/demo/env/pools-keys/pool3/vrf.vkey b/scripts/demo/env/pools-keys/pool3/vrf.vkey new file mode 100644 index 0000000..33a8f69 --- /dev/null +++ b/scripts/demo/env/pools-keys/pool3/vrf.vkey @@ -0,0 +1,5 @@ +{ + "type": "VrfVerificationKey_PraosVRF", + "description": "VRF Verification Key", + "cborHex": "58200af8783ab2d77ca7d5d6cd1064e4e0ab1988771919d19d6581174ebc66eeafcf" +} diff --git a/scripts/demo/env/shelley-genesis.json b/scripts/demo/env/shelley-genesis.json new file mode 100644 index 0000000..6496af8 --- /dev/null +++ b/scripts/demo/env/shelley-genesis.json @@ -0,0 +1,116 @@ +{ + "activeSlotsCoeff": 5.0e-2, + "epochLength": 500, + "genDelegs": { + "247e5a79d195ff9f53b5f32f800628fc9e327093885ce9374122efef": { + "delegate": "d1f2443170198f7aa914a44e05b1ef88a3159f25dce8b5b66cc4c615", + "vrf": "584815706d5cdc5666164959405898ee5b0991e338713de9272af4edbb2d235c" + }, + "b743e7e3d838dd4d37fc11b693458b19fd2bd13c23f01f73b1fda0fc": { + "delegate": "3bc19421958a5395d25b31ce095868016c09a8d0a63e0b78372d6408", + "vrf": "27252e32e60e57a21201e0d63dcb9cd934b775ffe73ef60ef78de824ba6568ee" + }, + "ce972fc3b1da10f92434c54adbebf02ab91defe2bb815e66326ff82b": { + "delegate": "54df877a560d1162d699d9b4e1641aeb47926c1bdd645750396a5f28", + "vrf": "c79d6867029e0209eb3b6d525b819ea91e29c45febf9bdbe15a7abef59af77a1" + } + }, + "initialFunds": { + "0013ea42806aad7f400213c33504dd0bf08236524438343ecc27a3f21c1faa9a2118774b9dc20a71085d3b6e6c82b7875bc2c79689ebec94f8": 15000003000000, + "009e70c2d1c4a2f6beb80d812fcb39e04632335fd68aaecdf16898ba71495c9b49153f7f785a3ad778761829b32f7d86ccb8ba9a7e9358f5ec": 15000003000000, + "00d6c575bfe031f4962655ca40addf7251781e6d148ec7068e295e88584828b5af7399f0225ff4710b4bf837a3d5d99668463434bf0a39b5bb": 15000003000000, + "60424c96f84ef01ae17ce5e6f62ddf509cde372ed64949ab343761b6fe": 15000003000000, + "6073a94e044e436850b02691d78e0824d66200f0152b107edde233ff10": 15000003000000, + "608401fe3851908a1e95ed643d38268d850970aa63ed187319082c4499": 15000003000000 + }, + "maxKESEvolutions": 60, + "maxLovelaceSupply": 100000020000000, + "networkId": "Testnet", + "networkMagic": 42, + "protocolParams": { + "a0": 0, + "decentralisationParam": 1, + "eMax": 18, + "extraEntropy": { + "tag": "NeutralNonce" + }, + "keyDeposit": 400000, + "maxBlockBodySize": 65536, + "maxBlockHeaderSize": 1100, + "maxTxSize": 16384, + "minFeeA": 1, + "minFeeB": 0, + "minPoolCost": 0, + "minUTxOValue": 0, + "nOpt": 100, + "poolDeposit": 0, + "protocolVersion": { + "major": 10, + "minor": 0 + }, + "rho": 0.1, + "tau": 0.1 + }, + "securityParam": 5, + "slotLength": 0.1, + "slotsPerKESPeriod": 129600, + "staking": { + "pools": { + "0f348dba0c9357c8c3bb5a9ee3bbdf626f91538bec5cec28d79ca474": { + "cost": 0, + "margin": 0, + "metadata": null, + "owners": [], + "pledge": 0, + "publicKey": "0f348dba0c9357c8c3bb5a9ee3bbdf626f91538bec5cec28d79ca474", + "relays": [], + "rewardAccount": { + "credential": { + "keyHash": "a4cbfd070da454cb960e27a1f2488ce66586e6a52b7cf44b8c8864c8" + }, + "network": "Testnet" + }, + "vrf": "66c2ab6686e624052d4007fd7da8943e327cae88ecbf921c90744730af84dcce" + }, + "3a67045e7f367bb15eee4a07600d81f236bc19f8094b7d43e4eb1a19": { + "cost": 0, + "margin": 0, + "metadata": null, + "owners": [], + "pledge": 0, + "publicKey": "3a67045e7f367bb15eee4a07600d81f236bc19f8094b7d43e4eb1a19", + "relays": [], + "rewardAccount": { + "credential": { + "keyHash": "f7c638a2622c09111af0f9da956bf0a8190ced60d64ab7dfc9b27834" + }, + "network": "Testnet" + }, + "vrf": "91637a8788622a84ac885002d8c14dddda495e682e0dbc07065b228cfbdba751" + }, + "887f21fe7ad5ad4eaa2ba59610474040999cc6344b59ecc7b4e09e70": { + "cost": 0, + "margin": 0, + "metadata": null, + "owners": [], + "pledge": 0, + "publicKey": "887f21fe7ad5ad4eaa2ba59610474040999cc6344b59ecc7b4e09e70", + "relays": [], + "rewardAccount": { + "credential": { + "keyHash": "ebf787a80af090c085cb787d4dd1e483841a9591911ccb7a2eb61e90" + }, + "network": "Testnet" + }, + "vrf": "2442475afecb620a9ab133a0eb59b49bb145ab561f6c03bf30466d60072a141f" + } + }, + "stake": { + "1faa9a2118774b9dc20a71085d3b6e6c82b7875bc2c79689ebec94f8": "0f348dba0c9357c8c3bb5a9ee3bbdf626f91538bec5cec28d79ca474", + "4828b5af7399f0225ff4710b4bf837a3d5d99668463434bf0a39b5bb": "3a67045e7f367bb15eee4a07600d81f236bc19f8094b7d43e4eb1a19", + "495c9b49153f7f785a3ad778761829b32f7d86ccb8ba9a7e9358f5ec": "887f21fe7ad5ad4eaa2ba59610474040999cc6344b59ecc7b4e09e70" + } + }, + "systemStart": "2025-09-23T17:29:43Z", + "updateQuorum": 2 +} \ No newline at end of file diff --git a/scripts/demo/env/stake-delegators/delegator1/payment.skey b/scripts/demo/env/stake-delegators/delegator1/payment.skey new file mode 100644 index 0000000..ff2e291 --- /dev/null +++ b/scripts/demo/env/stake-delegators/delegator1/payment.skey @@ -0,0 +1,5 @@ +{ + "type": "PaymentSigningKeyShelley_ed25519", + "description": "Payment Signing Key", + "cborHex": "58205561b7fbe3759f563adffc9f781e05bc346f05d221c3b3a368d2cbb7dad95eac" +} diff --git a/scripts/demo/env/stake-delegators/delegator1/payment.vkey b/scripts/demo/env/stake-delegators/delegator1/payment.vkey new file mode 100644 index 0000000..51f907c --- /dev/null +++ b/scripts/demo/env/stake-delegators/delegator1/payment.vkey @@ -0,0 +1,5 @@ +{ + "type": "PaymentVerificationKeyShelley_ed25519", + "description": "Payment Verification Key", + "cborHex": "582099c1c15b141ec42db2d3eb13578daed81edde93460378029413e86542c7fadf3" +} diff --git a/scripts/demo/env/stake-delegators/delegator1/staking.skey b/scripts/demo/env/stake-delegators/delegator1/staking.skey new file mode 100644 index 0000000..fb1a6b4 --- /dev/null +++ b/scripts/demo/env/stake-delegators/delegator1/staking.skey @@ -0,0 +1,5 @@ +{ + "type": "StakeSigningKeyShelley_ed25519", + "description": "Stake Signing Key", + "cborHex": "5820dfc1ffa841474e4fec14feeaf47a6bd308dabb620e20c192ef4204ce492d0a94" +} diff --git a/scripts/demo/env/stake-delegators/delegator1/staking.vkey b/scripts/demo/env/stake-delegators/delegator1/staking.vkey new file mode 100644 index 0000000..da7addb --- /dev/null +++ b/scripts/demo/env/stake-delegators/delegator1/staking.vkey @@ -0,0 +1,5 @@ +{ + "type": "StakeVerificationKeyShelley_ed25519", + "description": "Stake Verification Key", + "cborHex": "5820c60af1b396aae74b8e24c322b3aea2aab4b0a19af1e471c143edcbe7840759ed" +} diff --git a/scripts/demo/env/stake-delegators/delegator2/payment.skey b/scripts/demo/env/stake-delegators/delegator2/payment.skey new file mode 100644 index 0000000..0702e3b --- /dev/null +++ b/scripts/demo/env/stake-delegators/delegator2/payment.skey @@ -0,0 +1,5 @@ +{ + "type": "PaymentSigningKeyShelley_ed25519", + "description": "Payment Signing Key", + "cborHex": "5820bf2e585bf6b5b0a2d5b7ccff4f6dbf2da220eb14d45edb3e83b3586b27366a5e" +} diff --git a/scripts/demo/env/stake-delegators/delegator2/payment.vkey b/scripts/demo/env/stake-delegators/delegator2/payment.vkey new file mode 100644 index 0000000..556c212 --- /dev/null +++ b/scripts/demo/env/stake-delegators/delegator2/payment.vkey @@ -0,0 +1,5 @@ +{ + "type": "PaymentVerificationKeyShelley_ed25519", + "description": "Payment Verification Key", + "cborHex": "5820e307c8c7eeb9f7b56e26505749efa083b57d9d8562763f0e450ea74094a6ef30" +} diff --git a/scripts/demo/env/stake-delegators/delegator2/staking.skey b/scripts/demo/env/stake-delegators/delegator2/staking.skey new file mode 100644 index 0000000..3d985e1 --- /dev/null +++ b/scripts/demo/env/stake-delegators/delegator2/staking.skey @@ -0,0 +1,5 @@ +{ + "type": "StakeSigningKeyShelley_ed25519", + "description": "Stake Signing Key", + "cborHex": "5820f93dc126f5783eccac0f0d4028351c51b639656b1d4c5d357a33e609785d8302" +} diff --git a/scripts/demo/env/stake-delegators/delegator2/staking.vkey b/scripts/demo/env/stake-delegators/delegator2/staking.vkey new file mode 100644 index 0000000..d09d8b5 --- /dev/null +++ b/scripts/demo/env/stake-delegators/delegator2/staking.vkey @@ -0,0 +1,5 @@ +{ + "type": "StakeVerificationKeyShelley_ed25519", + "description": "Stake Verification Key", + "cborHex": "5820475d470ed8991086d6be3decd70373f69ba772a10d5036c5794057b76ff9717f" +} diff --git a/scripts/demo/env/stake-delegators/delegator3/payment.skey b/scripts/demo/env/stake-delegators/delegator3/payment.skey new file mode 100644 index 0000000..dbfb654 --- /dev/null +++ b/scripts/demo/env/stake-delegators/delegator3/payment.skey @@ -0,0 +1,5 @@ +{ + "type": "PaymentSigningKeyShelley_ed25519", + "description": "Payment Signing Key", + "cborHex": "5820488d97ffbb66ab6f329dc8ba186c27e70192f58953f272bea340a417670d0df5" +} diff --git a/scripts/demo/env/stake-delegators/delegator3/payment.vkey b/scripts/demo/env/stake-delegators/delegator3/payment.vkey new file mode 100644 index 0000000..b2734c4 --- /dev/null +++ b/scripts/demo/env/stake-delegators/delegator3/payment.vkey @@ -0,0 +1,5 @@ +{ + "type": "PaymentVerificationKeyShelley_ed25519", + "description": "Payment Verification Key", + "cborHex": "58205ce9e50f2e3f4f7e03d7b29b282d3a71e8448e60d491684a7b5fda18166ed450" +} diff --git a/scripts/demo/env/stake-delegators/delegator3/staking.skey b/scripts/demo/env/stake-delegators/delegator3/staking.skey new file mode 100644 index 0000000..15f134c --- /dev/null +++ b/scripts/demo/env/stake-delegators/delegator3/staking.skey @@ -0,0 +1,5 @@ +{ + "type": "StakeSigningKeyShelley_ed25519", + "description": "Stake Signing Key", + "cborHex": "58203b3d79726b9219a672f579c1c5bd34194540e7bb5023d791d6712d6a9bb4bb5b" +} diff --git a/scripts/demo/env/stake-delegators/delegator3/staking.vkey b/scripts/demo/env/stake-delegators/delegator3/staking.vkey new file mode 100644 index 0000000..6102750 --- /dev/null +++ b/scripts/demo/env/stake-delegators/delegator3/staking.vkey @@ -0,0 +1,5 @@ +{ + "type": "StakeVerificationKeyShelley_ed25519", + "description": "Stake Verification Key", + "cborHex": "58203ff96125ca6a0cfe04dcd4b004f162c33c9fe01e61f686f260e8a561d4ac8521" +} diff --git a/scripts/demo/env/utxo-keys/README.md b/scripts/demo/env/utxo-keys/README.md new file mode 100644 index 0000000..d3e7606 --- /dev/null +++ b/scripts/demo/env/utxo-keys/README.md @@ -0,0 +1 @@ +Keys generated by the --utxo-keys flag. These keys receive a portion of the supply. \ No newline at end of file diff --git a/scripts/demo/env/utxo-keys/utxo1/utxo.skey b/scripts/demo/env/utxo-keys/utxo1/utxo.skey new file mode 100644 index 0000000..f66256e --- /dev/null +++ b/scripts/demo/env/utxo-keys/utxo1/utxo.skey @@ -0,0 +1,5 @@ +{ + "type": "GenesisUTxOSigningKey_ed25519", + "description": "Genesis Initial UTxO Signing Key", + "cborHex": "5820a8c88723a2279d2d8514250c5192a6a6f173636de02697d8126fced0a05e44d1" +} diff --git a/scripts/demo/env/utxo-keys/utxo1/utxo.vkey b/scripts/demo/env/utxo-keys/utxo1/utxo.vkey new file mode 100644 index 0000000..86e4aa3 --- /dev/null +++ b/scripts/demo/env/utxo-keys/utxo1/utxo.vkey @@ -0,0 +1,5 @@ +{ + "type": "GenesisUTxOVerificationKey_ed25519", + "description": "Genesis Initial UTxO Verification Key", + "cborHex": "5820a28fc1104b2773c408e5d69e95166fc58f6afb86b1739abd1905896dbf30cddc" +} diff --git a/scripts/demo/env/utxo-keys/utxo2/utxo.skey b/scripts/demo/env/utxo-keys/utxo2/utxo.skey new file mode 100644 index 0000000..a4f8d80 --- /dev/null +++ b/scripts/demo/env/utxo-keys/utxo2/utxo.skey @@ -0,0 +1,5 @@ +{ + "type": "GenesisUTxOSigningKey_ed25519", + "description": "Genesis Initial UTxO Signing Key", + "cborHex": "5820ab0f989b120ee4fa427cf203eae1caeb6edf99f679f8f175e989e8e678a2bded" +} diff --git a/scripts/demo/env/utxo-keys/utxo2/utxo.vkey b/scripts/demo/env/utxo-keys/utxo2/utxo.vkey new file mode 100644 index 0000000..d8cdba0 --- /dev/null +++ b/scripts/demo/env/utxo-keys/utxo2/utxo.vkey @@ -0,0 +1,5 @@ +{ + "type": "GenesisUTxOVerificationKey_ed25519", + "description": "Genesis Initial UTxO Verification Key", + "cborHex": "5820086bf2e16c77eb0082869df99af3df2ef94abc060425c8399497121e43cbb9d9" +} diff --git a/scripts/demo/env/utxo-keys/utxo3/utxo.skey b/scripts/demo/env/utxo-keys/utxo3/utxo.skey new file mode 100644 index 0000000..13828f3 --- /dev/null +++ b/scripts/demo/env/utxo-keys/utxo3/utxo.skey @@ -0,0 +1,5 @@ +{ + "type": "GenesisUTxOSigningKey_ed25519", + "description": "Genesis Initial UTxO Signing Key", + "cborHex": "58207da984f8ae2ae61c3908db6e458e5b1e9335ac099f1d084f3aad01f9f6bba2ff" +} diff --git a/scripts/demo/env/utxo-keys/utxo3/utxo.vkey b/scripts/demo/env/utxo-keys/utxo3/utxo.vkey new file mode 100644 index 0000000..cec8ad9 --- /dev/null +++ b/scripts/demo/env/utxo-keys/utxo3/utxo.vkey @@ -0,0 +1,5 @@ +{ + "type": "GenesisUTxOVerificationKey_ed25519", + "description": "Genesis Initial UTxO Verification Key", + "cborHex": "58206df2365a2b186a47b2fa3f2819e2c0559f4a56e1ecd2a9822e7f3d41b3dfad10" +} diff --git a/scripts/demo/launch.sh b/scripts/demo/launch.sh index 745c90b..81f58b8 100755 --- a/scripts/demo/launch.sh +++ b/scripts/demo/launch.sh @@ -5,19 +5,65 @@ set -e CARDANO_CLI=$(realpath bin/cardano-cli) CARDANO_NODE=$(realpath bin/cardano-node) CARDANO_TESTNET=$(realpath bin/cardano-testnet) +STATIC_ENV=$(realpath env) +TESTNET_ENV=$(realpath testnet) STATIC_FILES=$(realpath src/ouroboros-consensus/static) +# Recreate the testnet environment +rm -rf "$TESTNET_ENV" +cp -r "$STATIC_ENV" "$TESTNET_ENV" + +# Update the "startup timestamp" field in a couple of places +ISO_8601_TS=$(date -u +"%Y-%m-%dT%H:%M:%SZ") +jq --arg ts "$ISO_8601_TS" \ + '. + { "systemStart": $ts }' \ + "$STATIC_ENV/shelley-genesis.json" > \ + "$TESTNET_ENV/shelley-genesis.json" + +EPOCH_TS=$(date -u +"%s") +jq --argjson ts "$EPOCH_TS" \ + '. + { "startTime": $ts }' \ + "$STATIC_ENV/byron-genesis.json" > \ + "$TESTNET_ENV/byron-genesis.json" + +# Setup a watcher for the server to announce itself and open the web UI +wait_for_server() { + local node_to_watch="$1" + local logfile="$TESTNET_ENV/logs/$node_to_watch/stdout.log" + local pattern="Serving files at: (\S+)" + local match; + + while [ ! -f "$logfile" ]; do + sleep 1 + done + + # Watch the log file for the server URL and open it in the browser + while read -r line; do + if [[ "$line" =~ $pattern ]]; then + match="${BASH_REMATCH[1]}" + echo "===============================" + echo "Detected server URL: $match" + echo "Opening web UI in the default browser ..." + echo "===============================" + sleep 3 + xdg-open "$match" + break + fi + done < <(tail -n +1 -F "$logfile") +} + +wait_for_server "node1" & + +# Export variables needed by cardano-testnet export CARDANO_CLI export CARDANO_NODE + +# Export variables needed to enable Peras+CertConjuring in cardano-node export ENABLE_PERAS=1 export PERAS_CERT_CONJURING=1 export PERAS_CERT_CONJURING_STATIC_FILES="$STATIC_FILES" -OUTPUT_DIR=testnet - -rm -rf "$OUTPUT_DIR" -$CARDANO_TESTNET create-env --output "$OUTPUT_DIR" +# Launch the testnet +$CARDANO_TESTNET cardano --node-env "$TESTNET_ENV" -# Modify the configuration files in $OUTPUT_DIR -$CARDANO_TESTNET cardano --node-env "$OUTPUT_DIR" diff --git a/scripts/demo/open_webui.sh b/scripts/demo/open_webui.sh deleted file mode 100755 index b01c0fa..0000000 --- a/scripts/demo/open_webui.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -NODE=node1 - -grep -Po "(?<=Serving files at: )(.*)" "testnet/logs/$NODE/stdout.log" | \ - xargs xdg-open From 8a8dae2c5beb417ceed79c25dc93c62541ca6d81 Mon Sep 17 00:00:00 2001 From: Agustin Mista Date: Tue, 23 Sep 2025 19:55:53 +0200 Subject: [PATCH 6/7] Use cardano-node@peras/cardano-testnet-fix-numpools-test in setup script --- scripts/demo/setup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/demo/setup.sh b/scripts/demo/setup.sh index 62e91de..46815f5 100755 --- a/scripts/demo/setup.sh +++ b/scripts/demo/setup.sh @@ -38,9 +38,9 @@ if [[ ! -f ../../bin/cardano-cli ]] || [[ -n "$REBUILD_CARDANO_CLI" ]]; then cp "$(nix develop -c cabal list-bin cardano-cli)" ../../bin/cardano-cli fi -# cardano-testnet @master +# cardano-testnet @cardano-testnet-fix-numpools-test if [[ ! -f ../../bin/cardano-testnet ]] || [[ -n "$REBUILD_CARDANO_TESTNET" ]]; then - git checkout master + git checkout cardano-testnet-fix-numpools-test nix develop -c cabal clean nix develop -c cabal build cardano-testnet cp "$(nix develop -c cabal list-bin cardano-testnet)" ../../bin/cardano-testnet From 35795713e053fb5f27317c7d38e21a4c7e44f933 Mon Sep 17 00:00:00 2001 From: Agustin Mista Date: Wed, 24 Sep 2025 16:06:46 +0200 Subject: [PATCH 7/7] Start cardano-nodes by hand add toxiproxy ports --- scripts/demo/.envrc | 1 + scripts/demo/env/configuration.yaml | 4 +- .../demo/env/node-data/node1/topology.json | 25 +++- .../demo/env/node-data/node2/topology.json | 25 +++- .../demo/env/node-data/node3/topology.json | 25 +++- scripts/demo/env/shelley-genesis.json | 4 +- scripts/demo/flake.lock | 61 +++++++++ scripts/demo/flake.nix | 28 ++++ scripts/demo/launch.sh | 127 +++++++++++++----- 9 files changed, 249 insertions(+), 51 deletions(-) create mode 100644 scripts/demo/.envrc create mode 100644 scripts/demo/flake.lock create mode 100644 scripts/demo/flake.nix diff --git a/scripts/demo/.envrc b/scripts/demo/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/scripts/demo/.envrc @@ -0,0 +1 @@ +use flake diff --git a/scripts/demo/env/configuration.yaml b/scripts/demo/env/configuration.yaml index 6da59b1..9dbfae0 100644 --- a/scripts/demo/env/configuration.yaml +++ b/scripts/demo/env/configuration.yaml @@ -4,7 +4,7 @@ "ConwayGenesisFile": "conway-genesis.json", "EnableLogMetrics": false, "EnableLogging": true, - "EnableP2P": false, + "EnableP2P": true, "ExperimentalHardForksEnabled": true, "ExperimentalProtocolsEnabled": true, "LastKnownBlockVersion-Alt": 0, @@ -95,4 +95,4 @@ "scName": "stdout" } ] -} \ No newline at end of file +} diff --git a/scripts/demo/env/node-data/node1/topology.json b/scripts/demo/env/node-data/node1/topology.json index 4bffdec..23c6dc2 100644 --- a/scripts/demo/env/node-data/node1/topology.json +++ b/scripts/demo/env/node-data/node1/topology.json @@ -1,6 +1,21 @@ { - "Producers": [ - "node_2", - "node_3" - ] -} \ No newline at end of file + "bootstrapPeers": [], + "localRoots": [ + { + "accessPoints": [ + { + "address": "127.0.0.1", + "port": 4002 + }, + { + "address": "127.0.0.1", + "port": 4003 + } + ], + "advertise": false, + "trustable": true, + "valency": 2 + } + ], + "publicRoots": [] +} diff --git a/scripts/demo/env/node-data/node2/topology.json b/scripts/demo/env/node-data/node2/topology.json index e0dce02..e905576 100644 --- a/scripts/demo/env/node-data/node2/topology.json +++ b/scripts/demo/env/node-data/node2/topology.json @@ -1,6 +1,21 @@ { - "Producers": [ - "node_1", - "node_3" - ] -} \ No newline at end of file + "bootstrapPeers": [], + "localRoots": [ + { + "accessPoints": [ + { + "address": "127.0.0.1", + "port": 4001 + }, + { + "address": "127.0.0.1", + "port": 4003 + } + ], + "advertise": false, + "trustable": true, + "valency": 2 + } + ], + "publicRoots": [] +} diff --git a/scripts/demo/env/node-data/node3/topology.json b/scripts/demo/env/node-data/node3/topology.json index 40b9a04..fcd248e 100644 --- a/scripts/demo/env/node-data/node3/topology.json +++ b/scripts/demo/env/node-data/node3/topology.json @@ -1,6 +1,21 @@ { - "Producers": [ - "node_1", - "node_2" - ] -} \ No newline at end of file + "bootstrapPeers": [], + "localRoots": [ + { + "accessPoints": [ + { + "address": "127.0.0.1", + "port": 4001 + }, + { + "address": "127.0.0.1", + "port": 4002 + } + ], + "advertise": false, + "trustable": true, + "valency": 2 + } + ], + "publicRoots": [] +} diff --git a/scripts/demo/env/shelley-genesis.json b/scripts/demo/env/shelley-genesis.json index 6496af8..4abbd32 100644 --- a/scripts/demo/env/shelley-genesis.json +++ b/scripts/demo/env/shelley-genesis.json @@ -52,7 +52,7 @@ "tau": 0.1 }, "securityParam": 5, - "slotLength": 0.1, + "slotLength": 0.2, "slotsPerKESPeriod": 129600, "staking": { "pools": { @@ -113,4 +113,4 @@ }, "systemStart": "2025-09-23T17:29:43Z", "updateQuorum": 2 -} \ No newline at end of file +} diff --git a/scripts/demo/flake.lock b/scripts/demo/flake.lock new file mode 100644 index 0000000..5e5518e --- /dev/null +++ b/scripts/demo/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1758446476, + "narHash": "sha256-5rdAi7CTvM/kSs6fHe1bREIva5W3TbImsto+dxG4mBo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a1f79a1770d05af18111fbbe2a3ab2c42c0f6cd0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/scripts/demo/flake.nix b/scripts/demo/flake.nix new file mode 100644 index 0000000..f1b19ab --- /dev/null +++ b/scripts/demo/flake.nix @@ -0,0 +1,28 @@ +{ + description = "Peras Demo Flake"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + outputs = + { + self, + nixpkgs, + flake-utils, + }: + flake-utils.lib.eachDefaultSystem ( + system: + let + pkgs = import nixpkgs { inherit system; }; + in + { + devShells.default = pkgs.mkShell { + buildInputs = with pkgs; [ + git + jq + toxiproxy + ]; + }; + } + ); +} diff --git a/scripts/demo/launch.sh b/scripts/demo/launch.sh index 81f58b8..2c82132 100755 --- a/scripts/demo/launch.sh +++ b/scripts/demo/launch.sh @@ -2,34 +2,15 @@ set -e -CARDANO_CLI=$(realpath bin/cardano-cli) CARDANO_NODE=$(realpath bin/cardano-node) -CARDANO_TESTNET=$(realpath bin/cardano-testnet) STATIC_ENV=$(realpath env) TESTNET_ENV=$(realpath testnet) STATIC_FILES=$(realpath src/ouroboros-consensus/static) -# Recreate the testnet environment -rm -rf "$TESTNET_ENV" -cp -r "$STATIC_ENV" "$TESTNET_ENV" - -# Update the "startup timestamp" field in a couple of places -ISO_8601_TS=$(date -u +"%Y-%m-%dT%H:%M:%SZ") -jq --arg ts "$ISO_8601_TS" \ - '. + { "systemStart": $ts }' \ - "$STATIC_ENV/shelley-genesis.json" > \ - "$TESTNET_ENV/shelley-genesis.json" - -EPOCH_TS=$(date -u +"%s") -jq --argjson ts "$EPOCH_TS" \ - '. + { "startTime": $ts }' \ - "$STATIC_ENV/byron-genesis.json" > \ - "$TESTNET_ENV/byron-genesis.json" - # Setup a watcher for the server to announce itself and open the web UI -wait_for_server() { +wait_for_http_server() { local node_to_watch="$1" - local logfile="$TESTNET_ENV/logs/$node_to_watch/stdout.log" + local logfile="$TESTNET_ENV/logs/node${node_to_watch}/out.log" local pattern="Serving files at: (\S+)" local match; @@ -41,29 +22,111 @@ wait_for_server() { while read -r line; do if [[ "$line" =~ $pattern ]]; then match="${BASH_REMATCH[1]}" - echo "===============================" - echo "Detected server URL: $match" - echo "Opening web UI in the default browser ..." - echo "===============================" - sleep 3 + echo "Found server for node${node_to_watch} running at $match, launching web UI ..." + sleep 1 xdg-open "$match" break fi done < <(tail -n +1 -F "$logfile") } -wait_for_server "node1" & +# Start a pool node in a given port +start_pool_node() { + local node="$1" + local port="$2" -# Export variables needed by cardano-testnet -export CARDANO_CLI -export CARDANO_NODE + mkdir -p "$TESTNET_ENV/logs/node${node}" + echo "Starting pool node${node} on port ${port} ..." + $CARDANO_NODE run \ + --config "$TESTNET_ENV/configuration.yaml" \ + --topology "$TESTNET_ENV/node-data/node${node}/topology.json" \ + --database-path "$TESTNET_ENV/node-data/node${node}/db" \ + --shelley-kes-key "$TESTNET_ENV/pools-keys/pool${node}/kes.skey" \ + --shelley-vrf-key "$TESTNET_ENV/pools-keys/pool${node}/vrf.skey" \ + --shelley-operational-certificate "$TESTNET_ENV/pools-keys/pool${node}/opcert.cert" \ + --byron-delegation-certificate "$TESTNET_ENV/pools-keys/pool${node}/byron-delegation.cert" \ + --byron-signing-key "$TESTNET_ENV/pools-keys/pool${node}/byron-delegate.key" \ + --socket-path "$TESTNET_ENV/node-data/node${node}/sock" \ + --host-addr 127.0.0.1 \ + --port "$port" \ + &> "$TESTNET_ENV/logs/node${node}/out.log" +} + +# Start the toxiproxy server +start_toxiproxy_server() { + echo "Starting toxiproxy server ..." + toxiproxy-server &> "$TESTNET_ENV/logs/toxiproxy.log" +} + +# Create a proxy port for a given node with some latency +create_toxiproxy() { + local node="$1" + local in_port="$2" + local out_port="$3" + local latency="$4" + echo "Creating toxiproxy ${in_port}->${out_port} ..." + toxiproxy-cli create \ + --listen "127.0.0.1:${out_port}" \ + --upstream "127.0.0.1:${in_port}" \ + "node${node}_proxy" + toxiproxy-cli toxic add \ + --type latency \ + --attribute latency="$latency" \ + "node${node}_proxy" + +} + +# "Gracefully" stop all pool nodes on script termination +cleanup() { + echo "" + echo "Stopping pool nodes ..." + pkill -f "$CARDANO_NODE" || true + echo "Stopping toxiproxy server ..." + pkill -f toxiproxy-server || true +} + +# --------------------------------- # Export variables needed to enable Peras+CertConjuring in cardano-node export ENABLE_PERAS=1 export PERAS_CERT_CONJURING=1 export PERAS_CERT_CONJURING_STATIC_FILES="$STATIC_FILES" -# Launch the testnet -$CARDANO_TESTNET cardano --node-env "$TESTNET_ENV" +# Recreate the testnet environment +rm -rf "$TESTNET_ENV" +cp -r "$STATIC_ENV" "$TESTNET_ENV" +mkdir -p "$TESTNET_ENV/logs" + +# Update the "startup timestamp" field in a couple of places +ISO_8601_TS=$(date -u +"%Y-%m-%dT%H:%M:%SZ") +jq --arg ts "$ISO_8601_TS" \ + '. + { "systemStart": $ts }' \ + "$STATIC_ENV/shelley-genesis.json" > \ + "$TESTNET_ENV/shelley-genesis.json" + +EPOCH_TS=$(date -u +"%s") +jq --argjson ts "$EPOCH_TS" \ + '. + { "startTime": $ts }' \ + "$STATIC_ENV/byron-genesis.json" > \ + "$TESTNET_ENV/byron-genesis.json" + +# Launch some auxiliary processes +wait_for_http_server 1 & +start_toxiproxy_server & +# Launch 3 pool nodes behind toxiproxy instances with some latency to induce +# network partitions to create forks +NODE_LATENCY_MS=250 +for i in $(seq 1 3); do + in_port=$((3000 + i)) + out_port=$((4000 + i)) + create_toxiproxy "$i" "$in_port" "$out_port" "$NODE_LATENCY_MS" + start_pool_node "$i" "$in_port" & +done +# Setup a trap waiting for Ctrl+C to stop everything +echo "Press Ctrl+C to stop the testnet ..." +trap cleanup SIGINT +while true; do + sleep 1 +done