以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads

LOT:Vitalik:分片 + 數據可用性采樣

Author:

Time:1900/1/1 0:00:00

除了 Proof of Stake 之外,eth2 設計中的另外一個顯著改變就是分片 (sharding)。本提案介紹了一種分片的有限形式,即“數據分片” (data sharding),根據"以 rollup 為中心的路線圖"所述:分片會存儲數據,并且證明約 250 kB 數據的可用性。數據可用性驗證為 rollups 之類的二層協議提供了安全和高吞吐量的數據層。

為了免去節點親自下載全部數據的負擔,可以將這兩種技術互相疊加起來對大量數據的可用性進行驗證:1) 由隨機抽樣的委員會提出證明;2) 數據可用性抽樣 (data availability sampling, DAS)。

白話“隨機抽樣委員會”

假設你有大量數據 ,例如 16 MB,這是 eth2 鏈 (至少在初期) 每個 slot 能處理的數據量。我們將這些數據表現為 64 個 blobs,每個大小為 256 kB。假設我們還有一個 PoS 系統,驗證者數量約為 6400。我們如何在 1) 不需要任何人下載所有數據,2) ?不給運行少量驗證者的攻擊者可乘之機的前提下驗證這些數據?

第一個問題,我們可以通過分工來解決:驗證者 1-100 需要下載并驗證第一個 blob,驗證者 101-200 下載并驗證第二個 blob,以此類推。每個子集合 (委員會) 里的驗證者只需簽名證明他們已經驗證了相應的 blob,然后整個網絡接收到相應委員會中大多數驗證者的簽名之后,即可接受該 blob。

但這會導致一個問題:萬一攻擊者控制了連續的驗證者集合怎么辦 (例如 1971-2070)?如果是這樣的話,即使攻擊者僅控制了整個驗證者集合的約 1.5%,他們也能夠控制單個委員會 (在上述情況下,他們可以掌控委員會 20 中 70% 的驗證者 2001-2100),因此攻擊者能夠將無效/不可用的 blob 添加到鏈上。

隨機采樣 (Random sampling) 通過隨機洗牌算法組成委員會來解決這個問題。我們使用某個哈希值作為隨機數生成器的種子,然后我們使用該生成器來隨機混洗驗證者列表 1-6400。混洗列表中的前 100 個值是第一個委員會,下 100 個值即為第二個委員會,依此類推。

CertiK:Vivity項目Discord服務器遭到攻擊:金色財經消息,據CertiK監測,Vivity項目Discord服務器遭到攻擊。請社區用戶不要點擊鏈接,鑄造或批準任何交易。[2022/10/22 16:35:12]

RNG (隨機數生成器) 的種子在驗證者存款之后選定,每個驗證者的索引都是固定的,因此攻擊者無法嘗試使其所有驗證者進入同一個委員會。攻擊者可能會走運,但前提是他們控制所有驗證者的 1/3 以上。

白話“數據可用性抽樣”

在某些方面,數據可用性采樣是隨機抽樣委員會的鏡像。仍然會進行采樣,這是因為每個節點最終只會下載所有數據的一小部分,但采樣發生在客戶端中,并且在每個 blob 中進行,而不是在 blob 之間進行。

每個節點 (包括沒有參與質押的客戶端節點) 對每個 blob 進行檢查,他們不需要下載整個 blob,而是私密地從中選擇 N 個隨機索引,然后嘗試在這些位置下載數據。

這么做的目的在于驗證每個 blob 中至少一半以上的數據是可用的。如果低于一半的數據可用,那么幾乎可以認定任何給定客戶端進行采樣的索引中至少有一個不可用,那么客戶端會拒絕接受該 blob。

這個機制是高效的,因為一個客戶端只需要下載每個 blob 中的小部分數據以驗證其可用性。這個機制同時也是高度安全的,原因在于即使是 51% 攻擊者都無法欺騙客戶端接受不可用的 blob。

糾刪編碼

為了避免攻擊者提供了 50-99% 可用數據的情況 (這可能使得某些客戶端拒絕某 blob 之后又被其他客戶端接受),我們使用了一種叫作糾刪編碼 (erasure coding) 的技術。糾刪編碼使得我們可以使用如下方式對 blobs 進行編碼:如果某 blob 中超過一半的數據已經發布,網絡中的任何人都可以對剩余數據進行重建和發布。

一旦重新發布的數據廣播完畢,起初拒絕該 blob 的客戶端會收斂為接受 (注意,接受 blob 沒有時間限制,每當客戶端收到對其所有抽樣索引的響應時,它就會接受可用的 blob)。

