In general, yeah you can choose any arbitrary address that you want for null address.

The reason you can do that is because it is almost impossible for you to choose a random address that somebody already has a private key for it. Let's do some math to prove it, an address is 256 which mean it can go up to 2^256. The earth population at this time (12/2021) is about 7.9 billion but i will make it 8 billion for ease in calculation. Assume every person in the planet has 100 private key corresponding to the address they have. Then the possiblity that you can choose an address that they already choosen is about 10^-66 (https://www.wolframalpha.com/input/?i=800%2C000%2C000%2C000+%2F+2%5E256).

The possiblity that you win a Powerball is one in 292.2 million, roughly 10^-9 (https://www.thebalance.com/what-are-the-odds-of-winning-the-lottery-3306232). So you will have to win Powerball roughly 7 times in a row to even get a chance in picking a random address that somebody already has the private key given that everybody on the earth have 100 private keys

Answer from KishouYusa on Stack Exchange
🌐
Etherscan
etherscan.io › address › 0x0000000000000000000000000000000000000000
Null: 0x000...000 | Address: 0x00000000...000000000 | Etherscan
This address is not owned by any user, is often associated with token burn & mint/genesis events and used as a generic null address
Discussions

cryptography - What is address(0) in Solidity - Stack Overflow
It's not actually true that a contract ... the zero address (meaning 0x00...000). This is an easy mistake to make (and I've made it too) as it is described that way in many resources. The passage you cite from the Solidity docs were updated to state this: If the target account is not set (the transaction does not have a recipient or the recipient is set to null), the transaction ... More on stackoverflow.com
🌐 stackoverflow.com
What does address(0) mean in solidity?
Anyone can give me a detailed explanation? When to use it and what its functions are. More on github.com
🌐 github.com
1
November 4, 2024
Is there a PK for the null address?
Yes, the null address does have a key, the same way all addresses within Ethereum have a private key. However, nobody has the key for it (simply because having the key for a specific address - in this case 0x00...0 - is like winning the lottery of the universe 1 / 2160 ). Fun website that "generates" all Ethereum private keys: http://www.ethersecret.com/ (DO NOT search for your own private key so it does't end up in some webserver log). More on reddit.com
🌐 r/ethereum
43
9
October 13, 2017
c - Why is NULL not a valid memory address? - Stack Overflow
It may sound like a silly question, but since in C, NULL is literally defined as #define NULL 0 why can't it be a valid memory address? Why can't I dereference it, and why would it be impossible f... More on stackoverflow.com
🌐 stackoverflow.com
🌐
PixelPlex
pixelplex.io › home › glossary › zero address
Zero address Definition
May 23, 2025 - The zero address, also known as the null address, refers to a special blockchain address that consists entirely of zeros (e.g., 0x0000000000000000000000000000000000000000 in Ethereum-like systems).
🌐
Etherscan
etherscan.io › address › 0x000000000000000000000000000000000000dead
Null: 0x00...dEaD | Address: 0x00000000...00000dead | Etherscan
This address is commonly used by projects to burn tokens (reducing total supply). Null: 0x00...dEaD · Burn · API · Token Approvals Beta · Validate Account Balance Check Previous Balance · Update Name Tag or Label · Remove Name Tag · ...
🌐
Metaschool
metaschool.so › home › answers › what is address(0) in solidity
What is Address(0) in Solidity -
March 29, 2024 - Address(0), also known as the zero address or null address, embodies a distinct Ethereum address:
🌐
Base
basescan.org › address › 0x0000000000000000000000000000000000000000
Null: 0x000...000 | Address: 0x00000000...000000000 | BaseScan
This address is not owned by any user, is often associated with token burn & mint/genesis events and used as a generic null address
🌐
Education Ecosystem
educationecosystem.com › home › what is the null address in crypto?
What is the Null Address in Crypto? Null Address in Crypto
January 3, 2022 - Standard addresses are just a string ... On the other hand, a null address is an address created specifically to receive tokens that are being intentionally removed out of circulation....
Find elsewhere
Top answer
1 of 4
51

Within an Ethereum transaction, the zero-account is just a special case used to indicate that a new contract is being deployed. It is literally '0x0' set to the to field in the raw transaction.

Every Ethereum transaction, whether it's a transfer between two external accounts, a request to execute contract code, or a request to deploy a new contract, are encoded in the same way. A raw transaction object will look something like this:

