比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > ETH > Info

引介:Turbo-Geth 客戶端:數據庫改進_ETH

Author:

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

幾個月以前,我加入了 Turbo-Geth 團隊,開始主動給 Trubo-Geth 客戶端貢獻代碼。Turbo-Geth 客戶端是 Geth 客戶端的一個另類版本(當前仍在開發),其目標是做得比原有的客戶端運行速度更快、更高效。那么 Turbo-Geth 實現這個目標的辦法包括下面幾項:

進一步優化數據庫結構

在需要與狀態數據交互的場合,減少對數據庫的讀、寫操作

優化狀態樹操作的效率(有可能需要改變現有狀態樹的數據結構)

在本文中,我會著重指出 Turbo-Geth 和 Geth 在數據庫上的不同之處。主要的區別在于:

不同的數據庫(使用 Bolt,而非 LevelDB)

按桶(bucket)來細分數據庫

Cardano權益簽名協議Mithril即將推出其主網:金色財經報道,根據Cardano社區知名人物Richard McCracken最近在權益池運營商 (SPO) 電話會議上的記錄,Cardano權益簽名協議Mithril即將推出其主網。Mithril 協議旨在通過基于權益的門限簽名方案創建更強大、更輕的區塊鏈,以增強區塊鏈應用程序中的鏈同步、狀態引導和信任問題。

\u2028[2023/6/9 21:26:16]

那么,本文的主要內容也就跟這兩點相關。

Bolt 和 LevelDB 其實非常相似,兩者都是 “鍵-值對”(key-value)存儲,設計目標都是為不需要完整數據庫服務器的項目提供簡單、快捷且可靠的數據庫。Geth 選用的數據庫是 LevelDB,而 Turbo-Geth 選用的是 Bolt。

截至2022年底Binance在五大洲14個國家/地區獲得注冊許可或執照:12月29日消息,截至 2022 年底,Binance 在五大洲的 14 個國家或地區獲得了注冊許可或執照,這些國家/地區包括哥倫比亞、阿布扎比、巴林、迪拜、南非、法國、意大利、西班牙、波蘭、立陶宛、塞浦路斯、哈薩克斯坦、澳大利亞和新西蘭。2022 年,Binance 的合規團隊也從 500 人擴大至 750 人。

未來一年,Binance 將繼續和全球監管機構、政策制定者協作,確保符合所有現行要求,并推動加密資產監管政策合理化,在保護用戶的同時創造一個有利于金融創新的環境。[2022/12/29 22:14:51]

但兩者也有一個關鍵區別:組織數據的方式。LevelDB 是一個 LSM (Log-Structured Merged-Tree)數據庫,而 Bolt 使用 bucket,而且每一個 bucket 都包含著一個 B+- Tree 結構。我們可以把一個 bucket 當作 “大數據庫里的一個小數據庫”。

派盾:DigiDaigaku CEO 推特賬戶疑似被盜,謹防釣魚鏈接:11月3日消息,據派盾監測(PeckShieldAlert)顯示,DigiDaigaku CEO Gabriel Leydon 推特賬戶疑似被盜,villians-digidaigaku[.]com 系釣魚鏈接,提醒用戶謹防與其交互。[2022/11/3 12:12:31]

那么,兩者之間的主要區別在于:LSM 數據庫是為重度添加操作(appending)和范圍掃描操作(range scanning)優化的,而不是為隨機讀取的性能優化的;為了提供一致性,它不允許同時對數據庫執行讀、寫操作。也是出于性能考慮,這種數據庫是沒有實現原子性的。Bolt 則反之,插入操作(inserting)速度較慢,但是隨機讀取速度較快,實現了原子性,而且可以同時對數據庫讀寫。

地板價下跌推動BAYC等頭部NFT項目近24小時交易額上漲:金色財經報道,隨著頭部NFT項目地板價下跌,BAYC、Otherdeed、Cryptopunks、Doodles等項目最近24小時交易額大幅上漲。數據顯示,“無聊猿”BAYC過去24小時交易額接近500萬美元,漲幅為137.80%;Otherdeed過去24小時交易額達到227萬美元,漲幅為29.75%;Cryptopunks過去24小時交易額達到140萬美元,漲幅為326.32%;Doodles過去24小時交易額超過80萬美元,漲幅達到413.61%。[2022/6/13 4:23:41]

我們再稍微解釋一下原子性:

原子性:“原子” 意味著不可分割。假設現在我們要給一個數據庫存儲多個哈希值,而其中一個在插入數據庫時失敗了,如果此時所有哈希值的操作都會同時撤銷,這就叫做原子性。Turbo-Geth 就有這樣的特性,只有所有哈希值的插入操作都成功時,這個操作才能成功。而沒有實現原子性的數據庫(比如 LevelDB)則意味著,必須使用一個 workaround 以安全地將數據插入數據庫。換句話來說,在這個點上,我們覺得 Bolt 更好,因為他在給數據庫添加數據時更安全。