Gravity DEX開發團隊成立新項目Crescent:3月11日消息,開發流動性模塊Gravity DEX的B-Harvest團隊分拆成立了一個名為Crescent的新項目,正在尋求完全重構和擴展Gravity DEX。Crescent由Ignite Ventures資助,并與Ignite團隊合作支持Crescent項目。

Crescent已經公布了治理代幣CRE分配模型,總量2億枚,其中將向ATOM委托者(delegator)空投1億枚,另外1億枚作為戰略儲備。空投方面,5000萬枚CRE可在Crescent網絡啟動后推出Crescent DEX(DEXdrop)時索取,具體空投數量會根據二次空投系統確定,即按UTC時間2022年1月1日00:00快照時委托數量的平方根來決定,如果參與一些治理提案,能獲得通過固定乘數獲得更多獎勵;剩余5000萬枚將在一定時期內分配給使用Crescent Boost的ATOM委托人。[2022/3/11 13:50:06]

理解糾刪編碼最簡單的數學概念類比是“兩個點總是足以恢復一條線”:如果我以四個點的形式((1, 4), (2, 7), (3, 10), (4, 13))建立“文件”,每個點都在一條線上,那么只要有其中兩個點的坐標,你就能重構這條線,并且將 ? ?剩下的兩個點計算出來 (我們假設 x 坐標1, 2, 3, 4是系統的固定參數,而非文件創建者的選擇)。

使用高階多項式,我們可以擴展此思想,創建 6 個文件中的 3 個文件,8 個文件中的 4 個文件,或者通常來說 2n 個文件中的n個文件,如果你有文件中的 n個點,則可以計算出 2n 中剩余的點。

默認情況下,一個攻擊者也有可能使得沒有區塊是可用的,并且有選擇性地針對其收到的請求發布信息,但這種行為只能欺騙很小一部分客戶端,因為攻擊者會需要發布一半區塊以上來回應所有的請求 (我們假設客戶端重新公開廣播他們收到的回應)。

我們使用多項式承諾 (polynomial commitments),具體來說是 Kate 承諾而非默克爾根作為數據 blobs 的 printers,因為多項式承諾能夠使我們輕易證明一個給定的值實際上是對特定次 n 多項式在所需坐標處的正確估值。不然的話,我們將不得不 (例如使用SNARKs) 證明默克爾根編碼一個低次多項式,或者依賴于欺詐證明在編碼不正確的情況下進行廣播 (這增加了高復雜度以及更多的同步假設)。

Vitalik Buterin將出鏡的以太坊紀錄片3天內超額募資1035.96枚ETH:7月19日消息,Vitalik Buterin將出鏡的一部以太坊的紀錄片“Ethereum:TheInfiniteGarden”在3天的時間內超額募資1035.96枚ETH(約197萬美元),該紀錄片的籌資目標為750枚ETH。募資金額的95%將用于電影的制作預算,約984.16枚ETH;2%通過捐贈至Carbonfund進行碳抵消,約20.72枚ETH;3%捐贈給GitcoinGrants用來支持開源以太坊項目,約31.08枚ETH。根據該紀錄片預計的時間表,該影片將于2023年冬季推出。[2021/7/19 1:02:38]

有了委員會機制還需要數據可用性抽樣嗎?

如果只借助委員會的,可能有以下幾個劣勢:

發生 51% 攻擊的時候防御力度較弱。在當前 (不可擴容) 的區塊鏈上,51% 攻擊只能回滾交易或是進行審查,并不能向鏈上添加無效區塊。基于委員會的系統會丟失這個保障。

更甚者,要對 51% 攻擊者進行有效的懲罰難度會很大,因為他們只有極少量的存款 (參與該特定委員會的存款) 會被證明與惡意行為有關,并在此基礎上進行懲罰。

需要一定門檻 (委員會中證明該 blob 的人數達到什么比例才足以將其添加到鏈上?) 如果這個門檻很高,那么在只有非常少數驗證者在線的時候分片的功能會停滯。如果這個門檻過低 (或是某種動態機制,例如按照最近在線驗證者數量的比例),那么攻擊者可以嘗試迫使節點下線來提高他們自己所占的在線驗證者比例,從而進行攻擊行為。

在抗量子攻擊方面,DAS 比委員會機制稍容易些 (可能需要后量子聚合簽名)。

有了數據可用性抽樣還需要委員會機制嗎?

如果只借助 DAS 可能又會產生以下幾個問題:

