如何做到十五分鐘開發一條區塊鏈?

爲什麼你開發一條鏈總是很慢很困難?

很可能是因爲你不懂 Substrate !

話不多說,今天這篇文章,我們將會以一種讓任何擁有哪怕一點點技術經驗的人都能理解的方式,來試着解釋 Substrate 區塊鏈框架。

Substrate 是一個用來搭建區塊鏈的可擴展的、模塊化的以及開源的框架。但這到底是什麼意思呢?Substrate 提供了搭建一個分佈式區塊鏈網絡所需的全部核心組件:

  • 數據庫
  • 網絡連接
  • 交易隊列
  • 共識

雖然這些層級是可擴展的,Substrate 通常假定一般的區塊鏈開發人員不應該關心這些核心組件的具體實現細節。反之,Substrate 的核心理念是使一個區塊鏈的狀態轉換功能的開發儘可能的靈活和簡便。該層級被稱爲 Substrate 的運行環境。

然而在我們詳細瞭解所有這些細節之前,首先需要達成一個關於 “區塊鏈是什麼” 的共識 ……

01

「什麼是區塊鏈?」

從最基本的形式來看,區塊鏈是一個簡單的數據結構,其中數據的區塊聯結在一起形成一個有序的鏈。區塊鏈的具體細節因鏈的功能性不同而有所差異。然而,總的來說,所有區塊鏈應該擁有一些共同的屬性。

區塊

區塊鏈中每個區塊都擁有一些能夠被用來生成一個對應該區塊唯一識別符的數據。這些數據的其中一部分是前一個區塊,即 “父塊” 的唯一識別符。由於每個區塊都有一個指示器連接它的父塊,所有的區塊都能以一個確定性的方式有序排列。

如何做到十五分鐘開發一條區塊鏈?
任何單一區塊內數據的細微變化將更改它的唯一 ID。由於該區塊的 ID 被更改,在其後生成的區塊(子區塊)將也被更改。下一個子區塊也同樣,以及接下來的一個,再下一個 ……
事實上,所有在被改進的原始區塊之後生成的區塊將必須更改它們的唯一 ID 以維持整條鏈的穩定。這意味着通過簡單檢查鏈上最後一個區塊的唯一識別符便能夠輕鬆驗證兩條區塊鏈是否擁有完全相同的數據。

學習更多關於區塊鏈的基礎內容,請訪問演示 / 視頻地址:https://anders.com/blockchain/

區塊的生成

因爲這些特性,區塊鏈系統被普遍用於記錄一個共享分類賬。該分類賬的內容並非通過更改一個現有的區塊來更改,而是根據有關如何在塊與塊之間更改分類賬狀態的指令說明,通過向區塊鏈中添加新的區塊來進行更改。這些指令通常被稱爲交易如何做到十五分鐘開發一條區塊鏈?
通常存在與分類賬如何進行更改相關的規則,這些規則由一個狀態轉換功能來定義。對於加密貨幣系統來說,這些規則非常簡單。例如:

規則:用戶只能花費他們自己的資金。

這些規則也可以更加複雜,甚至允許區塊鏈系統作爲一個圖靈完備的計算機,同時分類賬作爲該臺計算機的存儲。

一旦收集到一組有效的交易,它們將會被放入一個區塊內,然後將該區塊置於鏈的末端。這一區塊生成的過程允許區塊鏈的潛在狀態隨時間變化。

區塊的最終確認

現在一個新的區塊已經被生成了,它可以與其他趨於搭建相同共享分類賬的區塊共享數據。然而,由於區塊鏈本質上是去中心化的,有時候會出現兩個有差異卻仍舊有效的區塊在鏈的末端競爭同一個位置的情況。
不同的區塊的最終確認機制能夠被用來決定哪些區塊所屬的鏈是規範化的區塊鏈。對於任何現有的區塊鏈,共享分類賬的真實最終狀態應該只有一個。任何區塊鏈的可替代狀態都被稱爲“分叉”。
如何做到十五分鐘開發一條區塊鏈?
分叉是正常的、可預期的,且一般來說不是威脅。區塊的最終確認過程旨在幫助非標準化鏈重新同步。我們將會在本文後半部分繼續講解分叉的內容。

節點

到了現在,你應該能夠了解到區塊鏈具有分佈式和去中心化的特點。你希望全世界的多樣化用戶無需第三方中介機構便能夠記錄這一共享分類賬。通過遵循以上的規則,每個該共享分類賬的參與者能夠運行一個節點。
該節點是一個遵循區塊鏈網絡規則,並與其它有着相同目的的節點相連接的計算機程序。所有的節點都無需中心化服務。

