通過我們之前關於Solana區塊鏈技術的出版物,我們剖析了POH、Tower BFT、Turbine、Sealevel、Gulf Stream 等元素。在接下來的論文中,我們將討論RAM 及其優化的問題。
事實上,代碼並不是一切。信息架構以及可用材料的優化是區塊鏈技術性能的關鍵要素。讓我們來了解一下Cloudbreak,它是Solana 的7 大支柱之一,旨在提高交易的可擴展性。
本文是作為Solana 支持的教育交易所活動的一部分提供給你的。
區塊鏈:內存及其限制
有多種適用於不同區塊鍊和DAG 的擴展解決方案。一些,如以太坊,使用或計劃使用碎片,英語中的“分片”。 Solana區塊鏈並非如此,它旨在適應現有材料。
優化軟件和共識功能是不夠的。事實上,還必須考慮可用資源的使用。通常,用於跟踪每個帳戶餘額的內存類型很快就會成為瓶頸,無論是在大小方面還是在訪問速度方面。
例如,許多加密貨幣使用的數據庫系統LevelDB 不支持通過單台計算機每秒處理超過5,000 筆交易。這個限制是真實的,因為虛擬機不能很好地利用硬件的同時讀/寫能力。
為了解決這個問題,可以設想一種基於將這些數據存儲在隨機存取存儲器中的解決方案。但是,帳戶餘額會佔用大量空間。普通用戶的計算機很少有所需的內存量。
另一種替代方案的特點是使用SSD,先驗地保持相當快的速度,同時每GB 的成本也很有趣:平均比RAM 便宜30 倍。然而,這些似乎都不合適。
以最新的三星NVMe SSD 之一為例,它的讀/寫速度比傳統SATA SSD 快10 倍。以下是它的規格:
三星NVMe SSD 規格
在區塊鏈中,一個旨在花費硬幣的簡單交易需要完成許多操作:
賬戶餘額的兩個讀數, 發佈到帳戶。
然而,所述賬戶的地址是加密貨幣公鑰,完全隨機並且它們之間沒有聯繫(參見局部性原則)。因此,這些消耗的資源比利用內存中的有序數據要多得多。
此外,一個錢包可以包含多個不同的地址,彼此不相關。因此,不可能對它們進行排序和組織以加快交易處理速度。
當這些參數被同化時,我們很快就會看到SSD 允許的每秒15,000 次唯一讀取,只要我們將自己限制在單個指令線程或線程,就將可能的事務總量限制為每秒7,500 次。
關於寫入,在這種情況下它們沒有限制因素:每秒55,000 次寫入是可能的,因為每個“單個”事務只有一個條目。因此,我們堅持SSD 上每秒7,500 個事務的限制。
然而,這個數字是通過想像一個簡單的過程獲得的,只有一個指令線程。然而,現代SSD 最多允許32 個指令線程並行,這使最大事務數達到每秒185,000 次左右。 Solana 和Cloudbreak 的靈感來自於這種可能性。
了解Solana Cloudbreak
為了實現令Solana區塊鏈享有盛譽的性能,其設計經過精心設計,使軟件元素與其所在服務器的硬件元素完全協調工作。
在這種情況下,最複雜的挑戰是組織包含帳戶餘額的數據庫,以便可以通過32 個可用指令線程對其進行讀取和寫入。
經典數據庫沒有利用這種可能性,也不是為區塊鏈設計的。因此,Solana 使用專門的數據庫,該數據庫依賴於多個元素才能更好地運行。
第一個是使用內存映射文件。這些文件包含特定信息(此處為帳戶餘額),並且在內存中存儲有唯一標識符。
該系統允許計算機通過引用將該文件以某種方式集成到RAM 中,並且無需將所有內容都複製到RAM 中即可快速使用該文件的內容。這是訪問速度和使用空間之間的折衷。
Solana 通過Cloudbreak 利用的第二個元素來自順序操作比隨機操作快得多的想法。對於計算機的整個內存也是如此。
處理器能夠非常快速地訪問順序存儲器。因此,這是一個利用這種差異的問題,並對來自區塊鏈的數據進行一些排序,這些數據往往是隨機的。 Solana 進行如下:
賬戶和分叉列表存儲在RAM 中。帳戶存儲在4MB 或更少的內存映射文件中。每個內存映射僅存儲鏈接到單個分叉的帳戶。映射隨機分佈到盡可能多的SSD。寫時復制(COW) 用於限制無用複制的信息量。新寫入將添加到受影響分叉的隨機內存映射中。每次寫入完成後都會更新列表。
由於帳戶更新是通過寫時復制執行並寫入隨機SSD,因此Solana 既享有順序寫入的優勢,又享有寫入大量SSD 以進行並發交易所提供的橫向擴展的優勢。
讀取總是在隨機訪問中完成,但由於來自fork 的任何更新都必須在多個SSD 上共享,因此讀取速度也受益於更好的水平可擴展性。
這還不是全部:Cloudbreak 還包括垃圾回收機制。當每個分叉都被網絡參與者充分驗證以避免回溯並更新帳戶餘額時,與現在無效的舊帳戶對應的數據將被恢復並銷毀以釋放內存空間。
最後,Cloudbreak架構賦予的最後一個優勢是:計算一個fork更新的Merkle根是一個可以順序讀取的操作,也得益於SSD橫向擴展性的提升。
然而,這種方法有一個缺點,即對於不熟悉系統的程序員來說,數據變得不太容易理解。作為一個單一的結構,Cloudbreak 不使用其他系統用來製定查詢和操作數據的經典抽象。
測試Cloudbreak 系統
通過Cloudbreak 提取數據細分
當帳戶寄存器在RAM 中時,我們可以看到吞吐量對應於RAM 的訪問速度,同時受益於取決於中央處理器內核數量的可擴展性。
從1000 萬個帳戶中,RAM 中沒有足夠的空間來存儲整個數據庫。不過我們還是可以看到,單顆SSD的性能,與每秒百萬次的讀寫相差不遠。
在實踐中,Solana 還遠未利用這一巨大潛力,但有一點是肯定的:多虧了Cloudbreak,擴大規模是可能的。
文章Solana 將如何擴大規模? Cloudbreak 的技術採訪首先出現在Journal du Coin 上。
資訊來源:由0x資訊編譯自JOURNALDUCOIN。版權歸作者Benjamin Martin所有,未經許可,不得轉載