Skip to content

Commit 650e77d

Browse files
authored
Merge pull request #2053 from input-output-hk/jpraynaud/fix-cardano-node-10.1
Fix: era markers and pool tools for Cardano `10.1`
2 parents ed246cd + 5f105e8 commit 650e77d

File tree

10 files changed

+126
-60
lines changed

10 files changed

+126
-60
lines changed

docs/runbook/era-markers/README.md

Lines changed: 83 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export SCRIPT_TX_VALUE=**MINIUM_SCRIPT_TX_VALUE**
3333
A common value for the transaction amount used when a script transaction is made is:
3434

3535
```bash
36-
export SCRIPT_TX_VALUE=2000000
36+
export SCRIPT_TX_VALUE=2100000
3737
```
3838

3939
Compute the network magic parameter that handles both the Cardano mainnet and Cardano test networks:
@@ -129,7 +129,10 @@ An example output of the command is:
129129
Verify that the payment address has funds:
130130

131131
```bash
132-
$CARDANO_CLI query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH
132+
$CARDANO_CLI $CARDANO_ERA query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH
133+
```
134+
135+
```bash
133136
TxHash TxIx Amount
134137
--------------------------------------------------------------------------------------
135138
f0c0345f151f9365fbbb4e7afa217e56b987d9e91fd754ca609d9dfec97275c7 0 10000000000 lovelace + TxOutDatumNone
@@ -151,6 +154,9 @@ $CARDANO_CLI $CARDANO_ERA transaction build $CARDANO_NETWORK_MAGIC \
151154
--change-address $(cat $CARDANO_WALLET_PATH/payment.addr) \
152155
--out-file $ASSETS_PATH/tx.raw \
153156
--socket-path $CARDANO_NODE_SOCKET_PATH
157+
```
158+
159+
```bash
154160
Estimated transaction fee: Lovelace 168669
155161
```
156162

@@ -171,20 +177,29 @@ $CARDANO_CLI $CARDANO_ERA transaction submit \
171177
$CARDANO_NETWORK_MAGIC \
172178
--tx-file $ASSETS_PATH/tx.signed \
173179
--socket-path $CARDANO_NODE_SOCKET_PATH
180+
```
181+
182+
```bash
174183
Transaction successfully submitted.
175184
```
176185

177186
Also get the transaction id:
178187

179188
```bash
180-
$CARDANO_CLI transaction txid --tx-file $ASSETS_PATH/tx.signed
189+
$CARDANO_CLI $CARDANO_ERA transaction txid --tx-file $ASSETS_PATH/tx.signed
190+
```
191+
192+
```bash
181193
6518b3cea0b49b55746ec61148e7c60ab042959d534f6bb6e8f6a844d4af69fb
182194
```
183195

184196
We need to wait a few seconds before the transaction is available and we can see the initial datum for the script address:
185197

186198
```bash
187-
$CARDANO_CLI query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH
199+
$CARDANO_CLI $CARDANO_ERA query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH
200+
```
201+
202+
```bash
188203
TxHash TxIx Amount
189204
--------------------------------------------------------------------------------------
190205
6518b3cea0b49b55746ec61148e7c60ab042959d534f6bb6e8f6a844d4af69fb 0 1500000 lovelace + TxOutDatumInline ReferenceTxInsScriptsInlineDatumsInBabbageEra (ScriptDataConstructor 0 [ScriptDataBytes "[{\"n\":\"thales\",\"e\":1}]",ScriptDataBytes "\165\143\232\227\&6\244e\222\211\187\167\197\167\175\229\181\162o/\182[|Nnt.h\ACKE\241=\242\139\242\182:a\204r\217\200&\190I\SO,\US\DLE\152\217U\223P5\128\164\232\153\181\ETB8\132\227\SO"])
@@ -196,7 +211,10 @@ Optional: We can retrieve the initial value stored in the datum with the cardano
196211
The full utxo json representation:
197212

198213
```bash
199-
$CARDANO_CLI query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH --out-file temp.json && cat temp.json | jq '. [] | select(.inlineDatum | . != null and . != "")'
214+
$CARDANO_CLI $CARDANO_ERA query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH --out-file temp.json && cat temp.json | jq '.[] | select(.inlineDatum | . != null and . != "")'
215+
```
216+
217+
```bash
200218
{
201219
"address": "addr_test1qzzngukkj9ydjemqjlgfn42sevy2xnvauay46weushlpuq9thd4ray00csjssf4sxftv04xeequ3xfx72nujg9y4d5ysgkxxlh",
202220
"datum": null,
@@ -219,6 +237,28 @@ $CARDANO_CLI query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARD
219237
}
220238
```
221239

