了解Solana:流水線、雲散、存檔器

Solana是世界上性能很強的無許可區塊鏈。Solana團隊由來自高通、英特爾和谷歌的先驅技術專家組成,一直專註於構建Solana所需的技術,以滿足這些突破性的性能標準。同時,Solana正在實施一些優化和新技術,以實現網絡突飛猛進的擴展。

Solana的技術實現標誌着區塊鏈的發展已進入一個全新階段。畢竟,Solana能夠在全球200個不同的節點網絡上實現5萬TPS,10萬筆交易僅在幾秒鐘內就能執行完畢。

為了創建一個與單節點性能匹配的去中心化、無許可的網絡,Solana團隊成功開發8項關鍵技術:工作歷史證明 PoH、基站拜占庭容錯(Tower BFT)、渦輪機(區塊傳播協議)、海灣流(無內存交易轉發協議)、海平面(并行智能合約)、流水線(驗證交易)、雲散(水平擴展賬戶數據庫)以及存檔器(分佈式賬本存儲)。

之前兩篇內容已經介紹過前5種技術,本文將解析最後三種創新技術——流水線(驗證交易)、雲散(水平擴展賬戶數據庫)以及存檔器(分佈式賬本存儲)。

流水線(Pipeline)→驗證交易

為了讓Solana成為世界上第一個網絡規模的區塊鏈,我們需要其擁有亞秒級的確認時間和交易能力,僅僅快速達成共識是不夠的。Solana團隊必須開發一種快速驗證大量交易塊的方法,同時在整個網絡上快速複製它們。

為實現這一點,Solana網絡上的交易驗證過程廣泛使用了CPU設計中常見的一種優化,稱為流水線(Pipeline)。

當有一個輸入數據流需要通過一系列的步驟來處理,並且有不同的硬件負責每一個步驟時,流水線便是一個極為合適的優化方案。解釋這一現象最典型的比喻是一個洗衣機和烘乾機,它們依次清洗/烘乾/摺疊幾件衣服。洗滌必須發生在乾燥之前,乾燥必須發生在摺疊之前,但這三項操作中的每一項都是由一個單獨的單元來完成的。

為了最大限度地提高效率,Solana創建了一個階段性的流水線。我們可以稱洗衣機為第一步,烘乾機為第二步,摺疊為第三步。為了運行這個流水線,在第一件衣服被放到烘乾機之後,就會將第二件衣服放到洗衣機中。同樣,在第二件衣服放入烘乾機,第一件衣服被摺疊之後,再將第三件衣服放入洗衣機。通過這種方式,人們可以同時洗三件衣服。考慮到無限負載,流水線將始終以流水線中最慢階段的速度完成負載。

Solana在軟件中創建了一個四階段交易處理器,稱為TPU,即交易處理單元。

對此,Solana公司創始人兼首席技術官Greg Fitzgerald解釋說:“我們需要找到一種方法,讓所有硬件一直保持忙碌。這就是網卡,CPU內核和所有的GPU內核。為了做到這一點,我們從CPU的設計中借鑒了經驗”。

在Solana網絡上,流水線機制(交易處理單元)通過內核級的數據獲取、GPU級的簽名驗證、CPU級的銀行和在內核空間的寫入來進行。當TPU開始向驗證器發送區塊時,它已經獲取了下一組數據包,驗證了它們的簽名,並開始計入代幣。

驗證器節點同時運行兩個流水線進程,一個用於領導者模式(TPU),一個用於驗證器模式(TVU)。在這兩種情況下,流水線化的硬件是相同的,包括網絡輸入、GPU卡、CPU內核、寫到磁盤和網絡輸出。TPU的存在是為了創建分類賬條目,而TVU的存在是為了驗證它們。

在這個四階段流水線的GPU并行化過程中,在任何特定的時刻,Solana TPU可以同時處理50000筆交易。

Greg Fitzgerland聲稱:“這一切都可以用一台低於5000美元的現成計算機來實現,而不用超級計算機。”

雲散(Cloudbreak)→水平擴展賬戶數據庫

在沒有分片的情況下擴展區塊鏈,只擴展計算是不夠的。

用於跟蹤賬戶的內存在大小和訪問速度上都將很快達到瓶頸。比如,一般來說,許多現代區塊鏈使用的本地數據庫引擎LevelDB不能在單台機器上支持超過5000TPS。這是因為虛擬機無法通過數據庫抽象利用對賬戶狀態的併發讀寫訪問。

一個簡單的解決方案是在RAM中維護全局狀態。然而,期望消費級計算機有足夠的RAM來存儲全局狀態是不合理的。

而Solana的設計原則是設計出不受硬件影響的軟件,以實現100%的利用率。Solana設計了水平擴展內存方案——Cloudbreak來進行優化。

Cloudbreak是一種狀態架構,這種結構支持提前執行交易。只要驗證器觀察到交易,海平面可以開始從磁盤中預取所有賬戶,並為執行準備運行。這有利於進一步優化區塊時間。

組織賬戶數據庫使32個線程之間可以併發讀寫,這是一個挑戰。像LevelDB這樣的普通開源數據庫會達到瓶頸,因為它們沒有針對區塊鏈環境中的這一特定挑戰進行優化。

