Explanation of Early Bitcoin Addresses and the Genesis Block Reward

Bitcoin's earliest transactions, including the one in the genesis block, did not use "addresses" in the modern sense. Instead, they relied on Pay-to-PubKey (P2PK) outputs. In a P2PK transaction, the output script directly includes the recipient's public key, and the format is typically: OP_PUSHBYTES_65 <public_key> OP_CHECKSIG. To spend such an output, a valid signature corresponding to that public key must be provided in the input script.

The concept of addresses as we know them today—human-readable strings like "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"—came later with Pay-to-PubKey-Hash (P2PKH) outputs. A P2PKH address is derived from a public key through a series of cryptographic hashes and encoding:

  1. Start with the uncompressed public key (a 65-byte value beginning with 04 for Bitcoin's secp256k1 curve).
  2. Compute the SHA-256 hash of the public key.
  3. Take the RIPEMD-160 hash of that SHA-256 result (producing a 20-byte "hash160").
  4. Prepend a version byte (0x00 for mainnet Bitcoin addresses).
  5. Compute a checksum by taking the first 4 bytes of the double SHA-256 hash of the version + hash160.
  6. Append the checksum to the version + hash160 (total 25 bytes).
  7. Encode the result in Base58Check format, which avoids ambiguous characters and includes leading '1's for zero bytes.

This process ensures the address is compact, error-resistant, and verifiable.

For the genesis block (Block 0, mined on January 3, 2009), the coinbase transaction (the special transaction that creates new bitcoins) includes a 50 BTC reward output in P2PK format. The public key in this output is 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f. Applying the P2PKH derivation process to this public key yields the address 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa, which is how block explorers commonly represent it, even though the actual output is P2PK.

This reward is unspendable due to a quirk in Bitcoin's codebase: the genesis block's coinbase transaction is hardcoded and not indexed in the UTXO (Unspent Transaction Output) set like regular transactions. It's unclear if this was intentional (perhaps as a symbolic gesture) or accidental, but it ensures the 50 BTC remains locked forever. Subsequent transactions sent to this address (dust amounts from others) are spendable if the private key is known, but Satoshi likely controls (or discarded) it.

Early addresses were thus "derived" simply by generating an ECDSA key pair on the secp256k1 curve and using the public key directly in outputs. The Base58-encoded hash format was added for usability, error-checking, and to hide the full public key until spending.