transaction = {
  nonce: '0x0', 
  gasLimit: '0x6acfc0', // 7000000
  gasPrice: '0x4a817c800', // 20000000000
  to: '0x0',
  value: '0x0',
  data: '0xfffff'
};

If to is set to something other than '0x0', this request will result in transferring ether to the address (if value is non-zero), and execute the function encoded in the data field. Remember, the address can either be a contract or an external account.

When the to address is the zero-address, a new contract will be created by executing the code in data (this is what is meant by "code that returns the code"). The address of the newly created contract is technically known beforehand as it's based on the address of the sender and it's current nonce. That address becomes the official address of the contract after mining.

For a pretty good read on Ethereum transactions, check out this blog post.

Note: There is also the actual Solidity code statement address(0) which is the initial value of a variable of type address. The documentation you posted, however, is referring to specifically when the to account address in a transaction is set to '0x0'.

2 of 4
14

It's not actually true that a contract creation transaction has a "to" field set to the zero address (meaning 0x00...000). This is an easy mistake to make (and I've made it too) as it is described that way in many resources.

The passage you cite from the Solidity docs were updated to state this:

If the target account is not set (the transaction does not have a recipient or the recipient is set to null), the transaction creates a new contract. As already mentioned, the address of that contract is not the zero address but an address derived from the sender and its number of transactions sent (the “nonce”).

So you can see they realized at some point that the recipient field should be empty. I've actually looked at serialized creation transactions and found 0x80 there instead of an RLP-ed zero address.

In fact, 0x80 is the RLP encoding of an empty byte array, which is what the Yellow Paper states is the recipient for a contract creation:

The address hash is slightly different: it is either a 20-byte address hash or, in the case of being a contract-creation transaction (and thus formally equal to ∅), it is the RLP empty byte sequence and thus the member of

As I said, this is a common source of confusion. In that vein, this GitHub PR rolling back a mistakenly "fixed" test is amusing. It has the comment:

RLP encoding of 0 is encoding of empty byte array, so 0x80 is correct.

0x00 is encoding of byte array of length 1 containing one byte 0, not encoding of integer 0.

🌐
GitHub
github.com › tronprotocol › java-tron › issues › 6066
What does address(0) mean in solidity? · Issue #6066 · tronprotocol/java-tron
November 4, 2024 - What does address(0) mean in solidity?#6066 · Copy link · Labels · type:docs · abn2357 · opened · on Nov 4, 2024 · Issue body actions · Anyone can give me a detailed explanation? When to use it and what its functions are. Reactions are currently unavailable ·
Author   tronprotocol
Top answer
1 of 3
5

Dereferencing NULL is undefined behavior. Anything could happen, and most of the time bad things happen. So be scared.

Some old architectures (VAX ...) permitted you to derefence NULL.

The C11 standard specification (read n1570) does not require the NULL pointer to be all zero bits ( see C FAQ Q5.17); it could be something else, but it should be an address which is never valid so is not obtainable by a successful malloc or by the address-of operator (unary &), in the sense of C11. But it is more convenient to have it so, and in practice most (but not all) C implementations do so.

IIRC, on Linux, you might mmap(2) the page containing (void*)0 with MAP_FIXED, but it is not wise to do so (e.g. because a conforming optimizing compiler is allowed to optimize dereference of NULL).

So (void*)0 is not a valid address in practice (on common processors with some MMU and virtual memory running a good enough operating system!), because it is convenient to decide that it is NULL, and it is convenient to be sure that derefencing it gives a segmentation fault. But that is not required by the C standard (and would be false on cheap microcontrollers today).

A C implementation has to provide some way to represent the NULL pointer (and guarantee that it is never the address of some valid location). That might even be done by a convention: e.g. provide a full 232 bytes address space, but promise to never use address 0 (or whatever address you assigned for NULL, perhaps 42!)

When NULL happens to be derefencable, subtile bugs are not caught by a segmentation fault (so C programs are harder to debug).

Couldn't I invent a new architecture where the memory address 0 is accessible to processes?

You could, but you don't want to do that (if you care about providing any standard conforming C implementation). You prefer to make address 0 be the NULL. Doing otherwise make harder to write C compilers (and standard C libraries). And make that address invalid to the point of giving a segmentation fault when derefencing make debugging (and the life of your users coding in C) easier.

