淺析Vyper:一款受開發者歡迎的智能合約編程語言
Foresight News
2023-07-31 12:30
本文约2309字,阅读全文需要约9分钟
Vyper究竟是什麼,它在DeFi世界中扮演著怎樣的角色,為什麼它的Bug又會引起行業的高度關注?

原文作者:Frank,Foresight News

原文作者:Frank,Foresight News

原文作者:Frank,Foresight News

原文作者:Frank,Foresight News

昨夜開始,Curve 因受Vyper 個別版本的重入鎖故障影響,導致旗下alETH/msETH/pETH 等穩定池被黑客攻擊,由此引發一系列的DeFi 次生災害與加密世界震盪,至今仍在持續發酵中。

這也是DeFi 世界罕見地直面針對智能合約語言層Bug 的攻擊事件。不過相比於加密世界中常常見諸報端的Solidity 語言,Vyper 其實並不那麼為人所熟知。

那Vyper 究竟是什麼,它在DeFi 世界中扮演著怎樣的角色,為什麼它的Bug 又會引起行業的高度關注?本篇文章Foresight News 就帶大家來了解一下目前正處於風口浪尖的Vyper 語言。

這導致從採用率角度看,目前的Vyper 也是僅次於Solidity 的「第二大兼容EVM 的智能合約編程語言」,截至此次攻擊事件發生前的DeFiLlama 最新統計數據顯示:

在目前的DeFi 開發格局中(TVL 佔比維度),Solidity 以94.71% 的市場份額佔據絕對壟斷地位,而Vyper 以3.04% 的市場份額位列第二名。

在目前的DeFi 開發格局中(TVL 佔比維度),Solidity 以94.71% 的市場份額佔據絕對壟斷地位,而Vyper 以3.04% 的市場份額位列第二名。

在目前的DeFi 開發格局中(TVL 佔比維度),Solidity 以94.71% 的市場份額佔據絕對壟斷地位,而Vyper 以3.04% 的市場份額位列第二名。

在目前的DeFi 開發格局中(TVL 佔比維度),Solidity 以94.71% 的市場份額佔據絕對壟斷地位,而Vyper 以3.04% 的市場份額位列第二名。

  • 而第三名開始往後的Rust(0.9% )、Cairo(0.53% )、Haskell(0.26% )已經是斷崖式下降。

  • 除了基於Python 的特點之外,Vyper 不採用面向對像模式、內聯彙編,並且不支持代碼重用、修飾符、繼承、函數重載、遞歸調用、無限長度循環和二進制定長浮點等。

  • 此外它還針對安全性、可讀性、可審核性和Gas 效率進行了優化:

安全性:支持在Vyper 中構建安全的智能合約;

可讀性:Vyper 的智能合約語言和編譯器實現力求簡單,以提高代碼的可讀性,尤其是對於沒有使用Vyper 經驗的用戶以及一般沒有編程經驗的用戶;

可審核性:Vyper 代碼最大限度地讓人可讀,且其簡單架構減少了軟件錯誤,提升了智能合約的可審計性;

Vyper 的創始人John Max Skaller 曾表示,構建Vyper 有兩個原因:「首先,我喜歡Python,特別是它的簡單性,但我不喜歡它缺乏範圍確定性,凡事都需要做大量更改來取得進展,因此我決定在保留與Python 兼容性的同時,通過建造高級得多的編程語言,並在其中建造函數性編程語言的某些概念來改正這些問題。

第二個原因是性能。我有一個稱之為interscript 的主要Python 程序,一個有讀寫能力的編程工具,它受到Python 中缺乏良好結構和性能問題的困擾」。

總的來說,Vyper 的設計初衷是為了創建出智能合約參與方易懂的透明智能合約簡化流程,以主打可讀性與可審核性,從而確保安全。

Vyper 的優劣勢

本章節談及的Vyper 優劣勢,主要是相比Solidity 語言,畢竟從上文提到的市場份額維度,其它的智能合約語言暫時還未形成較大的氣候。

首先,Vyper 相比Solidity 的最大優勢之一,就是它基於Python 開發的特性,因此雖然Vyper 的功能和流行程度不如Solidity,但對於熟悉Python 的開發人員來說,它是理想的可選語言。

同時,Vyper 編譯器還選擇將局部變量存儲在內存中而不是堆棧上,這使得合約更加簡單和高效,並解決了其他高級語言中常見的「堆棧過深」的問題。

Vyper 也提供了更多內置函數,以確保幾乎每個Solidity 和Yul 中的功能在Vyper 中也可以實現。開發者通過內置函數可以訪問低級位運算、外部調用和代理合約操作,通過編譯時提供覆蓋文件可以實現自定義存儲佈局。

而Vyper 相比Solidity 的劣勢也很明顯,主要源於它是一種相對Solidity 較新的語言,所以首當其沖自然是開發者維護和社區工具層面的短板:

Vyper 至今仍然缺乏Solidity 所擁有的廣泛社區支持——Solidity 有大量優秀的開發工具可供使用,像OpenZeppelin 為安全的智能合約開發提供開源庫,以及Remix 在線IDE 和本地開發人員環境Hardhat 等IDE,為其提供了允許輕鬆開發DApp 的工具和功能。

截至發文時,GitHub 數據顯示,Solidity 的貢獻者為568 人,而Vyper 為189 人,相差3 倍。

不過Vyper 雖然沒有豐富的的開發工具套件,但它有更緊密集成的工具,並且也可以插入到Solidity 開發工具中——如Titanaboa 解釋器,具有許多與EVM 和Vyper 相關的內置工具,可用於實驗和開發;Dasy,作為一種基於Vyper 的Lisp,具有編譯時代碼執行功能。

此外從技術細節角度,Vyper 缺少修飾符、類繼承和遞歸調用,並且編程語言不是圖靈完備的。

當然這些大部分是Vyper 特意提供更少的功能,旨在提升安全性和可審計性,以使合約更安全和易於審核,但這也使得開發人員需要額外的工作來解決這些限制,從而意味著本就不佔人力優勢的Vyper 注定開發效能偏低。

Vyper 的影響力從何而來?

目前來看,此次Vyper 故障只涉及0.2.15、 0.2.16 和0.3.0 等幾個特定版本,且從上文也可知,使用Vyper 編寫的頭部DeFi 項目的體量並不大,僅佔不到5% 的TVL 市場份額。

那為何此次Vyper 的故障卻造成瞭如此大的影響?

不過Vyper 的新版本已經修復這個漏洞,但由於受影響的Curve 穩定池合約不可升級,因此無法進行部署升級,只能選擇廢棄對應合約,將資金撤出。

小結

小結

小結

小結

Foresight News
作者文库