240+
The parsed era markers json representation:
241+
242+
```bash
243+
$CARDANO_CLI $CARDANO_ERA query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH --out-file temp.json && cat temp.json | jq -r '.[] | select(.inlineDatum | . != null and . != "")| .inlineDatum.fields[].bytes' | tr '\n' ' ' | xxd -r -p | jq
244+
```
245+
246+
```json
247+
{
248+
"markers": [
249+
{
250+
"name": "thales",
251+
"epoch": 1
252+
},
253+
{
254+
"name": "pythagoras",
255+
"epoch": null
256+
}
257+
],
258+
"signature": "a83a8dee3b875a7e8d259500a8ce14cc73587ef838899d269ad58aadd16086cfe0486528e54b841b3a1d5aa8b7176d55c0803337ca59fbd3654b2bdd5a480d05"
259+
}
260+
```
261+
222262
## Update Era Markers: Write a new version of datum on chain
223263

224264
> [!IMPORTANT]
@@ -228,7 +268,10 @@ $CARDANO_CLI query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARD
228268
Retrieve the utxo of the payment address:
229269

230270
```bash
231-
$CARDANO_CLI query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH
271+
$CARDANO_CLI $CARDANO_ERA query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH
272+
```
273+
274+
```bash
232275
TxHash TxIx Amount
233276
--------------------------------------------------------------------------------------
234277
6518b3cea0b49b55746ec61148e7c60ab042959d534f6bb6e8f6a844d4af69fb 0 1500000 lovelace + TxOutDatumInline ReferenceTxInsScriptsInlineDatumsInBabbageEra (ScriptDataConstructor 0 [ScriptDataBytes "[{\"n\":\"thales\",\"e\":1}]",ScriptDataBytes "\165\143\232\227\&6\244e\222\211\187\167\197\167\175\229\181\162o/\182[|Nnt.h\ACKE\241=\242\139\242\182:a\204r\217\200&\190I\SO,\US\DLE\152\217U\223P5\128\164\232\153\181\ETB8\132\227\SO"])
@@ -284,14 +327,20 @@ Transaction successfully submitted.
284327
Also get the transaction id:
285328

286329
```bash
287-
$CARDANO_CLI transaction txid --tx-file $ASSETS_PATH/tx.signed
330+
$CARDANO_CLI $CARDANO_ERA transaction txid --tx-file $ASSETS_PATH/tx.signed
331+
```
332+
333+
```bash
288334
1fd4d3e131afe3c8b212772a3f3083d2fbc6b2a7b20e54e4ff08e001598818d8
289335
```
290336

291337
We need to wait a few seconds before the transaction is available and we can see the updated datum for the script address:
292338

293339
```bash
294-
$CARDANO_CLI query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH
340+
$CARDANO_CLI $CARDANO_ERA query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH
341+
```
342+
343+
```bash
295344
TxHash TxIx Amount
296345
--------------------------------------------------------------------------------------
297346
1f139b47017c9c90d4622ac768e249d25d37ad4461db44a20486b7da72a78915 0 2000000 lovelace + TxOutDatumInline ReferenceTxInsScriptsInlineDatumsInBabbageEra (ScriptDataConstructor 0 [ScriptDataBytes "[{\"n\":\"thales\",\"e\":1},{\"n\":\"pythagoras\",\"e\":null}]",ScriptDataBytes "^P\EOT\248k3\196/\139\tU\173H\138\FS\194MD\240\153\227\142z\181\134\213\168\&2\222\219i1\246\NAK\\]\247\154U\143-^vmtq\204\207#\236\213\f\201\&1\152\145(\161\ETX;\183\128\195\r"])
@@ -303,7 +352,10 @@ We can retrieve the updated value stored in the datum with the cardano cli:
303352
The full utxo json representation:
304353

