HTLC

acronimo di: Hash Timelock Contracts

Difficoltà: avanzato

Argomento: tecnologia


DEFINIZIONE

Un HTLC è un pagamento condizionale dal mittente al destinatario. Può essere speso immediatamente dal destinatario rivelando un certo codice segreto, oppure può essere reclamato dal mittente dopo un certo periodo di timeout.

Alla base di questo funzionamento c'è un concetto di base: il destinatario del pagamento può spenderlo subito attraverso una transazione valida, mentre la restituzione dell'importo al mittente è una forma di protezione per il mittente laddove il destinatario non pubblichi una transazione valida.

È quindi un pagamento temporizzato: il ricevente per incassarlo deve presentare un codice segreto, ma se non lo fa entro un certo tempo, il pagamento torna indietro a chi lo ha emesso.

È una funzione per creare smart contract, il cui uso più popolare è il Lightning Network di Bitcoin, e più recentemente DeFI attraverso l’uso di atomic swap sia sulla stessa chain che cross-chain, zero-knowledge contingent payment, and e altri protocolli di smart contract. Sono smart contract che facilitano le transazioni di scambio atomico, e funzionano come una "cassaforte virtuale" che richiede una chiave HashLock e TimeLock per sbloccare i fondi durante uno scambio.

HTLC è l'acronimo di "Hash Time-Locked Contract" (contratto bloccato da hash e temporale), ed è un tipo di smart contract utilizzato sulla rete Lightning per consentire il trasferimento di fondi tra due parti in modo sicuro e affidabile. Un HTLC stabilisce una condizione per il trasferimento di fondi, ad esempio il fornitore di liquidità deve fornire un hash di una password nota solo a lui, e il ricevente deve fornire la password corrispondente per ricevere i fondi. In questo modo, entrambe le parti hanno la certezza che l'altra parte ha rispettato i termini del contratto. Gli HTLC sono molto utili sulla rete Lightning perché consentono di eseguire transazioni in modo rapido e sicuro, permettendo ai partecipanti alla rete di fidarsi l'uno dell'altro senza dover passare attraverso intermediari centralizzati.

La funzione HTLC consente l'implementazione di transazioni vincolate a tempo tra due utenti: il destinatario di una transazione HTLC deve riconoscere il pagamento presentando una prova crittografica entro un periodo di tempo specificato (o più precisamente entro un numero di blocchi). Se il destinatario rinuncia o non richiede il pagamento, i fondi verranno restituiti al mittente originale. La funzionalità HTLC viene applicata nei canali di pagamento sia bidirezionali che instradati per consentire trasferimenti sicuri di fondi su vari canali, senza che sia necessario riporre fiducia su nessuno degli intermediari.

Le due componenti, o clausole, principali di un HTLC sono:

  • una clausola di pagamento assicurata con un hashlock
  • e una clausola di rimborso assicurata con un timelock.

La chiave hashlock assicura che la transazione vada a buon fine solo quando entrambe le parti forniscono una prova crittografica mentre la funzione timelock assicura che una scadenza possa essere impostata e rispettata per il completamento della transazione. Per aprire un hashlock e richiedere un pagamento, il destinatario deve rivelare la preimage di un digest di hash codificato nello smart contract. Per sbloccare un timelock e ricevere un rimborso, chi spende deve aspettare fino a un certo tempo codificato nello smart contract. Poiché le preimage rivelate e il tempo trascorso non identificano in modo univoco la persona che dovrebbe ricevere il pagamento, gli HTLC sono sicuri solo se richiedono anche una firma unica che corrisponda alla chiave pubblica di chi spende (refundee) o del destinatario.

L'utilizzo sulla rete Lightning consente ai pagamenti Lightning di essere instradati attraverso più nodi. L'instradamento Lightning permette a due parti di effettuare transazioni in modo trustless senza un canale diretto tra loro, utilizzando invece canali intermediari.

I PTLC svolgono la stessa funzione degli HTLC ma possono fornire una migliore privacy, usare meno spazio a blocchi e prevenire l'intercettazione del routing, anche se hanno degli aspetti negativi.

Questo il codice script di un HTLC

# al destinario via LN penalty
OP_DUP OP_HASH160 <RIPEMD160(SHA256(revocationpubkey))> OP_EQUAL
OP_IF
    OP_CHECKSIG
OP_ELSE
    <receiver_htlcpubkey> OP_SWAP OP_SIZE 32 OP_EQUAL
        OP_NOTIF
            # al mittente via HTLC-timeout transaction (timelocked).
            OP_DROP 2 OP_SWAP <sender_htlcpubkey> 2 OP_CHECKMULTISIG
        OP_ELSE
            # al destinatario con preimage
            OP_HASH160 <RIPEMD160 (payment_hash)> OP_EQUALVERIFY
            OP_CHECKSIG
        OP_ENDIF
OP_ENDIF


aggiornato il 2022-03-15