国产乱人伦在线播放,99无码精品二区在线视频,最近在线更新8中文字幕免费,精品成人一区二区三区四区

您的位置:首頁 > 區(qū)塊鏈 >

Casper FFG是以太坊2.0的共識機制 引入離線溢金機制應(yīng)對災(zāi)難性崩潰

2019-08-29 08:27:36 來源: 區(qū)塊網(wǎng)

前言2017年,Vitalik Buterin與Virgil Griffith共同發(fā)表了Casper the Friendly Finality Gadget(Casper FFG)。Casper FFG是受PBFT啟發(fā)并經(jīng)

前言

2017年,Vitalik Buterin與Virgil Griffith共同發(fā)表了Casper the Friendly Finality Gadget(Casper FFG)。Casper FFG是受PBFT啟發(fā)并經(jīng)過改良的共識協(xié)議,它雖然被設(shè)計得很簡潔(Simple),但其對安全性的證明卻不簡單(Easy)。

筆者將于本文解析Casper FFG 的原理,讀者可以一窺權(quán)益證明共識所嘗試解決的問題及其設(shè)計理念。此外,Casper FFG 是以太坊2.0 的共識機制,理解其運作也能幫助研究員與開發(fā)者進一步理解以太坊2.0 的設(shè)計。

最后要特別感謝以太坊研究員Chih-Cheng Liang(梁智程)提供重要素材并與筆者共同大量討論及給予回饋,沒有他的協(xié)助便不會有這篇文章的誕生。

Casper FFG 是怎么開始的?

以太坊對權(quán)益證明(Proof-of-Stake, PoS)的研究最早可追朔至2014年的這篇文章。從此之后,以太坊研究員們便一直朝「實現(xiàn)基于PoS的共識協(xié)議」此一目標前進。PoS共識的設(shè)計是一個跨領(lǐng)域且相當(dāng)復(fù)雜的問題,其包含計算機科學(xué)/經(jīng)濟學(xué)/密碼學(xué)等面向。以太坊擁有區(qū)塊鏈生態(tài)系中最跨領(lǐng)域的團隊,對PoS的研究可以說是相當(dāng)透徹。

Casper FFG 受到PBFT 的啟發(fā),并可以被視為改良后的PBFT — 它繼承了PBFT 的重要設(shè)計,同時添加新的機制與簡化若干規(guī)則。若讀者對PBFT 感到陌生。

簡而言之,PBFT 是一個具有二輪投票機制的共識協(xié)議,且具有下列特性:

· 許可制的(Permissioned):只有被「允許」的節(jié)點能參與共識。

· 基于領(lǐng)袖的(Leader-based):只由主導(dǎo)節(jié)點負責(zé)「提案」(Propose),其他節(jié)點只負責(zé)投票,因此需要視域變換(View Change)機制來節(jié)制不誠實的主導(dǎo)節(jié)點。

· 基于通訊的(Communication-based):使用決定性的(Deterministic)多數(shù)決來形成共識,而不是非決定性的(Non-Deterministic)算力解謎賽局。

· 安全性重于活躍性的(Safety-over-Liveness):無論網(wǎng)路是否延遲,協(xié)議都能保證共識的安全性(即不分岔),這賦予協(xié)議即時敲定(Instant Finality)的特性。

其中PBFT所具備的即時敲定性,或許是其受到Vitalik青睞的主因。Vitalik在熟讀PBFT后也特撰文總結(jié),并于其中提出日后演變成Casper FFG的重要想法。

Casper FFG 的前身:砍押金的4 條規(guī)則

PBFT雖然具有即時敲定性,但并不具有抵抗共謀的能力,因此需要一個懲罰機制來遏止作惡的行為,只要節(jié)點做出逾越規(guī)則的行為,便必須承受經(jīng)濟損失—透過經(jīng)濟學(xué)法則來調(diào)節(jié)節(jié)點的行為正是PoS的設(shè)計理念。任何支付押金的節(jié)點,都可以加入網(wǎng)路參與共識,無需任何人的許可,因此基于PoS模型的共識都是非許可制的(Permissionless)。

在這里要澄清一下「許可」這件事。我們會說他「非許可制」,是因為任何驗證節(jié)點可以加入和退出。但如果在他加入的時候,鏈要維持一個驗證節(jié)點清單,從這個角度看又有點是「許可制」。從PBFT 的角度看,投票的驗證節(jié)點也必須從許可的清單中挑選。

那么下一個問題是:哪些行為該被懲罰?Vitalik仔細推敲PBFT后發(fā)現(xiàn),PBFT只需4條規(guī)則(PBFT中的斷言)便能確保共識運作良好:

