從2008年中本聰發布《比特幣:一種點對點的電子現金系統》開始,區塊鏈技術開始進入我們的世界,區塊鏈防篡改、去信任等等概念更是被炒的熱火朝天。那么什么是區塊鏈,它能做什么?到底有沒有前途?這不是我們這節要回答的問題(這個機靈是不是抖的很ok?:))我們這節要講的,是一個區塊鏈系統應用的大體表現形式,有些概念或者表達可能不太準確,但是沒有關系,這節的內容只是為了幫我們能更好的學習substrate而已。
1 區塊鏈系統是什么樣的
很多資料都會提到這點,區塊鏈是一個分布式的數據庫,本質是一個分布式的賬本。既然是分布式的,那當然具備分布式的特征,既然是數據庫,是賬本,那么當然能夠記錄數據。關于區塊鏈是怎樣記賬的文檔很多,此處我們不再累述。
要學習substrate,區塊鏈系統具體是怎么去信任、防篡改的,我們可以不用了解太深,但是區塊鏈系統大概長什么樣子,是必須要知道的。就像我們要用積木搭一個城堡,可以不用知道從頭開始建城堡的實際步驟,但是城堡的大概樣子還是要知道的,否則即使有積木也不知道怎么搭。
1.1 區塊鏈的大體樣貌
下圖就是區塊鏈系統的大體樣貌(表現形式)。
從上圖中,我們可以看出區塊鏈的幾個特點:
是一個分布式的系統;
每個節點都有一個賬本;
每個節點的賬本都基本上按照同樣的邏輯記賬;
用戶可以訪問其中的任何一個節點就可以訪問系統。(為了好理解,這里假定這些都是全節點)
1.2 區塊鏈程序的組織結構
上面我們是用戶試圖看到的區塊鏈系統的表現形式,這里我們看看從代碼實現層面區塊鏈的組成。下面是以太坊的架構圖:
以太坊很具有代表性,大部分的區塊鏈通常都是這個架構(所以這張圖要好好記住,比較有代表性)。不過我們放這張圖的目的并不是為了后面實現這張圖里類似的組件。
2 substrate與區塊鏈開發
如果沒有substrate,那么我們開發一條區塊鏈基本上是要自己來實現網絡、共識、交易池等等組件的,也就是前面區塊鏈架構里面的那些東西。而substrate里面就是像提供積木一樣提供了這些組件,然后我們可以像搭積木一樣根據需求搭建出一條條的區塊鏈。
因為要構成一條鏈,無非就是共識、網絡、密碼算法庫、rpc這些東西,每個團隊開發區塊鏈的時候,可能用的東西都差不多,只有某些和自己特定業務相關的模塊才會不一樣。而substrate中已經提供了一些基礎的東西以及一些寫好的模塊,開發者可以把現成的模塊拿來用,只需要開發自己特定的邏輯就可以了。