DAS 是一個尚未經過測試的新技術,其核心部分 (參見此處) 其實去年才開發完成。因此在 DAS 崩壞或是開發時間意外延長,使用委員會提供保障是可取的。

DAS 的延遲比委員會高。

DAS 的極端情況更多,委員會可以協助解決。一個例子就是在僅使用 DAS 機制的系統中,很難避免信標區塊提議者最早發起 DAS 請求以驗證 blob 的可用性。

Vitalik Buterin:并不認為zkPorter具有比Optimistic Rollup更強的安全保證,且沒有緊密耦合性:以太坊聯合創始人Vitalik Buterin針對Matter Labs披露的zkPorter擴容方案表示:并不認為zkPorter具有比Optimistic Rollup更強的安全保證,寧愿將資產放在Optimistic Rollup中,而不是鏈下數據可用性系統中。zkPorter鏈下數據可用性的安全級別要低于基礎鏈,且沒有緊密耦合性(Tight coupling)。另一方面,分片中的數據可用性層將受到整個以太坊網絡的保護,并兼具緊密耦合性。如果某些應用程序同時使用鏈下數據可用性也是可以的,但前提是鏈下數據在基于分片的數據可用性可用之前明確為臨時措施,但是我認為這沒有必要。[2021/4/14 20:17:45]

這會增加攻擊者發布不可用 blob 并僅對提議者的請求進行合響應的風險。這不會導致網絡的其他節點接受不可用的 blob,但可能會使得其他攻擊更為容易,使誠實提議者構建的信標區塊被拒絕并從主鏈上被分叉出去。委員會可以對這一點進行補救。

委員會機制的向前兼容性更強,使得在將來能在分片中加入執行功能。

數據可用性的重要性?挑戰又何在?

這已經在別處討論過了,篇幅有限我就不貼到此處,但我建議閱讀:

A note on data availability and erasure coding (對數據可用性最初的介紹)

Alberto Sonnino、Mustafa Al-Bassam 和 Vitalik Buterin 聯合發表的論文對相關概念進行了擴展

The Dawn of Hybrid Layer 2 Protocols 對數據可用性中的博弈論進行了論述

Base Layers and Functionality Escape Velocity,基于上述概念對數據擴容性部分進行了描述

The Data Availability Problem (Ethereum Silicon Valley Meetup),以視頻形式對數據可用性問題進行了討論

有一點需要明確,BitTorrent 和 IPFS 以及類似的系統并沒有解決數據可用性問題。盡管 BitTorrent 是很好的可擴容的數據發布技術,但它不能就是否有可用的數據達成共識,這為一種“極端案例”攻擊提供了可能性,在某條數據發布時,節點之間可能發生分歧,使得混合型二層協議無法發揮效用。為了就數據可用性達成共識,需要使用本文檔中描述的更強大的技術。

明星在其官網添加VIT支付:據Coindesk消息,美國明星Stormy Daniels在其官網中添加VIT支付,意在獎勵觀看視頻的網站訪問者,獲得VIT的用戶可以購買網站上的優質內容,或購買、訂閱支持該令牌的其他網站的服務。Stormy Daniels稱2006年與特朗普有過一段交往經歷,并因此出名。[2018/5/25]

分片如何在 P2P 層上運作?

為了達到分片的擴容性目的,我們需要一個 P2P 系統,這樣就無需每個節點都下載所有數據。所幸我們在階段 0 已經有了一種 P2P 層分片形式。具體來說,有 64 個子集已經用于證明聚合。每個驗證者只需要存在于主要的“整體子網” (global subnet) 和他們自己的證明聚合子網,而無需從其他 63 個聚合證明子集獲取任何數據。

在委員會 + DAS 型分片中,我們將其擴展為“網格”架構,有 2048 個水平子集子網 (horizontal subnets),即每 epoch 的每個分片-slot對中存在一個子集,以及 2048 個垂直子網 (vertical subnets),即每個 blob 中的每個索引存在一個子集。

在每個 slot 中,我們每個分片都會選出一個提議者。每個提議者都有權提議一個 blob:一個最大為 512 kB 的任意數據塊 (我們可以將其理解為約 512 字節的“樣本”集合),以及糾刪編碼擴展和額外的證明,以便對 blob 中的每個部分進行獨立驗證。

Structure of a blob blob 的結構

一個 blob 的“主體”結構包括原始數據、擴展數據以及證明 (如果需要的話,為了提高數據效率,可以省略擴展數據,因為接收 blob 的每個節點重建它的速度都相對較快)。

Blob 的“頭部”包含其相應的 Kate 承諾,以及其他一些數據 (slot、分片和長度證明) 以及提議者的簽名。

