託肯錢包核心作為一個私鑰安全儲存和簽名的工具,對於完成正常數字貨幣的支付和交易功能,還需要配合 PC 端軟體或移動端 app 來使用。這裡以 PC 端的軟體來描述整個交易過程,移動端的使用情況類似。
在整個流程中,交易客戶端軟體一直是透過 USB 介面與託肯錢包傳輸資料,在交易完成後,建議 PC 端與託肯錢包斷開 USB 連線。
基於託肯錢包的跨鏈交易
1.跨鏈交易的通訊協議模型
區塊鏈之間的通訊協議與傳統的 TCP/IP 協議類似,建立可靠的連線傳遞訊息。訊息一般分為訊息頭(Header)和訊息體(Data)兩部分,其中訊息頭會記錄訊息的源、目的、長度、類別等,在訊息的傳遞過程中,訊息頭會逐層剝離、按協議要求做對應的修改,訊息最終會按訊息頭的資訊傳到目的地。整個訊息在傳遞過程中是具有狀態的,傳送方也可以根據接收方的反饋瞭解當前通訊過程中所處的狀態,並作出正確的反應。
基於對 TCP/IP 協議的原理的分析,我們也構建出一個完整的跨鏈通訊協議,我們的跨鏈通訊協議主要包括兩部分:通訊地址、通訊資料。
通訊地址包括訊息來源鏈或目的鏈的連結串列示(ChainID)和當前鏈的區塊高度(height)。通訊資料則包括了來源鏈的鏈標識(srcChainID)、目的鏈的鏈標識(dstChainID)、資料狀態(Status)、資料(Data)。其中資料在傳遞過程中是不會被開啟的。
跨鏈通訊資料狀態對應的是當前通訊狀態的機制,當一個跨鏈交易的通訊發起的時候,通訊狀態是待接收狀態,當接收方收到訊息時,會返回給傳送方一個傳送成功的狀態,接收方然後回發一個接收成功的狀態,整個過程完成一次成功的跨鏈通訊。
除了上述狀態外,我們還會規定一些如連線超時等異常狀態。比如當一筆交易從第一條鏈發往第二條鏈的時候,會指定以鏈高度為準的存活週期。在到達存活週期之前,鏈路會將通訊結果的狀態返回給第一條子鏈,若超過存活週期,則鏈路直接返回連線超時狀態給第一條子鏈。
與通常的網路通訊類似,跨鏈通訊也可能遭受網路攻擊,尤其是 DDoS 攻擊。因此,我們還需要一套驗證機制,透過設計一套複雜的通訊驗證機制,來防止鏈路上的攻擊。
前面提到,子鏈隨時向鏈路上傳送最新的區塊以及最新的區塊投票,當一筆交易從子鏈向鏈路發來的時候,會在通訊地址中體現出該交易所在的區塊的高度,我們只需要查詢在該區塊高度中是否存在著這筆交易就可以了。因為透過提交最新的區塊及其投票便可以證明一個區塊的真實性。
首先,單靠一個區塊本身是不能孤立的證明其是合法的。因為針對一個已有的區塊,我們完全可以偽造一個不合法但是符合區塊結構的假區塊。比如修改區塊資料的部分交易資訊,並修改位於區塊頭中的交易 hash 值。
在通常的區塊鏈的共識構造中,一個區塊被提議之後也往往會經過兩輪或多輪的投票來達成共識,其中在第二輪或更多輪共識的投票會被暫時存起來,並當做下一輪所生成的區塊的部分。基於此,如果子鏈一次性提交某個區塊及投票資訊後,我們便可以在一輪區塊生成周期內證明這個區塊是可信的。
作為不同子鏈之間的橋樑,我們的鏈路還需要負責維護關於子鏈的公共狀態。
首先,子鏈若希望與託肯鏈路進行通訊,則必須在託肯鏈上進行註冊,這其中包括子鏈的身份標識(chainID),子鏈上驗證節點的資訊,子鏈上的資產種類,以及子鏈的驗證機制等,以此來協助託肯鏈完成通訊轉發和驗證操作。
其次,託肯鏈需要實時收集來自子鏈的最新區塊資訊的通知。以此來維護各個子鏈的基本狀態,幫助輕客戶端來驗證從子鏈發來的交易等。
託肯鏈作為一種跨鏈技術,除了完成基本的鏈間通訊外,還必須要設計一套獨立的共識機制來驗證子鏈上獨立區塊的合法性以及鏈間交易的合法性。
2.跨鏈共識機制
2.1 區塊鏈裡的共識機制簡介
在選擇託肯鏈的共識機制前,我們先簡要回顧一下目前在區塊鏈領域常用的一些其他的共識機制。工作量證明共識(POW)是最早應用在比特幣、以太坊上的一種共識演算法。自比特幣發行至今,工作量證明演算法已經證明了其可靠性,但是它對資源的浪費也是很驚人的。
權益證明機制(POS)是一種為了解決工作量證明機制中對資源嚴重浪費問題而提出來的,它是透過投票人在投票權益池中的權益比重來代替礦工在挖礦時所消耗的算力,再配以相應的懲罰機制來確保投票人的誠信。然而,在算力和權益之間還是有非常大的區別的,透過算力,一個礦工是不太可能在兩條鏈上同時挖到礦,但是擁有一定的權益的投票人則可以對每一個可能的區塊投票,只要任何一個區塊成為將來的勝出者就可以保證自己的權益不受損,這樣也是有很大的安全隱患的,因為這樣可以大大降低作惡者所需要的作惡成本。
股份授權證明機制(DPOS)共識機制透過解耦投票權和記賬權的方式,它的原理是讓每一個持有 token 的人進行投票來產生若干位代表,我們可以把這些代表理解為超級節點,而這些超級節點彼此的權利是完全對等的。從某種角度來看,DPOS 有點像議會制度或人民代表大會制度,如果代表不能履行他們的職責,他們會被除名,網路會選出新的超級節點來取代他們。但是 DPOS 透過模擬人類的權益投票行為來產生記賬權,存在著一種中心化的趨向,而且相比工作量證明的方式來說,DPOS 的作弊行為是沒法提前預防的。
Raft 作為瑞波幣採用的共識機制,也是分散式領域一種常用的高效的共識演算法,但其最大的弊病在於不能防止拜占庭故障節點,一個擁有強大網路配置的拜占庭領導者節點會給 raft演算法帶來毀滅性打擊。
另外目前在聯盟鏈中比較常用的共識機制是實用拜占庭將軍容錯共識(PBFT),如基於 IBM的 HyperLedger Fabric 專案就是採用 PBFT 共識。PBFT 是一種狀態機副本複製演算法,即服務作為狀態機進行建模,狀態機在分散式系統的不同節點進行副本複製。每個狀態機的副本都儲存了服務的狀態,同時也實現了服務的操作,將所有副本組成的集合使用大寫字母 R來表示,使用 0 到| R | -1的整數表示每一個副本,假設系統裡有可能失效的副本個數為 f ,若滿足| R |≥3f+1,系統能滿足最終最終一致性。
2.2 託肯鏈的代理權益拜占庭將軍容錯機制
在託肯鏈中,我們的設計目的是要進行跨鏈交易,這裡與聯盟鏈的模型較為接近。而基於PBFT 的共識機制在聯盟鏈裡是非常受歡迎的,主要原因在於聯盟鏈中,節點間的網路拓撲結構相對較為穩定,節點的進入和退出頻率不會太高。不可否認的是,PBFT 中所使用的拜占庭節點容錯演算法能保證 1/3 以下拜占庭節點的網路的安全。但是在實際使用中,尤其是涉及到跨鏈交易這種與經濟利益相關時,即使驗證人是經過挑選的可靠節點,我們也不能單純的依賴於沒有懲罰機制的 1/3 的安全,這其中的獎賞與懲罰是必須與經濟利益直接相關聯的。在這裡,我們對原有的 PBFT 共識機制進行了修改,以使得驗證人投票的權重與其所抵押在託肯鏈上的代幣權益相對應。
這樣一來,原本在 PBFT 共識演算法中要求的超過 2/3 投票人才能確認生成區塊的機制被修改成超過 2/3 的總權益,此外,在 PBFT 共識演算法中,普通節點僅同步來自領導節點發來的新區塊,並不參與共識,在 PBFT 中的安全性僅僅依賴於驗證節點的數量,因此普通節點的數量的增加並不能提升拜占庭容錯的安全性。因此,我們在託肯鏈的共識機制中增加了非驗證節點的參與。一個驗證節點對應一個驗證人帳號,非驗證人可以透過將權益委託給驗證人,從而授權該驗證人代理投票的方式來獲取屬於自己的利益。
因為利益的關係的引入,在託肯鏈中,非驗證人會非常謹慎的選擇代理驗證人,從而做到了所有人都會參與到共識的行為中,而這又沒有因為所有節點的參與共識而帶來任何效率上的損失。
託肯鏈的共識機制可以用下圖來簡單表示
在託肯鏈的共識協議中,如果 Leader 是誠實者,它可以不斷地推動共識節點就新的交易達
成共識。但是,如果 Leader 是惡意節點,它可能會有意地延遲或丟棄來自其他誠實節點的訊息,並減慢協議。為了懲罰這些惡意的 Leader 節點,託肯鏈會定期透過權益委員會的投票來更改 Leader 節點。這也可以防止惡意節點在無限期的時間內延遲共識。
另外基於託肯鏈所採用委託權益的 PBFT 共識機制,我們可以非常容易打造輕錢包節點。在普通的區塊鏈客戶端中因為需要同步區塊鏈中的所有區塊資料才可以實現驗證交易,這樣的客戶端功能強大,但是由於需要儲存的資料太多導致大量的冗餘。由於託肯鏈是透過驗證人投票實現的 PBFT 演算法,我們的客戶端只需要實時同步某條區塊鏈上的最新驗證組員,就可以對該區塊鏈上的資訊進行驗證。輕客戶端只需要連續同步某區塊鏈區塊頭並更新驗證人資訊,就可以實時跟進並驗證該區塊鏈上的最新的區塊高度、世界狀態等資訊。
3.託肯鏈的隱私保護
在區塊鏈系統中,隱私性一直都是比較強的需求,特別是對於跨鏈結構來說,隱私性保護尤為重要。如果我們僅僅只是做到了保護區塊鏈的交易安全性,而對隱私性的問題避而不談,我們認為失去了保護安全性的意義了。該如何在既保護安全性的前提下,又讓隱私性得到保護呢?
目前在區塊鏈領域的隱私性解決方案主要有以下一些:
混幣方案,這也是起源自早期的基於比特幣或以太幣的混幣服務,後來在門羅幣種有使用到,其目的主要是要讓每個地址都要經過攪拌器和許多其他地址進行混合,從混幣器出來的交易,除了混幣器知道外,別人誰都不知道這個幣真實是由誰轉給誰的。
直接儲存和處理加密資料的方案,這在有些聯盟鏈中使用的比較多,只有交易的參與方才能解密資料。該方案相對較為可靠,隱私效能得到密碼學的嚴格論證,但缺點是驗證節點無法做驗證。
零知識證明,零知識證明是一個非常強大的現代密碼學工具,在零知識證明演算法中,具有私有資訊的一方在不洩露自己私密資訊的情況下,能讓驗證方正確的確認證明方的資訊是對的。不過基於 ZK-Snark 的非互動式零知識證明技巧在業界已表現出效率方面的問題。當前在一臺普通的計算機上建立一個 ZK-Snark 的零知識證明大約需要超過 90 秒的時間。另外基於ZK-Snark 演算法的延展性比較差,不能動態建立安全驗證引數,必須提前設定一些安全引數,這在實際使用中也會帶來一些問題。
環簽名方案,該方案實現了一種無條件匿名性的要求,簽名者可以自由指定自己的匿名範圍,外部攻擊者即使非法獲取了所有可能簽名者的私鑰,他也不能確定出真正的簽名者。很明顯,環簽名方式主要是透過匿名的方式來實現隱私性保護。
透過對以上主流的隱私性解決方案的分析,結合跨鏈的實際需求,託肯鏈採用環簽名的方案來保護交易的隱私性。
環簽名是一種簽名者模糊的簽名方案。在環簽名中不需要建立環,也不需要分配指定的金鑰,無法撤銷簽名者的匿名性,除非簽名者自己想暴漏身份。環簽名方案中籤名者首先選定一個臨時的簽名者集合,集合中包括簽名者自身。然後簽名者利用自己的私鑰和簽名集合中其他人的公鑰就可以獨立的產生簽名,無需他人的幫助。
環簽名沒有可信中心,對於驗證者來說,簽名人是完全正確匿名的。環簽名提供了一種匿名洩漏秘密的巧妙方法。環簽名的這種無條件匿名性在對資訊需要長期保護的一些特殊環境是非常有用的。
環簽名由以下幾部分構成:
(1) 金鑰生成。為環中每個成員產生一對金鑰對(公鑰PKi和私鑰iSK )。
(2) 簽名。簽名者用自己的私鑰和任意n個環成員(包括自己)的公鑰為訊息m生成簽名a。
(3) 簽名驗證。驗證者根據環簽名a和訊息m 驗證簽名是否為環中成員所籤,如果有效則接收,否則丟棄。
同時環簽名必須滿足以下特性:
(1) 無條件匿名性。攻擊者無法確定簽名是由環中哪個成員生成,即使在獲得環成員私鑰的情況下,概率也不會超過1/ n 。
(2) 正確性:簽名必需能被所有其他人驗證。
(3) 不可為造性:環中其他成員不能偽造真實簽名者簽名,外部攻擊者即使在獲得某個有效環簽名的基礎上,也不能為訊息 m偽造一個簽名。
4.基於託肯鏈的智慧合約
我們認為,隨著加密數字貨幣的興起,會極大的加速支付的合約化程序,因為區塊鏈作為架構在網際網路上的基礎設施,可以用智慧合約來實現信用保證、支付結算和激勵機制的完美統一。基於託肯鏈中的資產所有者和工作者,也或者叫託肯鏈中的一個成員,每一個託肯成員都是基於 P2P 的扁平式的協作關係,基於標準無差異的智慧合約參與到整個系統的安全支付通道的建設中來,同時每個成員在整個系統的安全支付通道的建設中會根據其對於的貢獻度獲取相應的回報。
智慧合約的最大的特點和優勢就是透過技術解決了信任問題。在傳統合約達成前,參與者在支付前要了解各方的信用背景和選擇合適的擔保合約。在託肯鏈上的資源是真實透明的,合約內容確定後就無法更改,執行更是不用依賴任何額外操作。
基於託肯鏈的智慧合約跟通常區塊鏈的智慧合約相比,多了一層含義,就是跨資產的特性。因為託肯鏈本身就是基於跨鏈技術來實現通用數字貨幣交易和支付體系,資產在跨鏈交易的時候,就出現更多的應用屬性。比如我們可以允許使用者在以太坊中去驗證比特幣的交易,可以實現多幣種共同完成一次採購活動等。
基於託肯錢包的支付資料模型
託肯鏈透過打造一個通用的數字貨幣支付生態,從長期來看,將會積累大量的數字貨幣支付消費相關的資料。從未來資料貨幣支付發展的角度來看,託肯鏈將利用支付的大資料來改變消費者的支付習慣。
總的來說,基於區塊鏈技術的數字貨幣支付在很多方面與傳統支付是有著相當大的區別的:區塊鏈支付的基礎是去中心化技術,交易雙方不再需要依賴一箇中心繫統來負責資金清算並儲存所有的交易資訊,而是基於一個不需要進行信任協調的共識機制直接進行價值轉移。
隨著區塊鏈支付的發展,區塊鏈分散式賬本技術將區塊鏈上的數字資產流動與現實支付相連線,區塊鏈支付在功能上非常類似於支付寶錢包,但由於其建立在去中心化的 p2p 網路基礎上,超出了國家和地域的侷限,所以在全球網際網路市場上能夠發揮出傳統金融機構無法替代的的高效率、低成本的價值傳遞作用。基於託肯錢包就可以發展成一個自金融平臺,可以用於 P2P 的支付、存款、轉賬、換匯、借貸等。
關於更多託肯衛士資訊:
更多區塊鏈專案:http://www.qukuaiwang.com.cn/news/xiangmu
風險提示:區塊鏈投資具有極大的風險,專案披露可能不完整或有欺騙。請在嘗試投資前確定自己承受以上風險的能力。區塊網只做專案介紹,專案真假和價值並未做任何稽覈。