除了 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 Buterin相關的地址向0x9e92開頭地址轉入3500枚以太坊:5月10日消息,據Lookonchain監測,與Vitalik Buterin相關的0xD04d開頭地址向0x9e92開頭地址轉入3500枚以太坊,Vitalik Buterin從2022年12月30日至今已向0x9e92開頭地址轉入17800枚以太坊,價值約3300萬美元。[2023/5/11 14:55:48]
RNG (隨機數生成器) 的種子在驗證者存款之后選定,每個驗證者的索引都是固定的,因此攻擊者無法嘗試使其所有驗證者進入同一個委員會。攻擊者可能會走運,但前提是他們控制所有驗證者的 1/3 以上。
白話“數據可用性抽樣”
在某些方面,數據可用性采樣是隨機抽樣委員會的鏡像。仍然會進行采樣,這是因為每個節點最終只會下載所有數據的一小部分,但采樣發生在客戶端中,并且在每個 blob 中進行,而不是在 blob 之間進行。
每個節點 (包括沒有參與質押的客戶端節點) 對每個 blob 進行檢查,他們不需要下載整個 blob,而是私密地從中選擇 N 個隨機索引,然后嘗試在這些位置下載數據。
這么做的目的在于驗證每個 blob 中至少一半以上的數據是可用的。如果低于一半的數據可用,那么幾乎可以認定任何給定客戶端進行采樣的索引中至少有一個不可用,那么客戶端會拒絕接受該 blob。
這個機制是高效的,因為一個客戶端只需要下載每個 blob 中的小部分數據以驗證其可用性。這個機制同時也是高度安全的,原因在于即使是 51% 攻擊者都無法欺騙客戶端接受不可用的 blob。
糾刪編碼
為了避免攻擊者提供了 50-99% 可用數據的情況 (這可能使得某些客戶端拒絕某 blob 之后又被其他客戶端接受),我們使用了一種叫作糾刪編碼 (erasure coding) 的技術。糾刪編碼使得我們可以使用如下方式對 blobs 進行編碼:如果某 blob 中超過一半的數據已經發布,網絡中的任何人都可以對剩余數據進行重建和發布。
Vitalik Buterin于5個小時前再次向土耳其捐款地址捐贈99枚ETH:金色財經報道,據Etherscan數據顯示,北京時間2月11日13:49:23,vitalik.eth(Vitalik Buterin的以太坊地址)向被標記為Ahbap Yard?m/Earthquake Support的地址捐贈99枚ETH(約15萬美元)。目前,該地址ETH余額約為393枚ETH(約60萬美元)。
此前2月10日報道,Vitalik Buterin將231,481枚USDC轉至Gemini,并向土耳其賑災捐款地址捐贈1枚ETH。[2023/2/11 12:01:14]
一旦重新發布的數據廣播完畢,起初拒絕該 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) 證明默克爾根編碼一個低次多項式,或者依賴于欺詐證明在編碼不正確的情況下進行廣播 (這增加了高復雜度以及更多的同步假設)。
有了委員會機制還需要數據可用性抽樣嗎?
Vitalik Buterin 回應推特改名,“真實姓名”并不代表護照姓名:6月10日消息,以太坊創始人 Vitalik Buterin 發推解釋推特名更改為“豚林 vitalik.eth”的原因。Vitalik 稱,請不要使用“真實姓名”來指代護照姓名,你的政府無權定義你“真正”是誰。如果你在大多數日常互動中使用不同的名字,那就是你的真實姓名。[2022/6/11 4:17:39]
如果只借助委員會的,可能有以下幾個劣勢:
發生 51% 攻擊的時候防御力度較弱。在當前 (不可擴容) 的區塊鏈上,51% 攻擊只能回滾交易或是進行審查,并不能向鏈上添加無效區塊。基于委員會的系統會丟失這個保障。
更甚者,要對 51% 攻擊者進行有效的懲罰難度會很大,因為他們只有極少量的存款 (參與該特定委員會的存款) 會被證明與惡意行為有關,并在此基礎上進行懲罰。
需要一定門檻 (委員會中證明該 blob 的人數達到什么比例才足以將其添加到鏈上?) 如果這個門檻很高,那么在只有非常少數驗證者在線的時候分片的功能會停滯。如果這個門檻過低 (或是某種動態機制,例如按照最近在線驗證者數量的比例),那么攻擊者可以嘗試迫使節點下線來提高他們自己所占的在線驗證者比例,從而進行攻擊行為。
在抗量子攻擊方面,DAS 比委員會機制稍容易些 (可能需要后量子聚合簽名)。
有了數據可用性抽樣還需要委員會機制嗎?
如果只借助 DAS 可能又會產生以下幾個問題:
DAS 是一個尚未經過測試的新技術,其核心部分 (參見此處) 其實去年才開發完成。因此在 DAS 崩壞或是開發時間意外延長,使用委員會提供保障是可取的。
DAS 的延遲比委員會高。
DAS 的極端情況更多,委員會可以協助解決。一個例子就是在僅使用 DAS 機制的系統中,很難避免信標區塊提議者最早發起 DAS 請求以驗證 blob 的可用性。
這會增加攻擊者發布不可用 blob 并僅對提議者的請求進行合響應的風險。這不會導致網絡的其他節點接受不可用的 blob,但可能會使得其他攻擊更為容易,使誠實提議者構建的信標區塊被拒絕并從主鏈上被分叉出去。委員會可以對這一點進行補救。
委員會機制的向前兼容性更強,使得在將來能在分片中加入執行功能。
ConsenSys Ventures前負責人Kavita Gupta推出Delta區塊鏈基金:9月22日消息, ConsenSys Ventures前負責人Kavita Gupta推出Delta區塊鏈基金,目標規模為5000萬美元-1億美元。Gupta表示,她大約在六周前開始建立該基金。它將投資NFT、DeFi、可擴展性和多鏈互操作性,重點關注去中心化身份。另一個重點是從硬件和軟件的角度來看存儲和計算,她認為這對于支持機構采用非常重要。新成立的Delta區塊鏈基金在第一輪融資中就獲得超額認購,超過3000萬美元,并吸引Quantstamp和Polygon等項目創始人、Viraj Mehta(Rosy Blue)、Klaus Hommels(Lakestar)的投資。
據悉,Gupta此前曾在2018年為ConsenSys Ventures管理5000多萬美元的基金。她于2019年離開公司,在斯坦福大學任教。(CoinDesk)[2021/9/22 16:58:34]
數據可用性的重要性?挑戰又何在?
這已經在別處討論過了,篇幅有限我就不貼到此處,但我建議閱讀:
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 是很好的可擴容的數據發布技術,但它不能就是否有可用的數據達成共識,這為一種“極端案例”攻擊提供了可能性,在某條數據發布時,節點之間可能發生分歧,使得混合型二層協議無法發揮效用。為了就數據可用性達成共識,需要使用本文檔中描述的更強大的技術。
動態 | 以太坊創始人Vitalik Buterin被巴塞爾大學授予榮譽博士學位:據coindesk報道,以太坊創始人Vitalik Buterin剛被巴塞爾大學授予榮譽博士學位。[2018/11/30]
分片如何在 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
《覓新》是金色財經推出的一檔區塊鏈項目觀察類項目,覆蓋行業各領域項目發展情況,具體設計到項目概況、技術進展、募資情況等,力圖為您呈現熱門新潮的項目合輯.
1900/1/1 0:00:00加密貨幣和區塊鏈應用對普通用戶來說,其可用的最大挑戰之一無疑是安全性:我們如何防止用戶的資金丟失或被盜?丟失和被盜是不可忽視的問題,致使無辜的區塊鏈用戶損失數千美元.
1900/1/1 0:00:00FX168財經報社(北美)訊 周二(1月19日),比特幣(BTC)連續第二天走高,保持在過去兩周約3.4萬美元至4萬美元的區間內.
1900/1/1 0:00:00有個叫中本聰的極客,建了一座 2100 米高的比特幣大廈,并發起了一個爬樓挑戰賽:每爬一層樓,最先到的人都可以獲得一筆獎金.
1900/1/1 0:00:00當我第一次了解比特幣挖礦的時候,我認為它很簡單,就像坐在家里,做著我想做的事情,而我的電腦會投入工作,在我睡覺的時候賺錢。但不完全是。事實證明,還有很多原因使得上述情況完全不可能發生.
1900/1/1 0:00:00近1個月 漲幅316.9%Wyckoff 點數圖顯示第一目標:14.25, 第二目標 24.75近6個月 波卡板塊.
1900/1/1 0:00:00