開發第乙個成熟的區塊鏈應用程式的技巧。
2024年,中本聰(Satoshi Nakamoto)發布了他對位元幣革命性點對點電子現金版本的願景:點對點電子現金系統,迅速席捲了開發者社群。 雖然位元幣和加密貨幣的概念首先激發了世界的想象力,但中本聰的**也描述了第二個概念:區塊鏈。這種基於賬本的系統不僅可以用作位元幣的傳輸機制,還可以用作任何數字物件的傳輸機制。 但是,建立有效的區塊鏈應用程式的最佳實踐是什麼? 僅僅將資料放在區塊鏈上並使用智慧型合約中包含的**(即鏈碼)進行操作是不夠的。 為了取得成功,開發人員需要熟悉許多架構領域和最佳實踐。 本文提供了一組關鍵的最佳實踐,可幫助您建立成功的區塊鏈應用程式。
在開始開發區塊鏈應用程式之前,開發團隊需要利用現有的用例來描述他們打算解決的業務問題的最佳實踐。
在這一點上,考慮IBM的三個區塊鏈是很有用的:
必須解決業務問題,必須需要可識別的業務網路,必須需要信任網路,IBM 還提供了開發人員可以在開始開發之前使用的成功區塊鏈用例的詳盡頁面。 另乙個很好的資源是 IBM Blockchain Garage,它使用一種圍繞設計思維構建的方法,開發團隊可以付費幫助開發最小可行產品 (MVP)。 任何開發團隊都不應在沒有乙個或多個用例作為指導的情況下開始開發。 對於現有用例,鏈空間提供了迄今為止最受歡迎的成功用例。
IBM Developer Code Pattern for Blockchain 是乙個有用的資源,它是開源的、隨時可用的**,可供開發人員開箱即用。 區塊鏈技術仍然相對較新,許多開發團隊可能不習慣使用它,除非他們已經有很多經驗。 正因為如此,你會發現區塊鏈應用程式出現在一些定義明確的領域,比如連鎖店,更具體地說是咖啡連鎖店。 一旦開發團隊在某個業務領域(例如咖啡連鎖店)取得成功,他們通常會發現會出現許多轉殖,這些轉殖將現有解決方案應用於新的和類似的業務領域,例如不同地理區域的咖啡。
由於許多區塊鏈應用程式是開源的,尤其是那些使用Hyperledger不同方言的應用程式(例如Hyperledger Fabric),因此對於新的開發團隊來說,建議的第一步是轉殖現有的區塊鏈應用程式並將其應用於稍微新的領域。 在這裡,咖啡鏈中的區塊鏈應用提供了乙個很好的起點。
說到我們的區塊鏈開發團隊,它應該是什麼樣子? 該團隊應包括:
經驗豐富的首席架構師,對密碼學、效能和最佳實踐區塊鏈架構有深入的了解領域專家,與架構師、一些開發人員和區塊鏈運營商相當,從總共大約六名開發人員開始,這個數字可能會隨著專案的進展而增加。 資金超出了本文的範圍。
區塊鏈基礎知識:Hyperledger Fabric 一文準確概述了 Hyperledger Fabric 框架中嵌入的基本必知區塊鏈概念。 以下是關鍵元件:
資產— 使用智慧型合約在區塊鏈上放置和搜尋的內容。 共享賬本— 賬本負責記錄資產的狀態和所有權。 智慧型合約(或鏈碼)。— 鏈碼是定義資產和相關交易的軟體。 訂閱服務— 排序服務將交易打包成區塊,並保證交易在網路上的交付。 主要的排序服務是 Raft 和 Kafka。 正如我之前提到的,開發團隊快速掌握這些概念的最佳方式是重新實現現有的開源專案,例如區塊鏈 Bean 或其他成功的開源 Hyperledger Fabric 專案。 有許多平台和開發工具可用於建立區塊鏈應用程式。 本文重點介紹以下三個方面:
Hyperledger FabricVisual Studio CodeIBM Blockchain PlatformHyperledger Fabric 是乙個由 Linux 管理的開源專案。 它旨在用作開發具有模組化架構的區塊鏈應用程式或解決方案的基礎。 Hyperledger Fabric 支援元件即插即用。 其模組化、通用設計可滿足廣泛的行業用例需求,並提供一種獨特的共識方法,在保持私隱的同時實現大規模效能。 此外,Hyperledger Fabric 還附帶了出色的文件。 帶有區塊鏈 VSCode 擴充套件的 Visual Studio Code 可幫助開發人員建立、測試和除錯智慧型合約,連線到 Hyperledger Fabric 環境,並構建可在區塊鏈網路上交易的應用程式。 確定用例後,開發團隊使用帶有 VS Code 擴充套件的 Hyperledger Fabric 來建立使用智慧型合約的區塊鏈應用程式。 VSCode 擴充套件帶有乙個易於遵循的教程庫,專注於使用智慧型合約處理區塊鏈。
我們使用 VS Code 擴充套件來建立、打包、安裝、例項化以及提交和評估智慧型合約。
圖1VS Code 擴充套件了流程
有關智慧型合約的更多資訊,請參閱“建立和執行區塊鏈智慧型合約”程式碼模式。 智慧型合約是建立區塊鏈應用程式的主要方式。 VSCode Extension 教程庫顯然是乙個很好的入門之地,它展示了如何在 Hyperledger Fabric 和 IBM Blockchain Platform 中使用智慧型合約建立區塊鏈應用程式。
IBM Blockchain Platform 是乙個基於雲的平台,用於在您選擇的基礎架構上建立和執行區塊鏈企業應用程式。 現在,您可以將 IBM Blockchain Platform 部署到公有雲(如 IBM Cloud、AWS 或 Azure),或者使用安全基礎架構(如 LinuxOne)在私有雲中本地部署。 雖然大多數開發團隊都是從 Hyperledger Fabric 開始他們的開發之旅的,或者因為 Hyperledger 的其他一些便利性,但幾乎可以肯定的是,他們最終都會在公共雲或具有不同配置的多個雲中部署他們的應用程式。
圖2區塊鏈系統的核心
一旦確定了有據可查的用例,開發團隊就會專注於構建業務網路。 業務網路使用所有參與者都可以訪問的共享賬本。 (我在上面的第 3 節中提到了分類賬。 作為管理業務交易的一種方式,業務分類賬已經存在了很長時間。 然而,傳統的賬本總是需要將每個業務參與者的賬本與業務網路中所有其他參與者的賬本進行核對,這既費時又費力且容易出錯。
通過強制業務網路的所有成員使用相同的共享賬本來消除對賬是一項歷史性的創新。 放棄和解也意味著共識在商業網路中很重要。 網路的所有成員必須同意,然後才能將任何交易放入賬本中。
賬本使用具有以下特徵的共享區塊鏈:
共識機制,例如 Raft 或 Kafka,有助於實現區塊鏈的崩潰容限。 加密雜湊,例如 SHA256,用於標記對區塊鏈上交易的任何更改。 數字簽名確保交易不是來自冒名頂替者。 溯源用於跟蹤區塊鏈上的專案。 不可變性確保放置在區塊鏈上的資料無法更改。 終局確保一旦交易包含在區塊中並新增到區塊鏈中,它就會立即被視為完成。 有關賬本的詳細資訊,請參閱區塊鏈基礎知識:分布式賬本簡介。 然而,對於開發團隊來說,這不僅僅是插入區塊鏈並啟動和執行的問題。 他們必須首先確定哪些資料屬於區塊鏈,哪些資料不屬於區塊鏈。 例如,如果您希望能夠快速搜尋,這是區塊鏈提供的必備功能之一,那麼在區塊鏈上放置千兆位元組或兆兆位元組的資料根本不可行。
同樣,一些資料可能已經存在於乙個量身定製的、高效的資料庫中,不需要重新發明。 最好根據需要將關鍵資料儲存在具有鏈下資料鏈結的區塊鏈上,而不是讓區塊鏈逐漸停止執行。 鏈下概念是開發成功的區塊鏈應用程式的關鍵。 這意味著您的區塊鏈應用程式是現有應用程式的一部分,除非絕對必要,否則不需要重新設計。 最後,不要忘記,由於歐盟的《通用資料保護條例》(GDPR)等資料私隱法,個人資料必須經過匿名化處理才能放置在區塊鏈上。
區塊鏈的一大優點是能夠搜尋區塊鏈並快速找到關鍵資料——這是紙質記錄無法實現的,令人驚訝的是,許多傳統賬本經常使用紙質記錄。 許多區塊鏈解決方案允許企業將硬拷貝表格數位化,通過區塊鏈提供該表格的證據,並支援數字簽名。
鏈下儲存的另乙個常見用例是支援快取鏈上資料狀態的最新值,或利用高階搜尋和分析等適用技術來指導區塊鏈應用程式與區塊鏈網路的互動。
敏感資料通常必須儲存在鏈下,因為根據定義,鏈上資料不能被篡改或刪除。 要了解更多資訊,您可以在 Hyperledger Fabric 指南中檢視私隱資料收集概述。 鏈下和鏈上問題是開發團隊架構師的工作領域,也是區塊鏈架構問題的核心,這些問題可以成就或破壞區塊鏈應用程式。
我們已經談到了智慧型合約(也稱為鏈碼),這是開發人員在區塊鏈上處理資料的方式。 區塊鏈保證在未直接通知區塊鏈各方的情況下,不能修改或刪除區塊鏈上的任何資料。 這是使區塊鏈在資料世界中獨樹一幟的優勢。 但是,從外部匯入的資料呢? 畢竟,區塊鏈必須與現實世界進行互動。
這就是預言機的用武之地。 預言機是可信的資料來源,通過智慧型合約向區塊鏈提供確定性資訊,而確定性是關鍵。 例如,匯率變化很快,外部資料來源很容易提供非確定性值,因此(如今天早上發生的那樣)資料來源的 1 瑞典克朗可能值 011 美元,而另乙個資料來源可以兌換 010 美元,具體取決於您所在的位置以及您檢視匯率的時間。 預言機用於管理區塊鏈所依賴的資料來源,確保它們提供固定值,以便區塊鏈可以確定性地處理匯率。 預言機應該從第一天起就被設計到區塊鏈解決方案中,以後不應該新增。 Hyperledger Fabric 和 IBM Blockchain Platform 本質上是安全的。 為確保全面的安全性,謹慎的做法是使用 IBM Secure Service Containerfor IBM Cloud Private,這是一種軟體解決方案,用於在 IBM LinuxOne 和 IBM Z 伺服器上託管基於容器的應用程式,用於混合雲和私有雲工作負載。 這種適用於基於微服務的應用程式的安全計算環境無需更改即可部署**,以利用安全功能,同時還提供:
安裝過程中的篡改保護、幫助防止濫用特權使用者憑據的有限管理員訪問許可權、自動加密動態和靜態資料,開發團隊還需要了解聯邦資訊處理標準 (FIPS)。。這套標準描述了許多文件處理、加密演算法和其他資訊科技標準,這些標準可以在非軍事機構內部以及承包商和與之合作的承包商使用。 FIPS 的 140 系列是美國**安全標準,它規定了加密模組的要求。 截至 2016 年 12 月,該標準的當前版本為 FIPS 140-2,於 2001 年 5 月 25 日發布。 其繼任者 FIPS 140-3 於 2019 年 9 月 22 日生效。
安全級別 4 提供最高階別的安全性。 在此安全級別下,物理安全機制在加密模組周圍提供完整的保護信封,旨在檢測和響應所有未經授權的物理訪問嘗試。 很有可能檢測到從任何方向滲透加密模組外殼,從而導致立即刪除所有純文字關鍵安全引數 (CSP)。
顯然,安全性是開發團隊第乙個商業區塊鏈應用程式成功與失敗的區別。 雖然很少有開發團隊需要全面的大型機安全性,但了解 IBM LinuxOne 和 IBM Z 伺服器提供的安全解決方案仍然很有用。
Hyperledger Fabric 和 IBM Blockchain(例如 Kafka 和 Raft)中的排序服務提供容錯服務,因為典型的區塊鏈實現是分布式的,需要防止故障。
但是,如果乙個或多個不懷好意的人滲透到業務網路中,會發生什麼? 畢竟,該網路由許多合作組織組成,其中乙個組織可能會突然被流氓所有者接管,而流氓所有者可能會試圖接管整個區塊鏈。
對於這種情況,實用拜占庭容錯 (PBFT) 目前可用。 但唯一的問題是,對於許可的區塊鏈系統來說,PBFT可能是資源密集型的,導致過度勞累。 換句話說,PBFT不一定是解決流氓團夥接管區塊鏈聯盟問題的最有效方法。 顧名思義,許可的區塊鏈系統受法律法規保護,如果違反這些法律法規,最好在法庭上進行補救,而不是採用資源密集型技術解決方案。 這就是 Hyperledger Fabric 尚不支援 PBFT 的原因。
使用 Hyperledger Fabric 和 VS Code 擴充套件開發區塊鏈應用程式簡單明瞭。 啟動 Hyperledger Fabric 例項並在區塊鏈上執行鏈碼很容易; 唯一的限制是區塊鏈將在您自己的硬體上執行,而不是在雲中執行。
要在雲中執行,您可以使用 IBM Blockchain Platform,這是乙個基於雲的平台,用於在 IBM、AWS 和其他雲中建立和執行區塊鏈企業應用程式。 (點選此處了解詳情。 在當今的混合雲環境中,能夠在多個雲中執行至關重要,有時甚至同時執行。 最終,大多數區塊鏈應用程式將在乙個或多個雲中執行。 如圖 3 所示,IBM Blockchain Platform 控制台使啟動企業區塊鏈應用程式變得容易。
圖3IBM Blockchain Platform 控制台
此外,IBM Cloud 中的 IBM Blockchain Platform 具有豐富的架構,可以輕鬆建立高階企業應用程式(參見圖 4)。
圖4IBM Blockchain Platform 架構
區塊鏈是過去十年中出現的最令人興奮和最有前途的新技術之一。 世界各地的開發人員都在忙於學習習區塊鏈,並將其應用於解決他們感興趣的問題。 借助 Hyperledger Fabric 和帶有 Blockchain vs Code 擴充套件的 Visual Studio Code,無需付費即可輕鬆開始編寫區塊鏈應用程式。
成功的關鍵是了解您的領域,利用現有的用例,並學習習區塊鏈程式設計模型。 開始的方法是複製現有的開源應用程式,例如區塊鏈 bean,然後在現有庫之上進行連續更改。
從業務和組織方面對新的區塊鏈專案有很好的理解也很重要。 當然,您需要一位具有密碼學和安全技能的架構師,以及一些程式設計師、領域專家和業務專家。 歸根結底,你應該避免對區塊鏈過於熱情,而是專注於編寫真正為你的第乙個客戶創造價值的應用程式。 如今,幾乎可以肯定的是,您會在**連鎖細分市場中找到您的客戶。
您還應該確保閱讀優秀的 Hyperledger Fabric 文件。 這九個最佳實踐可以幫助您和您的團隊在開發第乙個官方區塊鏈應用程式時入門並避免走錯路。 剩下的就看你了。