How to update metadata?

Have just registered the stake pool and made a typo and got a metadata hash mismatch.

What’s the best way to just update the metadata?

curl | jq

“time”: “16.02.2021. 20:01:04”,
“retryCount”: 1,
“poolHash”: “227b9dfa35c1103dec106c551b60a2faf5741ec9554c24d8e475f128385ec7c3”,
“cause”: “Hash mismatch from poolId ‘41f3b15c7c181a004e178446c33a379c686d404aa99ad680199d8b83’ when fetching metadata from ‘’. Expected 227b9dfa35c1103dec106c551b60a2faf5741ec9554c24d8e475f128385ec7c3 but got 9504631ac8324737c9027df56fceac85d696944943016139c6d7c47dcda6a20f.”,
“poolId”: “41f3b15c7c181a004e178446c33a379c686d404aa99ad680199d8b83”,
“utcTime”: “1613505664.341765s”

resubmit the registration and pay the fees once more.
Last month it was also a good idea to change the name of the pool meta data file.


Yes, exactly that. How to avoid paying 500 ADA registration fee.

No you do not pay the 500 deposit a second time.
I am not talking about registering the stake address but the stake pool.

Which is just updating your metadata. Check out for example this:


Oh, great. That’s the method I was looking for!
Thank you.

Just so everyone knows - I’ve tried that CoinCashew guide against node 1.25.1 and it doesn’t work; TX is rejected. If anyone running 1.25.1 has been successful with it, let me know.

@ttupper : Hello Thomas, i’ve tried that today and failed.
Unfortunately i get a very weird error message telling me that i do not hav enough funds to cover the transaction, even though it shows i have enough.

I’ve added my findings to this bug here on github.

Executed Command: /bin/bash -c “cardano-cli transaction build-raw --tx-in 37e2e7cb47e685aa4efc170f298ab7d80c9ba354b4e29b8bf2e2219864d54c83#0 --tx-out $(cat payment.addr)+98065927 --invalid-hereafter 19310234 --fee 195377 --certificate-file pool-registration.cert --certificate-file delegation.cert --out-file tx.raw;”
Executed Command: /bin/bash -c “cardano-cli transaction sign --tx-body-file tx.raw --signing-key-file payment.skey --signing-key-file stake.skey --signing-key-file cold.skey --out-file tx.signed;”
Executed Command: /bin/bash -c “cardano-cli transaction submit --tx-file tx.signed --$CDN_NETCMD ;”
Error Result: Shelley command failed: transaction submit Error: Error while submitting tx: ApplyTxError [LedgerFailure (UtxowFailure (UtxoFailure (ValueNotConservedUTxO (Value 598261304 (fromList )) (Value 98261304 (fromList )))))]

Can you please post the error message you receive and also the precise steps ?

Update: It’s working on my side if i only pay the normal transaction fees instead of fees + poolDeposit. I’ve changed that and now its working as it should.

Hi - I’ve been following the guide located here:

I get this error:

Shelley command failed: transaction submit Error: Error while submitting tx: ApplyTxError [LedgerFailure (UtxowFailure (UtxoFailure (ValueNotConservedUTxO (DeltaCoin 2677700273) (DeltaCoin 3177700273))))]

I opened a bug on this with IOHK yesterday - it is here if you’d like to add your own commentary. It seems like they have not even looked at it yet.

I also filed a bug against CoinCashew on the offhand chance that the guide needs to be updated. It is here.

Ok, so I got frustrated with this, and I just crafted a tx that sent my entire payment.addr balance to myself, minus the transaction fee. And in the temp tx, I made sure to bundle the pool and deleg cert:

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

Note that the destination address in this was the same as my payment.addr. And… the TX was successful. I have no idea if it will update my registration, but i’m hopeful. I’ll know in two epochs!

Hello @ttupper:

from my understanding it’s wanted that you take the whole lovelace which is in the tx_in and split it up into: a. the amount you want to sent b. the chargeback amount (minus fees).

There are three different fees to take into consideration:

  • General Fee (has to be paid always)
  • Stake certificate registration fee (has to be paid if you create a new stake key pair and the related stake.cert and register it on the blockchain)
  • Poolreg certificate registration fee (has to be paid the first time you send a pool-registration.cert to the blockchain). The second time you do so (e.g. changing the fees, or metadata) you do not have to pay this fee. More important: If you sent a transaction which includes the fee, but you dont need to, you get a (in my oppinion) weird error, telling you that something is wrong with the transaction (thats the bug i commented).

I hope this helps you on the road to your successful pool.

Of course. And that’s what I’m doing. And every time I do, it tells me I needed to send 500 ADA more. It is requiring the fee every time.

@ttupper :

Let’s have a look together at the issue. Please post the error message, and then we can see what the issue is. Please also do two tries and for both times please also post the content of your pool-reg.cert here. If the blockchain requires you to send the 500 ADA multiple times, then there are just two possible reasons for that:

  1. Registering failed and 500 ADA are not withdrawn from your balance
  2. Registering successful and 500 ADA are withdrawn from you balance, but on the second try you generated a new poolreg.cert based on other keys and hence you register a second! pool.

I had the similar issue with incorrect metadata and searched these threads for help, but no cigar. Good news is that I’ve found a solution! To avoid paying the pool registration fee again - go to your stake pool folder location in ubuntu, find and open params.json file and edit the pool registration fee amount to “0”. You can then follow coincashew’s instructions verbatim. Building the transaction will pull through “0” for pool registration fee and you’ll only pay the transaction fee. Everything will update nicely.

I’ve been trying to solve the same issue.

So you are suggesting we can edit the line in our params.json which reads:

“poolDeposit”: 500000000,

to read

“poolDeposit”: 0,

and proceed as normal with a new pool.cert (with an url referencing the corrected metadata in it!)

and that’s it? Just want to be specifically sure before I go ahead!


Correct. pooldeposit is the correct entry.

I could update my metadata.json using the guide from coincashew. However, now the pool name and the website link are gone.
Any hint?

It’s normal for the pool to disappear in Daedalus for several hours after updating metadata, but it should remain viewable on pooltool and adapools.

If it has disappeared from pooltool, you probably need to re-submit your pool cert. Make sure you’ve updated your pool cert with the updated metadata hash.

It has disappeared from pooltool. After regenerating the pool cert and resubmitting the transaction, I can see the name pool and the weblink again. Thanks!

I have tried to update Metadata and Fees following the instructions in CoinCashew Toutorial but get the same error Missing: (–tx-in TX-IN) even if I change this value poolDeposit to 0.
Any idea how I could try, please?

Thanks in advance

I have since used Coincashew guide to update normally without adjusting the params.json

Try working through section 18.4 on coincashew guide and see if that works out.

I do remember once something messing up in the .tx files. So perhaps try deleting the raw.tx and temp.tx and other .tx files that are floating in your node directory from past attempts. Then start afresh.