It all started with this discussion:

https://www.reddit.com/r/gnosisPM/comments/63o02s/gnosis_crowdsale_psa/

The point was that after the upcoming Gnosis IPO, the company might end up with a lot of not-sold GNO tokens. The author then suggests:

I would have preferred if the remaining tokens were burned…

But how? Is there a clear way to destroy tokens? Of course, the company can create an address with a random password that nobody knows and then transfer the tokens to it. But, how we all can be sure that nobody knows the password?

Then I thought, it would be a much better idea to create a contract to destroy unwanted tokens.

As you know, it is possible to send tokens to any address, even to a contract. The difference between a normal address and a contract is that there is no private key associated with the contract. That means, nobody can transfer any funds from the contract, except the contract itself. And if there is no special code inside the contract to do so, you can be absolutely sure that tokens stay there forever.

I decided to create such token destroyer. I called it TokenShredder. It is up already in the blockchain:

https://etherscan.io/address/0xfdb96ecf50c97ae1966dccdd90e7a0d4fa260b39#code

The code is open and verified. I should probably be more correct and say that the lack of code is open and verified ;)

The only meaningful line in the code is this:

pragma solidity ^0.4.0;

The line guarantees that Solidity compiler used for the compilation has at least version 0.4.0. This is important because of the nice feature preventing sending Ethers into the contracts with no fallback function implemented. That prevents somebody sending Ethers into the TokenShredder.

After deploying the TokenShredder I tried to send 0.01 REP into it. You can see it by clicking on the “View Tokens Balance & Value”. Those 0.01 REP are destroyed forever. RIP…

I also tried to send some ETH into the contract. The Parity client is smart enough to warn me about the exception, even before I click send. It looks like all is working as we need.

Now, back to the Gnosis discussion. If they decide to destroy some tokens ( I think they should), they can simply send some of them to the TokenShredder. We will all see the amount landed there and once it is done, we can be sure that those tokens are indeed destroyed.