1

The zero-acount 0x0 is used by some smart contracts to store tokens (valued at 1B$ : https://etherscan.io/address/0x0000000000000000000000000000000000000000)

It is used by smart contracts because there are inputs and outputs of tokens from it. So why this particular address ?

1

The zero-acount 0x0 is used by some smart contracts to store tokens

No it isn't :-)

It is used by smart contracts because there are inputs and outputs of tokens from it.

There aren't any real outgoing transactions from this address, because that would imply that someone has found the private key equating to the address, which would cause problems because...

So why this particular address ?

...this particular address is used as a burn address1. The assumption is that no one holds the private key to this address. (There is as much chance of finding the private key to address 0x0 as there is any other address.) Therefore it can be used as a place to send tokens and ETH if you don't want them to be used again. There are various reasons for wanting to do this.

What you're actually seeing is explained in a previous post: Why Transfer(0x0, _to, _amount) after Minting Tokens

The outgoing transactions are transfer events which are generated when new tokens are "minted" inside an ERC-20 contract. The "from" address is essentially a placeholder, and 0x0 was chosen for it. It's confusing because then these events show up in EtherScan's accounting records for 0x0.

1It's also an address that gets used mistakenly, causing people to lose their funds.

  • There are token transfers in/out : etherscan.io/address/… Meaning some contracts have chosen this particular address to store or do something with tokens they manage. – arctic0 Apr 29 '18 at 18:52
  • Okay, I was looking in the wrong place :-) These outgoing transactions aren't actually from the account with address 0x0. When some new tokens are transferred to a user's address inside an ERC-20 contract, a transfer event is logged. To make this transfer show up in EtherScan, they had to use a dummy 'from' address, and they decided to use 0x0. This is confusing, because it makes it look like real transactions are happening from 0x0, which isn't the case. It's just these transfers get associated with EtherScan's real records for 0x0. I'll update my answer. – Richard Horrocks Apr 29 '18 at 19:01
  • How does Ethereum differentiate between 0x0, the account address, and 0x0 as the syntax used for contract creation? – GViz Jun 14 '18 at 2:21
  • For contract creation, the transaction must target address 0x0, and contain executable contract code (and associated constructor parameters) in the transaction's data field. If there's not data (or the data isn't considered sane), then the transaction is considered a basic transfer. – Richard Horrocks Jun 14 '18 at 9:31

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.