又一種新的編程語言問世啦!Simplicity最初是被設計為執行智能合約的低級語言,如今極有可能成為加密貨幣和區塊鏈應用的最佳應用。
Blockstream的Dr. Russell O'Connor在《A New Language for Blockchains as part of a session on new languages and tools at PLAS 2017》中是如此描述Simplicity的:
Simplicity旨在改進現有的加密貨幣語言,例如Bitcoin Script和Ethereum's EVM。Simplicity在Coq中定義了正式的指稱語義。
同時,Simplicity還引入了一種稱為Bit Machine的抽象機器定義的操作語義,用于評估Simplicity程序所需的計算空間和時間資源。
由于其Turing不完整性,Simplicity適用于靜態分析,可用于在執行之前導出所需計算資源的上限。雖然Turing不完整,但Simplicity仍然可以執行任何有用的功能,并且我們相信它足以為區塊鏈應用程序構建有用的"智能合約"。
Simplicity的設計目標是:
創建一個富有表現力的語言,為用戶提供構建程序和智能合約所需的工具。
啟用靜態分析,提供所需計算量的有用上限。
最大限度地減少帶寬和存儲需求,并通過在redemption time刪除未使用的代碼來增強隱私。
保持比特幣自設交易的設計,即程序不能訪問交易以外的任何信息。
提供正式的語義,便于使用現有的proof-assistant software。
需要注意的是, "Simplicity是被設計為執行智能合約的低級語言,而不是程序員直接編寫的語言。"
Simplicity是一種類型化的組合語言,這一點很重要。每種類型的Simplicity表達式都有兩種類型:輸入類型和輸出類型。每一個表達式都表示從輸入類型到輸出類型的函數。
"Simplicity的優勢是在于它所具有的功能,而不是它所包含的功能"
這種語言沒有狀態,也沒有命名變量,沒有函數類型(這意味著沒有更高階的函數),也沒有無限循環或遞歸 - 可以建立contracts狀態來實現循環,而不需要在Simplicity本身內無限循環。
結論
Simplicity可以部署在新的區塊鏈應用中,包括sidechain和比特幣本身,也可以用于需要在潛在對抗條件下傳輸和執行有限程序的任何應用。
目前,Simplicity仍然是一個Blockstream研究和開發項目,未來有可能用于Blockstream產品。它的下一步是發布Simplicity SDK。