之前我們已大致申明瞭我們相信 Polkadot 可以吸引開發者的理由:Polkadot 會解決限制區塊鏈普及和創新的最大困難。在這篇博文中,我們會提出一系列的建議,幫助開發者爲 Polkadot 的發行做好充足的準備。

我們相信,讓開發者繼續使用他們已經熟練掌握的技術來開發是有可能的。在可開發性上,我們的目標是儘可能移除開發去中心化技術的障礙,雖然長遠來看,切換到使用一門可以編譯到 WASM 的語言來開發會更好。其中的推論過程我們會在本文中詳細說明。

現在我們要討論兩個主題:(1)部署在 Polkadot 平臺上的去中心化應用的開發路徑;以及(2)簡單介紹開發者如何能夠開發一條功能完整的平行鏈(Parachain),參與到 Polkadot 的多鏈環境中。

有意願在 Polkadot 上部署智能合約的 dApp 開發者不是非得創建一條平行鏈,因爲 Polkadot 將會有配備圖靈完備狀態機的平行鏈。如果你對開發一條平行鏈感興趣,我們來深入瞭解下你需要實現的東西、你可以用來實現它的工具、以及一旦實現了你可以在鏈上做些什麼。

在 Polkadot 上開發 DApp 和平行鏈

現在,有些開發者可能會問:我們可以爲 Polkadot 的發行做些什麼準備工作嗎?

答案是「當然可以」!

我們非常樂意與想在 Polkadot 原生平行鏈上開發 DApp 或是開發新平行鏈的團隊接洽。我們的建議是在一種可以編譯到 Wasm 的語言上寫智能合約以及平行鏈運行環境。

打造一條基於 EVM 的平行鏈、讓開發者可以繼續使用 Solidity 寫智能合約也是有可能的。然而,我們並不推薦這樣做,因爲以太坊也希望在實現分片的時候(將虛擬機)轉變爲 Wasm。幸運的是,現在人們正在開發一種叫「Yul」的工具(原來叫 Julia),可以將 Solidity 編譯到 Wasm。

從長期來看,我們希望 Wasm 對區塊鏈開發者來說變成一種自然而然的選擇,這也是爲什麼我們建議開發者應該開始研究 Wasm 智能合約。要閱讀更多關於 Wasm 的材料,請看 Parity 對 Wasm 的解釋以及他們的 Wasm 智能合約開發引論。

在 Polkadot 上開發 DApp

創建最終可以被部署到 Polkadot 上的智能合約,可以有兩種主要的開發路徑:(1)在 Wasm 上寫合約,讓它可以在原生平行鏈上運行,或者是(2)使用 Solidity 部署 DApp 在一條基於 EVM 的鏈上。後者對那些想要用現有可用工具來開發的開發者來說比較有吸引力,但從長期來看,切換到 Wasm 上會更好。

遵循選項(1)會是爲平行鏈在未來啓動做的準備措施。在 Wasm 中開發和測試 DApp、以及在 Kovan 測試網 或是一個自己部署的 PoA (權威證明)網絡上做測試都是有可能的。來自 Parity 的 Fredrik Harrysson 在 EthCC 上解釋瞭如果在裝載 WASM 的 Kovan 測試網上運行 Rust 合約。圍繞 Wasm 智能合約的工具有限,可能讓測試更加困難,但這一點不重要。更多信息可以看 Parity 博客中關於 Wasm 虛擬機和智能合約的推文。

對那些傾向於遵循選項(2)並繼續使用 Solidity 來開發 DApp 的開發者來說,我們建議仿效選項(1)。當然,這要部署在基於 EVM 的 PoA 鏈上,這也會讓開發者可以測試數據流並得到一個具備一定可擴展性的可用產品。當以太坊連接到 Polkadot 之時,現有的 DAPP 便可以從系統提供的新功能中受益,包括擴展以及跨鏈通信。

