Substrate — Polkadot 的基石
上禮拜我們提到了DOT,這禮拜開始我們來針對幾個著名的加密貨幣專案,使用程式碼的角度來給大家講解一下程式基本面,首先我們從 Polkadot 開始,提到 Polkadot 我們就不得不提到他所用到的 Framework: Substrate
按照慣例,先上圖:
什麼是Substrate?
Substrate 是一個區塊鏈的 software framework,所謂的 software framework在程式的我會把它定義為:
software framework: 一套定義了執行流程的模組化程式工具
一般來說,我們在寫程式的時候,有點像是在下指令給別人執行,而這個執行流程是可以復用的,以部落格來說好了,讀文章跟寫文章這兩個功能大概是所有部落格服務都要有的,於是我們就可以把這兩個服務流程給他模組化,讓所有想實現這兩個功能的都可以直接套用。
執行流程:
我們用一個生活化的例子來說明執行流程:
假設今天媽媽要你去菜市場的雜物攤買雞蛋,他的流程可能是這樣的:
1. 先去錢包拿300元
2. 騎腳車去菜市場的路口
3. 路口後往左轉的右邊店家的第三家
4. 買10顆雞蛋
5. 找錢,騎腳車回家
6. 因為時間很趕,所以全部麻煩在十分鐘完成
程式語言就是在執行類似的東西,只是他有語意上的定義以及他是要寫給電腦看的。簡單的事情可能很快就能完成,但如果是很是複雜的事情,每一個人要寫一個不一樣的東西其實有點煩人。
就如上面所說,因為中間有很多東西是可以共用的,那我能不能把這些公用的功能模組化 ? 這樣大家就不用寫一樣的東西了。
以上面的買雞蛋指令當例子來模組化的話,那這樣買東西的 framework 可以是:
1. 先去__拿___元
2. 使用__移動去___的___
3. 走到___的地方
4. 買___的___
5. 找錢,使用__宜動去___的___
6. 因為時間很趕,所以全部麻煩在十分鐘完成
填空的地方就看你的需求而定,這樣就形成了一個小型的framework了,因為他已經把你的流程決定了,你只要在空格上填上你要的就行了。
因為他把共用的功能幫你完成,剩下不同跟訂製的部分就是你可以發揮的地方。因此,相對全部功能都要自己開發,這樣的流程可以幫助你加快開發速度。在程式開發史上,Framework的產生可以說是該行業要蓬勃發展的一個徵兆。
打個比方來說,在 Web framework發展的過程中,我們可以看到很多網站的應用開始變得玲琅滿目,因為每個人可能靠著相對簡單的程式碼就可以經營一個網站,而且他可以根據自己的需求而進行客製化。
另一個簡單的例子是 AI,熟悉AI發展的人都知道, Tensorflow、Pytorch這樣的 framework 簡直是許多 Machine learning 研究者跟開發者的福音,沒有這種工具,很多研究跟應用大概需要很多年才有辦法研發出來。因為不是每一個研究者都對程式語言跟計算的研究這麼深入,他們可能是專注在數學跟演算法上,如果他們要自己實作這些程式細節,所花費的功夫可能是現在時間的兩三倍以上。
架構:
在 Substrate 的架構上,它分為幾個部分,一個是 Primitive,一部分是Client,在網上則是 Frame的部分,這邊大概做一個解釋,詳細的部分各位可以在 github 上做觀看。
Primitive
主要的部分在於一些區塊鏈的基礎建設,像是通信機制、共識的演算法等大家在建設區塊鏈都會用到的部分,這些基礎建設都已經幫你鋪好,他就有點像你在間房屋的時候,已經把建設所需的設備跟材料都已經幫你備齊,你要的就是應用這些材料區建設你的房屋。
Client
就像是你在建設房屋一樣,把上面 Primitive 的準備材料拿出來應用,打造成一個家的毛胚屋,所以他會把骨架架好,把你的鋼筋水泥鋪好,把整個房間隔間都弄好。我們拿其中的 Service模組來說好了,他已經定義好整個服務的架構應該是怎樣,接下來你就可以根據這個架構來設定你的服務。
Frame
把外表進行改裝跟裝潢,把這個家裝修成你要的樣子,把你想要的特色跟價值給營造出來。在這個資料夾裡面,他所包含主要是整個區塊鏈所要實作的機制的程式碼。
例如:裡面有個功能叫做 Treasury,他就是在鏈上的一個機制,用來治理整個區塊鏈,像這樣主要面對使用者的功能通常會放在 Frame上面,而開發者在開發自己的鏈的時候,主要也是新增功能在這個資料夾裡面,然後他就會變成整個鏈的 Runtime 之一,因為 VM 機制的關係,他可以保證你在更新的時候減少硬分岔的可能性。
在以往的開發時間,如果開發者需要訂製自己的區塊鏈的話,很多時候只能去修改以太坊或者比特幣的原始碼,或者是自己重寫一個,自己重寫的話所需的時間太多,一班的商業開發者難以進行這樣的賭注,但有了這個Framework,他便可以比較輕鬆的完成這樣的工作,這對整個區塊鏈的發展是有很大的影響的。
擴展性:
以剛剛我們看到的那幾層架構來說,我們可以很清楚的知道,他把整個程式架構分層幾個部分,意味著使用者可以根據自己的需求去修改跟增加功能跟套件,很多時候你在訂製自己想要的功能時候,只需要增加 Frame 的部分就夠了,這個部分往往代表的是你的區塊鏈特有的功能跟特色。
跟整個 ETH 的機制不太一樣,在 ETH 裡面,你所做的是使用 EVM 的方法去執行你的智慧合約,理論上,這個合約可以是一個更通用的計算程式,比如說一個遊戲,如此一來你的合約上面所運行就是一個遊戲。但目前來說,這個運行的速度太慢,而且要把現在 Solidity 的設計改成這麼通用,其實還有很多路要走。
而在 Polkadot 上面,除了可以發佈類似的智慧合約來進行計算,你還可以自己訂製一條專門在運行遊戲的遊戲鏈。這個遊戲鏈可能就是由玩家自己去運營的,不會有任何的廠商來控制這個遊戲,完全由遊戲本身的鏈來進行管理,可以說,這個 Framework 打開了整個鏈的應用模式,讓這些商業應用的可能性大大的提高了,同時間也把難度給降低了。
結語:
還記得從1990年開始,網路的出現改變了我們生活的型態,那個時候我記得有一個比賽,是由一群人關在一個房間裡面好幾天,不能出門要撐在那個房間最久的就獲勝,在那個時代,這個遊戲到最後是變成大家在忍耐飢餓。
但最近你會發現這件事情是在正常不過了,因為網路的生態漸漸發生改變了
電商的能力越來越強大,網路世界不只拉近我們之間的距離,他同時重新定義了我們這個世界的經濟樣貌。
因為網路我們在上面分享甚至開店 進而發展出不同的事業,而去中心化可能也扮演著類似的角色,透過這些網路自願參與的人的分享跟貢獻,他逐漸可能撐起一個服務所需要的資源,到那個時候,這些幣就不在只是被炒作的標的,他代表著這個服務的經濟價值,就像這些網路商店跟網路服務所走過的路一樣。
如果你對動量投資跟加密貨幣有興趣的話,歡迎訂閱Telegram,會有最新的資訊分享
Telegram:https://t.me/cryptonature