当前位置: 首页 > news >正文

区块链知识系列 - 系统学习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(四)-zkEVM

区块链知识系列 - 系统学习EVM(一) 区块链知识系列 - 系统学习EVM(二) 区块链知识系列 - 系统学习EVM(三) 今天我们来聊聊 zkEVM、EVM 兼容性 和 Rollup 是什么? 1. 什么是 Rollup rollup顾名思义,就是把一堆交易卷(rollup)起来…...

Leetcode.2341 数组能形成多少数对

题目链接 Leetcode.2341 数组能形成多少数对 Rating : 1185 题目描述 给你一个下标从 0 开始的整数数组 nums。在一步操作中,你可以执行以下步骤: 从 nums选出 两个 相等的 整数从 nums中移除这两个整数,形成一个 数对 请你在 nums上多次执…...

C++复习笔记10

1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。 3. list与for…...

leaflet 纯CSS的marker标记,不用图片来表示(072)

第072个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中使用纯CSS来打造marker的标记。这里用到的是L.divIcon来引用CSS来构造新icon,然后在marker的属性中引用。 这里必须要注意的是css需要是全局性质的,不能被scoped转义为其他随机的css。 直接复制下面的 v…...

Elasticsearch:使用 intervals query - 根据匹配项的顺序和接近度返回文档

Intervals query 根据匹配项的顺序和接近度返回文档。Intervals 查询使用匹配规则,由一小组定义构成。 然后将这些规则应用于指定字段中的术语。 这些定义产生跨越文本正文中的术语的最小间隔序列。 这些间隔可以通过父源进一步组合和过滤。 上述描述有点费解。我…...

无法决定博客主题的人必看!如何选择类型和推荐的 5 种选择

是否有人不能迈出第一步,因为博客的类型还没有决定?有些人在出发时应该行动,而不是思考,但让我们冷静下来,仔细想想。博客的难度因流派而异,这在很大程度上决定了随后的发展。因此,在选择博客流…...

数字化转型的成功模版,珠宝龙头曼卡龙做对了什么?

2月11日,曼卡龙(300945.SZ)发布2022年业绩快报,报告期内,公司实现营业收入16.11亿元,同比增长28.63%。来源:曼卡龙2022年度业绩快报曼卡龙能在2022年实现营收增长尤为不易。2022年受疫情影响&am…...

转换矩阵、平移矩阵、旋转矩阵关系以及python实现旋转矩阵、四元数、欧拉角之间转换

文章目录1. 转换矩阵、平移矩阵、旋转矩阵之间的关系2. 缩放变换、平移变换和旋转变换2. python实现旋转矩阵、四元数、欧拉角互相转化由于在平时总是或多或少的遇到平移旋转的问题,每次都是现查资料,然后查了忘,忘了继续查,这次弄…...

中国地图航线图(echarjs)

1、以上为效果图 需要jq、echarjs、china.json三个文件支持。以上 2、具体代码 DOM部分 <!-- 服务范围 GO--> <div class"m-maps"><div id"main" style"width:1400px;height: 800px; margin: 0 auto;"> </div> <!-…...

Python正则表达式中group与groups的用法详解

本文主要介绍了Python正则表达式中group与groups的用法详解&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧目录在Python中&#xff0c;正则表达式的group和groups方…...

c++练习题7

1&#xff0e;下列运算符中优先级最高的是 A&#xff09;> B&#xff09; C&#xff09; && D&#xff09;! 2&#xff0e;以下关于运算符优先级的描述中&#xff0c;正确的是 。 A&#xff09;!&#xff08;逻辑非&#x…...

MySQL学习

目录1、数据库定义基本语句&#xff08;1&#xff09;数据库操作&#xff08;2&#xff09;数据表操作2.数据库操作SQL语句&#xff08;1&#xff09;插入数据&#xff08;2&#xff09;更新语句&#xff08;3&#xff09;删除数据3.数据库查询语句&#xff08;1&#xff09;基…...

C语言(强制类型转换)

一.类型转换原则 1.升级&#xff1a;当类型转换出现在表达式时&#xff0c;无论时unsigned还是signed的char和short都会被自动转换成int&#xff0c;如有必要会被转换成unsigned int(如果short与int的大小相同&#xff0c;unsigned short就比int大。这种情况下&#xff0c;uns…...

搭建hadoop高可用集群(二)

搭建hadoop高可用集群&#xff08;一&#xff09;配置hadoophadoop-env.shworkerscore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml/etc/profile拷贝集群首次启动1、先启动zk集群&#xff08;自动化脚本&#xff09;2、在hadoop151,hadoop152,hadoop153启动JournalNode…...

CentOS升级内核-- CentOS9 Stream/CentOS8 Stream/CentOS7

官方文档在此 升级原因 当我们安装一些软件(对,我说的就是Kubernetes),可能需要新内核的支持,而CentOS又比较保守,不太升级,所以需要我们手工升级. # 看下目前是什么版本内核 uname -a# 安装公钥 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org# 添加仓库,如果…...

【基础篇】一文掌握css的盒子模型(margin、padding)

1、CSS 盒子模型(Box Model) 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。盒模型允许我们在其它元素和周围元素边框之间的空间放置元素…...

重生之我是赏金猎人-漏洞挖掘(十一)-某SRC储存XSS多次BypassWAF挖掘

