📢 Gate廣場 #创作者活动第一期# 火熱開啓,助力 PUMP 公募上線!
Solana 爆火項目 Pump.Fun($PUMP)現已登入 Gate 平台開啓公開發售!
參與 Gate廣場創作者活動,釋放內容力量,贏取獎勵!
📅 活動時間:7月11日 18:00 - 7月15日 22:00(UTC+8)
🎁 活動總獎池:$500 USDT 等值代幣獎勵
✅ 活動一:創作廣場貼文,贏取優質內容獎勵
📅 活動時間:2025年7月12日 22:00 - 7月15日 22:00(UTC+8)
📌 參與方式:在 Gate 廣場發布與 PUMP 項目相關的原創貼文
內容不少於 100 字
必須帶上話題標籤: #创作者活动第一期# #PumpFun#
🏆 獎勵設置:
一等獎(1名):$100
二等獎(2名):$50
三等獎(10名):$10
📋 評選維度:Gate平台相關性、內容質量、互動量(點讚+評論)等綜合指標;參與認購的截圖的截圖、經驗分享優先;
✅ 活動二:發推同步傳播,贏傳播力獎勵
📌 參與方式:在 X(推特)上發布與 PUMP 項目相關內容
內容不少於 100 字
使用標籤: #PumpFun # Gate
發布後填寫登記表登記回鏈 👉 https://www.gate.com/questionnaire/6874
🏆 獎勵設置:傳播影響力前 10 名用戶,瓜分 $2
Web3開發者必修課:智能合約語言全面解析
Web3開發者的自我修養——智能合約語言
基本介紹
智能合約是一種在區塊鏈平台上運行的自動化執行協議,它使得合約雙方能夠在無需中間人或信任第三方的情況下直接進行可信交易,這些交易可追蹤且不可逆轉。智能合約當中內含了代碼函數,亦能與其他合約進行交互,當預定義的條件得到滿足時,智能合約會自動執行合約中指定的代碼函數。
智能合約概念最早由計算機科學家Nick Szabo在上世紀90年代提出,但直到以太坊區塊鏈的出現,智能合約才開始實現廣泛應用。以太坊於2015年推出,支持智能合約的部署和執行,與比特幣主要用於加密貨幣的簡單交易不同,能夠使用其圖靈完備編程語言在以太坊平台上構建去中心化應用,因此被譽爲第二代區塊鏈。
智能合約語言是用於編寫智能合約的編程語言,編譯成字節碼後在區塊鏈智能合約平台的虛擬機上執行,實現預定邏輯的代碼。一個智能合約語言需要能夠使開發者以安全、高效的方式表達合約的規則,並通常提供一系列用於處理區塊鏈事務和狀態的工具和抽象。
智能合約語言
智能合約開發者中大多數都在以太坊以及兼容EVM的區塊鏈上進行開發,而Solana是非EVM兼容區塊鏈生態中開發者最多的,Move則是專門爲安全地開發區塊鏈智能合約而構建的。
雖然還有許多其他公鏈有專門的智能合約語言,例如TON/FunC、Cardano/Plutus、ICP/Motoko、Flow/Cadence、Starknet/Cairo等,但過於碎片化。
因此本文將智能合約語言按照EVM系、Solana系和Move系進行分類介紹。
EVM系
EVM是以太坊的核心,負責運行智能合約和處理交易。以太坊協議規定了一種運行在EVM之上的字節碼,並在其之上構建了中間語言Yul和Yul+,在中間語言之上再次構建了Solidty/Vyper/Fe等高級語言,高級語言面向前端用戶降低智能合約的開發難度。採用多級分層的好處是中間語言既適合於翻譯到機器語言,又適合全程序優化,易於手動檢查,進行形式化驗證等檢查,但是分層越多保證可證可信的成本就會更高,每一層都需要做對應的驗證,當然越底層的語言由於更簡單所以驗證成本更低。
在以太坊以及兼容EVM的區塊鏈上,開發者可以使用不同的高級編程語言,目前最受歡迎和維護得最好的語言是Solidity和Vyper,此外還可以選擇Yul、Yul+、Fe和Huff。
Solidity最早是由以太坊CTO Gavin Wood於2014年提出,後期則以Christian Reitwiessner所領導的以太坊團隊接手開發。Solidity作爲一種面向對象的編程語言,深受C++、Python和JavaScript的影響,並且專爲EVM而設計。Solidity爲了代碼重用,智能合約被視爲類對象,利用了多重繼承。特別地,Solidity規定了一種應用程序二進制接口(ABI)標準來與其合約交互。目前,Solidity ABI被視爲EVM DSL的事實標準。
Vyper則由以太坊創始人之一Vitalik Buterin的團隊開發,旨在作爲Solidity的替代選擇,於2017年推出。Vyper是一種面向合約的類似於Python的編程語言,也是爲EVM設計的。Vyper針對安全性、可讀性、審計能力和Gas效率進行了優化。Vyper不採用面向對象模式,也不能使用內聯匯編。
Yul是一種具有高級控制流和大量抽象的匯編語言,是Solidity工具鏈的一部分。Yul中的大多數功能在Solidity中使用內聯匯編塊公開,可以利用Solidity不支持的功能,並自定義存儲、內存和calldata。Yul+是Yul的擴展,可以視爲對Yul的實驗性升級。
Fe是一種類似Rust的高級語言,於2021年1月發行。Fe不使用面向對象的模式,而是通過基於模塊的系統重用代碼,在模塊內聲明變量、類型和函數,可以以類似於Rust的方式進行導入。
Huff是一種匯編語言,具有手動堆棧控制和對EVM指令集的最小化抽象。通過「#include」指令,編譯時可以解析任何包含的Huff文件,從而實現代碼重用。
在以太坊上,基於Solidity開發的智能合約佔絕大多數,大約90%,是第二名Vyper的十倍,而Fee由於起步更晚,鮮有開發者使用。Yul和Yul+一般作爲Solidity的內聯匯編塊,允許對EVM指令集進行低級別訪問,通常用於Gas優化。Huff比Yul/Yul+更底層,可以手動操作堆棧和調用EVM指令,通常用於Gas極限優化。
Solana系
Solana因其PoH(Proof of History)機制以及低延遲高吞吐量而聞名,是最著名的"以太坊殺手"之一。Solana也是過去一年市值和生態發展最快的公鏈之一,催化了其開發者社區的顯著增長。
Solana將智能合約稱爲鏈上程序(Program),主要採用Rust語言編寫,但與其他採用Rust語言的公鏈不同,Solana並不使用WASM runtime,Solana有自己獨特的虛擬機SVM和字節碼SBF。
SVM是在Solana網路上運行智能合約和處理交易的runtime,關鍵組件是Sealevel。Sealevel通過允許多個智能合約同時運行而不會影響彼此的性能,從而在Solana runtime中實現並行處理。Solana的智能合約指定了在運行時將讀取或寫入哪些狀態(帳戶),這使得沒有衝突的交易可以並行執行,同時保證數據一致性。
SBF基於eBPF,前身是BPF(Berkeley Packet Filter,伯克利包過濾器),原本是用於網路數據包的高效過濾,eBPF提供更豐富的指令集,允許在不改動源碼的情況下對操作系統內核進行動態幹預和修改其行爲,具有高性能、安全和可移植性。SBF相對於eBPF,使用了一個自定義驗證器,不僅會驗證程序需要確定程序在一定數量的指令內終止(也就是著名的停機問題),還會檢查指令是否正確以及是否有越界跳轉。除了驗證器之外,還解決了一些對於編譯智能合約來說有點問題的eBPF細節。
LLVM(Low Level Virtual Machine)是現代化的編譯架構和工具鏈,編譯器可以將Rust翻譯成中間語言LLVM IR,之後再由LLVM IR利用後端翻譯成目標平台的eBPF。理論上,只要支持編譯成LLVM IR的程序語言都可以編寫Solana智能合約,但實際上Solana Labs對Rust和eBPF LLVM後端進行了多項更改,其中一些更改本質上不是上遊(Rust和LLVM)可用的。Solana合約開發目前只支持Rust和Solang。
Rust由Mozilla主導開發,於2011年推出,語法上與C++類似,是一種爲性能和安全,尤其是安全而設計的通用的靜態編譯型語言,並不限於智能合約程序。與Solidity相比,Rust是一種低級(low-level)、多範式的編程語言,性能高且內存安全。Rust官方的編譯器爲rustc,rustc對Rust源碼進行詞法分析、語法分析、語義分析,最終將代碼編譯爲LLVM IR。
Solang由Hyperlege Labs主導開發,於2023年推出,是Solana和Polkadot的基於LLVM架構的Solidity的編譯器,支持使用Solidity編寫智能合約,但實際語法爲了與Solana和Polkadot的體系結構保持一致做了一些改動。Solang的目的是簡化開發人員向Solana或Polkadot的過渡,並擴大Solidity的開發範圍。
Rust是Solana官方主要支持的語言,穩定性更強;Solang主要優勢在於其與Solidity語言的兼容性。
Move系
Move是一種新的智能合約編程語言,於2019年推出,最初是爲Meta的Diem區塊鏈項目而開發的。Move旨在解決資產和交易中的安全性問題,使得資產和交易能夠被嚴格定義和控制,其語言特點是:
一等資源類型的保護(Frist Class Resources):一等資源類型首先是一種變量類型,然後規定這種類型的變量:不能被復制;不能被隱式地銷毀;只能在不同程序地址上"Move";
靈活性:Move字節碼可以直接執行,也可以調用其他已發布的Modules代碼,可以在一個交易中調用多個程序,能夠靈活的實現在一筆交易中給多人轉帳;
安全、可驗證性:Move編碼系統爲資源提供了針對性的安全保護。Move資源不可復制,重復使用或銷毀。一個資源類型僅能被定義其類型的模塊創建或銷毀。Move虛擬機將通過靜態字節碼驗證,並拒絕未通過字節碼驗證的的程序運行,以此確保其安全性。
在Diem項目解散之後,其創始團隊出走分別創立的Aptos與Sui,也將Move作爲核心智能合約語言。Aptos繼承了Diem Move(Core Move),Sui則通過自身定制版本的Sui Move來編寫其智能合約。
在Move中,每個智能合約都是一個模塊,由函數和結構定義組成,結構在函數中實例化,可以通過函數調用傳遞給其他模塊。Sui Move相比於Core Move,採用了一種基於對象的數據模型,Sui中存在三種不同類型的對象,分別是擁有者對象,共享對象和不可更改對象。Sui的並行化策略與Solana相似,交易也需要指定操作哪些對象,這種設計使得Sui可以有效地處理並發交易,實現無需傳統區塊鏈所需的全局排序的並行處理能力。
Move的編譯器、驗證器以及虛擬機都是從頭設計的。其中驗證器是Move的核心安全機制之一,用於維護Move以資源爲中心的編程模型。Move的驗證器是一個靜態分析工具,分析Move字節碼並確定是否遵守所需的類型、內存和資源安全規則,所有上傳到鏈上的模塊都需要通過驗證器。
相比於Solidity等語言,Move是一種對形式化驗證友好的語言,比如不支持動態指派(dynamic dispatch)等特性,所有合約路徑都可以在編譯期就確定,而無需在合約執行時才確定需要執行的函數,可以充分的進行分析和驗證。
Move還有一個用於智能合約的形式化驗證工具,稱爲Move Prover。開發者需要針對智能合約編寫驗證條件(以斷言的形式),Move Prover會在後臺將這些驗證條件轉換爲SMT公式,然後使用SMT求解器進行檢查。
智能合約開發工具
對於想入門Web3或者想學習以太坊及其他兼容EVM的區塊鏈的合約開發者而言,Solidity都是不二之選。並且由於Solidity的流行,開發工具也更加成熟,代表有:
Hardhat是一個編譯、部署、測試和調試以太坊應用的開發環境。幫助開發人員管理和自動化構建智能合約和DApps過程中固有的重復性任務,並圍繞這一工作流程輕鬆引入更多功能;
OpenZeppelin提供開源的OpenZeppelin Contracts,用Solidity編寫,用於構建安全的智能合約。OpenZeppelin Contracts使