I need to generate a Proof-of-Burn address for a project I'm working on.

I'm almost sure I can generate a valid "unspendable" address myself but I don't know how to make it verifiable and if there is a verified utility that can generate such an address.

I tried to read and understand this:


This is a nice read, but I'm not sure I can fully understand any aspect of it.

For example this simple script I made create what I think is an "unspendable" address:

$ bech32 addr_xvk <<< $(for i in {1..64}; do printf "20"; done) | \
> cardano-address address payment --network-tag 1

And it's valid, it works, and I can also add some my own text at the beginning to make it unique, instead of 64 spaces...

But is it acceptable as a verifiable Proof-of-Burn address?

Is there any generally approved way to generate a Proof-of-Burn address on Cardano?

  • Maybe off-topic, but out of curiosity, what do you want to burn? Ada or some native assets ? Third party policy or own policy ?
    – Jey
    Jan 12, 2022 at 18:08
  • 1
    My token pool.pm/…, sadly with minUTxOValue of ADA each time but this is another problem... The policy will be locked at the time of project start. pool.pm/policy/… Jan 12, 2022 at 19:58

2 Answers 2


I think that the address you generate is plausibly unspendable but not provably. I can imagine that by tweaking a Plutus validator script with a lot of time and computing power you could generate a spendable script that compiles to some regular byte pattern hash that you can than pretend to have derived from an expression such as the one in your example. (Though, a repeating pattern of a two digit number for 128 bytes would probably be impossible to tweak.)

I haven't read the article but the easiest way to get an unspendable script address would be to take an unspendable Plutus validator script (like the one that always evaluates to 'false') and use its script address. This would be verifiable. Even better would be a script that allows cumulating funds so that you can re-use the UTxO and only have to pay the min-Ada once.

This being said, I don't think that these dead-end burn-UTxOs are a sustainable solution. They pollute the ledger and bind Ada. In the long term they inevitably get too expensive. The better solution is to design the currency policy of your token in such a way that tokens can always be burned. This requires the policy to be written in Plutus.

  • as I know all the computing power of the world for hundreds of times the age of the universe is not enough to crack it, but yes, this is what I'm looking for: a verifiable and credible way to do it... I will take a look at the policy written in Plutus, it may be the best solution afterall. Thank you. Jan 13, 2022 at 0:45
  • You are right, the tweaking is impossible. So it rather comes down to how believable it is that you took the hash at random and did not use the hash of a spendable script (which is very believable here). I will edit the response.
    – Jey
    Jan 13, 2022 at 7:47

Really a burn address is quite simple to make on a practical level. If you accept the script address then all you have to do is write a smart contract with a validator that can never be validated but is still acceptable to the standers of the chain.

So put some condition like the current block is the geniuses block and your good to go. This is beacuse of sequential nature of the block chain.

Now when vasil comes out people can easily lool up the specific address and when a decomplier comes out they can verify the contract on chain.

But until then there is still some degree of trust required that you sent the wright contract to the chain.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.