What is a wallet address?

A wallet address is the public string that tells a blockchain where to send coins, usually a shortened, error-checked form of a public key. Its format depends on the network, and a valid address on the wrong network, or a lookalike, can lose funds for good.

By Sonic Wallet Editorial Team· Updated · 7 min read

Key takeaways

  • A wallet address is the public string that tells a blockchain where to send coins, normally a shortened, error-checked form of a public key or of a spending rule. Each network has its own format, so the address only means something alongside its network, and a coin sent to the right string on the wrong network may never arrive where it was meant to.
  • Bitcoin addresses start with 1 for legacy, 3 for scripts, bc1q for SegWit or bc1p for Taproot; Ethereum's are 0x plus 40 hexadecimal characters on every EVM chain; Solana's are 32-byte values, usually written as 43 or 44 Base58 characters with no prefix.
  • Checksums catch typos, not fraud: bech32 detects any error in up to four characters and Ethereum's mixed-case checksum lets only about 1 in 4,000 mistyped addresses through, but Solana addresses carry no checksum, and a scammer's address passes every check.
  • Addresses are public. Anyone can look one up on a block explorer and see its balance and every transaction, which is why bitcoin.org recommends a new address for each payment you receive.
  • Before sending, copy the address from the recipient's own screen, match it to the network and any memo or tag, compare the whole string including the middle, and send a small test first.

A wallet address is the string of characters that tells a blockchain where to send coins or tokens, much as an account number tells a bank where to credit a payment. Unlike an account number, it comes with no name, no bank and no way to reverse a mistake. Most addresses are derived from a public key, which is in turn calculated from a private key, so whoever holds that key controls what the address receives. Every network writes addresses its own way, and the format is the first clue to which network an address belongs to. The crypto hub covers how wallets and networks fit together.

How is a wallet address made?

A wallet hashes or encodes a public key, adds a network marker and usually a checksum, and writes the result in a character set chosen to resist misreading.

Address = network prefix + encoded key or script hash + checksum

On Bitcoin, the oldest format takes the RIPEMD-160 hash of the SHA-256 hash of a public key, puts a version byte of zero in front, adds a 4-byte checksum and writes the result in Base58Check; the zero byte is why these addresses begin with 1. Pay-to-script-hash addresses hash a script instead and use version byte 5, which BIP-13 chose so that they always begin with 3. SegWit formats switched to bech32: a human-readable part, bc on mainnet and tb on testnet, the separator 1, then the data and a 6-character checksum. Base58 leaves out four lookalike characters, zero, capital o, capital i and lowercase L, as the XRP Ledger's documentation spells out, while bech32 drops 1, b, i and o from its data characters and uses a single case.

Network and typeStarts withLengthBuilt fromChecksum
Bitcoin legacy (P2PKH)1Usually 34 charactersHash of one public key4 bytes, Base58Check
Bitcoin script (P2SH)334 charactersHash of a script, such as a multisig4 bytes, Base58Check
Bitcoin native SegWit (P2WPKH, P2WSH)bc1q42 or 62 charactersHash of a key or of a script6 characters, bech32
Bitcoin Taproot (P2TR)bc1p62 charactersA 32-byte key6 characters, bech32m
Ethereum and other EVM chains0x42 charactersLast 20 bytes of the Keccak-256 hash of the public keyOptional, in the letters' case (EIP-55)
SolanaNo fixed prefixUsually 43 or 44 charactersThe 32-byte Ed25519 public key itself, or a program-derived addressNone
XRP Ledgerr25 to 35 charactersHash of the account's public key4 bytes
TronT34 charactersThe same 20 bytes as the key's Ethereum address, after a 0x41 prefix byte4 bytes, Base58Check

BIP-350 moved Taproot to bech32m after a weakness came to light in the original checksum: when an address ended in p, extra q characters could be inserted or deleted just before it without breaking the check. The prefix does not always reveal the network. A 0x address looks identical on Ethereum, Base, Arbitrum or BNB Chain, and on Tron the developer documentation notes that the 20 bytes after the prefix match the Ethereum address of the same key.

