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