在本篇文章中,我將會以一種讓任何擁有哪怕一點點技術經驗的人都能理解的方式,來試著解釋 Substrate 區塊鏈框架。
你也許已經聽說過Substrate是一個用來搭建區塊鏈的可擴展的、模塊化的以及開源的框架。但這到底是什么意思呢?
Substrate提供了搭建一個分布式區塊鏈網絡所需的全部核心組件:
數據庫
網絡連接
交易隊列
共識
雖然這些層級是可擴展的,Substrate 通常假定一般的區塊鏈開發人員不應該關心這些核心組件的具體實現細節。反之,Substrate 的核心理念是使一個區塊鏈的狀態轉換功能的開發盡可能的靈活和簡便。該層級被稱為 Substrate 的運行環境然而在我們詳細了解所有這些細節之前,首先需要達成一個關于 “區塊鏈是什么” 的共識。
什么是區塊鏈?
從最基本的形式來看,區塊鏈是一個簡單的數據結構,其中數據的區塊聯結在一起形成一個有序的鏈。區塊鏈的具體細節因鏈的功能性不同而有所差異。然而,總的來說,所有區塊鏈應該擁有一些共同的屬性。
區塊
區塊鏈中每個區塊都擁有一些能夠被用來生成一個對應該區塊唯一識別符的數據。這些數據的其中一部分是前一個區塊,即 “父塊” 的唯一識別符。由于每個區塊都有一個指示器連接它的父塊,所有的區塊都能以一個確定性的方式有序排列。
任何單一區塊內數據的細微變化將更改它的唯一ID。由于該區塊的ID被更改,在其后生成的區塊(子區塊)將也被更改。下一個子區塊也同樣,以及接下來的一個,再下一個。..。.. 事實上,所有在被改進的原始區塊之后生成的區塊將必須更改它們的唯一ID以維持整條鏈的穩定。這意味著通過簡單檢查鏈上最后一個區塊的唯一識別符便能夠輕松驗證兩條區塊鏈是否擁有完全相同的數據。
區塊的生成
因為這些特性,區塊鏈系統被普遍用于記錄一個共享分類賬。該分類賬的內容并非通過更改一個現有的區塊來更改,而是根據有關如何在塊與塊之間更改分類賬狀態的指令說明,通過向區塊鏈中添加新的區塊來進行更改。這些指令通常被稱為交易。
通常存在與分類賬如何進行更改相關的規則,這些規則由一個狀態轉換功能來定義。對于加密貨幣系統來說,這些規則非常簡單。例如:
規則:用戶只能花費他們自己的資金。
這些規則也可以更加復雜,甚至允許區塊鏈系統作為一個圖靈完備的計算機,同時分類賬作為該臺計算機的存儲。
一旦收集到一組有效的交易,它們將會被放入一個區塊內,然后將該區塊置于鏈的末端。這一區塊生成的過程允許區塊鏈的潛在狀態隨時間變化。
區塊的最終確認
現在一個新的區塊已經被生成了,它可以與其他趨于搭建相同共享分類賬的區塊共享數據。然而,由于區塊鏈本質上是去中心化的,有時候會出現兩個有差異卻仍舊有效的區塊在鏈的末端競爭同一個位置的情況。不同的區塊的最終確認機制能夠被用來決定哪些區塊所屬的鏈是規范化的區塊鏈。對于任何現有的區塊鏈,共享分類賬的真實最終狀態應該只有一個。任何區塊鏈的可替代狀態都被稱為“分叉”。
分叉是正常的、可預期的,且一般來說不是威脅。區塊的最終確認過程旨在幫助非標準化鏈重新同步。我們將會在本文后半部分繼續講解分叉的內容。
節點
到了現在,你應該能夠了解到區塊鏈具有分布式和去中心化的特點。你希望全世界的多樣化用戶無需第三方中介機構便能夠記錄這一共享分類賬。通過遵循以上的規則,每個該共享分類賬的參與者能夠運行一個節點。該節點是一個遵循區塊鏈網絡規則,并與其它有著相同目的的節點相連接的計算機程序。所有的節點都無需中心化服務。
區塊鏈系統通常是 “開源” 的系統,這意味著任何人都能夠參與。為了阻止惡意行為者,激勵良好行為并懲罰不良行為的機制被建立。伴隨著以上這些機制的就位,一個區塊鏈系統將成為一臺不可阻擋的機器。
Substrate 組件
現在你有了一個對區塊鏈是什么的更高層級的認識,我們可以開始了解 Substrate 是如何作為一個框架來進行搭建工作的。對于 Substrate 框架的第一個解釋是可擴展性。這意味著它對如何設計區塊鏈做了盡可能少的假設,并試圖盡可能變得通用化。
數據庫
就像我們曾梳理的那樣,區塊鏈的核心是它的共享分類賬,必須對其進行維護和存儲。Substrate 不對區塊鏈中數據的內容或結構做出任何假設。底層的數據庫使用簡單的鍵值存儲,并在其上實現了改進的 Patricia Merkle tree (trie)。這一特殊的存儲結構使我們可以輕松地驗證某元素是否在該存儲中。這對支持輕量級客戶端特別重要,輕量級客戶端將依據這些存儲證明與區塊鏈網絡進行輕量級但去信任的交互。
網絡連接
為了去中心化的區塊鏈系統能夠通信,需要搭建一個點對點的網絡連接協議。Substrate 使用 libp2p 作為模塊化的點對點網絡連接堆棧。通過這一網絡連接層,基于 Substrate 的區塊鏈能夠共享交易、區塊、節點以及其他系統的關鍵細節而無需中心化的服務器。
遵循 Substrate 的理念,libp2p 的獨特性在于它對任何特定的網絡協議不帶任何假設。因此,你能夠在基于 Substrate 的區塊鏈上實現及使用不同的協議。
如上所述,交易被收集、形成區塊,并最終定義了區塊鏈狀態的變化。然而,這些交易的順序會對分類賬的最終狀態造成影響。Substrate 使你能夠全權控制網絡中交易的獨立性和隊列管理。Substrate 只假定一筆交易具有權重和一組用于創建從屬關系圖表的先決條件標簽。這些從屬關系圖表在最簡單的情況下是線性的,但它們也可能變得更復雜。Substrate 將自動為你處理這些復雜的從屬關系。
共識
區塊鏈網絡可以通過不同的方式依據鏈的變化達成共識。傳統意義上,這些共識引擎與其它區塊鏈組件緊密耦合。然而,Substrate 花費了額外的精力設計了一個能夠在開發期間輕松更改的共識層。實際上,該設計的最終目的是在鏈上線后能夠進行共識的熱交換!Substrate 中內建了多種不同的共識引擎比如傳統的工作證明機制(POW),Aura (Authority Round),以及 Polkadot 共識。它的獨特性在于將區塊的生成過程(BABE)與區塊的終結過程(GRANDPA)區分開來。
Substrate 運行環境
目前為止,我們已經講解了所有 Substrate 能夠提供的所有核心區塊鏈組件。正如你曾讀到的那樣,Substrate 已經為保持通用性和可擴展性竭盡所能。然而,可以說 Substrate 最能體現其定制化特點的部分是它的模塊化運行環境。運行環境指的是早先提到的 Substrate 的狀態轉換功能。
Substrate 相信一般的區塊鏈開發人員不需要對以上列出的區塊鏈組件關心得太多。只要這些組件久經沙場且可以投入生產,實現過程的細節常常就沒那么重要了。然而,決定一個網絡中的內容是否有效的區塊鏈的核心邏輯對于任何鏈來說通常都是相當重要的。
因此,Substrate 的核心理念是使得區塊鏈運行的開發盡可能的靈活和簡易。
Substrate Runtime Module Library (SRML)
一個區塊鏈的運行環境可被分為不同的邏輯化組件,它們被稱為運行模塊。這些模塊將控制區塊鏈管理的鏈上邏輯的某些部分。你可以將這些模塊想象成你系統中的“插件”。作為一名 Substrate 開發者,你可以挑選你希望加入鏈中的模塊和功能。
比如,有個叫做“余額”的模塊管理著鏈上的貨幣。同時也有一組模塊比如“收集”、“民主”以及“選舉”處理著鏈上的決策和治理過程。甚至還有一個被稱為“合約”的模塊能夠將任何基于 Substrate 的鏈轉到一個智能合約平臺中。當你在 Substrate 上搭建時,將自動為你提供這些模塊。
然而,你并不局限于使用 Substrate 提供的模塊。事實上,開發者們可以輕松地搭建他們自己的運行模塊,將其作為獨立的邏輯化組件,甚至能夠與其他運行模塊直接進行交互以構建更復雜的邏輯。我們相信長此以往,Substrate 中的模塊系統將會變得更像一個“應用商店”,用戶在其中可以輕松的挑選想囊括的功能,并以入門級的技術知識部署分布式區塊鏈網絡!
無分叉的運行更新
如果我們遵循 Substrate 模塊化生態系統與應用商店的類比,那么我們還必須解決如何更新運行環境的問題。無論是漏洞修復,現有模塊的常規改進,甚至是添加區塊鏈的新功能,Substrate已經具備了一流的更改運行環境的能力。
然而,鏈上狀態轉換功能的更改也會影響網絡的共識。如果運行在網絡中的某個節點具有一個版本的運行邏輯,同時另一個節點擁有另一個不同的版本的運行邏輯,那么這兩個節點將無法達成共識。它們將從根本上否決分布賬的真實狀態,導致產生我們之前定義過的分叉的結果。這些不可協調的分叉會降低網絡的安全性從而造成很壞的影響,導致只有一部分的節點會正確地生成和驗證新區塊。
Substrate 已經通過讓網絡就運行邏輯本身達成共識的方式解決了這個問題!通過使用 Wasm 二進制格式,我們能夠將 Substrate 運行代碼作為共享分類賬的一部分放在區塊鏈上。這意味著任何運行一個節點的人都能夠驗證他們的節點是否擁有最新的邏輯。如果沒有,鏈上的 Wasm 將會被直接執行!這意味著你的區塊鏈的運行環境將能夠在即時網絡上實時更新,避免了產生分叉的風險!
Substrate 秉承著靈活性的精神,使你根本無需手動啟動此功能。如果你想要禁用鏈上升級,你也可以做到。事實上,Substrate 將預先為你提供你的鏈所需的全部工具。
免費和開源
Substrate 是一個完全免費且開源的項目。它通過使用 Rust 編程語言來搭建,該語言旨在幫助開發快速和固有安全性的軟件。Substrate 的協調和開發通過 Github 和 Riot 等公共社區的超過100多位個人貢獻者的幫助來進行。
Substrate 是 Polkadot 中孵化出的項目,Polkadot 是一個擁有許多可互操作區塊鏈的更廣闊的世界愿景。Substrate 除了能夠幫助大多數成熟的鏈連接到 Polkadot 上之外,還賦予了生產級區塊鏈項目連接到該網絡的能力。當 Polkadot 主網啟動,你將因支持你的區塊鏈的技術與為其他多種生產級區塊鏈賦能的技術一致而感到安心。
Substrate 旨在成為區塊鏈革新者的無可反駁的最佳平臺和任何考慮搭建一個區塊鏈網絡的人的必然選擇。
總結
此時此刻,我希望你能夠明白為什么我們說 Substrate 是一個搭建區塊鏈系統的可擴展的、模塊化的以及開源的平臺。Substrate 開發過程中的每個時點都以保持通用性為首要前提。因此,Substrate 將作為一個平臺被用于構建未來的技術,甚至是還從未被提及的那些。
責任編輯;zl
評論
查看更多