Vitalik在這篇文章中總結(jié)了這4條規(guī)則,并把它們稱為PBFT的「最少的砍押金條件」(Minimal Slashing Conditions),任何違反此4條規(guī)則的行為都要被取走押金。這4條規(guī)則如下:

1.提交(commit_req):收到2/3節(jié)點的預(yù)備訊息后才能提交。

2.預(yù)備(prepare_req):每個預(yù)備訊息只能指向某個也具有2/3節(jié)點預(yù)備訊息的高度(Epoch),且這些預(yù)備訊息也必須都指向同一個高度。

3.預(yù)備提交一致性(prepare_commit_consistency):任何新的預(yù)備訊息只能指向最后一個已提交的或其他比其更新的高度。

4.不重復(fù)預(yù)備(no_double_prepare):不能在同一個高度送出兩次預(yù)備。

這4 條規(guī)則可以進一步簡化為2 條:

某驗證節(jié)點v必不可發(fā)出兩個相異的投票:

<ν, s1, t1, h(s1), h(t1)>及

<ν, s2, t2, h(s2), h(t2)>,

且使下列任一條件成立:

1. h(t1) = h(t2)

驗證節(jié)點必不可對某高度發(fā)出兩個相異投票。

2. h(s1) < h(s2) < h(t2) < h(t1)

驗證節(jié)點必不可投出高度圍繞/被圍繞于另一投票高度的投票。

這2條規(guī)則便是Casper FFG 的最少砍押金條件。

Casper FFG 如何運作?

Casper FFG是一個將出塊機制(Block Proposing Mechanism)抽象化的覆蓋層(Overlay),只負責(zé)形成共識(這里的覆蓋層是「鏈」的覆蓋層,而非「網(wǎng)路」的覆蓋層)。出塊機制由底層網(wǎng)路實作,而來自底層網(wǎng)路的出塊(Block Proposal)稱為檢查點(Checkpoints)。檢查點組成檢查點樹(Checkpoint Tree),例如:把高度為0、50、100、150的區(qū)塊雜湊值取出,形成一棵新的樹,如上圖所示。最底部的檢查點則稱為根檢查點(Root)。

每個節(jié)點都必須對檢查點送出投票(Vote),投票的內(nèi)容是由兩個不同高度的檢查點組成的連結(jié)(Link),連結(jié)的起點高度較低,稱為源頭(Source);連結(jié)的終點高度較高,稱為目標(Target)。節(jié)點會將投票廣播到網(wǎng)路中,并同時收集來自其他節(jié)點的投票。其中若投票給某連結(jié)L的節(jié)點押金總和超過全部押金的2/3,則稱L為絕對多數(shù)連結(jié)(Supermajority Link),以s → t表示。例如上圖中,b1 / b2 / b3之間都形成了絕對多數(shù)連結(jié),分別以b1 → b2、b2 → b3表示。

由根檢查點開始,若兩個檢查點之間形成絕對多數(shù)連結(jié),則該連結(jié)的目標進入「已證成」( Justified)狀態(tài);而在連結(jié)建立當(dāng)下已處于「已證成」?fàn)顟B(tài)的源頭,則進入「已敲定」(Finalized)狀態(tài);根檢查點則預(yù)設(shè)為「已證成」及「已敲定」?fàn)顟B(tài)。由此可知,每個檢查點在經(jīng)過兩次投票后,會先「證成」(Justify)而后「敲定」(Finalize),幾乎等同于PBFT的「預(yù)備」與「提交」。例如在上圖右邊的分支中,r / b1 / b2皆為「已敲定」?fàn)顟B(tài),只有b3為「已證成」?fàn)顟B(tài)。

那么驗證節(jié)點該對哪個檢查點建立連結(jié)?每個節(jié)點都必須遵循分岔選擇規(guī)則(Fork Choice Rule)來選擇下一個要連接的檢查點,Casper FFG的規(guī)則是:選擇最高的「已證成」?fàn)顟B(tài)的檢查點。

由于Casper FFG能讓任何存入押金的節(jié)點參與共識,因此驗證節(jié)點集合(Validator Set)會動態(tài)地隨著時間變化。節(jié)點從退出網(wǎng)路至取出押金需要等待一段期間,該等待期間稱為提領(lǐng)延遲(Withdrawal Delay)。每個檢查點C都有其對應(yīng)的朝代數(shù)(Dynasty),其定義為:從根檢查點開始至C為止的已敲定檢查點數(shù)量,例如上圖中,b3的朝代數(shù)為3。每一代檢查點都對應(yīng)兩種驗證節(jié)點集合:前端(Front)驗證節(jié)點集合(包含于此代加入的節(jié)點)以及后端(Rear)驗證節(jié)點集合(包含于此代退出的節(jié)點)。