區塊鏈系統通常是 “開源” 的系統,這意味着任何人都能夠參與。爲了阻止惡意行爲者,激勵良好行爲並懲罰不良行爲的機制被建立。伴隨着以上這些機制的就位,一個區塊鏈系統將成爲一臺不可阻擋的機器。

02

「 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)區分開來。

03

「 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 將預先爲你提供你的鏈所需的全部工具。

04

「 免費和開源 」

Substrate 是一個完全免費且開源的項目。它通過使用 Rust 編程語言來搭建,該語言旨在幫助開發快速和固有安全性的軟件。Substrate 的協調和開發通過 Github 和 Riot 等公共社區的超過 100 多位個人貢獻者的幫助來進行。

Substrate 是 Polkadot 中孵化出的項目,Polkadot 是一個擁有許多可互操作區塊鏈的更廣闊的世界願景。Substrate 除了能夠幫助大多數成熟的鏈連接到 Polkadot 上之外,還賦予了生產級區塊鏈項目連接到該網絡的能力。
當 Polkadot 主網啓動,你將因支持你的區塊鏈的技術與爲其他多種生產級區塊鏈賦能的技術一致而感到安心。

Substrate 旨在成爲區塊鏈革新者的無可反駁的最佳平臺和任何考慮搭建一個區塊鏈網絡的人的必然選擇。

05

「 總結 」

此時此刻,我希望你已經理解了我們說 Substrate 是一個搭建區塊鏈系統的可擴展的、模塊化的以及開源的平臺。 Substrate 開發過程中的每個時點都以保持通用性爲首要前提。因此,Substrate 將作爲一個平臺被用於構建未來的技術,甚至是還從未被提及的那些。

基於此,我們想要給希望進一步深造和系統學習 Substrate 開發的同學更多的可能性,所以想要爲你推薦一門課程——《Substrate 快速入門與開發實戰》

這門課程是由一塊鏈習聯合擁有着多年的全棧開發經驗,爲 Substrate、Polkadot 貢獻代碼的 Polkadot 社區大使陳錫亮老師,歷時 6 個月打造的全球第一份 Substrate 開發者的實戰指南,期望能幫助更多區塊鏈開發者完成入門。

這門課程第 3 期將在 3 周後(12 月 15 日)開班,原價 1699 元,現在報名早鳥價 1499! 活動將在本週日截止!加入第三期課程學習,並且按時完成所有作業,即 可獲得一半學費返還!目前所剩的名額不多啦,若同學有意向報名學習課程,趕快掃描下方圖片二維碼前去搶座吧!

如何做到十五分鐘開發一條區塊鏈?

如果你還想再瞭解下這門課程,那不妨再爲你介紹幾個關鍵信息。
1 這門課程具體講什麼?

這門課程中,陳錫亮老師將結合自己多年的研究成果教給你:

  • 共識,終結性和區塊投票邏輯。即使你並不是在構建一個密碼貨幣,這也是可取的,這意味着你可以免費獲得拜占庭容錯共識。因此,即使系統中的部分節點被攻破了,或者轉爲了惡意節點,系統也能夠繼續正常工作;

  • 一個高效的、確定性的沙盒 WebAssembly runtime (應用的運行環境)。它可用於運行智能合約,甚至運行其它基於 Substrate 的項目。你不需要使用 WebAssembly,當然,你也可以編寫自己的虛擬機解釋器,但 Polkadot 團隊堅信使用 WebAssembly runtime 的好處,這樣做你就可以利用全球開發社區爲其創建的各種工具;

  • 能夠在瀏覽器中無縫運行節點,它可與任何桌面或雲節點進行通信

  • 跨平臺的數據庫和文件存儲抽象,甚至它可以在瀏覽器中運作 ;

  • 無縫客戶端更新,任何可能影響共識的更新,都是通過將代碼編譯到 WebAssembly,並將其部署爲網絡上的另一條消息來處理的。不僅如此,你還可以存儲自己希望的多版本的共識代碼,並且 Substrate 將處理相關複雜性,確保正在執行的本機代碼與當前部署的 WebAssembly 代碼保持一致。

  • 當 Polkadot 網絡正式上線時,你可以立即將自己的項目與 Polkadot 網絡無縫對接。

除此之外,更爲重要的是:在每一章節的課程學習之後,我們都有給到你相應的練習,幫你內化知識。如下:

