6

I'm studying solidity programming, and I have a question on this line of code:

Transfer(0x0,msg.sender,tokens);

I don't understand what 0x0 means. Is it the new token address or is it the new smart contract's address?

pgSystemTester
  • 8,979
  • 2
  • 23
  • 49
Harry
  • 61
  • 1
  • 4

1 Answers1

16

0x0 is essentially a black hole of an address. Ether funds go in, none come out (kind of like a marriage!). It's an abbreviation for the genesis address 0x0000000000000000000000000000000000000000, which with almost absolute certainty nobody has the private key for, so it can't be spent. Note that tokens like ERC20 can be transferred OUT depending on the contract, but not Ether.

Amusingly/tragically a lot of people screw up and send money here by accident.

In your case, it looks like the contract is trying to send money to this address. Apparently, there's some use cases for this called "proof of burn" which I guess means that you can send ether? I don't quite understand that as it's literally taking Ether out of circulation.

Other cases can be for using it as a large amount for an address for comparison. Example is your_ETH_balance < 0x0 (Is probably TRUE).

Currently, 0x0 has 7251 ether (and growing since I started typing). Today's trading puts it worth about $4.2 million, so it'd be one of the more valuable addresses to crack if you happen to have a functional quantum computer (which you don't).

pgSystemTester
  • 8,979
  • 2
  • 23
  • 49