理論上每代檢查點的前端/后端集合會高度重復(fù),但難保節(jié)點共謀造成前端/后端集合的大幅變化,若此情形發(fā)生,則出錯時可能會砍不到壞節(jié)點的押金(因為壞節(jié)點已退出)導(dǎo)致安全性受到威脅。例如上圖中,驗證節(jié)點A可以退出,代表對C'分岔(綠色)來說A退出了,可是對C分岔(紫色)來說, A卻從來沒退出過。因此A有辦法繼續(xù)投舊鏈C,但新鏈C'砍不到A的押金(因為已退出)。

為了讓每代檢查點在出錯時都能確實歸責(zé),因此需要縫合機制(Stitching Mechanism)將檢查點的前端/后端集合「縫」起來,確保每個錯誤都必定能歸責(zé)(出錯的可能是前端集合或者后端集合)。

綜合以上,Casper FFG 幾乎針對PBFT 的所有面向都做出改進:

· 經(jīng)濟上的制約:PBFT是許可制的,它仰賴原本就存在信任基礎(chǔ)的組織共同運行協(xié)定;Casper FFG則是非許可制的,它引入最少砍押金條件,利用經(jīng)濟損失的風(fēng)險來制約節(jié)點的行為,節(jié)點之間不需要任何信任基礎(chǔ)也能共同運行協(xié)定,實現(xiàn)真正的去中心化。

· 抽象的出塊機制:PBFT仰賴誠實的主導(dǎo)節(jié)點產(chǎn)生區(qū)塊并需要視域變換機制節(jié)制拜占庭節(jié)點;Casper FFG不需理會底層的出塊機制,只需負責(zé)形成共識。出塊抽象的好處是:底層網(wǎng)路的出塊頻率不必與覆蓋層的共識頻率一致,如此可以增加效率并降低網(wǎng)路的負擔(dān)。例如:每100個底層區(qū)塊只產(chǎn)生1個檢查點。

· 流水線化的投票:PBFT具有、等數(shù)種投票訊息;Casper FFG僅有一種,且投票的內(nèi)容并不是單一的區(qū)塊/請求,而是兩個形成連結(jié)的檢查點,這使Casper FFG能夠在不犧牲太多表達力的前提下變得簡潔許多。這些形成鏈式結(jié)構(gòu)的檢查點,會于兩個不同高度分別經(jīng)歷兩輪投票,由于每一輪投票都會敲定源頭與證成目標,因此共識能如流水線(Pipeline)般不斷推進。相似的設(shè)計理念也出現(xiàn)于Hot-Stuff,有趣的是,該論文作者Dahlia Malkhi還撰文比較Hot-Stuff與Casper FFG,其相似程度可見一斑。

· 強健的抗攻擊性:PBFT不具備對遠程攻擊(Long-range Attack)以及災(zāi)難性崩潰(Catastrophic Crash)的抗性;Casper FFG則具有特別的機制來防御這兩種攻擊:針對遠程攻擊,節(jié)點必須定期同步區(qū)塊及禁止回朔(Revert)已敲定的區(qū)塊;針對災(zāi)難性崩潰,Casper FFG則引入「離線溢金」(Inactivity Leak)機制來應(yīng)對。關(guān)于這兩種攻擊的說明,筆者將于日后另撰文論述。

由于Casper FFG 相當(dāng)簡潔,以太坊研究員一度實作了合約版本的Casper FFG:

然而,這個合約版的Casper FFG后來被棄用了!在合約版中原本假設(shè)投票能夠被平行處理,但在計算投票報酬有很多中間狀態(tài),不同投票處理的先后順序?qū)绊懽詈蟮玫降臓顟B(tài),這代表平行化將無法達成共識。而要修正這個問題則必須要在合約與客戶端做大量修改,失去了「邏輯用合約實作,避免修改客戶端」的精神。因此,為了能夠更好地整合Casper FFG與其他優(yōu)化提案(例如分片),全新的以太坊2.0 滂薄登場了。

以太坊2.0 中的Casper FFG

以太坊2.0 是一個基于EVM 并整合Casper FFG 與眾多優(yōu)化提案(以分片為主)的分散式帳本。以太坊2.0 除了想實現(xiàn)PoS,還試圖將每秒交易數(shù)(TPS)擴展到10000 筆的量級,使區(qū)塊鏈成為如網(wǎng)際網(wǎng)路一般的基礎(chǔ)建設(shè)(Infrasturcture),并且讓任何存入32 顆以太的押金的節(jié)點都能成為驗證節(jié)點。