調試一條 PoA 鏈是非常簡單的,現在已經有很多教程,並且最終來說,這些鏈也可以在 Polkadot 創世塊構造好之後(預期在 2019 年第 3 季度)連接到 Polkadot。假設切換到 Wasm 的趨勢會持續下去,而以太坊會成功地實現分片,我們強烈建議使用 Wasm 作爲首選語言。

具體流程如下所示:

部署一條 PoA 鏈以及一個橋接合約(Bridge Contract)
讓 DApp 在 PoA 鏈上跑起來

橋接合約提供了消息傳遞功能,讓孤立的鏈可以跟 Polkadot 聯繫起來。Polkadot 平臺會擁有很多不同的鏈,在類型上也會百花齊放。

開發一條平行鏈

平行鏈這個概念一開始是在我們的白皮書中提出的,一篇之前發表的名爲《Polkadot: The Parachain》的博文則在細節上進一步闡發了這個概念。

「平行鏈(Parallelizable Chain,直譯爲「可平行化鏈」)是區塊鏈的一種更簡單的形式,它會附加由一條「中繼鏈(Relay Chain)」提供的安全性,而不是由自己來提供。中繼鏈爲附屬的平行鏈提供安全性,也提供平行鏈之間信息傳遞的安全保證。」

後者解除了對橋接合約的需要,因爲信息傳遞功能已經被整合進了協議中。

創建一條原生於 Polkadot 的平行鏈需要理解 Substrate。更多細節請看 Gavin Wood 博士在 Event Horizon 中的演講以及 Polkadot GitHub 的子目錄 Substrate。

Polkadot 多鏈架構的設計讓開發者可以指定他們平行鏈有效性的概念。要實現一條平行鏈,開發者要實現一個狀態轉變驗證函數、決定一種狀態形式以及一種交易池機制。實現了自己的平行鏈只要,要將它與 Polkadot 整合起來和需要一系列額外的措施。要做到這一點,你還需要將狀態轉變驗證函數部署到中繼鏈上,然後分發一種包含交易池機制的核對者節點客戶端(Collator Node Client)。

創建所有這些部分需要思考:一個核對者節點應該如何構造你的鏈的區塊鏈、這些區塊的有效性又如何能夠被驗證者節點(Validator Node)檢查和驗證。這裏有兩個選項:(1)從頭開始編寫覈對者節點;或是(2)使用一個已有的可以運行各種狀態機的核對者節點。在寫這篇文章的時候,我們還沒有餘裕來寫一個核對者節點,雖然更多細節會隨着 PoC (概念驗證)的發佈而披露出來。

編寫狀態機的一個要求是使用一種可以編譯到 Wasm 的語言。這是一種設計上的選擇,可以保證足夠的靈活性,比如爲運行環境實時更新。研究在推進,平行鏈也可以容易地升級以實現最新的技術,比如分片。

我們希望一些熱門平行鏈的代碼可以被複制並重用到其他鏈上,甚至用到獨立的區塊鏈上。Web3 基金會邀請開發者們開始創建平行鏈以及所有其它對 Polkadot 的成功來說關鍵的通用組件,比如區塊瀏覽器、錢包、中繼節點和核對者節點的替代性實現。請移步 Riot 以聯繫團隊中的成員。

展望未來

Polkadot 啓動以後能爲開發者帶來的好處是非常有吸引力的。無論是區塊鏈之間和平行鏈之間的互操作性、可擴展性上的提升、大量執行中的效率提升,還是動態鏈上治理系統,很多理由值得你考慮在 Polkadot 平臺上開發。

我們希望,已經在以太坊上部署 DApp 的開發者們、正試圖在 Polkadot 上開發的以及剛剛開始起步的開發者們,能夠從本文中得到對必要遷移的更清楚的認識。

我們計劃在 2019 年 3 月啓動 Polkadot 主網。因爲我們正在推進概念驗證和測試網,我們歡迎社區成員幫助我們推進項目;加入我們,讓 Polkadot 網絡落地。

我們邀請所有人下載 Polkadot 的代碼,編譯一下,連接到全球測試網。安裝之後,請記得來 Riot 的聊天頻道拿一些測試網的 DOT 代幣!

開發快樂!