又一種新的編程語言問世啦!Simplicity最初是被設(shè)計為執(zhí)行智能合約的低級語言,如今極有可能成為加密貨幣和區(qū)塊鏈應(yīng)用的最佳應(yīng)用。
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旨在改進(jìn)現(xiàn)有的加密貨幣語言,例如Bitcoin Script和Ethereum's EVM。Simplicity在Coq中定義了正式的指稱語義。
同時,Simplicity還引入了一種稱為Bit Machine的抽象機(jī)器定義的操作語義,用于評估Simplicity程序所需的計算空間和時間資源。
由于其Turing不完整性,Simplicity適用于靜態(tài)分析,可用于在執(zhí)行之前導(dǎo)出所需計算資源的上限。雖然Turing不完整,但Simplicity仍然可以執(zhí)行任何有用的功能,并且我們相信它足以為區(qū)塊鏈應(yīng)用程序構(gòu)建有用的"智能合約"。
Simplicity的設(shè)計目標(biāo)是:
創(chuàng)建一個富有表現(xiàn)力的語言,為用戶提供構(gòu)建程序和智能合約所需的工具。
啟用靜態(tài)分析,提供所需計算量的有用上限。
最大限度地減少帶寬和存儲需求,并通過在redemption time刪除未使用的代碼來增強(qiáng)隱私。
保持比特幣自設(shè)交易的設(shè)計,即程序不能訪問交易以外的任何信息。
提供正式的語義,便于使用現(xiàn)有的proof-assistant software。
需要注意的是, "Simplicity是被設(shè)計為執(zhí)行智能合約的低級語言,而不是程序員直接編寫的語言。"
Simplicity是一種類型化的組合語言,這一點(diǎn)很重要。每種類型的Simplicity表達(dá)式都有兩種類型:輸入類型和輸出類型。每一個表達(dá)式都表示從輸入類型到輸出類型的函數(shù)。
"Simplicity的優(yōu)勢是在于它所具有的功能,而不是它所包含的功能"
這種語言沒有狀態(tài),也沒有命名變量,沒有函數(shù)類型(這意味著沒有更高階的函數(shù)),也沒有無限循環(huán)或遞歸 - 可以建立contracts狀態(tài)來實現(xiàn)循環(huán),而不需要在Simplicity本身內(nèi)無限循環(huán)。
結(jié)論
Simplicity可以部署在新的區(qū)塊鏈應(yīng)用中,包括sidechain和比特幣本身,也可以用于需要在潛在對抗條件下傳輸和執(zhí)行有限程序的任何應(yīng)用。
目前,Simplicity仍然是一個Blockstream研究和開發(fā)項目,未來有可能用于Blockstream產(chǎn)品。它的下一步是發(fā)布Simplicity SDK。