如何基於波卡開發區塊鏈項目?
丨密码极客丨
2020-10-28 02:40
本文约7778字,阅读全文需要约31分钟
在波卡上如何開發區塊鏈系統?

二級標題

二級標題

演講環節

圖1

圖1

圖1

大家可以看一下圖1,其實要從頭開發一個區塊鏈,你要考慮到的就不只是數據庫公式算法,還要考慮到處理各種各樣的交易相關的一個轉換函數。與此同時,如果你想加一些比較複雜或者先進的一個邏輯在裡邊,例如零知識證明,這樣就要在開發區關聯時候額外添加這些比較複雜的算法以及功能。

圖2

圖2

圖2

圖4

圖3

圖3

圖4

圖4

圖6

圖5

圖5

圖6

圖6

那麼進行開發的話需要這種Substrate Runtime的。圖6裡邊大家可以看到,由於Substrate跟我們平時開發智能合約不太一樣,那麼的話它是有一些這種開發上面的一些這種policy需要大家去記住的。例如第一點,在Substrate Runtime你如果發了一個我們叫做extrinsic,或者你就把它當做交易,發交易的時候,如果這個交易進行時發生了問題的,那麼交易對狀態的改變是不會回滾的。

圖7

圖7

圖7

對於這種如果大家想引用其他的相關的這樣的一些trait的話,因為整個Substrate都用Rust寫,所以這也會用到一些trait,如果大家想知道更多這種Rust相關的信息的話,再可以在網上查一下Rust的相關課程,或者加入我們Substrate的課程,我們會介紹一些Rust的相關的這種基礎。然後像存儲的話,大家可以看到其實裡邊有一些比較簡單的類型、最簡單的方法,大家就可以學習已經有的這些簡單的類型或者這種例子,然後根據自己的實際情況,然後去改一下相關的這種變量名字,進行這樣的一個操作。與此同時的話類似於我們寫智能合約,在做一些操作的時候都要觸發事件或者發出事件,那麼這裡邊你也可以去定義一個事件。

當然了這裡面還有一個地方就是decl_module,其實就是要定義自己相對應的這種runtime的函數,我在最後會提到的叫做Substrate.dev這樣的一個網站上面有很多各種各樣的教程,大家可以跟隨教程去學習,以及做一些比較簡單的例子去深入學習,怎麼去根據這幾個模塊定義對應的這樣的一個事件存儲和函數,來完成自己對應的這樣的一個Runtime,以及相對應的邏輯的定義以及操作。

4、Substrate應用鏈跟智能合約的差異性在哪?

圖片描述

圖8

大家都知道寫智能合約,特別是以太坊上面的solidity這樣的一個智能合約,很多時候由於solidity以及以太坊本身的限制——比如它存儲量較低、手續費較高,同時像solidity它本身的限制也是比較多,可能更多時候是只能操作整數這種類型。

這就是為什麼大家看到的目前以太坊上面比較火熱的應用都是跟通證相關,而不是跟更廣泛的Web3.0相關的原因。

而大家使用Substrate進行開發的時候,就不存在這樣的問題。

因為大家使用Substrate開發的時候,整個鏈都是為開發者所控制的。所以當大家在進行開發的時候,不管是鏈上鍊下數據,或是對應的一些solidity沒有的接口,Substrate都可以進行一個提供。

並且大家也可以看到,Substrate本身的吞吐量也是比較高的,所以可以給應用提供更多的處理交易與邏輯的空間。

與此同時,Substrate本身也會提供一個off-chain worker鏈下工作機,可以幫助做Substrate應用開發的開發者能夠更快的處理相關的鏈下數據,實現鏈上處理鏈下數據,這樣就打通了鏈上與鏈下。

5、無縫無分叉的鏈上升級

熟悉區塊鏈行業的朋友都知道,在過去,所有的公鏈項目包括一些聯盟鏈項目,如果想要做升級的話,都需要進行一個硬分叉。像比特幣,特別是以太坊。大家都知道在16年由於“The DAO”事件,由於礦工意見不同,最終從以太坊分出了經典以太。

我們為什麼要做鏈相關的升級?這其實涉及到了一個計算機或者編程行業。

大家其實默認這樣一個現象:沒有任何一個程序員可以寫出沒有漏洞的代碼。

不管是寫傳統的應用,還是寫區塊鏈得應用,或者智能合約。通常情況下你寫的代碼越多,那麼你可能產生的安全漏洞就越多。

