【学习笔记】智能合约引擎

news2024/12/30 3:07:40

图片来源: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]

https://blog.rapidinnovation.io/top-10-smart-contract-platforms-2022/

此外,还有以下两种

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

欢迎留言,一起讨论设计智能合约引擎。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/179970.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【手写 Promise 源码】第一篇 - Promise 简介

一,前言 上一篇,完成了 Promise 源码学习的目录; 本篇,主要对 Promise 进行简单的概括介绍; 二,Promise 简介 Promise 是一个类或构造函数,是 JS 原生提供的,通过实例化 Promise …

【Java】还不懂this关键字?一分钟彻底弄懂this关键字

博主简介:努力学习的预备程序媛一枚~博主主页: 是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】 前言 问题:为什么会存在this? 在上一篇【JavaSE】一文看懂构造器/构造方法(Cunstructor)中,我们已…

更方便Spring存储和读取对象,五大类注解、@Bean、@Autowired、@Resource

上一篇博客我们介绍了如何使用xml来引入bean对象,当项目多的时候,显然那样是比较麻烦的。现在我们只需要 个注解就可以替代了。注意:注解和xml可以同时使用准备工作:配置扫描路径我们需要配置 下存储对象的扫描包路径,只有被配置的…

利用Windows系统服务进行权限提升

提权是后渗透重要的一环节,如果当前获取的用户权限比较低,那么我们将无法访问受保护的系统资源或执行系统管理操作,影响后续的攻击过程。这要求我们通过各种手段将当前用户的权限进行提升,以满足后续攻击的要求。利用系统服务提权…

VUE2--22.11.23

VUE2一、Vue.js devtools二、Vue简介1、什么是Vue2、Vue的特性1.数据驱动视图2.双向数据绑定3.MVVM三、Vue的基本使用1、基本使用步骤四、Vue的指令与过滤器1、什么是指令2、内容渲染指令1.v-text2.{{}}3.v-html3、属性绑定指令4、事件绑定指令5、双向绑定指令6、条件渲染指令7…

【Linux】动静态库、文件的三个时间

1.文件的三个时间Access: 访问时间,访问的频率很高,所以较新的Linux都是按一定的时间间隔刷新Modify: 修改文件内容时间Change:修改文件属性时间,修改文件内容也会修改文件属性makefile自动编译判断文件是否为最新:就是按可执行程…

运动基元(一):Dubin‘s曲线【part3】

3.5 RLR RLR的第一段圆弧的曲率 k 1 = − k m a x < 0 → s i g n ( k 1 ) = − 1 k_1=-k_{max}<0\rightarrow si

Springboot图书馆图书借阅管理系统x1x74

目 录 1 概述 1 1.1课题背景及意义 1 1.2 国内外研究现状 1 1.3 本课题主要工作 2 2 系统开发环境 3 2.1 java简介 3 2.2 Mysql数据库 3 2.3 B/S结构 4 2.4 JSP技术介绍 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2操作…

机器学习sklearn笔记:LDA(线性判别分析)

1 介绍 1.有监督的降维2.投影后类内方差最小&#xff0c;类间方差最大2 推导 我们记最佳的投影向量为w&#xff0c;那么一个样例x到方向向量w上的投影可以表示为&#xff1a; 给定数据集令分别表示第i类的样本个数、样本集合、均值向量和协方差矩阵——>在投影上的均值是 —…

kafka初识

安装kafka 下载 下载window的kafka地址 window的kafka只是为了方便学习 安装地址&#xff1a;kafka.apache.org/ 安装 解压zip为文件夹 启动kafka kafka服务器的功能相当于RocketMQ中的broker&#xff0c;kafka运行还需要一个类似于命名服务器的服务。在kafka安装目录中自…

Windows10添加WebDav地址时报错“输入的文件夹无效,请选择另一个”