0x01&#xff1a;利用编辑器的超链接组件导致存储XSS 鄙人太菜了&#xff0c;没啥高质量的洞呀&#xff0c;随便水一篇文章吧。 在月黑风高的夜晚&#xff0c;某骇客喊我起床挖洞&#xff0c;偷瞄了一下发现平台正好出活动了&#xff0c;想着小牛试刀吧 首先信息收集了一下&a…...

Wails简介

https://wails.io/zh-Hans/docs/introduction 简介 Wails 是一个可让您使用 Go 和 Web 技术编写桌面应用的项目。 将它看作为 Go 的快并且轻量的 Electron 替代品。 您可以使用 Go 的灵活性和强大功能&#xff0c;结合丰富的现代前端&#xff0c;轻松的构建应用程序。 功能…...

滑动窗口 AcWing (JAVA)

给定一个大小为 n≤10^6 的数组。 有一个大小为 k 的滑动窗口&#xff0c;它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子&#xff1a; 该数组为 [1 3 -1 -3 5 3 6 7]&#xff0c;k 为 33。 窗口位置最小值最大…...

vue小案例

vue小案例 组件化编码流程 1.拆分静态组件&#xff0c;按功能点拆分 2.实现动态组件 3.实现交互 文章目录vue小案例组件化编码流程1.父组件给子组件传值2.通过APP组件给子组件传值。3.案例实现4.项目小细节1.父组件给子组件传值 父组件给子组件传值 1.在父组件中写好要传的值&a…...

抖音视频批量下载效率革命:解放双手的douyin-downloader全攻略

抖音视频批量下载效率革命&#xff1a;解放双手的douyin-downloader全攻略 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 作为内容创作者&#xff0c;你是否曾为收集行业素材而重复点击下载按钮&#xff1f…...

AR.js实战指南:如何在Web浏览器中构建高效增强现实应用

AR.js实战指南&#xff1a;如何在Web浏览器中构建高效增强现实应用 【免费下载链接】AR.js Image tracking, Location Based AR, Marker tracking. All on the Web. 项目地址: https://gitcode.com/gh_mirrors/arj/AR.js 在移动设备普及的今天&#xff0c;增强现实&…...

OpenRocket:开源火箭仿真平台的技术架构与实践指南

OpenRocket&#xff1a;开源火箭仿真平台的技术架构与实践指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 价值定位&#xff1a;如何突破传统火箭设计…...

紧急通知:2024年Q3起欧盟EDPS已将差分隐私实现纳入DPIA强制审查项——Python开发者必须立即核查的4个代码检查点

第一章&#xff1a;差分隐私合规性背景与EDPS新规解读随着欧盟数据保护监管体系持续演进&#xff0c;欧洲数据保护监督机构&#xff08;EDPS&#xff09;于2024年7月发布《关于匿名化与假名化技术在公共部门应用的指导意见》&#xff0c;首次将差分隐私&#xff08;Differentia…...

【FreeRTOS实战入门】一、从CubeMX到第一个任务:手把手搭建FreeRTOS工程

1. 为什么选择FreeRTOS与CubeMX组合 第一次接触嵌入式实时操作系统时&#xff0c;很多人会纠结选择哪种RTOS。我当年在uC/OS-II和FreeRTOS之间犹豫了很久&#xff0c;最终选择了后者。原因很简单&#xff1a;FreeRTOS不仅完全免费开源&#xff0c;还有STM32CubeMX这个神器加持。…...

Java初学者项目需要哪些技术?

对于Java初学者&#xff0c;以下技术栈组合既能满足学习需求&#xff0c;又能完成完整项目开发&#xff1a;核心基础Java语法基础掌握变量、循环、条件语句面向对象三大特性&#xff1a;封装、继承、多态集合框架&#xff1a;$ArrayList$、$HashMap$等异常处理机制开发工具IDE&…...

scanf_s使用避坑指南:如何正确应对C6064警告(含C6054连带问题处理)

scanf_s安全使用全指南&#xff1a;彻底解决C6064与C6054警告 在Windows平台进行C/C开发时&#xff0c;使用scanf_s函数处理用户输入是常见场景。但许多开发者都会遇到两个令人困惑的警告——C6064和C6054。这些警告看似简单&#xff0c;实则暗藏玄机。本文将带你深入理解这两个…...

英雄联盟智能助手:5个提升游戏体验的核心技巧

英雄联盟智能助手&#xff1a;5个提升游戏体验的核心技巧 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾经在英雄联盟游…...

RimWorld开局定制利器:EdB Prepare Carefully深度应用指南

RimWorld开局定制利器&#xff1a;EdB Prepare Carefully深度应用指南 【免费下载链接】EdBPrepareCarefully EdB Prepare Carefully, a RimWorld mod 项目地址: https://gitcode.com/gh_mirrors/ed/EdBPrepareCarefully 在RimWorld的殖民挑战中&#xff0c;开局配置往往…...

HFSS建模进阶:如何高效使用布尔运算和局部坐标系(实战案例解析)

HFSS建模进阶&#xff1a;布尔运算与局部坐标系的高效实战指南 在微波器件和天线设计的数字世界里&#xff0c;精确的三维建模往往是成功仿真的第一步。当您已经掌握了HFSS的基础建模操作后&#xff0c;如何将建模效率提升到专业水平&#xff1f;本文将带您深入探索两个常被忽视…...