回顧過去的幾年,不管是DEFI還是鏈本身,大家都會發現很多各種各樣的漏洞,導致很多用戶有各種各樣的財產損失。

這就使得區塊鏈本身需要一個比較好的升級——不管是智能合約升級還是鏈本身的升級。

但如果我們頻頻地去使用這種硬分叉進行升級,首先時間趕不上,因為升級需要“各個礦工在很短的時間內,把自己的軟件升級到最新的版本,然後在某一個特定時間內大家共同去升級到這樣的版本,最後從舊鏈切入到新鏈上面”的這樣的一個邏輯。

然而,由於硬分叉,這種升級模式成本極高,而且很多時候可能會導致你本身的鏈又分叉出其它的鏈。

那麼像Substrate就有一個無縫的鏈上升級。其實就是將開發者相對應的一個Runtime提交到鏈上面,然後進行一個驗證者鏈上投票,大家可以看到這其實是跟鏈上治理相關的。

鏈上投票完成以後,如果絕大多數人同意進行對應的一個升級,那麼開發者提交的一個Runtime就會被寫入到整個鏈的Runtime裡邊,進行對應的升級。

圖片描述

圖片描述

圖9

6、鏈下工作機(off-chain worker)

大家都知道,在以太坊上面我們有各種各樣的預言機,例如chainlink 。

在過去的半年,預言機是很受到各種各樣的人的關注的。

圖片描述

圖片描述

圖10

那麼這些鏈上的驗證節點,就可以對鏈條數據直接進行處理。

未來的話可以對處理結果——例如在鏈上形成共識,來保證可以更快、更方便的拿到鏈下信息,並進行相關的計算。

像在波卡或Substrate對應的生態裡,就不太需要這種單獨的預言機。因為對應的這種鏈下工作機的接口已經寫的比較好了。

與此同時,大家也可以看到對應的這樣一個場景:除了我剛剛提到的想去拿一些鏈下數據;還有就是使用鏈下工作機的一些場景。

圖片描述

圖片描述

7、如何更好的接入到波卡里面?

7、如何更好的接入到波卡里面?

前面我講了一些關於例如波卡是如何使用Substrate進行開發的,以及Substrate寫出來的Runtime大概是什麼樣的,同時還有Substrate進行開發的優點的話題。

那麼大家可能也更想知道:如果用Substrate去開發出一套區塊鏈系統,我是如何更好的接入到波卡里面的?

圖片描述

圖片描述

圖12

不同的鏈如果接入到中繼鏈裡邊,它們就會作為一個平行鏈接入到中繼鏈裡邊。

很多比較大的區塊鏈系統,例如比特幣或者以太坊,它們如果想接入到波卡里面,就需要通過橋首先調節到一個平行鏈上面,再通過平行鏈與其他的平行鏈溝通。

作為平行鏈,它們對於內容的或者區塊的驗證要通過中繼鏈相關的驗證節點來完成。

那麼的話大家就會問,平行鏈本身需要什麼節點?這就像圖裡面提到的一樣,需要叫做collator的這樣一個類型的節點。

這些節點就負責採集每個平行鏈對應的區塊,然後提交給中繼鏈隨機選擇的一些區塊驗證節點。這些區塊驗證節點就會去驗證平行鏈裡對應的區塊。

圖片描述

圖片描述

圖13

8、Web3基金會如何支持波卡生態發展?

波卡生態裡面的項目特別活躍。大家可以看一下,不管是基金會還是Parity,我們對波卡生態項目的支持,都是很高的。

例如我們在大概3月的時候,就已經發放了超過100個項目對應的Web3項目,與Web3基金市場grant的支持。

圖片描述

圖片描述

圖14

在亞洲或者國內,大家可以看到從今年5月份開始,我們跟萬向合作做了Web3訓練營,孵化了15支團隊。

這15支團隊大部分已經上了相關的測試網和主網。然後像做融資等也都是非常受歡迎的。

未來,我們也希望有更多、更好的團隊可以加入到我們的Web3訓練營裡。我們會提供技術、商務以及市場相關的支持。

全球已經有超過100個團隊基於Substrate進行開發區塊鏈。

我們作為亞洲團隊或者說中國團隊,大家可以看到,在過去的一段時間裡,我們已經為大家提供了各種各樣的Substrate開發的相關中文資料。

