Why Different Blockchains Have Different Address Formats
If you have used more than one cryptocurrency, you have noticed that wallet addresses look very different across blockchains. A Bitcoin address does not resemble an Ethereum address, which in turn looks nothing like a Solana address. These differences are not arbitrary. Each blockchain's address format reflects its underlying cryptographic design, encoding choices, and specific security features.
Address formats serve several purposes beyond simply identifying a destination. They encode the network type (mainnet versus testnet), the type of script or account associated with the address, and often include a checksum that helps detect typos or transmission errors. Understanding these formats helps you avoid costly mistakes and gives you insight into how different blockchains approach security.
The diversity of address formats also reflects the evolution of blockchain technology. Newer formats often improve upon older ones in terms of efficiency, error detection, and functionality. Learning about these formats gives you a deeper understanding of the technology you are using to manage your digital assets.
Bitcoin Address Formats
Bitcoin has the most diverse set of address formats of any major blockchain, reflecting its long history and ongoing development. Each format corresponds to a different transaction script type and offers different features.
Legacy (P2PKH) - Starts with "1"
Legacy addresses, also known as Pay-to-Public-Key-Hash (P2PKH) addresses, are the original Bitcoin address format introduced by Satoshi Nakamoto. They start with the number "1" and are typically 25-34 characters long. An example looks like: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa (the Bitcoin genesis address).
Legacy addresses use Base58Check encoding, which excludes visually ambiguous characters (0, O, I, l) to reduce transcription errors. While still fully functional, legacy addresses result in larger transaction sizes and therefore higher fees compared to newer formats. Most modern wallets have moved away from generating legacy addresses as defaults, though they remain supported for backward compatibility.
Pay-to-Script-Hash (P2SH) - Starts with "3"
P2SH addresses start with "3" and were introduced in BIP-16 to support more complex transaction types, including multi-signature wallets and the first implementation of Segregated Witness (SegWit). These addresses encode a hash of a script rather than a public key, allowing for flexible spending conditions.
P2SH-wrapped SegWit addresses (P2SH-P2WPKH) start with "3" and were a transitional format that brought SegWit benefits while maintaining compatibility with older wallets. When SegWit was first introduced, many wallets and exchanges did not support native SegWit addresses, so P2SH wrapping provided a bridge.
Native SegWit (Bech32) - Starts with "bc1q"
Native SegWit addresses, defined in BIP-173, use Bech32 encoding and start with "bc1q" for mainnet. These addresses are case-insensitive (typically displayed in lowercase) and use a more advanced error-detection algorithm that can detect up to 4 character errors and identify which characters are wrong.
Bech32 addresses are the most efficient standard Bitcoin address format, resulting in the smallest transaction sizes and lowest fees. They are the recommended format for most Bitcoin users today. The "bc" prefix identifies the Bitcoin mainnet, while "tb" is used for testnet addresses.
Taproot (Bech32m) - Starts with "bc1p"
Taproot addresses were introduced with Bitcoin's Taproot upgrade in November 2021. They use Bech32m encoding (BIP-350) and start with "bc1p". Taproot addresses support advanced scripting capabilities through Schnorr signatures and Merkelized Alternative Script Trees (MAST), enabling more complex and private smart contracts on Bitcoin.
The key improvement of Bech32m over Bech32 is better error detection for certain edge cases. Taproot transactions also offer improved privacy, as complex multi-signature transactions look identical to simple single-signature transactions on the blockchain. Adoption of Taproot addresses has been growing steadily since the upgrade's activation.
Ethereum and EVM Chains
The 0x Prefix and Hex Encoding
Ethereum addresses are 42 characters long, consisting of the "0x" prefix followed by 40 hexadecimal characters. These addresses are derived from the last 20 bytes of the Keccak-256 hash of the public key. An example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 (Vitalik Buterin's well-known address).
The same address format is used across all EVM-compatible chains, including Polygon, Arbitrum, Optimism, BSC, and Avalanche C-Chain. This means the same address can exist on multiple chains, which is both a convenience and a potential source of confusion. Sending tokens on the wrong network to the correct address is a common mistake.
EIP-55 Checksumming
Unlike Bitcoin's Base58Check, Ethereum's original address format did not include a checksum, meaning any 40-character hex string with a 0x prefix was considered a valid address. EIP-55 introduced a mixed-case checksum scheme that uses the capitalization of the hex letters (a-f) to encode checksum information.
In an EIP-55 checksummed address, each letter is capitalized or lowercased based on the hash of the address. Wallets and tools can verify this checksum to detect typos. Both the all-lowercase and checksummed versions are valid, but the checksummed version provides error detection. When you see an Ethereum address with mixed case, it is using EIP-55 checksumming.
Solana Addresses
Base58 Encoding and Ed25519
Solana addresses are Base58-encoded representations of Ed25519 public keys, typically 32-44 characters long. They consist of alphanumeric characters, excluding the same ambiguous characters as Bitcoin's Base58 (0, O, I, l). An example: 7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV.
Solana uses Ed25519 elliptic curve cryptography, which differs from the secp256k1 curve used by Bitcoin and Ethereum. This means Solana addresses are fundamentally different from EVM addresses, even when they might coincidentally look similar. Solana addresses do not have a prefix like "0x" or "bc1", which can make them harder to immediately identify as Solana addresses without additional context.
Program-derived addresses (PDAs) on Solana look like regular addresses but are derived from a combination of a program ID and seeds, and they do not have corresponding private keys. These addresses are used by smart contracts to hold assets and state. Understanding that not all Solana addresses have private key holders behind them is important for interpreting on-chain activity.
Cosmos Ecosystem
Bech32 with Human-Readable Prefixes
The Cosmos ecosystem uses Bech32 encoding (similar to Bitcoin's native SegWit) with chain-specific human-readable prefixes (HRPs). This elegant approach makes it immediately clear which chain an address belongs to while maintaining strong error detection.
Each Cosmos SDK chain defines its own prefix. For example, Cosmos Hub uses "cosmos" (e.g., cosmos1...), Osmosis uses "osmo" (e.g., osmo1...), and Juno uses "juno" (e.g., juno1...). Validator operator addresses use a "valoper" suffix (e.g., cosmosvaloper1...), making it easy to distinguish between regular accounts and validator nodes.
An interesting property of Cosmos addresses is that the same key pair produces different addresses on different chains because of the different HRPs. This means your Cosmos Hub address and your Osmosis address are derived from the same seed phrase but look completely different, which helps prevent cross-chain confusion but can be confusing for newcomers.
How Address Validation Works
Address validation is the process of checking whether a given string is a structurally valid address for a specific blockchain. This is distinct from checking whether an address has been used or whether it is associated with any particular entity. Validation confirms that the address conforms to the expected format and passes any applicable checksums.
For Bitcoin Bech32 addresses, validation involves checking the human-readable prefix, verifying the separator character, decoding the data portion, and computing the Bech32 checksum. For Ethereum, validation can range from a simple check for the 0x prefix and 40 hex characters to a full EIP-55 checksum verification. For Cosmos addresses, the Bech32 decoding and checksum verification apply.
Crypto404 performs format validation as part of its scanning pipeline. When you enter an address, the system first validates that it is a properly formatted address for the selected blockchain before proceeding with threat intelligence checks. This catches typos and formatting errors before they result in failed transactions or lost funds.
Common Mistakes and How to Avoid Them
- Sending to the wrong network: An Ethereum address is valid on Polygon, BSC, and other EVM chains, but sending tokens on the wrong network can result in inaccessible funds. Always confirm both the address and the network.
- Confusing address types within the same chain: Sending Bitcoin to a Taproot address from a wallet that only supports legacy addresses can cause issues. Ensure your wallet supports the address format you are sending to.
- Truncating addresses: Some interfaces display shortened addresses (e.g., 0xd8dA...6045). Always verify the full address before confirming a transaction, as attackers create addresses with matching beginnings or endings.
- Case sensitivity: Bitcoin Bech32 addresses are case-insensitive, but legacy addresses are case-sensitive. Ethereum all-lowercase addresses are valid, but changing the case of a checksummed address invalidates the checksum.
- Including extra characters: Accidental spaces, newline characters, or invisible Unicode characters in a copied address will make it invalid. Always trim whitespace and verify the address after pasting.