Belangrijkste concepten
本文介紹了一個名為 Asp 的系統,旨在簡化可證明安全智慧合約的建構,並透過抽象化、防禦性編譯和演繹證明來解決現有智慧合約語言的缺點。
Samenvatting
Asp 系統:建構可信賴的智慧合約
這篇研究論文介紹了 Asp 系統,這是一個旨在簡化可證明安全智慧合約建構的系統。作者認為,現有的智慧合約語言,如 Solidity 和 Rust,由於其複雜的語言結構和對重入性推理的需求,難以進行正式驗證。為了解決這些問題,Asp 結合了狀態機和演繹證明等眾所周知的概念,並強調抽象化和防禦性編譯。
Asp 語言提供抽象概念,簡化了驗證過程。它將 Web3 中常用的抽象概念(如貨幣、代幣、計時器和地址)作為抽象類型提供。這些抽象概念簡化了程式設計和分析,因為抽象操作的數量很少,並且具有精確的語義。此外,Asp 語言的語義天生就禁止算術溢位、越界訪問和重入性,從而消除了程式設計師對這些常見漏洞的擔憂。
Asp 合約具有有限狀態機骨架,並透過對抽象資料類型定義的狀態變數的操作來增強。這種結構自然地模擬了現實世界中的合約執行。例如,考慮透過郵件寄送包裹——這是寄件人和郵局之間的合約。該合約會經歷準備、付款、運輸和交付等階段;這些階段自然地由有限狀態機建模。在 Solidity 等傳統語言中,這種結構必須隱式地編碼和執行,從而使其變得模糊並使分析變得複雜。
Asp 編譯器將合約轉換為 Solidity,這是最流行的合約語言。編譯過程保留了 Asp 語義,實現了高階抽象概念,並支援訊息傳輸的通訊視圖。編譯器添加了輔助防禦性程式碼,以強制執行語言語義,並動態檢查難以靜態證明的屬性。