除了 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 個值即為第二個委員會,依此類推。
Vitalik評美國加密政策:對被定為證券的項目感到遺憾:6月30日消息,以太坊創始人Vitalik Buterin回應如何看待美國的加密貨幣政策方針時表示,非常遺憾Solana和其他項目以這種方式受到打擊。他們不應該受到這樣的待遇,如果因此讓以太坊最終獲勝,那不是一種光榮的勝利,從長遠來看可能甚至不是一種勝利。真正的競爭不是其他鏈,而是正在以我們為代價強加給我們的快速擴張的中心化世界。我希望所有的項目在這整個局面中獲得公正的結果。[2023/6/30 22:10:24]
RNG (隨機數生成器) 的種子在驗證者存款之后選定,每個驗證者的索引都是固定的,因此攻擊者無法嘗試使其所有驗證者進入同一個委員會。攻擊者可能會走運,但前提是他們控制所有驗證者的 1/3 以上。
白話“數據可用性抽樣”
在某些方面,數據可用性采樣是隨機抽樣委員會的鏡像。仍然會進行采樣,這是因為每個節點最終只會下載所有數據的一小部分,但采樣發生在客戶端中,并且在每個 blob 中進行,而不是在 blob 之間進行。
每個節點 (包括沒有參與質押的客戶端節點) 對每個 blob 進行檢查,他們不需要下載整個 blob,而是私密地從中選擇 N 個隨機索引,然后嘗試在這些位置下載數據。
這么做的目的在于驗證每個 blob 中至少一半以上的數據是可用的。如果低于一半的數據可用,那么幾乎可以認定任何給定客戶端進行采樣的索引中至少有一個不可用,那么客戶端會拒絕接受該 blob。
這個機制是高效的,因為一個客戶端只需要下載每個 blob 中的小部分數據以驗證其可用性。這個機制同時也是高度安全的,原因在于即使是 51% 攻擊者都無法欺騙客戶端接受不可用的 blob。
糾刪編碼
為了避免攻擊者提供了 50-99% 可用數據的情況 (這可能使得某些客戶端拒絕某 blob 之后又被其他客戶端接受),我們使用了一種叫作糾刪編碼 (erasure coding) 的技術。糾刪編碼使得我們可以使用如下方式對 blobs 進行編碼:如果某 blob 中超過一半的數據已經發布,網絡中的任何人都可以對剩余數據進行重建和發布。
元宇宙基礎設施提供商MetaGravity完成950萬美元融資:金色財經報道,元宇宙基礎設施提供商MetaGravity完成950萬美元種子輪融資,本輪融資由Sino Global、Spartan Group LLC、Market One Capital等參投,本輪融資資金將用于擴大其工程和產品團隊,以開發支持未來大規模虛擬宇宙體驗所需的基礎設施層。[2023/4/21 14:17:58]
一旦重新發布的數據廣播完畢,起初拒絕該 blob 的客戶端會收斂為接受 (注意,接受 blob 沒有時間限制,每當客戶端收到對其所有抽樣索引的響應時,它就會接受可用的 blob)。
理解糾刪編碼最簡單的數學概念類比是“兩個點總是足以恢復一條線”:如果我以四個點的形式((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) 證明默克爾根編碼一個低次多項式,或者依賴于欺詐證明在編碼不正確的情況下進行廣播 (這增加了高復雜度以及更多的同步假設)。
有了委員會機制還需要數據可用性抽樣嗎?
如果只借助委員會的,可能有以下幾個劣勢:
發生 51% 攻擊的時候防御力度較弱。在當前 (不可擴容) 的區塊鏈上,51% 攻擊只能回滾交易或是進行審查,并不能向鏈上添加無效區塊。基于委員會的系統會丟失這個保障。
Diginex與Itiviti擴大合作 以采用后者的Tbricks自動化解決方案:全球金融機構技術和服務提供商Itiviti宣布擴大了與數字資產金融服務和咨詢公司Diginex的合作關系,后者將實施Itiviti的Tbricks自動化解決方案。Diginex選擇Tbricks為其機構客戶提供風險、損益表和投資組合管理。值得一提的是,該公司將使用Tbricks推出Diginex Access,這是一種針對數字資產的多地點交易、投資組合和風險管理服務,將由Tbricks自動化技術提供支持。(Finance Magnates)[2020/7/16]
更甚者,要對 51% 攻擊者進行有效的懲罰難度會很大,因為他們只有極少量的存款 (參與該特定委員會的存款) 會被證明與惡意行為有關,并在此基礎上進行懲罰。
需要一定門檻 (委員會中證明該 blob 的人數達到什么比例才足以將其添加到鏈上?) 如果這個門檻很高,那么在只有非常少數驗證者在線的時候分片的功能會停滯。如果這個門檻過低 (或是某種動態機制,例如按照最近在線驗證者數量的比例),那么攻擊者可以嘗試迫使節點下線來提高他們自己所占的在線驗證者比例,從而進行攻擊行為。
在抗量子攻擊方面,DAS 比委員會機制稍容易些 (可能需要后量子聚合簽名)。
有了數據可用性抽樣還需要委員會機制嗎?
如果只借助 DAS 可能又會產生以下幾個問題:
DAS 是一個尚未經過測試的新技術,其核心部分 (參見此處) 其實去年才開發完成。因此在 DAS 崩壞或是開發時間意外延長,使用委員會提供保障是可取的。
DAS 的延遲比委員會高。
DAS 的極端情況更多,委員會可以協助解決。一個例子就是在僅使用 DAS 機制的系統中,很難避免信標區塊提議者最早發起 DAS 請求以驗證 blob 的可用性。
這會增加攻擊者發布不可用 blob 并僅對提議者的請求進行合響應的風險。這不會導致網絡的其他節點接受不可用的 blob,但可能會使得其他攻擊更為容易,使誠實提議者構建的信標區塊被拒絕并從主鏈上被分叉出去。委員會可以對這一點進行補救。
委員會機制的向前兼容性更強,使得在將來能在分片中加入執行功能。
數據可用性的重要性?挑戰又何在?
聲音 | 江卓爾:分片提升容量難度大時間長 故而Vitalik提出使用BCH或者ETC作為以太坊數據層:7月25日消息,萊比特礦池CEO江卓爾表示,分布式系統(去中心化系統)有一個不可能三角,稱為分布式系統CAP定理,指的是在一個分布式系統中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分區容錯性),三者不可兼得。Vitalik提出用分片方法提升容量,但分片方法的難點是一致性,也就是CAP中的C,Consistency(一致性),這個是一個要挑戰不可能三角的開發,所以開發難度很大,時間長,所以Vitalik才提出使用BCH或者ETC作為以太坊數據層的短期方案,來解決ETH的燃眉之急。[2019/7/25]
這已經在別處討論過了,篇幅有限我就不貼到此處,但我建議閱讀:
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 是很好的可擴容的數據發布技術,但它不能就是否有可用的數據達成共識,這為一種“極端案例”攻擊提供了可能性,在某條數據發布時,節點之間可能發生分歧,使得混合型二層協議無法發揮效用。為了就數據可用性達成共識,需要使用本文檔中描述的更強大的技術。
分片如何在 P2P 層上運作?
為了達到分片的擴容性目的,我們需要一個 P2P 系統,這樣就無需每個節點都下載所有數據。所幸我們在階段 0 已經有了一種 P2P 層分片形式。具體來說,有 64 個子集已經用于證明聚合。每個驗證者只需要存在于主要的“整體子網” (global subnet) 和他們自己的證明聚合子網,而無需從其他 63 個聚合證明子集獲取任何數據。
聲音 | 以太坊創始人Vitalik Buterin:用異步交易解決跨分片交易:金色財經現場報道,6月29日在2019以太坊技術及應用大會上,以太坊創始人Vitalik Buterin指出,以太坊鏈被分為1024片,通過cross-link進行分片間的交流,每6分鐘每個分片發現其他分片的哈希值。信標鏈管理共識算法和跨分片的溝通。進一步提出了異步交易,第一步:一個A分片上發出交易,第二步:6分鐘片間交流傳播交易,第三步:在另一個B分片上記錄。[2019/6/29]
在委員會 + 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:BLOLOTSLOTVITBlockchain PropertyLOTEOSleepy Sloth FinanceVITO價格
2021年開年,全球金融市場上演精彩“過山車”行情。比特幣一度突破4萬美元,美股創歷史新高。然而開年新高行情維持僅10天后,1月11日周一,比特幣暴跌7000美金,合約市場24小時爆倉126億美.
1900/1/1 0:00:00派盾?PeckShield?發布?2020?年年度數字貨幣反洗錢報告。報告顯示:2020年未受監管的出境規模高達?175?億美元,較?2019?年增長?51%,且仍在快速增長.
1900/1/1 0:00:002020年,當比特幣的牛市和DeFi的夏天成為幣圈頭條大新聞時,加密領域的另一個角落也悄然發生了革命:NFT(不可替代代幣)的世界.
1900/1/1 0:00:00文章系金色財經專欄作者牛七的區塊鏈分析記供稿,發表言論僅代表其個人觀點,僅供學習交流!金色盤面不會主動提供任何交易指導,亦不會收取任何費用指導交易,請讀者仔細甄別,謹防上當.
1900/1/1 0:00:00原標題:以太坊應該對標啥?去年的最后一天,我和debank的hongbo在微信上聊天,他說:“2021年我預估是比特幣的最后一波FOMO。”我心里咯噔一跳.
1900/1/1 0:00:00把握 DeFi下一波趨勢。2020 年是時代性的一年。對于 DeFi 來說,在過去一年里,也從初興轉向爆發,我們見證了 DeFi 的力量.
1900/1/1 0:00:00