區塊鏈擴容所面臨的問題有很多:

1. 交易數量陡增。例如一些獨角獸和以太貓。

2. 現在產生區塊的過程,擴容性受到限制。區塊中的 gas limit,使得區塊的計算能夠受到限制。但是提高 gas limit 或者過多地減少區塊時間,都會導致過高的等待時間,並且降低網絡抵抗攻擊的能力。

3. 缺乏並行性(parallelizability)。首先,現有的以太坊虛擬機是線性處理交易。其次,每個全節點都要處理每個轉賬,然後把整個狀態樹都存儲,從而確保安全性和去中心化。

爲了解決擴容問題,分片技術通過進行鏈上狀態分區,可以獲得更高的吞吐量。

Ethereum

技術方法

首先,我們需要了解區分主鏈和分片鏈上的一些專業術語:
1*oRORjAbsI6_vosijIahGdQ

你可以很容易地看出,轉賬應該都整合在一組“校對”裏面;就和一個區塊類似,這組校對也指向它鏈上的主校對,這就是我們要談論的分片鏈。成爲“校對器”意味着有資格來在權益證明的分片鏈上提出新的校對。

1*rBAYH2pZwHYPF8mH-NA3rQ

基礎二次分片

分片鏈的共識取決於主鏈

和側鏈技術類似,只有很少部分的驗證需要記錄在主鏈上,這也是我們想要擴容區塊鏈的基本方案:(i)分片鏈有他們自己的轉賬方式,分片的驗證者只需要驗證他們在觀察的分片;(ii)分片鏈仍然追蹤主鏈,來通過權益證明機制來獲得更高層次的共識。

驗證者管理合約(VMC)

爲了加入主鏈上的分片鏈,就需要在主鏈上增加特殊的合約,被稱爲驗證者管理合約(VMC)。VMC 是這個分片機制的核心 ; VMC 的目標可以看作如下:
1. 權益證明系統。如果驗證者做出欺詐,他們的抵押就會被沒收。
2. 僞隨機抽樣。通過將最近的區塊哈希值作爲起源,來選擇合適的校驗者。基本上來說,驗證者會將他們的權益抵押放入 VMC,然後他們的驗證代碼地址就會在 VMC 內部的通用驗證者池列表中記錄。一個分片鏈的驗證者會從驗證者池列表中被抽樣,然後成爲特定時間段(正如下面解釋的那樣),特定分片的校驗者。這個想法是爲了讓驗證者不能預測他們何時會成爲校驗者,以及他們會成爲哪些分片的驗證者。
3. 校驗頭部驗證。VMC 包含 addHeader(bytes collationHeader) 函數,用來驗證校驗頭部,同時也爲有效的校驗頭部哈希寫下記錄。這個函數會立刻提供鏈上驗證。
4. 跨分片通信。通過使用 UTXO 模型,用戶可以將以太幣通過轉賬調用存入特定的分片,並且在主鏈上創建回執(帶有回執 ID)。分片鏈的用戶可以通過給定的回執 ID 創建消耗回執的轉賬,從而發出這個回執。
5. 鏈上治理。通過讓 VMC 作爲國會。它能讓驗證者在鏈上進行投票。

如何在分片中提出校驗?

VMC 會維護 100 個分片 (SHARD_COUNT = 100)。每個分片都會同步處理轉賬,而且分片 i 的客戶端只需要驗證分片 i 上的轉賬。“時間段”是通過區塊時間窗口來定義的,例如 PERIOD_LENGTH = 5 表示這個時間段有 5 個區塊產生。這會在每個時間段進行說明,對於每個分片,只能少於或等於 1 個有效校正。

1*Utj_kmEEENsOEyHPVJ9Ndw

一旦驗證者選出來成爲校驗者,並且提出新的校驗,那麼這個校驗者就必須要驗證近期的校驗,同時發出轉賬,調用 addHeader 函數。需要注意地是,如果校驗者在第 10 階段被選出來進行新的校驗,這意味着 addHeader 轉賬就必須要包含在階段 10,也就是說,區塊數 10 * PERIOD_LENGTH to block number (10 + 1) * PERIOD_LENGTH — 1.

1*Zv2eD1bzLcspLYpJ2k0L9g

校驗的頭部哈希必須要記錄在 VMC 上,從而證明它的頭部是有效的。而且,分片的其他驗證者必須要時刻地觀察 VMC,從而獲得最新的狀態。然後驗證是否這些轉賬是有效的。

分片鏈的分叉原則

在基本的分片技術中,分叉選擇準則取決於最長的主鏈。給定分片的有效頭部並不是簡單地“最長有效分片鏈”的頭部校驗,而是“所有最長有效主鏈中的最長有效分片鏈”。

下圖的例子中,主鏈有兩次硬分叉,而且第二個鏈在下圖中是最長的有效主鏈。因爲 block B3 是頭部區塊,很容易就可以看到審查 C3 是頭部審覈。
1*YVNaetM6pRt9uFhB0P-3GA

