加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > 世界幣 > Info

一文了解Geth客戶端快照加速機制_以太坊:COI

Author:

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

編者按:本文來自以太坊愛好者,作者:PéterSzilágyi,翻譯:阿劍,Odaily星球日報經授權轉載。本文為Geth客戶端有問必答系列的第一篇文章,大家可以就Geth客戶端的問題踴躍提問,我會每周用一篇小文章回答得票最高的問題。本周呼聲最高的問題是:你能說說flat數據庫結構與legacy結構的主要區別嗎?以太坊的狀態

在深入了解加速結構之前,我們先回顧一下以太坊的「狀態」概念、狀態在涉及到不同層次的抽象時又是如何存儲的。以太坊有兩種不同類型的狀態:賬戶的集合;每一合約賬戶存儲槽的集合。從完全抽象的角度來看,兩種數據都是鍵-值對。賬戶集合把地址映射到該地址的nonce、余額,等等。而一個合約的存儲領域把任意的值映射到某個值。但糟糕的是,雖然把這些鍵值對存儲成扁平數據可以非常高效,但驗證它們的正確性在計算上就會變得很難。每當對數據修改時,我們都要自下而上對所有數據做哈希運算。為免去總是對整個數據庫做哈希運算的需要,我們可以把數據庫分割成連續的小片,然后建立出一種樹狀結構!最原始、最有用的數據就放在葉子節點上,然后樹上每一個內部節點都是該節點以下內容的哈希值。如此一來,當我們要修改某些值時,就只需做對數次的哈希運算。這種數據結構其實有一個路人皆知的名字,就是「默克爾樹」。但還沒完,這種辦法在計算復雜性上還是有所欠缺。默克爾樹結構雖然在修改現有數據時非常高效,但是,如果插入數據和刪除數據會更改底層小數據塊的邊界,那就會讓所有已經算好的哈希值全都變為無效。這時候,與其盲目地對數據庫分組,我們可以使用鍵本身來組織數據、基于共同前綴將數據都安排到樹狀格式中!這樣插入和刪除操作都不會影響到所有節點,只會影響到從樹根到葉子路徑上的節點。這種數據結構就叫「帕特里夏樹」。把上面兩種辦法合在一起——帕特里夏樹的樹狀分層和默克爾樹的哈希算法——就是所謂的「默克爾-帕特里夏樹」,也是實踐中用于代表以太坊狀態的數據結構。無論是修改、插入、刪除還是驗證,都只有對數復雜度!唯一的小小例外是,有些鍵會在插入前做哈希運算,以平衡整棵樹。以太坊的狀態存儲

已被美執法部門扣押的絲綢之路疑似關聯地址進行一筆小額比特幣交易:6月21日消息,已被美國執法部門扣押的暗網市場絲綢之路(Silk Road)的疑似關聯地址進行了一筆小額比特幣交易,向另一個地址轉移了10BTC,并將1490枚BTC發到找零地址,它們隨后被發送到新的錢包中,其中包含與加密交易所Coinbase和Gemini相關聯的交易記錄2022年4月22日,因從Silk Road盜取比特幣而被定罪的James Zhong的一個錢包向該關聯地址發送了0.00000547BTC,在此期間他對其資金的控制權已移交給美國政府,其他幾個錢包也在同一筆交易中向它發送了比特幣,目前尚不清楚這些資金是否由美國政府持有。[2023/6/21 21:50:55]

上文解釋了為什么以太坊要用默克爾帕特里夏樹結構來存儲其狀態。遺憾的是,雖然所需操作的速度都很快,但每一種選擇都有所犧牲。更新操作和驗證操作的對數復雜性意味著對每一個單獨的密鑰的讀取和存儲都是對數復雜的。這是因為樹狀結構的每一個內部節點都要單獨保存在硬盤上。此時此刻,賬戶樹的深度確切是多少我不知道,但在大約一年以前,賬戶狀態就已填滿了7層高的樹。這就意味著,每一次樹操作都要觸達至少7~8個內部節點,因此會做至少7~8次持久數據庫訪問。LevelDB組織數據時最多也是7層,所以還有一個額外的乘數。最終的結果是,單次狀態訪問預計會放大為25~50次隨機的硬盤訪問。你再乘上一個區塊中的所有交易的所有狀態讀取和寫入,你會得到一個嚇人的數字。可怕之處還在于,這個數字就是運行一個以太坊節點、保證能全時驗證所有狀態的成本。我們能做得更好一點嗎?并不是所有訪問都要一視同仁

