I looked up 0x0000000000000000000000000000000000000000 on Etherscan, and realized that the address holds a lot in ERC tokens.

While the ETH balance (about 7,549 ETH or about $841,000) isn't abnormal, the token balance is (it is $1.515973e+67 in tokens).

The token balance is a huge $1,515,973,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000, or 1,515,973 million octillion octillion.

How does the genesis address have an unrealistic $ amount of tokens? AFAIK, 1,515,973 million octillion octillion is more then all the money is the world, cryptocurrency and not.

  • If you find the private key for this address, then you will be able to retrieve these tokens. Dec 1, 2018 at 7:30
  • 0x000... is the wallet used to burn tokens. Dec 1, 2018 at 14:26
  • How is this a duplicate? I was asking how the genesis address had an unrealistic amount of tokens, not who has access to it.
    – Zackary
    Dec 4, 2018 at 18:23

2 Answers 2


These tokens are not in circulation, they are permanently stuck. So it's not really fair to consider them as having any value, or to count them as part of the market capitalization.

When you initially create a token, you can assign any amount of tokens to any address you want. Also, you can (to a certain extent) lie about the total supply of your tokens.


Basically, the etherscan.io code is written in a way that does not prevent these kinds of 'lies' from being displayed.

As you can see, in this token the 0x0 address supposedly holds way more than 100% of all tokens.


A token is just a smart contract. It can assign any balance it wants to any address.

If I deployed the following code, address 0 would have 115792089237316195423570985008687907853269984665640564039457584007913129639935 FOO tokens. Regardless of what price FOO tokens might be bought and sold for, the fact that address 0 owns that many isn't particularly important.

contract {
    string public name = "FOO Token";
    string public symbol = "FOO";
    uint256 public totalSupply = 2**256-1;
    mapping(address => uint256) public balanceOf;

    constructor() public {
        balanceOf[address(0)] = totalSupply;

    // more ERC20 functions here

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