Blob 的廣播過程

當一個 blob 被廣播時,其頭部會被廣播到整體子網 (global subnet),主體部分則會被廣播到相應 slot 和分片 ID 的水平子網。

在實際情況中,會存在 2048 個水平子網,以使每個 epoch 中的每個分片-slot對存在對應的一個水平子網。這樣做是為了確保每個驗證者都可以加入一個水平子網,他們將僅接收到到其所處委員會的相應的 blob (不包括他們參與抽樣的少量垂直子網)。

每個驗證者都需要加入以下子網:

整體子網 (Global subnet)

水平子網 (horizontal subnet),對應其所處的分片-slot對 (即委員會)

垂直子網 (vertical subnet),對應其分配到的索引 (每個驗證者使用私密種子進行計算)

廣播區塊

Blob 提議者可以將樣本分發到所有子網,但不必成為子網的一部分。此過程如下:

發布:提議者在正確的水平子網中發布 blob,每個樣本附帶一個證明

直接樣本分發:水平子網中的其他參與者將區塊發布到他們所在的每個垂直子網中

間接樣本分發:提議者向對等節點公布幾個其所在的垂直子網。因此,水平子網中的每個參與者還可以查看其對等節點所在的垂直子網,并向這些對等節點廣播相應的區塊

假設數據塊大小為 512 字節,且數據 blob 最大為 512 kB (除去糾刪編碼),在包含糾刪編碼時約為 1 MB,因此存在 2048 個垂直子網。如果每個節點存在于 15 個私密的垂直子網,5 個公共垂直子網并且有 50 個對等節點,假設在最壞情況下每個水平子網 (僅委員會) 中有128個成員,則單單是子網成員將直接分發到 128 * 20 = 2560 個子網(除去冗余發布后約為 1461),如果加上對等節點,將增加到 128 * 4 * 50 = 25600 個子網。

請注意,從理論上講,惡意區塊提議者有可能在不發布完整區塊的情況下將樣本發布到垂直子網。為了解決這種情況,我們補充了一個過程,其中未完整發布的區塊 (意味著 50% 及以上可用,但不是 100% 可用) 能夠進行“自我修復”。該過程包括三個基本步驟:

1. 反向分發:與上述分發過程相同,只是在這種情況下,垂直子網上的對等節點將樣本從該垂直子網上傳播到與該樣本所屬 blob 相對應的水平子網。

2. 重構:如果水平子網中有 1024 及以上個樣本 (或者通常來說樣本總量的一半),任何人都可以重構整個 blob,然后向水平子網發布其重構后的 blob。

3. 分發:重復上述的分發步驟

信標鏈如何工作?

在每個 slot 中,我們為 64 個分片中的每個分片隨機選擇一個提議者。提議者有權創建一個分片 blob,并通過上述過程對其進行廣播,并且將該 blob 的 ShardHeader 廣播到全局子網。ShardHeader 能夠被打包到信標鏈上的同個 slot 中,也可以包含在同個/下個 epoch 中的任何后續 slot 中。

信標鏈會跟蹤 PendingShardHeader 的對象列表。PendingShardHeader 會存儲:1) ShardHeader 中的關鍵信息 (分片和 slot,該 blob 的承諾及其長度);2) 追蹤隨機選擇的委員會中哪些驗證者在 blob 中簽名的位域 (實際上就是階段 0 已經引進的委員會)。AttestationData 結構擴展為包含一個 shard_header_root,即選定驗證者進行投票的 ShardHeader 的根哈希。如果證明者看不到已分配給他們的分片-slot對的有效且可用的分片 blob,則他們也可以對空的根哈希進行投票。

如果 ShardHeader 得到了委員會中 2/3 驗證者的證明,就會立即得到確認。如果在下一個 epoch 結束時,ShardHeader 得到委員會的支持比其他任何 ShardHeader 更多的支持,則在該 epoch 結束時進行確認。

分叉選擇規則

分叉選擇規則發生了改變,以便僅在該區塊中確認所有 blob 或其祖先都通過了可用性檢查的情況下,該區塊才有效。這稱為緊密耦合 (tight coupling):如果一條鏈指向 (已確認) 某個無效 blob,則整條鏈都被視為無效。這是與“側鏈”結構的主要區別:在側鏈中,側鏈可能會失效,而主鏈仍然有效。

這里有對緊密耦合的進一步探索,以及為什么它是有價值。

驗證者數量較低的情況

