10

I'm guessing it means remove the token from circulation, permanently. In a real-world example that would be akin to literally throwing cash into a fire? What are the technical details involved in the process?

Furthermore, how does this all work in token conversion?

Edit: will ask above as a separate question.

6

One way in which Tokens/ADA can be burned is by sending them to a contract which has a deadline for extracting them. Once the deadline is passed, the validation script will never be able to validate and thus burning them. It would be wise to make the deadline the current slot so that there would be no chance of Tokens/ADA being extracted before the deadline passed. This can be done as soon as smart contracts are available on the Cardano mainnet.

If you want to burn a token in the current state of the mainnet, there is also the option to send the tokens to a "burner-wallet", a wallet that nobody has access to (anymore). However, you can never be 100% sure that nobody has the private key to this wallet, so the first option would be better in most cases.

6
  • 1
    Ah, clever, I understand with the dead-end contract. Any thoughts on how this correlates with token conversion? I can't quite wrap my head around how, as if by magic, you convert ETH into ADA. The token converter demo appears to conjure ADA out of thin air. Or is there really a 3rd-party exchange that has the ADA reserves to issue?
    – xanadont
    Jun 8 at 17:15
  • I don't know much about token conversions :/ Maybe ask this as its own question? Jun 8 at 17:41
  • 1
    Dig it. Thanks!
    – xanadont
    Jun 8 at 18:28
  • 1
    Can't you just send it to a standard address like the null address or something like that? If you choose an address randomly and someone has the key of this address, then cardano is not secure at all (because it is basically the same as the probability that you have the same public key as someone else). Or am I missing something?
    – Distic
    Jun 10 at 10:03
  • 1
    Another way to burn is to send it to script which validator always returns an error like it is presented at Week 2 Plutus pioneer program plutus-pioneer-program.readthedocs.io/en/latest/…
    – zarej
    Jun 13 at 6:25
4

I have not reviewed the specification for Cardano private keys, but in many crypto-currencies a private key must have some specific characteristics, for example so many Bytes in size.

Because of the mechanisms used for generating addresses from private keys (usually at least one cryptographic hash function is used) even an invalid private key that does not have the right attributes (perhaps not containing enough Bytes) can be made to generate an apparently valid address.

This invalid private key to valid address cant be created in a standard wallet, but recreating address generation in some custom code, and just feeding it invalid private keys will give burn addresses.

Coins can be sent to a burn address, but because the private key is invalid, no valid signature can be created to spend the coins, and so they become impossible to move and are "burned".

An address can be proven to be a burn address by simply publishing the invalid private key with the address, and then anyone can validate the address is a genuine burn address.

1
  • I see. Makes a lot of sense. Thanks for providing a clear example.
    – xanadont
    Jun 14 at 14:45
4

One way to burn a token would be to send it to a script address where the validator always fails. One of the simplest validators in Plutus would look something like this...

  mkValidator :: Data -> Data -> Data -> ()
  mkValidator _ _ _ = error ()

Since any UTxO belonging to a script address can only be used as an input to another transaction if its validator passes, then no UTxO at an address with such a validator can ever be spent.

You could still see all UTxOs sitting "inside" the script, including which tokens or Ada they contained, but they would not be retrievable.

3

In the world of Native Assets in Cardano, one can perform a negative mint procedure a.k.a. DESTROY on tokens as long as the Policy behind it is still open. This essentially takes it completely out of circulation. It’s like throwing an item into lava in Minecraft. This can all be done through the Cardano-CLI even in the absence of Smart Contracts on Cardano. Note that this process isn’t like what other networks do by simply locking tokens away in addresses and hope the private keys will never be found/used. I consider this to be a rather transparent and ultimate approach

1

If someone wants to achieve a cryptocurrency's deflationary effect – then he/she burns a token. This process reduces the overall number of tokens in circulation, therefore boosts the cryptocurrency's value. So if you wanna burn a token/crypto, just create a new wallet, send there some tokens/cryptos to burn, and then delete this wallet and its recovery phrase.

Or, if you wanna burn a token using smart contract, there will be a simple way to do it – make a validator always evaluate to false, so script address' UTXOs will always be locked.

mkValidator :: () -> () -> ScriptContext -> Bool
mkValidator _ _ _ = False

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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