Bem vindo! Novo em 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!

Idioma

BIP199 para contratos Hashed Timelocked

Sean Bowe | Mar 29, 2017

Contratos Hashed Timelocked (HTLC) compreendem uma simples e bem conhecida técnica de construção de protocolos para swaps atômicos. Eles permitem a você pagar um terceiro por alguma informação (geralmente, uma chave) com a condição que lhe permite receber o dinheiro de volta se a outra parte não cooperar.

Os contratos HTLC são uma ferramenta fundamental na rede Lightning, no protocolo de pagamentos ZKPC (zero-knowledge contingent payments) como demonstramos ano passado na FC`16 e em nosso projeto XCAT que anunciamos mês passado. Um dos primeiros passos à frente é a inclusão da funcionalidade geral do HTLC na Bitcoin Core wallet.

Nesta semana, nosso rascunho do BIP199 foi fundido. Nós também temos um trabalho em andamento sobre a implementação de referência na Bitcoin Core wallet. Os contratos HTLCs podem ser usados atualmente sem quaisquer mudanças no protocolo do Bitcoin, então essas propostas e implementações são para as melhores práticas de padronização e compatibilidade do ecossistema.

Confira a versão atual do texto BIP aqui: https://github.com/bitcoin/bips/blob/master/bip-0199.mediawiki

Visão geral do HTLC

Os scripts do HTLC se parecem com isso:

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 é um algoritmo hashing (RIPEMD, SHA256), e TIMEOUTOP é tanto OP_CHECKLOCKTIMEVERIFY ou OP_CHECKSEQUENCEVERIFY. Este script permite ao "comprador" adquirir a pré imagem para <digest> ao forçar o vendedor a revelá-la quando eles pedirem seus fundos. Se o vendedor não revelá-la, o comprador pode reaver o dinheiro depois do período de timeout.

É fácil ver como os swaps atômicos cross-chain podem ser construídos com este mecanismo:

  1. Alice aleatoriamente experimenta K, a chave. Ela faz o hash, produzindo X.
  2. Alice cria uma transação pagando 1 BTC ao Bob, com um timeout de 1 dia, para produzir a pré imagem X.
  3. Bob aguarda a transação da Alice aparecer na blockchain do Bitcoin e então envia uma transação HTLC pagando a Alice 0.02 ZEC pela pré-imagem de X com um timeout menor de metade de um dia.
  4. Uma vez que a transação do Bob aparecer na blockchain do Zcash, a Alice pode obter o ZEC que lhe pertence. O script a força revelar K.
  5. Uma vez que Bob vê a revelação da Alice sobre o K, ele pode obter seu BTC.

Os timeouts são selecionados de maneira que Bob sempre tenha uma oportunidade de obter o reembolso antes da Alice. Senão, Alice poderia esperar por seu reembolso e então requerer o dinheiro do Bob ao revelar K.

Ter contratos HTLCs padronizados e incluídos no Bitcoin e Zcash ajudarão ambas nossas comunidades a construir tecnologias emocionantes como as corretoras descentralizadas.

XCAT, bitcoin | Veja todas as tags