用于加密货币和区块链的语言Simplicity

简介:

又一种新的编程语言问世啦!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。


本文转自d1net(转载)

相关文章
|
5月前
|
存储 供应链 Go
使用Go语言搭建区块链基础
使用Go语言搭建区块链基础
|
5月前
|
存储 安全 Go
Go语言在区块链开发中的应用
Go语言在区块链开发中的应用
|
8月前
|
安全 区块链 数据安全/隐私保护
【Python入门系列】第二十篇:Python区块链和加密货币
随着数字经济的快速发展,区块链技术和加密货币成为了人们关注的焦点。区块链作为一种去中心化的分布式账本技术,可以实现安全、透明和可追溯的交易记录。而加密货币则是基于区块链技术构建的数字货币,具有匿名性和去中心化的特点。Python作为一种易学易用的编程语言,为开发者提供了丰富的工具和库来构建区块链和加密货币应用。
200 0
|
存储 监控 算法
区块链,中心去,何曾着眼看君王?用Go语言实现区块链技术,通过Golang秒懂区块链
区块链技术并不是什么高级概念,它并不比量子力学、泡利不相容原则、哥德巴赫猜想更难以理解,但却也不是什么类似“时间就是金钱”这种妇孺皆知的浅显道理。区块链其实是一套统筹组织记录的方法论,或者说的更准确一些,一种“去中心化”的组织架构系统。
区块链,中心去,何曾着眼看君王?用Go语言实现区块链技术,通过Golang秒懂区块链
|
存储 JSON 安全
使用Go语言编写区块链P2P网络(译)
使用Go语言编写区块链P2P网络(译)
863 0
使用Go语言编写区块链P2P网络(译)
|
算法 Go 数据安全/隐私保护
Go 语言入门很简单:AES 加密和解密
Advanced Encryption Standard, AES 又名 Rijndael 是 NIST 于 2001 年创建的一种加密算法。它使用 128 位数据块进行加密,是一种对称块密码。在这篇文章中,我们将在 Go 中使用 AES 加密和解密数据。
Go 语言入门很简单:AES 加密和解密
|
数据安全/隐私保护 C语言
【C 语言】文件操作 ( 文件加密解密 | 加密文件 )
【C 语言】文件操作 ( 文件加密解密 | 加密文件 )
203 0
|
Rust JavaScript 前端开发
区块链开发(八)以太坊不同语言客户端地址
区块链开发(八)以太坊不同语言客户端地址
105 0
|
算法 Go 数据安全/隐私保护
Go语言实现md4、md5、sha256哈希算法加密
目录 1. 哈希算法特点 2. 常用的哈希算法 3. go实现MD加密 3.1 MD4 3.2 MD5 3. go实现SHA加密 最后
558 0
Go语言实现md4、md5、sha256哈希算法加密
|
边缘计算 测试技术 BI
Excelize 2.3.1 发布,Go 语言 Excel 文档基础库,支持加密表格文档
Excelize 2.3.1 发布,Go 语言 Excel 文档基础库,支持加密表格文档
581 3
Excelize 2.3.1 发布,Go 语言 Excel 文档基础库,支持加密表格文档