撰文:Chainlink
對於希望進入 Web3 的開發人員來說,Solidity 和 Vyper 是探索智能合約如何工作的最佳語言。
如果你想成為一名 Web3 開發人員,你需要知道如何編寫智能合約,智能合約是所有 Web3 應用程序的支柱。
簡而言之,智能合約是在區塊鏈網絡上部署和執行的計算機程式,提供確定性保證,使多方能夠達成一致的、防篡改的結果。
從金融應用程式到遊戲,今天人們正在構建大量新穎的智能合約用例,為用戶提供更公平地訪問金融原語、更強大、信任最小化(trust-minimized)的擔保以及對數字資產的所有權。
最流行的智能合約語言
每種智能合約編程語言支持的 TVL 百分比明細。資料來源:DefiLlama
Solidity
Solidity 是以太坊虛擬機 (EVM) 最流行的區塊鏈編程語言,也廣泛用於一系列與 EVM 兼容的區塊鏈。
>>Solidity 的優點
Solidity 是一種高級的圖靈完備語言,這意味著開發人員可以更快地編寫代碼,因為許多低級問題都被抽象掉了。Solidity 語法也類似於 Javascript,這是世界上最流行的編程語言之一,使其成為開發人員過渡到 Web3 的一個很好的起點。
對於新的智能合約開發人員來說,Solidity 的另一個好處是它帶有內置的保護措施,可以防止代價高昂的錯誤。作為 Web3 中使用最廣泛的語言,Solidity 開發人員可以訪問更多的庫和工具、更好的文檔以及論壇中增加的開發人員支持。
>>Solidity 的缺點
對於沒有太多面向對象編程經驗的開發人員來說,Solidity 的語法有時會讓人感到困惑,而且它的函數重載特性在代碼可讀性方面往往是不利的。還有一些開發人員可能不習慣的Solidity 開發習慣,例如Solidity 原生數據類型沒有小數。
對於高級Web3 開發人員來說,與低級語言相比,使用Solidity 編寫代碼通常會導致更高的gas 成本。
Vyper
Vyper 是僅次於 Solidity 的兼容 EVM 的 Web3 編程語言。它是一種面向合約的類 Python 的編程語言,具有強類型、小型編譯器代碼和高效的字節碼生成的特點。
>>Vyper 的優點
Vyper 代碼看起來和感覺上都像 Python—使其成為 Python 開發人員快速開啟 Web3 開發之旅的最佳起點之一。
Vyper 還具有易懂的語言和編譯器實現,這有助於提高代碼的可讀性和可審計性,使開發人員更容易開發出安全的智能合約。作為使用第二多的智能合約編程語言,Vyper 擁有許多與 Solidity 相同的工具和資源。
>>Vyper 的缺點
Vyper 仍然缺乏 Solidity 所擁有的廣泛社區支持,並且 Vyper 目前還沒有 Solidity 原生工具。
Vyper 還缺少修飾符、類繼承和遞歸調用,並且編程語言不是圖靈完備的。許多這些功能的缺失是因為要提升合約安全性和可審計性,但開發人員需要額外的工作來解決這些限制。作為一種較新的語言,Vyper 仍在開發中,這也意味著功能較少。
其他語言
Solidity 和 Vyper 是當今智能合約開發的兩大巨頭,但也存在其他的新興區塊鏈編碼語言。
Yul
Yul 是支持 EVM 的以太坊中間層語言。
Yul 旨在直接轉換為字節碼,擅長為更高級的 Web3 開發人員優化智能合約和降低gas 成本。雖然 Yul 是一個很棒的學習資源,但它最適合編寫特定的、高性能的代碼。作為一種獨立的編碼語言,Yul 目前缺乏工具和生態系統支持。
Cairo
Cairo 是一種圖靈完備的智能合約編程語言,旨在為一般的運算創建 STARK 可證明的程式。
Cairo 主要用於 StarkNet —— 一個建立在以太坊之上的第 2 層區塊鏈,StarkNet 的核心特徵是程序邏輯被轉換為 STARK 證明,提供在以太坊區塊鏈上結算的可驗證計算。雖然 Cairo 是一種用於構建快速且可擴展的智能合約的強大語言,但它的支持僅限於 StarkNet/StarkEx 生態系統之內。
Rust
Rust 是一種流行的智能合約編程語言,適用於許多非 EVM 區塊鏈,例如 Polkadot 和 Solana,並且與此處列出的許多其他語言不同,它不僅適用於 Web3 開發。
Rust 編程語言本身高效、安全,並減少了不必要的代碼膨脹(bloat),Rust 的數據結構非常緊湊,非常適合區塊鏈空間限制。也就是說,許多區塊鏈對 Rust 還沒有成熟的工具或支持。
Move
Move 是一種基於Rust 的智能合約編程語言,最初是為 Meta 的 Diem 區塊鏈開發的。
Move 引入了一個建立在三個核心前提之上的新系統:第一位的資源(first-class resources)、更高的安全性和升級的可驗證性。最值得注意的是,Move 的編程語言在類型層面集成了資源,而不是以中立方式支持任何單一類型的通證(即 ETH 或 BTC)集成。今天,Move 主要在 Aptos 和 Sui 區塊鏈中使用,在此生態之外並沒有大量支持。
如何選擇最佳的智能合約編程語言
不同的區塊鏈支持不同的語言,這意味著沒有一種語言適合所有的場景。如果你已經熟悉一種編碼語言,下面的圖表將有助於你先選擇的一個智能合約語言的區塊鏈。
LANGUAGE | COMPATIBLE BLOCKCHAINS | MOST SIMILAR TO … |
Solidity | Arbitrum Avalanche C-Chain BNB Chain Ethereum Harmony Hedera Hashgraph Klaytn Metis Moonbeam Moonriver Optimism Polyogon Tron | JavaScript |
Vyper | Same as Solidity | Python |
Yul | Same as Solidity | Solidity |
Cairo | StarkNet / StarkEx | Python |
Rust | Solana Polkadot Cosmos | C, C++ |
Move | Aptos Sui | Rust |
對於希望進入 Web3 而不知道他們想在哪個區塊鏈上構建或他們想學習哪種語言的開發人員來說,Solidity 和 Vyper 是探索智能合約如何工作的最佳語言。然後你可以從那裡分支出來。
請記住,Web3 開發空間在不斷增長和發展,而 Web3 開發人員只佔整個開發人員群體的一小部分。
據估計,所有軟件開發人員中只有不到 2% 是智能合約開發人員。
雖然語言的流行程度可能會起起落落,但對智能合約及其跨區塊鏈工作方式的深入理解將始終為你提供幫助。最重要的是先進入並開始開發。