介紹了波卡和 Substrate 背後的核心概念,它們是如何形成的,以及它們對整個區塊鏈生態系統的意義。

原文標題:《總結|關於波卡和 Substrate 的一切》(A brief summary of everything Substrate and Polkadot)
撰文:Parity
翻譯:PolkaWorld 社區

在 Parity,我們目前主要專注開發三種技術:Parity Ethereum (Eth 1.0 和 Serenity),Parity Substrate 和 Web3 基金會的項目波卡(Polkadot) 。我們的最終目標是希望實現 Web3.0 的願景,即 「爲應用程序開發商提供組件的一套包容性協議。這些組件代替了 HTTP、AJAX 和 MySQL 等傳統 Web 技術,而提供了一種創建應用程序的全新方法。這些技術爲用戶正在接收的信息、正在發送的信息、正在支付的費用以及他們正在接收的回報,提供了強有力且可驗證的保證。通過授權用戶在低壁壘市場中自主行動,我們可以確保審查制度和壟斷地位難以插足(Gavin Wood)。」

想了解更多 Web3 的願景,請參閱 Gavin 在 2014 年的 原創博客文章 和在 2017 年的一篇 後續文章

到目前爲止,對於波卡和 Substrate 已經有了非常廣泛的知識庫。這篇文章將通過這些材料來深入瞭解這兩種技術的發展方向以及原因,同時還將展示以太坊(Ethereum)或 Zcash 等公鏈網絡是如何融入波卡和 Substrate。

起源

Gavin Wood 博士在 2016 年構思了波卡的最初想法,當時他正在等待一個新的以太坊規範,其中包括分片。早在那時,信標鏈 / 中繼鏈很顯然有必要去連接分片並協調信息傳遞。

關於波卡是如何誕生的一手信息,可以在 Epicenter 的第 259 集 中找到。

Gavin 再進一步考慮, 設想了一個系統,就是連接到中繼鏈的分片並不是完全一樣的,而是允許不同的節點運行不同的應用程序邏輯,使每條鏈都有自己的平臺。

這將增加整個系統的複雜性,並且更難以建立。但在 WebAssembly 中發現實現這一願景的關鍵缺失:通用和抽象的機器規範,它可以在不同 runtime (鏈的應用邏輯) 的鏈鏈之間進行調解。

創建一個區塊鏈可以共存和互補的系統,有可能克服鏈氾濫的問題,在這裏鏈之間互相競爭,爭當最好的區塊鏈。

如果一個分片系統中的所有分片都可以有不同的任務,那麼它們將能夠形成一個非常專業的分片(即區塊鏈)的局面,而不再像往常一樣,需要在專業區塊鏈和通用系統間做出取捨。讓我們更深入地瞭解一下這一點。

互操作性是專業化的關鍵

目前,很多區塊鏈試圖成爲 「首席大廚兼洗碗工」,將智能合約、貨幣、治理等所有內容都納入其中。如果你在其中這些區塊鏈上構建應用程序,將受到平臺的限制、瓶頸和治理決策的約束。另一方面,你也可能從這些區塊鏈的用戶基礎中受益。

通過讓專業鏈與其他專業鏈交換信息,我們能夠恢復網絡效應,而網絡效應通常被認爲會阻礙專業鏈的發展。