如前所述,Turbo-Geth 是切分成多個 bucket 的。每個 bucket 都是大數據庫中的一個小數據,各自包含了一個 B+-Tree 結構。

下面便是 Turbo-Geth 數據庫在區塊高度 9,346,492 處的切分:

- Turbo-Geth 的 Archive 節點的數據區分(區塊高度為 9,346,492)-

Geth 客戶端的 Archive 大小(區塊高度 9346492): 3.7 TBParity 客戶端的 Archive 大小(區塊高度 9346492): 3.6 TBTurbo-Geth 客戶端的 Archive 大小(區塊高度 9346492): 652.62 GB每一個部分都存儲在一個 bucket 里面。其中主要部分的簡要解釋如下:

原象(preimage):哈希值與地址之間的管理,以及存儲位置哈希值與存儲位置之間的關聯

收據(receipt):交易收據

合約存儲內容的歷史(History of Storage):合約存儲內容的變更歷史

賬戶歷史(History of Accounts):賬戶的變更歷史

區塊頭:每個區塊的區塊頭

區塊體:每個區塊的區塊體

合約存儲內容(Contract Storage):就是合約存儲內容

ChangeSet:數據庫變更歷史

賬戶:賬戶

使用這么多 bucket ,是為了讓構成大數據庫的各 B+-Tree 樹高不至于太高,這樣跟數據庫的交互就會比較容易。換句話說,這是在使用多個 bucket 來提高讀取數據庫的性能。

在切換到 Bolt 之后,Turbo-Geth 在處理隨機鍵(比如交易哈希值)時遇到了一些問題,因為 Bolt 會在提交數據之前對這些鍵進行排序(sort),又因為這些哈希值都是隨機的,而且數量很多,所以產生了大量的排序需求,然后導致大量的寫入放大現象(write amplification,實際寫入的物理數據量是寫入數據量的多倍)。而 BadgerDB 使用 log-structured-merge(LSM)模式,似乎是一個更好的選擇。這個問題仍在研究當中,不過,我們已經實現了一個 workaround 來解決這個問題。

這里有一個圖表,顯示了 BadgerDB 和 BoltDB 在整體性能上的對比(感謝 Alexey Akhunov 制圖):

Turbo-Geth 客戶端通過下列(數據庫)手段來優化以太坊的性能:

使用多個 bucket,以更迅速地檢索某些數據片

使用 B+-Tree 而非 LSM

如果你想給我們捐贈,可以通過 Gitcoin。

Tags:GETGETHETHTUROnegetcoin2023togetherbnb全部攻略toncoin幣和eth誰有潛力FUTURE價格

ETH
金色觀察 | 130億美元收購案 摩根斯坦利曲線進軍加密貨幣?_ADE

據華爾街日報2月20日報道,投行巨頭摩根士丹利擬以130億美元收購互聯網券商公司E-Trade。這將是自2008年經濟危機以來美國銀行最大的收購案.

1900/1/1 0:00:00
成都鏈安:在過去2個月中共發生13起較典型的安全事件_EOS

據成都鏈安區塊鏈安全態勢感知平臺Beosin-Eagle Eye統計數據顯示,在過去2個月中,共發生13起較典型的安全事件.

1900/1/1 0:00:00
金色薦讀丨60頁圖表數據帶你一文了解 2019年NFT行業_NFT

導讀:本文是由NonFungible.com撰寫的《2019 NFT年度報告》,發布于2月21日,由DappReview小伙伴翻譯并編輯.

1900/1/1 0:00:00
金色觀察 | 螞蟻S19VS神馬M30:一場芯片之爭_NAN

當比特幣區塊獎勵減半時,所有礦工產生的總收入也將減少一半。如果哈希率、功耗和電費都保持與以前相同,因此如果硬件沒有進行升級以保持競爭力,那么挖礦業務將很可能無利可圖.

1900/1/1 0:00:00
FATF加密貨幣法規適應期將止 全球采用情況如何?_NBS

導近8個月前,金融行動特別工作組(FATF)發布了引發分歧的加密貨幣指令,在加密貨幣領域建立起傳統的銀行監管制度.

1900/1/1 0:00:00
耐克為何不接受加密貨幣付款?_以太坊

顯然,在過去的三年中,加密貨幣支付正變得越來越流行,尤其用于發展中國家的點對點支付。然而,同樣明顯的是,無論大商家還是小商家,都不想處理接受加密貨幣作為支付方式面臨的兩個主要障礙:波動性和安全性.

1900/1/1 0:00:00
ads