一、问题描述在使用Windows10添加WebDav网络地址时&#xff0c;报错“输入的文件夹无效&#xff0c;请选择另一个”&#xff0c;如下图所示&#xff1a;二、问题分析这是由于Windows10的WebDav默认只支持https协议&#xff0c;没有支持http协议导致的。三、解决办法3.1、修改注…

计算机科学领域中里程牌式的算法

计算机科学中伟大的算法前言搜索引擎的索引PageRank公钥加密 --- 用明信片传输秘密纠错码数据压缩无损压缩有损压缩数据库 --- 追求一致性的历程事务和待办事项&#xff08;预写日志记录&#xff09;数字签名用挂锁签名用指数挂锁签名RSA的安全性前言 我肯定不是一位天文学专家…

redis 消息队列方案

redis 消息队列方案 观察角度&#xff1a;消息有序&#xff0c;重复消息处理&#xff0c;消息可靠性保证 pub/sub 发布订阅机制 list集合 消息有序&#xff1a;lpush和rpop可以保证消息顺序的被消费 重复消息处理&#xff1a;list没有为消息提供唯一标识&#xff0c;需要生产者…

利用matlab求解非线性目标函数

文章目录函数介绍设置函数参数步骤结果分析函数介绍 使用fmincon函数来进行求解&#xff0c;格式为 [x,y] fmincon(f,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)其中&#xff0c;f表示所求的目标函数&#xff0c;x0表示初始值&#xff0c;A,b,Aeq,beq表示线性的约束&#xff0c…

SpringBoot06:整合JDBC、Druid、MyBatis

整合JDBC 1、创建一个新的工程&#xff0c;勾选JDBC API和MySQL Driver 2、导入web启动器 3、编写yaml配置文件&#xff0c;连接数据库 spring:datasource:username: rootpassword: 123456url: jdbc:mysql://localhost:3306/mybatis?useUnicodetrue&characterEncodingut…

力扣 2299. 强密码检验器 II

题目 如果一个密码满足以下所有条件&#xff0c;我们称它是一个 强 密码&#xff1a; 它有至少 8 个字符。 至少包含 一个小写英文 字母。 至少包含 一个大写英文 字母。 至少包含 一个数字 。 至少包含 一个特殊字符 。特殊字符为&#xff1a;“!#$%^&*()-” 中的一个。…

面向对象编程范式

目录 1.概述 1.1.面向对象编程的核心诉求 1.2.面向对象的世界观 2.类和对象 3.如何寻找类和对象 3.1.概述 3.2.示例 4.如何表示类 4.1.什么是UML 4.1.关系 4.2.权限 4.3.依赖 4.4.泛化&#xff08;继承&#xff09; 4.5.实现 4.6.关联 4.7.聚合 4.8.组合 1.概…

自定义类型之枚举和联合

该文章将详细介绍除结构体外的另外两种自定义类型--------枚举类型与联合类型。1.枚举1.1枚举类型的定义1.2枚举的优点1.3枚举的使用2.联合&#xff08;共用体&#xff09;2.1联合类型的定义2.2联合的特点2.3联合大小的计算1.枚举 枚举顾名思义就是------一一列举。 把所有可能…

ADAS HiL系统测试方案

1、什么是ADAS ADAS&#xff08;Advanced Driving Assistance System&#xff09;也就是高级驾驶辅助系统&#xff0c;是无人驾驶的过渡。 ADAS利用安装在车上的各式各样传感器&#xff08;毫米波雷达、激光雷达、单\双目摄像头以及卫星导航&#xff09;&#xff0c;在汽车行驶…

[前端笔记——CSS] 12.处理不同方向文本

[前端笔记——CSS] 12.盒模型背景与边框1.书写模式2.书写模式、块级布局和内敛布局3.逻辑属性和逻辑值1.书写模式 CSS 中的书写模式是指文本的排列方向是横向还是纵向的。writing-mode 属性使我们从一种模式切换到另一种模式。例如&#xff0c;我们使用writing-mode: vertical…