原文:Charting the Stateless Future
翻譯及校對:「StarkNet 中文社區」
概要
- Beerus 作為Starknet 的無狀態客戶端,構建在以太坊Helios 輕客戶端上,無需任何狀態信息。
- Starknet 加密證明能實現無需信任的狀態驗證,這也是以太坊所不具備的功能。
- Beerus 通過Starknet 存儲證明驗證以太坊STARK 證明,將不受信任數據轉換成可信數據。
- 開發者們加入Beerus 開發中,貢獻自己的力量,建設安全、去中心化的Starknet 生態系統。
以太坊狀態是所有以太坊帳戶的綜合性記錄,記錄每個帳戶餘額、部署的智能合約、相關存儲等信息。隨著新帳戶不斷增多以及部署新的智能合約,以太坊狀態也會無止境的擴大。
儘管各類擴容解決方案的目標都是為了降低以太坊狀態增長的影響,但其總體趨勢仍保持向上增長。上述設計特點導致以太坊狀態規模的無止境增長,會有多種影響。對網絡參與者而言,能夠驗證以太坊上所有數據準確無誤至關重要,因為運營者和用戶要去確信自己進行交互的都是有效信息。
在2017 年社區首次意識該問題,並提出了無狀態以太坊的概念。與字面意思不同,在以太坊中「無狀態」並不是沒有狀態。正如Ben Edginton 所言:「無狀態」含義是把提供和存儲以太坊狀態的責任,委託給網絡中的另一參與方。簡而言之,由無狀態以太坊客戶端選擇想要維持的狀態。
輕客戶端和無狀態客戶端
雖然輕客戶端和無狀態客戶端都致力於解決以太坊狀態規模無限制增長的難題,但兩者間的細微差別是:輕客戶端需要一些以太坊狀態相關信息,但像Beerus 這類的無狀態客戶端則無需任何以太坊狀態信息。
Beerus 是Starknet 無狀態客戶端,採用以太坊輕客戶端Helios 構建。
Starknet 在協議中集成了加密證明,為輕客戶端和無狀態客戶端打造出亮眼表現,同時也擁有以太坊所不具備的功能。它們不僅能讓網絡參與者驗證共識,還能無需信任的驗證狀態有效性。
輕客戶端未來可期
輕客戶端和無狀態客戶端都有潛力能更改區塊鏈領域遊戲規則。
- 全新的基礎設施範式:由於資源需求低,輕客戶端有助於去中心化Web3 基礎設施變得更加民主,從而吸引更多參與者加入。
- 無需信任的跨鏈:如今大部分跨鏈交易都需要多簽錢包實現資產轉移。採用輕客戶端可以構建出不用依賴中心化中介方的無需信任跨鏈協議。
- 安全性更高的錢包:現在大部分加密貨幣錢包需要與中心化服務商通信才能維持正常運行。採用輕客戶端可以構建出完全去中心化的錢包,讓用戶獲得更多資產控制權和安全性。
- 更好的,或無需預言機:採用輕客戶端與加密證明結合的途徑,打造一種用於驗證外部數據的安全方式。
- 物聯網(IoT):輕客戶端非常輕便,可以完美適配處理能力和內存受限的設備,因此能為物聯網提供全新的可能性。
- 將輕客戶端作為智能合約:將另一條鏈的輕客戶端作為智能合約部署,用戶能根據另一條鏈的狀態做出決策,同時獲得更高的安全性。
輕客戶端的運作方式
簡化後的輕客戶端運作過程:
- 輕客戶端下載以太坊區塊頭,包含了每個區塊的默克爾樹根。
- 輕客戶端用這些區塊頭去驗證以太坊共識的有效性,無需下載每個區塊的完整內容。 (在Starknet 中,加密證明都構建在協議中,輕客戶端可以驗證狀態和共識的有效性。)
- 當用戶想要與智能合約進行交易或交互時,輕客戶端向全節點發送請求。全節點再反饋完成交易所需的信息。
- 輕客戶端採用下載好的區塊頭確保全節點反饋的信息有效。
- 交易完成後,輕客戶端下載已經添加到網絡中的區塊頭來更新區塊鏈副本。
獲取根哈希
在以太坊中,每個區塊都包含了該區塊所有交易的默克爾樹。默克爾樹是一種數據結構,可以有效驗證單筆交易,而無需驗證整個區塊。默克爾樹根哈希是整個默克爾樹的加密哈希值,包括在每個區塊的區塊頭中。這個根哈希代表了到最新區塊為止的整個區塊鏈狀態。
以太坊輕客戶端需要這個根哈希值來驗證區塊鏈上最新區塊的真實性和狀態。通過驗證默克爾樹根哈希值,輕客戶端可以確保最新區塊沒有被惡意篡改。
輕客戶端有兩種方式來獲取根哈希值:依靠全節點或同步委員會。
全節點驗證
輕客戶端依靠全節點來獲得帶有根哈希值的最新區塊。全節點跟踪到最新區塊的所有的簽名並進行驗證。然而,這種資源密集型的方式需要輕客戶端依靠一個中心化的權威機構來獲得最新區塊,違背了運行輕客戶端的目的。
同步委員會
以太坊共識層中,同步委員會是隨機選擇的512 驗證者(validator) 組成的小組。每256 個週期(約27 小時)就會選擇一個新的委員會。委員會負責簽署每個新槽位的區塊頭。如果超三分之二的同步委員會認可狀態,輕客戶端就可以認為狀態是正確的。
同步委員會和輕客戶端一起簡化驗證過程。輕客戶端只需要知道以前驗證過的區塊頭,並有之前、當前和下個同步委員會成員信息來驗證以太坊狀態。這樣一來,輕客戶端就可以驗證已驗證區塊的準確性,而無需訪問整個驗證者集或歷史狀態。這種方法大大降低了驗證區塊頭所需的計算能力。
弱主觀性檢查點
為找到當前的同步委員會,輕客戶端需要獲得弱主觀性檢查點。弱主觀性檢查點類似於創世區塊,但它並不處在區塊鏈的創世位置。它只是表示整個網絡承認的一個區塊,作為標準鏈的永久組成部分。
弱主觀性檢查點與最終確定區塊的概念不同。當一個節點遇到兩個相互衝突的最終確定區塊時,就會發生共識失敗,節點無法決定標準分叉。然而,如果一個節點遇到一個與弱主觀性檢查點相衝突的區塊時,就會立即拒絕。在節點的分叉選擇方面,最近的弱主觀性檢查點作為網絡的新創世區塊。
Helios
Helios 由a16z 開發,是基於Rust 的以太坊輕客戶端。兩秒即可同步,需要的存儲空間非常少,完全保證無需信任訪問以太坊。 Helios 無需運行全節點,與中心化RPC 供應商合作就可以驗證以太坊狀態的真實性。 Helios 使用方便,用戶可以從任何設備安全存取鏈上數據。
與其它大多數以太坊客戶端不同,Helios 把執行層和共識層緊密結合起來。這樣Helios 用戶就只需要安裝和運行一個軟件。
Beerus
Beerus 受Helios 啟發,並使用Helios 的Starknet 無狀態客戶端。目標是提供一個簡單易用的客戶端來查詢Starknet 狀態,並使用上述的Merkle 證明與合約進行交互。
組件Beerus Core 非常重要,所有繁瑣運作由他完成。通過運行Beerus Core,與兩個不受信任的RPC 源進行通信,即Helios 輕客戶端的執行層和Starknet 全節點,獲得對所有以太坊端點的訪問。這就是神奇之處,Beerus 把這些不受信任的數據轉變為受信任的數據。
Beerus 運作方式
我們來以查詢Starknet 合約的存儲值為例,對Beerus 的工作原理做一個概述:
- Beerus 與Helios 同步,而Helios 又通過一個弱主觀性檢查點與同步委員會同步,這個檢查點確保了Helios 收到的根哈希值的可靠性。
- 接下來查詢Starknet,檢查給定的合約存儲秘鑰是否存在。
- 然後從Starknet 全節點收到最近已驗證的區塊存儲證明。這個存儲證明驗證最近驗證區塊的存儲合約是否存在。
- Beerus Core 繼續從Helios 請求Starknet 狀態根,獲取並驗證發佈在以太坊上的STARK 證明。
- 從以太坊收到的證明與Starknet 全節點收到的存儲證明進行比較。如果證明相符,則可以確認數據已在以太坊上得到驗證,因此是準確的。
- 最後,經過驗證的數據以無需信任的方式返回給用戶。
總結
Beerus 是Starknet 的無狀態客戶端,使用以太坊的Helio 輕客戶端構建,可以實現無需信任的狀態驗證。輕客戶端和無狀態客戶端有潛力讓Web3 基礎設施去中心化,並解鎖各種早期不可能實現的用例。
Beerus 無需大量狀態信息,只需要根據以太坊上發布的STARK 證明就可以驗證Starknet 存儲證明。這樣一來,Beerus 將不受信任的數據轉換為可信任的數據,甚至可以讓資源受限的設備在不依賴全節點的情況下安全地運行。