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





