減輕 LMD GHOST 的 balancing attack 風險的提案
譯者注:Balance attack 指的是攻擊者快速幹擾有相近算力子組的溝通。在此期間,攻擊者在一個子組發布交易(稱為交易子組),在另一個子組挖區塊 (稱為區塊子組),直到區塊子組的樹以高概率勝過交易子組的樹。Balance attack 的新穎之處在於利用 GHOST 協議把兄弟塊或叔塊算入選擇區塊得分的特性。這個策略使得攻擊者可以在與網絡隔離的情況下挖一個分支,在將它的分支並入競爭區塊鏈之前影響分支選擇過程。
eth2 的分叉選擇區別於 eth1 和“基於鏈 (chain-based)" 的 PoS 算法 (例如像 Peercoin 和 NXT 這些舊算法,但也有像 Tezos、Ouroboros 等的較新的算法) 的一個關鍵是,在 eth2,有非常多影響區塊”得分 (score)“的信息是並行到達的。
基於鏈的 PoS 算法:
(像在 eth2 裏) 每個 slot 上的委員會:
基於鏈的算法更容易證明其活性 (事實上,在某些情況裏活性已經被證明了),因為通常一次有一個單個行動者,使得它們充當"協作瓶頸(coordinating bottleneck)",讓每個人都對同一個分數達成共識。
下面是基於鏈的算法中活性的”稻草人證明概述“。
假設:
在每個 slot 裏就有一個行動者 (即區塊提議者) 可以參與。
誠實的區塊提議者在 slot 的前半發布他們的區塊
網絡延遲的上限是半個 slot (因此是 δ<1/2,以 slot 為單位測量時間)。
被分配到在 slot N+1 行動的行動者僅會基於他們在 slot N 前收到的信息行動。
我們對節點收到在時間 t 發出的信息的時間建模為區間 (t,t+δ) 的“雲” (到這裏為止,這只是陳述了同步假設的標准學術表述)。因此,存在兩種情況:
達成共識
沒有達成共識
請注意,只有當在 slot N 的參與者不誠實時才會出現沒有達成共識的情況。因此,如果被分配到某個 slot 的參與者是誠實的,那么要么 (i) 在該 slot 的末端每個參與者都對哪條是正確鏈達成共識,因為他們都是基於相同的信息計算分叉選擇的,要么 (ii) 攻擊者在之前那些他們沒有參與的 slot 上“用掉了” 一些儲備的參與權。因此,只有當攻擊者對每個誠實參與者有至少一個儲備的參與權時,即如果攻擊者被分到的 slot 多於誠實節點時 (也就是誠實大多數的假設被打破時),幹擾才能繼續。
現在看看”有很多並行證明“的情況。當有很多並行證明增加一個區塊的得分時,是沒有單一行動者創造瓶頸的。因此,攻擊者可以操縱網絡 (再加上有策略地對一些他們自己的驗證者廣播),以便在每個 epoch 末端構建就哪些信息算入分叉選擇沒有達成共識的狀態,從而使多條鏈中的某條鏈勝出。
請看論文 Ebb-and-Flow Protocols: A Resolution of the Availability-Finality Dilemma (動態協議:可用性與最終確定性兩難困境的解決方法),特別是第 4 和第 5 頁,那裏有對這種攻擊的說明。請注意,這種攻擊的確建基於一些在實踐中非常難以實現的網絡假設 (攻擊者對個人質押者的網絡延遲有非常精細的控制),但盡管如此,一個能抵抗這種攻擊的協議還是比一個不能的協議好。
提議的解決方案
提議的解決方案是引入明確的”同步瓶頸“小工具到分叉選擇上。特別是,我們可以增加以下規則:
1. 假設所有被分配到 slot N 的證明者的集體總權重為 W
2. slot N+1 裏的參與者僅會認為在 slot N 末前到達 (從參與者的角度) 的證明是有效的。
3. 在 slot N+1 的提議者應該在 slot N+1 的开端就馬上做提議。他們的提議其實是在選擇一條特定的鏈。在 slot N+1 的證明者看來,如果他們在 slot 進行了 1/3 之前就看到提議到達了,他們會將該提案視為等同於權重為 W/4 的證明 (這個得分調整只對 slot N+1 有效,在 slot N+1 後這個得分調整會復原)。
4. 把同步假設降低到 δ<1/3
分析
(請注意:為了分析的簡易,我們假設時鐘是完全同步的,以及任何實際的時鐘差異都是網絡延遲的一部分。)
在 slot 的末端,所有驗證者都已經收到一些證明集了。如果出現了攻擊 (例如,有 k≥1 的惡意證明者在 slot N 做證明),驗證者將很可能在每個區塊的得分上有分歧。但是,他們分歧的範圍將不會超過 k。假設 (在不喪失一般性的情況下) 有兩個競爭區塊,A 和 B,如果 score(A)−score(B)≥0,則 A "勝出",反之則 B 勝出。score(A)−score(B) 的分歧範圍的上限是 2k (即每個驗證者給出 score(A)−score(B) 值都將在[z,z+2k] 的範圍內,z 是個固定值)。
設 Wp 為提議者的權重 (即 Wp =上文論述的 W/4)。如果提議者是誠實的,他們肯定會遵循以下兩種行為:
1. 如果他們看到 score(A)−score(B)≥0,他們將提議 A 區塊,否則提議 B。
2. 他們將馬上提議他們的區塊,以保證所有的證明者都在期限前看到。
設 [z,z+2k] 為 score(A)−score(B) 分歧的區間。我們區分三種情況:
z<−2k
−2k≤z<0
z≥0
在情況 (1),提議者將給 B 投票,這樣證明者將看到在 [z−Wp,z+2k−Wp] 內調整過的得分;這裏整個區間都是負數,因此對 B 有充分的共識。
在情況 (3),提議者將投票給 A,這樣證明者將看到在 [z+Wp,z+2k+Wp] 內調整過的得分;這裏整個區間都是正數;因此對 A 有充分的共識。
在情況 (2),很大程度由提議者決定。取決於提議者的意見落在區間的哪個位置,提議者不是選擇 A 就是 B。因此,區間要么是 (i) [z−Wp,z+2k−Wp],要么是 (ii) [z+Wp,z+2k+Wp]。
如果是 Wp≥2k 的情況,請注意從情況 (2) 的定義 −2k≤z<0 來看,當 (2.i) z<0 且 2k−Wp≤0,即 z+2k−Wp 的上限是負數,也就是整個區間都是負的。當 (2.ii) z>−2k 且 Wp≥2k,即 z+Wp>0,即整個區間都是正的。因此,充分共識是在 A 還是 B 取決於提議者的選擇。
現在,讓我們回到 Wp= W/4 的論述中。為了避免提議者起同步瓶頸的作用,上述推理中 Wp≥2k 的前提必須被打破;因此,必須有超過 W/4 的證明者在每個 slot 投票。
如果在任何單個 slot 中提議者起到了同步瓶頸的作用,所有誠實的證明者都將往該方向投票,使 score(A)−score(B) 的值與 0 偏差增大。為了避免其中一方在這個點上勝出,攻擊者必須在該 slot 展示足夠多的投票以與所有的誠實驗證者抗衡 (減去1/4 來抵消提議者在 slot 末端投票的效用);這需要遠超過 W/4 的證明。
因此,要維持一段時間的失活需要至少在每個 slot 上有 W/4 的惡意驗證者,或 ≥1/4 的驗證者是不誠實的。
來源 | notes.ethereum.org
作者 | Vitalik Buterin
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC
7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...
悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤
一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...