不管是知乎專欄、Polkadot公眾號,還是線上、線下活動,包括嗶哩嗶哩直播,都歡迎大家去搜索Substrate,或搜索我們的社區,積極加入到我們的活動裡面。

圖片描述

圖片描述

圖15

問答環節

問答環節

問答環節

問題一,來自網易區塊鏈創新業務負責人胡志敏。

胡志敏:如果作為一個開發者,想在波卡生態中和基於Substrate上進行區塊鏈創業的話,一定會需要一些啟動資金,我想了解polkadot官方基金對於區塊鏈應用的扶持策略,比如對於什麼樣的項目會啟用官方投資?

賈瑤琪博士:關於波卡生態和機器設備進行開發的相關項目和團隊,我剛剛已經講過,不管是基金會還是parity,都會提供比較大的支持。

關於資金方面,基金會會根據項目相關的資質來進行評估。

大家可以去申請一個叫做Web3 grant這樣的一個項目。對於一些相對比較好的項目,基金會會提供大概3萬美金的一個支持。

當然,對於比較複雜的項目也會提供更高資金的支持,但是需要花費更長的時間進行審核。

對於一些相對成熟的、有產品或者有測試網的項目,可以申請我們比較成熟的、相關的一些program。例如builder program或者我們的web3 bootcamp,web3訓練營。我們會對這些項目提供技術市場以及商務相關的指導與幫助。

與此同時,我們也會聯繫波卡生態裡比較積極,支持我們的相關投資人或者海內外投資人,去幫忙觀察一下這些項目,並且進行一些相關的投資。

問題二和問題三來自Coinversation代碼貢獻者,北大畢業,有12年程序開發經驗的清歡。

問題二

清歡:如果開發平行鏈,後續平行鏈接入卡槽的成本會是多少?

賈瑤琪博士:針對第一個問題,如果開發平行鏈,那麼插槽的成本會是多少?目前來講,我們還沒有一個很明確的計算。例如大概多少的dot你可以拿到插槽。但就目前來看——因為我們的插槽不是直接去買賣的,而是需要用戶去鎖自己對應的一個dot——那麼的話,其實我們還是鼓勵不同的團隊去更好的發展自己的社區,在未來可以通過眾籌的方式或去發展自己平行鏈這樣的一個盈利能力,然後就可以用自己盈利獲得的資金去進行插槽拍賣。

問題三

清歡:Coinversation使用ink!智能合約開發項目,目前從開發工具到智能合約測試再到部署都相對比較煩瑣,後續如何能降低這些開發的門檻?

賈瑤琪博士:ink!現在已經出到第三個版本,具體情況大家可以去看一下。

關於ink!相關的開發、開發的模塊以及相關的組件,我們也在逐步進行開發完善,從而方便更多的開發者去更好的使用ink!科技來進行開發。

目前你講得也很對,可能有些開發工具確實不是那麼地到位。但我們的Web3基金會已經給了一些開發工具的團隊在做類似於remix的一個Ide,來幫助開發者使用ink!進行開發。

問題四

Polkadot社區1群成員:波卡或Substrate的應用開發必須要作為平行鏈嗎?這樣每個應用都開發鏈,平行鏈的插槽不夠了怎麼辦?

賈瑤琪博士:除了平行鏈,其實還是有其他的方法。

第一個方法就是我剛剛提到的,可以去通過平行線程,然後接入到系統裡面。

平行線程不需要一個平行鏈團隊獨佔一個插槽超過半年或兩年。它只按需競拍不同的區塊,然後把自己的區塊寫入到波卡系統裡面。

當然,還有一些方式。如果你只是搭建一個比較簡單的應用,那麼可以嘗試使用ink! 或Solidity編寫智能合約,然後可以將自己的智能合約或者相關的應用部署在智能合約平行鏈上面。通過智能合約平行鏈去調用以及提供數據給其他的平行鏈,還可以利用到波卡對應的跨鏈優勢。

還有,也可以搭建一個單獨的Substrate的鏈。未來通過某種方式橋接到一些平行鏈上面,那麼通過平行鏈就可以將自己鏈的數據與其他平行鏈進行溝通。

大致的話通過以上三種方式,再加上拍賣平行鏈插槽,然後接入波卡。一共四種方式來接入到波卡的系統裡面。

丨密码极客丨
作者文库