¿Cómo surgió el hash pay-to-pubkey? ¿Cuál es su historia?

Sabemos que todos los primeros bloques usaban pay-to-pubkey (p2pk) y, en algún momento, cambiamos principalmente a pay-to-pubkey-hash (p2pkh). ¿Cuál es la historia detrás de esto? ¿Quién hizo los cambios y cuándo se convirtió en estándar p2pkh?

Además, ¿tiene esto algo que ver con el cambio hacia las claves comprimidas?

Esta publicación proporciona una respuesta/línea de tiempo parcial para su Q: bitcoin.stackexchange.com/questions/63699/… . Las claves públicas comprimidas ayudan a reducir el tamaño de la cadena de bloques, aunque la desaprobación de p2pk no se relaciona directamente con esto (afaik, un p2pk tx creado con una clave comprimida es en realidad más pequeño que un p2pkh tx creado con la misma clave). Sin embargo, alguien con una mejor comprensión del historial de desarrollo probablemente podría proporcionar una mejor respuesta que yo.
Esta pregunta también es relevante: bitcoin.stackexchange.com/questions/32639/…

Respuestas (2)

Pay to Public Key Hash ha existido durante toda la vida de Bitcoin. Las direcciones P2PKH han existido desde el primer lanzamiento de Bitcoin. La creación de direcciones P2PKH y el envío a direcciones P2PKH fue posible con Bitcoin 0.1.0.

Sin embargo, estas primeras versiones de Bitcoin también admitían una función de pago a la dirección IP en la que su billetera contactaría con la billetera en una dirección IP determinada y solicitaría una scriptPubKey para enviar. La respuesta sería un scriptPubKey P2PK y, por lo tanto, crearía salidas P2PK.

Los bloques también se extrajeron a salidas P2PK y, de hecho, Bitcoin Core todavía hace esto. El minero interno de Bitcoin Core (que ahora solo se usa para regtest y testnet), todavía crea salidas P2PK en lugar de salidas P2PKH.

Pay to IP finalmente comenzó a eliminarse gradualmente en Bitcoin 0.3.13 cuando su uso se ocultó detrás de un interruptor de línea de comando -allowreceivebyipen la confirmación 172f0060(tenga en cuenta que el autor es Satoshi, sin embargo, parece haber incorporado también el código de otra persona). La capacidad de enviar a IP se eliminó en Bitcoin 0.5.0 y los últimos remanentes del código de red relacionado con Pay to IP se eliminaron en Bitcoin 0.8.0.

Antes de la eliminación de Pay to IP, se sabía que era inseguro. Dado que la única otra forma de realizar transacciones era a través de direcciones, P2PKH ya se usaba ampliamente y P2PK nunca parecía tener mucho uso, ya que solo se usaba para pagar a IP y para bloques creados por el cliente de Bitcoin.

Una vez que apareció el software de minería externa, los bloques comenzaron a usar P2PKH en lugar de P2PK porque era más fácil ingresar una dirección de su billetera en un minero externo que obtener una clave pública e ingresarla. La gente también estaba acostumbrada a usar direcciones en ese momento, y las direcciones solo funcionan para salidas P2PKH.

El primer cliente de satoshi tenía ambos.

P2PK era el predeterminado para la minería y los pagos recibidos mediante el protocolo de pago interactivo de IP a IP; P2PKH fue diseñado para su uso en pagos no interactivos.

Las claves comprimidas se descubrieron más tarde y no se requirió ningún cambio en el software para admitirlas.