Pay to script hash
# Pay to script hash

Pay to script hash (P2SH) o Bitcoin Improvement Proposal 16 (BIP16) es una característica añadida a Bitcoin en 2012.

También presente en Bitcoin Cash y permite simplificar el uso de scripts en transacciones complejas.

## Justificación

Aunque el uso de la multifirma es muy conveniente, el uso de pay-to-multisig requiere proporcionar mucha información a quien realiza el pago (el valor N, el de M, cada una de las claves públicas y el orden de las mismas). Todo esto hace que el script de bloqueo se vuelva muy largo y que sea fácil comenter errores. Además no todas las carteras aceptan el uso de multifirma.

Por otro lado, dado que las comisiones se basan en el tamaño de la transacción, el tamaño del script podría implicar una tarifa más alta una mayor comisión.

Mediante P2SH las transacciones complejas se simplifican al sustituir un script por su valor hash. A partir de valor hash se genera una dirección la cual ya codificada en base58check empieza con 3.

En el momento que se quiera emplear una UTXO que emplea P2SH se debe presentar el script de bloqueo que genera el valor hash así como el correspondiente script de desbloqueo.

## Historia

Su especificación técnica tiene fecha de 1 de marzo de 2012 y recibe el título de «Bitcoin Improvement Proposal 16» (Propuesta de Mejora de Bitcoin 16) o «BIP16».

Su activación en la cadena de bloques de Bitcoin se hizo por medio de un Soft Fork Activado por el Usuario.

Según un informe publicado por BitMex Research «Con la excepción del límite de tamaño de bloque de 1 MB, antes del soft fork BIP16 de 2012, no había una metodología de activación, por lo que si la bifurcación se produjo sin problemas sin una división de cadena, no necesariamente hay una altura de bloque o fecha específica en la que se produjo la bifurcación de consenso», sin embargo el estudio ubica el despliegue de la característica alrededor del 1 de abril de 2012.

Alrededor del 12 de marzo de 2017 el usuario Shaolin Fry usó como referencia la activación de BIP16 mediante un Soft Fork Activado por el Usuario en su propuesta BIP148 (cuyo objetivo era forzar la activación de SegWit).

## Estructura

### Script de bloqueo (scriptPubKey)

OP_HASH160 <RIPEMD-160(SHA 256(script de bloqueo))> <OP_EQUAL>

### Script de desbloqueo (scriptSig)

<script de desbloqueo> <script de bloqueo>

