幾個月以前,我加入了 Turbo-Geth 團隊,開始主動給 Trubo-Geth 客戶端貢獻代碼。Turbo-Geth 客戶端是 Geth 客戶端的一個另類版本(當前仍在開發),其目標是做得比原有的客戶端運行速度更快、更高效。那么 Turbo-Geth 實現這個目標的辦法包括下面幾項:
進一步優化數據庫結構
在需要與狀態數據交互的場合,減少對數據庫的讀、寫操作
優化狀態樹操作的效率(有可能需要改變現有狀態樹的數據結構)
在本文中,我會著重指出 Turbo-Geth 和 Geth 在數據庫上的不同之處。主要的區別在于:
不同的數據庫(使用 Bolt,而非 LevelDB)
按桶(bucket)來細分數據庫
億萬富翁Tim Draper:企業在 SVB 破產后應持有比特幣:金色財經報道,億萬富翁風險投資家Tim Draper認為,企業應該持有比特幣和其他至少兩種加密貨幣。Draper 沒有具體說明分配給比特幣和山寨幣的百分比。但是,他稱 BTC 是對沖不斷惡化的經濟狀況的對沖工具。Draper表示,硅谷和 Silvergate 等銀行的倒閉表明需要制定應急計劃,以確保企業始終手頭有現金,以維持自身和員工的生計。他補充說,政府一直在對銀行業進行過度監管和微觀管理,損害了其長期健康。企業需要多元化和分散化,以在當前的經濟條件下保持可持續發展。如果政府繼續過度印鈔并大幅降低利率以應對由此產生的通貨膨脹,此類銀行倒閉的可能性將更大。[2023/3/26 13:26:39]
那么,本文的主要內容也就跟這兩點相關。
Bolt 和 LevelDB 其實非常相似,兩者都是 “鍵-值對”(key-value)存儲,設計目標都是為不需要完整數據庫服務器的項目提供簡單、快捷且可靠的數據庫。Geth 選用的數據庫是 LevelDB,而 Turbo-Geth 選用的是 Bolt。
迪拜經濟自由區將額外投資500萬美元打造全球加密貨幣中心:金色財經報道,Bitcoin Magazine在社交媒體上稱,迪拜經濟自由區將額外投資500萬美元,打造全球比特幣和加密貨幣中心。[2023/3/2 12:38:47]
但兩者也有一個關鍵區別:組織數據的方式。LevelDB 是一個 LSM (Log-Structured Merged-Tree)數據庫,而 Bolt 使用 bucket,而且每一個 bucket 都包含著一個 B+- Tree 結構。我們可以把一個 bucket 當作 “大數據庫里的一個小數據庫”。
那么,兩者之間的主要區別在于:LSM 數據庫是為重度添加操作(appending)和范圍掃描操作(range scanning)優化的,而不是為隨機讀取的性能優化的;為了提供一致性,它不允許同時對數據庫執行讀、寫操作。也是出于性能考慮,這種數據庫是沒有實現原子性的。Bolt 則反之,插入操作(inserting)速度較慢,但是隨機讀取速度較快,實現了原子性,而且可以同時對數據庫讀寫。
Algorand任命首席運營官W. Sean Ford為新的臨時CEO:7月27日消息,繼前任首席執行官 Steven Kokinos 離職后,Algorand 于周三任命了一位新的臨時首席執行官。 長期員工 W. Sean Ford(前區塊鏈公司的首席運營官)將接替 Kokinos,他將繼續擔任高級顧問,直到 2023 年年中。在他之前的角色中,Ford 負責產品管理、工程、營銷和全球社區發展。[2022/7/27 2:41:40]
我們再稍微解釋一下原子性:
原子性:“原子” 意味著不可分割。假設現在我們要給一個數據庫存儲多個哈希值,而其中一個在插入數據庫時失敗了,如果此時所有哈希值的操作都會同時撤銷,這就叫做原子性。Turbo-Geth 就有這樣的特性,只有所有哈希值的插入操作都成功時,這個操作才能成功。而沒有實現原子性的數據庫(比如 LevelDB)則意味著,必須使用一個 workaround 以安全地將數據插入數據庫。換句話來說,在這個點上,我們覺得 Bolt 更好,因為他在給數據庫添加數據時更安全。
StarkWare計劃今年9月推出StarkNet代幣并在未來一年半內分發:7月13日消息,零知識證明技術開發公司StarkWare計劃今年9月在鏈上推出StarkNet代幣,該代幣將允許社區的支持者執行有助于生態系統成功的工作,并在生態系統的治理中發揮作用。為了實現這一目標,StarkWare計劃在未來一年半內向公司的投資者、員工和顧問以及社區開發人員、貢獻者和最終用戶分發代幣,為了使核心貢獻者和投資者的長期激勵措施與StarkNet社區的利益保持一致,分配給核心貢獻者和投資者的所有代幣都將受到4年鎖定期的限制、線性釋放和一年的cliff(即代幣解禁之前的時間段)。(the block)[2022/7/14 2:11:36]
如前所述,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:ETHGETHGETTUREthereum Apextogetherbnb按t打不開了togetherbnb怎么開啟HSignatureChain
2020年2月17日,嘉楠宣布與區塊鏈解決方案及數據中心服務提供商Northern Data AG達成戰略合作。本次合作的內容涵蓋AI、區塊鏈及數據中心運維等高性能計算領域.
1900/1/1 0:00:00距離比特幣第三次減半還有三個月的時間,整個加密貨幣社區都擔心這個大事件過后比特幣的價格可能會發生什么變化.
1900/1/1 0:00:00一位備受矚目的比特幣鯨魚表示,他已停止做空比特幣。 圖片來源:Pixabay這條鯨名為Joe007,從2019年12月到2020年1月在加密貨幣交易所Bitfinex上實現了2000萬美元的實現.
1900/1/1 0:00:002月26日,近日亞信安全威脅情報中心發布了《亞信安全2019威脅態勢分析》報告。報告對于2019年的安全演變進行了剖析,報告特別強調,勒索病已經成長為網絡世界最大的安全威脅之一,而挖礦病也憑.
1900/1/1 0:00:00看好情緒是盲目的嗎? 減半行情轟轟烈烈的來了,帶動各種加密貨幣,不論是減產的還是不減產的,都經歷了一波價格的抬升。對于未來及貨幣價格,尤其是比特幣的價格,整個市場處于一個強烈的看好情緒中.
1900/1/1 0:00:00(紫丁香花叢,梵高) 前言:在過去的幾天bZx事件在加密圈引起廣泛關注。黑客之所以能“攻擊”成功,除了操縱價格之外,其中利用最充分就是閃貸.
1900/1/1 0:00:00