Het zou zomaar kunnen dat je er nog nooit van hebt gehoord: Hashed Timelock Contracts. Afgekort is dit een HTLC. Toch is dit iets dat heel belangrijk is in de verdere ontwikkeling van de blockchaintoepassingen. Lees in dit artikel meer over dit type contract en wat je ermee kan.
Wat is een HTLC?
De naam zegt het al een beetje: het zijn contracten die cryptografisch zijn gehashed met een daaraan gekoppelde tijdslimiet. Hashlocks en timelocks worden gebruikt om te zorgen dat een betaling goed en eerlijk verloopt. Deze twee aspecten van het contract zorgen ervoor dat de ontvanger de betaling kan bevestigen vóór de deadline (timelock) is aangebroken. Deze bevestigingen worden gedaan door middel van hashes, ook wel cryptografisch bewijs genoemd. Het is ook mogelijk om met een HTLC een bepaalde refund te claimen. Maar ook hier geld dan dat dat vóór een bepaalde tijd moet worden geclaimd mét het benodigde bewijs.
Hashlocks
Dat cryptografische bewijs, waar hierboven naar is gerefereerd, is iets dat onmisbaar is in de wereld van de blockchain. Er zijn verschillende manieren om een bepaalde boodschap ‘onleesbaar’ te maken. Het bekendste algoritme is de SHA256.
In het HTLC wordt er een cryptografische sleutel gegenereerd door de verzender van de transactie/betaling. Deze sleutel is nodig om de originele hash van de transactie te kunnen achterhalen of unlocken. Een voorbeeld van zo’n sleutel is het encrypte 18415734a1315e7b29602e15b758e10eda69056cb0575d613e12e99f1d4d7f20. Er is maar één uitkomst als deze key wordt gedecrypt. Dit kun je bijvoorbeeld doen via verschillende sites. Ik daag je uit deze code te decrypten! 🙂
18415734a1315e7b29602e15b758e10eda69056cb0575d613e12e99f1d4d7f20
ee8c60b3c1693ccaac74a599a5ae54f1462a50b2b8615c257228752358aa0032
Als je deze twee codes ziet zijn ze compleet anders. De onderliggende input (ook wel pre-image genoemd) verschilt echter maar één karakter, een uitroepteken. Deze methode van encrypten zorgt er dus voor dat het onmogelijk is om zomaar de originele tekst te achterhalen door een beetje te tweaken en te vergelijken.
The cryptographic proof of payment the receiver generates can then be used to trigger other actions in other payments, making HTLCs a powerful technique for producing conditional payments in Bitcoin.
Timelocks
Het tweede onderdeel van een HTLC is de timelock. Er worden twee verschillende timelocks gebruikt om het contract op te stellen. De eerste is een CheckLockTimeVerify (CLTV). Dit is de tijd waarop de coins kunnen worden gelocked en gereleased. Dit is dan op dit specifieke moment (tijd, datum of blockgrootte). De tweede manier is een CheckSequenceVerify (CSV). Deze manier is niet per direct afhankelijk van een tijdseenheid. Deze lock kan teniet worden gedaan op bepaalde blocks. Het tijdstip van dit specifieke block is dan de tijd waarop de transactie op z’n laatst kan worden volbracht.
De toepassingen van een HTLC
Naast gewone betalingen of refunds kan een HTLC ook worden ingezet op het gebied van atomic swaps. Daarnaast worden deze contracten ook gebruikt voor payment channels. Zo gebruikt het Lightning Network op Bitcoin ook de HTLC methode.
Maar hoe werkt de combinatie van hashlocks en timelocks nu eigenlijk? Hoe komt dit in de praktijk? Zie onderstaand voorbeeldje:
Payment channels
Anton opent een payment channel naar Bernard en Bernard opent op zijn beurt een payment channel naar Cornelis (figuur 1). Anton wil graag iets kopen van Cornelis voor 1000 Satoshi. Daarom genereert Cornelis een random nummer en de SHA256 hash hiervan. Dit geeft hij vervolgens aan Anton (figuur 2). Nu betaalt Anton de 1000 satoshis aan Bernard, maar voegt daarbij ook de hash van Cornelis toe aan de betaling met daarbij een voorwaarde: de betaling kan pas worden geclaimd als Bernard de data achter de hash terug levert. Bernard gebruikt op zijn beurt de payment channel naar Cornelis om de 1000 satoshis te betalen aan Cornelis en voegt daarbij een kopie van dezelfde voorwaarden toe aan de betaling (figuur 3). Dit zijn dus de Hashed Timelock Contracten. En gezien Cornelis de pre-image van de eerste betaling heeft, kan hij deze inkomende betaling ook afwerken omdat hij aan de voorwaarde kan voldoen. Daardoor ontvangt hij nu de betaling van Anton (via Bernard). En doordat hij dit doet, creëert hij ook het pre-image die Bernard nodig heeft om de transactie van Anton te voltooien.
Hashed Timelock Agreement
Hierboven zag je een voorbeeldje van een payment channel. Echter kunnen deze transacties ook tussen verschillende blockchains of ledgers gebeuren. Dan spreken we dus van cross-chain transacties (of atomic swaps). Er is enorm veel mogelijk met deze HTLC methode. Een vervolg op deze HTLC zijn de HTLA’s. Languit noem je dit Hashed Timelock Agreements. Een contract is een soort van overeenstemming die door een derde persoon wordt onderhouden. De agreements maken gebruik van hetzelfde principe, maar dit is gekoppeld aan een ledger. Daarbij komen er ‘interledger payments’ aan bod. Dit zijn dus betalingen tussen verschillende ledgers, zelfs als reguliere betalingen tussen deze verschillende grootboeken niet worden ondersteund.