Una dirección de Bitcoin es una cadena de caracteres alfanuméricos que un usuario puede distribuir a cualquier persona que desee enviarles dinero. Las direcciones de Bitcoin pueden venir en diferentes formatos, siendo los más comunes: Pay-to-PubKeyHash (P2PKH) y Pay-to-ScriptHash (P2SH).
Aunque cualquiera puede enviar bitcoins a cualquier dirección de Bitcoin dada, esos fondos solo se pueden gastar si cumplen con ciertos requisitos establecidos por el sistema de scripting de Bitcoin. Un script es efectivamente una lista de instrucciones grabadas que acompañan a cada transacción ejecutada; el script gobierna, cómo la siguiente persona que quiera gastar los bitcoins enviados puede acceder a ellos. Los scripts que acompañan las salidas en las transacciones se llaman PubKey Scripts (también se conocen como scripts de bloqueo), que se conocen en el código como scriptPubKey.
Los destinatarios de los bitcoins enviados generarán un script de firma (también conocido como script de desbloqueo), que es una colección de parámetros de datos que genera el administrador de fondos que se utiliza para satisfacer un script de PubKey. Los scripts de firma se llaman scriptSig en el código.
Por ejemplo, cuando Alice decide iniciar una transacción con Bob, la salida contiene una cantidad de bitcoins que se pueden gastar a condición de que se cumplan las instrucciones establecidas por el Script PubKey adjunto. Una vez que esta transacción se difunde y se agregue a la cadena de bloques, la red categorizará la transacción como un resultado de transacción no gastado (UTXO), y el software de billetera de Bob lo reconocerá como un saldo utilizable. Cuando Bob decide gastar este UTXO, creará una entrada que incluye un script de firma que debe satisfacer las condiciones que Alice colocó en la secuencia de comandos PubKey de la salida anterior.
Pay-to-PubKeyHash (P2PKH)
Las direcciones de Bitcoin tradicionales (el formato de dirección P2PKH) comienzan con el número 1 y pueden parecerse a las siguientes:
1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2
En una salida P2PKH, las instrucciones contenidas en el script PubKey incluyen:
- Un hash de clave pública
- Una firma de clave privada, para demostrar la propiedad de la clave privada que corresponde al hash de clave pública que se acaba de proporcionar.
Un propietario de una dirección P2PKH solo puede desbloquear el script de PubKey y gastar los fondos enviados, al proporcionar un hash de clave pública y una firma de clave privada.
Pay-to-ScriptHash (P2SH)
Los formatos de dirección de bitcoin P2SH comienzan con el número 3 y pueden parecerse a los siguientes:
3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
P2SH fue introducido en la Propuesta de Mejora de Bitcoin 16 (BIP 16) por Gavin Andresen, y dio como resultado un nuevo tipo de transacción "estándar" para el sistema de secuencias de comandos de Bitcoin. El propósito de P2SH, según Andresen: "Es trasladar la responsabilidad de proporcionar las condiciones para canjear una transacción del remitente de los fondos al redentor".
Con las transacciones P2SH, el script de bloqueo se reemplaza con un hash de script de canje. Este hash se deriva de un script de canje, que funciona de manera similar a la secuencia de comandos PubKey, ya que también contiene condiciones que deben cumplirse antes de poder gastar la salida. Cuando una transacción que intenta gastar el UTXO se inicia más tarde, la entrada debe contener el script PubKey (que contiene el hash del script de canje) y el script de desbloqueo.
En las transacciones P2SH, el script que alberga las condiciones para gastar la salida, que es el script de canje, no se presenta en el script de bloqueo. En su lugar, solo el hash (el hash del script de canje) se incluye en el script de bloqueo, el script de canje mismo se presenta como parte del script de desbloqueo cuando se gasta la salida. Esto tiene el efecto de, como señaló Andresen en BIP 16, de trasladar la responsabilidad de proporcionar las condiciones para canjear una transacción del remitente de los fondos al redentor.
En el ejemplo anterior, Bob genera un script de canje, hace un hash del script de canje para producir el hash del script de canje y proporciona el hash a Alice. Alice ahora puede crear una salida de estilo P2SH que contenga el hash de script de canje de Bob.
El tipo de transacción P2SH produce una serie de ventajas, tales como:
- El remitente puede financiar cualquier script de canje arbitrario sin saber cuáles son las condiciones de gasto adjuntas al script. Este es un resultado apropiado, porque al remitente de la transacción no le importa cómo se gastarán los fondos enviados en el futuro. Este es un problema para el destinatario, que se preocupa por las condiciones para gastos adicionales.
- Tarifa de transacción reducida para el remitente de los fondos. Las tarifas de transacción son directamente proporcionales al tamaño de una transacción, y un hash criptográfico de longitud fija le permite al remitente enviar fondos a cualquier script de canje arbitrario sin preocuparse por pagar tarifas más altas. Es responsabilidad del destinatario determinar qué tan grande será su transacción de gasto y cuánto costará, ya que tienen que incluir el script de canje para poder gastar los fondos. En otras palabras, la carga de construir el script y el costo de la transacción de un script largo se traslada al destinatario.
Una implementación común de la función P2SH es el script de dirección de firma múltiple. Este guion requiere que una transacción posea más de una firma digital para demostrar la propiedad y, por extensión, los fondos de gasto.
Fuente:
mycryptopedia.com - P2SH (Pay To Script Hash) Explained
Fuente:
mycryptopedia.com - P2SH (Pay To Script Hash) Explained
0 Comentarios