天天看點

Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解

Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解

7月10日,Qtum量子鍊基金會宣布實作QTUM-BEAM原子交換(Atomic Swap),原子交換(Atomic Swap)允許兩個獨立區塊鍊上的加密貨币進行原子性的跨鍊交易,QTUM和BEAM的原子交換成功象征着Qtum在隐私和跨鍊領域更進了一步。

前言

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

背景

原子交換

原子交換(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)的機制,以提供一個雙方同時線上的緩沖時間。

功能實作

    假如有兩個使用者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的QTUMUTXO,隻有當滿足以下任一條件時,才能使用這筆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用戶端指令。使用用戶端指令可以與區塊鍊進行互動。

Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解

2、使用./beam-wallet-masternet info指令檢視兩個使用者賬戶下的BEAM餘額,使用qtum-cli getbalance指令檢視使用者的QTUM餘額。

可見,Alice擁有約347個BEAM和0.0022個QTUM。Bob擁有約295個BEAM和254個QTUM。

Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解
Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解

 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交易,便會開始原子交換交易。按照上述交易流程的順序進行各個步驟的交易。

Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解

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的原子交換。

Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解
Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解

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

Bob的用戶端界面顯示如下:

Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解

Alice的用戶端界面顯示如下:

Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解

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

Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解

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

Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解
Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解

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

d11e3474ca070a7d673a7784775479277abb2f820b8575a66f9b2a3b89722702

Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解

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

Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解

總結

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

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

Qtum量子鍊實作QTUM-BEAM原子交換,支援隐私跨鍊交易|附實驗步驟詳解