天天看點

淺談QitChain Network的架構細節與共識的基本原理(上)

作者:探索WEB3.0的黑馬

作者:Akechi

導語:在本系列的前三篇文章中,我們對QitChain的基本情況做了一些簡要介紹,包括出現背景,基礎架構概覽、共識、經濟體系以及生态環境等。至此,關于QitChain的前期準備已經基本完成,是以可以讨論一些更深層次、更加細節的内容了。

在本文中,我們将讨論QitChain架構的技術細節、整個分布式系統的區塊結構以及CPoC共識的技術本質,籍此加深讀者對QitChain系統的深入了解,以增強其對該系統前景的信心。

是以,當涉及區塊結構和共識内容時,我們會用較多的篇幅探讨QitChain的技術架構及這些架構設計背後所蘊含的密碼學思想。我們相信,這樣的讨論能夠讓讀者更好地了解我們為何在技術架構方面給予QitChain一個相對謹慎的樂觀态度。

從頭開始的第二遍梳理:QitChain Network的架構細節

在此前的文章中,我們曾提及QitChain Network是整個QitChain項目的核心之一,為整個生态系統提供核心支撐。在QitChain的藍圖中,它将提供分布式存儲與服務建設、發現等功能。而根據QitChain團隊的設計,QitChain Network主要由五部分組成:

存儲:存儲是QitChain Network的立足之本和靈魂所在。在已釋出的系列文章中,我們曾提及,QitChain Network因其分布式設計而具有安全性,可以存儲包括關鍵文檔、視訊以及代碼等在内的重要檔案。當然,這樣的表述僅限于使用者層面。實際上,而在架構師的方案中,該部分還需要存儲QitChain鍊中不斷增長的資料,包括區塊、鍊式資訊、交易記錄、Merkel樹等基礎的資料内容,并且允許網絡參與者互相之間達成無需信任第三方存在的共識。

共識:QitChain Network的共識算法采用了先進的CPoC共識。此前我們也曾簡要地介紹了該算法的優勢。後續部分,我們将繼續詳細講解該共識的數學算法。

用戶端:用戶端是直接面向QitChain使用者的構成元件,它允許使用者對其賬戶和其中的數字資産進行查詢、管理和交易。

點對點網絡:基于點對點架構的QitChain網絡允許節點之間互相通信,以及與外界進行資訊交換。當然,基于區塊鍊最重要特征之一的分布式架構,QitChain Network的節點也不存在層級結構,因而具有透明性、可靠性的特點。每個節點在對外提供服務的同時,也能同時使用來自網絡中其他節點的服務。一言以蔽之,整個QitChain Network就是根據特定的分布式點對點協定運作的所有節點的集合。

接口:QitChain Network允許使用者通過它們與外部網絡進行互動。除了基礎的http接口之外,系統同時還提供WebSocket RTC接口。後者是一種旨在解決分布式系統中,伺服器之間互相進行遠端調用的方案。通過RTC接口,可以令使用者通過它們和外部網絡中的伺服器進行遠端調用時,如同本地調用一樣簡捷友善。

綜上所述,我們可以看到QitChain Network的五個部分各自具備對應功能,分别負責底層邏輯、使用者互動和外部通訊等重要工作。其中存儲、共識與用戶端對内;而點對點網絡和接口對外,将整個項目打造成一個有機的技術解決方案。在QitChain的白皮書上的一張關系圖可以比較直覺地概括各個部分在QitChain Network中所處的位置和它們之間的互相關系:

淺談QitChain Network的架構細節與共識的基本原理(上)

Figure 1: QitChain白皮書中對于QitChain Network的架構示意圖,圖源:QitCoin Whitepaper v2.0

分工合作:QitChain的節點類型與結構

在分布式的網絡系統中,節點是最基礎也是最為重要的元素:它們負責接收、存儲和廣播資料,擷取區塊獎勵,管理數字資産,并且構成網路路由。在分布式系統的初創時代,節點之間是平等的,它們有着相同的結構、儲存相同的全網資料,并且忠實記錄全網絡上的每一筆數字資産交易。

但正如魚與熊掌不可兼得一樣,區塊鍊的“不可能三角”證明了分布式系統如果要從密碼學的象牙塔裡走向普羅大衆,那麼必然要求在安全性上做一定妥協以滿足高性能要求。而事實也是如此,大量的區塊鍊項目為了提高性能而對一些節點進行了改變,使得節點之間出現了分工合作的局面。

我們在之前的文章中曾經提及,QitChain的節點包括完全節點和輕節點。但這兩種節點并非節點的全部分類。QitChain在全網中一共存在以下幾種不同的節點以分工履行其職能并共同構成QitChain核心網絡:

同步全節點