How do you read an address character by character?

Split it into its parts: a network marker at the front, a body that encodes the key or script, and on most formats a checksum at the end.

Worked example: Reading three addresses piece by piece

Bitcoin, from BIP-173's examples: bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4

  • bc marks mainnet, 1 is the separator and q is witness version 0, which is why SegWit addresses start bc1q
  • The next 32 characters carry the 20-byte hash of a public key at 5 bits per character: 32 × 5 = 160 bits
  • The last 6 characters, v8f3t4, are the checksum, for 2 + 1 + 1 + 32 + 6 = 42 characters in all

Ethereum, from EIP-55's test cases: 0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed

  • After 0x come 40 hexadecimal characters, 22 digits and 18 letters
  • Each letter's case is set by the Keccak-256 hash of the lowercase address, so this address carries 18 check bits; 9 of its letters are capitals
  • Written entirely in lowercase, it is the same address with no check at all

Solana's System Program: 11111111111111111111111111111111

  • The address is 32 bytes of zeros, and Base58 writes each leading zero byte as 1, so it reads as 32 ones
  • An ordinary wallet address is 32 random bytes and comes out at 44 characters about 94% of the time, 43 the rest
  • 44 Base58 characters hold about 257.8 bits, barely more than the 256 the key fills, which leaves no room for a checksum

EIP-55 puts the odds of a randomly mistyped address passing its check at 0.0247%, about 1 in 4,000, and BIP-173 guarantees bech32 catches any error affecting up to four characters. XRP Ledger addresses carry a 4-byte checksum, so a random string forms a valid address only about once in 2³² tries. Solana relies on the wallet showing the right string in the first place.

Where do you see wallet addresses?

They appear on a wallet's receive screen, an exchange's deposit and withdrawal pages, block explorers and payment requests, often as a QR code.

  • Receive screens. Wallets built on a seed phrase can generate a new address for every payment, which bitcoin.org recommends for privacy, since anyone can see the balance and all transactions of any address. BIP-173 recommends uppercase for bech32 addresses inside QR codes, since the format accepts either case as long as the two are not mixed.
  • Exchange deposit pages. The platform shows an address it controls together with the network it expects and, on networks such as the XRP Ledger, a destination tag. How to sell crypto and withdraw covers the outgoing side.
  • Solana token transfers. Tokens are sent to the recipient's wallet address but held in a separate token account, whose address the Associated Token Program derives from the wallet address, the token program and the token's mint. If the recipient has never held that token, the sender usually funds a refundable storage balance of 0.00148844 SOL (1,488,440 lamports) to open the account. Solana's documentation notes that closing it later returns the balance to a destination the owner chooses, not automatically to whoever paid; the Solana price page converts the amount into dollars.
  • Block explorers. Pasting an address into an explorer shows its full public history, which is also the way to confirm that a payment arrived.

Why do valid addresses still lose money?

Checksums catch typing slips only, so the costly mistakes involve addresses that pass every check: ones on the wrong network, planted by scammers or swapped in by malware.

The wrong network. Because many chains share a format, a wallet can let you send USDC on one network to an address whose owner only watches another. Coins sent to your own key-controlled address on a different EVM chain are usually reachable, but a contract-based wallet exists only where it was deployed, since ethereum.org explains that a contract's address comes from its creator's address and transaction count or from a chosen salt and its code. Sent crypto to the wrong network works through each case, and smart contract explains what lives at a contract address.

Poisoned history. In address poisoning, an attacker generates an address whose opening and closing characters resemble one you pay often, then sends a dust-sized or zero-value transfer from it so it shows up in your history, waiting to be copied. Crypto scams shows how cheaply such lookalikes are made.

Swapped or supplied addresses. Clipboard-hijacking malware replaces a copied address with its own between copy and paste, and fake support agents or websites hand out addresses they control.

Keyless addresses. Some valid addresses belong to no one. The XRP Ledger's documentation lists blackhole addresses such as ACCOUNT_ZERO, the encoding of the number 0, whose XRP is lost forever because no known secret key produces them. Solana's program-derived addresses also have no private key, but a program controls them, so funds there are governed by its code.

