以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads
首頁 > 區塊鏈 > Info

ETH:以太坊2.0的混洗算法

Author:

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

簡介

如果你想學鬼步舞(shuffledance)的話,那你就走錯地方了。但相信我,Eth2里的混洗(shuffle)也一樣讓人興奮。

混洗列表是以太坊2.0里一個基本運算。它主要用于在每12秒的slot里偽隨機挑選驗證者來組成委員會,以及在每個slot里選出信標鏈區塊的提議者。

混洗似乎相當簡單。盡管它有一些隱患需要注意,這些隱患在計算機科學里是非常容易理解的。其中的黃金標準大概就是Fisher-Yeatsshuffle了。那我們為什么不在Eth2里使用它呢?我將在文末詳細解釋,但簡單來說就是——輕客戶端。

我們用的混洗算法是swap-or-not,而不是Fisher-Yates。這個選擇是基于這篇本來用于構建加密方案的論文。我最近在Eth2客戶端Teku中重寫我們的實現,因此我想趁熱把它寫出來。

Swap-or-Not混洗算法

一輪的操作過程

混洗以輪次進行。每輪的過程是一樣的,因此我在下面只會演示一輪的過程,它比看上去簡單多了。?

Linea負責人:以太坊EIP-4844有望將Rollup成本削減逾90%:9月9日消息,Consensys的zkEVM Linea負責人Nicolas Liochon在韓國區塊鏈周期間接受采訪時表示,proto-danksharding(也被稱為以太坊改進提案EIP-4844)有可能將Rollup成本削減逾90%。

Liochon解釋說,Linea上交易成本僅相當于以太坊L1上成本的1/15,但Rollup成本仍較高。EIP-4844引入可以發送并附加到以太坊區塊的數據塊,其中存儲的數據無法被以太坊虛擬機(EVM)訪問,并設置為在指定的時間段后刪除。這一創新有望大幅降低交易成本,解決數據可用性的核心問題,這一問題占到Rollup成本的95%。Liochon強調,Linea的Prover負責鏈下計算、驗證、捆綁以及生成組合交易的加密證明,這些僅占總成本的20%。

此外,Linea希望成為適用于以太坊生態系統中各種DApp和解決方案的多功能zkRollup,以滿足DeFi、游戲和社交應用的需求。[2023/9/9 13:28:48]

選擇一個軸心點并找出第一個鏡像索引

VanEck預測以太坊到2030年將增長到11800美元:金色財經報道,紐約投資管理公司VanEck在將使用加密貨幣作為美國政府債券的替代方案添加到模型后估計,以太坊的公允價格為 5,300 美元,到2030年該資產的價格可能會上漲至11,800美元。在他們的計算中,分析師假設市值第二大的加密貨幣將占據智能合約平臺市場的 70%。?這將因以太坊作為主要開源全球結算網絡的地位而成為可能,該網絡承載著很大一部分商業活動,最有可能從將其轉移到區塊鏈中獲益。?[2023/6/5 21:16:55]

首先,我們選一個軸心索引p,這是基于輪次和其他一些種子數據,通過偽隨機選出的。這個軸心選出后就在該輪次里固定了。

基于這個軸心點,我們在p和0的中間點選出一個鏡像索引m1,即m1=p/2。

軸心點和第一個鏡像index

從第一個鏡像索引到軸心點,替換與否

?對于鏡像索引m1和軸心索引p之間的每個索引,我們隨機決定是否對這些元素進行替換。

比如對于索引i1,如果我們選擇不替換,那么我們就繼續選下一個索引。

GameStop正招聘一名以太坊專家:金色財經報道,根據該公司發布的招聘信息,GameStop正在尋求建立一個基于以太坊的 Web3 分支。該零售商表示,它正在尋找具有“以太坊、NFT和基于區塊鏈的游戲平臺經驗”的人擔任其“Web3 游戲負責人”的角色。(CoinDesk)[2021/10/26 20:59:38]

如果我們決定替換,那么我們將i1上的列表元素與i1’上的替換,即它在鏡像索引上的圖像。也就是i1與i1’=m1-(i1-m1)替換,這樣i1和i1’到m1的距離是相等的。

我們對每個m1和p之間的索引都做相同的swap-or-not的決定。

從第一個鏡像索引到軸心的swap-or-not決定

計算第二個鏡像索引

在做完從m1到p的所有索引決定后,我們現在找到第二個以m2為中點的鏡像索引,即到p和列表末端的距離相等的點。也就是m2=m1n/2。

第二個鏡像索引

從軸心點到第二個鏡像,替換與否

最后,我們重復swap-or-not的過程,考慮所有點到軸心p替換的決定,即p到第二個鏡像m2的決定。如果我們選擇不替換,就繼續下一個。如果我們選擇替換,那么我們在鏡像索引m2上把j1上的元素與它在j1’上的鏡像進行替換。

