為波卡上線做好準備,你需要了解這些

買賣虛擬貨幣

本文來自波卡百科(Polkadot Wiki),更新於 2020 年 3 月 5 日。

本文是這篇文章的最新版本:為 Polkadot 做好準備你所需要的一切[1]。

Polkadot 是一個區塊鏈協議,它有兩個目標:為所有接入的平行鏈提供共享安全性,並允許所有接入的鏈使用 XCMP 進行互操作。隨著 Parity 的 Substrate 和 Cumulus 等 PDK[2] 的出現,開發和啟動新鏈所需的時間大大減少。以前開發一條鏈需要幾年的時間,現在可能只需要幾周甚至幾天。

這份指南將帶你瞭解想要使用 Polkadot 建立你的願景,你現在能做的事兒。我們將解釋平行鏈和智慧合約之間的區別(以及為什麼其中一個可能比另一個更適合你的應用程式)。還將列出現在可用的資源和即將釋出的資源,以便你可以開始建立應用程式,併為參與今年晚些時候的 Polkadot 主網釋出做準備。

我們目前在什麼階段Polkadot 上線:2020 年初金絲雀測試網已上線:Kusama目前的測試網:WestendSubstrate:2.0.0 版本Cumulus:開發中,Demo 見 https://github.com/paritytech/cumulus[3]ink!:開發中,文件見 https://substrate.dev/substrate-contracts-workshop/[4]

你需要知道什麼

Polkadot 目前正處在 v0.7 版本,它有一個名為 Westend 的測試網和一個名為 Kusama 的有價值的金絲雀網路。Polkadot 擁有從 Rust 到 JavaScript 的各種程式語言實現[5] 。目前主要使用 Rust 基於 Substrate 框架開發。Substrate 是一個庫,開發者可以透過將網路協議、共識和 Wasm 直譯器組合在一起,輕鬆開發出整個區塊鏈應用程式。Cumulus 是對 Substrate 的延伸,它允許任何用 Substrate 開發的鏈連線到 Polkadot 併成為平行鏈。Substrate 目前快要釋出官方 2.0.0 版本,將鞏固其 API。

Polkadot 並不原生支援智慧合約,但是會有平行鏈去支援。Substrate 鏈可以使用為 Wasm 合約準備的 Contracts[6] pallet ,或使用 FRAME 中的 EVM[7] pallet 來增加智慧合約功能。合約模組可以使鏈能夠使用 Wasm 編譯的合約,這些合約可以由使用者無許可地進行部署,或者取決於該區塊鏈的特定規則。為了促進 Wasm 智慧合約的發展,Parity 也在開發 ink![8],一門用 Rust 編寫,用於編寫智慧合約的特定領域語言。

Polkadot 計劃在 2020 年初釋出一個初始版本,這取決於安全審計和我們團隊控制之外的上線規定。現在,既然這些工具已經開始出現並逐漸穩定下來,沒有比現在更好的時機了,去投身其中併為上線做好準備吧。但是等等!在你一頭栽進程式碼中之前,你應該考慮一下,你想要建立的去中心化應用程式的型別,並理解那些希望在 Polkadot 上開發的開發者可以使用的不同範例。

建立平行鏈、平行執行緒、智慧合約有什麼區別

Polkadot 為你提供了幾種部署應用程式的方法:作為現有平行鏈上的智慧合約、成為平行鏈或者平行執行緒。在使用每一種方法時都會有一些取捨,閱讀本節將有助於你理解它們。

平行鏈是包含它們自己 runtime 邏輯的單獨的鏈,並受益於 Polkadot 中繼鏈提供的共享安全性和跨鏈訊息傳遞。平行鏈有高度的靈活性和可定製性,但需要更多的成本來建立和維護。

平行執行緒類似於平行鏈,使開發者能夠對其應用程式的邏輯進行較低階別的掌控。兩者的主要區別在於經濟成本,因為平行執行緒的安全成本要比平行鏈低得多。平行執行緒的成本較低是因為平行執行緒只在需要時生成一個塊,而平行鏈則必須保證有一個插槽來在中繼鏈的每個區塊上都出塊。在建立一條平行執行緒時,你將使用跟平行鏈相同的工具(如 PDKs ),你將得到建立一條平行鏈的所有好處,而沒有成本的缺點。

