哈希時間鎖定契約包含哈希鎖定(Hashlock)以及時間鎖定(Timelock)兩個部分。
基本介紹
- 中文名:哈希時間鎖定契約
- 外文名:Hashed TimeLock Contract
- 縮寫:HTLC
簡介,相關簡介,閃電網路,
簡介
該契約有兩個部分構成,一個為哈希鎖定,另一個為時間鎖定。
哈希時間鎖定契約最典型的代表就是比特幣的閃電網路,閃電網路提供一個可擴展的微支付通,用以提升鏈外的交易處理能力,使用哈希鎖定將發起方的交易代幣進行鎖定,並通過時間鎖定讓接收方在某個約定的時刻前生成支付的密碼學證明,並與先前約定的哈希值一致,則可完成交易。
hash 時間鎖定契約(HTLC)是一種腳本,允許指定方(“賣方”)通過公開 hash 的原始信息來花費資金。
在退款情況下,它還允許第二方(“買方”)在逾時達到後花費這筆資金。
該腳本採用以下形式:
OP_IF
[HASHOP] OP_EQUALVERIFY OP_DUP OP_HASH160
OP_ELSE
[TIMEOUTOP] OP_DROP OP_DUP OP_HASH160
OP_ENDIF
OP_EQUALVERIFY
OP_CHECKSIG
其中:
- [HASHOP] 代表 OP_SHA256 或 OP_HASH160.
- [TIMEOUTOP] 代表 OP_CHECKSEQUENCEVERIFY 或 OP_CHECKLOCKTIMEVERIFY
相關簡介
哈希(散列)
哈希又稱作“散列”,是一種數學電腦程式,它接收任何一組任意長度的輸入信息, 通過哈希算法變換成固定長度的數據指紋輸出形式,如字母和數字的組合,該輸出就是“哈希值”。哈希使存儲和查找信息速度更快,因為哈希值通常更短所以更容易被找到。 同時哈希能夠對信息進行加密,一個好的哈希函式在輸入域中很少出現哈希衝突,哈希 一個特定文檔的結果總是一樣的,但找到具有相同哈希值的兩個檔案在計算上是計算上不可行的。
閃電網路
假設A想給C轉1個BTC,但是A和C之間沒有雙向轉支付通道,但是B和A、C都有通道,那么A可以直接在鏈上給C轉1個BTC,也可以和C建議通道以後再轉,也可以拜託B幫忙轉1BTC。A通過雙向支付通道 經由B給C轉1BTC的過程,就是閃電網路的套用。在不可信的情況下,轉賬過程中使用哈希時間鎖定契約(HTLC)!
- 為了完成這次交易,A會先給C發一個隨機數字R,接著C會對R進行簽名,生成一個哈希H,並返回給A。
- 然後A就找到B,如果B能夠給出生成簽名H的key,那么A就同意更新渠道的支付分配,為B轉1個BTC。實際上,A和B會先更新Commitment Tx,A生成三個交易,C1a,RD1a和HTLC(a),C1a和RD1a的內容同上面的RSMC,HTLC(a)的內容為,如果B找到可簽名H的key,B可以直接拿走HTLC中的1BTC,否則HTLC(a)中的1BTC在一定的鎖定期之後,A可以重新花掉。
- 之後B會拿著H去找C,用1個BTC來換籤名key,同時更新B和C的支付分配。更新過程同A和B之間一樣,基於HTLC。因為簽名的key就是從C這裡生成的,所以他肯定知道,而且理論上也只有他才知道。接著C將簽名用的key告訴B,並更新了其渠道的支付分配。
- 同理,B使用key從A那裡也拿到了1BTC,A以脫鏈的形式付給C一個BTC。
- 這裡有兩個需要注意的問題,A和B之間以及B和C之間的支付分配都會重新創建Commitment Tx,而每個Commitment Tx帶有鎖定時間(如之間的1000個確認),A和B之間的鎖定時間需要長於B和C之間的鎖定時間,防止在B拿到key之後,A和B之間的鎖定時間已經到期,B會拿不到幣。
- 第二個問題是:在B找C拿key的過程中,A和B之間的通道可以隨時斷開,B不需要信任A在此期間會關閉通道,因為即使A作惡,故意關閉通道,HTLC(a)中的幣,A還需要等到一定的鎖定期以後才能花掉,只要B在這個鎖定期內拿到簽名所用的key,就可以從HTLC(a)中拿走1BTC。
- B作為中間人,可以收取少量的費用。
- 通道之間的交易,實際上無需確認等待,瞬時完成的,對於比特幣的TPS有大量的提升。