Nansen:三箭資本NFT銷售預估價值約為1030萬美元:金色財經報道,區塊鏈分析公司Nansen披露的數據顯示,三箭資本(3AC)NFT銷售預估價格為6280 ETH,約合1030萬美元,包括30枚Fidenza(4000 ETH),11枚CryptoPunks(1690 ETH)和17枚Ringers(1380 ETH),其中一些高價NFT有:3AC購買的CryptoPunk #6649價格為810 ETH、Archetype #397售出價為420 ETH(售出后一個月轉入3AC)、Fidenza #216售出價為320 ETH(售出后一個月轉入3AC)、3AC購買的Autoglyph #187價格為269 ETH。

據此前報道,三箭資本購買的一系列珍貴NFT將很快被出售。一份文件顯示,3AC的清算人Teneo已于2月22日將此次出售通知有關各方。Teneo高級董事總經理Christopher Farmer表示,出售“是為了清算目的實現NFT的價值”,并補充說預計將在通知發出后28天內開始。[2023/2/25 12:28:14]

以太坊的運行依賴于對狀態的密碼學證明。只要我們還想保持對所有數據的驗證能力,就繞不開硬盤讀寫放大問題。也就是說,我們——可以并且也事實上——相信我們已經驗證過的數據。不斷重復驗證每一個狀態物是沒有意義的,但如果每次從硬盤中拉取數據都要驗證一次的話,就是在做這樣沒有意義的事。默克爾帕特里夏樹結構本質上是為寫入操作設計的,但反過來就成了讀取操作的負擔。我們擺脫不了它,也無法讓它瘦身,但這絕不意味著我們在每一個場合都必須使用它。以太坊節點訪問狀態的場景可大致分為以下三類:在導入一個新區塊的時候,EVM代碼的執行會產生或多或少基本平衡的狀態讀取和寫入次數。不過,一個用于拒絕服務式攻擊的區塊可能會產生遠多于寫入操作的讀取操作次數。當節點運營者檢索狀態的時候,EVM代碼執行僅產生讀取操作。當節點在同步區塊鏈的時候,同步者會向遠程節點請求狀態,被請求者會將數據挖掘出來并通過網絡傳播給同步者。基于上述訪問模式,如果我們可以短路讀取操作而不觸及狀態樹,則許多節點操作都可以變得快很多。這樣甚至能開啟一些新奇的訪問模式,讓原來因為太過昂貴而不可行的模式變為可能。當然,還是不免有所犧牲。沒有去掉樹結構,任何新的加速結構都會帶來額外的開銷。問題只在于:額外的開銷是否能帶來足夠多的好處,值得我們一試?請循其本

Coinbase將上線歐元穩定幣Euro Coin:2月22日消息,據官方消息,Coinbase將上線歐元穩定幣Euro Coin (EUROC)。如果滿足流動性條件,交易將于太平洋冬令時2月22日9:00(北京時間2月23日1:00)開始。如果建立了足夠的資產供應, EUROC-USD和EUROC-EUR交易對將分階段開放交易。Coinbase僅在以太坊網絡上支持EUROC。在某些司法管轄區,EUROC交易可能會受到限制。歐元穩定幣EUROC由Circle于6月30日在以太坊上發行,100%由歐元計價的儲備支持,可以按照1:1的比例兌換成歐元。[2023/2/22 12:21:01]

我們已經開發出了神奇的默克爾帕特里夏樹結構來解決我們所有的問題,現在,我們希望讓讀取操作能繞過它。那么,我們應該用什么樣的加速結構來讓讀取操作重新變得快起來呢?顯然,如果我們不需要樹結構,那就大可以把伴隨樹結構而生的復雜性都丟在一邊,我們可以直接回到原始狀態。如同在本文開頭說到的那樣,理論上的理想狀態下以太坊狀態的數據存儲方式應是簡單鍵值對,沒了默克爾帕特里夏樹構成的限制,那就沒有什么能阻止我們去實現這種理想方案了!不久之前,Geth引入了snapshot加速結構。一個快照就是給定一個區塊處的以太坊狀態的完整視圖。抽象掉實現方面的細節,它就是把所有賬戶和合約存儲槽堆放在一起,都由扁平的鍵值對來表示。每當我們想要訪問某個賬戶或者某個存儲槽的時候,我們只需付出一次LevelDB的查詢操作即可,而不用在每棵樹上查詢7~8次。理論上來說,更新快照也很簡單,處理完一個區塊后,我們只需為每個要更新的存儲槽多做1次額外的LevelDB寫入操作即可。快照加速結構實際上將讀取操作的復雜性從O(logn)降到了O(1),代價是將寫入操作的復雜性從O(logn)變成了O(1+logn),并將硬盤存儲空間從O(nlogn)增加到了O(n+nlogn)。魔鬼藏在細節中

