区块链 | EVM深入理解学习EVM - 深入Solidity数据存储位置

Posted 区块链(Web3)开发工程师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链 | EVM深入理解学习EVM - 深入Solidity数据存储位置相关的知识,希望对你有一定的参考价值。

目录

目录

简介

EVM是一个工业工厂

为什么要在 Solidity 中理解 Evm 数据位置?

数据位置 → 概述

区块链知识系列 - 系统学习EVM-zkEVM

区块链知识系列 - 系统学习EVM(一)
区块链知识系列 - 系统学习EVM(二)
区块链知识系列 - 系统学习EVM(三)

今天我们来聊聊 zkEVM、EVM 兼容性 和 Rollup 是什么?

1. 什么是 Rollup

rollup顾名思义,就是把一堆交易卷(rollup)起来变成一个rollup交易,所有节点接收到这个rollup交易之后,不去执行被卷起来的逻辑,而只去接受这些逻辑的执行结果。因此这个rollup交易所需要的gas会远小于执行这些交易的gas。

2. EVM (以太坊虚拟机)

虚拟机的一些示例操作码:

  • 堆栈操作 —— PUSH1(向堆栈添加一些内容)
  • 算术运算 —— ADD(加数字),SUBTRACT
  • 状态操作——SSTORE(存储数据),SLOAD(加载数据)
  • 事务操作——CALLDATA、BLOCKNUMBER(返回有关当前执行事务的信息)

独特的需求

以太坊使用自定义虚拟机,而不是调整现有的 VM,因为它有独特的需求:

  • 每一个操作都必须有“成本”来防止滥用(因为所有节点都运行所有的交易)
  • 每一个操作必须确定(因为所有节点都将同意更改后的状态)
  • 我们需要专门针对区块链的概念(如智能合约,交易)
  • 一些复杂操作需要成为原语(如密码学)
  • 交易必须是沙盒的,没有I/O或者外部状态访问

3. 以太坊兼容性

然而,人们所说的“EVM 链”通常不仅仅只是镜像这个运行时环境。有几个主要规范始于以太坊并已成为事实上的全球标准:

  • Solidity(一种编译成 EVM 字节码的高级语言)
  • 以太坊的 JSON-RPC 客户端 API(与以太坊节点交互的规范)
  • ERC20/ERC721(以太坊代币标准)
  • ethers.js(一个与以太坊接口的网络库)
  • 以太坊的密码学(例如 keccak256 作为散列函数,ECDSA 签名在 secp256k1 上)

4. ZK-EVM

keccak256,它的电路形式比STARK友好的哈希函数(如Poseidon,Pedersen)大1000倍

选择一:证明 EVM 执行轨迹

选择二:自定义虚拟机 + 操作码支持

选项三:自定义虚拟机+转译器

StarkNet
这是 StarkWare 对 StarkNet 采用的方法,这是目前最先进的通用 Rollup。

zkSync

每个团队遵循的不同策略:

5. Vitalik 的 zkEVM 类型

最早要到 2022 年底,以太坊上才会有“生产级”智能合约 Rollup

由于这种不成熟的状态,对于需要在不影响以太坊安全性的情况下进行扩展的开发人员来说,特定于应用程序的Rollups仍然是最强大的选择。

参考: https://mp.weixin.qq.com/s/cFNNTAtrDwLZ35yzxDlLsA


往期精彩回顾:
区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
BTC系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列

以上是关于区块链 | EVM深入理解学习EVM - 深入Solidity数据存储位置的主要内容,如果未能解决你的问题,请参考以下文章

区块链知识系列 - 系统学习EVM

区块链知识系列 - 系统学习EVM

区块链知识系列 - 系统学习EVM

区块链知识系列 - 系统学习EVM

区块链知识系列 - 系统学习EVM

Polygon zkEVM测试集——创建合约交易