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