作者:探碼科技, 原文鏈接: http://nbbskj.com/learn-blockchain/353
? ? ? ?為滿足區塊鏈研究業務需求,我們對目前世界上有影響的六大分布式賬本技術體系(比特幣、Ripple、比特股、以太坊、HyperLedger 和 Corda)進行了深入的考察和評估。其中前四個技術體系是平臺、貨幣、社區三位一體的,后兩個技術平臺是“純平臺的”。 考察評估的維度涉及領域適用性、場景適用性、計算能力完備性、架構分層合理性、共識達成機制與效率、計算與存儲的效率、隱私與特權機制、原生貨幣的作用和必要性、技術與運營支持、未來發展潛力與動向十個方面。
? ? ? ?比特幣賬本底層數據結構擁有的唯一一個價值字段用于描述比特幣價值創造和轉移的面額。換句話說,比特幣技術體系如要移作他用,也只能提供單一標的資產的登記和轉移。如要同時支持多種標的資產共處和交易,還需進行相應的改造。 以太坊、比特股、Ripple、HyperLedger 技術體系都能夠同時提供多種標的資產(含數字貨幣)的登記和轉移服務,天然支持數字貨幣和數字資產在一個區塊鏈上共處,這對于構建具有資產交易業務邏輯的資產端應用來說是更加方便的。此外,除原生貨幣之外,由外部注入的數字貨幣(比如代幣等)在技術處理上與普通的數字資產無異。外部注入的貨幣與原生貨幣之間的匯兌,其技術實現方式也與資產交易類同。 在非金融端,各技術體系一般都在底層數據結構中提供一個文本類型的信息字段,可供信息提供方簽名分發,作為“經簽發方確認的消息”,間接提供非金融領域的信用服務。在以太坊和 HyperLedger 技術體系中,經簽發方確認的消息還可觸發智能合約執行相應的動作。
? ? ? ?根據分布式總賬的技術特點,一個應用場景的參與方,既是業務的參與主體,同時又是其分布式總賬本身的運營和見證主體。一般根據參與方加入應用場景是否需要獲得許可,把場景分為“非許可的”和“許可的”兩類。在區塊鏈社區中也把“非許可的”場景稱為“公有鏈”,把“許可的”場景細分為“私有鏈”和“聯盟鏈”。私有鏈是單邊治理的業務生態,聯盟鏈是多邊共同治理的業務生態,公有鏈是整個社區共同治理的業務生態。
? ? ? ?比特幣、以太坊、比特股、Ripple 都通過自身社區共治共享的公有鏈體現了其技術體系對公有鏈場景的適用性,鑒于公有鏈社區人員組成的復雜性和博弈的高度對抗性,能夠在公有鏈環境下生存下來的分布式總賬技術平臺,在安全上是經得起考驗的,不加改造或略加改造作為聯盟鏈或私有鏈部署也具有可行性。
? ? ? ?HyperLedger 目前的設計是以聯盟鏈為出發點,但是其白皮書強調每個模塊 (包括身份認證和共識算法以及數據庫協議等模塊)的可插拔性,兼顧了今后作為公有鏈的可能性。Corda 目前已公布的資料較少,但也可以從中清晰看到其非公有鏈的取向。
? ? ? ?價值可編程是分布式總賬技術的一個重要的本質屬性,直接決定平臺對業務邏輯的表達能力,具體體現在“智能合約”上面。比特幣的內置腳本表達能力是 極為有限的。Ripple 目前不支持智能合約。Bitshares 的智能合約在運用上有很多限制,并不能自定義。以太坊和 HyperLedger 支持智能合約且達到“圖靈完備”程度。
? ? ? ?目前,業界對于分布式總賬的基礎協議棧結構并無統一共識,各技術體系做法不一。無論從快速構建應用角度來說,還是從與分布式賬本之外的技術資源整合的角度,甚至從未來占領標準化制高點的角度來看,架構分層的合理性都是一個應該引起高度關注的議題,架構分層朝著更合理方向的每一次改進,既體現了業界對分布式賬本技術架構理解的深化和運營理念的升華,也往往醞釀著新的商業機會。
? ? ? ?我們期待的分布式賬本技術體系的架構,應該體現三類不同性質的節點(記賬端、驗證端、客戶端),五個不同的協議棧層次(網絡通信、基礎賬本、共識、智能合約、應用),四個不同的管理要素(身份、策略、數據、過程)。 從長遠來講,有些共性技術(如 P2P 通信和執行智能合約的虛擬機環境)或許應該交給更合適的主體來做。
? ? ? ?從現實情況看,六大體系中,Hyperledger 的架構分層顯示出更多的包容性和更大的彈性,其各組成模塊有靈活的可插拔性,便于支持各種法律和監管環境下分布式賬本技術的落地,各模塊間的相互關系也較為合理。該架構的優點值得我們吸取。
? ? ? ?目前可供選擇的共識達成機制有工作量證明機制、權益證明機制、委托授權的權益證明機制、Ripple 共識機制和實用拜占庭容錯機制等。
? ? ? ?工作量證明機制 (Proof of Work, POW)的優點是可以達到完全去中心化,節點自由進出。缺點是消耗大量的資源,共識達成的周期較長,不適合在資本市場的“主戰場”應用。而且從統計角度上講是需要 6 個或以上的確認才能認為是明確確認且不可逆。其網絡容錯的上限是 50%。典型應用是比特幣和以太坊。
? ? ? ?權益證明機制(Proof of Stake, POS)已有很多不同變種,但基本概念是產生區塊的難度應該與對應節點在網絡里所占的權益(所有權占比)成反比。POS 的優點是在很大程度上縮短了共識達成的時間。它的網絡容錯上限也是 50%。典型應用是點點幣(Peercoin)和未來幣(NXT)。以太坊計劃在未來使用的 POS 算法叫 Casper,驗證人數最多 250 人,并且區塊一旦達到最終狀態(final)就完全不可偽造。
? ? ? ?委托授權的權益證明機制 (DPOS)。它其實是 POS 的變種,由全部節點記賬變為選出代表節點記賬。當使用去中心化自治公司 (Decentralized Autonomous Company, DAC) 這一說法時,每個股東按其持股比例擁有影響力。每個股東可以將其投票權授予一名代表。獲票數最多的前 N 位代表成為驗證者,并按既定時間表輪流產生區塊。它的網絡容錯上限也同樣為 50%。典型應用是比特股(Bitshares)。比特股需等待半數以上的驗證者確認才認為區塊不可逆。
? ? ? ?瑞波共識機制(Ripple Consensus)。瑞波共識算法設定了一組特殊節點列表,只有在這個列表中的節點才是有效的驗證者。這種機制達成共識的效率非常高,并且只有達成共識的區塊才會寫入賬本。因此寫入即有效,無需等待確認的時間。 為了達到高可靠性,只有 80%的驗證者同意交易才算有效,即網絡容錯上限為20%。
? ? ? ?實用拜占庭容錯算法(Practical Byzantine Fault Tolerance)。這個算法可以在異步網絡中不保證活躍度的情況下解決拜占庭將軍問題. 雖然該方案不保證活躍度,但它進入無限循環的概率非常低, 在工程中是完全可用的。PBFT依靠法定多數(quorum),每個節點一票,少數服從多數,實現了拜占庭容錯。采用 PBFT 算法的網絡容錯上限為 33%。在私有鏈/聯盟鏈的部署方式下,實用拜占庭容錯算法(PBFT)具有較大潛力。
? ? ? ?恒星共識協議(Stellar Consensus Protocol)與 PBFT 算法類似。它是基于聯邦拜占庭協議(Federated Byzantine Agreement)改進而成,同樣解決了拜占庭容錯問題。 SCP 通過節點自行選擇仲裁片區(quorum slice)來達成共識,增減節點非常靈活。 網絡效率也很高,也采用只有達成共識才寫賬本的方法,因此也沒有等待確認的時間。它的網絡容錯上限同樣為 33%。其性能也可以作為 PBFT 的參考。
? ? ? ?目前運行著平臺+貨幣+社區三位一體的公有鏈上,我們所觀察到的計算與存儲效率受到很多因素的制約,而且計算與存儲之間存在目標沖突,并非技術上完全不能實現更高的效率,所以參照意義并不是很大。 要實現分布式賬本技術的大規模的應用,在計算與存儲方面做進一步的性能優化是不可避免的。目前可選擇的技術方案有:
? ? ? ?一種方式是以定期保存的賬本快照(snapshot)當做整個網絡共同認可的狀態。按照這種方式,全量歷史記錄有可能回退到云化甚至中心化存儲,這在公有鏈上是相當于在安全性和去中心化上做出了一定的妥協。我們也可考慮以諸如 IPFS 等分布式文件存儲方案來降低中心化存儲的風險。
? ? ? ?另一種方式是分片處理 (sharding). 這種方式主要出于解決計算性能問題的考慮,但是也兼顧了緩解存儲問題的需要??傮w思路是,每個節點只處理一部分(比如一部分賬戶發起的)交易,從而減輕節點的計算和存儲負擔。但是這種方式也會帶來新的問題,如在復雜時序邏輯下數據的一致性、交易的原子性和交易的相互依賴對性能的影響等。
? ? ? ?第三種方式名為狀態旁路 (State Channels)。這種策略是保持底層的區塊鏈協議不變,通過改變協議用法的方式來解決擴展性問題。在這種策略下,分布式賬本上可見的只是粗粒度的“批發”,可以類比出入備付金操作,而真正細粒度的雙邊或有限多邊交易明細,則不作為“交易”記錄在分布式賬本上,而僅僅作為有爭議事件發生時備查的“信息”單據,通過狀態旁路的方式“曲線”執行。比特幣體系下的“閃電網絡”是在比特幣腳本邏輯表達能力受到限制的情況下不得不借助“精巧”的設計實現的事實上的狀態旁路。在以太坊體系下,借助智能合約的豐富表達能力,狀態旁路的實現大大簡化了。 三種優化思路并不是彼此排斥的,可以組合使用。
? ? ? ?目前分布式賬本上的交易數據(包括交易內容和發送方,接受方的地址)都是公開可見的,對于中國資本市場業務來說,這種數據的暴露往往不符合業務規則和監管要求。在分布式賬本基礎協議的框架內,尋找既能對交易內容背書、又不讓非授權人員(哪怕是背書者)獲取交易內容的技術方案是非常重要的。
? ? ? ?目前從公開資料中能夠查閱到的較為徹底的、既適合公有鏈又適合私有鏈和聯盟鏈的密碼學解決方案有零知識證明、環簽名和同態加密三種技術可供選擇,相應的技術實現雖已接近可用水平但與實際需要尚有差距。
? ? ? ?作為臨時性的解決方案,有人建議使用“狀態旁路”。用狀態旁路提供隱私服務,其前提是所有用戶均按同樣的腳本使用智能合約。如果有用戶故意使用惡意的智能合約,就有可能把在正確的智能合約內存中解密的明文交易信息泄露出去。因此,狀態旁路只適合于雙邊或有限多邊的場景,不適合大量用戶同時使用。 特權機制是一個全新的問題。以太坊公有鏈受到 The DAO 被攻擊事件的影響至今仍在持續,類似事件如果出現在資本市場“主戰場”上是不堪設想的。但評估過程中,我們沒有發現所考察的技術體系在這一問題上有可供選擇的解決思路。
? ? ? ?目前幾乎所有部署在公有鏈上的分布式賬本技術體系里都有原生的加密貨幣。這些加密貨幣具有的共同特點都是沒有中心化的發行方,可以在其對應部署的公有鏈上自由流轉。這些原生貨幣的用途包括:支付手段、匯兌手段、抵押手段、激勵手段、權益證明和資源控制等。
? ? ? ?隨著一套分布式總賬技術體系從公有鏈平移到私有鏈/聯盟鏈場景,前面所說的關于原生虛擬貨幣的很多用途會被消解,一部分功能會被錨定法幣的代幣所取代,因此在私有鏈/聯盟鏈的建設過程中,“去幣化”已成為一道標配的工序。但是,“權益證明”和“資源控制”這兩個職能,即使到了私有鏈/聯盟鏈場景,仍然有存在的必要性。原生數字貨幣或許仍不失為在私有鏈/聯盟鏈場景下履行這兩個職能的一種單純的計量和調節工具。
? ? ? ?據不完全統計,比特幣的核心代碼庫、以太坊的 Go 語言核心代碼庫、Ripple 的核心代碼庫、比特股 2.0 的核心代碼庫等均已進行了多次升級,超級賬本的項 Fabric 與 Sawtooth Lake 都各自進行過升級。應該說這些平臺的核心代碼都積累了大量的在線升級經驗。
? ? ? ?相比之下,智能合約是契約但更是程序,是程序就難免會有升級問題。如何處理智能合約的升級,如何保證智能合約的狀態和邏輯在升級前后有序銜接,如何保證智能合約的升級和平臺的升級相得益彰而不是互相掣肘,也是全世界面對的艱難挑戰。 比特幣、Ripple、比特股的核心代碼主要由 C++編寫。HyperLedger 的 Fabric 項目核心代碼主要由 Go 編寫。HyperLedger 的 Sawtooth Lake 項目核心代碼主要 Python 編寫。
? ? ? ?以太坊的黃皮書是對以太坊的形式規范描述(formal specification),即用計算機科學的形式語言來描述的以太坊系統的規范。參照黃皮書的規范可以用各種 編程語言實現客戶端。目前以太坊有經過大量安全審計的 Go 語言, C++語言和 Python 語言實現的 3 個客戶端,另有 Java 和 Ruby 的客戶端也在開發中。
? ? ? ?除?Corda 之外,其他平臺都是開源項目,項目文檔比較豐富。但最近 Corda 發布了非技術白皮書,使業界對其理念和技術路線有了較多的了解。
? ? ? ?比特幣技術體系正在新的升級計劃引領下尋求新的突破。盡管其典型公有鏈、 單一標的資產以及 POW 共識機制等特質決定了在金融領域獲得廣泛應用有很大難度,但我們還是希望看到新的升級計劃給比特幣技術體系帶來新的跨越。
? ? ? ?Ethereum(以太坊)制訂了清晰的進一步開發的路線圖,具體涉及瀏覽器、共識機制、虛擬機和可擴展性方面的重大改進。此外,以太坊還在積極探索滿足金融行業需求的各種技術路徑,這些探索涉及隱私保護、吞吐量以及功能更強且更加可靠的智能合約等方面。
? ? ? ?Ripple(瑞波)現階段主要致力于與銀行合作,解決匯兌類問題,而對更全面的應用于金融領域所必須考慮的隱私保護、可擴展性、合規性等問題尚未有明確的解決思路和研究計劃。
? ? ? ?Bitshares(比特股)沒有形成長期、穩定的核心開發團隊,其創始人 BM(Daniel Larimer)亦于 2016 年 4 月表示,他將逐步淡出比特股的開發。因此,比特股未 來的發展前景并不明朗。
? ? ? ?Corda 和 HyperLedger 分別由兩家聯盟組織發起建設,聯盟的成員機構主要來自金融領域和 IT 領域。它們將聚焦于分布式總賬技術在金融行業的運用,重點放在私有鏈、聯盟鏈上。從已披露的信息來看,兩個聯盟均提出了一些有創意的設想,后續能否以及如何實現這些設想是 Corda 和 HyperLedger 發展的關鍵。
? ? ? ?HyperLedger 是一個支持智能合約的、底層可插拔的通用協議框架,其上項目多有很強的金融背景,包容性相對較強,又有很多金融領域傳統服務商參與加盟,組件模塊的不斷豐富是毋庸置疑的。
? ? ? ?Corda 對數據的隱私性、合規性和監管需求的考慮明顯更接近金融業務主戰場的視角,不排除會走一條與眾不同、直達金融業務本質的道路。
? ? ? ?針對中國資本市場的現實環境,我們優先考慮提供聯盟鏈解決方案,在聯盟鏈上忠實體現和反映中國資本市場職能機構的業務范圍和職能邊界。在運營模式的設計上,支持技術層面的專業化運營服務和業務層面的自主化運營服務既互相剝離,又有機結合。
? ? ? ?分布式賬本技術的核心就是對算法的充分信任,而在算法代碼開源條件下,通過在廣泛應用和反復博弈中取得公眾信任,是對一個分布式賬本技術體系強安 全性的最好詮釋。因此從近期看,我們的分布式賬本基礎平臺不可能憑空產生、從頭做起,而必須首先選擇合適的開源分布式賬本技術體系作為主要借鑒,在其基礎上搭建符合中國國情、適合中國法律與監管需要的基礎平臺。
? ? ? ?從前面的業務需求分析中不難看出,高安全性、強表達力、多資產類別、良好的未來發展潛力和性能優化前景,去除原生數字貨幣副作用小,是中國資本市場對基礎賬本選擇的基本要求。而在我們所考察的六大技術體系里,最有借鑒價值的,是以太坊和超級賬本兩個平臺。
? ? ? ?從前面的業務需求分析中不難看出,我們為適應中國資本市場要求而擬在后續對分布式賬本基礎平臺的主要修改工作,核心是在中心化的“特權”機制的引入、“隱私”機制的實現、原生數字貨幣的去除和業務處理性能的優化。它們都幾乎不約而同地集中在智能合約層面。我們判斷,合約語言的未來趨勢一定是跨平臺,即使在同一平臺下,合約模板也完全有可能對基礎賬本層的細微版本變化無感。因此,我們的目標是:在智能合約層提出一套“合約模板”,盡量把所有改動封裝在“合約模板”中,這樣就可以在某種抽象意義下同時既支持近期以借鑒為主的基礎賬本,又支持遠期以自主開發為主的基礎賬本。
? ? ? ?從長遠戰略考慮看,我們應在充分掌握底層賬本核心技術的前提下,自主開發出一套基于BaaS的區塊鏈技術體系。 架構的充分模塊化和架構組件的充分可插拔是我們未來自主研發的分布式總賬技術體系的設計所應遵循的基本架構準則。?
? ? ? ?根據選型分析的結論,PBFT所能達到的性能指標在各類共識機制中名列前茅。據我們了解,目前,在以太坊平臺和超級賬本平臺上都有引入 PBFT 共識機制的嘗試。我們內部也進行了在以太坊平臺上引入 PBFT 共識機制的測試。應該說,引入 PBFT 已經不存在本質上的技術障礙。 但是也要看到,PBFT 不適于節點可動態加入的場景。針對這種情況,我們還將深入研究 PBFT 的替代方案。