在分析了Solidity Github倉庫、Solidity發展路線圖、Twitter上的社群對話、活躍的Pull Requests and Issues等資訊後,作者深入探討了Solidity的未來發展方向。以0.9.0 和1.0.0 升級為例,作者介紹了幾項期待的增強功能,包括遷移性require()與Custom Error進行整合、內部表示最優化、增強錯誤處理、定點計算、EVM物件格式、瞬態儲存等。文章也展望了未來對Solidity 1.0.0的發展規劃,包括類型系統的演進、整合原生支援、狀態管理完善、合約設計升級、形式化驗證工具等。深入細緻的分析展現了Solidity在智慧合約程式設計世界中的潛力與發展方向。
作者:亞當‧布傑瑪
編譯:懷老師,武漢大學Web3俱樂部投研部部長
導論
在廣泛分析諸如Solidity Github倉庫、Solidity發展路線圖、Twitter上的社群對話、活躍的Pull Requests and Issues等資訊後,論文深入探討了Solidity的未來將走向何方。
這款領先的智慧合約程式語言發布0.9.0 和1.0.0 升級,其中將推出幾項期待的增強功能。
本文旨在向讀者介紹Solidity 的最新發展和改進,這些發展和改進基於社區的發起和引發的爭論。雖然提供了相關資訊尚無定論,但它揭示了潛在的技術進步方向。
1. 遷移性require() 與Custom Error 進行集成
當前方法(0.8.x):
預期將在0.9.0 或1.0.0 出現:
相比於使用大量的if條件用字串資訊或自訂錯誤發送錯誤,將require()和自訂錯誤結合起來使用命令程式更加清晰並節省gas。
2. 內部表示(IR)最優化:釋放效率
Solidity中的內部表示(IR)流程在將智慧合約原始碼轉換為以太坊虛擬機器(EVM)的執行指令方面發揮關鍵作用。
內部表示令複雜的程式碼簡潔化與標準化,使得將程式碼轉換為機器語言的過程更有效率。 Solidity 推出的改進0.9.0 旨在使這種編譯流程更快、更有效率,最終降低成本並提高開發人員的生產力。
3. 增強錯誤處理:簡化和簡化程式碼
預計未來的更新將增強Solidity 中的錯誤處理,從而導致更直接的錯誤訊息和更輕鬆的偵錯。
這種增強對於處理複雜性的開發人員特別有用,可以節省時間並最大限度地減少潛在的錯誤。
4. 定點計算:性能與性能
【譯者註:定點數是與浮點數相對的計算機用來表示小數的資料類型,其整數位與小數位長度的定值,因此比浮點數更安全。目前的Solidity 並沒有內建任何表示小數點的資料類型,開發人員通常需要將原始資料乘以大量的資料來手工作業出小數點,而在之後的攻關中重點關注小數點問題,相當麻煩。 】
現在階段,例如ABDKMath64x64 和DSMath 的外部函式庫都用Solidity 實現了定點積分。
0.9.0 版本的更新預計將整合積分的積分得分,不再需要外部庫。這導緻小數計算更加簡化。
5. EVM物件格式(EOF):建構智慧合約字節碼
Solidity 即將推出的EOF 升級已準備好進行智慧合約、成型和版本控制的字節碼。
這項改進有望使未來的合約更新更容易實現,保持相容性,並在編譯階段實現更有效的分析。
雖然這不會改變智能合約開發人員的直接編碼體驗,但編譯器的輸出將更節省gas。
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.重構與儲存(Storage)佈局
在Solidity中,繼承可以創建一個新的合約,該合約支援現有合約的屬性和功能。計劃中的更新旨在改善繼承和儲存佈局的線性化,從而增強合約架構的可預測性和組織性。可以提高儲存使用效率,減少繼承場景中的混亂。
例如,繼承自ParentA 和ParentB 的合約Child 將擁有最最佳化的儲存佈局和連續的變數存儲,並降低儲存操作的消耗。
9.增強的編譯標誌和設定選項
Solidity的開發包括擴展編譯標誌和配置設定的範圍,為開發人員提供對編譯過程的高度控制。這些增強可能會導致更加客製化的一致性部署,對gas優化、安全檢查和調試功能等方面進行精細化控制。
新的編譯標誌可以允許開發人員切換特定的最佳化或安全性檢查:
例如,一個新的編譯標誌——啟用循環優化將致力於優化循環來提高gas效率,另一個新的編譯標誌——嚴格安全檢查將在編譯過程中引入嚴格要求的安全分析
10.改進的調試工具和錯誤訊息
後期的調試工具具有更翔實的錯誤訊息,可以顯著簡化開發過程,尤其是合約結構的複雜性。改進的錯誤資訊可以更促進開發人員深入理解程式碼中的問題,而高階偵錯工具可以幫助開發人員更有效地發現和修復問題。
11.支援高階資料型別和結構
在Solidity中引入複雜的資料類型和結構可以新的啟示的合約設計和功能。這可能包括支援更複雜的數字類型、增強的資料結構或改進處理合約中大型資料集的方法。
Solidity可能會引入一種新的資料結構,例如TreeMap,它以排序的方式組織數據,從而實現高效的搜尋。這可能能夠在需要對資料進行排序或排序的一致性中很有用,例如在投票系統中。 【譯者註:類似紅黑樹。 】另一項進步可能是支持更複雜的數字類型,如設定分數,可以直接在合約中進行精確的數學攻擊。
12. 引入泛型和模板
Solidity中的泛型和範本將使得變得恢復和可重複使用的程式碼成為可能。例如,可以建立一個泛型函數來以標準化的方式處理不同類型的資產(如ERC20代幣、NFT等),而消耗為許多特定的資產類型重寫函數。這將改進合約設計方式和開發效率,因為單一函數可以實現各種場景。
未來展望:Solidity 1.0.0之路
在諸如Github 、 Twitter 、 Ethresearch 和Reddit 的各種平台上,Solidity 社群內部關於0.9.0 版本發展規劃的討論如火如荼。
一個焦點性的爭論正在揭曉:
是直接介面地過渡到Solidity 1.0.0以宣告這門語言的完全成熟,還是先透過0.9.0版本逐步進步到更高階的版本?
受社群回饋和創意想法影響,Solidity 1.0.0的預期首次亮相可能與以太坊的重大更新保持一致,反映了整個生態系統的生長和穩定性。
1.類型系統的演進:提高靈活性和安全性。預計未來將會有一個升級類型的系統,從Haskell或Scala等函數式Smashing語言中汲取靈感。這種演進旨在增強合約開發的安全性和靈活性。
2.整合原生支援:簡化外部資料互動。計劃包括在Solidity中整合對去中心化原生機器的內建支持,促進與外部資料來源的更安全和直接的互動。
3. 完善狀態管理:區塊鏈交易。狀態管理能力的增強正在討論中,可能會引入狀態通道或側鏈等元素作為內建結構,旨在優化區塊鏈上的交易並降低gas費用。
4. 合約設計中的升級方法:提高重用性。人們正在考慮向升級合約架構的轉變,允許使用可替換的元件。這可以顯著加快開發過程並提高可運維性。
5. 形式化驗證工具:確保一致性可靠性。人們期望將形式化驗證工具直接整合到Solidity中,這項措施旨在確保一致性驗證符合特定的標準和行為,從而降低錯誤和漏洞的可能性。
6. 建立跨鏈能力:實現跨區塊鏈的互通性。未來的更新可能會引入原有的跨鏈相容性功能,從而允許Solidity合約在各個區塊鏈協議中順利運行。
7. 實施進階隱私措施:增強資料安全。人們正計劃將高級隱私工具(如零知識證明或同態加密貨幣)直接整合到語言中,旨在加強資料安全和用戶隱私。
8. 抗量子密碼學:為未來的挑戰做準備。新興的量子運算能力,人們正在實施抗量子加密貨幣方法,以保護以太坊座標未來潛在的威脅。
結論
在探索Solidity 的潛在路徑時,本文將社群意見和當前發展與社群預測結合,讓你對主題有一個全面的理解。雖然我們已經深入研究了0.9.0 和1.0.0 版本的可能性,但隨著Solidity 繼續其開發之旅,實際的儀表和功能集可能會發生變化。這些關注的對話和概念如何在智慧合約程式設計世界中不斷發展中實現。
資訊來源:0x資訊編譯自網際網路。版權歸作者PA日報所有,未經許可,不得轉載