305354
```bash
306-
$CARDANO_CLI query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH --out-file temp.json && cat temp.json | jq '. [] | select(.inlineDatum | . != null and . != "")'
355+
$CARDANO_CLI $CARDANO_ERA query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH --out-file temp.json && cat temp.json | jq '.[] | select(.inlineDatum | . != null and . != "")'
356+
```
357+
358+
```bash
307359
{
308360
"address": "addr_test1qzzngukkj9ydjemqjlgfn42sevy2xnvauay46weushlpuq9thd4ray00csjssf4sxftv04xeequ3xfx72nujg9y4d5ysgkxxlh",
309361
"datum": null,
@@ -325,3 +377,25 @@ $CARDANO_CLI query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARD
325377
}
326378
}
327379
```
380+
381+
The parsed era markers json representation:
382+
383+
```bash
384+
$CARDANO_CLI $CARDANO_ERA query utxo --address $(cat $CARDANO_WALLET_PATH/payment.addr) $CARDANO_NETWORK_MAGIC --socket-path $CARDANO_NODE_SOCKET_PATH --out-file temp.json && cat temp.json | jq -r '.[] | select(.inlineDatum | . != null and . != "")| .inlineDatum.fields[].bytes' | tr '\n' ' ' | xxd -r -p | jq
385+
```
386+
387+
```json
388+
{
389+
"markers": [
390+
{
391+
"name": "thales",
392+
"epoch": 1
393+
},
394+
{
395+
"name": "pythagoras",
396+
"epoch": 123
397+
}
398+
],
399+
"signature": "a83a8dee3b875a7e8d259500a8ce14cc73587ef838899d269ad58aadd16086cfe0486528e54b841b3a1d5aa8b7176d55c0803337ca59fbd3654b2bdd5a480d05"
400+
}
401+
```

mithril-infra/README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -154,14 +154,14 @@ In order to retire a stake pool:
154154
155155
- Retire a stake poool with `retire-stake-pool.sh`
156156
157-
| Script | Description | Usage |
158-
| --------------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
159-
| `create-keys.sh` | Script for creating keys for a Cardano pool (SPO) | `GENESIS_FILE=**YOUR_GENESIS_FILE** ./tools/pool/create-keys.sh` |
160-
| `query-stake-pool.sh` | Script for querying info about a Cardano pool (SPO) | `./tools/pool/query-stake-pool.sh` |
161-
| `register-stake-address.sh` | Script for registering stake address of a Cardano pool (SPO) | `TX_IN=**YOUR_TX_IN** ./tools/pool/register-stake-address.sh` |
162-
| `register-stake-pool.sh` | Script for registering a Cardano stake pool (SPO) | `GENESIS_FILE=**YOUR_GENESIS_FILE** TX_IN=**YOUR_TX_IN** SIGNER_DOMAIN=**YOUR_SIGNER_DOMAIN_NAME** POOL_TICKER=**YOUR_TICKER** ./tools/pool/register-stake-pool.sh` |
163-
| `renew-opcert.sh` | Script for renewing Operational Certificate for a Cardano pool (SPO) | `./tools/pool/renew-opcert.sh` |
164-
| `retire-stake-pool.sh` | Script for retiring a Cardano pool (SPO) | `TX_IN=**YOUR_TX_IN** VALUE_OUT=**YOUR_VALUE_OUT** ./tools/pool/retire-stake-pool.sh` |
157+
| Script | Description | Usage |
158+
| --------------------------- | -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
159+
| `create-keys.sh` | Script for creating keys for a Cardano pool (SPO) | `GENESIS_FILE=**YOUR_SHELLEY_GENESIS_FILE** ./tools/pool/create-keys.sh` |
160+
| `query-stake-pool.sh` | Script for querying info about a Cardano pool (SPO) | `./tools/pool/query-stake-pool.sh` |
161+
| `register-stake-address.sh` | Script for registering stake address of a Cardano pool (SPO) | `TX_IN=**YOUR_TX_IN** ./tools/pool/register-stake-address.sh` |
162+
| `register-stake-pool.sh` | Script for registering a Cardano stake pool (SPO) | `GENESIS_FILE=**YOUR_SHELLEY_GENESIS_FILE** TX_IN=**YOUR_TX_IN** SIGNER_DOMAIN=**YOUR_SIGNER_DOMAIN_NAME** POOL_TICKER=**YOUR_TICKER** ./tools/pool/register-stake-pool.sh` |
163+
| `renew-opcert.sh` | Script for renewing Operational Certificate for a Cardano pool (SPO) | `./tools/pool/renew-opcert.sh` |
164+
| `retire-stake-pool.sh` | Script for retiring a Cardano pool (SPO) | `TX_IN=**YOUR_TX_IN** VALUE_OUT=**YOUR_VALUE_OUT** ./tools/pool/retire-stake-pool.sh` |
165165
166166
### Genesis
167167

