# Null Address

Cryptocurrency is built on top of the concept of “Public Key Cryptography” which itself involves pairs of “Public” and “Private” keys.

The idea is that, via certain mathematical constructions, it is possible to use these pairs to secure access, sign messages and prove ownership in a way that everyone can observe (the public bit) by employing a small piece of private information (the private bit).

These constructions generate pairs of seemingly-random strings. For example let us assume we wish to generate a pair of 40 digit keys. The chances our public key turns out to be a string of 40 1s is so close to zero that even if this process were repeated continually for billions of years the probability would remain near-0. There is no known observable structure to these strings beyond the cryptographic connections which enable their generation and use.

Further, while there is a mathematical relationship between the two halfs of a “Key Pair” it is not mathematically tractable to derive one from the other. Critically it is feasible to generate a pair simultaneously. And it is precisely this asymmetry – that it is easy to generate a pair but functionally-impossible to reconstruct a pair given only one half – that provides security.

One corollary of this property is that if one picks half of a pair randomly rather than through a proper key generation process then they will not be able to find the other half. The other half exists – but our current understanding of mathematics is that it will require an impractically long period of time to find it. Oftentimes this “impractically long” period of time substantially exceeds the age of the universe.

Blockchain addresses are linked to, and sometimes literally are, the public keys from such pairs. This is how the technology works. Users are able to see and verify ownership publicly (via the public key which everyone can know) but only transact from a given address with knowledge of the private key.

This means if someone makes up a blockchain address on their own rather than through proper key generation they will not, in the foreseeable future, have access to the private keys. They can publish the address. Other users can send funds to the address. But they cannot access those funds because they do not have the private key.

In theory then anyone can just generate a random bitstring and claim they do not have the corresponding private keys. But there is no way to prove this. As the strings all look random an observer cannot tell if a presented string was generated randomly or from a key generation process. There is no way to prove the non-existence of your copy of the private key.

Consequently the convention used for most blockchains is to use a string consisting entirely of 0s – know as the “null address” – to indicate “unknown private keys.” That string was clearly not randomly generated. But given what we know about the key generation process we know it is unlikely anyone has the private key. It is also fairly common to see addresses like 0x000...000dead or other pretty-clearly-human-generated strings used for this purpose.

This is not an absolute guarantee. But it is as reliable as the cryptography itself.

You also must check whether such an address is built-in to the blockchain and possibly able to operate outside the system rules. That is, whether the address is a Genesis or "Built-In" Contract which is controlled within the blockchain's nodes rather than public smart contract code.

Often such contracts look like the sorts of addresses one might use for Renouncing Ownership but they are in fact something entirely different. There is no way to guess or infer this -- you have to look at the data and documentation. In general you should not trust the documentation alone; there is a substantial public history of the docs missing important addresses until the developers are called out.

Last updated