临界Hashgard:读懂智能合约与虚拟机,看这一篇就够了!

什么是虚拟机,为什么在区块链的世界里,它如此重要?

本次,临界 (Hashgard) 旗下的研究机构Hashgard Labs与BKFUND研究院共同完成了一篇研究报告,对虚拟机进行了深度分析。

  1. 智能合约
    智能合约简单来说是一种无需中介、自我验证、自动执行合约条款的计算机交易协议或者程序。

区块链中的智能合约不仅可以实现转账,也可以描述游戏规则。

狭义的智能合约可看作是运行在分布式账本上预置规则、具有状态、条件响应的,可封装、验证、执行分布式节点复杂行为, 完成信息交换、价值转移和资产管理的计算机程序.
广义的智能合约则是无需中介、自我验证、自动执行合约条款的计算机交易协议.
按照其设计目的可分为:

旨在作为法律的替代和补充的智能法律合约
旨在作为功能型软件的智能软件合约
旨在引入新型合约关系的智能替代合约 (如在物联网中约定机器对机器商业行为的智能合约)。

  1. 实现技术路线:

区块链智能合约应满足的设计要求与实现思路:

智能合约应满足确定性,需要在设计时采用确定性的算法和确定性的数据来源
智能合约应满足可终止性,可通过有限命令、gas模式、资源控制、准入限制等方式实现

目前区块链智能合约主要有三种技术实现:脚本方式、容器化方式、虚拟机方式。

2.1 脚本方式
脚本方式可以说是最传统的实现可编程逻辑的一种方式,最早在BTC系统中被采用。BTC的UTXO模型采用了一种类似Forth语言的签名脚本体系,用于验证该笔交易的合法性。交易一般会包括输入脚本和输出脚本两个,分别用于解锁上一笔交易的输出以及设置该笔交易金额的解锁条件。

BTC脚本采用堆栈结构方式的逆波兰表达式,用户需要按照顺序将匹配的签名、公钥等提供给脚本作为执行的输入用以解锁该笔交易。因此,脚本方式的另一特点是,和UTXO方式的配合使用效果较好。

但这种方式的缺点也很明显,主要在于功能的扩展性上,脚本方式。因此,如果从功能完备性和编程可扩展性方面来看,很多人认为比特币的脚本方式能实现的编程业务非常有限。因此从狭义的角度来看,脚本方式区块链可认为是只实现了简单的可编程特性,而没有通常意义下的智能合约体系。

目前使用脚本方式来实现可编程特性的,都可认为是区块链1.0版本的系统,可对应的包括以下3大类:

1) BTC及相关分叉、竞争通证

使用脚本方式较多的是比特币及早期相关采用UTXO模型的一些通证,包括BTC的分叉Token、竞争Token等,主要包括:Litecoin、Bitcoin Cash等等。

2)匿名通证

主打匿名、隐私保护的通证也较多的使用了脚本体系。出于对隐私保护和交易追溯性的隐藏,这类通证很多都采用了抽象、简化的脚本体系,包括Monero、Dash等。

3)DAG类的区块链

还有一些会用到脚本方式来运行合约的会是基于有向无环图结构(DAG)的区块链系统。由于DAG系统的原生特性,包括交易时长不可控、不存在全局排序机制等特点,较难在DAG的分布式账本系统上实现出一个图灵完备的智能合约系统。因此为了提高并发TPS、简化交易处理过程,一部分基于DAG的分布式账本系统也会采用脚本方式来构建自己的可编程体系。

2.2 容器化方式
容器化方式,是近年来兴起的、不同于虚拟机的一种新型虚拟化技术。相对于虚拟机在用户程序和底层环境中增加的一层中间环境,容器技术只需要将应用程序所需要的依赖打包即可独立运行,而不需要一个附加的虚拟操作系统环境。

使用容器化的方式实现区块链平台的智能合约环境,相对于堆栈执行代码的虚拟机方式相对更为独立和灵活、可调用的资源也更多。

尽管容器化技术从整体系统架构来看更为轻便与灵活,但从单个应用的角度来看,则需要考虑更“重”的一些系统因素,因为在容器环境中的进程可访问包括文件、系统功能等在内的更多系统资源。这就对区块链自身的运行环境提出了较多要求,因此采用这种方式的区块链平台较为少见。

典型使用容器化方式的区块链项目是Hyperledger Fabric。其智能合约的运行方式是在节点部署一个链上代码后,所有相关节点均会启动一个在Docker容器中独立运行的链码进程。链码通过容器中对外的gRPC接口完成与节点的交互。

目前对于链码的运行,Fabric采用的仍然是一种较为手动和底层的方式来管理维护。因为是联盟链的环境,相当于是默认所有被许可加入网络的节点均可以较为自觉的使用系统资源,即准入限制方式。

这一思想在对于链码生命周期的维护方面就体现的比较明显:在Fabric 1.3版本中,只提供了package(打包)、install(安装)、instantiate&#x

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值