瞭解 Solana 的 v1.16 更新,這是 Solana Labs 驗證器客戶端的最新升級

這篇文章是關於什麼的?

Solana 的驗證者網絡已成功獲得絕大多數人的支持,採用版本 1.16,這是 Solana Labs 驗證者客戶端的最新升級。經過一段漫長的審覈期,在志願者和金絲雀節點的不懈努力下,這一里程碑是近十個月的嚴格開發的結晶。

在以下部分中,我們將深入研究 v1.16 的測試方式以及 Solana 的功能門控系統;這是一個控制新功能如何分階段引入網絡的框架。然後我們將介紹 v1.16 中實現的新功能。

如何測試 v1.16

過去幾個月,v1.16 經過了嚴格的測試。v1.16 版本自 2023 年 6 月 7 日起在測試網上運行,並經過了多次壓力測試。此外,一小部分志願者節點從 2023 年 8 月 23 日開始更新到 v1.16。這些志願者能夠識別和解決各種問題,例如 RPC 節點啓動緩慢以及一般保護故障。Solana Labs 還在主網測試版中部署了幾個金絲雀節點。這樣做是爲了在現實條件下監控 v1.16 節點的穩定性。要查看這些金絲雀節點過去的活動和進展,請訪問 Solana Tech Discord 中的 #canaries-monitoring 頻道。

爲了捕獲極端情況或不常見的競爭條件,我們使用了多個運行時模糊測試器來執行部分隨機事務。這些事務在不同的運行時版本中執行,以確保一致的性能。Halborn 還對 v1.16 進行了廣泛的審計。審計報告會隨着時間的推移發佈到此存儲庫中。

功能門控

值得注意的是,我們將在以下部分討論的一些功能目前尚未上線。相反,這些功能將使用功能門控系統緩慢推出。功能將根據相對優先級以及在其他網絡上激活的順序在特定時期激活。到目前爲止,功能門控激活計劃是根據一系列標準臨時確定的,您可以在此處找到這些標準。本質上,這些門控應首先在 tesnet 上激活,然後在 devnet 上激活,最後在 mainnet-beta 上激活。要激活某項功能,擁有必要激活密鑰對的工程師將發送一筆交易,該交易會得到處理,並使該功能在下一個時期上線。每個網絡一次只能激活一個功能門控,以確保正常運行。值得注意的是,某些功能可能需要“浸泡”期,這可能會延遲激活優先級較低的門控。

此特性門控系統旨在確保破壞共識的更改不會導致運行較新版本的驗證器從規範鏈中分叉,並繼續生成區塊。例如,v1.14 驗證器不知道新的 v1.16 功能,並且可能會在出現爭議時導致網絡崩潰。本週合併到 Solana 代碼庫的提交鼓勵所有破壞共識的更改都擁有 Solana 改進文檔 (SIMD)。特性門控問題模板現在將包含對問題 SIMD 的請求。這有助於標準化開發過程,並通過文檔爲新更改提供更大的透明度。

機密傳輸

Token2022 推出的保密轉賬功能利用零知識證明來加密 SPL 代幣的餘額和交易金額。該功能的主要重點是通過強調保密性而非匿名性來提高用戶隱私。

機密轉移利用 Twisted ElGamal 加密對加密金額進行數學運算。這些轉移使用 Sigma 協議進行驗證,Sigma 協議是一種特殊的零知識證明類別,其中一方(證明者)可以向另一方(驗證者)證明他們知道某個祕密,而無需實際披露祕密本身。請務必閱讀我們的文章什麼是 Token2022?以深入瞭解機密轉移的複雜性。

伴隨機密傳輸推出的一項出色功能是增加了命令行界面 (CLI) 支持。create-token 命令已擴展爲包含 --enable-confidential-transfers 標誌,允許用戶鑄造啓用機密傳輸的令牌。此外,還添加了 update-confidential-transfer-settings 命令,以便對給定鑄幣的機密傳輸配置進行動態更改。這允許更新審計員密鑰和批准設置。

更好地支持零知識證明的運行時

v1.16 版本增強了 Solana 的零知識功能,增強了對零知識計算(特別是 128 位橢圓曲線運算)的運行時支持。v1.16 引入了 alt_bn128 系統調用,這對於高效生成證明至關重要。

alt_bn128 指的是用於加密操作的橢圓曲線的特定實現,稱爲 Barreto-Naehrig 曲線 (BN-128)。BN-128 是一種特定類型的配對友好型橢圓曲線,可以高效實現 zk-SNARK(零知識簡潔非交互式知識論證)。另外,如果橢圓曲線可以更高效地完成某些計算,則它被認爲是“配對友好的”。因此,在我們的例子中,使用 BN-128 曲線可以大大加快零知識數學和證明的處理速度。

Syscall 或系統調用用於從操作系統內核請求服務。在 Solana 環境中,系統調用允許在 Solana 虛擬機 (SVM) 中運行的程序與外部資源進行交互。

因此,Solana 程序可以使用 alt_bn128 系統調用與高效的 BN-128 曲線進行交互。這使得零知識證明的驗證變得簡化,從而在 Solana 上提供更好的安全性和隱私功能。最近還添加了 alt_bn128 g1 和 g2 系統調用,這允許壓縮 Groth16 證明。這很重要,因爲這些類型的證明每個證明佔用 256 字節的指令數據,而私有 Solana 程序 (PSP) 目前需要驗證兩個 Groth16 證明。使用 g1 和 g2 壓縮,每個證明所需的字節數可以減半至 128 字節,這對於空間效率至關重要。

此外,如果基於 Solidity 的合約包含對以下橢圓曲線操作預編譯合約的調用,則會面臨與 Solana 的兼容性問題:

  • bn256Add - 對橢圓曲線運算執行加法

  • bn256ScalarMult - 對橢圓曲線運算執行標量乘法

  • bn256Pairing - 橢圓曲線配對操作,在區塊 gas 限制內執行 zkSNARKs 驗證

這些操作通過 EIP-196、EIP-197 和 EIP-198 在以太坊上進行了標準化。引入 alt_bn128 系統調用是彌合兼容性差距的重大飛躍。依賴這些橢圓曲線操作的 Solidity 合約現在可能會更容易過渡到 Solana 甚至與 Solana 互操作。

Solana v1.16 更新中包含 alt_bn128 系統調用,標誌着 Solana 高效、安全地處理零知識證明的能力取得了重大進步。