然後 block B3′就會到下圖中的流程。假設現在 block B3 的得分是比 block B3′的分數高,所以上面的鏈仍然是最長的主鏈:

1*5w2oNFirHzE_t9Vu749cZw

最後,block 4 就會到下圖的流程。需要注意地是,在這個分片中,collation C3 就比 collation C2 的分數更高,但是下面的鏈是最長的有效主鏈,所以 collation C2 就是現在的頭部審覈:
1*Mb_Lj5NMlfVu7HtdqKVYfw

在擴容性和安全性之間找到平衡

區塊鏈系統只能至多有以下 3 個特性中的 2 個:去中心化,擴容性和安全性。

分片其中一個重要的機制,就是如何在鏈上產生隨機性。

-被選爲審覈者的概率應該只是相對的,並且和驗證者的資金存入成正比。
-如果驗證者可以預測或者選擇他們要參加的分片,那麼最不誠信的驗證者就可以和其他人串通,並且開始惡意攻擊。
如果抽樣過程不能有很高的隨機性,那麼攻擊者就能開始在分片中開始 1% 的攻擊:如果有 100 個分片,攻擊者就可以專注於攻擊某個特定的分片,他們只需要 1% 的哈希力(PoW)/ 抵押(PoS)就可以控制整個分片。

1*oFqPmM3MX9plcAZLGHr1PQ

區塊鏈分片的顯性最終確定性

顯性最終確定性 vs 隱性最終確定性

首先,我必須要澄清分片機制應該能夠應用在工作量證明和權益證明的鏈上;儘管如此,例如 Casper 的顯性終結性會讓分片變的更強。

在通用的工作量證明鏈上,終結性是有概率的和隱性的;換句話說,儘管區塊已經有了上千次確認,還是有可能去重寫這個鏈。相反地,使用權益證明的 Casper FFG 數字經濟機制就會有顯性的終結性,也就是說我們可以檢查在這個協議中,是否已經是最後的結果。
對於協議內的顯性終結性,其中也有一個經濟風險。在 2/3 + 1 and 1/3 + 1 的時候,它會創造最理想的尺寸。相應地,任何不在 2/3 + 1 處進行審查的節點,就會變爲 0。

取決於主鏈的最終確定性

在普通的分片技術中,分片鏈和主鏈掛鉤。對於分片驗證者而言,我們希望分片技術,區塊鏈性能可以是單個鏈的 100 倍,因此這些 100 個分片的所有驗證者都需要觀察 VMC 的狀態,從而獲得正確有效的頭部審查。對於驗證者來說,清楚地知道他們是審查者,這點很重要;對於普通用戶,如果我們應用第 2 部分的跨分片轉賬,普通的用戶也需要取回在 VMC 上的存款信息(回執 ID)。顯性的結果會幫助降低主鏈和衆多分片鏈之間的不確定性。

顯性最終確定性可以幫助無狀態客戶端

無狀態客戶端是指不存儲整個狀態樹的客戶端,他們只存儲狀態樹根部的狀態。歸檔客戶端存儲全部的狀態樹,並且提供審查所需要的 Merkle 樹分支。通過這些 Merkle 樹分支,無狀態客戶端能夠打造部分狀態樹,而且驗證審查。
一旦驗證者被選出,整個過程就會開始同步,並且開始洗牌(也就是說,改變驗證者觀察的分片,並且同步分片鏈)。通過無狀態客戶端機制,洗牌的花費幾乎降爲零,因爲他們只需要驗證最近的審查(也就是說,那些分數高的審查)來同步分片。

1*VghvwY65nmMC7yHWaJsVWQ

由於同步過程會快很多,無狀態客戶端模型會可以在每個審查之間進行混洗。它不僅會減少存儲負擔和開銷,而且也會讓這個系統更加安全,因爲頻繁採樣能夠獲得適應性攻擊的抵抗能力。

雖然同步的費用變得非常低,但是在某個時間段,無狀態的驗證者仍然需要驗證儘可能多的審查(collation),來確定他們會獲得最高分數的有效審查(collation)。

Casper FFG 將會提供顯式最終確定性閾值 after about 2.5 “epoch times”,也就是說,125 個區塊時間 。如果在再混洗期間,驗證人能夠驗證超過 125 / PERIOD_LENGTH = 25 collation,分片系統能夠從顯式最終確定性中受益,確信從現在起的前 25 個 collation 可以最終確定。當然了,如果在同步時有更多 collation 得到驗證,就會更加安全。

結論

希望此文可以給大家一個關於目前以太坊分片設計的初步介紹,以及顯性的最終確定性是如何能夠讓分片機制獲得好處。

發文時比特幣價格 ¥55781.01

原文:https://medium.com/@icebearhww/ethereum-sharding-and-finality-65248951f649
作者:Hsiao-Wei Wang
編譯:nuszjj
稿源(譯):巴比特資訊(http://www.8btc.com/sharding-finality) 版權聲明:
by
nc"
sa
作者保留權利。文章爲作者獨立觀點,不代表巴比特立場。

來源鏈接:www.8btc.com