在 Polkadot 主網上,將由平行鏈充當智慧合約平臺。智慧合約是隻存在於一條鏈上的可執行程式,其複雜度有限。因為它們存在於一條鏈上,所以它們可以與同一鏈上的其他智慧合約具有平滑的互操作性。然而,它們總是受到主鏈固有特性的制約和限制。

如果需要對應用程式的設計和功能進行大量控制,那麼平行鏈是更好的選擇。 請記住,智慧合約可以作為一個試驗場所,然後再轉變到功能成熟的平行鏈。智慧合約平臺通常會有更方便的工具,如 IDEs,以促進快速迭代。可以建立一個智慧合約 MVP(最小可行性產品) 來衡量使用者的興趣,然後再投入到平行鏈的構建中。

在從頭構建貨幣體系和鏈的其他方面上,平行鏈給予了創造者更多空間。它可以比智慧合約平臺更簡潔高效地執行復雜邏輯。平行鏈在治理上也提供了更大的靈活性,並且跟現有的硬分叉方式相比,平行鏈進行完全升級的爭議更少。

平行鏈或平行執行緒上可以具有的一些功能示例:自定義費用結構(例如,為交易支付固定費用或按位元組付費)自定義原生代幣和經濟模型的貨幣政策在狀態轉換時財政庫會獲得資金一種管理 DAO 的治理機制,可以負責分配鏈上資金

圖片

平行鏈提供了構建複雜 runtime 邏輯的可能性,而使用智慧合約執行復雜 runtime 邏輯成本太高。然而,與智慧合約不同,平行鏈完全缺乏強制性的 gas 計費系統,可能容易受到導致無限迴圈的漏洞(智慧合約中的設計阻止了這種漏洞)。

你還可以決定使用平行鏈、平行執行緒和智慧合約的組合。如果你有某些需要迴圈的邏輯,並且無法將其移除,可以使用本地平行鏈 runtime 來處理所有複雜邏輯,並使用智慧合約來呼叫迭代。如果你需要來自 oracle 的鏈下資料,則可能需要使用一個平行執行緒作為 oracle 喂價,每 24 小時觸發一次(如果該資料對 Polkadot 生態系統中的其他參與者也有用,則這是最有意義的)。

很可能你已經意識到你的應用程式更適合其中哪個(或兩者的混合),但如果你需要一個快速摘要來消化資訊,可以使用下面這個對比表:

圖片“

注意:上圖不包括平行執行緒,但是正如我們前面提到的,平行鏈的所有優點同樣適用於平行執行緒。不過平行執行緒的部署和維護成本更低。所以,如果平行鏈在上表中佔了一列,那會跟平行鏈的那一列很像,只不過其中的 “易部署性” 和 “維護開銷” 更改為 +。

本指南現在分為兩個部分,具體取決於你是決定使用智慧合約還是平行鏈來構建應用程式。請隨意閱讀這兩個部分,或者只閱讀適合你的部分。我想建立一條平行鏈或平行執行緒我想建立一個智慧合約

如果你想建立一條平行鏈或者平行執行緒

現在你已經確定構建平行鏈或平行執行緒是適合你新專案的方法,下一步是決定使用哪個框架。用於構建平行鏈或平行執行緒的框架稱為平行鏈開發工具包(PDKs:parachain development kits)。目前,僅有的可用 PDK 是來自 Parity 的 Substrate 和 Cumulus。

將來,會有許多不同的程式語言的 PDK,就像 Polkadot 主網有多種實現[9]一樣。“

看這裡:你想從頭開始構建平行鏈開發工具包嗎?Web3 基金會將向進行此項工作的團隊提供資助,想了解更多資訊和申請請訪問 W3F grant[10] 頁面。開啟 Substrate 之旅

Substrate 是構建 Polkadot 的底層框架。它是區塊鏈創新者的工具集,為構建鏈提供了必要的開發工具。它包括一個模組化的外掛庫,你可以從中組合你的鏈邏輯,也可以編寫自己的模組來使用或釋出到社羣。

