Magic Bytes across Networks
Magic Bytes: Message Delimiters Across Bitcoin Networks
In the peer-to-peer (P2P) layer of the Bitcoin protocol, messages are not sent as neatly bounded API calls. Instead, nodes communicate over continuous, raw TCP byte streams. To identify where one message ends and the next begins, the protocol prepends every packet with a standard 4-byte prefix known as Magic Bytes.
This guide details the standard constant values and functional purposes of magic bytes across the various Bitcoin networks.
🎨 1. Network Constants Table
Each separate testing and production environment on the Bitcoin network is assigned a unique, hardcoded 4-byte magic sequence. These distinct bytes prevent nodes from different environments from attempting to connect, gossiping incompatible transactions, or polluting block validation states:
| Network | Magic Bytes (Hex) | Byte Sequence (Array) | Decimal Representation (BE) | Primary Purpose |
|---|---|---|---|---|
| Mainnet | 0xF9BEB4D9 |
[0xF9, 0xBE, 0xB4, 0xD9] |
4,190,024,921 |
Production environment containing real economic value. |
| Testnet3 | 0x0B110907 |
[0x0B, 0x11, 0x09, 0x07] |
185,673,991 |
Classic test environment utilizing zero-value coins. |
| Testnet4 | 0x1C160E0E |
[0x1C, 0x16, 0x0E, 0x0E] |
471,207,438 |
BIP 94 testnet containing robust scaling improvements. |
| Signet | 0x0A03CF40 |
[0x0A, 0x03, 0xCF, 0x40] |
167,997,248 |
Signature-coordinated developer testing network (BIP 325). |
| Regtest | 0xFABFB5DA |
[0xFA, 0xBF, 0xB5, 0xDA] |
4,206,835,162 |
Private local regression testing sandbox environment. |
🛡️ 2. Cross-Network Contamination Protection
If a Mainnet node accidentally connects to a Testnet node (due to misconfiguration or bad peer advertising):
1. The initiating node sends a version message.
2. Because the initiator is on Mainnet, it prepends the Mainnet magic bytes 0xF9BEB4D9 to the header.
3. The receiving Testnet node reads the first 4 bytes.
4. It expects Testnet3 magic bytes 0x0B110907. Seeing 0xF9BEB4D9 instead, it immediately recognizes the protocol version mismatch, rejects the packet, and terminates the socket connection.
This simple prefix-validation check secures the local databases of nodes from polluting their chainstates with invalid coins or headers from alternative networks.
📁 3. Wire Example vs. Storage Example
Magic bytes are utilized in two primary contexts within the Bitcoin ecosystem:
A. Over the P2P Wire Sockets
Every message—such as version, verack, ping, pong, inv, tx, block—transmitted over a TCP port has the magic bytes prepended as the absolute first 4 bytes of the message envelope.
B. Serialized inside Local blk*.dat Disk Files
When Bitcoin Core writes raw blocks to local disk files for archival purposes, it does not write them as a single continuous blob. Instead, it prepends each raw block with the local network's magic bytes and the block’s raw size, acting as a structural index so sequential parsers can locate block boundaries on disk.
TeachMeBitcoin is an ad-free, open-source educational repository curated by a passionate team of Bitcoin researchers and educators for public benefit. If you found our articles helpful, please consider supporting our hosting and ongoing content updates with a clean donation: