想知道更多區塊鏈技術知識,請百度【鏈客區塊鏈技術問答社區】 鏈客,有問必答!
實現許可的區塊鏈解決方案既有趣又具備挑戰性。天天,主流媒體上都有新文章聲稱,區塊鏈技術將如何改變行業,但現實並無那麼迷人。區塊鏈給已經創建的企業業務流程帶來了巨大的價值,可是大多數被許可的區塊鏈實現都沒有經過試點階段。在最初的興奮以後,大多數團隊意識到,要將新的Web3技術集成到現有的企業堆棧中,大規模實現許可的區塊鏈應用程序須要大量的技術技能和基礎設施構建。web
在過去的一年裏,Invector Labs的團隊已經接觸到了高度複雜的區塊鏈場景,每一個場景都有本身的一組基礎設施挑戰。在與經歷過幾回軟件革命的技術人員分享咱們的經驗時,他們中的許多人將web應用程序的實現與Netscape早期的web應用程序或Oracle以及IBM DB2早期的數據庫系統的實現相提並論。在這些實例中,這些技術的真實應用程序的用例比相應的基礎設施發展得更快。這種動態與雲計算或移動計算等最近的轉型技術運動造成了鮮明對比,在這些技術運動中,基礎設施從一開始就很是穩固。數據庫
得到許可的區塊鏈解決方案的真正挑戰是什麼?從標識、數據存儲、集成或消息傳遞等核心基礎設施領域,到部署和管理智能合約的流程;得到許可的區塊鏈應用程序要求開發人員在適當的位置設置正確的構建塊,以提升效率。在Invector Labs,咱們很幸運地試驗了許多新的區塊鏈協議或工具,咱們常用這些協議或工具來解決許可的區塊鏈實現所面臨的挑戰。不幸的是,根據底層的區塊鏈堆棧,這些工具和技術看起來徹底不一樣。編程
通往任何得到許可的區塊鏈應用程序的道路都要從兩個基本決定開始:網絡
第一個問題的答案將決定區塊鏈應用程序的核心開發堆棧。目前,像Hyperledger Fabric、Quorum或Parity這樣的以太坊變體是區塊鏈解決方案的主要選擇,此外還有像R3 Corda或Hyperledger Sawtooth也有必定的吸引力。至少在紙面上,像Dfinity或Hashgraph這樣的即將出現的堆棧彷佛很是適合得到許可的區塊鏈解決方案,但它們在實踐中還沒有獲得證實。架構
第二個問題的答案將決定許可的區塊鏈應用程序的核心基礎結構。提供和維護內部區塊鏈網絡遠非一件容易的事情,並且最受許可的區塊鏈堆棧也不能很好地與Docker或Kubernetes等平臺集成。區塊鏈即服務 (BaaS)平臺,如azure BaaS、Kaleido或最近AWS提供的服務,能夠真正地簡化區塊鏈網絡的供應和管理,容許開發人員專一於構建dApp,而不是基礎設施。框架
下圖說明了上述兩個問題的決策過程。工具
得到許可的區塊鏈應用程序的真正挑戰區塊鏈
選擇一個區塊鏈平臺和相應的運行時只是旅程的開始。任何通過許可的區塊鏈解決方案,只要比通過美化的數據庫更復雜,就會遇到底層平臺沒法直接解決的大量基礎設施挑戰。讓咱們來探索其中的一些。測試
集成優化
若是您在許可的區塊鏈應用程序中使用智能合約,那麼您可能會面臨與API的脫鏈系統通訊的挑戰。Oracle是處理外部通訊的區塊鏈架構的組件。然而,實施Oracle是一項高度發展的工做。咱們發現有幾個技術在這方面頗有幫助:
·Chainlink: Chainlink提供了一個簡單的編程模型,能夠將比特幣或以太坊智能合約與外部輸入鏈接起來。該框架還避免了依賴「集中的Oracle」做爲單一故障點。
·Rhombus: Rhombus是Oracle競賽的最新參與者,它爲以太坊智能合約與外部數據系統的鏈接提供了一個很是優雅的模型。Rhombus支持基於激活模式(如計劃或按需)以及推或拉數據訪問模式的不一樣Oracle架構。
·Oraclize: Oraclize專一於將API和數據系統鏈接到不一樣的區塊鏈,如Ethereum、EOS、Hyperledger Fabric或BlockApps。Oraclize的編程模型並不像其餘替代方案那樣豐富,但它經過對不一樣區塊鏈的強大支持來彌補這一點。
數據訪問
被許可的區塊鏈對信息的書寫頗有幫助,但對信息的閱讀卻沒什麼幫助。大多數通過許可的區塊鏈解決方案都須要與區塊鏈中記錄的數據交互,可是這些數據很難訪問,並且很是難以理解。如下是一些幫助應對這一挑戰的協議:
·圖表: 圖表提供了一種機制,用於將Ethereum智能契合約處理的數據公開爲GraphQL端點。這容許外部應用程序使用熟悉的GraphQL syntaxs查詢區塊鏈數據。
數據隱私
許多得到許可的區塊鏈場景在受監管的行業中運行,這些行業具備很強的數據隱私約束。所以,保護和增強對鏈上數據的訪問控制是得到許可的區塊鏈解決方案的關鍵要求。下面,我列出了一些咱們發如今這方面有幫助的技術:
· Quorum: Quorum區塊鏈使用零知識證實的形式爲私有事務提供本地支持。
· Aztec:最近宣佈的Aztec協議在以太坊智能合約中提供了零知識隱私的可靠實現。
數據存儲
區塊鏈並非存儲大量數據的最佳工具。得到許可的區塊鏈解決方案一般須要外部數據存儲。不幸的是,許多適合公共區塊鏈的分散化存儲解決方案並不適用於許可的區塊鏈場景。如下是這方面的一些解決方案:
·BigchainDB: BigchainDB爲事務的存儲和查詢提供了一個通過優化的分散式數據庫模型。可使用MongoDB查詢語言來查詢BigchainDB中的數據,MongoDB查詢語言支持豐富的數據訪問交互。
·IPFS專用網: IPFS是區塊鏈應用最流行的存儲系統,但一般被視爲區塊鏈的公共解決方案。可是,IPFS支持將通訊限制到一組已知節點的私有網絡的配置。
·AWS量子帳本: 咱們對即將發佈的AWS量子帳本數據庫很是感興趣。在許多得到許可的區塊鏈場景中,沒有共識的不變性概念固然是切實可行的,若是沒有ese,量子帳本也能夠成爲私有分散式應用程序的補充存儲模型。
身份
在許可的區塊鏈解決方案網絡中參與者的身份相對來講是衆所周知的。所以,許多複雜的協商共識計算協議在這些場景中是多餘的。此外,大多數企業已經擁有了它們但願在許可的區塊鏈解決方案中利用的用戶目錄。下面列出的技術有助於處理許可的區塊鏈解決方案中的標識:
·uPort: uPort一直在穩步構建一系列用於管理分散式應用中的身份協議和解決方案。當前堆棧與以太坊智能合約兼容,能夠在許可的區塊鏈應用程序中使用
·Azure BaaS: Azure團隊出色地擴展了不一樣區塊鏈的核心協議,以利用Azure Active Directory身份。最近的一個例子是在以太坊應用程序中實現了權威驗證協商共識協議。
在消息傳遞、測試、版本控制和許多其餘領域,區塊鏈應用程序的許可還面臨着更多的挑戰。本文中列出的協議和工具是咱們在現實世界實現中發現的最有效解決方案,可是在不久的未來,可能會有大量即將出現的技術堆棧。