Qtum量子鏈基金會(huì)宣布已正式實(shí)現(xiàn)了QTUM-BEAM原子交換
7月10日,Qtum量子鏈基金會(huì)宣布實(shí)現(xiàn)QTUM-BEAM原子交換(Atomic Swap),原子交換(Atomic Swap)允許兩個(gè)獨(dú)立區(qū)塊鏈上的加密貨幣進(jìn)行原子性的跨鏈交易,QTUM和BEAM的原子交換成功象征著Qtum在隱私和跨鏈領(lǐng)域更進(jìn)了一步。
01. 前言
2019年1月,Qtum量子鏈基于Decred的支付腳本已實(shí)現(xiàn)QTUM-BTC原子交換,(回顧:Qtum 量子鏈實(shí)現(xiàn)QTUM-BTC原子交換),但由于區(qū)塊鏈本身匿名性不足,更高程度的隱私保護(hù)仍然是一個(gè)急需解決的問(wèn)題。
MimbleWimble隱私協(xié)議的出現(xiàn)給隱私領(lǐng)域指明了新的方向,Beam作為MimbleWimble的代表,在保護(hù)隱私的同時(shí)簡(jiǎn)化交易,具有良好的可擴(kuò)展性。2019年6月,QTUM-BEAM原子交換代碼被合入了Beam的主分支。目前,已經(jīng)在Beam masternet和Qtum testnet成功進(jìn)行了原子交換的實(shí)驗(yàn),實(shí)現(xiàn)了完整的跨鏈價(jià)值流通。
02. 背景
原子交換
原子交換(Atomic Swap)允許兩個(gè)獨(dú)立區(qū)塊鏈上的加密貨幣進(jìn)行原子性的跨鏈交易,這種交易無(wú)需依賴(lài)第三方的信任背書(shū)。原子性的意思是,要么交易成功,要么交易失敗,不會(huì)存在第三種狀態(tài)。
原子交換是一種技術(shù),該技術(shù)允許您在沒(méi)有第三方的情況下交易完成點(diǎn)對(duì)點(diǎn)交易。它們還會(huì)安排您與未知用戶交易,而且無(wú)需信任。別人必須首先發(fā)送他們的資金,因?yàn)樗麄兛赡軟Q定不履行他們的交易。原子交換使各方能夠根據(jù)他們預(yù)先商定的條件,在無(wú)需信任的條件下,進(jìn)行不同貨幣交換,而不必?fù)?dān)心會(huì)損失資金。
如果Alice和Bob想交換某種數(shù)量的兩種加密貨幣A和B,在沒(méi)有使用中心化交易所的情況,兩人需要就兩種加密貨幣的匯率進(jìn)行達(dá)成一致,然后通過(guò)原子交換,Alice將A發(fā)送給Bob,而B(niǎo)ob將B發(fā)送給Alice。
但是,區(qū)塊鏈中的交易是不可逆轉(zhuǎn)的,在沒(méi)有中心背書(shū)的情況進(jìn)行不同貨幣的交易就一定牽涉到操作先后的問(wèn)題,如果Alice首先發(fā)送了他的A貨幣,那么Alice則處于不利的狀態(tài),因?yàn)樗荒艽_定Bob是否會(huì)按照約定將一定量的B發(fā)送給她。
為了使分散的點(diǎn)對(duì)點(diǎn)交易能夠順利完成,就需要一種機(jī)制來(lái)保證雙方不會(huì)發(fā)生欺騙,哈希時(shí)間鎖(HTLC)是現(xiàn)在比較常用的解決辦法。
HTLC
實(shí)現(xiàn)原子交換的主要解決方法是哈希時(shí)間鎖(Hashed Timelock Contracts,HTLC)。其核心思想是將一筆交易鎖住,只有當(dāng)滿足特定的條件下才能使用這筆交易。
假設(shè)Alice和Bob正在進(jìn)行數(shù)字代幣A和B的交換。Alice首先創(chuàng)建一個(gè)加密的數(shù)字密碼箱,她將鎖的規(guī)格告知Bob。并把數(shù)字代幣A放入密碼箱中,打開(kāi)密碼箱需要鑰匙和Bob的簽名。Bob將用相同規(guī)格的鎖來(lái)創(chuàng)建一個(gè)類(lèi)似的密碼箱,解鎖Bob的密碼箱需要相同的鑰匙和Alice的簽名。
由于打開(kāi)密碼箱需要另一個(gè)人的簽名,只有Alice可以打開(kāi)Bob的密碼箱,只有Bob可以打開(kāi)Alice的密碼箱子。當(dāng)Alice打開(kāi)Bob的密碼箱時(shí),鑰匙會(huì)顯示在區(qū)塊鏈上。Bob可以使用Alice公布的鑰匙打開(kāi)Alice創(chuàng)建的密碼箱以獲得A幣。如果出現(xiàn)問(wèn)題或者一方在交易期間退出,即在約定的時(shí)間內(nèi)密碼箱沒(méi)有被打開(kāi),根據(jù)HTLC的設(shè)計(jì),數(shù)字貨幣會(huì)分別退回給Alice和Bob。
以上就是HTLC的設(shè)計(jì)理念,但算法的實(shí)際實(shí)現(xiàn)會(huì)更復(fù)雜,考慮的實(shí)際問(wèn)題也會(huì)更多。
Beam
Beam是基于MimbleWimble協(xié)議開(kāi)發(fā)的加密貨幣,具有強(qiáng)隱私性、替代性和擴(kuò)展性。MimbleWimble通過(guò)將用戶的身份和交易的金額等數(shù)據(jù)進(jìn)行隱藏,從而保證了交易的隱秘性。
MimbleWimble需要交易的雙方在發(fā)起交易之前進(jìn)行交互以協(xié)商一些參數(shù)。因此,一筆交易的生成需要交易雙方在線進(jìn)行聯(lián)合簽名。值得一提的是,Beam提供了Secure BulleTIn Board System(SBBS)的機(jī)制,以提供一個(gè)雙方同時(shí)在線的緩沖時(shí)間。
03. 功能實(shí)現(xiàn)
假如有兩個(gè)用戶Alice和Bob,Alice擁有BEAM,Bob擁有QTUM。Alice想用200個(gè)BEAM兌換Bob的80個(gè)QTUM。
交易流程
1.1 Bob生成Qtum Lock TransacTIon
Alice首先將自己的公鑰傳給Bob,Bob本地生成一個(gè)原像(Hash Preimage),計(jì)算其像(Hash Image),并利用Alice的公鑰和像(Hash Image)生成一個(gè)有加鎖腳本的交易,這個(gè)交易鎖住了80個(gè)Bob的QTUM UTXO,只有當(dāng)滿足以下任一條件時(shí),才能使用這筆UTXO。
· 原子交換約定的時(shí)間已過(guò)(通過(guò)當(dāng)前塊的高度來(lái)判斷經(jīng)過(guò)的時(shí)間),Bob通過(guò)使用自己的私鑰來(lái)宣稱(chēng)對(duì)這筆UTXO的所有權(quán)。這個(gè)條件主要用于在原子交換因?yàn)槟撤N原因失敗之后,Bob有能力將這筆UTXO收回。
· 揭露原像(Hash Preimage),并使用Alice的私鑰進(jìn)行認(rèn)證。這個(gè)條件主要用于正常情況下,Alice通過(guò)揭露隱私的原像(Hash Preimage),接受Bob發(fā)送給自己的QTUM。
Bob將生成的Qtum Lock TransacTIon發(fā)送給Alice,這樣Alice就有能力在Qtum網(wǎng)絡(luò)上驗(yàn)證這筆交易。
1.2 Alice和Bob協(xié)作生成Beam Lock TransacTIon和Beam Refund Transaction
由于Beam使用了MimbleWimble協(xié)議,其實(shí)現(xiàn)中摒棄了腳本,且隱藏了貨幣的金額等屬性,故一筆加鎖交易需要兩個(gè)參與者協(xié)作產(chǎn)生。由于本文的重點(diǎn)是原子交換,故對(duì)MimbleWimble交易的生成過(guò)程不作過(guò)多介紹,詳情可以參考Qtum量子鏈研究院:新型的隱私保護(hù)協(xié)議MimbleWimble。
Alice和Bob進(jìn)行交互,包括blinding factor的協(xié)商、Bulletproof的簽名等。從而生成一筆Beam網(wǎng)絡(luò)上的加鎖交易Beam Lock Transaction,這筆交易鎖住了Alice即將轉(zhuǎn)給Bob的一筆BEAM UTXO。由于交易中不存在腳本以判斷分支,所以Alice還需要生成一筆Beam Refund Transaction,這筆交易將鎖住的Beam UTXO轉(zhuǎn)回給Alice。這是為了防止原子交換失敗之后Alice能夠拿回自己的BEAM。
1.3 Bob和Alice互相確定兩筆UTXO已被鎖定
當(dāng)QTUM和BEAM的兩個(gè)獨(dú)自加鎖交易完成之后,Alice和Bob需要分別查看兩筆交易是否被正確地鎖定。Alice還需要確定Qtum加鎖交易的鎖定時(shí)間是否比Beam的長(zhǎng),以防止Bob在得到BEAM時(shí)通過(guò)超時(shí)條件將QTUM收回。
1.4 Alice和Bob協(xié)作發(fā)起B(yǎng)eam Redeem Transaction
當(dāng)雙方確定了加鎖交易的正確部署之后,即進(jìn)入到了原子交換的交換貨幣環(huán)節(jié)。首先Alice和Bob進(jìn)行基于MimbleWimble的交互協(xié)商,以生成一筆Beam Redeem Transaction,這筆交易將鎖定的BEAM UTXO轉(zhuǎn)到Bob的所屬下。在交易的過(guò)程中,Bob會(huì)揭露由他自己生成的原像(Hash Preimage),Alice由此了解到原像(Hash Preimage)。
1.5 Alice發(fā)起Qtum Redeem Transaction
Alice在Beam網(wǎng)絡(luò)中獲得了Bob生成的原像(Hash Preimage)之后,在Qtum網(wǎng)絡(luò)上發(fā)起Qtum Redeem Transaction,這筆交易將觸發(fā)Qtum Lock Transaction腳本的第二個(gè)條件,通過(guò)揭露原像(Hash Preimage)和Alice的簽名將QTUM轉(zhuǎn)到自己的賬戶下。
1.6 原子交換完成
當(dāng)原子交換的交易在各自網(wǎng)絡(luò)中得到足夠多的確認(rèn)之后,整個(gè)原子交換過(guò)程結(jié)束。當(dāng)有任何一個(gè)環(huán)節(jié)出現(xiàn)問(wèn)題,導(dǎo)致原子交換不能進(jìn)行,加鎖交易保證在鎖定時(shí)間后貨幣能夠退回原來(lái)的賬戶。
更多詳細(xì)介紹請(qǐng)參考BEAM原子交換:
https://github.com/BeamMW/beam/wiki/Atomic-swap
實(shí)驗(yàn)細(xì)節(jié)
1、首先配置Qtum的testnet環(huán)境,編輯用戶主目錄下的.zshrc,添加環(huán)境變量,q1t-dae和q2t-dae分別是Bob和Alice的Qtum節(jié)點(diǎn)服務(wù),q1t-cli和q2t-cli分別是Bob和Alice的Qtum客戶端命令。使用客戶端命令可以與區(qū)塊鏈進(jìn)行交互。
2、使用。/beam-wallet-masternet info命令查看兩個(gè)用戶賬戶下的BEAM余額,使用qtum-cli getbalance命令查看用戶的QTUM余額。
可見(jiàn),Alice擁有約347個(gè)BEAM和0.0022個(gè)QTUM。Bob擁有約295個(gè)BEAM和254個(gè)QTUM。
3、Alice和Bob進(jìn)行原子交換,Bob需要開(kāi)啟原子交換監(jiān)聽(tīng)的模式,通過(guò)在用戶目錄下運(yùn)行
。/beam-wallet-masternet swap_listen -n eu-node01.masternet.beam.mw:8100 --swap_netword testnet –swap_coin qtum --amount 8000000000 --swap_feerate 5000000 --qtum_node_addr 127.0.0.1:13300 --qtum_user Bob --qtum_pass 123 --log_level info
進(jìn)行原子交換監(jiān)聽(tīng)。節(jié)點(diǎn)首先會(huì)進(jìn)行區(qū)塊數(shù)據(jù)的同步,當(dāng)同步完成之后,如果有節(jié)點(diǎn)發(fā)起了對(duì)自己地址的swap_init交易,便會(huì)開(kāi)始原子交換交易。按照上述交易流程的順序進(jìn)行各個(gè)步驟的交易。
4、同時(shí)Alice運(yùn)行
。/beam-wallet-masternet -n eu-node01.masternet.beam.mw:8100 swap_init --swap_netword testnet --swap_coin qtum --amount 200 --swap_feerate 5000000 -r 1d8dfa6993230cfd1d84fc29ded73b04ee35ccbfdb9d112d466237dc30dc79470f9 --swap_amount 8000000000 --swap_beam_side --qtum_node_addr 127.0.0.1:13400 --qtum_user Alice --qtum_pass 123 --log_level info
命令,通過(guò)指定BEAM接受方的地址來(lái)初始化一筆原子交易。Alice節(jié)點(diǎn)首先也會(huì)開(kāi)始同步區(qū)塊數(shù)據(jù),當(dāng)完成之后會(huì)按照上述交易流程的順序開(kāi)展和Bob的原子交換。
5、雙方等待BEAM和QTUM的兩個(gè)區(qū)塊鏈網(wǎng)絡(luò)對(duì)各自的交易進(jìn)行多次確認(rèn)后(Qtum默認(rèn)是10次),原子交換過(guò)程完成
Bob的客戶端界面顯示如下:
Alice的客戶端界面顯示如下:
6、通過(guò)查看Alice的賬戶,可以看到她已經(jīng)接受到了來(lái)自Bob的80個(gè)QTUM并發(fā)送了200個(gè)BEAM給Bob,她現(xiàn)在擁有147個(gè)BEAM和80個(gè)QTUM。
7、 通過(guò)查看Bob的賬戶,可以看到他已經(jīng)接受到了來(lái)自Alice的200個(gè)BEAM并發(fā)送了80個(gè)QTUM給Alice,他現(xiàn)在擁有495個(gè)BEAM和174個(gè)QTUM。
8、 在Qtum的測(cè)試網(wǎng)絡(luò)瀏覽器上,可以看到關(guān)于QTUM原子交換的交易記錄通過(guò)命令q2t-cli listunspent查詢Alice擁有的UTXO的詳細(xì)信息,得到一筆金額(amount)為80的UTXO的交易id是:
d11e3474ca070a7d673a7784775479277abb2f820b8575a66f9b2a3b89722702
在Qtum區(qū)塊鏈瀏覽器(https://testnet.qtum.info/tx/d11e3474ca070a7d673a7784775479277abb2f820b8575a66f9b2a3b89722702)進(jìn)行查詢,可以看到這筆通過(guò)原子交換生成的交易確實(shí)已經(jīng)寫(xiě)入?yún)^(qū)塊鏈中。
04. 總結(jié)
原子交換使用HTLC巧妙地避免了可能存在的點(diǎn)對(duì)點(diǎn)的信用欺詐問(wèn)題,實(shí)現(xiàn)了在沒(méi)有第三方背書(shū)的情況下不同加密幣種間的交易。在支付、交易等場(chǎng)景中跨鏈技術(shù)支持大額交易在鏈上完成,不再被中心化管理風(fēng)險(xiǎn)與大額手續(xù)費(fèi)用束縛。
2018年Qtum量子鏈聯(lián)合伯克利大學(xué)研究零知識(shí)證明,今年6月Qtum量子鏈發(fā)起了全球首個(gè)線上隱私黑客馬拉松,Qtum也將會(huì)在隱私技術(shù)和跨鏈領(lǐng)域進(jìn)行深入探索,打通孤島式數(shù)字資產(chǎn)的流通網(wǎng)絡(luò),將各獨(dú)立經(jīng)濟(jì)體通過(guò)Qtum技術(shù)鏈接在一起,讓全球市場(chǎng)價(jià)值交換更加安全、快速、自由,成為區(qū)塊鏈行業(yè)發(fā)展的內(nèi)在動(dòng)力。