ZigZag:整合UST損害了財務狀況,代幣發售將讓團隊資金重回正軌:6月21日消息,ZK生態DEX ZigZag宣布,將于UTC時間6月24日下午3點(北京時間6月24日23:00)在其交易所出售治理代幣 ZZ,此次 IDO 將提供200 萬個代幣,總供應量為200 萬個代幣,僅支持USDC支付。此外,ZigZag計劃為早期采用者進行空投,但空投的要求將由在銷售中購買治理代幣的人決定。購買治理代幣的人將成為 ZigZag DAO 的初始成員,該社區將幫助決定平臺如何發展。

此外,團隊表示,“我們與 UST 的整合以及之后該穩定幣的脫鉤對財務狀況造成了影響。本次代幣發售的目標之一就是讓我們的資金重回正軌并與負債相匹配。 我們另一大優先事項是擁有足夠的資金以支付開發者工資,這對 ZigZag 交易所的增長至關重要。”[2022/6/21 4:42:58]

維持以太坊狀態快照的可用性也不容易。只要區塊還在一個接一個地產生,一個接一個地摞在最后一個區塊上,那將最新變更合并到快照中的粗疏辦法就能正常工作。但是,哪怕有微小的區塊鏈重組,快照機制就崩潰了,因為根本沒有設計撤銷操作。對扁平數據表示模式來說,持久化寫入是單向的操作。而且讓事情變得更糟糕的是,我們沒辦法訪問更老的狀態了。為了克服這些限制,Geth客戶端的快照由兩部分組成:一部分持久化的硬盤層,是對舊區塊處狀態的完整快照;還有一棵內存內diff層組成的樹,用于收集最新的寫入操作。處理新區塊的時候,我們不會直接合并這些寫入操作到硬盤層,而僅僅是創建一個新的、包含這些變更的內存內diff層。當內存內部的diff層積累到足夠高的層數時,最底部的一個就開始合并更新并推到硬盤層。當需要讀取一個狀態物時,我們就從最頂端的diff層開始查找,一直往下,直至在diff層中或者在硬盤層中找到。這種數據表示方法非常強大,解決了很多問題。因為內存內部的diff層組成了一棵樹,所以128個區塊以內的鏈重組只需取出屬于父塊的diff層,然后就此開始構建即可。需要較舊狀態的dApp和遠程同步者可以訪問到最近128個最近的狀態。開銷變成了128次映射查找,但128次內存內的查找比起8次硬盤讀取及LevelDB的4~5倍放大要快上幾個數量級。當然,這里面還有很多很多的坑。就不講太深了,簡單列舉就有下面這張清單:Self-destruct特別難以對付,因為它們需要短路diff層的沉降。如果出現了比持久硬盤層更深的鏈重組,那現在的快照就要完全廢棄掉、重新生成。整套操作非常昂貴。在節點關機時,內存內的diff層需要持久化到日志并加載備份,不然重啟之后快照就沒用了。使用最底層的diff層作為一個累加器,僅在其超過一定的內存使用時才刷新到硬盤。這就允許跨區塊對同一存儲槽執行去重寫入操作。要為硬盤層分配一個讀取緩存,這樣合約重復訪問同一個古老的存儲槽時硬盤才不會損壞。在內存內diff層中使用累積的布隆過濾器,以便快速檢測出狀態物有沒有可能存在于diff層中,還是應該直接跳到硬盤中查找。不把原始數據設為鍵,而是以這些數據的哈希值為鍵,以保證快照的迭代順序與默克爾帕特里夏樹相同。生成持久化硬盤層的時間要比剪除狀態樹窗口的時間多得多,所以即使是生成器,也需要動態地追蹤鏈的運行。美丑并存

