Aspectos Técnicos de Bitcoin

¿Qué Es Pay To Script Hash? [P2SH]

Qué Es Pay To Script Hash

P2SH, o Pay To Script Hash (Pagar a Un Hash de Script), es un tipo de pago específico que forma parte del Bitcoin Script.

En particular, P2SH fue introducido a Bitcoin en la altura del bloque número 173.805, que fue minada el 1 de abril de 2012.

Este tipo de scripts permiten el gasto de los bitcoins vinculados a una salida a aquel que pueda satisfacer el script cuyo hash se especifica en la misma.

Por ejemplo, si nosotros le enviamos a un amigo 1 BTC usando P2SH, debemos incluir el hash del script que se necesita para poder gastar ese bitcoin.

El script requiere la firma de nuestro amigo, que se consigue a partir de la clave privada, así como otros requisitos.

Cuando nuestro amigo quiera gastar el BTC que ha recibido de nosotros, simplemente debe reconstruir el script que produce el hash que hemos utilizado para enviarle el bitcoin. Además, debe firmar la transacción con la clave privada que corresponde a la clave pública que usamos para enviarlos.

Hoy vamos a ver su funcionalidad y otras curiosidades que hacen interesante a este tipo de pago de Bitcoin.

¿Por qué se creó P2SH?

Antes de que se implementara en la red de Bitcoin la BIP 16 (¿qué es una propuesta de mejora?) en 2012, P2SH no estaba disponible para su uso.

Pero una vez lanzada, consiguió rápidamente apoyo por parte de los usuarios que querían funcionalidades extras que otros tipos de pagos como P2PK o P2PKH no ofrecían. Estos últimos eran los tipos de pagos disponibles que existían previamente, y que habían estado en la red de Bitcoin desde sus orígenes.

Más adelante en el artículo vamos a profundizar más aún en lo que respecta a su funcionamiento, pero es interesante entender ahora que P2SH utiliza los hashes de los scripts y también transacciones P2PKH o P2PK dentro de estos.

La idea detrás de su creación tiene que ver con permitir al usuario enviar BTC sin tener que preocuparse de como el destinatario de los fondos desbloquea los mismos. Por ejemplo, la transacción podría requerir una única firma o múltiples.

P2SH también hace posible un método que permite que la responsabilidad de pagar comisiones adicionales a los mineros no solo sea de la persona que la envía, sino también del que recibe. Un ejemplo de esto es Child Pays for Parent.

Anterior a que estuviera disponible este tipo de pago, la persona que envía no tenía ninguna forma estándar de implementar algo así.

Era posible utilizar scripts personalizados, pero estos eran bastantes complejos y llevaban mucho tiempo de escribir. En especial si no eras alguien con cierta experiencia en la materia.

P2SH no solo ofreció una forma de hacerlo, sino que también simplifico todo el proceso a través hashes de scripts fáciles de usar y formatos de direcciones de monederos de Bitcoin identificables.

¿Cómo funciona Pay To Script Hash?

La forma en que funcionan las transacciónes P2SH es similar a como lo hacen las de tipo P2PKH, en ambos casos el pago se encuentra bloqueado para un hash determinado.

Para el que no lo sepa, un hash es el resultado de pasar cierta información por una función que se conoce como función hash criptográfica.

Esta clase de funciones estan diseñas de tal manera que cuando reciben una entrada de información de cualquier tamaño siempre produce un resultado de una longitud fija, por ejemplo 256 bytes. Esto implica que mientras que la entrada puede varirar, la salida siempre tiene el mismo formato y longitud.

Difernecia entre P2PKH y P2SH

En el caso de las transacciones P2PKH, la entrada es simplemente la clave pública de la persona que recibe los fondos. Mientras que la salida, o hash, de esa clave pública es el hash sobre el cual los fondos están bloqueados.

La persona que lo recibe necesita generar la clave pública correcta, así como la firma digital que obtiene a partir de la clave privada de la cual se ha derivado la clave pública.

La red punto a punto de Bitcoin luego verifica que el hash de la clave pública es igual al hash del pago. En caso de que ambos lo sean, los fondos son liberados al usuario que es dueño de esa clave pública.

En los pagos P2SH, la entrada es más compleja que eso. Puede que haya algunos requisitos adicionales además de la verificación de la firma o la clave pública. Podría requerir una firma digital que es el resultado de múltiples claves privadas.

