![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
区块链之深入理解学习EVM
文章平均质量分 96
EVM是一个计算引擎,有助于智能合约的部署和操作。没有EVM,就不可能在以太坊协议上执行软件程序。因此,EVM是以太坊核心架构的关键部分。
了解EVM有助于理解EVM底层执行逻辑,提高智能合约代码执行效率及Gas费用优化
区块链(Web3)开发工程师
全栈工程师、区块链开发工程师、智能合约开发工程、Web3.0工程师
精通Wallet、Token、NFT、Exchange、DEFI、DAPP(web3开发)、智能合约、Gamefi、元宇宙开发。
大家有任何需要,欢迎私信或评论联系我!
展开
-
【区块链 | EVM】深入理解学习EVM - 深入了解 Solidity:堆栈
在深入研究EVM堆栈的特性之前,我们需要了解虚拟机架构的一些基本知识。虚拟机(VM)是在本地操作系统之上的一个高级抽象。它模拟了一个物理机,并使其能够在多个操作系统和硬件架构上运行同一个平台。基于寄存器的虚拟机基于堆栈的虚拟机在执行汇编语言定义的指令时,虚拟机如何存储、检索和使用参数(例如,算术运算的操作数)。用来存储这些参数的数据结构不同当涉及到作为EVM数据位置的 "堆栈 "时,有五个主要特征需要记住。原创 2023-06-07 08:59:46 · 1781 阅读 · 0 评论 -
【区块链 | EVM】深入理解学习EVM - 深入Solidity数据位置:Calldata
如果你熟悉web3.js或ethers.js,你可能看过使用或时作为参数传递的data字段。这是calldata(简称),或 "随着消息调用发送的数据"(无论我们用的是staticcall、合约调用,还是任何改变状态(区块链状态或合约状态)的实际交易,在这里都不重要)。黄皮书上,对calldata的解释?(第21页,第4.2节 > 交易 > 数据)。calldata是EVM中的一个特殊数据位置。它指的是在两个地址之间的任何消息调用交易中发送的原始十六进制字节。原创 2023-01-04 15:51:46 · 595 阅读 · 0 评论 -
【区块链 | EVM】深入理解学习EVM - 深入Solidity数据存储位置:存储
了解以太坊和基于EVM的链中的存储模型对于良好的智能合约开发至关重要。你可以在智能合约上永久地存储数据,以便将来执行时可以访问它。每个智能合约都在自己的永久存储中保持其状态。它就像*"智能合约的迷你数据库 "*,但与其他数据库不同,这个数据库是可以公开访问的。所有存储在智能合约存储器中的值可供外部免费读取(通过静态调用),无需向区块链发送交易。然而,向存储空间写入是相当昂贵的。事实上,就Gas成本而言,它是EVM中最昂贵的操作。存储的内容可以通过调用来改变。这种调用会改变状态。原创 2023-01-04 15:46:26 · 486 阅读 · 0 评论 -
【区块链 | EVM】深入理解学习EVM - 深入Solidity数据存储位置:内存
在介绍性文章深入Solidity数据存储位置中,我把EVM描述为一个工业工厂。在工厂的某些地方,你会发现由操作员控制的机器和机器人。这些机器将无法加工的大块钢铁/铝材分解成小块。我们可以用同样的例子来说明以太坊。EVM作为一个堆栈机器,它在32字节的字上运行。当EVM遇到大于32字节的数据(复杂的类型,如string,bytes,struct或数组),它不能在堆栈中处理它们,因为这些项目太大。因此,EVM需要把这些数据带到其他地方去处理。它有一个专门的地方:内存(memory)。原创 2023-01-03 17:08:50 · 1054 阅读 · 0 评论 -
【区块链 | EVM】深入理解学习EVM - 深入Solidity数据存储位置
作为一个对自己事业充满热情的人,一个工业炉的建造者和翻新者,我的父亲决定把我送到工业工厂去工作。非常大的工厂!熔化和制造钢铁和铝的工厂(Arcelor Mittal和Constellium)。你需要一辆车在工业工厂的不同部门之间来回穿梭,比如钢铁厂和轧钢厂。这是取自StackExchange的以太坊和EVM架构的代表图和EVM架构图一样,安赛乐米塔尔工业厂房的道路规划图一开始也是很难理解的!我还记得的是我第一次进入包含轧机的机库(看视频链接!)工业炉是如此巨大,从这头走到那头需要几分钟时间!原创 2022-12-27 15:49:33 · 1726 阅读 · 0 评论 -
【区块链 | EVM】深入理解学习EVM - 深入理解EVM操作码,让你写出更好的智能合约
如果你已经熟悉 EVM,请随时跳到下个部分:什么是 EVM 操作码?任何一个区块链都是一个基于交易的状态机。区块链递增地执行交易,交易完成后就变成新状态。因此,区块链上的每笔交易都是一次状态转换。简单的区块链,如比特币,本身只支持简单的交易传输。相比之下,可以运行智能合约的链,如以太坊,实现了两种类型的账户,即外部账户和智能合约账户,所以支持复杂的逻辑。外部账户由用户通过私钥控制,不包含代码;而只能合约账户仅受其关联的代码控制。EVM 代码以字节码的形式存储在虚拟ROM中。原创 2022-12-27 15:39:38 · 1701 阅读 · 0 评论