區塊鏈分層架構
區塊鏈大致上分為三大主層:
Layer0層
主要工作是針對區塊鏈與傳統網絡結合的非共識問題,可以簡單理解為網際網絡的資料傳輸,目前只有少數項目針對Layer0進行研究與開發。
Layer1層
包含了所有區塊鏈的底層協議,主要負責安全、節點共識規則和帳本架構。
Layer2層
所涉及的是鏈上與鏈下的協議,主要負責鏈上鍊下消息傳遞、智能合約編程以及應用相關功能。
這三大主層中又可分為七個子層,非開發者不需要執著於深度了解,只需要了解區塊鏈由哪些層面設計而成即可。
你可能會納悶,分了三層了為什麼還要細分那麼多子層呢,搞得那麼複雜幹嘛?
原因在於現階段區塊鏈技術太年輕了,區塊鏈本身還有很多問題存在,藉由將區塊鏈分成多個子層,可以讓我們對區塊鏈的架構更清楚也能讓開發人員能夠針對不同的層面,去開發能夠改善區塊鏈瓶頸的“擴容方案”。
例如針對共識層提出的“DPOS”、針對網絡層提出的“分片技術”或針對數據層提出的“區塊擴容”等。
擴容方案
首先解釋一下什麽是“擴容方案”,所謂的擴容方案是指“為了改善區塊鏈交易速度使其達到規模化所提出的解決方案”,各層所提出的擴容方案,其最終目的都是為了解決區塊鏈交易速度的問題。
要改善區塊鏈交易速度和規模問題,解決方案分為兩種:
將主鏈的事物分割處理ex.分片技術(Sharding)
區塊鏈本身的設計並不具備“可擴展性”,也就是說,區塊鏈的節點不管增加多少,都沒有辦法提高區塊鏈處理交易的速度,以比特幣為例,不論有多少人加入挖礦的行列,區塊鏈依然是每十分鐘出塊一次。
我們可以用老師改考成交量來舉例,現在區塊鏈驗證交易,就像每個學生的考成交量都統一由學校裡的一位老師經手批改與紀錄,然而這會導致全校學生的考成交量需要花費兩個禮拜的時間才能夠完全審核完成,效率低下。
如果將考券分成五等份,改由五位老師批改,審核速度便可以提升五倍。
但是,如果每位老師都固定批改某個班級的考成交量,學生就會知道哪位老師會負責他班上的考成交量,學生就會有收買老師的可能。
因此,要如何分配考成交量才能保證成績的可信度,就是這個解決方案的重點。
將主鏈上的事物轉移到其他地方處理ex.側鏈、子鏈
舉個簡單的例子,每到假日,主要交通幹道都會擠得水洩不通,車速每小時20公里,回到家都半夜了。
如果這時候我們能夠另外開闢一條快速道路或高速公路,就能有效舒緩主要交通幹道的車流,平均車速也能提升至50公里。
Layer1擴容方案
Layer1擴容方案所關注的點是如何在確保區塊鏈“狀態”在全網的一致性與最終性的前題下,提升區塊鏈的交易處理速度。
過去Layer1擴容方案,大部分是針對數據層和共識層的優化,近年來網絡層的“分片技術”成為各大公鏈項目的研究重點。
例如以太坊2.0的目標,就是希望透過“分片技術”提升目前以太坊在交易處理速度上的瓶頸。
由於區塊鍊是一個開放的網絡系統,任何人都有權利擔任節點參與記帳,如何制定一套遊戲規則,讓所有節點共同遵守,使區塊鏈能夠順利運作是相當重要的問題。
Layer1又稱為底層,也就是所有礦工都必須遵守的規則,其設計是為了讓區塊鏈能夠保持狀態的“帳本一致性”與“交易最終性”,讓節點以不可竄改的方式錨定數據事務,並在沒有中央審查的情況下以加密貨幣的方式達成共識。
簡單來說Layer1就是區塊鏈的協議,大家常聽到的共識機制、區塊、私鑰或地址等等,這些都是Layer1範疇。
補充:區塊鏈上的“計算”又稱為“狀態生成”,之所以會用“狀態”這個詞的原因在於,一般的計算模型裡,不存在信任和安全問題,只需生成計算結果就好,不需要驗證;但是在區塊鍊網絡中,除了計算出交易結果,還需要對其進行驗證。
Layer2擴容方案
藉由Layer2協議,區塊鏈事務的“狀態生成”可以獨立於Layer1之外進行,因此這些協議也可以稱為“鏈下”擴容方案。
使用鏈下擴容方案的主要優點之一是能夠降低Layer1的侷限性,且不需要改變區塊鏈本身的協議。
換句話說Layer2擴容方案盡可能在不犧牲區塊鍊網絡安全性的情況下實現高吞吐量的狀態生成。
簡單來說,Layer2擴容方案的概念就像“塞車”,如果今天高速公路大塞車,我們選擇走車流量少的省道,避開尖峰車潮,雖然路線比較長,但可以比塞車的高速公路來要快到達目的地。
Layer2層所涉及的是鏈上與鏈下的協議,主要負責鏈上鍊下消息傳遞、智能合約編程以及應用相關功能。
也就是在現有區塊鏈系統(Layer1)之上構建的輔助框架或協議。
如果以法律架構來比喻,Layer1就像憲法,是所有法律的依據,法律的製定不能夠牴觸憲法,而Layer1的架構如果要做更動,基本上都必須涉及到區塊鏈分叉,就如同修憲程序一般,複雜且困難。
反觀Layer2就像是依據憲法制定的法律,修改相對簡單,且能夠更符合實際需求。
目前,Layer2協議的主要目標大部分都是為了解決區塊鏈所面臨的事務處理速度與擴展難題。
Layer2不負責驗證
Layer2只負責處理“狀態生成”並不負責“狀態驗證”,最終結算時,還是必需要回到Layer1驗證才能完成交易確認,在這過程中最大的問題來自於Layer2的安全性較低,可能會因為有人作弊而導致生成錯誤的狀態。
因此如何防止Layer2的數據出現錯誤以及數據如何安全的傳回Layer1是Layer2協議設計時的問題之一。
資訊來源:由0x資訊採集自互聯網。版權歸作者“Meta之光”所有,未經許可,不得轉載