Qtum量子鏈實現QTUM-BEAM原子交換,支援隱私跨鏈交易

買賣虛擬貨幣

7月10日,Qtum量子鏈基金會宣佈實現QTUM-BEAM原子交換(Atomic Swap),原子交換(Atomic Swap)允許兩個獨立區塊鏈上的加密貨幣進行原子性的跨鏈交易,QTUM和BEAM的原子交換成功象徵著Qtum在隱私和跨鏈領域更進了一步。

01. 前言

2019年1月,Qtum量子鏈基於Decred的支付指令碼已實現QTUM-BTC原子交換,(回顧:Qtum 量子鏈實現QTUM-BTC原子交換),但由於區塊鏈本身匿名性不足,更高程度的隱私保護仍然是一個急需解決的問題。

MimbleWimble隱私協議的出現給隱私領域指明瞭新的方向,Beam作為MimbleWimble的代表,在保護隱私的同時簡化交易,具有良好的可擴充套件性。2019年6月,QTUM-BEAM原子交換程式碼被合入了Beam的主分支。目前,已經在Beam masternet和Qtum testnet成功進行了原子交換的實驗,實現了完整的跨鏈價值流通。點選原文可檢視:
https://github.com/qtumproject/qips/issues/22

02. 背景

原子交換

原子交換(Atomic Swap)允許兩個獨立區塊鏈上的加密貨幣進行原子性的跨鏈交易,這種交易無需依賴第三方的信任背書。原子性的意思是,要麼交易成功,要麼交易失敗,不會存在第三種狀態。

原子交換是一種技術,該技術允許您在沒有第三方的情況下交易完成點對點交易。它們還會安排您與未知使用者交易,而且無需信任。別人必須首先傳送他們的資金,因為他們可能決定不履行他們的交易。原子交換使各方能夠根據他們預先商定的條件,在無需信任的條件下,進行不同貨幣交換,而不必擔心會損失資金。

如果Alice和Bob想交換某種數量的兩種加密貨幣A和B,在沒有使用中心化交易所的情況,兩人需要就兩種加密貨幣的匯率進行達成一致,然後透過原子交換,Alice將A傳送給Bob,而Bob將B傳送給Alice。

但是,區塊鏈中的交易是不可逆轉的,在沒有中心背書的情況進行不同貨幣的交易就一定牽涉到操作先後的問題,如果Alice首先傳送了他的A貨幣,那麼Alice則處於不利的狀態,因為她不能確定Bob是否會按照約定將一定量的B傳送給她。

為了使分散的點對點交易能夠順利完成,就需要一種機制來保證雙方不會發生欺騙,雜湊時間鎖(HTLC)是現在比較常用的解決辦法。

HTLC

實現原子交換的主要解決方法是雜湊時間鎖(Hashed Timelock Contracts,HTLC)。其核心思想是將一筆交易鎖住,只有當滿足特定的條件下才能使用這筆交易。

假設Alice和Bob正在進行數字代幣A和B的交換。Alice首先建立一個加密的數字密碼箱,她將鎖的規格告知Bob。並把數字代幣A放入密碼箱中,開啟密碼箱需要鑰匙和Bob的簽名。Bob將用相同規格的鎖來建立一個類似的密碼箱,解鎖Bob的密碼箱需要相同的鑰匙和Alice的簽名。

由於開啟密碼箱需要另一個人的簽名,只有Alice可以開啟Bob的密碼箱,只有Bob可以開啟Alice的密碼箱子。當Alice開啟Bob的密碼箱時,鑰匙會顯示在區塊鏈上。Bob可以使用Alice公佈的鑰匙開啟Alice建立的密碼箱以獲得A幣。如果出現問題或者一方在交易期間退出,即在約定的時間內密碼箱沒有被開啟,根據HTLC的設計,數字貨幣會分別退回給Alice和Bob。

以上就是HTLC的設計理念,但演算法的實際實現會更復雜,考慮的實際問題也會更多。

Beam

Beam是基於MimbleWimble協議開發的加密貨幣,具有強隱私性、替代性和擴充套件性。MimbleWimble透過將使用者的身份和交易的金額等資料進行隱藏,從而保證了交易的隱秘性。

MimbleWimble需要交易的雙方在發起交易之前進行互動以協商一些引數。因此,一筆交易的生成需要交易雙方線上進行聯合簽名。值得一提的是,Beam提供了Secure Bulletin Board System(SBBS)的機制,以提供一個雙方同時線上的緩衝時間。

03. 功能實現

假如有兩個使用者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。

· 原子交換約定的時間已過(透過當前塊的高度來判斷經過的時間),Bob透過使用自己的私鑰來宣稱對這筆UTXO的所有權。這個條件主要用於在原子交換因為某種原因失敗之後,Bob有能力將這筆UTXO收回。

· 揭露原像(Hash Preimage),並使用Alice的私鑰進行認證。這個條件主要用於正常情況下,Alice透過揭露隱私的原像(Hash Preimage),接受Bob傳送給自己的QTUM。

Bob將生成的Qtum Lock Transaction傳送給Alice,這樣Alice就有能力在Qtum網路上驗證這筆交易。

1.2 Alice和Bob協作生成Beam Lock Transaction和Beam Refund Transaction

