Приветствуем! Впервые на сайте Zcash?
The Zcash network is young, but evolving quickly! Sign up and we'll be in touch with monthly highlights on ecosystem growth, network development and how to get started with Zcash!

Язык

BIP199 для Hashed Timelocked Contracts

Sean Bowe | Mar 29, 2017

Хешированные, заблокированные по времени контракты (Hashed Timelocked Contracts или HTLC) - это довольно известная и простая технология построения протокола для атомных свопов. Они позволяют одной из сторон заплатить 2-й стороне взамен на некоторую информацию (как правило, ключ) с условием возврата денег в случае, если 2-я сторона откажется сотрудничать.

HTLC является ключевым инструментом Lightning network, транзакций с нулевым разглашением (ZKCP), на подобии тех, что мы продемонстрировали в прошлом году на FC'16, а также нашего проекта XCAT, о запуске которого мы объявили в прошлом месяце. Одним из первых шагов в этом направлении является интеграция общих функций HTLC в кошелек Bitcoin Core.

На этой неделе мы провели слияние рабочих копий в основную ветвь разработки проекта BIP199. Сейчас мы также находимся в процессе разработки эталонной реализации для кошелька на базе Bitcoin Core. На сегодняшний день HTLC могут использоваться без каких-либо изменений в протоколе Bitcoin, поэтому эти предложения по разработке и реализации способствуют стандартизации лучших методик и совместимости экосистем.

Актуальный текст BIP можно посмотреть здесь: https://github.com/bitcoin/bips/blob/master/bip-0199.mediawiki

Обзор HTLC

Скрипт HTLC выглядит так:

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 - это алгоритм хеширования (RIPEMD, SHA256), а TIMEOUTOP это или OP_CHECKLOCKTIMEVERIFY, или OP_CHECKSEQUENCEVERIFY. Этот скрипт позволяет «покупателю» приобрести прообраз для <digest>, через принуждение продавца раскрыть его, когда они требуют свои средства. Если продавец не раскроет его, покупатель сможет вернуть свои деньги по истечении периода ожидания.

Не сложно понять, как с помощью этого механизма можно построить атомные свопы между цепями:

  1. Сначала Алиса выбирает случайный ключ K. Путем хеширования K она получает X.
  2. Алиса создает транзакцию, отправляя Бобу 1 BTC, с временной блокировкой в 1 день, чтобы создать прообраз X.
  3. Боб ждет, когда транзакция Алисы появится в блокчейне Bitcoin и далее подтверждает HTLC транзакцию отправки 0,02 ZEC Алисе за прообраз X, устанавливая уже меньшую временную задержку - пол дня.
  4. Как только транзакция Боба появляется в блокчейне Zcash, Алиса может получить свои ZEC. Скрипт заставляет ее раскрыть К.
  5. Как только Боб узнает K, он может получить свои BTC.

Временная блокировка устанавливается таким образом, чтобы Боб имел возможность получить свои деньги до Алисы. Иначе Алиса может подождать и получить свои деньги, а потом потребовать деньги Боба, раскрыв K.

Наличие таких контрактов, как HTLC, приведенных к общим стандартам, с интеграцией и Bitcoin, и Zcash, поможет обоим нашим сообществам создавать захватывающие технологии, такие как децентрализованные обменники.

XCAT, bitcoin | Просмотреть все тэги