加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > 以太坊 > Info

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

Author:

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

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

進一步優化數據庫結構

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

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

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

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

按桶(bucket)來細分數據庫

持有超10萬枚ADA的錢包地址數達16個月以來高點:8月14日消息,Santiment發推稱,由于Cardano市值自4個月前達到峰值以來下跌了35%,交易員對其情緒持續低迷。然而,鯊魚和鯨魚交易員并沒有如人們所想的那樣被嚇倒。現在有25294個錢包地址持有超過10萬枚ADA,達到16個月以來高點。[2023/8/14 16:25:01]

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

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

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

數據:逾1400枚WBTC從FTX US轉出至新地址:11月7日消息,派盾(PeckShield)監測顯示,1406枚WBTC(約2937萬美元)已從標記為FTX US的地址轉移到新地址0xa4Aa...fF1。[2022/11/7 12:26:58]

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

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

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

數據:近1小時內三箭資本地址轉出超32,000枚以太坊至FTX:5月30日信息,據歐科云鏈鏈上天眼監測,被OKLink ETH瀏覽器標記為“Three Arrows Capital”地址(開頭為“0x82Ac”),在17:12:57再次轉出 16,000 枚 ETH至FTX,1小時轉入FTX超32,000枚以太坊,價值超6000萬美元。[2022/5/30 3:50:40]

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

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

Cosmos創始人新項目Gno Land將于5月20日進行空投快照:5月18日消息,Cosmos生態智能合約平臺Gno Land將于北京時間5月20日23時進行空投快照。Cosmos創始人JaeKwon在社交媒體上發文表示,若希望獲得GNOT空投,用戶需在Cosmos69號提案投票中投出反對票或棄權票,且不能將ATOM存儲在中心化交易平臺錢包地址。此前報道,Cosmos創始人JaeKwon于2021年2月宣布從Cosmos網絡母公司AIB(AllinBits)及The Interchain Foundation(ICF)離職,全職開發Gno智能合約語言。[2022/5/18 3:24:19]

- 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:ETHGETGETHTURAetheriustogetherbnb作弊碼togetherbnb喝醉之后能干嘛Payturn

以太坊
火幣中國持續發力"區塊鏈+" 將推出區塊鏈BaaS平臺_區塊鏈:BAA

2月20日,火幣中國宣布將推出自主研發的區塊鏈BaaS平臺,將以此為載體打造區塊鏈行業應用生態集群。市場對區塊鏈功能和應用的認可度越來越高,但過高的技術門檻正成為發展阻礙.

1900/1/1 0:00:00
助力全面建設小康關鍵年:開年兩個月內5份“區塊鏈+農業”文件出爐_區塊鏈:人工智能

近日,農業農村部接連印發了兩份工作文件,其中均有提到區塊鏈技術。此前,互鏈脈搏就曾觀察到,2020年中央一號文件仍是聚焦“三農”領域,不同的是,此文件將區塊鏈排在了人工智能和5G之前,可見中央對.

1900/1/1 0:00:00
DAOmesh:通過DAO和賞金編織的協作網絡構建全球化新經濟模型_DAO:MES

當越來越多的人開始談論 DAO 的商業化應用場景時,或許就是它的價值爆發點即將出現的信號。在這以前,我們對 DAO 的關注和討論大都集中在它的機制設計和技術層面,但最近我周邊的聲音開始逐漸向商業.

1900/1/1 0:00:00
行情周刊丨本周主流減半幣種行情動態匯總_比特幣:PEOS

上周日主流減半幣:本周日主流減半幣: 截至發稿,BTC報價為9972.7美元,較上周日下跌約1.015%,本周最高漲至10500美元,周內最大漲幅約4.22%.

1900/1/1 0:00:00
螞蟻金服閆鶯:區塊鏈技術2020年新趨勢_區塊鏈:aion幣下架

基于目前的區塊鏈業務發展趨勢及技術的積累程度,預判2020年總體上成熟的業務將會從單鏈協作邁入跨鏈協作階段,形成更大規模的業務價值網絡.

1900/1/1 0:00:00
BTC高位洗盤 行情進入高風險區間?_BTC:winklink幣每日增發

BTC跌破48000美元關口 日內跌幅為9.83%:火幣全球站數據顯示,BTC短線下跌,跌破48000美元關口,現報47999.0美元,日內跌幅達到9.83%,行情波動較大,請做好風險控制.

1900/1/1 0:00:00
ads