目錄:https://blog.csdn.net/qq_40452317/article/details/89646633
支付通道可以通過特殊類型的智能合同進一步擴展,以允許參與 者將資金用於可贖回的具有到期時間的祕密(secret)。 此功能稱爲哈希時間鎖 定合約或 HTLC,並用於雙向和路由的支付通道。
首先我們來解釋 HTLC 的“哈希”部分。 要創建一個 HTLC,預期的收款人將首先創 建一個祕密(secret)R。他們然後計算這個 R 的哈希 H:
H = Hash\(R\)
這步產生可以包含在輸出的鎖定腳本中的哈希 H。知道祕密的任何人可以用它來 兌換輸出。 祕密 R 也被稱爲哈希函數的 前 圖像 。 前圖像就是用作哈希函數輸入的數據。
HTLC 的第二部分是“時間鎖”組件。 如果祕密沒有被透露,HTLC 的付款人可以在 一段時間後得到“退款”。 這是通過使用絕對時間鎖 CHECKLOCKTIMEVERIFY來實現的。實現 HTLC 的腳本可能如下所示:
IF
# Payment if you have the secret R
HASH160 <H> EQUALVERIFY ELSE
# Refund after timeout.
<locktime> CHECKLOCKTIMEVERIFY DROP
<Payee Pubic Key> CHECKSIG
ENDIF
任何知道可以讓哈希等於 H 的對應祕密 R 的人,可以通過行使 IF語句的第一個子句來兌換該輸出。
如果祕密沒有被透露,HTLC 中寫明瞭,在一定數量的塊之後,收款人可以使用 IF 語句中的第二個子句申請退款。
這是 HTLC 的基本實現。 任何擁有祕密 R 的人都可以兌換這種類型的 HTLC。通 過對腳本進行微調,HTLC 可以採用許多不同的形式。 例如,在第一個子句中添加一個 CHECKSIG 運算符和一個公鑰來限制將哈希值兌換成一個指定的收件人, 這個人必須知道祕密 R.