Polkadot 使用中繼鏈,來實現其生態系統中的區塊鏈之間的任意消息傳遞。中繼鏈的通用性足以讓相鄰的鏈(我們稱之爲平行鏈)擁有自己的應用邏輯。你可以自由使用任何語言(Rust、C / C ++、C#、Go 等)編寫平行鏈。你只需要實現波卡可以調用的特定功能的接口,來處理傳遞給鏈的消息。

波卡連接了從通用鏈到特定應用鏈的一系列區塊鏈,以創建支持更高級應用程序的平臺。一些利用跨鏈任意消息傳遞的此類高級應用程序的示例:

  • 將現實世界的數據上鍊的預言機(Oracle)服務
  • 在多個應用程序中鏈接用戶身份的身份管理系統
  • 去中心化交易所的 order books 和託管
  • 從其他網絡或控制器接收消息的物聯網(IoT)網絡
  • 跨鏈智能合約通話
  • 私有鏈和公有鏈之間的消息傳遞

可拓展性

當我們通過引入互操作性,解決專業化 vs 通用化的難題時,我們還消除了可拓展性(scalability)的瓶頸。除了交易吞吐量之外,完全通用的、獨立的智能合約平臺還存在交易衝突問題。因此,交易通常是按照順序運行,而不是並行運行。通過將任務委派給不同的平行鏈,我們能夠並行地運行交易,而不必擔心衝突。

跨鏈巨頭波卡即將上線,這裏有關於它的一切

在波卡的第一個版本中,有數十條區塊鏈可以並行運行,並通過一條中繼鏈連接。開發過程仍在進行中;我們目前估計中繼鏈將能夠承載大約 100 個平行鏈,但是我們也期待卡槽數量能夠在 1,000 到 10,000 個之間。如果幾十條區塊鏈可以並行運行,那麼該系統的可拓展性將是當前 PoS 系統的一百倍。

波卡的第二個版本可能有多箇中繼鏈連接到根中繼鏈(零級)。這是非常有可能的,因爲考慮到波卡中繼鏈本身是用 Substrate 開發的,大多數平行鏈也是使用相同的技術堆棧構建的。有了這些一級的中繼鏈,我們希望與當前 PoS 系統相比,擴展性能擴大到 1,000 倍至 10,000 倍。然而,最後的結果只能在以後進行評估。

安全角度

目前來看,克服單個區塊鏈設計的固有侷限性看起來是很有希望的,但是我們尚未討論這種系統中同步和共識的各個方面。波卡可以使確定性的、可理解的消息在平行鏈之間傳遞,但是如何確定整個網絡中的交易順序?如何在每個平行鏈以及整個系統中實現安全?乍一看,這似乎不是問題。如果連接不同的鏈,則每個鏈都有自己的驗證人節點來維持鏈的安全,就像衆所周知的多鏈場景(如側鏈或 Cosmos )一樣。

共享安全性

在代理兩個鏈時,首先想到的問題可能是以下場景。交易從一個 PoS 鏈發送到另一個 PoS 鏈。鏈 1 的最終性的經濟安全保障較弱。在攻擊中,交易被還原,包含它的區塊被放棄。鏈 1 位於不同的分叉中,相應的區塊不再包含此交易。

跨鏈巨頭波卡即將上線,這裏有關於它的一切

但是它的實際價值已經轉移到了鏈 B。鏈 1 的弱安全性直接影響了鏈 2。實際上,這樣就可能導致雙花攻擊。

想象一下,不是兩個,而是一百個相互連接的鏈,它們各自具有交換價值的安全級別。安全性最弱的鏈最終定義整個系統的安全性,代表最薄弱的環節。因此,最好讓所有平行鏈具有相同的安全保證。這可以通過共享安全並授權給波卡中繼鏈的來實現。

跨鏈巨頭波卡即將上線,這裏有關於它的一切波卡的安全模型將資源共享化,以解決網絡中最弱鏈問題

此外,每個驗證人只能投入一定數量的資源(PoW 中的計算能力或 PoS 中的財務權益),去加劇最弱鏈的問題。當驗證人開始保護不同的鏈時,某一部分鏈(首先是那些缺乏有吸引力的激勵結構的鏈)最終將獲得較低的經濟安全性,從而更容易成爲惡意行爲者的目標。

共享安全性的另一個好處是,不必尋找驗證人節點來保護你的區塊鏈,而是可以完全專注於鏈上的任務(比如 runtime ),將安全性的一部分交給波卡中繼鏈。

讓區塊鏈開發更容易

到目前爲止,我們已經瞭解到波卡是一種異構多鏈協議,可實現區塊鏈互操作性和平行鏈的共享安全性。現在我們來探索如何儘可能簡化平行鏈的實際開發,從而充分利用波卡的可能性。

當我們開始在 Parity 構建波卡時,我們意識到,我們正在重複已經爲以太坊和比特幣客戶端做過的大量開發工作,例如編寫 RPC 和數據庫組件。即使是最特殊的區塊鏈也具有一些共同點:哈希算法、數據庫、網絡等。

雖然單個區塊鏈的構想或設計是多功能性和專業性的衝突,但許多不同鏈的創建過程卻導致了另一種權衡。在具有同構分片的系統中,可以通過複製分片來拓展系統。對於波卡中的異構分片,每個分片都必須單獨設計和實現,從而使開發過程本身無法擴展。

Substrate: 一個高效構建不同區塊鏈的框架

爲了高效地構建許多不同的區塊鏈,Parity 開發人員將構建區塊鏈所需的所有功能都放入了叫 Substrate 的框架中。這個想法是在把所有在以太坊和比特幣開發過程中學到的東西,儘可能地用來簡單輕鬆地去創建一個區塊鏈。Substrate 是通過模塊化方式創建的,以提供技術自由,但也使諸如賬戶、餘額、治理和智能合約之類的功能像插入一個庫一樣容易。

用波卡聯合創始人 Robert Habermeier 的話說,「Substrate 是一組用於處理編寫區塊鏈時的所有煩人事情的庫。 」Substrate 有效地將區塊鏈的各個功能作分離爲模塊,並將它們進行足夠的概括,以便它們可以有效地用於不同的場景,而它們的可管理性使其能夠接近即時實現。Substrate 被開發用來創建區塊鏈,並將可以輕鬆的連接到波卡。

跨鏈巨頭波卡即將上線,這裏有關於它的一切30 分鐘內,在一個原裝出廠的筆記本電腦上開發出一條功能齊全的區塊鏈 —— Gavin Wood 博士在柏林 2018 Web3 峯會上演示 Substrate

專爲最大程度的技術自由和輕鬆而設計

Substrate 的多層架構讓開發人員可以在開發的方便性和技術的自由之間進行選擇。這三層分別是 Substrate Core (具有 Polkadot-Core 集成)、Substrate SRML 和 Substrate Node。

跨鏈巨頭波卡即將上線,這裏有關於它的一切開發者可自由選擇使用多少 Substrate 框架

要創建區塊鏈並將其連接到波卡,在技術層面上,你可以從頭開始構建自己的區塊鏈,並在 WebAssembly 中爲其配備區塊驗證功能。從頭開始意味着您必須實現自己的節點、RPC 同步、網絡、加密、數據庫、存儲、共識以及擴展功能,像輕客戶端和 telemetry 。這種簡單的方法被稱爲Polkadot Core

如果你不想從頭全部創建這些東西,你可以從Substrate Core開始。Substrate Core 爲你提供了上述所有功能,僅要求你編寫自己的 runtime 代碼(狀態轉換功能),而且還提供自定義網絡,區塊編寫和交易排序功能的可能性。

如果決定使用Substrate Runtime Module Library(SRML),那麼你要做的是從庫中選擇所需的模塊,並使用所需的參數進行配置。你的區塊鏈可以使用事件跟蹤和區塊鏈瀏覽器等工具。此外,如果需要你還可以修改現有模塊或編寫自己的模塊。

區塊鏈開發中,方便程度相當於客房服務的是Substrate Node。在 Substrate Node 上,你只需提供 JSON 配置文件即可獲得完整的智能合約區塊鏈。

Substrate 爲你提供了快速開發區塊鏈的工具,而無需處理每種功能背後的複雜性。

瞭解更多 Substrate 的信息。

Substrate 不是波卡

儘管 Substrate 可以爲波卡非常容易地構建區塊鏈,但波卡網絡中的區塊鏈不需要使用 Substrate 也可以。即使你不想把你的區塊鏈連接到波卡,你依然會發現 Substrate 是一個非常好用的框架,它可以用來創建最先進的區塊鏈。

在未來,可能會有一些對底層冗餘的框架,它們也經過優化與波卡集成,爲開發者提供了另一種選擇,或者你也可以從頭開始構建平行鏈。

有關波卡與 Substrate 如何關聯的更多信息,請觀看 Fabian Gompf 在 Devcon IV Parity&Polkadot; meetup 上的 演講

跨鏈巨頭波卡即將上線,這裏有關於它的一切

集成現有的區塊鏈

Substrate 和波卡不打算取代現有的基礎設施。相反,它們起到連接的作用,填補了工程可能性的空白。與基於智能合約的 dapp 相比,波卡平行鏈需要更多的努力,一些應用程序不適合設置一個完整的平行鏈,有些應用程序則需要。這取決於每個應用程序的範圍,必須單獨評估。與平行鏈相比,智能合約代表一個沙盒環境,需要較少的安全措施。有人可能會說,平行鏈是爲互操作性(獨立應用程序 / 鏈之間的通信)而優化的,而智能合約是爲內部操作性(鏈運行時內的通信)而優化的。

平行鏈是波卡網絡中的區塊鏈,由波卡的中繼鏈保護,因此無法選擇自己的共識機制。如果一個區塊鏈想要使用自己的共識機制,它可以把平行鏈作爲 「橋」 去連接波卡網絡。

跨鏈巨頭波卡即將上線,這裏有關於它的一切一條橋鏈(從一萬英尺的高空觀察波卡架構)

橋接鏈允許一條獨立的區塊鏈(如以太坊)通過其特有的共識機制連接到波卡網絡。與共享安全性的平行鏈不同,像以太坊主網這樣的網絡將保持獨立。

跨鏈巨頭波卡即將上線,這裏有關於它的一切基於 Substrate 鏈的可能表現

在本例中,共享安全性的平行鏈功能僅僅擴展到橋,而連接到橋另一側的以太坊更像是一個側鏈,具有相互解釋彼此區塊頭、狀態轉換和最終性(finality)的能力。

PoS 區塊鏈中的最終性是指一種最終狀態,如果還原到以前的狀態將導致大量 Staking 的代幣被削減,因爲大多數驗證人已經批准了最終狀態。雖然在技術上還原已完成的塊是可能的,但那意味着驗證人集犯了一個大錯誤。「還原就意味着絕大多數驗證人的錯誤」 這樣的最終性,在 PoW 鏈中不可能出現,因爲驗證節點(礦工)理論上是無限的。因此,PoW 鏈具有 「概率上的」 最終性,因爲在某些情況下,還原的概率低到可以忽略不計。

橋接具有概率上的最終性的鏈也會對延遲產生影響。這意味着對於比如從以太坊到中繼鏈的交易來說,交易的最終確認需要等待適當的時間週期是合理的。而位於波卡網絡內部或來自波卡網絡的,擁有自適應、漸進的最終性的交易,可以說能更快、幾乎是立即最終確認。這導致退出橋接鏈的交易需要等待一些時間,但在波卡網絡中的交易幾乎沒有等待時間。

無分叉的 runtime 更新

到這裏,我們已經強調了波卡互操作性中的可拓展性和安全性的影響。然而,還有一個問題,就是分叉了會發生什麼。一旦區塊鏈變得相互依賴,分叉的影響變得大了很多(跟以前一個獨立網絡分裂爲兩個獨立網絡時相比)。對於中繼鏈和平行鏈來說都是如此,而 Substrate 帶來的最令人興奮的特性之一,就是無分叉 runtime 升級。

通常情況下更新網絡

升級區塊鏈網絡的常見做法是更改底層協議的規則。這樣做是爲了引入新的特性或改變現有的規則。如果升級與舊版本不兼容,則會強制節點更新,以便繼續參與網絡的當前版本。不更新的節點將無法理解新的規則,並將與網絡分離,可能形成替代網絡。雖然臨時分叉是由於網絡尋求共識而發生的,但有計劃的永久分叉是由於有意的網絡更新而發生的。這實際上是通過重置網絡來更新網絡,這在可互操作的環境中是不實際的。波卡的中繼鏈是一個異構多鏈生態系統的旋轉入口。很容易可以想象到有兩個版本的中繼鏈所引起的問題。

通過 Substrate 更新網絡

由於波卡是建立在 Substrate 之上的,我們可以利用 Substrate 的特性繞過中繼鏈的分叉,也可以繞過其他基於 Substrate 開發的區塊鏈。那 Substrate 是如何實現鏈上升級的呢?

如果一個區塊產生並通過網絡傳播,那麼在對它執行各種通用檢查之後,Substrate 節點將執行該區塊。執行一個區塊是由 Substrate 節點來完成的,但是這樣做的動力是來自於鏈的 runtime。

執行區塊意味着什麼?一旦共識確定區塊有效,節點將開始執行它包含的狀態轉換(state transitions)。如果成功,節點將存儲區塊。在處理狀態轉換時,節點將有效地訪問其 merklised 存儲數據庫,該數據庫基本上是一個密鑰-值(key-value)存儲。Substrate 在此密鑰-值存儲器上操作,基本功能爲設置狀態和獲取狀態。現在 Substrate 可以提供一個特殊的情況下設置的狀態,即用 key:code。在這種情況下,Substrate 需要提供一個 WebAssembly (Wasm) runtime。由於區塊鏈 runtime 在 Wasm 中運行,因此它可以呈現一個新的 Wasm 代碼二進制 blob。這段代碼將作爲狀態轉換的一部分執行,從而導致 runtime 按照 blob 中的指定進行更新。

跨鏈巨頭波卡即將上線,這裏有關於它的一切每次 Substrate 執行一個區塊時,它都會檢查其代碼版本,從而能夠從 native runtime 切換到鏈上 Wasm runtime,以防節點未運行最新版本

鏈上治理將在波卡中發揮重要作用。管理該網絡的機制正在設計中,將圍繞基於質押的投票方案展開。一些額外的措施,如理事會以及投票權、其他計票方案和授權投票,將確保治理過程是有效的、切實可行的,並充分尊重網絡中的少數人意見。但是如果治理應該是綁定的,那麼來自引用的決策必須直接在鏈上執行,這需要波卡 runtime 進行更新。

鏈的治理機制可以負責 :code key。這意味着 runtime 更新只能由治理決策觸發。例如,在投票結果爲正的情況下,預定義的密鑰會自動輸入到狀態轉換集合中,從而在鏈上綁定上做出治理決策。

總結

本文介紹了波卡和 Substrate 背後的核心概念,它們是如何形成的,以及它們對整個區塊鏈生態系統的意義。正如我們所看到的,Substrate 和波卡是完美互補的。後者使得連接不同特性的鏈成爲可能,而 Substrate 則使我們能夠以一種高效、安全和相對容易的方式創建這些鏈。

太長不讀版

  • Polkadot 是一種異構多鏈協議。這意味着連接到中繼鏈的分片並不完全相同,而是允許不同的節點運行不同的應用程序邏輯,從而使每個鏈成爲自己的平臺。如果一個分片系統中的所有分片都可以有不同的任務,那麼它們將開啓專業化分片(即區塊鏈)的局面。
  • 通過讓專業鏈與其他專業鏈交換消息,我們能夠恢復通常會阻礙專業鏈的網絡效應。波卡連接了一系列區塊鏈,從通用到特定 app,以創建一個支持更高級應用程序的平臺。
  • 當我們通過引入互操作性來解決專業化與通用化之間的難題時,我們還消除了可拓展性瓶頸。
  • 波卡的安全模型集中了資源,解決了網絡中最薄弱環節的問題。平行鏈是波卡網絡中的區塊鏈,由波卡的中繼鏈保護,因此無法選擇自己的共識機制。共享安全的另一個好處是,不必尋找驗證節點來保護區塊鏈。
  • 如果區塊鏈想要使用自己的共識機制,它可以把平行鏈作爲橋去連接波卡網絡。
  • 爲了有效地爲波卡生態系統構建許多不同(異構)的區塊鏈,Parity 開發人員將構建區塊鏈所需的所有功能放入名爲 Substrate 的框架中(https://parity.io/substrate)。Substrate 的多層架構讓開發人員可以在開發的方便性和技術的自由性之間做出選擇。
  • 儘管 Substrate 讓創建適合波卡的區塊鏈變得非常容易,但波卡網絡中的區塊鏈也可以不需要使用 Substrate 來構建。
  • Substrate 具有無分叉 runtime 升級的能力。一旦區塊鏈變得相互依賴,分叉的影響要比一個獨立網絡分裂爲兩個獨立網絡的影響大得多。

下一步

關注 波卡的推特 獲取波卡最新消息。

如果你想嘗試 Substrate,可以從 Substrate Developer Hub 開始。

來源鏈接:www.parity.io