Hashed Timelock Contract (HTLC)
Wat is een Hashed Timelock-contract (HTLC)?
Een Hashed Timelock Contract (HTLC) is een soort slim contract dat wordt gebruikt in blockchain-applicaties om het tegenpartijrisico te elimineren door de implementatie van tijdgebonden transacties mogelijk te maken. Concreet betekent dit dat ontvangers van een transactie de betaling moeten erkennen door binnen een bepaald tijdsbestek cryptografisch bewijs te genereren. Anders vindt de transactie niet plaats.
Atomic swaps, cross-chain trading tussen cryptocurrencies wordt vaak bereikt met behulp van HTLC’s. Daarnaast Bitcoin’s bliksem netwerk (LN) maakt ook gebruik HTLCs.
Belangrijkste leerpunten
- Een hashed timelock-contract (HTLC) vermindert het tegenpartijrisico in gedecentraliseerde slimme contracten door effectief een op tijd gebaseerde escrow te creëren.
- Dit type smart contract vereist dat de ontvanger van een betaling deze binnen een bepaalde periode erkent of verbeurt.
- Betalingen met HTLC’s zijn voorwaardelijk en hebben dus efficiëntievoordelen voor blockchain-transacties. Deze eigenschap maakt HTLC’s tot een fundamenteel hulpmiddel dat wordt gebruikt door het bliksemnetwerk.
Hoe een gehasht timelockcontract werkt
Een Hashed Timelock Contract (HTLC) gebruikt verschillende elementen van bestaande cryptocurrency transacties. HTLC-transacties gebruiken bijvoorbeeld meerdere handtekeningen, die bestaan uit een privé-openbare sleutel, om transacties te verifiëren en valideren. Maar er zijn twee elementen die HTLC onderscheiden van standaard cryptocurrency-transacties of gewone slimme contracten.
Het eerste element is de hashlock. Een hashlock is een gehashte of cryptografisch gecodeerde versie van een openbare sleutel die wordt gegenereerd door de maker van een transactie. De bijbehorende privésleutel wordt vervolgens gebruikt om de originele hash te ontgrendelen. In HTLC genereert de oorspronkelijke partij een sleutel en hasht deze. De hash wordt opgeslagen in een voorimage die vervolgens wordt onthuld tijdens de laatste transactie. HTLC’s zijn geprogrammeerd om te vervallen na een bepaalde tijdsperiode of een bepaald aantal gegenereerde blokken, waardoor een bekende einddatum ontstaat.
Het tweede belangrijke element van HTLC is een timelock. Er worden twee verschillende timelocks gebruikt om tijdsbeperkingen in te stellen voor contracten die met HTLC zijn gegenereerd. De eerste is CheckLockTimeVerify (CLTV). Het gebruikt een tijdbasis om bitcoins te vergrendelen en vrij te geven. Dit betekent dat tijdsbeperkingen hardgecodeerd zijn en dat munten alleen op een specifieke tijd en datum of een specifieke hoogte van de blokgrootte worden vrijgegeven.
De tweede is CheckSequenceVerify (CSV). Het is niet afhankelijk van de tijd. In plaats daarvan gebruikt het het aantal gegenereerde blokken als een meting om bij te houden wanneer een transactie moet worden afgerond.
Om een transactie met HTLC uit te voeren, moeten geïnteresseerde partijen kanalen met elkaar openen.
Real-World voorbeelden van een gehashte timelock
Stel dat Alice haar Bitcoin wil inwisselen voor Litecoin van Bob. Een typische HTLC-transactie tussen hen vindt als volgt plaats:
- Alice genereert een hash van haar privésleutel en stuurt deze naar Bob op de Litecoin- blockchain. Ze genereert ook een voorimage van de hasj door een nominale transactie te creëren. Deze pre-image helpt haar de transactie te valideren en af te ronden.
- Bob genereert ook een hasj uit zijn sleutel en stuurt deze naar Alice. Daarnaast creëert hij een voorimago door een nominale transactie (in Litecoin) met Alice uit te voeren.
- Zodra Alice de Litecoin-transactie van Bob heeft ontvangen, ondertekent ze deze met de originele sleutel die al bij haar beschikbaar is in de voorafbeelding. Bob doet hetzelfde aan zijn kant en gebruikt zijn privésleutel om de transactie van Alice te ontgrendelen.