如何做到十五分鐘開發一條區塊鏈?

學以致用,纔是最好的學習方式,對於編程來說,更是如此。
2

課程導師是誰?

如何做到十五分鐘開發一條區塊鏈?

陳錫亮,Laminar CTO,Polkadot 社區大使,Substrate & Polkadot 代碼貢獻者。陳錫亮老師擁有着多年的全棧開發經驗,同時也是 Substrate、Polkadot 的代碼貢獻者以及 Polkadot 的社區大使,曾負責參與其項目的設計與開發。擁有豐富的 Substrate 使用經驗,非常理解開發者即將要面對的問題及需求。 在這門課程裏,他將結合自己多年的研究成果,深入淺出地爲你講解 Substrate 開發核心開發知識和典型應用,繼而幫你從源頭理解如何創建自定義 Substrate 鏈並利用 Substrate 實戰開發出一個可產品化的區塊鏈項目。 3

這門課程你能獲得什麼?

《substrate 快速入門與開發實戰》視頻課將基於最新的技術,一切從實踐出發。 開始學習之前,需要你最好已經掌握 Rust 的基礎語法,會編寫一些簡單的 Rust 程序 , 整個課程老師會帶你從 0 開始,完整地搭建一個包含全部常用功能的 Substrate 開發產品 。 在這個過程中,不但會和你交流最基礎的系統級實現,還會幫助你從工程的角度理解流行的開源項目解決的問題、或者在實際工程中遇到的關鍵技術選型,使我們從工程的角度,重新理解 Substrate 整個體系的開發。 我們首先會讓從 Substrate、Polkadot 生態圈講起,讓你瞭解及 Substrate 底層代碼實現,學會如何利用 Substrate 開發一個可產品化的區塊鏈項目。 之後會帶你瞭解 並且掌握 Polkadot.js SDK 使用與前端項目開發的能力,掌握如何設計與完善區塊鏈項目的相關技巧,可以讓你對整個 Substrate 開發的生態有全面的瞭解。 最後,你還可以通過這門課程結識全球第一批對 Substrate 技術充滿熱情對工程師。

學完這門課程之後,你將能夠系統性的串聯起瑣碎的知識點,對面向 Substrate 的開發有一個基本的認識,快速的上手實現完整的可產品化的區塊鏈項目。

同時我會幫你梳理產品中的主要模塊,迅速理解在工作中實際項目的代碼結構,快速構建產品體系。

我們產出這門課程內容的核心目的只有一個:深入淺出地爲你講解 Substrate 開發核心開發知識和典型應用,繼而幫你從源頭理解如何創建自定義 Substrate 鏈並利用 Substrate 實戰開發出一個可產品化的區塊鏈項目。

4

課程適合人羣

本門課程重在強實操,因此適合以下五類人羣:

  • 區塊鏈技術開發者 | 2 年以上經驗互聯網開發者「入 學 必 備 技 能」

  • 系統學習時間過一門編程語言 「入 學 必 備 技 能」

以推薦度排名:Rust, C++, Swift, C, Javascript, Go, Scala, OCaml, Java

  • *對 Unix 命令行基本瞭解 「入 學 必 備 技 能」 *

  • 基本的 Web 開發知識 (瞭解)

  • 基本區塊鏈知識(瞭解)

5
學習方式

一如既往,採用一塊鏈習“魔鬼訓練營”方式。 會以班級的形式來進行管理,全程講師帶班、助教批改作業以及每週一次班會點評,嚴防偷懶,同時也可以和同學間產生更多互動+討論,確保你更高效的完成學習! 你要知道,這門僅售價 1499 元的課程,也配有“魔鬼訓練營”意味着什麼。 那就等於史上·無敵·超級·真·優惠。
6

課程學習週期

12 月 5 日-1 月 19 日,正常學習週期在 5 周左右,12 個月課程有效期內可無限重複觀看。 好啦,關於課程的介紹就到此爲止了。如果你看到了這裏,可能就要抓點緊了,畢竟第 3 期課程也就開放 50 個名額,現在也許名額已然不多了!趕快掃描下方圖片二維碼,前去報名吧!

如何做到十五分鐘開發一條區塊鏈?

翻譯者:Silvia (PolkaWorld 超級探員)原文:https://www.parity.io/hello-substrate/ 轉載自:Polkaworld

更多閱讀:2020 年編程語言趨勢解讀:編程世界之未來握於誰手 ?
如何做到十五分鐘開發一條區塊鏈?