基於證明委員會的完全PoS鏈,第二版
Attestation committee based full PoS chains, version 2
假設有一個PoS鏈,其中有某個驗證人集V,且區塊被再分成長度為EpochLength的時期;讓每個驗證人在每個時代都投票一次,因為這樣對共識周期非常重要且可以最小化RNG操縱產生的收益。鏈中存在隨機熵來源;假設隨機熵每個時期更新一次。每個時期開始時,隨機置亂V並將其劃分為S1到SEpochLength的片,每個片大小為SSize = V/EpochLength,並且將活動分成連續的T1到TEpochLength的時隙。
消息有兩種類型:區塊和證明。區塊是一種數據結構,包含指向父塊的指針、一組消息,以及父塊或另一個早期塊的一組簽名(「證明」)。區塊包含至少SSize/2的父塊證明(>= SSize/2)。區塊必須指定出塊所時的時隙編號;假設區塊出自時隙i,該塊的直接證明人必須來自集合Si,且簽塊人必須為Si的第一個成員。
注意,步驟i + 2中的區塊不僅可以包含在步驟i + 1中創建的父塊證明,還能包含歷史較早區塊的證明,或同一鏈外部的區塊證明。
若頭部區塊由Si的第一個成員在時隙i產生,則其他證明人會共同簽署該區塊。若區塊不在頭部產生,那麼其他證明人可以簽署一條消息,聲明自己認為的當前頭部。因此,實際上有兩種方法可以將i高度的區塊證明包含在j> i + 1高度的塊中:
1. i <h <j高度區塊的創建人未能包含其
2. i <h <j高度區塊的創建人未能出塊,或者出塊不在頭部。這種情況下,證明人可在h高度創建i<h高度區塊的證明
某區塊父塊證明的出現晚於第一個時隙可能性也是有的(例2),這時可以計入SSize/2的最小(父塊)證明(這也是區塊鏈即便在在線驗證人<12時也能繼續的原因),但是區塊證明就不行了。
注意,簽名人與證明人在區塊結構中處於對稱位置,但在網路層面就不是了:原因是簽名人是唯一的強制性證明人,通常簽名人在出塊後立即簽署區塊並在對簽名區塊進行廣播,然後由其他證明者再次簽名。 這使得區塊的總聚合簽名只有單個簽名的大小,並且計算只需一個配對(至少在所有人都對簽署的東西達成一致時是這樣的)。
分叉選擇規則
最簡單的分叉選擇規則就是高度計數。理想分叉選擇規則是GHOST,工作原理如下:
1. 始於創世塊(或最近的最終塊)
2. 令「當前塊」為當前演算法正在查看的區塊(即創世或最近的最終塊)
O若當前塊無子項,則退出。
o若當前塊只有一個子項,則將當前塊設置為該子項,然後繼續
o若當前塊有多個子項,則將當前塊設置為有更多有效最新簽名的子項,簽名來在該塊或塊的某些後代上簽名的驗證人
3. 重複步驟(2)直至退出,並返回當前塊作為頭部。
舉個例子,看下圖,其中A、B….M代表最近的簽名,帶有這些簽名的區塊也就意味著區塊被簽名證實:
頭部為綠色塊,原因是:
· A是最後一個最終塊的唯一子項
· B和C是A的子項。B比C有更多的簽名支持自己或後代。
· (D E)是B的唯一子項。
· F和(G H)是(D E)的子項。(G H)有5個簽名支持自己或後代;F有3個,因此(G H)獲勝。
· (I J)和M是(G H)的子項。(I J)有2個簽名支持自己或後代;M有一個,因此(I J)獲勝。
GHOST保留了『擁有最多簽名支持鏈是獲勝鏈』的屬性,這(個屬性)是使得復原、審查及其他攻擊極為困難的重要標準
推薦閱讀:
※50行代碼寫就以太坊支付
※壞消息,幣市要止跌回升,連續蒙對7次下跌趨勢的我想跟你吹個牛
※2018年8月30號 數字貨幣行情分析 整理階段切勿輕舉妄動
※數字貨幣的下一次騰飛就在「明天」
※比特幣以太坊萊特幣7月2日分析
TAG:以太坊 |