Substrate 入門必讀:助力开發者打造強大、靈活的區塊鏈

2024-04-11 17:04:56

原文:https://medium.com/@brunopgalvao/substrate-cfeb13333f2c

作者:Bruno Galvao

編譯:OneBlock+

Substrate 是一個基於 Rust 的區塊鏈开發框架。

Substrate:一個區塊鏈組件的遊樂場

Substrate 具有相當大的可塑性。本文中的圖表靈感來自荷蘭藝術家皮埃特·蒙德裏安(Piet Mondrian)的作品。蒙德裏安以創立新造型主義藝術運動而聞名。新造型主義以抽象的幾何形態和原色為特徵。它將視覺元素簡化為形式和色彩的基本特徵,摒棄了象徵性的聯系,以達到純粹、普遍的視覺和諧表達

Substrate 基本介紹

Substrate 代碼的位置在 Polkadot SDK 存儲庫中:

Substrate 是一個用於構建區塊鏈的 Rust 語言框架,目前已經有 100 多個基於 Substrate 的區塊鏈在开發構建中運行

,時長27:15

以上視頻是本文的簡短版本。你可以查看 sub0 Asia 2024 中關於 Substrate 的演講介紹。

什么是 Substrate?

在 Parity Technologies 擔任 Substrate 开發人員兩年後,我對 Substrate 的定義是:

Substrate 是一個开源、經過實战考驗的 Rust 框架,用於構建針對大多數用例進行優化的具有未來潛力的區塊鏈——這是一個由开發者為开發者而構建的框架。

為什么需要區塊鏈框架?

為了回答這個問題,讓我們探討一下 Substrate 的原始創作者的歷史:Parity Technologies —— Polkadot 背後的开發工程公司。

當 Parity Technologies 开始構建 Polkadot 網絡時,當時構建區塊鏈的典型方法要么是分叉現有的區塊鏈(如 Ethereum),要么是從頭开始編寫自己的區塊鏈。Parity 的工程創始人想要構建一條沒有 Ethereum 約束的創新鏈,因此他們开始從頭構建 Polkadot。

構建 Polkadot 並不是他們的第一次嘗試。早期,Parity 創建了一款熱門的 Ethereum 客戶端以及一款 Bitcoin 客戶端——這些是生產級的區塊鏈節點。所以可以說,Parity 在創建區塊鏈方面擁有豐富的开發知識

隨着項目的發展,他們發現構建 Polkadot 網絡所涉及的幾個組件可以重新使用來構建其他區塊鏈。這些組件包括網絡、存儲、交易池和共識等。這些組件在大多數區塊鏈中都很常見,不應該從頭开始構建。Parity 相信未來將是多鏈的,Polkadot 作為一個 Layer0 區塊鏈,在上面可以部署其他鏈,在此基礎上繼承 Polkadot 數十億美元的安全性,並與 Polkadot 網絡上部署的其他鏈無縫交互。未來是多鏈的未來,以及可以相互進行安全、互操作的專門化區塊鏈,這種情況下就需要一個區塊鏈框架。

Polkadot 的簡要歷史

當時 Polkadot 的想法來自 Ethereum 的首席技術官——Dr. Gavin Wood。在分支出去創建 Polkadot 之前,Gavin 是 Ethereum 的首席技術官兼聯合創始人。他幫助設計和構建了 Ethereum 並創造了 Solidity 編程語言。根據他的說法,Ethereum 是作為一個原型構建的——這也解釋了為什么我們現在看到協議中存在一些固有問題,如可擴展性問題、高昂的 gas 費用、慢速的升級等。Gavin 有一個愿景;他想要將協議提升到下一個層次。但由於 Ethereum 的限制,下一個迭代版本必須單獨構建,因此他從 Ethereum 分支出去,創建了 Parity Technologies,並开始了 Polkadot 的工作。

在某種程度上,Bitcoin 是 Ethereum 的概念驗證。類似地,也可以說 Ethereum 是 Polkadot 的概念驗證

現在讓我們回到 Substrate 通用區塊鏈框架。

Substrate 吸取了我們在構建 Ethereum 和 Polkadot 過程中的所有經驗教訓,並將其提煉為一組工具,允許您免費獲得所有這些獎勵。

——Dr. Gavin Wood