How is a wallet address different from similar-looking strings?

An address is where funds go; keys, token contracts, token accounts and transaction IDs either authorize, define or record a payment instead.

TermWhat it isHow it differs from a wallet address
Public keyThe key an address is derived fromOn Bitcoin and Ethereum the address is a hash of it; on Solana the public key is the address
Exchange deposit addressAn address the platform controls, assigned to you or shared with a tagYou can send to it but cannot sign from it; the exchange credits you on its books
Token contract addressThe contract that defines a token, such as a stablecoinIdentifies the token rather than a holder, and tokens sent to it are usually stuck
Solana token accountAn account holding one token for one walletDerived from the wallet address and mint; senders still enter the wallet address
Transaction IDThe hash that identifies one transferRecords a payment; a Bitcoin TXID is a 64-character hexadecimal hash and cannot receive funds

What should you check before sending to an address?

Check where the address came from, which network it is for, whether a memo or tag is needed and whether every character matches, then test with a small amount.

  1. Take the address from the recipient's own receive or deposit screen, or from an address book entry saved after a payment that arrived, never from transaction history, an email or a chat.
  2. Match the format to the network: 1, 3 or bc1 for bitcoin, T for tokens on Tron, 0x plus the exact chain name on EVM networks, and r plus any required destination tag on the XRP Ledger.
  3. Paste rather than type, treat a checksum warning as a hard stop, and prefer the mixed-case form of an Ethereum address.
  4. Compare the whole string in blocks of four or five characters, middle included, and on a hardware wallet read it on the device's own screen.
  5. For tokens on Solana, enter the recipient's wallet address, not the token's mint, and expect the token-account deposit the first time they hold it.
  6. Send a small test, confirm on a block explorer that it arrived, then send the rest.

Frequently asked questions

Can a wallet address be traced to a person?+

Not by itself, but every transaction to and from it is public. Once an exchange, a merchant or a social media post links the address to a name, its whole history is linked too, which is why many wallets show a fresh address for each payment.

Why does one wallet show different addresses for bitcoin and ether?+

Each network derives its own key along a separate path and writes the address in its own format. One seed phrase can control a bc1 bitcoin address, a 0x Ethereum address and a Solana address at once, but none of them can receive the other networks' coins.

What happens if a crypto address is mistyped?+

Usually the wallet rejects it, because Bitcoin, XRP and mixed-case Ethereum addresses carry checksums. If the typo still forms a valid address, as it often can on Solana or with an all-lowercase Ethereum address, the coins go to whoever, if anyone, holds that key.

Can two people end up with the same wallet address?+

Not in practice. An Ethereum address is a 160-bit value, about 1.46 × 10⁴⁸ possibilities, and Bitcoin's formats are at least that large, so properly random keys do not collide. Shared addresses come from weak or reused keys, not chance.

Why does an exchange ask for a memo or tag as well as an address?+

Some networks, including the XRP Ledger, let one address serve many customers, so the exchange uses a number or note to tell deposits apart. The XRP Ledger's X-address format packs the destination tag into the address itself.

Sources

  1. BIP-173, Base32 address format for native v0-16 witness outputs, Bitcoin Improvement Proposals
  2. BIP-350, Bech32m format for v1+ witness addresses, Bitcoin Improvement Proposals
  3. BIP-13, Address Format for pay-to-script-hash, Bitcoin Improvement Proposals
  4. Transactions, Bitcoin developer reference (address conversion), Bitcoin.org
  5. Protect your privacy, Bitcoin.org
  6. ERC-55, Mixed-case checksum address encoding, Ethereum Improvement Proposals
  7. Ethereum accounts, ethereum.org
  8. Account structure (account addresses), Solana
  9. Terminology (system program), Solana
  10. Create token account (associated token accounts), Solana
  11. Close token account, Solana
  12. Addresses, XRP Ledger documentation
  13. Accounts and keys, TRON Developer Hub
  14. getMinimumBalanceForRentExemption (RPC method), Solana

Related guides