Solana並沒有使用傳統的數據庫來解決這些問題。相反,Solana使用了操作系統所利用的幾種機制。

首先,Solana利用了內存映射文件。內存映射文件是將其字節映射到進程的虛擬地址空間的文件。

一旦一個文件被映射,它的行為就像任何其他的內存。內核可以在RAM中保留部分或全部的內存緩存,但是物理內存的數量是由磁盤的大小,而不是由RAM的大小所限制。讀取和寫入顯然仍然受到磁盤性能的限制。

第二個重要的設計考慮是,順序操作要比隨機操作快得多。不僅對SSD來說是如此,對整個虛擬內存棧也是如此。CPU很擅長預取按順序訪問的內存,而操作系統很擅長處理順序頁面故障。

由於賬戶更新是寫時複製的,並附加到一個隨機的SSD上,Solana獲得了順序寫入數據和在許多SSD上水平擴展寫入數據的好處。讀取仍然是隨機訪問,但由於任何既定的分叉狀態升級都分佈在許多SSD上,讀取最終也是水平擴展的。

Cloudbreak還執行了一種垃圾收集的形式。在回滾之後,分叉最終完成,賬戶被更新,舊的無效賬戶將被垃圾收集,內存將被釋放。

Cloudbreak這種架構還展現出一個很大的好處——計算任何既定分叉的狀態升級的默克爾根,可以通過順序讀取來完成,這些讀取是在SSD上水平擴展的。

存檔器(Archivers)→分佈式賬本存儲

2017年,Filecoin引入了複製證明(PoRep)。

2018年,Solana使用可驗證延遲函數(VDF)構建了Solana的PoRep版本,並對批量驗證進行了優化。

在滿負荷狀態下,Solana網絡每年將產生4PB的數據。如果要求網絡中的每個節點都存儲所有這些數據,就會將網絡成員限制在擁有這種存儲能力的少數中心化成員。

Solana的歷史證明(PoH )技術可以通過允許快速驗證複製證明,來緩解這個問題,並使Bittorrent式的分類賬分佈在世界各地的數百萬個複製者(Replicator )節點上。更為重要的是,存檔器(Archivers)對硬件的要求很低。

在更高層次之上,Solana複製者網絡的功能如下:存檔器必須向網絡發出信號,表明他們有X字節的空間可用於存儲數據。Solana網絡根據複製者身份的數量和存檔器的總可用存儲空間,將分類賬歷史分成若干份,以達到某種複製率(目前Solana期望的目標率是100倍左右)和容錯率(通過擦除編碼實現)。數據分配完成後,每個存檔器都會從共識驗證器下載各自的數據。在某些情況下,存檔器將被挑戰,以證明他們正在存儲數據,這時他們必須完成PoRep。存檔器因其努力可獲得通貨膨脹率3%左右的獎勵。

複製證明的基本思想是使用CBC加密法,用公共對稱密鑰加密數據集,然後對加密后的數據集進行散列。這種方法在Filecoin的複製證明技術報告中得到了詳細解釋。

不幸的是,這種方法的問題是,它很容易受到攻擊。

Solana對這種方法進行了改進,以更快的速度對加密區塊進行隨機抽樣,並將這些樣本的哈希值記錄到PoH賬本中。因此,區塊在每個PoRep中保持完全相同的順序,驗證可以流化數據,並在一個批次中驗證所有的證明。這樣,Solana可以同時驗證多個證明,每個證明都在自己的CUDA內核上。

接下來,Solana要在驗證者和存檔者之間構建博弈,以確保存檔器生成證明,而驗證者在真正驗證PoRep。

所有客戶端都被強制使用相同的PoH哈希值作為簽名,因此簽名隨機分佈在所有客戶端之間。由於簽名與PoH有關,因此樣本的結果哈希對於那個時間點和那個特定的複製是唯一的。

驗證器可以反過來檢查客戶端的證明。驗證器根據GPU內核的數量,可以宣稱自己能夠驗證多少個PoRep。驗證器會定期對PoH哈希進行簽名。

客戶端可以通過尋找惰性驗證器來查出驗證器是否存在失敗的證明。

另外,為了防止grinding攻擊,客戶端必須連續使用同一個密鑰對身份。為了防止垃圾郵件,協議中的所有信息都會產生轉發費。

存檔器根據成功提交的證明的數量來賺取獎勵。驗證者通過驗證證明賺取權益加權獎勵。

結語

基於這8項關鍵的創新技術,Solana網絡是一種全新的閃電分佈式賬本技術,並且它將一直進行下去。它不會因為共識而減慢速度。此外,Solana系統優化了數據傳播,大量利用并行GPU進行交易處理,並且不會用大量的存儲鏈給驗證器造成負擔。

由於Solana的精心設計,硬件能夠以最大能力運行。因此,Solana可以隨着帶寬、SSD和GPU內核的增加而自然擴展,而且它是唯一能做到如此的區塊鏈。

本文鏈接:https://www.8btc.com/article/6662283

轉載請註明文章出處

(0)
上一篇 2021-07-18 08:54
下一篇 2021-07-18 09:28

相关推荐