Solana 目前是加密貨幣生態系統中最成功的區塊鏈。為了達到每秒50,000 次交易的速度,其在Anatoly Yakovenko 領導下的開發團隊不得不帶來包括Sealevel 在內的創新份額。這種執行環境可以同時處理數以萬計的操作。
在之前的文章中,我們研究了歷史證明,它的區塊時間戳系統是如何工作的; 然後是Tower BTF,它的共識機制; 或者Turbine,它的區塊傳播方法,以及灣流,它的交易傳播沒有mempool。
在本文中,重點介紹Sealevel,這是一種巧妙的技巧,可讓你同時執行數千個智能合約。
本文作為教育交易所活動的一部分提供給你,並由Solana 提供支持。
Sealevel:Solana 的運行時環境
Sealevel 是Solana 的運行時環境。就像在以太坊或EOS 上一樣,這個運行時可以根據自治合約中編程的指令修改區塊鏈的狀態。但與其前輩不同的是,Solana 允許並行執行數以萬計的智能合約。
在以太坊虛擬機上,指令形成一個堆棧,單個合約可以在適當的時候改變區塊鏈的狀態。在Solana 上,網絡驗證者節點的處理器的每個核心都可以與其他核心同時執行一條指令。
Solana 上的交易
Solana 上的任何交易都準確地描述了由此導致的各種區塊鏈狀態變化,無論是讀取還是寫入。這帶來了顯著的優勢:
由於事務不重疊,它們可以同時執行; 需要訪問區塊鏈相同狀態的交易也可以並行執行。
所需材料
因此Sealevel 是Solana 的執行環境,部署在任何驗證器節點上。它的執行需要以下硬件:
具有12 個或更多內核、主頻為2.8 GHz 或更高的處理器(CPU); 128 GB 隨機存取存儲器(RAM) 或更多; 一塊容量為256GB的主板; 500 GB 或更大的賬戶專用存儲容量; 至少1TB 的註冊表專用存儲空間(SSD 或SATA)。
如你所見,部署Sealevel 所需的硬件仍然相當可觀。但是,Solana 運行時相當容易理解。
規則
只有合約的所有者才能修改賬戶的餘額或數據; 此授權僅取決於交易簽名的有效性; 每個程序可以包含盡可能多的指令,並根據其所有者的意願修改盡可能多的帳戶; 由於帳戶的元數據,Sealevel 允許確保交易發起者不會“作弊”。
事實上,就像在以太坊上一樣,所有合約操作都有成本(計算預算)。
這只是意味著該程序可以執行200,000 條指令,記錄2000 條消息,但不能使用超過4000 次堆棧,調用深度不能大於64,或不同合約之間的調用超過4 級。
Solana區塊鏈上的程序和帳戶
Solana區塊鏈賬戶的數據庫稱為Cloudbreak。它使得在每個公鑰和關聯賬戶之間建立對應關係成為可能。每個帳戶都有餘額和數據。它還有一個所有者:管理其狀態變化的程序的公鑰。
另一方面,程序(智能合約)沒有狀態:它們只是一系列代碼行。為了修改帳戶的狀態,他們依賴於在所涉及的帳戶上輸入的數據。
權限和限制
因此,智能合約有授權,但也有與它們交互的賬戶相關的限制:
程序只能修改其擁有的帳戶中的數據; 程序只能藉記他們擁有的賬戶; 任何程序都可以記入任何帳戶; 任何程序都可以對任何帳戶進行讀取訪問。
所有帳戶最初都具有相同的所有者:系統程序。他是唯一可以分配帳戶所有權(帳戶生命週期一次)或為其分配空白數據(零初始化數據)的人。
當開發人員部署程序時,他使用加載程序。正是這樣,才能將與帳戶關聯的數據定義為“可執行”。它只是一系列交易:
創建公鑰; 在所述密鑰上轉移令牌; 內存分配(通過系統程序); 將要處理的賬號發送給loader程序; 將代碼上傳到內存中(在不同的部分); 通過加載程序將內存定義為“可執行的”。
顯然,加載器將檢查字節碼:如果正確,則可以將已上傳此代碼的帳戶用作可執行程序。將創建的新帳戶將是該程序的財產。因此,該程序將具有對整個密鑰子集的特權寫入訪問權限。
Solana 上的交易結構
在Solana 上,交易由一系列指令以及相關帳戶列表(讀或寫訪問)組成。這些指令類似於低級操作系統的指令。在它們執行之前,系統內核知道程序希望讀取或寫入的每個內存槽。這允許系統/節點預處理操作,然後在其硬件配置允許的情況下執行它(與其他操作並行)。
正是這種“預處理”使Solana 的虛擬機能夠優化這些指令的執行並並行執行它們。待處理的事務是有序的,任何不重疊的事務都可以同時執行(在處理器的處理能力範圍內)。
Sealevel:並行執行智能合約
Solana 的運行時環境– Sealevel – 因此利用了CPU 和GPU 的物理設計。在計算機分類學中,我們說的是單指令多數據(SIMD)。處理器由不同的內核組成,可以並行處理多個數據的相同操作。
例如,Nvidia 的現代圖形處理器(GPU) 有4000 個內核,可用於50 個多處理器。因此,每個多處理器可以同時處理80 個不同的輸入(對於單個指令)。
因此,如果Solana 上的一系列事務(通過Sealevel 加載)調用同一程序的指令,則它們可以同時、並行處理,具體取決於內核數量。
要了解有關多任務多處理器和SIMD 架構概念的更多信息,請閱讀Nvidia 站點上提供的CUDA 文檔。
Sealevel 只是一個運行時環境,它利用了當今處理器提供的可能性。這是區塊鍊網絡第一次可以並行處理指令,而不是一個一個。這項創新(以及其他)使Solana 能夠實現其卓越的速度和可用性。但是請放心,我們還有更多革命性的技術磚需要研究
Sealevel 文章:Solana (SOL) 如何並行執行數千個智能合約?首次出現在Journal du Coin 上。
資訊來源:由0x資訊編譯自JOURNALDUCOIN。版權歸作者Morgan Phuc所有,未經許可,不得轉載