Bitcoin addresses and private keys
These are notes on the original Bitcoin wallet address format, along with notable addresses and other details related to BTC addresses.
Address format
The Bitcoin addresses researched in these resources are all in the original Base58 pay-to-public-key-hash (P2PKH) format.
A P2PKH address is a Bitcoin address type that allows users to send Bitcoin to a specific public key. You can derive such an address from the public key through a series of cryptographic hash functions.
P2PKH addresses are typically 34 or 33 (case-sensitive) characters in length (but can be as short as 26 characters), and typically start with the digit ‘1’.
They’re the most common Bitcoin address type, securing approximately 43% of the mined bitcoin supply, and used for standard transactions.
Here is an example P2PKH address:
12cbQLTFMXRnSzktFkuoG3eHoMeFtpTu3S
P2PKH address derivation process
The address derivation process consists of these steps:
- Generate public key: user generates a public/private key pair.
- Hash public key: hash the public key using SHA-256, followed by RIPEMD-160 to create a public key hash.
- Create address: Encode the public key hash from previous step in a specific format (usually Base58Check). Then, prefix the encoded public key hash with a version byte (
0x00for mainnet).
This results in a P2PKH address with corresponding private key.
Notable Bitcoin addresses
| Address | Notes |
|---|---|
| 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa | The so-called “Genesis address”, a wallet controlled by Satoshi Nakamoto that contains an un-spendable reward for mining the first block on the Bitcoin blockchain |
| 12cbQLTFMXRnSzktFkuoG3eHoMeFtpTu3S | Nakamoto address transacted a total of 91 times, and most famously sent 10 BTC to Hal Finney’s address. |
| 1Q2TWHE3GMdB6BZKafqwxXtWAWgFt5Jvm3 | Hal Finney received 10 BTC from Nakamoto address into this address. |
| 15kDhRAcpgsugmh6mQsTcCHdvbsuYncEEV | Hal Finney sent the 10 BTC he received from Nakamoto to this address. That value and more is still in this dormant wallet today. |
| 1DUDsfc23Dv9sPMEk5RsrtfzCw5ofi5sVW | Another wallet that received 10 BTC from Nakamoto |
Bitcoin private keys
A private key in Bitcoin is a cryptographically secure 256-bit number that provides absolute control over a specific Bitcoin address and its associated funds. It is the fundamental element of Bitcoin’s ownership and transaction mechanism, serving as the cryptographic proof of an individual’s right to spend bitcoins.
Key characteristics
- Secrecy is paramount: A private key must be kept completely confidential. Anyone who obtains the private key gains full access to the associated bitcoins.
- Mathematical foundation: Private keys are generated using the secp256k1 elliptic curve, a specific elliptic curve defined in the Standards for Efficient Cryptography (SEC) 2 specification.
Cryptographic deep dive: secp256k1 ECDSA
Bitcoin’s cryptographic foundation relies on the secp256k1 elliptic curve, a carefully chosen curve used in the Elliptic Curve Digital Signature Algorithm (ECDSA). Key characteristics include:
-
Curve parameters:
- Defined by the equation y² = x³ + 7
- Over a prime field with modulus 2²⁵⁶ - 2³² - 977
- Provides 128 bits of security strength
-
Key generation process:
- A private key is a randomly generated 256-bit number between 1 and the curve’s order (slightly less than 2²⁵⁶)
- The public key is generated by multiplying the private key with the curve’s generator point G
- This process is computationally infeasible to reverse (finding the private key from the public key)
-
Security properties:
- Extremely difficult to break through brute-force or mathematical attacks
- Allows compact key representations
- Provides efficient signature verification
- Offers a robust trade-off between security and computational efficiency
The secp256k1 curve was specifically chosen for Bitcoin due to its unique properties, providing a strong cryptographic foundation that balances security, performance, and key compactness.
- Wallet storage: Bitcoin wallets store private keys, which are mathematically linked to public addresses. Each wallet can manage multiple private keys.
Bitcoin private keys can be represented in multiple formats, each serving different use cases and providing varying levels of human readability and security. Understanding these formats is crucial for proper key management and wallet interoperability.
Raw hexadecimal format
For earlier BTC addresses, this raw hexadecimal format is the most expected.
- Representation: A 64-character hexadecimal string
- Example:
0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef - Characteristics:
- Direct binary representation of the 256-bit private key
- Exact 32-byte (256-bit) numerical value
- Most raw and low-level representation
- No additional encoding or checksum
- Directly usable in cryptographic operations