分片(Sharding)即是為了增加可擴展性(Scalability)的重要設(shè)計,也是以太坊2.0最重要的目標。分片就是分工合作,我們可以用一個簡單的例子來說明分片的概念(實際上的解釋要比這復(fù)雜得多): 2人寫2題作業(yè),2人各寫不同的1題再合起來一定比2人都各寫完2題來得更有效率。

目前的以太坊只有1條區(qū)塊鏈,所有節(jié)點必須各自處理所有交易(如同2人各自寫完2題作業(yè));在以太坊2.0中,網(wǎng)路會分成1024個片(Shard),每片分別運行1條分片鏈(Shard Chain),它們將各自處理一部分的交易后再將結(jié)果交由1條信標鏈(Beacon Chain)統(tǒng)整(如同2人各做不同的1題再合起來)。因此,以太坊2.0預(yù)計會有1條信標鏈以及1024條分片鏈。

值得注意的是:片是一個抽象層,并不特指某一群節(jié)點。為了更了解這個概念,筆者擴充一下上文的例子:假設(shè)寫作業(yè)有找答案及抄答案兩個步驟,那么A / B 2人寫2題作業(yè),由讀速快的A找第1題答案,讀速慢的B找第2題答案;由手速快的B抄第1題答案,手速慢的A抄第2題答案。如此,A / B便可以依照讀/寫的快/慢來分別負責(zé)不同題目的不同步驟。

同樣地,在以太坊2.0中,除了有1024個片,還會有1024個持續(xù)委員會(Persistent Committee)與1024個交聯(lián)委員會(Crosslink Committee):

· 每個片都會對應(yīng)1 個持續(xù)委員會與1 個交聯(lián)委員會,如同上例中每個題目可以依照讀/寫的步驟來對應(yīng)不同的個體。

· 使用鏈上亂數(shù)(On-chain Random Number)決定各委員會的分派,如同上例中依照讀/寫的快/慢來分派題目(關(guān)于鏈上亂數(shù)的實作細節(jié)留待筆者日后詳述)。

· 持續(xù)委員會負責(zé)維護分片鏈與產(chǎn)生分片區(qū)塊(Shard Block)、交聯(lián)委員會負責(zé)維護信標鏈與產(chǎn)生信標區(qū)塊(Beacon Block),如同上例中讀速快的負責(zé)找答案、手速快的負責(zé)抄答案。各區(qū)塊的出塊節(jié)點(Block Proposer)也交由鏈上亂數(shù)決定。

換句話說,每個驗證節(jié)點都需維護1 條唯一的信標鏈及1 條所屬片的分片鏈,也都會隸屬于與該分片對應(yīng)之1 個交聯(lián)委員會與1 個持續(xù)委員會。

Casper FFG是運行于以太坊2.0之上的覆蓋層,這個覆蓋層同樣由檢查點構(gòu)成,各檢查點之間的跨度稱為時期(Epoch),1個時期(Epoch)切成64個時段(Slot ),每個時段對應(yīng)16個片(16 = 1024 ÷ 64),因此每片在每時期中都有對應(yīng)的時段,并只能在輪到自己時才廣播其對檢查點的投票,且每分片只能1個時段中投出1票—也就是說,各分片需要先對投票內(nèi)容形成共識,不過各片內(nèi)部形成共識的方法仍尚未定論,近期最新的提案是使用聚合簽章。另外,Casper FFG在以太坊2.0中的分岔選擇規(guī)則是最新訊息驅(qū)動GHOST(Latest-Message Driven GHOST, LMD GHOST)。

理論上,Casper FFG 于每個檢查點的投票應(yīng)該要與底層出塊機制的投票分開;實際上,以太坊2.0 的底層投票內(nèi)容會同時包含頂層投票內(nèi)容(檢查點的連結(jié)),如同頂層投票搭了底層投票的便車(Piggyback),借此優(yōu)化效能。如此在每個時期結(jié)束時,每個片都會收到所有其他片在該時期的投票,Casper FFG 活躍性得以維持。

結(jié)語

Casper FFG 是一個實現(xiàn)權(quán)益證明的大膽嘗試,它在以太坊2.0 的表現(xiàn)值得期待。然而以太坊2.0 還有許多難題留待解決,例如輕節(jié)點(Light Client)/ 鏈上亂數(shù)產(chǎn)生器(On-chain Random Number Generator)/ 跨片交易(Cross-shard Transaction)等等。與此同時,許多以太坊2.0 的競爭者也提出新的共識協(xié)定與分片技術(shù),例如RapidChain / Harmony / Chainspace 等等。