mithril-infra/assets/infra.version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.3.5
1+
0.3.6

mithril-infra/assets/tools/pool/_prelude.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ CARDANO_CLI_CMD() {
3535

3636
# Compute current Cardano era if needed
3737
if [ -z "${CARDANO_ERA}" ]; then
38-
CARDANO_ERA=$(CARDANO_CLI_CMD query tip --testnet-magic $NETWORK_MAGIC | jq -r '.era |= ascii_downcase | .era')
38+
CARDANO_ERA=$(CARDANO_CLI_CMD latest query tip --testnet-magic $NETWORK_MAGIC | jq -r '.era |= ascii_downcase | .era')
3939
fi
4040

4141
# Compute auxiliary env vars

mithril-infra/assets/tools/pool/create-keys.sh

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,85 +13,77 @@ fi
1313

1414
# Create keys and addresses
1515
## Create payment keypair
16-
CARDANO_CLI_CMD address key-gen \
16+
CARDANO_CLI_CMD ${CARDANO_ERA} address key-gen \
1717
--verification-key-file ${POOL_ARTIFACTS_DIR}/payment.vkey \
1818
--signing-key-file ${POOL_ARTIFACTS_DIR}/payment.skey
1919

2020
## Create stake keypair
21-
CARDANO_CLI_CMD stake-address key-gen \
21+
CARDANO_CLI_CMD ${CARDANO_ERA} stake-address key-gen \
2222
--verification-key-file ${POOL_ARTIFACTS_DIR}/stake.vkey \
2323
--signing-key-file ${POOL_ARTIFACTS_DIR}/stake.skey
2424

2525
## Create payment address
26-
CARDANO_CLI_CMD address build \
26+
CARDANO_CLI_CMD ${CARDANO_ERA} address build \
2727
--payment-verification-key-file ${POOL_ARTIFACTS_DIR}/payment.vkey \
2828
--stake-verification-key-file ${POOL_ARTIFACTS_DIR}/stake.vkey \
2929
--out-file ${POOL_ARTIFACTS_DIR}/payment.addr \
3030
--testnet-magic $NETWORK_MAGIC
3131

3232
## Create stake address
33-
CARDANO_CLI_CMD stake-address build \
33+
CARDANO_CLI_CMD ${CARDANO_ERA} stake-address build \
3434
--stake-verification-key-file ${POOL_ARTIFACTS_DIR}/stake.vkey \
3535
--out-file ${POOL_ARTIFACTS_DIR}/stake.addr \
3636
--testnet-magic $NETWORK_MAGIC
3737

3838
# Generate your stake pool keys
3939
## Generate Cold Keys and a Cold_counter
40-
CARDANO_CLI_CMD node key-gen \
40+
CARDANO_CLI_CMD ${CARDANO_ERA} node key-gen \
4141
--cold-verification-key-file ${POOL_ARTIFACTS_DIR}/cold.vkey \
4242
--cold-signing-key-file ${POOL_ARTIFACTS_DIR}/cold.skey \
4343
--operational-certificate-issue-counter-file ${POOL_ARTIFACTS_DIR}/opcert.counter
4444

4545
## Generate VRF Key pair
46-
CARDANO_CLI_CMD node key-gen-VRF \
46+
CARDANO_CLI_CMD ${CARDANO_ERA} node key-gen-VRF \
4747
--verification-key-file ${POOL_ARTIFACTS_DIR}/vrf.vkey \
4848
--signing-key-file ${POOL_ARTIFACTS_DIR}/vrf.skey
4949

5050
## Generate the KES Key pair
51-
CARDANO_CLI_CMD node key-gen-KES \
51+
CARDANO_CLI_CMD ${CARDANO_ERA} node key-gen-KES \
5252
--verification-key-file ${POOL_ARTIFACTS_DIR}/kes.vkey \
5353
--signing-key-file ${POOL_ARTIFACTS_DIR}/kes.skey
5454

5555
## Generate the Operational Certificate
5656
### Compute KES period
57-
SLOT=$(CARDANO_CLI_CMD query tip --testnet-magic $NETWORK_MAGIC | jq .slot)
57+
SLOT=$(CARDANO_CLI_CMD ${CARDANO_ERA} query tip --testnet-magic $NETWORK_MAGIC | jq .slot)
5858
SLOTS_KES_PERIOD=$(cat $GENESIS_FILE | jq .slotsPerKESPeriod)
59-
KES_PERIOD=`expr $SLOT / $SLOTS_KES_PERIOD`
59+
KES_PERIOD=$(( $SLOT / $SLOTS_KES_PERIOD ))
6060

6161
### Generate Operational Certificate
62-
CARDANO_CLI_CMD node issue-op-cert \
62+
CARDANO_CLI_CMD ${CARDANO_ERA} node issue-op-cert \
6363
--kes-verification-key-file ${POOL_ARTIFACTS_DIR}/kes.vkey \
6464
--cold-signing-key-file ${POOL_ARTIFACTS_DIR}/cold.skey \
6565
--operational-certificate-issue-counter ${POOL_ARTIFACTS_DIR}/opcert.counter \
6666
--kes-period $KES_PERIOD \
6767
--out-file ${POOL_ARTIFACTS_DIR}/opcert.cert
6868

6969
### Create a registration certificate
70-
if [ "${CARDANO_ERA}" == "conway"]; then
71-
KEY_REGISTRATION_DEPOSIT_ANOUNT=$(CARDANO_CLI_CMD ${CARDANO_ERA} query gov-state --testnet-magic ${NETWORK_MAGIC} | jq -r .enactState.curPParams.keyDeposit)
72-
# Conway specific creation of registration certificate
73-
CARDANO_CLI_CMD stake-address registration-certificate \
74-
--stake-verification-key-file ${POOL_ARTIFACTS_DIR}/stake.vkey \
75-
--out-file ${POOL_ARTIFACTS_DIR}/stake.cert \
76-
--key-reg-deposit-amt $KEY_REGISTRATION_DEPOSIT_ANOUNT
77-
else
78-
# Legacy creation of registration certificate
79-
CARDANO_CLI_CMD stake-address registration-certificate \
80-
--stake-verification-key-file ${POOL_ARTIFACTS_DIR}/stake.vkey \
81-
--out-file ${POOL_ARTIFACTS_DIR}/stake.cert
82-
fi
70+
KEY_REGISTRATION_DEPOSIT_AMOUNT=$(CARDANO_CLI_CMD ${CARDANO_ERA} query gov-state --testnet-magic ${NETWORK_MAGIC} | jq -r .currentPParams.stakeAddressDeposit)
71+
CARDANO_CLI_CMD ${CARDANO_ERA} stake-address registration-certificate \
72+
--stake-verification-key-file ${POOL_ARTIFACTS_DIR}/stake.vkey \
73+
--out-file ${POOL_ARTIFACTS_DIR}/stake.cert \
74+
--key-reg-deposit-amt $KEY_REGISTRATION_DEPOSIT_AMOUNT
8375

8476

8577
### Compute Pool Id
86-
POOL_ID=$(CARDANO_CLI_CMD stake-pool id --cold-verification-key-file ${POOL_ARTIFACTS_DIR}/cold.vkey)
78+
POOL_ID=$(CARDANO_CLI_CMD ${CARDANO_ERA} stake-pool id --cold-verification-key-file ${POOL_ARTIFACTS_DIR}/cold.vkey)
8779
echo $POOL_ID > ${POOL_ARTIFACTS_DIR_PREFIX}${POOL_ARTIFACTS_DIR}/pool-id.txt
8880
echo POOL_ID=$POOL_ID
8981

9082
### Send funds to / Check utxo payment address
9183
echo Send funds to "$(cat ${POOL_ARTIFACTS_DIR_PREFIX}${POOL_ARTIFACTS_DIR}/payment.addr)" at https://docs.cardano.org/cardano-testnet/tools/faucet
9284
while true
9385
do
94-
UTXO_ROWS_NUMBER=`expr $(CARDANO_CLI_CMD query utxo --address $(cat ${POOL_ARTIFACTS_DIR_PREFIX}${POOL_ARTIFACTS_DIR}/payment.addr) --testnet-magic $NETWORK_MAGIC 2> /dev/null | wc -l) - 2`
86+
UTXO_ROWS_NUMBER=$(( $(CARDANO_CLI_CMD ${CARDANO_ERA} query utxo --address $(cat ${POOL_ARTIFACTS_DIR_PREFIX}${POOL_ARTIFACTS_DIR}/payment.addr) --testnet-magic $NETWORK_MAGIC 2> /dev/null | wc -l) - 2 ))
9587
if [ $UTXO_ROWS_NUMBER -gt 0 ] ; then
9688
echo ">>>> Funds Received!"
9789
break

0 commit comments

Comments
 (0)