開始使用 Substrate 的最佳途徑是探索 Substrate 開發者中心[11] ,這是一個由 Parity 構建和維護的線上資源。

我們建議你在裡面多看看,熟悉常見的模式。一旦你有了很好的理解,你可以從 Substratekitties workshop 開始挑戰自己,然後再進階到 TCR Dappchain 教程或其他教程。如何建立你的平行鏈

在用 Substrate 建立你的鏈邏輯之後,你將能夠將其編譯成 Wasm 可執行檔案。這個 Wasm 程式碼 blob 將包含鏈的整個狀態轉換函式,這是將專案部署到 Polkadot 的平行鏈或平行執行緒所需的。

Polkadot 上的驗證人將使用提交的 Wasm 程式碼來驗證鏈或執行緒的狀態轉換,但這樣做需要一些額外的基礎設施。驗證人需要某種方法來保持最新狀態轉換,因為 Polkadot 節點不一定也是你的鏈的節點。

這就是收集人節點發揮作用的地方。收集人是平行鏈的維護者,它在為鏈生成新的候選區塊並將它們傳遞給 Polkadot 驗證人來納入中繼鏈的過程中扮演著重要角色。

Substrate 帶有自己的內建網路層,但遺憾的是它只支援獨立鏈(即不連線到中繼鏈的鏈)。然而,確實有 Cumulus 擴充套件包含了一個收集人節點,並允許你的底層構建邏輯與 Polkadot 相容,不論是平行鏈還是平行執行緒。Cumulus

Cumulus[12] 的目標是擴充套件 Substrate,使任何 Substrate runtime 都與 Polkadot 相容。

它處理網路相容性開銷問題,任何平行鏈都需要實現這一點才能連線到 Polkadot。包括:跨鏈訊息傳遞開箱即用的收集人節點設定中繼鏈的嵌入式輕客戶端波卡區塊建立者相容性整合 Cumulus 與 Substrate 鏈,使其成為一個平行鏈,能夠在最小修改的情況下在 Polkadot 上執行,可能只需匯入一個 crate 再敲一行程式碼即可。

波卡的聯合創始人 Rob Habermeier 去年在 EthCC 做了一次 Cumulus 的演講,你可以在這裡[13]觀看。如何在波卡上部署你的平行鏈或平行執行緒平行鏈

為了將平行鏈連線到 Polkadot 網路,你需要獲取平行鏈卡槽。

平行鏈卡槽將在公開拍賣中出售,拍賣機制可以在 wiki 的平行鏈拍賣[14]頁面上找到。平行執行緒

平行執行緒不需要平行鏈卡槽,因此你不需要參與蠟燭拍賣機制。不過,你可以向中繼鏈提交平行執行緒程式碼,並開始參與每個塊的拍賣,以便將狀態轉換提交到中繼鏈中。

有關平行執行緒每個區塊拍賣是如何工作的更多資訊,請參閱更詳細的平行執行緒[15]頁面。

如果你想建立一個智慧合約...

Polkadot 中繼鏈本身不支援智慧合約。但是,由於連線到 Polkadot 的平行鏈可以支援任意狀態轉換,因此它們可以支援智慧合約。智慧合約的開發者可以在這些功能完善的時候使用它們。現在可以使用本地開發鏈開始開發,然後在技術成熟時部署到真實環境中。

Substrate 支援兩種開箱即用的智慧合約的方式。一種方法是使用框架庫中提供的合約模組[16]。第二種方法是使用 Substrate EVM 模組[17]來部署基於 EVM 的位元組碼,該位元組碼由 Solidity 或 Vyper 編譯,並使用 Ethereum 堆疊中提供的工具。