Casper FFG 以及以太坊2.0 是經(jīng)過眾多研究員/開發(fā)者不斷激蕩與迭代的重要結(jié)晶,但一直以來都缺乏提供系統(tǒng)性論述的中文材料,希望此文可以幫助中文世界的研究員/開發(fā)者快速理解Casper FFG與以太坊2.0 的精要。(Juin Chiu)

關(guān)鍵詞: Casper FFG 以太坊2 0 共識機制

精選 導(dǎo)讀

募資55億港元萬物云啟動招股 預(yù)計9月29日登陸港交所主板

萬科9月19日早間公告,萬物云當(dāng)日啟動招股,預(yù)計發(fā)行價介乎每股47 1港元至52 7港元,預(yù)計9月29日登陸港交所主板。按發(fā)行1 167億股計算,萬

發(fā)布時間: 2022-09-20 10:39
管理   2022-09-20

公募基金二季度持股情況曝光 隱形重倉股多為高端制造業(yè)

隨著半年報披露收官,公募基金二季度持股情況曝光。截至今年二季度末,公募基金全市場基金總數(shù)為9794只,資產(chǎn)凈值為269454 75億元,同比上

發(fā)布時間: 2022-09-02 10:45
資訊   2022-09-02

又有上市公司宣布變賣房產(chǎn) 上市公司粉飾財報動作不斷

再有上市公司宣布變賣房產(chǎn)。四川長虹25日稱,擬以1 66億元的轉(zhuǎn)讓底價掛牌出售31套房產(chǎn)。今年以來,A股公司出售房產(chǎn)不斷。根據(jù)記者不完全統(tǒng)

發(fā)布時間: 2022-08-26 09:44
資訊   2022-08-26

16天12連板大港股份回復(fù)深交所關(guān)注函 股份繼續(xù)沖高

回復(fù)交易所關(guān)注函后,大港股份繼續(xù)沖高。8月11日大港股份高開,隨后震蕩走高,接近收盤時觸及漲停,報20 2元 股。值得一提的是,在7月21日

發(fā)布時間: 2022-08-12 09:56
資訊   2022-08-12

萬家基金再添第二大股東 中泰證券擬受讓11%基金股權(quán)

7月13日,中泰證券發(fā)布公告,擬受讓齊河眾鑫投資有限公司(以下簡稱齊河眾鑫)所持有的萬家基金11%的股權(quán),交易雙方共同確定本次交易的標的資

發(fā)布時間: 2022-07-14 09:39
管理   2022-07-14

央行連續(xù)7日每天30億元逆回購 對債市影響如何?

央行12日再次開展了30億元逆回購操作,中標利率2 10%。這已是央行連續(xù)7日每天僅進行30億元的逆回購縮量投放,創(chuàng)下去年1月以來的最低操作規(guī)

發(fā)布時間: 2022-07-13 09:38
資訊   2022-07-13

美元指數(shù)創(chuàng)近20年新高 黃金期貨創(chuàng)出逾9個月新低

由于對美聯(lián)儲激進加息的擔(dān)憂,美元指數(shù)11日大漲近1%創(chuàng)出近20年新高。受此影響,歐美股市、大宗商品均走弱,而黃金期貨創(chuàng)出逾9個月新低。美

發(fā)布時間: 2022-07-13 09:36
資訊   2022-07-13

美股三大股指全線下跌 納斯達克跌幅創(chuàng)下記錄以來最大跌幅

今年上半年,美股持續(xù)回落。數(shù)據(jù)顯示,道瓊斯指數(shù)上半年下跌15 3%,納斯達克綜合指數(shù)下跌29 5%,標普500指數(shù)下跌20 6%。其中,納斯達克連續(xù)

發(fā)布時間: 2022-07-04 09:51
推薦   2022-07-04

融資客熱情回升 兩市融資余額月內(nèi)增加超344億元

近期A股走強,滬指6月以來上漲4%,融資客熱情明顯回升。數(shù)據(jù)顯示,截至6月16日,兩市融資余額1 479萬億元,月內(nèi)增加344 67億元,最近一個半

發(fā)布時間: 2022-06-20 09:41
資訊   2022-06-20

4個交易日凈買入超百億元 北向資金持續(xù)流入A股市場

北向資金凈流入態(tài)勢延續(xù)。繼6月15日凈買入133 59億元后,北向資金6月16日凈買入44 52億元。自5月27日至今,除6月13日以外,北向資金累計凈

發(fā)布時間: 2022-06-17 09:37
推薦   2022-06-17