As you all know, Moons have a fixed supply now. Actually, they are even deflationary, because we are burning Moons with some mechanisms like the banner purchase. For burning we are currently using the address
0x000000000000000000000000000000000000dEaD
Which is actually only a vanity address, and not a real burn address. While we can be sure no one will ever find the private key to this address, it is still counted as a holder and doesn’t affect circulating supply.
But did you know Moons can be burned for real by sending them to the burn/mint address?;
0x0000000000000000000000000000000000000000
Wallets don’t accept this as a receiving address, it has to be done by calling the burn function of the Moons contract. So here I show you how to do this with Metamask on Desktop.
Preparations
First you need to enable the hex data in the MetaMask settings. Open the Settings, go to the “Advanced” tab and turn on “Show hex data”.
Constructing the correct hex data for the interaction
The Moon source code was never published by Reddit, so we can’t use the “Write Contract” functionality from a block explorer. Instead the hex data has to be contracted manually.
From a tiny bit of reverse engineering from one of the last official Reddit burns, we can find the hex data of the burn has to look like this:
0xfe9d930300000000000000000000000000000000000000000000####################00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000
Here, fe9d9303 is the method (the burn function) and #################### is the raw value of the amount of Moons to burn in hexadecimal. Let’s make an example to see what to enter here to burn 1 Moon:
Ethereum doesn’t know decimals in raw values, so there have to be 18 zeroes added (this can differ for other tokens, but it’s the default value):
1000000000000000000
For the conversion to hexadecimal we can use an online calculator:
DE0B6B3A7640000
In the hex data above, there have to be 20 chars added, these are only 15. So we add 5 zeroes at the start:
00000DE0B6B3A7640000
And now we put this into the placeholder above to get the full hex data:
0xfe9d93030000000000000000000000000000000000000000000000000DE0B6B3A764000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000
Making the contract interaction
To make a contract interaction with Metamask, we need to make a zero value transfer to the contract and attach the hex data.
The Moons contract address is:
0x0057ac2d777797d31cd3f8f13bf5e927571d6ad0
Click “Send” in Metamask, take the contract address as the receiver and make sure to paste the entire hex data from above. Leave 0 in the ETH field. It should look like this:
Small note: There is sometimes a bug where Metamask grays out the “Next” button if the amount is zero. To fix it, just switch to a token, and then back to ETH – this will usually enable the button.
Click “Next”, double check the receiver and hex data, and if everything looks good, confirm the transaction.
And if you did everything right, you should be able to view the burned amount on the block explorer:
Thank you u/GabeSter for trying this out and sacrificing a Moon
If you refresh the Moons page on the block explorer, you will see the total supply has dropped by the amount of Moons you burned.
Congratulation! You reduced the total Moon supply!
Conclusion
This might be a little complicated if you never did something like that, but you can directly burn Moons (for real) and reduce their circulating supply. Since there won’t be any mints again, these Moons will not be reintroduced.
I’d heavily advise you to use a separate wallet/address (literally a burner wallet) for this and only have the amount you want to burn and a little bit of gas in there. If you made an error in the hexadecimal number, the amount of Moons you (try to) burn could be smaller, but also larger. Don’t make this from your vault unless you are an expert.
This is also a nice little exercise to understand how ETH contract interactions are done. Usually people are afraid from such things because they could lose their funds. But what could go wrong when burning the only token a wallet holds?
Outlook
For simplicity reasons and because of reintroduction of burned Moons, mods have chosen to use the vanity burn address in the past. Now there is no reintroduction any longer, so maybe we should switch all burns to this? Having a website that initiates the right transaction automatically shouldn’t be too hard to make.
submitted by /u/Maxx3141
[link] [comments]