對於以前編寫過智慧合約的開發者來說,部署到基於 EVM 的鏈的操作可能更為熟悉。然而,合約模組對 EVM 的設計做出了一些顯著的改進。包括:Wasm。合約模組盤使用 WebAssembly 作為其編譯目標。任何編譯成 Wasm 的語言都有可能用於編寫智慧合約。雖然有一門專門的特定領域語言會更好,所以 Parity 提供了 ink![18] 語言。租金。合約必須支付租金,否則必須繳納足夠多的保證金,以證明其存在於鏈上。當一個合約不支援這一點時,它可能會建立一個所謂的 tombstone,作為合約的參考。在某些情況下,如果合約不符合這些要求,將隨其儲存一起被徹底刪除。快取。預設情況下,合約是快取的,因此意味著它們只需要部署一次,之後,可以根據需要再進行多次具體化。這有助於將鏈上的儲存負載降至最低。除此之外,當合約不再被使用並且已有的存款被耗盡時,程式碼將從儲存中刪除(稱為回收)。

你可能需要設定一個本地測試環境開始編寫智慧合約。這可以使用 Substrate 節點來完成,它包含兩個智慧合約模組中的一個。開發完成後,你可以檢視 Edgware 等專案,以便將智慧合約部署到真實環境中。Edgeware

目前帶有智慧合約模組的一個專案是 Edgeware[19]。Edgeware 是一個無許可的智慧合約平臺,正在進行鏈上治理的實驗。對於已經建立了智慧合約並希望部署到真實環境中的開發者來說,這是目前最好的選擇。

Edgeware 計劃在合適的時間連線到 Polkadot,並作為一條智慧合約平行鏈。此時,智慧合約將能夠透過 XCMP[20] 與 Polkadot 生態系統的其他部分互動。

可在此處[21]找到 Edgeware 文件。Ink

ink![22]是一種特定領域語言,用於使用 Rust 編寫智慧合約並編譯成 Wasm 程式碼。正如它在自述中所說,它仍然處於實驗階段,因此勇敢的開發者應該意識到,他們的開發過程可能會比較坎坷,但也能走得通。有些專案是用 ink! 開發的,並且有相當程度的複雜性,比如 Plasm 的 Plasma 合約[23],所以它其實已經足夠成熟,可以開始建立一些有趣的東西了。

對於感興趣的開發者,他們可以透過研究一些已經寫好的案例[24]來開始使用 ink! 編寫智慧合約。這些可以作為編寫更復雜的邏輯的指南,這些邏輯可以部署在智慧合約平行鏈上。

ink! 已經為一個基於 Wasm 虛擬機器並與 Substrate 鏈相容的新智慧合約棧奠定了基礎。

部署你的智慧合約

智慧合約僅僅是存在於一個鏈上地址的程式碼,並且可以由外部參與者呼叫。關鍵的一點是,在任何人開始執行程式碼之前,你必須將程式碼放到鏈上!

在鏈上部署智慧合約,會因你使用的特定平行鏈而略有不同,但通常你會傳送一筆特殊交易,該交易將在分類賬上建立智慧合約。你可能需要為初始化邏輯和合約使用的任何儲存支付相關費用。

為你的智慧合約付費

每個平臺都有不同的方式來支付和維護智慧合約的狀態。

你可能看到的一些支付智慧合約的不同模式包括:與部署每個交易相關的交易費。定期支付鏈使用費來使用平臺的訂閱模式。Acess token 模式,需要持有一定數量的原生代幣來使用平臺(EOS 有類似的模式)。儲存租用。免費試用或開發者推廣。大多數智慧合約平臺使用某種形式的 gas 費來限制使用者可執行的運算元量。要求使用者預先支付 gas 費用,沒有使用的會被退還。

你需要考慮智慧合約的儲存和複雜性,以確保 gas 的使用保持在合理的範圍內。無論你使用哪種智慧合約平臺,儲存都可能很昂貴,因此有必要儘可能多地將資料進行鏈下儲存。你可以考慮使用 IPFS[25] 或 Storj[26]來儲存資料,而只將內容地址提交上鍊。它還處於很早期...

Polkadot 上的智慧合約還處於極早期,目前開發才逐漸趨於穩定。我們正在積極生產相關內容,以幫助開發者加快速度,並將在 wiki 上更新的資源。同時,你還可以關注以下連結來獲取最新進展:Edgeware:https://edgewa.re/[27]ink!:https://github.com/paritytech/ink[28](留意 wiki 上的內容)Substrate 合約模組:https://github.com/paritytech/substrate/tree/master/frame/contracts[29]