同步全節點是擁有完整區塊鍊賬本的節點。任何一個同步全節點都能夠獨立自主地校驗所有資料,而不需要借由任何外部參照進行輔助。在區塊鍊的香草時代,人們對于其處理問題的效率并不那麼看重的時候,大多數項目中的每一個節點都是同步全節點。這樣的架構擁有最強的安全性,但其速度遠遠不足以支撐當今國際交易系統的處理需求。

輕節點

在之前的文章中,我們提到過輕節點隻儲存區塊頭而非全部交易資料。與大多數人的想象相不同,輕節點是一個很早就被提出的概念。它基于簡化支付認證技術(Simplified Payment Verification, SPV),利用Merkle Proof機制,在隻需要儲存最長區塊鍊的區塊頭的情況下,就能夠驗證一筆交易是否存在。

由于本篇重在讨論技術細節,是以我們來關注一下輕節點如何利用Merkle Proof來實作在無需借助周遊全賬本的情況下來驗證交易是否存在。哈希樹(Merkle Tree)是密碼學中的一種樹狀資料結構,其特點在于其每個葉節點(即最底端的節點)的标簽都是該節點的哈希值,而除了葉節點之外的其他所有節點則以其所有子節點的标簽的哈希加密作為标簽。這樣,整棵樹的頂點标簽便是可以看做除頂點之外所有節點标簽的一個巨型的複哈希值。

淺談QitChain Network的架構細節與共識的基本原理(上)

Figure 2: 一棵哈希樹的基本結構,圖源:https://medium.com/crypto-0-nite/merkle-proofs-explained-6dd429623dc5#:~:text=Merkle%20proofs%20are%20established%20by,can%2Fshould%20be%20the%20same.

Merkle Proof的意義在于證明一筆特定交易是否确實存在于某個特定的區塊中,使用者不必對整個區塊鍊中的每一個區塊進行周遊搜尋,而隻需要檢查區塊頭所組成的鍊即可。如果能夠在這條區塊頭所組成的鍊的某一個區塊頭找到該交易的哈希,則可以認證該交易的确存在于該區塊頭所對應的區塊中。而這一系列操作僅僅最多隻是浏覽了所有區塊頭而非周遊整個區塊鍊,是以能夠在保證相對安全的情況下更加高效。在QitChain Network中,輕節點因如前文所述,隻含有區塊頭而沒有交易資訊,是以合并成鍊之後,整條鍊的大小隻有完整區塊鍊的1/1000左右。

淺談QitChain Network的架構細節與共識的基本原理(上)

Figure 3: 使用Merkle Proof證明某項交易是否存在于特定的某個區塊中,圖源:https://wiki.bitcoinsv.io/index.php/Simplified_Payment_Verification#:~:text=Simplified%20Payment%20Verification%20(SPV)%20is,the%20properties%20of%20Merkle%20proofs.

服務商節點

服務商節點的主要任務是提供計算或通證質押(依靠不同的共識而産生變化)、争奪新出塊的記賬權并獲得數字資産。而在QitChain Network的語境中,其服務商節點提供的是存儲服務。其對生命周期的定義是從一筆數字資産的交易被建立開始的,随後該交易會被一個或多個簽名進行加密并且全網廣播。當該筆交易被大多數其他類型的節點接收之後,最終會被一個存儲服務商節點所驗證并添加到鍊上的一個區塊中。當這筆交易進入區塊鍊并且被足夠多的後續區塊所确認之後,便會成為區塊鍊的一部分。

由此不難發現,根據存儲服務商節點發揮的作用,該節點應當提供存儲服務、完整區塊鍊資料以及網絡路由。在某些特定的情況下,為了更容易獲得區塊的打包記賬權及其附屬的數字資産激勵,服務商節點會被統合起來形成節點叢集以實作“集中力量辦大事”的效果。

由此可見,QitChain Network作為QitChain項目的核心,通過其架構的設計和節點的分工,對整個項目的完整性、有效性進行了有力的支撐,但其創新之處仍然遠不止于此。QitChain大膽地采用了号稱“博采衆家之長”的CPoC共識機制來實作其數字資産的配置設定與經濟模型的架構,而CPoC如何博采衆長,其先進性又如何展現,則是我們在之後需要讨論的内容。

參考資料

Qitchain Network, QitCoin Whitepaper v2.0

Bitcoin Wiki, Simplified Payment Verification, https://wiki.bitcoinsv.io/index.php/Simplified_Payment_Verification#:~:text=Simplified%20Payment%20Verification%20(SPV)%20is,the%20properties%20of%20Merkle%20proofs

Bitcoin SV, Merkle Proof Standardised Format, https://tsc.bitcoinassociation.net/standards/merkle-proof-standardised-format/

繼續閱讀