如果驗證者少于 262144 個(32 slots* 64 shards* 128 最小委員會規模),那么我們不再為所有分片選擇一個提議者,而是為一個有限的子集選擇一個提議者,循環遍歷這些分片。比如說,如果有 32 * 128 * 50 個驗證者,在 slot N 的起始分片為 0,則 slot N 將為分片 0-49 分配一個提議者,slot N + 1 將為分片 50-63 和 0-35 分配一個提議者,slot N + 2 將為分片 36-63 和 0-21 分配提議者,依此類推。這樣做是為了確保即使在參與度較低的情況下,委員會的規模仍然足夠。

分片數據的 gas 費

添加了一種類似于 EIP-1559 的機制,按字節計費分片數據,并對價格進行了調整:如果區塊的平均容量超過了 50%,則提升費用,反之則降低。因此,指標是 50% 的平均區塊大小。

安全假設

僅支持數據 blob 的分片之所以強大,是因為與其他分片方案相比,它對安全性假設的依賴性很低。尤其是它避免了誠實的大多數假設 (因為 DAS 可以檢測到由大多數發布的不可用 blob) 和時間假設 (與早期的 DAS 機制不同,其使用的是 Kate 承諾而非欺詐證明,因此不依賴于欺詐證明需要極快被廣播的假設)。

惡意的 51% 聯盟可以對 blob 進行審查,但是在非分片鏈中也可以進行 51% 審查。

主要的新假設是“誠實的少數 DAS 假設”:存在足夠多的節點樣本,攻擊者必須要發布區塊中一半以上的內容。如果一個 blob 中有 2048 個樣本,則需要恢復 1024 個樣本 (考慮到某些客戶端將對相同的點進行抽樣,因此 2048 * ln(2)~= 1419),并且每個客戶端都進行 20 個采樣,則如果每個分片有約超過 70 個客戶端在進行抽樣的話就可以認定系統是安全的。

向前兼容性

僅支持數據 blob 的分片設計與以后在分片中添加執行的許多方案具有向前兼容性。特別是我們可以對該方案進行修改以使 blob 包含前狀態和后狀態根,我們還可以使用欺詐證明或 ZK-SNARK 來驗證 blob 中的狀態轉換是否正確。注意,無論選擇哪種方法,確保分片執行的正確性都不依賴于任何誠實大多數假設。

Github PR 鏈接

https://github.com/ethereum/eth2.0-specs/pull/2146

Tags:BLOSLOTLOTSHARDblok幣發行總量SLOT幣ZLOT幣Almace Shards

以太坊價格
穩定幣:穩定幣項目e-Money (NGM)即將首發上線BitMax交易所

穩定幣板塊最近特別火爆,尤其是在SEC起訴Ripple之后——投資者們對監管趨嚴的擔憂又進一步加深,雖然本質上其實是對中心化機構的不信任.

1900/1/1 0:00:00
以太坊:礦工碼農矛盾再現:EIP1559會造成以太坊社區分裂嗎?

以太坊今日勢如破竹,主流加密分析師們都認為在年底前它將一直保持強勢。和這種普遍共識相反,以太坊即將上線的1559改進提案EIP(Ethereum Improvement Proposal)近日卻.

1900/1/1 0:00:00
300:比特幣突破4萬了?我去華強北買礦機了

比特幣100美元一枚的時候,被問及看法的巴菲特說:“比特幣是老鼠藥”。比特幣9000美元一枚的時候,被問及看法的巴菲特說:“比特幣是老鼠藥的平方”.

1900/1/1 0:00:00
EOS:金色觀察 | BTC突破39000美元關口 多項指標反映市場仍看漲

1月8日15:46,金色財經數據顯示,BTC短線上漲,突破39100美元關口。比特幣不斷突破臨近4萬美元關口持續點燃市場情緒,多項指標反映后市樂觀上漲情緒.

1900/1/1 0:00:00
BTC:金色觀察 | 灰度信托拉動隱私幣上漲 拉盤魔開放的“明牌幣”你都了解嗎?

1月12日,灰度恢復除ETH和XRP外的加密信托基金申購,明牌幣種再度上漲,最近頻頻被提及的ZEN、ZEC等也在申購之列。而近日ZEN、ZEC也強勢引領隱私板塊的上行.

1900/1/1 0:00:00
BCH:1.12午間行情:暴跌后的反彈能否持續

文章系金色財經專欄作者牛七的區塊鏈分析記供稿,發表言論僅代表其個人觀點,僅供學習交流!金色盤面不會主動提供任何交易指導,亦不會收取任何費用指導交易,請讀者仔細甄別,謹防上當.

1900/1/1 0:00:00
ads