比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads
首頁 > 火必APP > Info

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

Author:

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

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

進一步優化數據庫結構

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

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

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

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

按桶(bucket)來細分數據庫

報告:90%的家辦客戶希望將加密貨幣納入投資策略:5月26日消息,根據為高凈值人士提供服務的全球供應商Ocorian的一份報告,99%的受訪者表示,增加對另類資產類別的敞口是一個長期趨勢。另類資產類別清單中包括資本融資、商業開發、私募股權、商品和對沖基金等傳統另類資產類別以及加密數字資產。80%的家族辦公室報告說他們正在努力尋求監管和報告義務方面的支持,另外全球稅收制度之間的不一致也是一個問題。由于這些障礙,80%的家族辦公室和高凈值人士也表示,他們正在努力將業務外包給愿意支持他們履行投資數字資產的監管和報告義務的第三方。[2023/5/26 10:40:48]

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

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

渣打銀行分析師:如果美國債務違約,比特幣將飆升20,000美元:金色財經報道,渣打銀行外匯研究主管杰夫肯德里克最近表示,如果美國違約,比特幣的價格可能會上漲20,000美元。根據肯德里克的說法,雖然比特幣在美國違約時可能會飆升,但ETH等其他加密貨幣可能會下跌。隨著人們越來越擔心美國政府可能會拖欠債務,杰夫肯德里克表示,這樣的事件將導致BTC的價格飆升超過20,000美元。盡管肯德里克將違約描述為“低概率、高影響的事件”,但他仍然表示,頂級加密貨幣在市場下跌時表現良好的聲譽及其避險地位意味著其價格近70%的飆升是可能的。[2023/5/4 14:42:35]

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

Web3游戲Battlegrounds開發商CEBG Game完成300萬美元私募輪融資:金色財經報道,Web3多人在線戰術競技游戲Battlegrounds開發商CEBG Game在社交媒體宣布已完成300萬美元私募輪融資,Youbi Capital、GSR Ventures、A&T Capital等參投。Battlegrounds目前已支持iOS和Android系統,并且推出了PvE和PvP兩種游戲模式,玩家可通過完成游戲任務獲得激勵。[2023/4/19 14:13:55]

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

數據:STEPN在BNB Chain上的活躍用戶總數目前為17,493人:金色財經消息,據Dune鏈上數據顯示,STEPN在BNB Chain上的活躍用戶總數目前為17,493人。[2022/5/23 3:34:24]

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

原子性:“原子” 意味著不可分割。假設現在我們要給一個數據庫存儲多個哈希值,而其中一個在插入數據庫時失敗了,如果此時所有哈希值的操作都會同時撤銷,這就叫做原子性。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:ETHGETGETHTURBeacon ETHgeta幣怎么樣togetherbnb怎么喝醉SignatureChain

火必APP
區塊鏈:中國人民銀行區塊鏈專利居全球央行首位 平臺業務量超870億

近幾年,區塊鏈憑借其獨有的信任傳遞機制,逐漸成為金融科技領域的熱門技術。日前,人民銀行數字貨幣研究所(以下簡稱“數研所”)區塊鏈課題組發布《區塊鏈技術的發展與管理》重磅文章,文章的牽頭作者正是央.

1900/1/1 0:00:00
區塊鏈:對稱、非對稱公鑰加密是如何工作的?

作者 | Shiva Sai Kumar B翻譯 | 火火醬,責編 | Carol出品 | 區塊鏈大本營(ID:blockchain_camp)加密技術讓區塊鏈技術變得更加強大.

1900/1/1 0:00:00
以太坊:以太坊期貨交易量超45億美元 創2019年下半年以來新高

作者:Omkar Godbole   |   編譯者:Maya根據Skew Markets的數據,過去三周內.

1900/1/1 0:00:00
CBD:2種經典的短線賣出技巧 告別被套

 一、三重死叉賣出法 如圖所示,哈藥股份(600664)股價在長期上漲后開始緩慢下跌,幾乎出現5日、10日均價線、5日、10日均量線和MACD的死亡交叉點,這是股價賣出的信號.

1900/1/1 0:00:00
塞浦路斯:塞浦路斯證券交易委員會擁抱區塊鏈 但加密貨幣監管仍不明確

塞浦路斯證券交易委員會(CySEC)最近發布了一份報告,討論了其創新中心正在進行的活動。該創新中心是一個合作實體,于2018年10月啟動,作為CySEC與金融科技和監管科技部門實體之間的交流平臺.

1900/1/1 0:00:00
NBS:如何空手套白狼51個BTC?

從昨天晚上所有DeFi 相關的群里就熱鬧了起來主要是 因為 bZx  受到 Oracle (預言機)攻擊, 存幣用戶受到了損失.

1900/1/1 0:00:00
ads