Estos requisitos se pueden crear con unas pocas líneas de código script. Que es hasheado para bloquear el pago en una transacción de “pago a un hash de script”.

Una vez que el script es convertido en un hash y luego este bloquea los fondos en la cadena de bloques, la única forma de gastar esas criptomonedas es ingresando el script original que fue usado en primer lugar para crear el hash.

Esto es lo que se conoce como “redimir el script”, y tiene el objetivo de verificar que el destinatario ha producido la información correcta, es decir, el correspondiente script, hash de script y firma de script, antes de que el dinero sea liberado.

Hay que destacar que el script puede incluir firmas digitales y la verificación de claves públicas.

Ventajas y Desventajas de las transacciones con P2SH

Debido a que P2SH ha sido desarrollador unos pocos años luego de Bitcoin Script, los desarrolladores tuvieron la posibilidad de mejorar los primeros diseños y crear una solución que apuntara a las limitaciones más comunes de la criptomoneda.

El resultado es que P2SH tiene más ventajas que desventajas. Veamos cuales son todas ellas.

Pros

1. Multi firma

El principal uso que se le da a P2SH tiene que ver con la capacidad de crear transacciones multi firmas.

Esta característica es muy importante, ya que ofrece una capa extra de seguridad para personas o conjunto de ellas que quieren asegurarse de que toda la responsabilidad de mover los fondos no recaiga sobre una sola persona.

2. Seguridad

Aunque las transacciones P2SH suelen incluir un conjunto de instrucciones muy complejas, el hash garantiza que este script se mantenga al mismo nivel de seguridad que P2PKH.

3. Fácil para quien envía

El creador de la transacción ya no tiene toda la responsabilidad de crear complejos scripts en representación del destinatario. Una transacción P2SH puede ser ejecutada simplemente al ser enviada a una dirección con formato estándar que comience con el número 3.

Por otro lado, el creador no tiene que pagar costos extras producto de almacenar más bytes debido a que el script es más complejo.

4. Compatible con SegWit y no SegWit

Cuando se utilizan claves privadas para crear un monedero con formato P2SH, esto se lo conoce como “Nest SegWit” o “SegWit Anidado”.

Si bien no es tan completo como SegWit Nativo (Bech 32), P2SH es compatible con direcciones no SegWit (P2PKH) u SegWit (Bech 32).

Esto permite que un usuario que tiene los fondos almacenados en un monedero con formato P2SH pueda enviar BTC fácilmente a cualquiera de las dos.

5. Eficiente computacionalmente

Los scripts P2SH suelen ser más pequeños que los scripts P2MS (Pay to Multi-Sig). Lo que se traduce a una menor utilización de memoria RAM para el conjunto de UXTO, lo que ayuda a una mayor velocidad de validación de la transacción.

Contras

1. Tamaño de información

Si vamos a lo concreto, un script multi firma con un esquema 2 de 3 usando el script P2SH requiere 278 bytes. Una cifra mayor si lo comparamos con los 253 bytes de P2MS.

Aunque no siempre es el caso, que ocupe más espacio genera un problema de congestión en la red.

2. Transacciones de una sola firma

P2SH fue creado inicialmente para proveer una solución a los monederos multi firma. Eso implica que hay otros scripts que son usados más comúnmente cuando se trata de una transacción de una sola firma.

La mayoría de los usuarios no necesitan de scripts complejos para las transacciones que hacen a diario, por lo que la adopción de P2SH es en cierta forma limitada.

¿Es usado P2SH a día de hoy?

Si vamos a un explorador de cadenas de bloques podemos identificar cuales son las transacciones P2SH con un simple método. Son aquellas transacciones que comienza con el número 3.

Por tanto, podemos ver que hay un gran número de ellas en la blockchain de Bitcoin, lo que nos habla de que su adopción es muy buena.

De acuerdo a unas estadísticas, más de 5,24 millones de BTC, que representan cerca del 28% del suministro circulante actualmente de Bitcoin, se encuentran guardados en salidas de tipo P2SH.

Por su parte, la cantidad de salidas de tipo P2SH han superado los 14,5 millones.

Acerca del autor

Criptotario

Me llamo Martin, soy ingeniero y apasionado de las inversiones y la tecnología. Me gusta mucho leer libros y todo aquello que me haga mejorar día a día.

Agrega un Comentario

Haz clic aquí para añadir un comentario