New pool certificate error

Hello,

I am trying to generate a new pool certificate (changing some metadata), and I did it successfully before. However, I updated the pool to 1.32.1 and when the other owner tries to sign the transaction (using AdaLite) it says “parser error” and that “txBodyMary” is expected as the codification of the transaction body but that is not found.

When I check the tx.raw content, I can see that there is only “txBodyAlonzo” and no “txBodyMary”.

How could I solve the issue? Even if I change “txBodyAlonzo” for “txBodyMary” in the transaction, then I get an error in the decoding step when signing the transaction in the cold environment (but the other owner can sign the transaction successfully). I guess the issue is related to the last update as when I did it in 1.30.1 there was no issue, all went good, the body was just as expected from Mary era, not including Alonzo specification. However, now it only includes Alonzo reference and there is a mismatch between expected content body and the one generated.

Could you help me on the issue?

Thanks!

When you create the transaction to register the new pool certificate, you should use the “–mary-era” parameter, in this is the error. This happened to me, too, then trying to witness this transaction with the Ledger hardware wallet, its current firmware does not support Alonze era transactions yet.

Hi. I am having the same problem trying to witness with a Trezor T, even though the hwsfile and vkey were exported correctly. Where can I specify the “–mary-era” parameter?

I am following the Coincashew guide (18. Operational and Maintenance Tips - CoinCashew)

The following command:

cardano-cli transaction build-raw \
    ${tx_in} \
    --tx-out $(cat payment.addr)+${txOut} \
    --invalid-hereafter $(( ${currentSlot} + 10000)) \
    --fee ${fee} \
    --certificate-file pool.cert \
    --out-file tx-pool.raw

becomes:

cardano-cli transaction build-raw \
    --mary-era \
    ${tx_in} \
    --tx-out $(cat payment.addr)+${txOut} \
    --invalid-hereafter $(( ${currentSlot} + 10000)) \
    --fee ${fee} \
    --certificate-file pool.cert \
    --out-file tx-pool.raw
1 Like

Hi @georgem1976

I am trying to sign a new hw certificate, however, while witnessing with Trezor T I get:

with cardano-cli command
Command failed: transaction witness Error: Error reading signing key: hw-stake2.hwsfile: Invalid key

with cardano-hw-cli command
Error: Invalid file contents of tx-body-file

Is there a particular firmware version Trezor needs?
I am using cardano-hw-cli 1.12 as in your tutorial.

Thanks

What guide are you using? Because you mention cardano-hw-cli 1.12, I assume you are using this guide: How to Secure Pledge with Hardware Wallet - How to Guides for Coincashew Method Cardano SPOs

The Error: Invalid file contents of tx-body-file error message occurred to me many times, but the --cddl-format should resolve it.

I never had the chance to test my scripts on a Trezor, but I assume the latest version of the firmware should work. You should also use cardano-hw-cli 1.13 (the latest), and cardano-cli 1.35.5.
If you write here the exact commands you are running and the exact error messages, I’ll try to run them using on my Ledger, to see if I also get them, and I’ll try to find out how to resolve them.

1 Like

I installed cardano-hw-cli 1.13, updated the Trezor firmware to latest and used:

cardano-cli transaction build
–mainnet
–cddl-format
–witness-override 4
–tx-in <example: 45de23872ce59c8b6f2fb5e2f39741e0dd8a45f9b496c46ed117396a21b5f4bc#0>
–change-address $(cat payment.addr)
–certificate-file pool.cert
–out-file tx.raw

It worked like a charm. I was able to witness the certificate with Trezor T.

Thank you very much for your help and hw guide @georgem1976

Reference:

1 Like

You are welcome, I’m glad it worked!

1 Like