![b937a89e851f93a9da9c384eaaf9aac8.png](https://i-blog.csdnimg.cn/blog_migrate/77d711a132f550bf18b7be6c4bc9309f.jpeg)
区块链系统中智能合约技术综述
范吉立 李晓华 聂铁铮 于戈
《计算机科学》2019年8月
14页,56个参考文献
框架
- 1 引言
- 2 区块链中的智能合约语言
- 2.1 智能合约语言
- 2.2 比特币脚本语言图
- 2.3 以太坊灵完备型语言
- 2.3.1 Solidity语言
- 2.3.2 Serpent语言
- 2.4 可验证型语言Pact
- 2.5 超级账本智能合约语言
- 2.6 开发语言的对比
- 3 区块链中智能合约的实现技术
- 3.1 嵌入式运行
- 3.2 虚拟机运行
- 3.2.1 Gas计费机制
- 3.2.2 EVM虚拟机
- 3.2.3 合约创建与运行过程
- 3.3 容器式运行
- 3.3.1 Chaincode
- 3.3.2 Chaincode生命周期
- 3.3.3 以太坊和超级账本智能合约对比
- 3.4 智能合约生态
- 3.4.1 社区和支持者
- 3.4.2 技术和工具支持
- 3.4.3 合约应用范围
- 3.4.4 智能合约生态系统
- 4 研究现状和存在的挑战
- 4.1 智能合约研究现状
- 4.2 智能合约面临的挑战
- 4.2.1 安全性
- 4.2.2 并发性和可扩展性
- 4.2.3 可维护性
- 5 智能合约未来应用展望
- 6 总结
笔记
摘要:区块链是一个全球性的去中心化分布式数据库账本。智能合约作为一段由事件驱动的、具有状态的、运行于区块链系统之上的程序,能够保管、处理区块链账本上的数字资产,运行在通用平台上的智能合约还能够实现传统应用系统的部分功能。区块链技术的发展为智能合约提供了很好的运行基础,智能合约在区块链上能够发挥重要作用。随着比特币和以太坊等区块链平台的迅速发展,智能合约具备了良好的发展契机,然而智能合约应用还处于早期发展阶段,相关研究相对较少,实际应用中智能合约发应用场景不够丰富,本文从智能合约编程语言、实现技术、发展现状和存在的挑战、未来前景等几个方面进行研究和探讨。重点描述了不同智能合约开发语言的特性,以及相互之间的对比。以智能合约运行环境为标准进行分类,研究各种区块链系统中智能合约的开发、部署和运行机制,并探讨不同类型智能合约平台的应用范围,对不同区块链系统在智能合约开发、社区支持以及相应的生态系统方面进行了全面的比较。然后,介绍智能合约研究现状和面临的挑战,在安全性、可扩展性、可维护性方面进行深入分析。最后,分析了区块链和智能合约技术的发展趋势,探讨了未来的应用场景。
关键字:区块链;去中心化;智能合约;以太坊虚拟机
![f3cc2d62ee7ad5781b2de35048421a73.png](https://i-blog.csdnimg.cn/blog_migrate/c854baa6be75db461a3ec05689ae6069.png)
智能合约部署流程如图所示:
1)编写智能合约代码,形成合约代码文件(如SampleContract.sol);
2)通过智能合约编译器对代码文件进行编译,转换成可以在EVM虚拟机执行的字节码;
3)向区块链节点RPC API发送创建交易(部署合约)请求,交易被验证合法后,识别为合约创建交易,检查输入数据,进入交易池;
4)矿工打包该交易,生成新的区块,并广播到P2P网络;
5)节点接收到区块后对交易进行验证并处理,为合约创建EVM环境,生成智能合约账户地址,将区块入链;
6)API获取智能合约创建交易的收据,得到智能合约账户地址,部署完成。
智能合约调用流程与部署流程类似,也是通过RPC API创建交易,并由验证节点对交易进行处理,调用EVM实例,进行状态变更。
![d63bfa65f6e840ca948a1743fd7e5b61.png](https://i-blog.csdnimg.cn/blog_migrate/a0c09f975ed74e6074867cbdca14b02a.jpeg)
安全性
- 基于以太坊平台的开发者对开发语言Solidity语义的理解偏差和对图灵完备的灵活性利用不当,以及对变量和操作符的越界缺乏相应安全限制,导致合约产生一些安全漏洞。
- 程序员必须在实现智能合约时设计修改或终止合约的方法,或者事件发生后采用硬分叉的对策。
并行性和可扩展性
- 以太坊、Hyperledger等平台目前均采用全网节点共享单链的方案,每个节点需要处理全部交易数据,导致整个区块链平台的数据处理能力不大于单节点的处理能力。
- 区块存储也不具备可扩展性。区块链的结构决定数据记录只能追加,不能删除和修改。当记录有错误时,区块链的解决办法是在后面追加正确的记录,这样完整的修订历史能够被保存,节点只需对全网的完整交易历史进行验证即可。这种机制有利于去中心化系统运行,但严重限制了存储的可扩展性,因为随着交易数量的增加,区块数据最终会占满整个磁盘空间。
- 多链(分片、多通道)
- 针对区块链平台交易处理速率TPS较低,交易串行化导致交易规模受限的问题,以太坊推出分片方案
- Hyperledger 实现了共识服务从Peer节点分离,使得共识服务具有可插拔特性,支持多种共识服务接入,同时实现多通道结构,可以将不同业务应用分区隔离,既增强了扩展性和灵活性,也提升了系统的安全性
- 侧链
- 侧链作为单独的区块链系统,与主链之间进行区块头部信息的交互,获取主链状态信息来实现虚拟货币的兑换,如BlockStream 推出的侧链,不过该方案仅限于虚拟货币交易的扩展,不适用于其他应用场景
可维护性
-
- 智能合约维护困难的底层根源在于区块链系统的不可篡改性
- 为提高智能合约的可维护性,应当专注于智能合约在自身升级迭代和销毁等接口方面的研究,利用合约代码实现多样的管理