當 Parity 工程師开始構建 Polkadot 時,他們將構建和運行區塊鏈涉及的所有組件放入了這個框架所开始的地方 — Substrate。

Substrate 是“一組庫,用於完成編寫區塊鏈時真正令人煩惱的所有事情。”

——Robert Habermeier

Substrate 為开發者抽象出核心組件

從頭开始構建區塊鏈是困難且需要大量資源的,它成本高昂,需要時間,並且需要專門的知識:

  • 密碼學家

  • 安全研究員

  • 網絡工程師

  • Devops人員(協調更新)

  • 老練的工程師

以下是構建區塊鏈涉及的常見組件列表:

  • 存儲/數據庫

  • 網絡 — Peer discovery、區塊和交易傳播、RPC 服務器

  • 交易池

  • 共識 — 權益證明、授權證明、工作證明等

  • 密碼學原語

  • 區塊格式

  • 輕量級客戶端支持

Substrate 為开發者抽象出所有這些組件,但如果需要,可以通過 Rust 泛型(generics)、類型和特性進行定制。

通過將區塊鏈的核心通用功能抽象出來,开發者可以專注於區塊鏈最常見的創新功能 —— 狀態轉換函數(STF) — 即您的區塊鏈如何執行區塊的地方。在 Substrate 中,這被稱為 Substrate 區塊鏈的 runtime

Substrate runtime 是鏈的用例或應用邏輯。开發者可以在這裏定義鏈上的交易是做什么的,本質上就是他們的區塊鏈做什么。

如果开發者不必花費大量時間來弄清楚 P2P 交易傳播的內在細節或如何從頭編寫密碼學原語,而是可以利用這些時間來專注於他們區塊鏈的業務邏輯,那么开發者可以在更快的時間裏將創新的區塊鏈解決方案帶給世界。這就是 Substrate 的巨大作用。Substrate 為區塊鏈創新打开了全新的設計空間和潛力。

需要注意的是,如果您所在團隊的業務解決方案是提出一種新穎的共識算法(Substrate 的共識主要在節點端),那么您可以利用 Substrate 代碼的通用性來手動編寫自己的共識算法。AlephZero 就是這樣做的。他們有自定義的最終性(finality),基於 DAG,並且有一秒的區塊時間…所有這些都使用了 Substrate 框架。

然而,大多數區塊鏈的用例都是構建為 STF 邏輯。Substrate 允許使用 FRAME 更快(代碼更少)地編寫 STF 業務邏輯

FRAME

非正式定義:Substrate 框架內的框架。

正式定義:Modularized Entities 的 runtime 聚合框架(FRAME)。

本質上,它是用於構建 runtime 的 Substrate 內的框架。

Substrate 誕生於开發者在構建和優化區塊鏈時不應該重復造輪子的愿景之上,包括業務邏輯的常見方面。FRAME 包括以下內容

  • 具有業務邏輯的模塊(被稱之為 pallets)

  • 支持开發的支持庫

使用 FRAME,可以更快地構建 runtime。

這些 pallets 可以在 Polkadot SDK > Substrate > FRAME 中找到。Pallets 就是 runtime 的構建塊。Polkadot SDK 存儲庫已經預先構建了許多經過審查的 pallets,供开發者放入代碼庫並立即开始運行。

無分叉升級

Substrate runtime 被編譯為 WebAssembly(Wasm)並存儲在鏈的數據庫中。

因此,升級鏈是非常容易,只需要交換鏈上的 Wasm blob 就可以完成。當开發者使用 Substrate 構建時,由於這個特性,他們構建的鏈將會是未來可靠的鏈。

從頭开始設計的 Substrate 考慮到了無分叉升級(forkless upgrades)的概念。該 Wasm 被上傳,存儲在鏈上,並且是基於運行鏈的邏輯。數據庫用於存儲鏈的狀態,其中就包括 Wasm blob。

要更新鏈的邏輯,只需上傳一個新的 Wasm blob,所有節點都會自動與新的鏈邏輯同步。讓我們回顧一下通過傳統方式與 Substrate 方式升級鏈的流程。

通常情況下,傳統升級中會出現分叉

更新網絡 -> 傳統方式

通常,在非 Substrate 世界中,如果想要升級區塊鏈需要:

1. 修改區塊鏈代碼以引入新功能(或修復)

2. 運行節點必須替換二進制文件以運行新代碼

