前言:
初鏈(TrueChain)是全球最早的混合共識公鏈,設計和實現初鏈混合共識協議,將PBFT和POW共識結合在一起。初鏈解決了區塊鏈領域最重要的問題之一:去中心化和效能的矛盾。
「使用者體驗至上」的初鏈產品體系讓使用者和企業能夠快速便捷釋出和管理智慧合約的全生命週期,包括Steller –初鏈合約全生命週期管理平臺,Dapp Warehouse –初鏈去中心化應用倉庫,TrueScan Explorer和初鏈錢包等。
初鏈主創之一,也是帶領初鏈全球技術團隊的CTO Eric Zhang日前攜同核心技術團隊中的幾位成員,在剛落成的初鏈舊金山辦公室,與大家說明初鏈近期的技術程序。
Eric:初鏈主要創始人之一,CTO,工信部中國軟體行業協會區塊鏈人才標準專委會專家,畢業於牛津大學計算機系
Ren X和 Jesper:初鏈技術和共識研究負責人
Felix:初鏈Steller產品前端負責人
初鏈為什麼選擇混合共識?
Jesper:在主流共識設計領域中,PoW共識可以實現大規模的去中心化,節點數目有公認的可擴充套件性(Scalability),但在效能上有明顯的瓶頸。
而以PBFT為代表的拜占庭容錯協議雖然在一定條件下可以有較高的效能,但是它們通常被設計於私有場合使用,即所有節點需要在協議開始前知道相互的身份(公鑰等),並且節點不能自由出入網路。
這些特性使得BFT協議自身難以適用於區塊鏈的場景。
眾多的去中心化應用對效能是有要求的,這就要求有新的區塊鏈基礎設施,同時滿足兩個條件,首先要比原有的基於PoW的公鏈有明顯的效能提升,同時保證去中心化和低參與或部署成本。
混合共識(Hybrid Consensus)是目前看來同時滿足效能要求和公鏈要求的幾個最具有前景的設計方案之一。自提出至今,它在學術界已經有了比較紮實的理論基礎,同時有比較強的可實施性。
此外,在這個領域仍有一些在研究上尚未解決的或者是工程上將會遇到的問題,例如在混合共識內部的邊角情況處理(corner case processing)改善潛在的leader處理能力瓶頸、混合共識場景下的節點(node-stimulating)策略、可信的外部資料獲取等等。我們將在主網上線前逐步公佈我們對這些問題的解決方案或者優化方案。
混合共識的優勢在哪裏?
Jesper:混合共識一定意義上來說滿足了節點數目的可擴充套件性,可以在BFT參與者中敵手數目低於閾值且網路環境穩定的時候保持高效能的交易處理能力。混合共識的安全假設清晰明確。相比較一些基於無環有向圖的設計,混合共識對於分散式應用的支援比較友好。
儘管如此,混合共識也不是完美的,我們仍需要在現有的理論基礎上做出許多的努力。
初鏈的混合共識在設計上考慮哪些元素?
Jesper:對於混合共識的BFT部分我們採用久經考驗並被嚴格證明安全的PBFT協議,雖然PBFT對於網路延遲有一定的假設,但是我們認為這些假設在極端網路環境(例如洋蔥路由網路)以外的條件下是合理的。此外,PBFT滿足在混合共識中的BFT部分需要滿足的一些額外特性要求。
我們將重用主流的PoW程式碼並加以必要的修改,以希望在安全假設得到保證的前提下以最小的工作量儘快實現上線。
節點如何加入初鏈的網路?
Jesper:新節點進入網路將會是協議設計的一部分。對於使用者而言,只需要下載初鏈的全功能版本的客戶端並簡單設定執行即可。由於一些客觀設計原因,預計會對節點的運算能力和網路頻寬有一定的需求。
Ren,你能介紹一下初鏈的測試網及其功能嗎?
Ren X:初鏈測試網是一個基於超級賬本 Fabric(Hyperledger Fabric)的例項,執行在我們的公有云中,旨在測試和登入最初的分散式應用程式生態系統。我們將測試主要針對混合共識的變化。除了測試網之外,我們還提供了一個豐富的儀表板,提供了Fabric必須提供的所有用例,還提供了一個去中心化應用(Dapps)的倉庫,它將主管各種Dapps供使用者開始使用。
我們還支援網路介面設計(Web UI)的元件,支援瀏覽器內鏈碼編譯(而不是簡單的位元組碼提交),或者幫助使用者在各自的環境中編寫鏈碼。這將是一個目前Composer Playground功能的修改版,但根據初鏈的使用者需要定製。我們最終將用我們自己的PBFT實現來替換基於kafka的初始化模型,將其徹底替換為一個新的混合共識。
我們能從主網中得到什麼呢?能夠跟我們分享更多關於今年夏天將要啟動的主網嗎?
Ren X:今年夏天推出的主網將有一個可以在去中心應用裡(Dapps)使用的主幣來充當我們的TRUE代幣,用於獎勵我們混合共識中的礦工,並且建立和原有TRUE token的對映。我們將會用一種智慧合約機制來為使用者交換他們自己的代幣(交換資產的貨幣)和錢包(在Fabric之上),該機制將根據使用者是選擇成為礦工或僅僅是終端使用者來與任一貨幣進行互動。
我們將允許終端使用者使用跨平臺編譯的程式包來啟動初鏈的客戶端,該程式包將使初鏈客戶端擁有自己的儀表板,用於任何一部分的鏈碼(智慧合約)。他們可以選擇從儀表板啟動一個新的鏈碼,以及自己的TRUE代幣(如果他們想的話)。
我們最初還會為那些沒有挖掘資源的使用者提供我們自己的公共雲實例。我們將允許他們以一定的費用使用它,並在他們有自己的資源時幫助他們成功遷移。
可否談一下初鏈的規模擴充套件工程?
Ren X:我們目前可以預見由建立在初鏈的混合共識之上的TPS規模帶來的的流量負載,所以我們將使用測試網進行模擬並做出適當的改變。我們重新使用了fabric中基於golang的元件,但是我們將把我們自己的版本推廣到Github組織裡。與原有功能不同的是,我們將fabric改造成為一個無許可權的框架來處理自動擴充套件的問題。
我們再次進行規模擴充套件測試,以確定其容量規劃、網路穩定性、適用於區塊鏈的不同系統的IOPS,適用於區塊鏈的系統設計原則,和在公共雲中的SSDs等功能的讀/寫同步時間。我們希望通過CI/CD策略的高強度迭代來基本實現基於網路通訊複雜性的線性可擴充套件性,並最終改進我們與R/D應用(demo)驅動開發的一致性設計。初鏈自始至終都是為高效能應用程式服務的,所以這是我們將在整個開發和設計階段重點關注的領域。
就效能而言,我們能夠期待什麼?
Ren X:我們正在試驗我們的共識機制,並將很快釋出一份關於效能的黃皮書。然而,基於良好的共識設計基礎,我們非常有信心能實現成千上萬的TPS。同時我們將繼續研究一致性設計和評估元件,比如在Fabric中使用的預設Gossip協議。
在積極解決諸如激勵設計、智慧合約中的資料互動模型,和鏈之間的資料遷移等一系列難題的同時,我們當然也對資料分片的想法很著迷。我們將執行鍼對Dapp的特定領域的效能測試,以優化初鏈平臺的每個元件,並將釋出基準資料,比如在新的對等點上同步整個網路所需的時間。
初鏈是建立在Fabric的基礎結構上的,而我們都知道Fabric一直被用於私有鏈,那麼初鏈將對它進行哪些主要的更改以適應公鏈的要求?
Ren X:我們將使Fabric「無許可權化」,意味著我們會顛覆諸如「會員服務提供商」這樣的基本概念。此外,還有一個主要的代幣和一個錢包。我們還改變了當前啟動鏈碼的方式(在單獨的容器中),因為原有方式僅適用於私有鏈,並且會導致共享鏈碼的問題。 「一個鏈碼對應一個容器」的策略對於在公共鏈上部署的數千個智慧合約將不起作用,因為這意味著在所有節點中啟動同樣多的容器。
我們還將在fabric之上增加一個安全層,以驗證zkSNARKS以及一個分析監視模組,以幫助人們利用這種分散式經濟的資料模型來吸收實時統計數據。
除此之外,我們還公開提供了命令列API以及網路用戶界面(儀表板)、移動應用程式和鏈碼倉庫。具體來說,我們是這樣重新使用HLF中的用戶界面和基礎設施元件的方法。
HyperLeagram Cello被認為是Fabric的編配規定平臺,它能處理docker Swarm、docker host和kubernetes(k8)。它包括一個使用者授權模型以及一個基於節點的軟件開發工具包,該工具包使用GRPC呼叫和TLS證書與下層結構進行互動。這樣就提供了一種通過前端實現REST API與鏈碼互動的方法。它有啟動多個鏈的方法,並提供選擇許多可插入協議產品中的一個(solo,pbft,noops)。這是由楊寶華和其他幾位IBM研究人員提出的。雖然這不是可以直接使用的(因為我們將公開並提供我們自己的共識),但我們將從中提取基礎設施元件。
超級賬本Composer被認為能強化智慧合約的業務邏輯,或者在Fabric術語中被稱為「鏈碼」的程式碼。
Hyperledge blockchain-explorer僅用於區塊鏈的KPI,主要用作交易追蹤器。我們並不需要把精力放在對它的強化上,而是應該直接從Stellar產品中獲取用戶界面的相關功能。在這方面的加強將能為初鏈新增更多分析功能,並將其納入到CouchDB中。
也就是說,我們還將需要和廣大區塊鏈社羣 (特別是超級賬本社羣)來一起討論、貢獻和驗證我們的方法。這本質上將是一個開源協作的實戰練習,而這正是我們希望通過公有鏈實現的。我們願意為屬於我們fabric的一支多做貢獻,並希望最終能為Kubernetes、 Fabric和整個過程中所涉及的一系列元件做一些貢獻。
說過了工程,基礎設施,初鏈最終是面向使用者,企業和開發者的,在產品端是怎樣計劃的?
Eric:我們在初鏈的產品設計中一直都強調以使用者為核心的原則.在公鏈的世界裏,我們認為技術和使用者體驗同樣重要。我們規劃了初鏈的產品矩陣,主要包括這幾個部分:
Fabricated TrueChain -初鏈測試網路
Steller -初鏈企業和使用者合約管理平臺
TrueScan -優化版的初鏈區塊鏈瀏覽器
TRUE Consensus -初鏈混合共識
TRUE Wallet -初鏈輕錢包
TRUE Node -初鏈全節點封裝
我們一定要為區塊鏈的應用釋出者,企業提供最好用的基礎設施,這件事在初鏈和共識同等重要的。
初鏈的前端產品採用了哪些技術?在前端產品的使用者體驗上是怎樣考慮和設計的?
Felix:在前端開發中主要考慮的是讓使用者能夠更加直觀、簡單的進行操作。因此在設計上沒有使用過多的色彩和圖案,保持頁面的清爽,讓使用者可以直觀的看到更關鍵的資訊。在技術方面主要使用了Vue.js漸進式框架,構建了前端路由和優秀的資料渲染元件:一方面呈現給使用者更為清晰的選單目錄結構,另一方面為後續的功能拓展提供了有力的框架支援。
初鏈的團隊怎樣組織?
Eric:整個技術團隊現在是「特種部隊」狀態,因為混合共識這個領域在設計和工程實現上都還處於理論相對完善,但工程上有很多細節,最好的工程師和分散式/密碼學研究者分佈在世界各地,初鏈的幾個技術創始人分別在美國和印度,而我們的產品團隊在中國。後面隨著開發的深入,我們會逐漸讓團隊集中起來。
另外一個很重要的部分,也是接下來的工作,是初鏈會建立開發社羣,我們會用接下來半年的時間讓開發社羣增長到比較大的規模,並且把很多重要的任務交給社羣,逐漸把核心的開發向社羣轉移,目標是讓初鏈的技術逐漸「去中心化」。
那麼通過開發者社羣進行開源專案的開發有什麼好的方法嗎?
Eric:首先我們會通過自己組織和參與眾多的Hackathon來向社羣宣傳並分發問題,這些問題都是很具體的問題,用一週末的時間解決一個問題,同時也會了解我們的codebase,我們不僅會線下參與hackathon,還會通過多個社羣和極客的通道進行線上,跨地域地分發。
另一個問題是社羣管理,我們維護一個小規模的團隊進行技術社羣管理,逐漸讓社羣自動轉起來,這裏有很多技巧,可以後面專門為大家介紹。
初鏈的技術在今年有什麼樣的規劃?
Eric:我們的測試網已經內部部署,共識在3月30號已經開源並且完成測試,後面我們會向外部發布一版穩定的測試網,並且讓很多Dapp開始上鍊。我們其實已經有很多合作伙伴,就等著我們上鍊。比預期稍晚了一點,原因是測試和一些細節多用了一些時間。
今年夏天我們會發布混合共識,並上線主網,同步釋出我們的全節點,到時我們歡迎大家加入初鏈的節點網路,並且用我們的基礎設施釋出合約。