¿Qué es P2SH?

Las direcciones P2SH o bien Pay-to-Script-Hash son un tipo singular de dirección en Bitcoin, que deja crear direcciones que pueden percibir o bien mandar transacciones en las que se deben cumplir una serie de instrucciones para poder desbloquear los saldos que poseen dichas direcciones.

El Pay-to-ScriptHash, o bien asimismo conocido como P2SH, es un formato de script usado en internet Bitcoin que deja bloquear los bitcoins en el hash del script (una parte) y después administrar el script original (completo) cuando los bitcoins son desbloqueados al instante de efectuar una transacción.

Esta función deja que resulte posible la creación de scripts de canje adaptados que pueden ser compartidos con sencillez con otros usuarios. Esto es, deja crear direcciones o bien transacciones con programaciones no usuales. Y estas solo pueden desbloquearse cumpliendo una serie de condiciones preestablecidas.

Desde dos mil doce, Bitcoin y otras criptomonedas incorporan el formato P2SH en muchas de sus direcciones. Por medio de las que se pueden realizar transacciones que se manden a un hash de script, en vez de a uno de clave pública. O sea, que las transacciones se manden a  una dirección que empiece con tres en vez de una que empiece con 1 (ECDSA). Con lo que las direcciones codificadas bajo este formato representan el hash codificado de un script y no el de una clave pública ECDSA.

Así mismo, debido a esta característica, las direcciones con formato P2SH se emplean por norma general para realizar transacciones a direcciones multifirmas. Si bien este no sea su único empleo. Con P2SH se pueden configurar direcciones que pueden representar un script a través del que se codifica a otro género de transacciones. Por poner un ejemplo, con P2SH un usuario puede mandar sus bitcoins a una dirección segura de muchas formas posibles o bien infrecuentes sin tener conocimiento de de qué forma se ha configurado la seguridad. Al paso que el usuario que recibe la transacción podría precisar cumplir ciertas condiciones o bien instrucciones singulares para poder desbloquear la transacción.

Ejemplo de una transacción P2SH

Una transacción P2SH marcha merced a que el scriptPubKey contiene un hash que ha de ser desbloqueado con la intención de liberar el pago de los bitcoins bloqueados.  Primeramente, el script de origen de desbloqueo de  la transacción (redeem script o bien script de canje) está en el scriptSig de la transacción.

scriptSig de una P2SH

Aquí podemos ver meridianamente que el scriptSig hace mención a una dirección MuSig o bien multifirma del tipo (dos de tres). En ella vemos 3 claves (las llaves en la imagen), 2 firmas (de los participantes de la transacción) y el OP_CODE (código de operación), OP_CHECKMULTISIG. Lo que va a hacer esta una parte del script de la transacción es comprueba que las firmas y llaves en el mismo sean capaces de desbloquear la operación.

Es decir, contrastar que por lo menos dos de las 3 personas autorizadas hacen la transacción. Cuando el script haya verificado esto, podemos estar seguro que tenemos en nuestro poder el script de desbloqueo de los bitcoin y pasamos a la segunda parte.

En la segunda parte vemos como el scriptPubKey de una transacción P2SH tiene la próxima estructura:

scriptPubKey de una P2SH

Estos OP_CODEs nos afirman que el scriptPubKey solo se desbloquease si podemos demostrar que tenemos el script de origen de la transacción (el redeem script comprobado en el scriptSig). Para esto debemos tomar el resultado de este script y ejecutar la operación OP_HASH160. Esto es, aplicar al script un hash SHA-256 y después, un RIPEMD-ciento sesenta. El resultado va a ser equiparado con el “hash script” en el scriptPubKey (esto utilizando OP_EQUAL) y si el resultado es idéntico, vamos a haber desbloqueado exitosamente nuestros bitcoins.

Implementación del formato P2SH en las direcciones de Bitcoin

BIP-0013

El formato de dirección de Pay-to-ScriptHash fue introducido en un inicio en el BIP 13 desarrollado por Gavin Andresen. Donde describe un nuevo formato para las direcciones de Bitcoin con el que se puede aceptar transacciones arbitrarias complejas.

En este BIP Andressen describe que este nuevo formato para las direcciones de Bitcoin va a usar una longitud fija de veinte bytes. Que representa el hash del script por medio del que se puede intercambiar las criptomonedas. Y que puede ser empleado y escaneado de manera fácil desde un código QR, o bien ser copiado y pegado de manera rápida para realizar la transacción que se quiere.

Así mismo, Andresen describe que en los primeros cuatro bytes de la secuencia de bytes está integrada la función checksum o bien suma de verificación de la dirección, que robustece la infraestructura y la seguridad de la red Bitcoin. Al permitir la implementación de un procedimiento de verificación considerablemente más seguro, perfecto y eficaz que sencillamente truncar a SHA-doscientos cincuenta y seis. Al tiempo que se agrega una identidad propia para cada dirección creada en internet.

BIP-0016

Así mismo, en el BIP 16, que fue anunciado unos meses tras el BIP trece por Gavin Andresen, se explica a P2SH como una bifurcación suave al protocolo de Bitcoin desarrollado de manera que deje establecer las direcciones P2SH como un nuevo género de transacción estándar. Que busca la simplificación en el empleo de los scripts en cualquier clase de transacción, por muy compleja que esta sea.

El BIP dieciseis, al lado del BIP trece, pretende disminuir al mínimo los cambios que se precisan efectuar en la infraestructura de soporte de la red Bitcoin. Haciendo que sea más simple el poder compartir los scripts de bloqueo con otros usuarios, por muy complejos que estos scripts sean.

