基于区块链2.0的智能合约

来自:gongxiangcj.com 归档时间:2017-05-04
区块链1.0时代的应用以比特币为代表,为解决货币和支付手段的去中心化,而区块链2.0时代则是更宏观的对整个市场的去中心化,利用区块链技术来转换许多不同的资产而不仅仅是比特币,通过转让来创建不同资产单元的价值。智能合约便是这样一种应用。
 
什么是智能合约?追本溯源,智能合约是由法律学者 Nick Szabo 在1995 提出:“一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。”合约隶属于法律范畴的概念,智能合约从提出之初,便有未来的银行和律师之称。
 
现在智能合约通常用来泛指区块链上运行的程序或脚本。智能合约应用的一个里程碑事件 DAO,实现了以智能合约进行风险投资。
 
智能合约
 
智能合约运行在区块链的多个节点上,新建/调用都由区块链的 Transactions 触发,它在一个分布式环境中运行,只有在给定输入,智能合约任一接口都能返回同样输出的情况下,各节点才可能达成共识。换言之,设计智能合约时,我们要保证写操作的确定性,读操作的幂等性。
 
目前智能合约并没有明确的行业规范,Ethereum 和 Hyperledger Fabric 都各自有独立一套智能合约的设计。但 Ethereum 相比 Fabric 适用的区块链平台更多。目前大多数智能合约,包括DAO,都是基于 Ethereum 设计实现。
 
1)Ethereum
 
Ethereum 给出的解决方案是只支持特定语言生成的智能合约。Solidity 是其中之一,它是一种语法类似 Javascript 的面向对象编程语言,也是目前最受欢迎的智能合约编程语言。为了保证确定性,Solidity 在设计时,也作出了一些权衡:
 
• 去随机
 
Solidity 在设计时,系统函数库中将产生随机数一类的函数排除在外。实际应用中,如果需要能产生随机值的功能,大多是采用类似像对发送方的哈希地址取模这种方式获得。
 
• 去网络访问
 
目前来说,智能合约中禁止访问外部链接,能访问的数据仅限于接口调用传入的参数以及本地数据库中的信息。
 
2)Fabric
 
Fabric 允许采用 Go 和 Java 实现智能合约,对确定性智能合约的支持更多在于指导建议。shim 是 Fabric 官方提供的库,支持区块链上数据访问,对应 Transaction 数据访问以及跨合约调用。shim 库能保证程序确定性,但在实际操作中任何 Go 的类库都可以使用。
 
运行环境
 
Ethereum
 
Ethereum 设计的智能合约运行环境为 EVM(Ethereum Virtual Machine)。EVM 设计为256位虚拟机,可以支持对256位哈希进行操作,它有两种实现方式:一种是字节码虚拟机,另一种则是 JIT 虚拟机。
 
1、字节码虚拟机
 
智能合约编译后,会生成字节码指令序列。字节码虚拟机在一个循环中逐条执行这些指令序列。每条指令包含指令码和操作数。字节码虚拟机的指令集支持跳转指令。在执行智能合约指令前,EVM 会首先遍历查找所有的跳转指令的目标地址,缓存下来,验证是否有效。整个代码的处理逻辑与汇编语言非常相似。
 
2、JIT 虚拟机
 
JIT虚拟机是对字节码虚拟机的一种优化。JIT 虚拟机将解析的指令结果缓存下来,根据智能合约编译后的哈希值来确定是否已缓存了解析结果,从而提高执行效率。和常见的 JVM 的 JIT 有原理上的类似。
 
3、Fabric
 
Fabric 的智能合约运行环境选择的是 Docker。对可以执行智能合约的 Peer 节点,每一个新部署的智能合约都将在一个独立的 Docker 中运行。虽然在设计上 Fabric 大大提升智能合约可支持的业务复杂度,但鱼与熊掌不可兼得,它也将智能合约的执行确定性保证彻底推向了开发者。
 
为每一个智能合约都创建一个 Docker 也是 Fabric 设计存在争议的地方。目前 Fabric 并不支持对智能合约运行 Docker 的 Lifecycle 管理,这也属于商业应用中缺失的一环。
 
小结
 
智能合约虽然广受关注,但目前成熟度依然偏低。Ethereum 需要重新完善其自研语言的开发生态链,即使其社区足够活跃,也不可能在短期内有所突破。而Fabric的后发优势更为明显,Go的生态圈将是其开发友好性的重要助力。
 
本文系共享财经专栏作家点融黑帮所著。

有关于基于区块链2.0的智能合约

斯坦福大牛教你1小时学会开发智能合约

为什么大家都说,学习智能合约,是了解区块链的必备一课?智能合约是区块链上的运行的一段程序,符合条件自动执行,完美实现了区块链去中心化、不可篡改、过程透明的特点。目前的智能合约大多运行在以太坊上,人们可以创建任何智能合约,也可以自由地在以太坊上发行代币。那么问题来了:- 什么是智能合约?- 怎样利用智

斯坦福大牛教你1小时学会开发智能合约

为什么大家都说,学习智能合约,是了解区块链的必备一课?智能合约是区块链上的运行的一段程序,符合条件自动执行,完美实现了区块链去中心化、不可篡改、过程透明的特点。目前的智能合约大多运行在以太坊上,人们可以创建任何智能合约,也可以自由地在以太坊上发行代币。那么问题来了:什么是智能合约?怎样利用智能合约来

以太坊智能合约被爆巨大漏洞 区块链何去何从?

据慢雾区透露,SMT发现与前几天爆出的美图BEC代币类似的安全漏洞。我们可以通过BEC的漏洞来透视这一以太坊智能合约漏洞到底是怎么回事?其实智能合约就是区块链环境里的可执行代码 。区块链上的所有用户都可以看到基于区块链的智能合约。但是,这会导致包括安全漏洞在内的所有漏洞都可见,并且可能无法迅速修复。

智能合约系统是什么|区块链软件开发

区块链仍旧在继续壮大,没有丝毫减弱的迹象,这种现象如今已经呈现爆炸性发展,在这个区块链经济持续发展的时候智能合约系统就是一种新资产类别的最新标志。由公共区块链,智能合约实现的新技术比较难以理解,因为该术语部分地混淆了所描述的核心交互。所以导致区块链行业的很多人并不是很了解所谓的“智能合约”。只能笼统

预计2017年是区块链的智能合约年

 0 188 如果区块链是一种分布式操作系统,那么智能合约就是这个系统的杀手APP。近日,在微软纽约市总部举行了‘首届智能合约专题研讨会’,来自区块链领域的企业和专家聚在一起讨论了智能合约在2017年以及更远的未来颠覆现状的各种方式,并正式发布长达56页的‘智能合约白皮书’。计