美國饒舌歌手Lil Uzi Vert發布關于以太坊的推文:美國饒舌歌手、歌手與詞曲作家Lil Uzi Vert發布推特稱:“以太坊真的有用,相信我。”Lil Uzi Vert真名為Symere Woods,創作的單曲曾登至Billboard百強單曲榜第54名,后獲得雙白金認證,Lil Uzi Vert 還獲得過兩項格萊美獎提名,目前在推特有800萬粉絲。[2021/2/1 18:34:04]

從軸心到第二個鏡像索引的swap-or-not決定

組合起來

在一輪的最后,我們都已經考慮了m1到m2之間所有的索引,即所有索引的一半,且無論替換與否,每個索引都在另一半有一個特定的索引。因此,關于替換與否,所有的索引都已被考慮過一次了。

下一輪以增加(或減少)輪次開啟,這樣我們會有一個新的軸心索引,然后開始循環上述的過程。

同一輪中從一個鏡像移向另一個鏡像的過程

有趣之處

巧妙的地方

當在決定要不要替換的時候,這個算法會巧妙地選擇候選索引或其鏡像中的更高者。意思是當在軸心之下時,被選擇的是i_1而不是i_1’;當在軸心之上時,被選擇的時i_k’而不是i_k。這意味著,我們可以靈活遍歷列表中的索引:我們可以將0到m1和p到m2分為兩個獨立的循環,或將兩者合在同一個從m1到m2的循環,如我在上文所描繪的。這兩種做法的結果是一樣的:無論我考慮的是i_1還是鏡像i_1’都沒有關系;替換與否得出的是相同的結果。

分析 | 彭博社:以太坊網絡正失去市場份額:據彭博社文章分析,以太坊網絡正在失去市場份額,承諾推出更好功能的項目開始在以太坊競爭對手的平臺上交付,一些初創公司正在使用EOS和Stellar等加密貨幣網絡通過ICO籌集資金。根據跟蹤器DappRadar的數據,截至1月份,只有28%的DAPP用戶使用以太坊網絡,去年同期為100%。 DappRadar發現,活躍DAPP用戶中EOS用戶占48%,而Tron占據了24%。在1月份發布的DAPP總數中,以太坊仍處于領先地位,占市場份額的40%。 EOS和Tron各占30%左右。DappRadar首席運營官Patrick Barile表示,之所以采用這些新協議是因為它們提供了更好的速度、更高的每秒交易次數,這意味著更好的用戶體驗。[2019/3/29]

輪次

在Eth2,上述的過程會進行90次。原始論文里提到要經歷6lgN個輪次才能“開始在選擇性密碼攻擊(CCA)上出現較好的安全性界限”,其中N是列表的長度。在Vitalik的注釋規范里,他說“密碼學專家建議我們4log2N個輪次就能提供足夠的安全性了”。

在Eth2里驗證者數量的絕對最大值,也就是我們需要混洗的列表最大次數,大概是222(420萬)。Vitalik給出的預估值是88輪,在論文里的預估值是92輪(假設lg是自然對數)。因此,我們現在處于一個大致正確的范圍,特別是我們最后非常可能沒有這么多活躍驗證者。

基于列表長度來調整輪次可能會得出有趣的結果,但我們不會這么做,這可能是不必要的優化。

有意思的是,當LeastAuthority審計信標鏈的規范時,他們一開始發現在選擇區塊提議者的混洗中是有偏倚的(參考IssueF)。但結果是他們錯誤使用了只有10輪次的混洗配置。當他們將混洗配置增加到90輪(我們在主網使用的輪次)時,偏倚的情況消失了。

(偽)隨機

混洗算法要求我們在每一輪里隨機選一個軸心點,且在每輪里隨機選擇是否對每個元素進行替換。

在Eth2,我們肯定會從一個種子值產生隨機性,由此這同一個種子總會產生同一個混洗結果。

軸心指標是由把與輪次串聯的種子進行8字節的SHA2哈希產生的,軸心索引由種子值SHA2哈希的八個字節生成,該種子值與輪次相串聯,因此它通常在每輪里都有會改變。

用來決定是否要替換元素的決定性數位從以下幾個元素中提取:種子的SHA256哈希、輪次、列表上元素的索引。

效率

這個混洗算法比Fisher-Yates算法要慢得多。如果Fisher-Yates算法需要N次混洗的話,我們的算法平均需要90N/4次。我們還要考慮偽隨機性的產生,這是算法中成本最高的部分。Fisher-Yates需要接近Nlog2N數位的隨機性,而我們需要90(log2NN/2)數位,根據我們在Eth2里需要的N值范圍,超出的數位是相當多的?(當N為一百萬時,Eth2大約需要N的兩倍)。

為什么選擇swap-or-not這種算法

如果效率不高,為什么要選擇這個實現?

對單一元素進行混洗