Por ejemplo, ya antes de la implementación de P2SH si deseaba agregar una secuencia de comandos de bloqueo compleja en sus bitcoins, era preciso que compartiese toda la secuencia de comandos de bloqueo con el usuario que le realizase una trasferencia. Mas con la llegada de P2SH ahora es posible darle a ese usuario solo parte de la secuencia de comandos de bloqueo, en vez de la secuencia completa. O sea, se puede dar solo un hash del script en vez del script completo.

¿Cuánto sabes, criptonauta?

¿Las direcciones P2SH nos dejan conseguir mayor seguridad para nuestros fondos?

Ventajas de la implementación de P2SH

Direcciones multifirmas

La activación de P2SH le permite a los usuarios del sistema Bitcoin poder efectuar o bien percibir transacciones en direcciones multifirmas. En verdad, esta es la aplicación más habitual que se conoce para el formato P2SH. Puesto que las direcciones con formato P2SH están diseñadas para aceptar un conjunto de firmas que sea igual o bien menor que la cantidad de claves privadas que están vinculadas o bien asociadas a ellas. O sea, en una dirección multifirma que tenga tres claves asociadas, las tres claves pueden ser los firmantes, o bien en su defecto solo dos o bien 1 de ellas.

Por otra parte, las direcciones de Bitcoin que emplean el formato P2SH se identifican de forma fácil puesto que comienzan con el número tres. Mas si bien su empleo usual sea para crear direcciones multifirma, no toda vez que una dirección empiece con este número quiere decir que se trata de una dirección multifirma. Una dirección que empiece con el número tres siempre y en todo momento va a ser una dirección P2SH, mas no siempre y en toda circunstancia se va a tratar de una dirección multifirma.

Seguridad y Privacidad

A través del formato P2SH un usuario puede financiar cualquier script sin conocer cuáles son las condiciones de gasto que están vinculadas a ese script. O sea, el usuario puede mandar o bien compartir los scripts asociados a una transacción sin tener conocimiento parcial o bien total sobre la configuración de estas condiciones o bien instrucciones de seguridad.

Por lo que en el en caso de ser expedidor, el usuario solo va a deber mandar las transacciones que desee efectuar a la dirección P2SH.  Sin precisar saber de qué forma van a ser gastados los fondos que ha mandado. Al paso que en el en caso de ser receptor o bien receptor, el usuario sí debe conocer las condiciones de gastos asociadas con esa transacción. Que pueden cambiar entre la necesidad de multifirma, clave de acceso o bien otro, para poder acceder a las criptomonedas que le han sido mandadas.

Así mismo, si el script de bloqueo P2SH solo contiene un hash del script, es imposible saber qué género de script que procede de ese hash. Haciendo impoisible que un usuario pueda conocer si una transacción procede de una dirección particular o bien de una multifirma.

Salidas no gastadas más pequeñas

Como todas y cada una de las salidas no gastadas o bien UTXOs de Bitcoin se guardan en la memoria RAM de los nodos, es esencial ahorrar este espacio de almacenaje. De este modo, al emplear scripts de bloqueo P2SH con secuencias más pequeñas, las UTXOs requerirán un espacio menor para ser guardadas, dejando que los nodos sean computacionalmente más eficaces y que trabajen ágilmente y eficiente en la validación de las transacciones de la red.

Tarifas de comisión más bajas

Como las tarifas de comisión que son cobradas en Bitcoin no están relacionadas con las cantidades transferidas sino más bien con el tamaño de las transacciones, un hash de script con una longitud más pequeña le deja al expedidor de una transacción poder mandar sus fondos a direcciones P2SH sin abonar tarifas de comisión elevadas. Como sí ocurriría en el caso de usar los scripts completos.

Aunque esto hoy en día puede no representar un problema arduo, posiblemente sí lo sea en el futuro; cuando las recompensas por minería se reduzcan y los nodos se sostengan con las tarifas de comisión por transacción.

SegWit

Las direcciones con formato P2SH son compatibles tanto con direcciones SegWit como con las que no lo son. Con lo que los usuarios pueden mandar sus fondos y efectuar transacciones en los dos monederos con sencillez.

Desventajas de la implementación de P2SH

La verdad es que P2SH tiene poquísimas desventajas o bien restricciones. Debido a que P2SH fue incorporado tiempo tras el desarrollo de los scripts originales de Bitcoin, con lo que los desarrolladores tuvieron ocasión de corregir las restricciones que se presentaban en internet para ese entonces. Sin embargo, las restricciones que presenta P2SH son:

Tamaño de losdatos

P2SH ocupa mayor espacio en la blockchain. Lo que puede llegar a causar congestión y también influir en la capacidad de operación de la red. Esto es debido a que a lo largo del bloqueo de bitcoins en P2SH se agregan veinticinco bytes más al script original, dejando a un script multifirma dos de tres que utilice P2SH con doscientos setenta y ocho bytes. En comparación con los doscientos cincuenta y tres bytes que tendría exactamente el mismo script multifirma dos de tres que utilice P2MS.

bitcoin
Bitcoin (BTC) $ 60,961.00
ethereum
Ethereum (ETH) $ 3,844.31
binance-coin
Binance Coin (BNB) $ 467.52
tether
Tether (USDT) $ 1.00
cardano
Cardano (ADA) $ 2.16
xrp
XRP (XRP) $ 1.13
solana
Solana (SOL) $ 163.77
polkadot
Polkadot (DOT) $ 41.73
usd-coin
USD Coin (USDC) $ 1.00
dogecoin
Dogecoin (DOGE) $ 0.237872