Tezos形式化驗證技術爲DeFi安全性賦能

robot
摘要生成中

Tezos的形式化驗證爲DeFi安全性賦能

Tezos作爲知名的PoS公鏈,其亮點不僅限於Staking功能。Tezos的形式化驗證特性同樣是其主要技術優勢之一。這一特性能夠極大提升DeFi應用的安全性,增強用戶對智能合約資金安全的信心。

DeFi安全性與形式化驗證方法

DeFi的迅猛發展吸引了衆多開發者的關注,一些著名DeFi協議累計吸引了上億美元的資金。然而,DeFi領域仍面臨着一個重大挑戰:安全性問題。

這一問題的代價是巨大的,它對一些區塊鏈項目的網路效應產生了負面影響。近幾個月來,多個DeFi項目遭受攻擊,損失從數十萬美元到數千萬美元不等。有的項目通過及時自查發現bug並採取凍結措施,避免了更大的損失。

對於注重安全性的DeFi開發者而言,Tezos的形式化驗證方案能在加強安全性的同時爲DeFi應用賦能。

傳統互聯網應用中,服務器遭受黑客攻擊後,只需對用戶數據進行回滾即可挽回損失。因此,注重用戶體驗的傳統應用可以犧牲部分安全性來換取快速迭代。然而在DeFi應用中,由於區塊鏈的不可篡改性,智能合約一旦上線並出現安全隱患,對用戶造成的損失將是巨大且不可挽回的。

因此,DeFi應用開發過程需要投入大量測試和昂貴的審計來確保安全性,這反過來會影響迭代速度和產品易用性。此外,由於安全審計成本高昂,許多開發者難以啓動DeFi應用項目。

區塊鏈開發人才的稀缺導致人工審計成本居高不下。因此,越來越多地採用機器輔助驗證成爲當前趨勢,其中形式化驗證方法更是確保安全性的關鍵手段。

形式化驗證是指使用數學中的形式化方法對算法性質進行證明或證僞,主要有兩種方法:

  1. 模型檢驗:列舉系統所有可能狀態並一一檢驗,適用於小型系統的全自動化驗證。

  2. 演繹驗證:先將系統代碼標記爲抽象數學模型,再對定理進行證明,適用於大型系統,但需要人工將系統運作方法轉換爲驗證系統可理解的語言。

長期以來,由於成本較高,形式化驗證方法主要應用於學術、國防軍工、航空航天等領域,在商業領域應用較少。鑑於傳統互聯網應用與區塊鏈應用的運行環境存在本質差異,其開發流程也應相應調整,尤其是在安全驗證環節的投入比例上。

公鏈領域中函數式語言的應用

爲保證安全性,許多區塊鏈項目在底層架構、虛擬機或智能合約語言方面選擇了函數式語言,如Ocaml、Haskell、Erlang等。函數式語言因其嚴格的變量類型定義、編譯檢驗以及較好的形式化驗證工具鏈(如CoQ),在安全領域享有良好口碑。用常見過程式語言編寫的代碼通常需要重新用函數式語言標記才能進行形式化驗證。

在衆多區塊鏈項目中,Tezos支持的智能合約高級語言種類最爲豐富,不僅包括Pascal、Ocaml、Haskell等多種函數式語言,還包括了廣泛應用的Python語言。相比之下,一些其他項目要求開發者學習全新的函數式語言,這無疑提高了開發門檻。

Michelson語言的安全特性

Tezos在智能合約語言設計上採用了創新的方案。其智能合約底層採用基於Ocaml的Michelson語言,而開發者實際接觸的是Python等高級語言,無需深入了解Michelson語言本身。這種方式結合了Michelson語言的安全性和可審計性,以及Python等高級語言的易用性。

Michelson在架構上與以太坊的EVM有相似之處,如都是棧語言、使用鏈上存儲、採用gas費用模型、圖靈完備等。但Michelson與EVM的主要區別在於:

  1. 靜態類型:所有進入Michelson智能合約的數據都需明確定義類型,避免了與類型不匹配相關的程序bug。

  2. 原子計算:Michelson智能合約必須完成執行後才能調用其他合約,避免了重入攻擊。

  3. 明確的調用失敗:執行期失敗只有三種情況:明確失敗、gas耗盡、數量溢出,避免了一些常見的執行期攻擊。

  4. 嚴格的語義:對大小寫、空格、短行等有嚴格規範,便於代碼審計。

這些改進使Michelson能更好地抵御以太坊上常見的攻擊類型。

SmartPy開發工具包

Tezos上的DApp開發者無需掌握Michelson語言。他們可以使用基於Python的SmartPy SDK,將Python代碼編寫的智能合約編譯成Michelson語言。因此,DApp開發者只需懂Python就能輕鬆上手。

SmartPy是一個Python庫,SmartPy.io允許用戶在瀏覽器中執行Python腳本。SmartPy官方網站提供了在線編輯器,開發者可直接用Python編寫代碼並編譯成Michelson智能合約,然後部署到Tezos主網。其使用界面比以太坊的Remix在線編輯器更簡潔明了,非常易於上手。SmartPy還自帶了一些現成的開發模板,方便開發者參考學習。

SmartPy.io界面包括代碼編寫區和執行結果顯示區。開發者可以輕鬆使用Python編寫和編輯合約代碼。SmartPy簡化了編譯和執行過程,只需點擊執行按鈕即可完成。執行結果立即在屏幕右側顯示,包括合約調用入口、存儲狀態、編譯後的Michelson代碼等。

除在線編輯器外,SmartPy還提供命令行版本SmartPyBasic,允許開發者在本地環境編譯運行SmartPy代碼。部署的智能合約可通過SmartPy Contract Explorer查看,合約當前狀態和歷史操作一目了然。

目前,SmartPy已支持Python的多種常用功能,如本地變量、變量類型判斷、Lambda函數等。少數不支持的功能(如數組)可用map替代。這意味着學習SmartPy無需投入大量時間和精力,開發者可專注於實現更優秀的功能。

對於想要入門SmartPy的開發者,有一些訓練課程可供參考:

  1. Cryptoverse Wars
  2. Blockmatics SmartPy Developer course

XTZ-0.6%
DEFI-5.08%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 轉發
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)