Langue

BIP199 pour les contrats hachés et verrouillés dans le temps

Sean Bowe | Mar 29, 2017

Les contrats HTLC (Hashed Timelocked Contracts, ou contrats hachés et verrouillés dans le temps) sont une technique simple et bien connue afin de créer des protocoles pour les échanges atomiques. Ils vous permettent de payer à une autre partie pour la fourniture d'informations (généralement, une clé) avec une condition qui vous permet de récupérer votre argent si l'autre partie ne coopère pas.

Les HTLC sont un outil fondamental du réseau Lightning, des paiements contingents à connaissance nulle (ZKCP), comme celui que nous avons effectué l'an dernier au cours de l'exercice 2016, et de notre projet XCAT, que nous avons annoncé le mois dernier. L'une des premières avancées est celle de l'inclusion d'une fonctionnalité HTLC générale dans le portefeuille Bitcoin Core.

Cette semaine, l'ébauche du document BIP199 que nous avions soumise a été fusionnée. Nous avons également une implémentation de référence en cours dans le portefeuille Bitcoin Core. Les HTLC sont utilisables dès aujourd'hui, sans modification du protocole Bitcoin. Ces propositions et implémentations visent donc à normaliser les bonnes pratiques et la compatibilité de l'écosystème.

Consultez le texte BIP actuel à l'adresse suivante : https://github.com/bitcoin/bips/blob/master/bip-0199.mediawiki

Présentation de HTLC

Les scripts HTLC se présentent comme suit :

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 est un algorithme de hachage (RIPEMD, SHA256) et TIMEOUTOP peut être OP_CHECKLOCKTIMEVERIFY ou OP_CHECKSEQUENCEVERIFY. Ce script permet à « l'acheteur » d'acheter la pré-image à <digest> en forçant le vendeur à la révéler lorsqu'il réclame ses fonds. Si le vendeur ne la révèle pas, l'acheteur peut récupérer son argent au terme du délai.

Visualisez facilement la création d'échanges atomiques inter-chaînes à l'aide de ce mécanisme :

  1. Alice échantillonne de manière aléatoire K, la clé. Elle la hache, produisant X.
  2. Alice crée une transaction pour payer à Bob 1 BTC, avec un délai d'expiration d'1 jour, afin de produire la pré-image de X.
  3. Bob attend que la transaction d'Alice apparaisse dans la blockchain de Bitcoin, puis soumet une transaction HTLC pour verser à Alice 0,02 ZEC pour la pré-image de X avec un délai plus court d'une demi-journée.
  4. Lorsque la transaction de Bob apparaît dans la blockchain Zcash, Alice peut obtenir ses ZEC. Le script la force à révéler K.
  5. Lorsque Bob voit la révélation de K par Alice, il peut obtenir ses BTC.

Les délais d'expiration sont sélectionnés de manière à ce que Bob ait toujours une possibilité d'obtenir un remboursement avant Alice. Dans le cas contraire, Alice pourrait attendre pour obtenir son remboursement, puis réclamer l'argent de Bob en révélant K.

Le fait de disposer de contrats tels que des HTLC normalisés et inclus dans Bitcoin et Zcash permettra à nos deux communautés de créer des technologies fascinantes telles que les échanges décentralisés.

XCAT, bitcoin | Afficher tous les mots-clés