今天,我刷信用卡買了一杯好喝的抹茶拿鐵(這要感謝在伯克利的 Asha)。刷卡後,作為對我支付金額的交換,店老闆熱情地把茶遞給我。因為老闆已經確認了交易完成並且之後這筆交易不會被撤銷,他一定能夠獲得我支付的美元金額。 換句話說,交易已經確定(finalized)。 [作者編輯:感謝 Lawson Baker 和 Ari Paul 指出信用卡最終確定交易背後日益增加的複雜性。(請看我在右邊標記出來的 Lawson 的回應)。而現金交易則實現了對財產的即時確定性。]
在區塊鏈設定中,確定性是保證了所有有效區塊一旦被提交到區塊鏈上就不會被撤銷。當使用者進行交易時,他們也希望在轉賬完成後能夠保證轉賬操作不能隨意更改或撤銷。因此,在設計區塊鏈共識協議時,確定性變得至關重要。目前基於中本聰共識的系統中,51% 攻擊和自私挖礦行為就是因為允許有撤銷區塊的可能,才會威脅到系統的健全(例如,如果作惡者累積了 51% 的挖礦能力,他們就可以進行雙花攻擊)。這種協議提供了概率性確定,而其他一些協議則實現了絕對性確定。
確定性的型別
概率性確定(Probabilistic Finality) 是基於區塊鏈的協議提出的確定性型別(例如,比特幣的中本聰共識)。在概率性確定中,包含交易的區塊在鏈上埋得越深,該交易被撤銷的可能性越低。因為某一區塊後面的區塊越多,包含該區塊的(分叉)鏈就越可能是最長的鏈。 這就是為什麼建議等到包含交易的區塊在比特幣區塊鏈的深度為 6 個區塊時才能確認交易完成(大約需要 1 小時),因為此時撤銷交易的可能性非常低。
絕對性確定(Absolute Finality) 是基於拜占庭容錯(PBFT)的協議(例如 Tendermint)提出的確定性型別。在絕對性確定中,一旦交易被包含在區塊中並新增到區塊鏈上,該交易就會被立即視為最終確定。在這種情況下,一個驗證者會先提出一個區塊,而這個區塊必須獲得委員會中足夠多驗證者的認可才能提交到區塊鏈上。
還有一個概念叫經濟確定性(Economic Finality),也就是說撤銷區塊所需的資金成本非常高。在使用罰沒機制的權益證明基礎系統(例如 Casper FFG,Tendermint)中,如果權益持有者在兩個(校注:相同高度的)區塊上都簽了名,那麼他們所有的權益都會被沒收,這就是損害確定性的昂貴代價。例如,一個有 100 位權益持有者的網路,每位權益持有者持有價值 100 萬美元的權益,那麼整個網路一共有價值 1 億美元的權益。 如果有兩個區塊出現在區塊鏈的同一高度,命名為 B 和 B’,此時 B 獲得了 66% 的權益持有者的投票(6600萬美元),B’ 也獲得了 66% 的投票(6600萬美元),那麼 B 和 B’ 的交集(至少有 33% 惡意的權益持有者)將失去他們所有的權益(至少 3300 萬美元)。
CAP 定理與確定性
看起來似乎絕對性確定比概率性確定更可行,但仍有一些基本權衡表明選擇支援概率性確定的區塊鏈更好。考慮如何在概率性確定與拜占庭容錯確定性之間取得適當的平衡時,Eric Brewer 的 CAP 定理就發揮了作用。CAP 定理指出,在網路分割槽的情況下,分散式系統只能滿足一致性或可用性。 滿足一致性的系統會停止執行,不讓錯誤的交易通過。而滿足可用性的系統即使允許錯誤的交易通過也會繼續執行 。一致性的系統具備拜占庭容錯確定性(校注:即絕對性確定),而可用性的系統具備概率性確定。
在支付的場景中,使用者通常會選擇概率性確定的區塊鏈所提供的可用性(這就是為什麼許多基於 DAG 的協議都把重點放在支援支付上,因為這些協議都是支援可用性而非一致性),然而,許多區塊鏈平臺提供的不僅僅是支付,還支援以智慧合約為基礎的去中心化應用程式(DApp)。不同的 DApp 在確定性方面可能有不同的偏好:那些需要可行性的 DApp,哪怕交易資訊不準確也總會讓交易通過,更偏好概率性確定鏈;而傾向於一致性的 DApp,會讓整個應用程式停止執行以阻止不正確的交易通過,偏好絕對性確定鏈。因此,確定性從根本上影響了使用者體驗。
權益證明共識中的確定性
在替代共識協議的元分析中,我們考量了一些主要的 PoS(權益證明)平臺對確定性的保證,包括 Tendermint,Thunderella,Algorand,Dfinity,Ouroboros Genesis,Casper FFG 和 Casper CBC。 在這裡,我們將簡要概述這些平臺如何實現確定性,但決定採用哪種協議更重要的是整體考察,而不是僅僅考慮一個引數(這裡指的是對確定性的保障)。
Tendermint:Tendermint 實現了絕對性確定。任何得到 ⅔ 或以上的預投票和預提交的區塊都將被最終確定,並且此過程將無限期地繼續。除非 ⅓ 或以上的驗證者不響應,導致網路停止執行。因此,Tendermint 更偏好一致性而非可用性。另外,當權益證明的懲罰規則應用在 Tendermint 時,Tendermint 協議還能實現經濟確定性。
Thunderella:Thunderella 的快速路徑提供了絕對性確定。任何獲得公證的最大交易序列都被視為經過完全確認的輸出。如果 3/4 的快速路徑委員會是誠實且線上的,同時提議者也是誠實的,那麼有效交易就能被即時確認。然而,快速路徑確認與一般的確定性不同,它是樂觀性確定。 一旦交易記錄在了基礎區塊鏈上,該交易就被完全確定,這種情況既可以是基於鏈的,也可以是基於拜占庭容錯的。但當快速路徑發生問題時,Thunderella 會回退到基礎區塊鏈,因此 Thunderella 是優先考慮可用性。
Algorand:Algorand 實現了概率性確定。只要攻擊者控制的協議貨幣價值低於總價值的 1/3,Algorand 就可以保證分叉幾乎是不可能的,從而允許協議以強同步方式執行,使得每個區塊最終保持一致。而在弱同步中,Algorand 可能會發生分叉,但會使用 BA* 來決定選擇哪個分叉鏈。因此,當協議恢復強同步時,Algorand 中的交易最後也能被最終確定。Algorand 優先考慮一致性而非可用性,因為它寧願產生空白區塊,也不會犧牲一致性。
Dfinity:Dfinity 實現了概率性確定,其確定性的概率是隨著鏈上區塊權重的增加而增加。假設每一輪 r 的週期裡我們會拒絕接收更多已公證的區塊。在此週期內,我們可以最終確定第 r 輪,因為我們知道第 r 輪已公證的區塊包含了第 r 輪之前的所有鏈上的交易。第 r 輪中,只要操作無誤就能保證近乎即時的確定性,經過兩次確認加上網路傳輸延遲,對觀察者來說在第 r 輪裡任何包含在區塊中的交易都是最終確定的。Dfinity 優先考慮一致性,如果網路分割槽形成大小几乎相同的兩半,它會自動令隨機信標(random beacon)暫停工作,不允許任何一半網路繼續執行。
Ouroboros Genesis:Genesis 協議可以根據其如何選取區塊鏈的規則實現概率性確定。具體規則是對於短距離攻擊(最多 k 個區塊,其中 k 是安全引數),則採用最長鏈原則;而對於長程攻擊(超過 k 個區塊),則採用充裕法則(plenitude rule),也就是說在當前鏈發生分叉後即時檢視時間段,然後選擇密度較高的鏈。
Casper FFG:Casper FFG 的目標是為基於鏈的系統提供絕對/經濟上的確定性,委員會按權益加權獲得 ⅔ 大多數投票後簽署一個區塊,便能達到確定性。Casper FFG 的這種構建方式,即使攻擊者控制了底層區塊鏈的提案機制,出現衝突的檢查點也永遠無法被最終確定。但是,FFG 提供了安全性並且提案機制提供了活躍度,因此攻擊者可以通過延遲達成共識來阻止 Casper 確定未來的檢查點。FFG 是優先考慮一致性的,因為它不允許在沒有 ⅔ 驗證者同意的情況下對檢查點進行最終確定,否則確定無效。此外,FFG 還可以通過罰沒機制來實現經濟確定性。
Casper TFG:TFG 通過具有不同容錯閾值的驗證者來實現絕對性確定。也就是說,協議是非同步安全和拜占庭容錯的,允許驗證者具有不同的容錯閾值。
撤銷區塊可能導致數百萬美元的損失,或者影響到去中心化應用的基本執行。因此,對於構建強健的區塊鏈平臺以及如何選擇開發應用程式的平臺,確定性起著至關重要的作用。
原文連結: https://medium.com/mechanism-labs/finality-in-blockchain-consensus-d1f83c120a9a
作者: Alexis Gauba
翻譯&校對: 楊哲 & Elisa
本文轉自以太坊愛好者。原文連結:https://ethfans.org/posts/finality-in-blockchain-consensus