图片来源:https://www.researchgate.net/publication/336453428_Detecting_nondeterministic_payment_bugs_in_Ethereum_smart_contracts/figures?lo=1
智能合约是区块链技术的核心。我们可以根据以下公式定义智能合约
智能合约=事务处理和保存机制+完备的状态机
智能合约的事务主要包含需要发送的数据,事件是描述数据的信息;智能合约的运行需要可信任的执行环境和系统。虚拟机或者Docker为智能合约提供计算资源和运行容器。
今天为大家总结智能合约引擎的一些内容,包括功能结构,设计原则,比较不同引擎。
智能合约引擎的功能和结构
以HyperVM为例,展示合约引擎的功能和结构。
图片来源:https://www.bookstack.cn/read/hyperchain-zh/spilt.2.dca19f788f66da79.md
https://static.sitestack.cn/projects/hyperchain-zh/a586bf079d6c515aa9fb7259333fc125.png
如上图所示,HyperVM的架构图包括智能合约编译、解释、执行、智能合约操作区块链账本和安全保障等相关主要组件。
设计智能合约引擎的原则
智能合约引擎包括完备的业务功能、可确定性、可终止性、完备的升级方案。通常可以通过安全沙盒模式和计步器机制实现确定性和可中止性。
设计虚拟机的原则
1. 图灵完备性
智能合约需要遵循一定的业务规则,如果没有图灵完备性,那么业务将无法实现。
2. 执行结果一致性
智能合约存储在每个节点的区块中,合约也在每个节点上执行,所以需要保证每个节点在同样的输入条件下,得到同样的输出结果。
3. 数据交互性
智能合约需要与区块链数据进行交互。虚拟机需要满足智能合约和区块链的数据交互性或者与其他合约的交互性。
4. 执行可终止
在智能合约执行后,当遇到异常情况时要能及时终止,不能因为用户的合约有问题而导致引擎甚至整个系统崩溃。例如,用户写了一个带有无限循环的语句,虚拟机需要能检测并终止这种异常代码的执行。
来源:https://mp.weixin.qq.com/s/0vQJxlfppPEbLOcRVY_bPQ
比较智能合约引擎
HyperVM和EVM
名称 | 语言 | 合约引擎 | 合约安全性 | 开发环境 | 支持功能 | 大数据量支持 |
趣链 | Java | HyperVM | Gas限制,禁用JVM底层系统库和随机值 | Java IDE即可,Javac编译 | 提供内置功能,包括日志输出、密码工具、调用方法形式化 | 理论上可支持数据库的上限 |
布比 | C/C++、JavaScript、Python、Go | ChainVM 集成JavaScriptVM和WASMVM多种引擎 | 安全性校验,明确接口权限,增加合约间的交互操作 | 友好,并且包括合约模板 | NA | NA |
以太坊 | Solidity | EVM | Gas限制,支持操作受限 | remix IDE | 部分内置功能,使用跨合约形式调用 | 拆分数据,数据量大了以后会降低查询效率 |
ChainVM
架构如下图。
ChainVM架构
ChainVM智能合约的执行过程
图片来源:布比区块链技术开发团队. 商用区块链技术与实践 (Chinese Edition) (Kindle Location 1667). Kindle Edition.
长安链ChainMaker容器虚拟机——DockerVM
Docker这种成熟的容器技术,其轻量、基于开放标准并且安全。使用Docker实现容器类虚拟机具备以下特点。
隔离性:隔离了DockerVM与主机,隔离了合约。
确定性:依赖于合约进程的网络隔离,文件隔离,进程间隔离。
可终止性:采用交易超时方法。
DockerVM架构
图片来源:https://mp.weixin.qq.com/s/B50qvWh-PX5gvwt_P5UbRw
Ethereum vs Fabric vs Corda vs Stellar vs Rootstock
图片来源:https://s3.cointelegraph.com/storage/uploads/view/26706bda3a485793ef0f965d28a77147.png 文章:A deep dive into the 5 popular smart contract development platforms and their comparison
还可以参考
Top 10 Smart Contract Platforms in 2022 [Other Than Ethereum]
Top 10 Smart Contract Platforms in 2022 [Other Than Ethereum]
此外,还有以下两种
FVM:支持 Rust 等语言,具备安全、多样、高效的特点。
KVSQL:支持在区块链上执行 SQL 语句。
参考资料
Comparing Virtual Machines: Message Only vs Asset-Oriented
https://www.radixdlt.com/post/comparing-virtual-machines-message-only-vs-asset-oriented
Top 4 Blockchain Virtual Machines for Decentralized Applications
https://hackernoon.com/top-4-blockchain-virtual-machines-for-decentralized-applications
【虚拟机专栏】智能合约执行引擎的前世今生
https://xie.infoq.cn/article/9be94d9f7458be48fd707cd82
HyperChain文档
https://hyperchain.readthedocs.io/en/latest/smart_contract.html
长安链ChainMaker容器虚拟机——DockerVM
https://mp.weixin.qq.com/s/B50qvWh-PX5gvwt_P5UbRw
VM Matters: A Comparison of WASM VMs and EVMs in the Performance of Blockchain Smart Contracts
https://arxiv.org/abs/2012.01032
了解区块链虚拟机:EVM、HVM、WASM、MOVE
https://mp.weixin.qq.com/s/B6C83YUK45kHM0FQ-iA99g
欢迎留言,一起讨论设计智能合约引擎。