¡Bienvenido! ¿Eres nuevo en Zcash?
La red de Zcash es joven, ¡pero evoluciona rápidamente! ¡Regístrate y nos pondremos en contacto con más información sobre cómo puedes comenzar con Zcash!

Idioma

BIP199 para Contratos de Ejecución Retardada Hasheados

Sean Bowe | Mar 29, 2017

Los Contratos de Ejecución Retardada Hasheados (HTLC, siglas de Hashed Timelocked Contracts) son una técnica bien conocida y simple para la construcción de protocolos de intercambio atómico. Permiten pagar a alguien por alguna información (generalmente, una clave) con una condición que nos permite recuperar el dinero si la otra parte no coopera.

Los HTLC son una herramienta fundamental en la red Lightning, en los pagos contingentes de conocimiento-cero (ZKCP) como el que realizamos el año pasado en el FC'16, y en nuestro proyecto XCAT que anunciamos el mes pasado. Uno de los primeros pasos a dar es la inclusión de la funcionalidad general de HTLC en la billetera de Bitcoin Core.

Esta semana, el bosquejo BIP199 que presentamos fue fusionado. También estamos trabajando en una implementación de referencia en la billetera Bitcoin Core. Lost HTLC pueden ser utilizados actualmente sin ningún cambio en el protocolo Bitcoin, por tanto estas propuestas e implementaciones tienen como fin estandarizar las mejores prácticas y la compatibilidad de los ecosistemas.

Consulta aquí el texto BIP actual: https://github.com/bitcoin/bips/blob/master/bip-0199.mediawiki

Visión General de un HTLC

Los scripts de HTLC se ven así:

1
2
3
4
5
6
7
OP_IF
[HASHOP] <digest> OP_EQUALVERIFY OP_DUP OP_HASH160 <seller pubkey hash>
OP_ELSE
<num> [TIMEOUTOP] OP_DROP OP_DUP OP_HASH160 <buyer pubkey hash>
OP_ENDIF
OP_EQUALVERIFY
OP_CHECKSIG

HASHOP es un algoritmo de hashing (RIPEMD, SHA256), y TIMEOUTOP puede ser OP_CHECKLOCKTIMEVERIFY o OP_CHECKSEQUENCEVERIFY. Este script permite al "comprador" comprar la preimagen de <digest> al forzar al vendedor a revelarla cuando reclame sus fondos. Si el vendedor no la revela, el comprador puede recuperar su dinero pasado el período de tiempo de espera.

Es fácil ver cómo se pueden construir intercambios atómicos entre blockchains con este mecanismo:

  1. Alice muestrea aleatoriamente K, la clave. Luego la hashea, dando como resultado X.
  2. Alice crea una transacción que paga a Bob 1 BTC, con un tiempo de espera de 1 día, para producir la preimagen de X.
  3. Bob espera que la transacción de Alice aparezca en el blockchain de Bitcoin y luego envía una transacción HTLC que paga a Alice 0,02 ZEC por la preimagen de X, con un menor tiempo de espera de medio día.
  4. Una vez que la transacción de Bob aparece en el blockchain de Zcash, Alice puede obtener su ZEC. El script la obliga a revelar la clave K.
  5. Una vez que Bob vea la K revelada por Alicie, él puede obtener su BTC.

Los tiempos de espera se seleccionan de manera que Bob siempre tenga la oportunidad de obtener un reembolso antes que Alice. De lo contrario, Alice podría esperar hasta obtener su reembolso, y luego reclamar el dinero de Bob al revelar K.

Tener contratos como los HTLC estandarizados e incluidos en Bitcoin y Zcash ayudará a ambas comunidades a desarrollar tecnologías interesantes tales como los intercambios descentralizados.

XCAT, bitcoin | Ver todos los tags