If you dream of weird architectures, read about Lisp machines (and Rekursiv, and iapx 432) and see The circuit less traveled talk at FOSDEM2018 by Liam Proven. It really is instructive, and it is a nice talk.

2 of 3
2

Making address zero unmapped so that a trap occurs if your program tries to access it is a convenience provided by many operating systems. It is not required by the C standard.

According to the C standard:

  • NULL is not be the address of any object or function. (Specifically, it requires that NULL compare unequal to a pointer to of any object or function.)
  • If you do apply * to NULL, the resulting behavior is not defined by the standard.

What this means for you is that you can use NULL as an indicator that a pointer is not pointing to any object or function. That is the only purpose the C standard provides for NULL—to use is tests such as if (p != NULL)…. The C standard does not guarantee that if you use *p when p is NULL that a trap will occur.

In other words, the C standard does not require NULL to provide any trapping capability. It is just a value that is different from any actual pointer, provided just so you have one pointer value that means “not pointing to anything.”

General-purpose operating systems typically arrange for the memory at address zero to be unmapped (and their C implementations define NULL to be (void *) 0 or something similar) specifically so that a trap will occur if you dereference a null pointer. When they do this, they are extended the C language beyond what the specification requires. They deliberately exclude address zero from the memory map of your process to make these traps work.

However, the C standard does not require this. A C implementation is free to leave the memory at address zero mapped, and, when you apply * to a null pointer, there might be data there, and your program could read and/or write that data, if the operating system has allowed it. When this is done, it is most often in code intended to run inside the operating system kernel (such as device drivers, kernel extensions, or the kernel itself) or embedded systems or other special-purpose systems with simple operating systems.

🌐
Reddit
reddit.com › r/mercari › going to ship something out but the word “null” was under the buyers address, is it fine to ship out with the label like that ?
r/Mercari on Reddit: going to ship something out but the word “null” was under the buyers address, is it fine to ship out with the label like that ?
October 29, 2022 - TIL a California man got 'NULL' as a personalized license plate hoping that 'NULL' would confuse the computer system. Instead, when cops left the plate number info empty on a ticket or citation, the fine went to him.
🌐
PolygonScan
polygonscan.com › address › 0x0000000000000000000000000000000000000000
Address: 0x00000000...000000000 | PolygonScan
Contract: Unverified | Balance: $50,373,953,389.11 across 30 Chains | Transactions: 1,917,466 | As at Jun-06-2026 11:48:16 PM (UTC)
🌐
UEEx Technology
blog.ueex.com › home › crypto terms › null address
Null Address
December 24, 2024 - A Null Address refers to a specific address in blockchain systems that is intended to burn or discard tokens.
🌐
BscScan
bscscan.com › address › 0x000000000000000000000000000000000000dead
Null: 0x000...dEaD | Address: 0x00000000...00000dead | BscScan
February 7, 2026 - This address is commonly used by projects to burn tokens (reducing total supply). Null: 0x000...dEaD · Burn · API · Token Approvals Beta Check Previous Balance · Update Name Tag or Label · Remove Name Tag · Report/Flag Address · ...
🌐
BitKan
bitkan.com › learn › what-is-null-address-in-crypto-is-null-address-the-same-as-vanity-address-9530
What is NULL address in crypto? Is null address the same as vanity address?
Null addresses in encryption are generated specifically to allow proof-of-burn. Token burns occur when tokens are intentionally sent to unusable wallets to remove them from circulation. This address is called the burn address or diner address.
🌐
IBM
ibm.com › docs › en › ztpf › 1.1.2023
Null pointer and null address detection
Null pointer and null address detection provides you with the capability to detect the occurrences in your application where an instruction references a null address or reads from a null pointer.
🌐
Quora
quora.com › What-is-at-the-memory-address-0x0-aka-the-null-pointer
What is at the memory address 0x0 (aka the null pointer)? - Quora
Answer (1 of 5): That depends on a lot of things. A few possibilities: * a simple microcontroller (no MMU and no OS): probably some ROM (maybe init vector), maybe RAM. Some microcontroller types are using the Harvard architecture, which means the address 0 can be even two separate things, a mem...
🌐
UPay
blog.upay.best › home › crypto terminology › null address
Null Address
The "Null Address" in cryptocurrency refers to a special address with no associated wallet and is often used to signify an unowned or burnt asset. This glossary entry clarifies its purpose and significance in blockchain transactions.