這個算法的閃光點在于,如果我們只關注少數幾個索引,我們不需要對整個列表的混洗進行計算。事實上,我們可以將這個算法用于單個索引,來找出哪個索引將會被替換。

因此,如果我們想知道索引217的元素被混洗到哪里了,我們可以運行只針對該索引的算法,而無需混洗整個列表。此外,相反地,如果我們想知道是什么元素被混洗到索引217,我們可以將算法倒過來運行來找到元素217(倒過來的意思是從高到低運行輪次,而不是從低到高)。

總之,我們可以在恒定時間內計算出元素?i?被混洗到哪里,也可以計算出元素?i?的源頭在哪里(用反向操作),計算時間并不取決于列表的長度。Fisher-Yates混洗并不具有這種特性,且不能對單個索引進行混洗,它們往往需要重復混洗整個列表。

在Eth2規范里寫的就是關于如何將算法應用到對單個索引進行混洗。事實上,一次性混洗整個列表只是它的一種優化!如果我們想的話,我們可以輪流只對列表里的一個元素進行混洗:(反向)運行混洗來找出哪個元素最終落在索引0,再運行一次混洗找出哪個元素最終落在索引1,如此進行下去。

我們不那樣做的原因只是由于決定swap-or-not需要一次性生成一個256位的哈希,且就這樣拋棄255位是很浪費的。如果我們使用1位的哈希或預言,混洗列表中一個元素的效率與混洗整個列表相去無幾。

做到真正的“輕”客戶端

這個特性之所以有意義,原因全在于輕客戶端。輕客戶端相當于是Eth2信標鏈和分片鏈的觀測者,他們不儲存整個狀態,但希望可以安全地訪問鏈上的數據。要對他們的數據正確性進行驗證,即沒有發生欺詐,其中的必要一步就是對證明數據的委員會進行計算。

也就是要用到混洗算法,且我們并不希望輕客戶端必須存儲或是混洗整個驗證者列表。通過swap-or-not混洗,他們可以只對他們需要的一小部分委員會成員進行計算,這樣將在整體上大幅提高效率。

歷史

如果你像我一樣喜歡GitHub的考古特性,你可以在這里查看最初為Eth2尋求混洗算法的討論,這里公布了最后的勝出者。

如果想從另一個角度看swap-or-not混洗算法,可以看一下Protolambda發表的一個更可視化的解釋。

最后

這張圖片是2019年我在EthCC上一邊聽JustinDrake講swap-or-not混洗,一邊在Teku客戶端(當時它還叫Artemis)中實現初版swap-or-not混洗。?

作者|BenEdgington

Tags:以太坊ETHSWAPETH2rly幣為什么要關閉以太坊側鏈staking ETHSokuSwaprETH2幣

區塊鏈
Uniswap:【DeFi科普-以太坊】玩轉Uniswap 必備知識,Uniswap最全知識科普!

Uniswap是什么? Uniswap是一個在以太坊區塊鏈上運行的交易所,它支援ETH與Token之間、Token與Token之間的快速兌換.

1900/1/1 0:00:00
OIN:阿帆談幣:9.19BTC ETH多空膠著 耐心等待爆發

各位朋友們,你們好,我是阿帆談幣(aftb88888)。阿帆本著負責、誠懇、認真的態度用心寫好每一篇分析文章,特點鮮明,不夸張,不含糊,力求能讓大家看懂大的趨勢分析以及小范圍的多空搏殺力度! 技.

1900/1/1 0:00:00
LIGHT:閃電實驗室以及 c-lightning 本周均更新了其技術堆棧

鏈聞消息,維護閃電網絡實現方案LightningNetworkDaemon的閃電實驗室以及由Blockstream開發的的閃電網絡客戶端c-lightning均更新了其技術堆棧.

1900/1/1 0:00:00
BSC:歐科云鏈 OKLink 鏈上周報:比特幣挖礦難度上調至歷史新高,以太坊全網算力持續回升

鏈聞消息,據歐科云鏈OKLink數據顯示,近一周,比特幣鏈上活躍地址數總計519.14萬,環比上升1.11%;新增地址數總計344.71萬.

1900/1/1 0:00:00
以太坊:[持幣者]9月21日比特幣以太坊行情分析 行情處于吸血階段

昨日早間持幣者的標題是《9月20日比特幣以太坊行情分析是否是瀑布的起始》,目前比特幣價位在一線,以太坊在一線.

1900/1/1 0:00:00
BTC:老李解幣:BTC至九月初瀑布后持續震蕩上行,多單可上看11500

且聽風吟,靜待花開,流年已亡,夏日未到,種花的人變成了看花的人,觀望的人變成了交易的人,行情就像倒在掌心的水,不論你攤開還是緊握,終究還是會從指縫間流逝,利潤沒有等你,是我忘了帶你走.

1900/1/1 0:00:00
ads