摘要
隨著區(qū)塊鏈技術(shù)的發(fā)展,越來(lái)越多的公鏈涌現(xiàn)出來(lái)蹋绽,例如:比特幣芭毙,以太訪,比特現(xiàn)金卸耘,EOS等稿蹲,但是每個(gè)公鏈就像一個(gè)價(jià)值孤島,各自定義著各自的協(xié)議鹊奖,鏈與鏈之間是不能互通的苛聘,因此出現(xiàn)了不少跨鏈或者側(cè)鏈項(xiàng)目,目的就是打通各條鏈之間的連接忠聚,連接各條鏈上的資產(chǎn)和數(shù)據(jù)设哗。
目前比較常用的方法有中心化公證人機(jī)制,多重簽名的公證人機(jī)制两蟀,雙向錨定的側(cè)鏈技術(shù)网梢,以及哈希時(shí)間鎖定。今天詳細(xì)介紹哈希時(shí)間鎖定是如何實(shí)現(xiàn)的赂毯,其他的以后慢慢填坑战虏。
哈希時(shí)間鎖定
跨鏈交易一定是原子交易,只有成功和失敗党涕,通過(guò)哈希時(shí)間鎖定技術(shù)可以實(shí)現(xiàn)該需求烦感。假設(shè)我們實(shí)現(xiàn)一條跨鏈CrossChain, CrossChain的代幣是cct,可以和以太訪等帶有公鏈的項(xiàng)目進(jìn)行資產(chǎn)轉(zhuǎn)移膛堤。
假設(shè)Alice和Bob在以太訪和跨鏈CrossChain均有賬戶手趣,Alice_Eth, Alice_Cross, Bob_Eth, Bob_Cross, 則Alice可以用自己手中的1eth,兌換Bob手中的10 cct肥荔,中間過(guò)程是通過(guò)哈希時(shí)間鎖定去中心化的绿渣。除了跨鏈CrossChain朝群,我們還需要實(shí)現(xiàn)一個(gè)跨鏈錢包CrossWallet,通過(guò)CrossWallet發(fā)起跨鏈交易中符。具體流程如下:
1. 在以太訪上創(chuàng)建智能合約姜胖,提供對(duì)外函數(shù) eth2cctLock, 包含的參數(shù)有:
a. hs:賬戶Alice_Eth 生成的隨機(jī)值s,進(jìn)行hash后的值
b. eth_value: 轉(zhuǎn)入的eth代幣數(shù)量
c. to: 跨鏈交易的兌換賬戶淀散,即:Bob_Eth
d. timeOut: 跨鏈轉(zhuǎn)賬超時(shí)時(shí)間右莱,如果在超時(shí)時(shí)間內(nèi),跨鏈交易失敗吧凉,則退回鎖定的eth給賬戶Alice_Eth
e. ss: 隨機(jī)值s經(jīng)過(guò)Alice_Cross賬戶公鑰加密后的數(shù)值
f.?cct_value: 兌換的cct數(shù)量
2. 在CorssChain創(chuàng)建智能合約隧出,提供對(duì)外函數(shù) cct2ethLock, 包含的參數(shù)有:
a. hs:賬戶Alice_Eth 生成的隨機(jī)值s踏志,進(jìn)行hash后的值
b. cct_value: 轉(zhuǎn)入的cct代幣數(shù)量
c. to: 跨鏈交易阀捅,接受cct的賬戶,即:Alice_Cross
d. timeOut:?跨鏈轉(zhuǎn)賬超時(shí)時(shí)間针余,如果在超時(shí)時(shí)間內(nèi)饲鄙,跨鏈交易失敗,則退回鎖定的cct給賬戶Bob_Cross
e. ss: 隨機(jī)值s經(jīng)過(guò)Alice_Cross賬戶公鑰加密后的數(shù)值
f. eth_value: 跨鏈交易eth的數(shù)量
3. Alice通過(guò)CrossWallet 調(diào)用以太訪智能合約的函數(shù)eth2cctLock圆雁,傳入?yún)?shù)hs, 1 eth,?Bob_Eth, 2小時(shí)忍级,ss, 10 cct。此時(shí)eth是鎖定狀態(tài)伪朽,只有傳入了正確的隨機(jī)值s轴咱,才能將eth給Bob_Eth,否則超時(shí)后eth回退給Alice_Eth烈涮。
4. CrossWallet 通知Bob有一個(gè)來(lái)自Alice的跨鏈交易朴肺,Bob覺(jué)得eth轉(zhuǎn)cct的匯率沒(méi)問(wèn)題,這比轉(zhuǎn)賬交易可以執(zhí)行坚洽,則通過(guò)CrossWallet 調(diào)用CrossChain上智能合約的函數(shù)cct2ethLock戈稿,傳入?yún)?shù)hs, 10 cct,?Alice_Cross, 1小時(shí),ss, 1 eth讶舰。此時(shí)cct是鎖定狀態(tài)鞍盗,只有傳入了正確的隨機(jī)值s,才能將cct給Alice_Cross, 否則超時(shí)后cct回退給Bob_Cross跳昼。
5. CrossWallet 通知Alice有一個(gè)來(lái)自Bob的跨鏈交易般甲,Alice通過(guò)ss,利用自己在CrossChain上的私鑰解密出隨機(jī)值s鹅颊,覺(jué)得交易沒(méi)有問(wèn)題的話欣除,調(diào)用CrossChain智能合約函數(shù)eth2cctUnLock,? 傳入的參數(shù)是隨機(jī)值s。
智能合約檢驗(yàn)s和hs是否匹配挪略,不匹配历帚,終止交易滔岳。匹配將合約上鎖定的10 cct給Alice_Cross, 然后自動(dòng)調(diào)用以太訪上的智能合約函數(shù)eth2cctUnLock,傳入?yún)?shù)s挽牢,以太訪智能合約檢驗(yàn)s和hs是否匹配谱煤,不匹配,終止交易禽拔。匹配將合約上的1 eth給Bob_Eth刘离。
綜上,通過(guò)哈希鎖定保證了跨鏈交易的原子性睹栖,cct轉(zhuǎn)eth是一個(gè)相反的過(guò)程與此類似硫惕。上述是通過(guò)智能合約的實(shí)現(xiàn)方法,比特幣這種非圖靈完備的哈希交易腳本實(shí)現(xiàn)起來(lái)較為復(fù)雜恼除,但思路都是一樣的,哈希值鎖定資產(chǎn)豁辉,通過(guò)原隨機(jī)值解鎖資產(chǎn)。