diff --git a/mithril-test-lab/mithril-devnet/.gitignore b/mithril-test-lab/mithril-devnet/.gitignore index b67ef0fee1b..0b665b25901 100644 --- a/mithril-test-lab/mithril-devnet/.gitignore +++ b/mithril-test-lab/mithril-devnet/.gitignore @@ -6,4 +6,4 @@ artifacts cardano-cli cardano-node tmp -*.tar.gz \ No newline at end of file +*.tar.gz diff --git a/mithril-test-lab/mithril-devnet/VERSION b/mithril-test-lab/mithril-devnet/VERSION index 66784322096..940ac09aa67 100644 --- a/mithril-test-lab/mithril-devnet/VERSION +++ b/mithril-test-lab/mithril-devnet/VERSION @@ -1 +1 @@ -0.3.8 +0.3.9 diff --git a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-cardano.sh b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-cardano.sh index 9a09eb634c2..922bafee635 100644 --- a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-cardano.sh +++ b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-cardano.sh @@ -30,7 +30,9 @@ case $UNAME in DATE="date";; esac -CARDANO_CLI=./cardano-cli +CARDANO_BIN_PATH=./bin +CARDANO_CLI=${CARDANO_BIN_PATH}/cardano-cli +CARDANO_NODE=${CARDANO_BIN_PATH}/cardano-node NUM_SPO_NODES=$NUM_POOL_NODES INIT_SUPPLY=12000000 TOTAL_SUPPLY=2000000000000 @@ -194,7 +196,7 @@ cp -r ${ARTIFACTS_DIR_TEMP}/utxo-keys/* addresses for ADDR in ${UTXO_ADDRS}; do # Payment addresses - ./cardano-cli address build \ + $CARDANO_CLI address build \ --payment-verification-key-file addresses/${ADDR}.vkey \ --testnet-magic ${NETWORK_MAGIC} \ --out-file addresses/${ADDR}.addr @@ -202,24 +204,24 @@ done for ADDR in ${USER_ADDRS}; do # Payment address keys - ./cardano-cli address key-gen \ + $CARDANO_CLI address key-gen \ --verification-key-file addresses/${ADDR}.vkey \ --signing-key-file addresses/${ADDR}.skey # Stake address keys - ./cardano-cli stake-address key-gen \ + $CARDANO_CLI stake-address key-gen \ --verification-key-file addresses/${ADDR}-stake.vkey \ --signing-key-file addresses/${ADDR}-stake.skey # Payment addresses - ./cardano-cli address build \ + $CARDANO_CLI address build \ --payment-verification-key-file addresses/${ADDR}.vkey \ --stake-verification-key-file addresses/${ADDR}-stake.vkey \ --testnet-magic ${NETWORK_MAGIC} \ --out-file addresses/${ADDR}.addr # Stake addresses - ./cardano-cli stake-address build \ + $CARDANO_CLI stake-address build \ --stake-verification-key-file addresses/${ADDR}-stake.vkey \ --testnet-magic ${NETWORK_MAGIC} \ --out-file addresses/${ADDR}-stake.addr diff --git a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-init.sh b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-init.sh index d4ca120e1e5..a973e9f3c22 100644 --- a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-init.sh +++ b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-init.sh @@ -12,7 +12,7 @@ if [ -z "${CARDANO_NODE_VERSION}" ]; then CARDANO_NODE_VERSION="9.1.0" fi if [ -z "${CARDANO_NODE_VERSION_RELEASE}" ]; then - CARDANO_NODE_VERSION_RELEASE=$(echo ${CARDANO_NODE_VERSION} | cut -d'-' -f1) + CARDANO_NODE_VERSION_RELEASE=$(echo "${CARDANO_NODE_VERSION}" | cut -d'-' -f1) fi if [ -z "${CARDANO_BINARY_URL}" ]; then CARDANO_BINARY_URL="https://github.com/input-output-hk/cardano-node/releases/download/${CARDANO_NODE_VERSION}/cardano-node-${CARDANO_NODE_VERSION_RELEASE}-${OPERATING_SYSTEM}.tar.gz" @@ -65,20 +65,18 @@ if ! mkdir -p "${ARTIFACTS_DIR}"; then exit fi +echo ">> Creating artifacts directory..." # Download cardano-cli & cardano-node if enabled (default: yes) if [[ "$SKIP_CARDANO_BIN_DOWNLOAD" != "true" ]]; then echo ">> Downloading cardano-cli & cardano-node..." - curl -sL ${CARDANO_BINARY_URL} --output cardano-bin.tar.gz - tar xzf cardano-bin.tar.gz ./bin/cardano-cli ./bin/cardano-node && mv ./bin/cardano-{cli,node} . && rm -rf ./bin || tar xzf cardano-bin.tar.gz ./cardano-cli ./cardano-node + curl -sL "${CARDANO_BINARY_URL}" --output cardano-bin.tar.gz + echo ">> Extracting cardano-cli & cardano-node..." + tar xzf cardano-bin.tar.gz -C "${ARTIFACTS_DIR}/" ./bin || (mkdir -p "${ARTIFACTS_DIR}/bin" && tar --strip-components=1 -C "${ARTIFACTS_DIR}/bin" -xzf cardano-bin.tar.gz) rm -f cardano-bin.tar.gz fi -# And copy cardano-cli & cardano-node -cp cardano-cli ${ARTIFACTS_DIR}/cardano-cli -cp cardano-node ${ARTIFACTS_DIR}/cardano-node - # Switch to artifacts directory -pushd ${ARTIFACTS_DIR} > /dev/null +pushd "${ARTIFACTS_DIR}" > /dev/null || exit # Create addresses sub-directory -mkdir addresses \ No newline at end of file +mkdir addresses diff --git a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril-delegation.sh b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril-delegation.sh index c8756f705e0..ac0f25712e5 100644 --- a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril-delegation.sh +++ b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril-delegation.sh @@ -5,7 +5,7 @@ cat >> delegate.sh <>>> Current Cardano Era: \${CURRENT_CARDANO_ERA}" @@ -16,7 +16,7 @@ if [ "${CARDANO_NODE_VERSION}" = "8.1.2" ]; then fi # Get the current epoch -CURRENT_EPOCH=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli query tip \\ +CURRENT_EPOCH=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI query tip \\ --cardano-mode \\ --testnet-magic ${NETWORK_MAGIC} | jq .epoch) echo ">>>> Current Epoch: \${CURRENT_EPOCH}" @@ -48,13 +48,13 @@ for ADDR in ${USER_ADDRS}; do if [ \$(version_lt "${CARDANO_NODE_VERSION_RELEASE}" "8.8.0") == "false" ] && [ "\${CURRENT_CARDANO_ERA}" == "conway" ]; then KEY_REGISTRATION_DEPOSIT_ANOUNT=0 # Conway specific creation of registration certificate - ./cardano-cli \${CURRENT_CARDANO_ERA} stake-address registration-certificate \ + $CARDANO_CLI \${CURRENT_CARDANO_ERA} stake-address registration-certificate \ --stake-verification-key-file addresses/\${ADDR}-stake.vkey \ --out-file addresses/\${ADDR}-stake.reg.cert \ --key-reg-deposit-amt \$KEY_REGISTRATION_DEPOSIT_ANOUNT else # Legacy creation of registration certificate - ./cardano-cli stake-address registration-certificate \ + $CARDANO_CLI stake-address registration-certificate \ --stake-verification-key-file addresses/\${ADDR}-stake.vkey \ --out-file addresses/\${ADDR}-stake.reg.cert fi @@ -67,13 +67,13 @@ for N in ${POOL_NODES_N}; do cat >> delegate.sh <>>> Current Cardano Era: \${CURRENT_CARDANO_ERA}" @@ -68,19 +68,19 @@ function send_funds_to_era_address { fi # Get current Cardano block - CURRENT_CARDANO_BLOCK=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli query tip \\ + CURRENT_CARDANO_BLOCK=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI query tip \\ --testnet-magic ${NETWORK_MAGIC} \\ | jq -r '.block') echo ">>>> Current Cardano Block: \${CURRENT_CARDANO_BLOCK}" # Send funds to Mithril era address ## Get the UTxO of utxo${N} - TX_IN=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli query utxo \\ + TX_IN=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI query utxo \\ --testnet-magic ${NETWORK_MAGIC} --address \$(cat addresses/utxo${N}.addr) --out-file /dev/stdout \\ | jq -r 'to_entries | [last] | .[0].key') ## Build the transaction - CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli \${CURRENT_CARDANO_ERA} transaction build \\ + CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI \${CURRENT_CARDANO_ERA} transaction build \\ --tx-in \${TX_IN} \\ --tx-out \$(cat addresses/${ADDR}.addr)+${AMOUNT_TRANSFERRED} \\ --change-address \$(cat addresses/utxo${N}.addr) \\ @@ -89,14 +89,14 @@ function send_funds_to_era_address { --out-file node-pool${N}/tx/tx${N}-era-funds.txbody ## Sign the transaction - CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli \${CURRENT_CARDANO_ERA} transaction sign \\ + CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI \${CURRENT_CARDANO_ERA} transaction sign \\ --signing-key-file addresses/utxo${N}.skey \\ --testnet-magic ${NETWORK_MAGIC} \\ --tx-body-file node-pool${N}/tx/tx${N}-era-funds.txbody \\ --out-file node-pool${N}/tx/tx${N}-era-funds.tx ## Submit the transaction - CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli \${CURRENT_CARDANO_ERA} transaction submit \\ + CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI \${CURRENT_CARDANO_ERA} transaction submit \\ --tx-file node-pool${N}/tx/tx${N}-era-funds.tx \\ --testnet-magic ${NETWORK_MAGIC} @@ -105,7 +105,7 @@ function send_funds_to_era_address { ## Wait for all pool nodes to see the new funds for (( i=1; i<=${NUM_POOL_NODES}; i++ )); do - AMOUNT_RETRIEVED=\$(CARDANO_NODE_SOCKET_PATH=node-pool\${i}/ipc/node.sock ./cardano-cli query utxo \\ + AMOUNT_RETRIEVED=\$(CARDANO_NODE_SOCKET_PATH=node-pool\${i}/ipc/node.sock $CARDANO_CLI query utxo \\ --testnet-magic ${NETWORK_MAGIC} --address \$(cat addresses/${ADDR}.addr) --out-file /dev/stdout \\ | jq '. [] | select(.value.lovelace | . != null and . != "") | .value.lovelace') echo ">>>>>> Era address funds retrieved on node-pool\${i}: \${AMOUNT_RETRIEVED}" @@ -145,12 +145,12 @@ function write_datums_for_era_address { rm -f ${MITHRIL_ERA_ERROR_FILE} # Write the era datum on chain - TX_IN=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli query utxo \\ + TX_IN=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI query utxo \\ --testnet-magic ${NETWORK_MAGIC} --address \$(cat addresses/${ADDR}.addr) --out-file /dev/stdout \\ | jq -r 'to_entries | [last] | .[0].key') ## Build the transaction - CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli \${CURRENT_CARDANO_ERA} transaction build \\ + CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI \${CURRENT_CARDANO_ERA} transaction build \\ --tx-in \${TX_IN} \\ --tx-out \$(cat addresses/${ADDR}.addr)+${SCRIPT_TX_VALUE} \\ --tx-out-inline-datum-file \${DATUM_FILE} \\ @@ -160,14 +160,14 @@ function write_datums_for_era_address { --out-file node-pool${N}/tx/tx${N}-era-datum.txbody ## Sign the transaction - CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli \${CURRENT_CARDANO_ERA} transaction sign \\ + CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI \${CURRENT_CARDANO_ERA} transaction sign \\ --signing-key-file addresses/${ADDR}.skey \\ --testnet-magic ${NETWORK_MAGIC} \\ --tx-body-file node-pool${N}/tx/tx${N}-era-datum.txbody \\ --out-file node-pool${N}/tx/tx${N}-era-datum.tx ## Submit the transaction - CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli \${CURRENT_CARDANO_ERA} transaction submit \\ + CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI \${CURRENT_CARDANO_ERA} transaction submit \\ --tx-file node-pool${N}/tx/tx${N}-era-datum.tx \\ --testnet-magic ${NETWORK_MAGIC} @@ -176,7 +176,7 @@ function write_datums_for_era_address { ## Wait for all pool nodes to see the new era datum for (( i=1; i<=${NUM_POOL_NODES}; i++ )); do - INLINE_DATUM=\$(CARDANO_NODE_SOCKET_PATH=node-pool\${i}/ipc/node.sock ./cardano-cli query utxo \\ + INLINE_DATUM=\$(CARDANO_NODE_SOCKET_PATH=node-pool\${i}/ipc/node.sock $CARDANO_CLI query utxo \\ --testnet-magic ${NETWORK_MAGIC} --address \$(cat addresses/${ADDR}.addr) --out-file /dev/stdout \\ | jq -r '. [] | select(.inlineDatum | . != null and . != "") | .inlineDatum.fields[].bytes' | xxd -r -p) echo ">>>>>> Era address inline datum retrieved on node-pool\${i}: \${INLINE_DATUM}" diff --git a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril-payment.sh b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril-payment.sh index 048c0e656c3..8a2f08b510f 100644 --- a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril-payment.sh +++ b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril-payment.sh @@ -4,12 +4,12 @@ for (( i=1; i<=${NUM_POOL_NODES}; i++ )) ADDR_RX=mithril-rx${i} if [ ! -f addresses/${ADDR_RX}.addr ]; then ## Payment address keys - ./cardano-cli address key-gen \ + $CARDANO_CLI address key-gen \ --verification-key-file addresses/${ADDR_RX}.vkey \ --signing-key-file addresses/${ADDR_RX}.skey ## Payment addresses - ./cardano-cli address build \ + $CARDANO_CLI address build \ --payment-verification-key-file addresses/${ADDR_RX}.vkey \ --testnet-magic ${NETWORK_MAGIC} \ --out-file addresses/${ADDR_RX}.addr @@ -34,13 +34,13 @@ function wait_for_elapsed_blocks { CARDANO_NEXT_BLOCK_WAIT_ROUNDS_MAX=30 CARDANO_NEXT_BLOCK_WAIT_ROUNDS=1 CARDANO_NEXT_BLOCK_WAIT_ROUND_DELAY=2 - CURRENT_CARDANO_BLOCK=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli query tip \\ + CURRENT_CARDANO_BLOCK=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI query tip \\ --testnet-magic ${NETWORK_MAGIC} \\ | jq -r '.block') while true do CARDANO_BLOCK_TARGET=\$(( \${CURRENT_CARDANO_BLOCK} + \${CARDANO_BLOCK_OFFSET} )) - CARDANO_BLOCK=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli query tip \\ + CARDANO_BLOCK=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI query tip \\ --testnet-magic ${NETWORK_MAGIC} \\ | jq -r '.block') if [ \$CARDANO_BLOCK -lt \$CARDANO_BLOCK_TARGET ] ; then @@ -72,7 +72,7 @@ do ADDR_RX=mithril-rx${i} cat >> payment-mithril.sh <>>>>> Current Cardano Era: \${CURRENT_CARDANO_ERA}" @@ -88,12 +88,12 @@ cat >> payment-mithril.sh <> payment-mithril.sh <> payment-mithril.sh <> pools.sh < ${NODE}/pool.env diff --git a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-query.sh b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-query.sh index f3664d282a9..05cb691d3fe 100644 --- a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-query.sh +++ b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-query.sh @@ -25,26 +25,26 @@ cat >> query-cardano.sh <> Query chain tip" -CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock ./cardano-cli query tip \\ +CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI query tip \\ --cardano-mode \\ --testnet-magic ${NETWORK_MAGIC} | jq . echo echo ">> Query whole utxo" -CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock ./cardano-cli query utxo \\ +CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI query utxo \\ --cardano-mode \\ --testnet-magic ${NETWORK_MAGIC} \\ --whole-utxo echo echo ">> Query stake pools" -CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock ./cardano-cli query stake-pools \\ +CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI query stake-pools \\ --cardano-mode \\ --testnet-magic ${NETWORK_MAGIC} echo echo ">> Query stake distribution" -CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock ./cardano-cli query stake-snapshot --all-stake-pools \\ +CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI query stake-snapshot --all-stake-pools \\ --cardano-mode \\ --testnet-magic ${NETWORK_MAGIC} | jq . echo @@ -74,4 +74,4 @@ SEPARATOR="--------------------------------------------------------------------- find . -type f -print | grep "node.log" | sort -n | xargs -i sh -c 'echo '\${SEPARATOR}' && echo tail -n '\${LINES}' {} && echo '\${SEPARATOR}' && tail -n '\${LINES}' {} && echo '\${SEPARATOR}' && echo' EOF -chmod u+x log-cardano.sh \ No newline at end of file +chmod u+x log-cardano.sh diff --git a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-start.sh b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-start.sh index b429d20a5e3..491ab47217f 100644 --- a/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-start.sh +++ b/mithril-test-lab/mithril-devnet/mkfiles/mkfiles-start.sh @@ -7,8 +7,8 @@ killall cardano-node > /dev/null 2>&1 # Stop when there's an error, activate it after the killall since it will report an error if it doesn't kill anything set -e -./cardano-cli --version -./cardano-node --version +$CARDANO_CLI --version +$CARDANO_NODE --version EOF @@ -16,7 +16,7 @@ for NODE in ${FULL_NODES}; do cat >> ${NODE}/start-node.sh <> ${NODE}/start-node.sh < /dev/null | jq -r .epoch) + EPOCH=\$(CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI query tip --cardano-mode --testnet-magic ${NETWORK_MAGIC} 2> /dev/null | jq -r .epoch) if [ "\$EPOCH" != "" ] ; then echo ">>>> Cardano network is ready!" break @@ -165,10 +165,10 @@ done cat >> start-mithril.sh <> Wait for Mithril signers to be registered" -EPOCH_NOW=\$(CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock ./cardano-cli query tip --cardano-mode --testnet-magic ${NETWORK_MAGIC} 2> /dev/null | jq -r .epoch) +EPOCH_NOW=\$(CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI query tip --cardano-mode --testnet-magic ${NETWORK_MAGIC} 2> /dev/null | jq -r .epoch) while true do - EPOCH=\$(CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock ./cardano-cli query tip --cardano-mode --testnet-magic ${NETWORK_MAGIC} 2> /dev/null | jq -r .epoch) + EPOCH=\$(CARDANO_NODE_SOCKET_PATH=node-pool1/ipc/node.sock $CARDANO_CLI query tip --cardano-mode --testnet-magic ${NETWORK_MAGIC} 2> /dev/null | jq -r .epoch) EPOCH_DELTA=\$(( \$EPOCH - \$EPOCH_NOW )) if [ \$EPOCH_DELTA -ge 2 ] ; then echo ">>>> Ready!" @@ -203,4 +203,4 @@ else fi docker compose -f docker-compose.yaml --profile mithril down EOF -chmod u+x stop.sh \ No newline at end of file +chmod u+x stop.sh