DeFi數據聚合分析平臺Blockpour完成約330萬美元融資,Algorand基金會參投:6月10日消息,DeFi 數據聚合分析平臺 Blockpour 宣布完成約 330 萬美元種子輪融資,本輪融資由 Algorand 基金會、WeMade、GS Futures、 Kestrel 0x1、Supra Oracles 等參投。

Blockpour 可在一個儀表盤中匯總來自所有受支持網絡的 DeFi 應用程序的指標。目前,Blockpour 支持以太坊、Fantom、Avalanche 和 Polygon 網絡,并將在未來繼續集成其他網絡。(cointelegraph)[2022/6/10 4:15:11]

Geth的快照加速結構將狀態讀取的復雜性降低了一個數量級。這就意味著基于讀取操作的DoS攻擊的發動難度上了一個數量級,而ethcall調用也快了一個數量級。快照還讓對最近的塊進行極速狀態迭代成為可能。實際上這曾是我們開發快照機制的主要理由,因為我們可以此為基礎創造新的snap同步算法。講清楚它需要一篇全新的文章,但最近我們在Rinkeby測試網上的基準測試很能說明問題:

當然,這一切同樣不是沒有代價的。當初始同步完成之后,參與主網的節點需要9~10小時來建構初始快照,還需要額外的15GB以上的硬盤。那糟糕的部分是哪里呢?我們花了6個月時間才積累起足夠的自信、發布了快照機制,而且現在它仍然不是默認功能,需要主動使用--snapshot標記來開啟,而且還有一些圍繞內存使用和崩潰恢復的打磨工作要做。總而言之,對于這一提升,我們非常自豪。其中有巨大的工作量,而且是在黑暗中摸索、自己實現所有東西并祈禱它能工作。還有一個有趣的事情,第一個版本的快照同步是在兩年半以前寫的,但一直都處于被阻塞的狀態,因為我們缺乏必要的加速結構來驅動它。結語

希望你能喜歡Geth客戶端有問必答的這一篇文章。我花了比自己所預想的多出一倍的時間,但我并不后悔,因為這個主題值得。下周見。

Tags:以太坊ETHCOINCOI以太坊幣在中國合法嗎BULLETHAMZ Coinchatcoin幣未來價值

世界幣
區塊鏈調優“三板斧”, 數字農業發展按下“加速鍵”_區塊鏈:SPARK

俗話說,民以食為天。作為傳統的農業大國。三農問題,一直是國民關心的大話題,它關系著國計民生,也關系著我們每一個人的切身利益.

1900/1/1 0:00:00
ETH暴漲9.7%,加密貨幣市場終于“牛”起來了?_ETH:DeFi11

編者按:本文來自巴比特資訊,編譯:隔夜的粥,星球日報經授權發布。"一支穿云箭,千軍萬馬來相見!"北京時間7月23日早上6點30左右,在短短10分鐘的時間內,第二大加密貨幣ET.

1900/1/1 0:00:00
DeFi現狀:有項目方在拋售?也有大佬周賺數萬刀?_EFI:nYFI

編者按:本文來自 風火輪社區 ,作者:佩佩,Odaily星球日報經授權轉載。關于以太坊defi市場持倉市值的里程碑在昨天又被改寫:從0到5億美金,我們花了495天到10億美金——263天到20億.

1900/1/1 0:00:00
OKEx投研:ETH再成領頭羊,有望享受更高溢價_KEX:usdt幣怎么兌換人民幣在國內

BTC/USDT永續合約 各級別性質:日線-盤整,4小時-盤整,1小時-上漲截圖來自OKEXBTC/USDT永續合約2小時圖:對于行情從兩個角度來說.

1900/1/1 0:00:00
一文縱覽上半年穩定幣、DeFi借貸與NFT生態全景_DEF:穩定幣是什么意思

要點總結TokenInsightResearch發布的2020上半年DeFi研究報告計劃共分為三部分:交易-DEX、發行以及資管和其他。本篇為報告的第二部分:發行.

1900/1/1 0:00:00
Uniswap大遷徙_UNI:DEFI

編者按:本文來自區塊律動BlockBeats,作者:0x290x66,Odaily星球日報經授權轉載。「連在三大所的朋友都找我問Uniswap的事了。」李鳴說.

1900/1/1 0:00:00
ads