了解以太坊虚拟机(EVM)

这篇具有很好参考价值的文章主要介绍了了解以太坊虚拟机(EVM)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

了解以太坊虚拟机(EVM)

以太坊虚拟机(Ethereum Virtual Machine,简称EVM)是以太坊网络的核心组件之一,它承担着智能合约执行的重要任务

特点

  • 智能合约执行环境:EVM提供了一个安全的环境,用于执行智能合约。这些合约以Solidity等高级编程语言编写,并在以太坊区块链上部署和执行

  • 不可篡改性:EVM的设计目标之一是确保智能合约执行的不可篡改性。一旦部署到以太坊区块链上,智能合约的代码将永远不会改变,保证了合约的可靠性和安全性

  • 分布式执行:EVM运行在整个以太坊网络上的节点之上,通过共识算法确保所有节点对智能合约的执行结果达成一致

  • 燃料机制:为了防止恶意用户滥用资源,EVM引入了燃料机制。执行智能合约需要支付一定数量的以太币作为燃料费用,确保合约的执行成本被合理控制

状态与数据模型

  • 存储区域(Storage)存储区域是每个以太坊账户的持久性存储空间,用于永久性地存储合约的状态信息。这些状态信息包括合约的变量状态标志、以及其他重要的数据,这里指的是每个节点的状态数据库。

比如ERC20代币合约,它存储了每个用户的余额信息。在合约的存储区域中,将会存储每个用户的地址与对应的余额数据

evm虚拟机,一步步了解Web3,智能合约,深入了解ETH,区块链,web3,智能合约

  • 内存区域(Memory):内存区域是EVM提供的一个临时性的存储空间,用于在合约执行期间存储临时数据。通常用于存储中间计算结果或其他临时数据。

在一个复杂的数学计算合约中,可能需要使用内存区域来存储中间计算结果,以便在执行过程中进行多步计算

  • 合约数据区域:合约数据区域是用于存储合约的代码的特殊存储空间。每个合约的代码都存储在合约数据区域中。

一个智能合约的字节码文件(由代码编译而来)存储在合约数据区域中的数据。当合约被部署到以太坊网络上时,会被存储在这个特殊的存储空间中

注意

交易和合约调用(其实也是一种交易)的信息会存储在区块链上,但是这些交易引发的状态变更(比如Alice向Bob转了1ETH)是不会记录在区块链中的,状态变更数据库是节点根据区块链中的交易构建而成的。所以我们上面说的存储区域合约数据区域是节点根据区块构建出来的。

evm虚拟机,一步步了解Web3,智能合约,深入了解ETH,区块链,web3,智能合约

为什么要构建状态数据库?

构建状态数据库之后节点可以快速的校验交易的合法性,以及验证新区块

  • 从计算机的角度看:状态数据库可能存在计算机的硬盘里,也可能存在计算机的内存中,要看节点的具体实现
  • 从EVM的角度看:先对于内存区域而言,这些数据被"物理"的存储了

evm虚拟机,一步步了解Web3,智能合约,深入了解ETH,区块链,web3,智能合约文章来源地址https://www.toymoban.com/news/detail-858370.html

结论

  • 以太坊虚拟机(EVM)是以太坊生态系统的核心组件之一,它为智能合约的安全执行提供了一个可靠的环境
  • EVM的特点和状态与数据模型为开发者提供了丰富的功能和灵活性,使得以太坊成为了一个强大而多样化的智能合约平台

