基于加密货币和区块链应用的Simplicity语言介绍
扫描二维码
随时随地手机看文章
又一种新的编程语言问世啦!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。