上一篇解讀到閃電網(wǎng)絡(luò)白皮書中可撤銷的順序成熟度合同RSMC速种,哈希時間鎖合約(Hashed-Time Lock Contract姜盈,簡稱HTLC)是在此基礎(chǔ)上進一步延伸,引入哈希密碼和時間鎖概念哟旗,讓單個支付通道相互連接形成網(wǎng)絡(luò)贩据,最終形成覆蓋全球的支付網(wǎng)絡(luò)。具體操作就是發(fā)起交易時闸餐,雙方約定轉(zhuǎn)賬方先凍結(jié)一筆錢饱亮,并提供了一個哈希值,如果在一定時間內(nèi)有人能提出一個密文舍沙,并且哈希后的值與已知的哈希匹配近上,則這筆錢就轉(zhuǎn)給接收方。
RSMC只支持最簡單的無條件資金支付拂铡,HTLC進一步實現(xiàn)了有條件的資金支付壹无,通道余額的分配方式也因此變得更為復(fù)雜。
它有兩個條件
Hash lock:給你一個哈希值H(R)感帅,當(dāng)你給出它的原像R時斗锭,你就可以花這筆錢。
Time lock:在某個時間點之前提供原像R才是有效失球,超出時間后交易失效岖是。
舉個栗子,Alice和Bob分別拿出0.5個BTC实苞,建立一個通道FT(資金交易)豺撑,相當(dāng)于資金池。根據(jù)RSMC原理黔牵,生成承諾交易CT:C2a和C2b聪轿。圖示所反映的通道余額劃分是: 有0.9 BTC以無條件余額劃分的形式在Alice和Bob之間分割,Alice占0.4 BTC猾浦,Bob占0.5 BTC陆错。Alice向Bob有條件支付0.1 BTC,如果Bob能于3天內(nèi)(實際是以區(qū)塊鏈高度代表的未來某時)之前提供合適的R金赦,Bob就能得到這筆錢危号,反之這筆錢仍然回到Alice賬上。
備注:其中“> 3 days”是利用lock time字段的最新擴展實現(xiàn)的素邪。與“seq=1000”的區(qū)別在于外莲,lock time指定的是一個高度絕對值,而sequence指定的是相對父交易所在區(qū)塊高度的相對值。
交易并非總是一帆風(fēng)順 偷线,超時退款時有發(fā)生磨确。如果Bob未能在3天內(nèi)及時提交R,Alice可以通過用自己的私鑰準(zhǔn)備各交易的輸入解鎖腳本并發(fā)布交易到區(qū)塊鏈上声邦,最終取回這0.1 BTC乏奥。在此方式下,最終Alice拿到0.5 BTC亥曹,Bob拿到0.5 BTC邓了。也可采用新建版本余額的方式,無需終止通道媳瞪。
若需要作廢舊合約骗炉,建立新合約,那HLTC有該如何操作蛇受?這部分句葵,同RSMC,也需要建立違規(guī)補償交易(breach remedy transaction)兢仰。若Alice將舊交易C2a和HT1a在區(qū)塊鏈上公開乍丈,由于seq字段的限制,Alice不能立刻公開交易RD2a和HTRD1a把将,這樣就使得Bob有機會發(fā)現(xiàn)Alice企圖作惡并能夠通過公布交易BR2a和HTBR1a的方式予以懲戒轻专。發(fā)出這對交易后,通道中的全部資金將都歸Bob所有察蹲。下圖中BR2a铭若、HBR1a、HTBR1a就是違規(guī)補償交易递览。
以上就是哈希時間鎖在RSMC的基礎(chǔ)上實現(xiàn)了條件交易,技術(shù)點在于哈希密碼瞳腌,這類似玩一個猜謎游戲绞铃,知道謎底方可解鎖。問題來了嫂侍,這樣的點對點交易又是如何連成網(wǎng)絡(luò)儿捧?時間鎖的作用在哪?
舉個栗子挑宠,Alice除了和Bob之間有交易需求菲盾,和Carol之間也需要產(chǎn)生交易,怎么辦各淀?一種辦法懒鉴,當(dāng)然是Alice和Carol之間建立一個雙向通道。還有一個辦法是,Alice和Bob之間已經(jīng)現(xiàn)成有一個雙向通道临谱,Bob和Carol之間也已經(jīng)現(xiàn)成有一個雙向通道璃俗。那么交易可以通過Bob來實現(xiàn)。
假設(shè)Alice需要付給Carol 1個BTC悉默,由最終的收款方Carol創(chuàng)建一個原像R和對應(yīng)的哈希值值H(R)城豁,然后把H(R)給了Alice。Alice就和Bob之間達成了一個合約:如果Bob在3天內(nèi)(Lock time=3 day)抄课,提供H(R)對應(yīng)的密鑰R唱星,Alice就給Bob 1.001 BTC,超過3天跟磨,BTC原路返回給Alice间聊。
很顯然,密鑰R只有Carol有吱晒,Bob沒有甸饱。那Bob怎么辦呢?
Bob和Carol達成一個合約:如果Carol在2天內(nèi)(Lock time=2 day)仑濒,提供H(R)對應(yīng)的密鑰R叹话,Bob 就給Carol 1 BTC,超過2天墩瞳,BTC原路返回給Bob驼壶。兩天內(nèi),Carol向Bob提供了秘鑰R喉酌,獲得了1 BTC热凹。Bob向Alice提供了秘鑰R,獲得了1.001 BTC泪电。
最終結(jié)果就是:Alice支付了1.001 BTC般妙,Carol收到1 BTC,而中間方Bob收到0.001BTC的手續(xù)費相速。
由此延伸碟渺,若Alice和Eric之前想進行交易,但沒有支付通道突诬。Alice和Bob之間苫拍,Bob和Carol之間、Carol和Diana之間旺隙、Diana和Eric之間绒极,已經(jīng)有了支付通道,那把這些通道串聯(lián)起來蔬捷,就相當(dāng)于建立了Alice和Eric之間的支付通道垄提。
交易流程就是:最終的收款方Eric構(gòu)建了一個秘鑰R和對應(yīng)的哈希值值H(R),然后把H(R)給了Alice。Alice和Bob之間塔淤,Bob和Carol之間摘昌、Carol和Diana之間、Diana和Eric之間分別創(chuàng)建一個時效性遞減的條件交易合約高蜂。Eric把R給Diana聪黎,拿到1.0 BTC, Diana把R給Carol备恤,拿到1.001BTC......密鑰R一直傳遞稿饰,最終到達Alice。最終結(jié)果就是:Alice支付了1.003 BTC露泊,Eric收到1 BTC喉镰,每個中間方,收到0.001BTC 的手續(xù)費惭笑。這樣眾多的支付通道相連就形成一個巨大的支付交易網(wǎng)絡(luò)侣姆。
上面的交易過程,核心就是“一方用密鑰R向另一方換錢沉噩,超過時間沒有換捺宗,錢自動回到打款人的賬號”,這個過程就是所謂的哈希時間鎖HTLC(Hashed Time Lock Contract)川蒙。HTLC本身想法不復(fù)雜蚜厉,需要和RSMC緊密結(jié)合,才能形成一個完善的畜眨、具有多個中間節(jié)點的支付通道昼牛。