Skip to content
Merged
2 changes: 1 addition & 1 deletion mithril-test-lab/mithril-devnet/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ artifacts
cardano-cli
cardano-node
tmp
*.tar.gz
*.tar.gz
14 changes: 8 additions & 6 deletions mithril-test-lab/mithril-devnet/mkfiles/mkfiles-cardano.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -194,32 +196,32 @@ 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
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
Expand Down
17 changes: 9 additions & 8 deletions mithril-test-lab/mithril-devnet/mkfiles/mkfiles-init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -65,20 +65,21 @@ 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 ./bin -C "${ARTIFACTS_DIR}/" || (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
cp -r ./bin "${ARTIFACTS_DIR}/" 2>/dev/null || true
rm -rf ./bin

# Switch to artifacts directory
pushd ${ARTIFACTS_DIR} > /dev/null
pushd "${ARTIFACTS_DIR}" > /dev/null || exit

# Create addresses sub-directory
mkdir addresses
mkdir addresses
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ cat >> delegate.sh <<EOF
set -e

# Get current Cardano era
CURRENT_CARDANO_ERA=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli query tip \\
CURRENT_CARDANO_ERA=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI query tip \\
--testnet-magic ${NETWORK_MAGIC} \\
| jq -r '.era |= ascii_downcase | .era')
echo ">>>> Current Cardano Era: \${CURRENT_CARDANO_ERA}"
Expand All @@ -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}"
Expand Down Expand Up @@ -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
Expand All @@ -67,13 +67,13 @@ for N in ${POOL_NODES_N}; do
cat >> delegate.sh <<EOF
if [ \$(version_lte "${CARDANO_NODE_VERSION_RELEASE}" "8.1.2") == "false" ]; then
# Stake address delegation certs
./cardano-cli \${CURRENT_CARDANO_ERA} stake-address stake-delegation-certificate \
$CARDANO_CLI \${CURRENT_CARDANO_ERA} stake-address stake-delegation-certificate \
--stake-verification-key-file addresses/user${N}-stake.vkey \
--cold-verification-key-file node-pool${N}/shelley/cold.vkey \
--out-file addresses/user${N}-stake.deleg.cert
else
# Legacy stake address delegation certs
./cardano-cli \${CURRENT_CARDANO_ERA} stake-address delegation-certificate \
$CARDANO_CLI \${CURRENT_CARDANO_ERA} stake-address delegation-certificate \
--stake-verification-key-file addresses/user${N}-stake.vkey \
--cold-verification-key-file node-pool${N}/shelley/cold.vkey \
--out-file addresses/user${N}-stake.deleg.cert
Expand All @@ -88,14 +88,14 @@ for N in ${POOL_NODES_N}; do
AMOUNT_STAKED=\$(( $N*1000000 + \$DELEGATION_ROUND*1 ))

# Get the UTxO
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
if [ "\$DELEGATION_ROUND" -eq 1 ]; then
# First delegation round, we need to include registration certificate and delegation certificate
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/user${N}.addr)+\${AMOUNT_STAKED} \\
--change-address \$(cat addresses/utxo${N}.addr) \\
Expand All @@ -107,7 +107,7 @@ for N in ${POOL_NODES_N}; do
--witness-override 2
else
# All other delegation rounds, we need to include only delegation certificate
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/user${N}.addr)+\${AMOUNT_STAKED} \\
--change-address \$(cat addresses/utxo${N}.addr) \\
Expand All @@ -119,20 +119,20 @@ for N in ${POOL_NODES_N}; do
fi

# 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 \\
--signing-key-file addresses/user${N}-stake.skey \\
--testnet-magic ${NETWORK_MAGIC} \\
--tx-body-file node-pool${N}/tx/tx${N}-\${DELEGATION_ROUND}.txbody \\
--out-file node-pool${N}/tx/tx${N}-\${DELEGATION_ROUND}.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}-\${DELEGATION_ROUND}.tx \\
--testnet-magic ${NETWORK_MAGIC}

EOF

done

chmod u+x delegate.sh
chmod u+x delegate.sh
32 changes: 16 additions & 16 deletions mithril-test-lab/mithril-devnet/mkfiles/mkfiles-mithril-era.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
ADDR=mithril-era

## 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

## 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
Expand All @@ -27,13 +27,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
Expand All @@ -57,7 +57,7 @@ function send_funds_to_era_address {
rm -f ${MITHRIL_ERA_ERROR_FILE}

# Get current Cardano era
CURRENT_CARDANO_ERA=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock ./cardano-cli query tip \\
CURRENT_CARDANO_ERA=\$(CARDANO_NODE_SOCKET_PATH=node-pool${N}/ipc/node.sock $CARDANO_CLI query tip \\
--testnet-magic ${NETWORK_MAGIC} \\
| jq -r '.era |= ascii_downcase | .era')
echo ">>>> Current Cardano Era: \${CURRENT_CARDANO_ERA}"
Expand All @@ -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) \\
Expand All @@ -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}

Expand All @@ -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}"
Expand Down Expand Up @@ -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} \\
Expand All @@ -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}

Expand All @@ -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}"
Expand Down
Loading