Gate 廣場創作者新春激勵正式開啟,發帖解鎖 $60,000 豪華獎池
如何參與:
報名活動表單:https://www.gate.com/questionnaire/7315
使用廣場任意發帖小工具,搭配文字發布內容即可
豐厚獎勵一覽:
發帖即可可瓜分 $25,000 獎池
10 位幸運用戶:獲得 1 GT + Gate 鸭舌帽
Top 發帖獎勵:發帖與互動越多,排名越高,贏取 Gate 新年周邊、Gate 雙肩包等好禮
新手專屬福利:首帖即得 $50 獎勵,繼續發帖还能瓜分 $10,000 新手獎池
活動時間:2026 年 1 月 8 日 16:00 – 1 月 26 日 24:00(UTC+8)
詳情:https://www.gate.com/announcements/article/49112
新版智慧合約語言Solidity有哪些改進?
作者: 亞當·布傑馬
編譯者:武漢大學Web3俱樂部投資研究部主任懷先生
簡介
在對 Solidity Github 儲存庫、Solidity 路線圖、Twitter 上的社區對話、活躍的拉取請求和問題等資訊進行廣泛分析后,本文深入探討了 Solidity 的未來走向。
領先的智慧合約程式設計語言即將發佈 0.9.0 和 1.0.0 升級,這將引入幾個備受期待的增強功能。
本文的目的是向讀者介紹 Solidity 的最新發展和改進,這些發展和改進是基於社區的意見和正在進行的辯論。 雖然所提供的相關信息尚無定論,但它揭示了技術進步的潛在方向。
1. require() 與自訂錯誤的革命性整合
目前方法 (0.8.x):
預計在 0.9.0 或 1.0.0 出現:
與其使用大量的 if 條件來拋出帶有字串資訊的錯誤或自定義錯誤,不如使用 require() 和自定義錯誤的組合將使程式更清晰並節省 gas。
2. 內部表示 (IR) 優化:發佈效率
Solidity 中的內部表示 (IR) 過程在將智慧合約原始程式碼轉換為 ETH 虛擬機 (EVM) 的可執行指令方面起著關鍵作用。
內部表示簡化和標準化了複雜的代碼,使將代碼轉換為機器語言的過程更加高效。 Solidity 即將對 0.9.0 進行改進,旨在使此編譯過程更快、更高效,最終降低成本並提高開發人員的工作效率。
3. 增強的錯誤處理:澄清和簡化代碼
預計未來的更新將增強 Solidity 中的錯誤處理,從而產生更直接的錯誤消息和更輕鬆的調試。
此增強功能對於處理複雜合同的開發人員特別有用,可以節省時間並最大程度地減少潛在錯誤。
4. 定點運算:高精度、高性能
[譯者注:定點數是計算機用來表示與浮點數對應的十進位數的數據類型,其整數和小數位是固定值,因此它們比浮點數更安全。 目前 Solidity 沒有任何表示小數的內置數據類型,開發人員經常需要將原始數據乘以大量手動保留小數位,並在後續操作中密切關注小數點問題,這相當麻煩。 】
在這個階段,ABDKMath64x64 和 DSMath 等外部庫使用 Solidity 來實現定點數。
0.9.0 更新有望集成本機定點運算,不再需要外部庫。 這將使十進位計算更加簡化。
5. EVM 物件格式 (EOF):構建智慧合約位元組碼
Solidity即將進行的EOF升級準備為智慧合約引入結構化和版本化的位元組碼。
此改進有望使將來的合同更新更易於實現,保持向後相容性,並在編譯階段實現更有效的分析。
雖然這不會改變智慧合約開發人員的直接編碼體驗,但編譯器的輸出將更加節能。
6. 瞬態存儲:臨時高效的數據處理
Solidity的新功能瞬態存儲提出了一種在合約執行期間臨時保存數據的方法,而無需將其永久記錄在區塊鏈上。 預計這種方法在氣體消耗方面會更有效。
類似於以下代碼的瞬態存儲可能會在 Solidity 0.9.0 或 Solidity 1.0.0 中找到。
7. 原生整合的重入保護
在 0.8.0 版之前,SafeMath 庫是開發人員用於算術運算的常用工具,以避免溢出和下限溢出問題。 隨著 Solidity 0.8.0 的發佈,這些安全檢查直接嵌入到語言中。
同樣,Solidity 版本 0.9.0 或 1.0.0 有望原生集成重入保護。 此功能旨在簡化實現安全協議的過程,以防止重入攻擊。
你會看到這樣的內容:
8. 重構繼承與儲存佈局
在 Solidity 中,繼承創建一個新協定,該契約具有現有協定的屬性和功能。 計劃的更新旨在改進繼承和存儲佈局的線性化,從而增強合約架構的可預測性和組織性。 這可以提高存儲使用效率,減少多繼承場景中的混亂。
例如,從父 A 和父 B 繼承的協定子項將具有優化的存儲佈局和連續可變存儲,從而降低存儲操作的成本。
9. 增強的編譯標誌和設定選項
Solidity 的開發包括擴展編譯標誌和配置設置的範圍,為開發人員提供對編譯過程的高度控制。 這些增強功能可能會導致更自定義的合同部署,並對氣體優化、安全檢查和調試功能進行精細控制。
新的編譯標誌可以允許開發人員切換特定的優化或安全檢查:
例如,一個新的編譯標誌 --enable-loop-optimization 將專注於優化迴圈以提高 gas 效率,而一個新的編譯標誌 --strict-security-checks 將在編譯過程中引入苛刻的安全分析
10. 改進的除錯工具與錯誤訊息
增強的調試工具具有更詳細的錯誤消息,可以顯著簡化開發過程,特別是對於複雜的合約結構。 改進的錯誤消息可以幫助開發人員更好地瞭解其代碼中的問題,高級調試工具可以幫助開發人員更有效地查找和修復問題。
11. 支援進階資料類型與結構
在 Solidity 中引入複雜的數據類型和結構可以激發新的合約設計和功能可能性。 這可能包括支援更複雜的數值類型、增強的數據結構或改進處理合約中大型數據集的方法。
Solidity 可能會引入一種新的數據結構,例如 TreeMap,它以排序方式組織數據以實現高效檢索。 這在需要對數據進行排序或排序的合同中非常有用,例如在投票系統中。 [譯者注:類似於紅色和黑色的樹。 另一個進步可能是支援更複雜的數位類型,例如定點數,它可以直接在合約中執行精確的數學運算。
12. 泛型和範本簡介
Solidity 中的泛型和範本將使更具適應性和可重用性的代碼成為可能。 例如,您可以創建一個通用函數來以標準化方式處理不同類型的資產(例如 ERC20 代幣、NFT 等),而無需為每個特定資產類型重寫函數。 這將提高合約設計和開發效率,因為單個功能可以應用於各種場景。
未來前景:通往穩固之路 1.0.0
在Github,Twitter,Ethresearch和Reddit等各種平臺上,Solidity社區內部有很多關於0.9.0版本開發的討論。
辯論的焦點是:
是直接而謹慎地過渡到 Solidity 1.0.0 以聲明該語言的完全成熟,還是首先通過 0.9.0 版本逐步過渡到更高級的版本?
受社區反饋和創意的影響,Solidity 1.0.0 的預期首次亮相可能與ETH Workshop的重大更新相吻合,反映了整個生態系統的增長和穩定性。
類型系統的演變:提高靈活性和安全性。 預計將有一個升級類型的系統,從Haskell或Scala等函數式程式設計語言中汲取靈感。 這種演變旨在提高合同開發的安全性和靈活性。
集成的原生預言機支援:簡化外部數據交互。 計劃包括在Solidity中集成對去中心化預言機的內置支援,促進與外部數據源更安全,更直接的交互。
改善狀態管理:改善區塊鏈交互。 正在討論對狀態管理功能的增強,狀態通道或側鏈等元素可以作為內置結構引入,旨在優化區塊鏈上的交互並降低gas費用。
模組化的合同設計方法:提高可重用性。 正在設想向模組化合同結構轉變,允許使用可更換的元件。 這大大簡化了開發過程,提高了代碼的可操作性。
整合形式驗證工具:確保合同可靠性。 人們期望正式驗證工具將直接集成到Solidity中,此舉旨在確保合同符合特定的標準和行為,從而減少錯誤和漏洞的可能性。
構建跨鏈能力:實現跨區塊鏈互操作。 未來的更新可能會引入原生跨鏈相容性功能,允許 Solidity 合約在各種區塊鏈協定中平穩運行。
實施高級隱私措施:增強數據安全性。 目前正在計劃將先進的隱私工具(如零知識證明或同態加密)直接集成到語言中,以增強數據安全性和用戶隱私。
抗量子密碼學:為未來的挑戰做好準備。 鑒於新興的量子計算能力,人們正在考慮實施抗量子加密方法,以保護ETH合約免受潛在的未來威脅。
結論
在探索實現 Solidity 的潛在途徑時,本文將社區見解和當前發展與社區預測相結合,讓您全面瞭解該主題。 雖然我們已經深入研究了 0.9.0 和 1.0.0 版本的可能性,但隨著 Solidity 繼續其開發之旅,實際軌跡和功能集可能會發生變化。 請繼續關注這些對話和概念如何在不斷發展的智慧合約程式設計世界中栩栩如生。