由於Beam使用了MimbleWimble協議,其實現中摒棄了指令碼,且隱藏了貨幣的金額等屬性,故一筆加鎖交易需要兩個參與者協作產生。由於本文的重點是原子交換,故對MimbleWimble交易的生成過程不作過多介紹,詳情可以參考Qtum量子鏈研究院:新型的隱私保護協議MimbleWimble。

Alice和Bob進行互動,包括blinding factor的協商、Bulletproof的簽名等。從而生成一筆Beam網路上的加鎖交易Beam Lock Transaction,這筆交易鎖住了Alice即將轉給Bob的一筆BEAM UTXO。由於交易中不存在指令碼以判斷分支,所以Alice還需要生成一筆Beam Refund Transaction,這筆交易將鎖住的Beam UTXO轉回給Alice。這是為了防止原子交換失敗之後Alice能夠拿回自己的BEAM。

1.3 Bob和Alice互相確定兩筆UTXO已被鎖定

當QTUM和BEAM的兩個獨自加鎖交易完成之後,Alice和Bob需要分別檢視兩筆交易是否被正確地鎖定。Alice還需要確定Qtum加鎖交易的鎖定時間是否比Beam的長,以防止Bob在得到BEAM時透過超時條件將QTUM收回。

1.4 Alice和Bob協作發起Beam Redeem Transaction

當雙方確定了加鎖交易的正確部署之後,即進入到了原子交換的交換貨幣環節。首先Alice和Bob進行基於MimbleWimble的互動協商,以生成一筆Beam Redeem Transaction,這筆交易將鎖定的BEAM UTXO轉到Bob的所屬下。在交易的過程中,Bob會揭露由他自己生成的原像(Hash Preimage),Alice由此瞭解到原像(Hash Preimage)。

1.5 Alice發起Qtum Redeem Transaction

Alice在Beam網路中獲得了Bob生成的原像(Hash Preimage)之後,在Qtum網路上發起Qtum Redeem Transaction,這筆交易將觸發Qtum Lock Transaction指令碼的第二個條件,透過揭露原像(Hash Preimage)和Alice的簽名將QTUM轉到自己的賬戶下。

1.6 原子交換完成

當原子交換的交易在各自網路中得到足夠多的確認之後,整個原子交換過程結束。當有任何一個環節出現問題,導致原子交換不能進行,加鎖交易保證在鎖定時間後貨幣能夠退回原來的賬戶。

更多詳細介紹請參考BEAM原子交換:
https://github.com/BeamMW/beam/wiki/Atomic-swap

 實驗細節

1、首先配置Qtum的testnet環境,編輯使用者主目錄下的.zshrc,新增環境變數,q1t-dae和q2t-dae分別是Bob和Alice的Qtum節點服務,q1t-cli和q2t-cli分別是Bob和Alice的Qtum客戶端命令。使用客戶端命令可以與區塊鏈進行互動。

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需要開啟原子交換監聽的模式,透過在使用者目錄下執行

./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

進行原子交換監聽。節點首先會進行區塊資料的同步,當同步完成之後,如果有節點發起了對自己地址的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節點首先也會開始同步區塊資料,當完成之後會按照上述交易流程的順序開展和Bob的原子交換。

5、雙方等待BEAM和QTUM的兩個區塊鏈網路對各自的交易進行多次確認後(Qtum預設是10次),原子交換過程完成

Bob的客戶端介面顯示如下:

Alice的客戶端介面顯示如下:

6、透過檢視Alice的賬戶,可以看到她已經接受到了來自Bob的80個QTUM併傳送了200個BEAM給Bob,她現在擁有147個BEAM和80個QTUM。

7、 透過檢視Bob的賬戶,可以看到他已經接受到了來自Alice的200個BEAM併傳送了80個QTUM給Alice,他現在擁有495個BEAM和174個QTUM。

8、 在Qtum的測試網路瀏覽器上,可以看到關於QTUM原子交換的交易記錄透過命令q2t-cli listunspent查詢Alice擁有的UTXO的詳細資訊,得到一筆金額(amount)為80的UTXO的交易id是:
d11e3474ca070a7d673a7784775479277abb2f820b8575a66f9b2a3b89722702

在Qtum區塊鏈瀏覽器(https://testnet.qtum.info/tx/d11e3474ca070a7d673a7784775479277abb2f820b8575a66f9b2a3b89722702)進行查詢,可以看到這筆透過原子交換生成的交易確實已經寫入區塊鏈中。

04. 總結

原子交換使用HTLC巧妙地避免了可能存在的點對點的信用欺詐問題,實現了在沒有第三方背書的情況下不同加密幣種間的交易。在支付、交易等場景中跨鏈技術支援大額交易在鏈上完成,不再被中心化管理風險與大額手續費用束縛。

2018年Qtum量子鏈聯合伯克利大學研究零知識證明,今年6月Qtum量子鏈發起了全球首個線上隱私駭客馬拉松,Qtum也將會在隱私技術和跨鏈領域進行深入探索,打通孤島式數字資產的流通網路,將各獨立經濟體透過Qtum技術連結在一起,讓全球市場價值交換更加安全、快速、自由,成為區塊鏈行業發展的內在動力。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;