3. 沒有更新的節點將被拋在後面——通常需要長時間計劃協調節點升級

4. 根據代碼更改,網絡可能會永久分叉,創建兩個網絡

上面執行中需要注意的事項:

  • 網絡升級的決策通常發生在鏈下

  • 由於人工協調,需要很長時間來升級網絡

  • 網絡協議並非從頭开始構建以適應更新

更新網絡 -> Substrate 方式

而通過 Substrate 框架,則只需要:

1. 將新功能(或修復)添加到代碼中

2. 使用新代碼編譯的新 runtime 到 Wasm 中

3. 進行鏈上治理協議,對是否升級 runtime 進行投票

4. 如果鏈上治理投票通過,升級將無縫進行——所有連接到網絡的節點都會自動升級

上面執行中需要注意的事項:

  • 可信任的升級方式

  • 快速、可迭代、鏈上

  • Substrate 投票機制

通常情況下,在 Web3 精神中,我們不希望創建一個中心化的決策過程,其中決策是鏈下或限制於中心化實體。Substrate 具有許多預構建的 pallets,提供各種方式讓用戶可以在他們的鏈上進行決策。

去中心化治理

Substrate 提供了許多經過深思熟慮的治理邏輯,可供使用和配置。這是一個可選擇的功能,可以簡單地使用 pallet 集合和 pallet 成員身份來進行鏈的決策。

或者可以更進一步,將其與 pallet democracy 結合使用,為鏈上的投票/提案/公投系統提供更復雜的功能。通過良好的治理設置,諸如對下一次鏈升級進行投票之類的事情已經內置到鏈的協議中

https://wiki.polkadot.network/docs/learn-governance

上述是 Polkadot 稱之為“Governance V1”的示例。上述是由 Substrate FRAME 治理 pallets 構建的。

Substrate 的治理美妙之處在於,它是可迭代的,可以隨着時間的推移改進治理系統。Polkadot 就是這樣做的,它從 Governance V1 开始,現在已經迭代到使用 Substrate 的全新治理系統 OpenGov。幾個基於 Substrate 的鏈也效仿並升級了他們的鏈,以適應鏈上的 OpenGov 治理系統。

回顧一下,到目前為止,許多 Substrate 功能已經涵蓋在內。如果有人打算構建 L1 區塊鏈的話,這些功能本身足以成為使用 Substrate 的充分理由。但是,從商業角度來看,為什么應該考慮使用 Substrate?

為什么使用 Substrate?

一般性答案將會是:項目創始人和开發者可以相信他們的區塊鏈已經為未來做好了准備。他們可以專注於打造使他們的鏈獨特和創新的業務邏輯,並獲得靈活性、可升級性、开源許可和經過實战考驗的代碼等優勢。

通過 Substrate,开發人員可以完全控制他們想要構建的應用程序。开發人員可以從大量开源 pallet 和模板庫中選擇預定義的應用邏輯,以加快他們的开發時間。如果在當前庫中找不到所需的內容,那不是問題,反而是構建定制 pallet 的機會。

而我的答案會是,100+ 個基於 Substrate 的平行鏈正在運行中,這還不包括 Substrate 的獨立鏈(sola-chains)。

強大的技術和 Web3 精神在 Polkadot 中是無與倫比的,這種精神滲透到了 Substrate 框架中,例如復雜的鏈上治理、已經經歷了無數 runtime 升級的生產性 Substrate 鏈,以及緊密的、交織在一起的社區。GitHub 上的問題和甲流、PR、Substrate Stack Exchange 上都在進行技術討論,Polkadot 論壇則已經進行了更長的討論。

https://substrate.stackexchange.com

? 這是關於 Assets pallet 和 Balances pallet 之間區別的 Substrate Stack Exchange 討論:

https://substrate.stackexchange.com/questions/711/when-should-i-use-balances-pallet-and-when-should-i-use-assets-pallet

? 這是一個團隊討論如何構建快速 Substrate 區塊鏈以及需要什么的示例:

https://forum.polkadot.network/t/decentralized-futures-proposal-slap-simple-layer-for-accelerated-payments

良好的合作不止於在线討論,开發者也在全球各地的舉辦的多個活動中相遇,例如 Polkadot Decoded、sub0、Polkadot Summit(這是一個特殊的、僅限邀請的活動,生態系統構建者在其中對 Polkadot 提出反饋並幫助塑造其未來)以及 Polkadot Blockchain Academy 等。

