三分钟读懂什么是EVM

虚拟机指的是,通过软件模拟的、具备完整硬件系统功能并运行在隔离环境下的完整计算机系统,比如虚拟化物理机VMware、Java虚拟机等。实际上在PC上常见的各种手机模拟器、主机模拟器,也都是一种虚拟机。这样的虚拟机往往需要固件运行,非X86或X64架构的系统则需要各自的BIOS辅助运行。

而EVM(Ethereum Virtual Machine,以太坊虚拟机)则是建立在以太坊区块链上的代码运行环境,与传统的虚拟机相似,其主要作用是处理区块链系统内的智能合约

在这里插入图片描述

简单来说,EVM是一个完全独立的沙盒。这意味着合约代码可对外完全隔离,并在EVM内部独立运行。由于EVM也分散储存在每个节点的计算机上,所以当有人需要创建智能合约时,就可以使用类似JavaScript和Python等编程语言创建运行于EVM的应用程序。同时EVM又能与主网的其余部分隔离,运行时并不影响主区块链的操作,这就是EVM存在的意义。
在这里插入图片描述

为了减少资源耗费并同时保证系统性能,EVM并没有模拟完整的计算机,而是使用更为轻量级的虚拟机构架,以确保系统流畅。EVM设计的目标是构建具有简单性、确定性、容易优化、节省空间、确保安全等属性且专用于区块链的系统。在2017年召开的Devcon3会议上,以太坊开发者推出了高级语言Solidity来帮助以太坊上智能合约的开发,并希望借此进一步扩大以太坊的应用范围。

在这里插入图片描述
与之相似的,XFS的区块链生态更是采用了无代码或低代码开发,并开放更多的系统端口,以帮助所有XFS使用者更好地使用并拓展整个系统,无论该使用者是否懂得代码,都可以通过无代码或低代码的方式快速实现功能需求

以以太坊为例,以太坊是图灵完备的,开发者可以使用 Solidity 语言创建运行于 EVM 上的应用程序。所谓图灵完备,就是一切可计算的问题都能计算,这样的虚拟机或者编程语言就叫图灵完备的,图灵完备通常指具有无限存储能力的通用物理机器或编程语言。与图灵完备相反的是图灵不完备,比如比特币的脚本系统,就是图灵不完备的。

以太坊的虚拟机为智能合约的实现提供了基础,可实现任何复杂程度的操作。不过它同时也存在着缺陷,比如EVM常用的Solidity语言缺乏标准库、基于栈的架构易于优化但所需opcode更多等。而QTUM推出的量子链x86虚拟机则是由EVM衍生出、旨在修改后者不足的虚拟机。

当然,这些问题将在未来的其它产品进化或以太坊本身的迭代中得以解决,这一切都只是时间问题。

<think>好的,我现在需要帮助用户了解IMA和EVM的概念及区别。首先,我得回忆一下之前学过的相关知识,并结合提供的引用内容来组织答案。用户的问题是三个部分:IMA全称和作用,EVM全称及工作原理,以及两者的区别。我需要分步骤解答,并且确保引用正确的内容。 首先,IMA的全称应该是Integrity Measurement Architecture,作用主要是用于测量文件的完整性,比如在系统启动或执行文件时进行检测。根据引用[3],IMA会在执行新可执行文件时调用IMA_bprm_check函数进行检查,如果发现问题就拒绝执行。这说明IMA的作用是主动测量和验证文件的完整性,防止被篡改。 接下来是EVM,全称应该是Extended Verification Module。根据引用[2],EVM是Linux的扩展验证模块,结合引用[1],它功能单一,不需要策略支持。工作原理方面,可能涉及使用加密密钥来保护元数据,比如通过keyctl命令加载evm-key,如引用[2]中的例子。EVM可能负责验证文件扩展属性中的完整性,比如使用HMAC或数字签名,确保元数据未被篡改。 然后两者的区别,需要从功能和机制上分析。IMA侧重于文件内容本身的测量和验证,而EVM保护的是文件元数据的完整性。引用[1]提到IMA定义机制和策略分离,而EVM不需要策略,这说明IMA可能有更灵活的策略配置,而EVM功能较为固定。此外,IMA可能在执行时检查,而EVM可能在访问时验证元数据。 需要确认引用是否正确。引用[3]提到IMA在bprm_check时检查文件,引用[4]涉及生成IMA的密钥,而EVM的密钥加载在引用[2]中。另外,引用[5]是关于ima-evm-utils的编译步骤,可能涉及两者的工具支持。 需要组织语言,先分别介绍IMA和EVM,再对比区别。注意使用中文,数学公式用$...$,独立公式用$$...$$,但可能这里用不到太多数学符号。不过如果有涉及算法或加密的部分可能需要,比如HMAC的公式,但用户的问题可能不需要。 可能还需要提到IMA和EVM如何配合使用,比如IMA检查文件内容,EVM保护元数据,共同提升系统完整性。引用[1]提到IMA和EVM都是子系统,机制和策略分离,但EVM不需要策略支持,这点要强调区别。 最后生成相关问题,考虑用户可能想了解如何配置、密钥生成、实际应用场景等。根据引用[4]和[5],可以生成关于配置步骤和工具使用的问题。 现在开始组织答案,确保每个部分都包含引用标记,如[^1]、[^2]等,正确对应到提供的引用内容。</think>### IMA与EVM的概念及区别 #### 1. **IMA全称及作用** - **全称**:Integrity Measurement Architecture(完整性测量架构)。 - **作用**: IMA主要用于**动态测量和验证文件完整性**。它在以下场景中发挥作用: - **执行文件时**:例如,当系统加载新的可执行文件时,IMA通过`IMA_bprm_check`函数检查文件内容是否被篡改,若检测到异常则拒绝执行[^3]。 - **启动阶段**:测量系统关键组件(如内核模块)的完整性,确保启动链可信。 - **策略扩展**:支持自定义策略,例如仅允许经过签名的特定文件运行。 #### 2. **EVM全称及工作原理** - **全称**:Extended Verification Module(扩展验证模块)。 - **工作原理**: EVM通过**加密技术保护文件元数据**(如权限、时间戳)的完整性: 1. **密钥管理**:需使用`keyctl`命令加载加密密钥(如`evm-key`),例如: ```bash keyctl add encrypted evm-key "load `cat /etc/keys/evm-key`" @u [^2] ``` 2. **元数据保护**:为文件的扩展属性(如`security.evm`)生成**加密哈希(HMAC)或数字签名**,确保元数据未被篡改。 3. **实时验证**:当文件被访问时,EVM验证其元数据的完整性,若校验失败则拒绝操作。 #### 3. **IMA与EVM的区别** | **维度** | **IMA** | **EVM** | |----------------|----------------------------------------|----------------------------------------| | **保护对象** | 文件内容(数据完整性)[^3] | 文件元数据(如权限、属性) | | **功能范围** | 测量、验证、执行控制 | 仅验证元数据完整性 | | **策略支持** | 支持灵活策略(如允许/拒绝执行) | 无策略,仅依赖密钥验证机制 | | **技术实现** | 基于哈希或数字签名测量文件内容 | 使用HMAC或非对称加密保护元数据[^4] | | **依赖关系** | 可独立启用 | 通常依赖IMA提供的基础框架 | #### 4. **协同工作场景** IMA与EVM常结合使用以提供**全方位完整性保护**: - **示例**:一个可执行文件需同时满足: 1. IMA验证其内容未被篡改(通过哈希或签名)。 2. EVM验证其元数据(如所有者权限)未被恶意修改。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值