當討論區塊鏈架構時,經常會提到第1層 (Layer1) 和第2層 (Layer2) 這兩個詞。他們之所以重要是因為他們有兩個功用:
接下來讓我們更深入了解這些概念:
想像一個結婚蛋糕 (如果你願意的話…大概就是有很多層,然後上面還插個新娘新郎的小人那種)。這個蛋糕有個扎實的底盤,就各種功能或目的來說,這個扎實的底盤就代表第1層 (Layer1),它支撐蛋糕的基本架構。因此你大概可以知道第1層就是區塊鏈的基礎,上方的第2層則要依賴這個底盤 (Layer1)。
經過剛剛的解說,你心中已經有視覺化的架構,卡爾達諾 (Cardano) 本身即是第1層(底盤),他本身由3個各自獨立的架構組成。
包含:
網路層 (Network layer)
這層讓Cardano中所有的分散式節點 (distributed nodes) 保持連接,當節點產出新的區塊時,網路層能連結新的區塊並將新產出的交易打包進區塊,接著傳送此區塊使其能和各節點連接。
共識層 (Consensue layer)
這層負責執行兩個基本功能:
帳本層 (Ledger layer)
這層定義出:
帳本層由純函數組成,使用EUTXO會計模型而得出的正式會計規則,去定義接續的帳本狀態間產生的交易。該交易狀態由包含在Cardano區塊中的交易,以及不同紀元 (epoch,編按:cardano的時間單位,1epoch=5天)間和應分叉事件的交易驅使。
前面提到的共識層在運行上不需要知道帳本層確切的狀態,也不需要知道區塊的內容,除了一些運行共識協議需要的頂部資料 (header field,編按:每個區塊的資料結構可區分為不同部分,header field為區塊資料中的第一個部分)。
總結以上,這三 (小) 層組成了Cardano的第1層。
再次看回前面的結婚蛋糕,他很大吧,其上方了包含一層又一層。但看著底部,蛋糕的底盤 (即第1層) 已經擁有固定的大小,他不能變的更大。但同樣的,他必須要夠大才能支撐上方的不同層。上方的東西也只能有特定的尺寸,而這就是為什麼婚禮蛋糕能有不同層的原因。每一層都會在底部之上加入一些東西。如新的填充物、糖霜及裝飾等等。換句話說,每層都使底盤那層往上延伸 (scales)。
去中心化的公開網路 (public networks) 面臨相似的問題,那就是蛋糕的底盤只能容納有限數量的片數,意思是底盤 (第1層) 只能處理固定數量的交易。如果你試著添加過多的片數上去,蛋糕就會開始從邊緣崩塌,然後會毀掉某個人的大日子。同樣的,第1層的節點在崩潰前最多也只能處理這麼多的交易數量。當用戶數成長時,就需要更多的節點去處理交易。為了解決這個問題,該網路需要去進行延展,否則交易 (比擬為不斷加上去的片數) 就會開始從邊緣崩潰。
有非常多讓第1層網路增加延展性的作法,例如增加每個區塊的容量,使每個區塊能打包 (包含) 更多的交易資料。Cardano在2022年時便將每個區塊的容量從8 KB 增加到72 KB (整整12.5 %的增長)。
回到我們的婚禮蛋糕圖,在上方增加層數不僅會使蛋糕更巨大,也能產生實用的功能,如可使加上去的層不同於底盤。如我們可以添加不同的口味、填充物及設計等等。為了迎合不同的"賓客"及不同的偏好。在區塊鏈中,添加新的層 (即第2層) 不僅能使第1層延展,也能讓交易的處理獨立於主要的層 (即第1層)。
Cardano中的第1層延展方案
Cardano目前進入 (Basho,編按:即五大發展圖中增加延展性的階段,該文章為2022年文章) 階段,這個階段完全關於延展性及優化Cardano區塊鏈。當目前的區塊鏈網路更能有效率的處理需求,去中心化程式 (Dapp) 的生態會成長快速且將會因此提供的更多的需求。為了處理這個,不同的延展方法 (包括第1層及第2層解決方案) 正被部屬到Cardano上去容納數以千甚至百萬計的新用戶。
區塊容量增加
區塊的容量增加,能處理更多的交易。Cardano上第一個鑄造出來的區塊的容量為665 bytes (0.665 KB)。今日 (2022/08/05) 區塊的容量為72 KB。那是整整超過10,000%的增幅! 隨著時間,會根據後續系統及整體網路的健康度增加更多容量。
流水線 (Pipelining)
藉由聯合驗證及傳播去改善每個區塊的傳送次數 (編按:區塊鏈中當新區塊被鑄造出來時必須讓所有節點上的區塊知道)。該目標是藉由減少區塊間的"死亡時間" (即區塊傳送的成本) 去讓區塊在5秒內能被傳送到至少95%的區塊。這樣能為較激進的延展改變提供空間,例如增加區塊容量/增加plutus ( 編按:Cardano的智能合約平台) 參數限制。
背書者加入 (Input Endorsers)
進一步來說,更多背書者加入能允許交易被分割成產出前 (pre-constructed) 的區塊來改善區塊傳送的次數及吞吐量。這樣能改善區塊傳播的一致性及允許更快的交易速度。
Plutus的記憶體/CPU 參數
整個鏈的記憶體的使用更有效率,特別是改善處理UTXO、質押分布、實時質押分布以及不同礦池和雜湊值得呈現。
Plutus腳本精進
即使經過優化智能合約去更有效率的使用強大的EUTxO模型,如:
.參考輸入 (CIP-0031) — Plutus 腳本可以檢查輸入的交易而不用去處理他們。代表僅需檢查該輸入包含的資訊而不必產生UTXOs。
.Plutus 資料/Datums (CIP-0032) —資料可以直接被加在輸出上而不用資料的雜湊值。這能簡化資料被處理的方式,代表使用者能看到實際的資料而不用提供符合資料的雜湊值 (編按:區塊鏈中區塊的產生通常為找出對應的雜湊值,才能產出新的區塊)。
.腳本分享 (CIP-0033) — plutus腳本的參考和交易的輸出有關,即它們能被記錄在鏈上為後續重複使用。它不必再提供一份複本,因此能大幅的減少開發者間的摩擦。不同交易中重複使用的腳本顯著的減少交易的大小,改善了吞吐量及減少重新執行腳本的成本。
節點精進 (Node enhancements)
節點的改進能幫助每個紀元質押和獎勵計算平均分配,因而為區塊容量的增加提供空間。同樣的,記憶體的使用也會更有效率。記憶體壓縮減少RSS的足跡,而記憶體分享可以用來說明我們需要更少的資料。2022三月的節點版本1.34.1減少尖峰時關鍵點的負載,包括紀元間的負載。
硬碟上的空間
藉由儲存部分協議狀態在硬碟上,節點可持有較少的記憶體,代表那些記憶體容量受限的系統只要擁有足夠的容量就能去經營節點,因此記憶體將不會變成發展延展性的瓶頸。這將能夠使區塊鏈有顯著的增長。
額外補充:區塊鏈的三角難題
分散式系統-如區塊鏈-的延展性是個複雜的難題。
通常一個"適當"的區塊鏈系統,大家的共識是必需有三個特質:延展性、安全性及去中心化。然而同樣被廣泛相信的三角難題指出一個去中心化的系統只能同時提供三個特質中的其中兩個,而犧牲掉第三個。最早被以太坊的創辦人Vitalik Buterin提出,此三角難題代表開發者們在設計區塊鏈網路時必需永遠接受妥協,或是處在僵持的情況。該妥協代表為了達成2/3的特質,其中一個特質必需被犧牲。
例如,一個網路擁有越多的節點,代表該網路越去中心化,但也代表更多的節點必需被信任以維持安全性。為了維持安全性,將會有更多的費用產生以使潛在的攻擊過分的提高。然而一個網路必需吸引更多的參與,所以每個節點的成本必需是相對低的。同樣的,根據區塊鏈的特質,只要區塊鏈存在,即代表區塊鏈的資料會不斷的增長下去。更大的網路表示為了維持效能,會需要更多的運算資源。而更多的效能 (更多的運算資源) 便需要更好的硬體設備,因此必需有足夠的區塊獎勵去讓 (節點的) 投資值得。
解決這個三角難題需要小心且周全的方式,才能使三者特質保持在一個平衡狀態。
理論上,一個區塊鏈系統會永無止盡的成長下去。當越多節點加入系統後,將會有更多的資料流,並有更多的交易需要被處理。以上這些皆須要算力及容量。隨著時間,需求會持續成長,因此以下描述的系統將需要進行延展去防止戲劇化的系統崩潰發生。目前有兩種延展的方式:垂直及水平的延展。
垂直延展
這項技術包含藉由增加更多記憶體及更好的硬體單元去拓展個別節點的運算能力。換句話說,升級網路的硬體以達成整體更好的效能。例如能支援更大的區塊容量及更快的區塊傳播。
但缺點則是去中心化會因為(節點)高營運成本被限制,這將會使新的節點經營者猶豫是否該加入而阻礙網路的成長。相同的,這樣的網路會使驗證者的節點運行成本提高。
水平延展
相對於垂直延展,水平延展能以兩種方式達成。第一個方式,只要增加更多節點到現有的網路,該網路便有能力處理較多交易(編按:好比工作平分的概念)。
第二個方式是使用側鏈,側鏈能將一些運算負載抽離主鏈,能用不同的共識協議或治理模型提供客製的形式去服務特定的專案或產業,就好比附加的優點。
從安全來看,側鏈可以產生一個更安全的生態,因為其能從主鏈中隔離出潛在的威脅。如果側鏈被駭了,該風險只會被限制在側鏈上,因此能保護剩餘的網路。
廣泛地說,第2層方案處理第1層的延展性問題,第2層建立在現有的區塊鏈上(就好像增加新的一層到婚禮蛋糕底盤上),第2層協議幫忙處理一大堆本來是第1層主鏈要做的工作。這樣不僅增加了主鏈的吞吐量,額外的優點還有第1層能保持它的安全性,因為第2層方案負責了艱辛的工作。
除此之外,第2層這種建立在主鏈上,但工作在主鏈外的協議能使資金自由且安全的在主鏈及 (主鏈外的) 側鏈間轉移。因為第2層減少了網路的壅塞,該協議改善了整體的吞吐量及延展性問題。
Cardano上的第2層延展性解決方案
側鏈,可定義成一種能允許多條區塊鏈去彼此交流且彼此間能對互相事件做出反應,是一種連接主鏈 (又叫做父母鏈) 的分離區塊鏈。經由雙向機制 (跨橋) 能允許代幣及其他數位資產從一條鏈上被使用在另外一條鏈上,然後將得到的結果傳回原先的鏈。若需要的話,資產也能在鏈之間移轉。
一個父母鏈能接受多個彼此交互互動的側鏈連接,因此能用完全不同的方式運作。如Cardano上的EVM (Ethereum Virtual Machine,編按:能與以太坊相容的意思) 側鏈包含dcSpark’s Milkomeda與IOG's EVM 側鏈專案。
2.Hydra (九頭蛇)
Hydra是Cardano的一個第2層延展性解決方案,主要目的為藉由低延遲及高吞吐量和最小化交易成本去增加交易速度。
Hydra Head是第一個Hydra家族的協議,且體現出經由依賴同構多方狀態通道 (isomorphic state channels) 去更進一步的佈署情境。藉由使用主鏈帳本當作安全的結算層,再用鏈下 (off-chain) 處理交易提供更多效率,Hydra Head能在較鬆散的綁定主鏈同時,提供安全保證。不需要整個主網達成共識,它能適用於廣泛的應用。同時,Hydra Head允許彈性 (可高可低,依據使用需求) 的交易費、腳本執行預算,及其他協議參數。例如,這對於能運行微量交易是非常重要的。
另外,Hydra Head引進了同構多方狀態通道概念,此通道能重複使用相同的帳本呈現,去取得一致且鏈外的兄弟帳本 (我們稱此為Heads頭,這也是Hydra名子的由來)。特別是在Cardano上,這代表原生資產 (native token,編按:鏈上原先的資產,Cardano上即為ADA),及非同質化代幣 (NFTs),與Plutus腳本都可存在在每個Hydra Head上。同構允許一個系統的自然延伸,而不是螺旋連接 (編按:意思推測為只要延伸原本的,而不需創造新的並硬把他們接起來)。
Hydra Heads能在一個Head之內出色的達成近乎即刻的完成 (編按:代表作任何動作可以瞬間完成)。設定開啟及關閉一個Head的過程可能需要幾個區塊產生的時間,但一旦建立,交易能在合作的參與者間快速的流動。因為Hydra Heads為同構且使用EUTXO模型,他們能同時處理非衝突的交易,同時伴隨好的網路交互,因此能允許最佳化的使用現有的資源。
解除某些運算的負載,例如藉由Asynchronous Contract Execution (ACE)能驅使更多的核心網路效能。交易能自主發生在區塊鏈外,而能經由信賴模型 (trust model) 提供快速且便宜的交易。
2. Mithril秘銀
為了達成更多的延展性,處理依賴且對數化參與者們的重要運作的複雜性是必需的。Mithril是IOG發展的協議,其能扮演一個質押為基礎的門檻簽章模型,可允許透明、安全且輕量的質押槓桿。Mithril將會在維持鏈上的安全性同時改善鏈的同步能力,能得到安全且有效率的多簽章整合,而不用在安全上妥協。
一個區塊鏈網路有各種神祕的運作方式,其中一些概念包含了難懂的去中心化帳本系統。
但不包含第1層及第2層的概念,只要你能用婚禮蛋糕的層數去視覺化。
.第1層 (蛋糕底盤) =扎實且安全的底層網路,在第2層解方之下
.第2層 (底層上方的層們) = 建立在底層之上的方案,為了解決延展性問題
這就是最簡單的能去視覺化和理解第1層及第2層是什麼的方法!
.Cardano本身是第1層 (底層網路)
.一個第2層的方案是建造在第1層之上的結構,能去處理第1層的延展性及交易速度問題。比特幣的閃電網路就是第2層方案的範例之一,就好比Cardano上的Hydra
.有兩種擴容選項:垂直及水平延展
.垂直延展包含藉由增加更多的記憶體及更好的硬體單元去提升個別節點的運算能力
.水平延展可以用兩種方式達成。第一種:增加更多節點到既有網路中;第二種:使用側鏈,側鏈能將主鏈的負載抽離開來運算
卡爾達諾Cardano在2022/2023年將會看到各種的延展性方法實施。