Una dirección es solo una forma compacta y resistente a erratas de escribir un script de bloqueo. El prefijo indica qué tipo de script es.
P2PK (2009)
Las monedas más tempranas, incluidas muchas minadas por Satoshi, se bloquearon directamente a una clave pública. No hay formato de dirección para ello, y revela la clave antes de gastar.
P2PKH: empieza por 1
«Pay to public key hash» bloquea monedas al HASH160 de 20 bytes de una clave pública. La dirección está codificada en Base58Check con byte de versión 0x00. Tiene un checksum de 4 bytes, así que casi siempre se detecta una errata.
P2SH: empieza por 3 (BIP16, 2012)
«Pay to script hash» bloquea monedas al hash de cualquier script, el redeem script. Quien gasta revela el script y lo satisface. Eso hizo práctico el multifirma, porque el remitente ya no necesita conocer los detalles. P2SH también se usó para envolver SegWit (P2SH-P2WPKH) durante la transición.
P2WPKH y P2WSH: empiezan por bc1q (BIP141, 2017)
Salidas SegWit nativas versión 0. P2WPKH se compromete a un hash de clave de 20 bytes, P2WSH a un SHA-256 de 32 bytes de un script. Las firmas se mueven al witness, más barato por byte. Las direcciones usan bech32 (BIP173): minúsculas, sin caracteres confusos y fuerte detección de errores.
P2TR: empieza por bc1p (BIP341, 2021)
Taproot es SegWit versión 1. La salida es una clave pública x-only de 32 bytes que puede gastarse con una sola firma Schnorr o mediante un árbol oculto de scripts. Bech32m (BIP350) sustituyó a bech32 para la versión 1 y posteriores, porque bech32 tenía una debilidad con ciertos caracteres insertados o borrados.
Comparándolos
Gastar una entrada de una sola clave cuesta unos 148 vbytes para P2PKH, unos 68 para P2WPKH y unos 57,5 para P2TR. Los tipos más nuevos son más baratos y, con Taproot, más privados, porque gastos simples y complejos pueden parecer iguales.
Regla práctica
Toda billetera debería poder enviar a todos estos. Si la tuya no puede enviar a direcciones bc1p, está desactualizada.