總結

本指南為你提供了一個心理模型,並展示了必要的資源,以幫助你開始構建平行鏈或智慧合約。儘管工具還處於完善階段,但提前做了解的好處是可以熟悉並提前開始你的專案,讓你能夠建立真正創新的東西。

如果你對 Polkadot 上的平行鏈或智慧合約有一些有趣的想法,請隨時在 Polkadot Riot 聊天室[30]中討論。感興趣的開發者可以加入 Polkadot Beginners Lounge[31]或者 Substrate Technical[32],來進行提問。一如既往,大家可以透過媒體渠道[33]與波卡保持聯絡。

祝你好運!

原文:https://wiki.polkadot.network/docs/en/build-build-with-polkadot[34]

翻譯:PolkaWorld 社羣參考資料[1]

為 Polkadot 做好準備你所需要的一切: https://medium.com/polkadot-network/everything-you-need-to-know-to-prepare-for-polkadot-32d08b929735[2]

PDK: https://wiki.polkadot.network/docs/en/build-pdk[3]

https://github.com/paritytech/cumulus: https://github.com/paritytech/cumulus[4]

https://substrate.dev/substrate-contracts-workshop/: https://substrate.dev/substrate-contracts-workshop/[5]

各種程式語言實現: https://wiki.polkadot.network/docs/en/learn-implementations[6]

Contracts: https://github.com/paritytech/substrate/tree/master/frame/contracts[7]

EVM: https://github.com/paritytech/substrate/tree/master/frame/evm[8]

ink!: https://github.com/paritytech/ink[9]

實現: https://wiki.polkadot.network/docs/en/learn-implementations[10]

W3F grant: https://grants.web3.foundation/[11]

Substrate 開發者中心: https://substrate.dev/[12]

Cumulus: https://wiki.polkadot.network/docs/en/build-cumulus[13]

這裡: https://www.youtube.com/watch?v=thgtXq5YMOo[14]

平行鏈拍賣: https://wiki.polkadot.network/docs/en/learn-auction[15]

平行執行緒: https://wiki.polkadot.network/docs/en/learn-parathreads[16]

https://github.com/paritytech/substrate/tree/master/frame/contracts: https://github.com/paritytech/substrate/tree/master/frame/contracts[17]

https://github.com/paritytech/substrate/tree/master/frame/evm: https://github.com/paritytech/substrate/tree/master/frame/evm[18]

ink!: https://wiki.polkadot.network/docs/en/build-build-with-polkadot#ink[19]

Edgeware: https://edgewa.re/[20]

XCMP: https://wiki.polkadot.network/docs/en/learn-crosschain[21]

https://docs.edgewa.re/: https://docs.edgewa.re/[22]

ink!: https://github.com/paritytech/ink[23]

Plasma 合約: https://github.com/staketechnologies/Plasm[24]

案例: https://github.com/paritytech/ink/tree/master/examples[25]

IPFS: https://ipfs.io/[26]

Storj: https://storj.io/[27]

https://edgewa.re/: https://edgewa.re/[28]

https://github.com/paritytech/ink: https://github.com/paritytech/ink[29]

https://github.com/paritytech/substrate/tree/master/frame/contracts: https://github.com/paritytech/substrate/tree/master/frame/contracts[30]

Riot 聊天室: https://riot.im/app/#/room/#polkadot-watercooler:matrix.org[31]

Polkadot Beginners Lounge: https://riot.im/app/#/room/#polkadotnoobs:matrix.org[32]

Substrate Technica: https://riot.im/app/#/room/#substrate-technical:matrix.org[33]

媒體渠道: https://wiki.polkadot.network/docs/en/community[34]

https://wiki.polkadot.network/docs/en/build-build-with-polkadot: https://wiki.polkadot.network/docs/en/build-build-with-polkadot

更多內容:

影片教程|如何設定波卡驗證人節點

在 Kusama 上如何給帳號加 V ?

延遲支付|你的 KSM 獎勵為什麼要手動領?

掃碼關注公眾號,回覆 “1” 加入波卡群

關注 PolkaWorld

發現Web 3.0 時代新機遇

點個“在看”再走吧!

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;