如何开始?

注意上面的圖表。自定義 Substrate 節點,例如自定義共識算法,具有最復雜性;沒有使用 FRAME 構建區塊鏈則是第二復雜的。這兩者都可以使用 Substrate 的通用性進行構建,但學習曲线更陡峭。

最佳選擇是使用 FRAME 構建區塊鏈。然而,構建區塊鏈可能並不適合所有用例,在大多數用例中,編寫智能合約就足夠了。同時,使用智能合約實現業務用例的开發復雜度最低,並且可以在短時間內完成

更重要的是,Substrate 支持智能合約——一種特殊的智能合約:ink! 智能合約。使用 ink!,就可以使用 Rust 編寫合約邏輯。

? 了解 ink! 詳情:https://use.ink/

讓你的團隊精通 Rust 語言,通過編寫 ink! 智能合約來測試業務用例,獲得市場適應性,如果需要的話還可以擴展到 Substrate 區塊鏈,前提是你的團隊將已經通過使用 ink! 熟悉了 Substrate 和 Rust。

ink! 是一種嵌入式領域特定語言(eDSL)。編寫 ink! 智能合約就像塗抹黃油一樣簡易。ink! 智能合約編譯為 Wasm,因此與 Solidity 相比,性能得到了額外的提升。ink! Wasm 合約運行在一個名為 pallet contracts 的 Substrate pallet 上。因此,任何運行 pallet contracts 的基於 Substrate 的鏈都可以運行 ink! 智能合約。

在 Polkadot 上部署 ink! 智能合約

當你使用了 ink! 智能合約編寫了傑出的 Web3 用例,但是要將其部署到 Polkadot 上就需要 Pop Network,一種Polkadot 區塊鏈來進行連接。

通過使用 Pop Network,开發者可以使用 DOT 將 ink! 智能合約部署到 Pop Network。然後,從 Pop Network 开始構建,並通過 Polkadot 的互操作性特性與其他區塊鏈互操作。這是一種高度優化的、專為开發者設計的區塊鏈

ink! 智能合約开發者將能夠使用已知的 Rust 編程語言編寫他們的合約,並將它們部署到 Substrate 區塊鏈。這是一個新的方式來考慮以太坊智能合約編寫和部署的過程,提供了更大的控制權和性能優勢

如果你對這個過程感興趣,可以進一步研究 Substrate、ink! 和 Pop Network,這將為你提供更深入的了解,更好地理解如何構建區塊鏈以及如何利用現有的工具和技術來實現您的目標。

Substrate 入門課第 15 期

火熱招募中

在了解 Substrate 的獨特優勢和开發特性後,你是否也想开啓波卡生態的探索之旅?OneBlock+ 與 Parity 聯合开辦的 Substrate 入門課程第 15 期已經為你准備好了完整的學習路徑和專業指導!

第 15 期「Substrate 區塊鏈應用开發入門課」預計將於 5 月底开課,,其中包含 6 節錄播課,每周更新 1 節,課程周期將持續近 2 個月。課程押金 99 元,滿足畢業要求全額退還學費,優秀學員還將有機會獲得獎金池瓜分機會。

? 課程報名鏈接:https://meggd.xetlk.com/s/4bog52

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

btc日內再次下跌 短线應當如何處理?

盡管以太坊現貨ETF獲批是個好消息,但市場反應卻不如預期。在消息公布後,以太坊價格出現了小幅下跌,...

加密蓮
134 3個月前

7月23日、BTC(合約)ETH(合約)行情分析及操作策略

昨日收益還是不錯的,日內給出的現價空單分別止盈我們目標點位,恭喜跟上的朋友喫肉。時間一晃到月底了,...

倪老師
134 3個月前

幣圈院士:血與淚的教訓!交易者為何總是撞死在同一棵樹上?

幣圈院士談。交易市場中的幾種“死法” 在幣圈市場鱗次櫛比的海洋,風起雲湧,時常讓人感到驚手不及。在...

幣圈院士
139 3個月前

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...

168超神
131 3個月前

悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤

一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...

我是周悅盈
111 3個月前

btc完美盈利 晚間波動較大注意

昨日btc空單完美給到,最大化走出一千七百點空間~ btc: 日內开盤下跌繼續測試66000一线,...

加密蓮
121 3個月前