到了这里,关于了解以太坊虚拟机(EVM)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 以太坊虚拟机 EVM 的原理

    作者:禅与计算机程序设计艺术 以太坊虚拟机(Ethereum Virtual Machine,简称EVM)是一个运行在以太坊区块链网络上执行智能合约、存储数据的软件。它负责部署、验证、执行智能合约的代码,并维护所有账户信息。用户可以通过发送交易数据到网络中请求执行智能合约。EVM是一

    2024年02月08日
    浏览(37)
  • web3系列———2.以太坊与智能合约

    主流币: 中本聪设计的比特币大获成功后,各种区块链和其对应的加密货币层出不穷,其中不乏新技术的使用,不过大部分的模仿货币最后都销声匿迹了,最终存活并存有大量用户的被称作主流币。 BTC比特币 ETH以太坊 LTC莱特币 XRP瑞波币 USDT (代币) USDC (代币) BUSD (代币) …

    2024年04月24日
    浏览(27)
  • Web3.js在以太坊上部署和调用智能合约

    介绍如何使用Web3.js在以太坊上部署和调用智能合约;Web3.js是以太坊JavaScript API的实现,它可以与以太坊区块链进行交互 智能合约编写 使用Solidity编写一个简单的智能合约,然后使用Web3.js将其部署到以太坊区块链,通过JavaScript调用该智能合约 这个智能合约非常简单。它有两

    2024年02月16日
    浏览(38)
  • 以太坊Dapp通过web3js部署调用智能合约

    参考视频:https://www.bilibili.com/video/BV14z4y1Z7Jd?p=1 https://remix.ethereum.org/ 创建一个新的文件夹 mkdir MyDapp2 启动 ganache-cli 下载web3 npm install web3 ,注:ganache的启动和deploy.js要在同一个目录。 先进行测试 node deploy.js 部署合约 web3的版本:1.7.1 复制 WEB3DEPLOY 的内容到deploy.js == ganache需要

    2023年04月23日
    浏览(34)
  • 以太坊EVM源码分析学习记录

    analysis.go common.go contract.go contracts.go doc.go eips.go errors.go evm.go gas.go gas_table.go instructions.go interface.go interpreter.go jump_table.go logger.go memory.go memory_table.go opcodes.go operations_acl.go stack.go stack_table.go 2020年版本的evm结构 大致流程 编写合约 生成abi 解析abi得出指令集 指令通过opcode来映射成

    2024年02月01日
    浏览(33)
  • 剖析Solidity合约创建EVM bytecode

    前序博客有: Ethereum EVM简介 揭秘EVM Opcodes 在以太坊中,当合约创建时,init code将作为交易的一部分发送,然后返回该合约的实际bytecode——runtime code。详细可参看以太坊黄皮书第7章。 当交易中的recipient地址为空(即0)时,该交易为创建合约交易: 创建合约交易中可包含v

    2024年02月02日
    浏览(45)
  • 【区块链 | EVM】深入理解学习EVM - 深入了解 Solidity:堆栈

    探讨 EVM 堆栈机器,以及如何在堆栈中推入和弹出数据 原文链接: https://betterprogramming.pub/solidity-tutorial-all-about-stack-c1ec6070fe60 探讨 EVM 堆栈机器,以及如何在堆栈中推入和弹出数据 图片来源:Iva Rajović on Unsplash 这是\\\"深入Solidity数据存储位置\\\"系列的第四篇,其他三篇: 深入

    2024年02月09日
    浏览(34)
  • web3: 智能合约

    2024年01月09日
    浏览(36)
  • 智能合约及其web3共识机制

      目录 什么是共识? 什么是共识机制? 共识机制的目标 为什么需要共识机制? 如何评价一个共识机制的优劣: 共识机制分类 PoW( Proof of Work)工作量证明:多劳多得 PoS(Proof of Stake)股权证明算法:持有越多,获得越多 优点 缺点 如何配置web3 智能合约测试   我们所说的共识,是

    2024年01月17日
    浏览(33)
  • 为 Web3 项目撰写智能合约(Web3项目三实战之二)

    时间像是在我们身边悄然而过,而我们的 Web3项目实战 系列也来到了第三个 Web3 项目。若正在屏幕前浏览本篇文章的您,或是从 Web3项目一 开篇之作,一直跟随着我的步伐来到了本文,想必您对于 Web3 与 Web2 的区别,有了最为深刻的感触了! 当然咯,前提是您先前或者说是当

    2024年01月18日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包