惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Register - Security
The Register - Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog
V
Visual Studio Blog
云风的 BLOG
云风的 BLOG
aimingoo的专栏
aimingoo的专栏
C
Check Point Blog
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
L
LangChain Blog
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security @ Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
人人都是产品经理
人人都是产品经理
H
Hacker News: Front Page
L
Lohrmann on Cybersecurity
T
Troy Hunt's Blog
T
Threat Research - Cisco Blogs
A
About on SuperTechFans
T
Threatpost
AWS News Blog
AWS News Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
Tor Project blog
Google Online Security Blog
Google Online Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tenable Blog
W
WeLiveSecurity
博客园 - 叶小钗
K
Kaspersky official blog
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
M
MIT News - Artificial intelligence
Hacker News - Newest:
Hacker News - Newest: "LLM"
Engineering at Meta
Engineering at Meta
有赞技术团队
有赞技术团队
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Secure Thoughts
小众软件
小众软件
D
Docker
爱范儿
爱范儿
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News and Events Feed by Topic
S
Schneier on Security
博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net

smallyu的博客

为什么买的加密货币一定要去中心化 Polkadot 的 Existential Deposit 机制错在哪里 利息,套利,交易策略,金融市场 LayerZero 从来不挑战比特币的地位 默认参数引起的以太坊节点运行错误 硬件钱包与资产安全 预测市场比币圈更赌场 为什么去中心化的跨链桥不可能实现 我对于 AI 时代的答案 不要投资任何隐私币 区块链技术世界的三大真理 以太坊 AA 钱包的致命问题是什么 基于 AI 语义执行的 MCP 区块链的设计 一个集成 Geth 和 CometBFT 的兼容层 我的加密货币定投策略(二) DeFi 基础: 理解 AMM 定价机制 Go 语言 GMP 调度器的原理是什么 Web3 项目分析计划 对 Psyche Network 项目的分析 continuation 教程: 理解 CPS 如何开发一个比特币符文(Runes)协议 比特币脚本开发教程 我从王垠的计算机科学视频班学到了什么 区块链技术面试题(2025年版) Rust 语言容易让新手困惑的一个“过度优化” Solana 智能合约开发教程 (1) 尝试开发一个最小 EVM 虚拟机 基于 ZK 的链上身份系统设计 一个 Web3 打赏系统的设计 鼓吹 Cursor 的人技术能力都差 关于 Code Review 的礼节 假如启动一个新的以太坊 PoS 网络 发行加密货币的最好方式 所有 BFT 共识的区块链都是中心化的 对 2025 年区块链行业的预测 Restaking 项目的经济难题 如何看懂任意区块链项目的技术架构 为什么不要做以太坊的二次开发 为什么不要做智能合约开发和 DeFi 开发 我的加密货币定投策略(一) PoS 类型的区块链如何处理分叉 Ethereum Casper 为什么需要 EIP-7251 区块链中的 PBFT 不需要第二次投票 开发者的思维方式 发币的核心要点 炒币投资的小 tips 为什么说 PoW 比 PoS 更加去中心化 牛市对普通人来说意味着什么 如何健康地远程工作 为什么比特币不用概率加密函数 程序员的 “服从权威” 心理 区块链技术面试题 如何区分公有链和联盟链 对 Layer 2 项目创业想法的回复 对区块链共识机制的理解 Pebbling Game 鹅卵石游戏 PDP 文件证明的局限性 不要小瞧 ChatGPT 为什么炒币不是一个好主意 一种在区块链上生成随机数的机制 为什么以太坊的私钥计算不可逆 关于以太坊的私钥碰撞 “猜均值的2/3” dApp 游戏设计 Proof of Storage/Space/Replication 的区别 Proofs of Retrievability 文件证明的含义 对 S-PDP 文件证明的示例和解释 我的加密货币交易机器人 对区块链行业的见闻 随机确认块的共识机制 VRF + BFT 共识引起交易失败的问题 为什么要重视编程思想 对 Web 3.0 的理解 GitBook 好用吗? 一种区块链节点存储扩容的方式 一种基于“自我中心主义”的共识机制 链表常见算法题及解析 基于 Multi-Linked List 的区块链设想 理解哈希函数与序列化 联盟链比公有链差在哪儿 在 Dijkstra 算法中保存路径 为什么数字货币使用区块链是政治问题 区块链:下一代数字身份认证体系的基石 网页技术能实现 3D 建模吗? 给区块链一个定义 从 Erlang 开始了解 Actor 模型 一种侧边导航栏的交互方式 Rust 的 ownership 是什么? Haskell 中的 Monad 是什么? 浅析 Libra 背后的区块链技术 对区块链的理性认识 Rust 基础语法概述 基于 Java 的爬虫框架 WebCollector Kotlin:简化版的 Scala JavaScript 有关联数组吗? 主流编程语言的异常处理机制 Go 语言基本语法 Scala 语法基础 用 Scala 改写 Java 浅度实践 Python 获取海贼王更新信息 HTML5 音乐可视化
RISC-V 虚拟机无法代替 EVM 虚拟机
2026-04-24 · via smallyu的博客

2026-04-24

  1. RISC-V 太复杂,非常依赖于虚拟机沙盒环境的标准化,但是现在还没有统一的规范
  2. EVM 经过多年百亿级别金融生态的磨练,从开发到审计已经比较成熟,切换到 RISC-V 的成本很高
  3. RISC-V 虚拟机的冯诺伊曼税更高、确定性更脆弱

Gavin Wood 当年在设计 EVM 的时候,会面临两个问题:基于栈还是基于寄存器?显然实际上的 EVM 是基于栈的,也许是出于上线迭代等外部因素影响,也许是出于 Gavin 当时的历史局限性。后来 Gavin 离开了以太坊、创建了 Polkadot 之后,一开始把 Polkadot 的虚拟机设计为 基于 WASM 虚拟机,最近又转向了基于 RISC-V 指令集的、用于实现通用计算的虚拟机。也就是说,Gavin 抛弃了基于栈的 EVM 的老路,最终转向寄存器结构的 RISC-V。

EVM 底层是 256 位的无符号数字,每一条指令、每一个数据,都会拆解为 256 位的数字来表示。至于为什么是 256 位,可能因为以太坊是从比特币演变来的,而哈希算法 Keccak-256 和签名算法 secp256k1 等都沿用了比特币的设计,它们的输出都是 256 位,为了无缝适配这些加密算法,就采用了 256 位的字长。

我们平时使用的电脑 CPU,大都是 64 位的。CPU 经历过 32 位的时代,但是由于在地址寻址的方式下,32 位最多表示 2^32 Byte = 4 GB 的内存大小,已经跟不上使用需求,所以现在的 CPU 已经都是 64 位的。

这里有两个数字,EVM 是 256 位的,CPU 是 64 位的。这也就意味着,每一个 EVM 的指令操作,到了 CPU 上都至少需要 10 个指令来完成,模拟一个栈内存、计算低位、计算高位、把结果推回栈等,这一套动作下来,256 位的 EVM 指令在执行效率上,比使用 64 位 CPU 指令,慢大概 10 倍到 100 倍。

RISC-V 是一个精简的指令集架构标准,包含有 64 位的 RISC-V 虚拟机指令标准。这就意味着,通过 JIT 编译,RISC-V 的指令几乎可以 1:1 映射到现代 64 位的 CPU 上,执行效率接近于 CPU 本身的效率。

Arbitrum 有过一次叫 Stylus 的 版本升级,内容是用运行于 WASM 的虚拟机性能与 EVM 虚拟机的性能进行对比,官方的宣传口径是,一个简单的加法 ADD 运算,在 WASM 上的 Gas 消耗比在 EVM 上少 150 倍,而这 150 倍就是指令集转换带来的额外开销。WASM 的性能比 RISC-V 差,因为 WASM 从设计之初是在浏览器环境运行一个多编程语言的虚拟机,所以合理推测,基于 RISC-V 的指令,性能上也要好过 EVM 至少 100 倍。

从指令执行的效率方面来看,RISC-V 绝对要好过 EVM 太多。

另一方面,RISC-V 非常适合做通用计算,比如 cartesi 这个项目,相当于直接在每一个链上节点本地,运行一个小型的 Linux 系统,这个系统内能运行的,就不只是智能合约,而可以包括各种各样进程级别的程序,这能释放很大的想象空间。

很多 zkVM 也都是基于 RISC-V 在做,毕竟要给一个 256 位的虚拟机以及各种复杂的指令集开发 ZK 电路,心智负担太大了,而 RISC-V 是一个精简指令集,只有比较底层的指令,比 zkEVM 实现起来要更加容易并且通用。

至于 EVM 方面,也有在性能方面做出卓越突破的链比如 Monad,实现了真正的并行 EVM。只不过 Monad 提高性能的方式并不是从比较底层的指令集层面去做,而是乐观执行、有冲突再回滚的方式,以及实现了专用的数据库而不是通用的 KV 数据库来提高磁盘 IO 效率,整体结合下来,让 EVM 的执行速度有了显著提升。

那么至此可以看到的是,基于 RISC-V 指令集的虚拟机、智能合约语言,有着种种性能上的优点。

是不是意味着 RISC-V 是替代 EVM 的最佳趋势呢?显然也不是。

生态方面的护城河当然很重要,RISC-V 属于彻底抛弃了 EVM 体系、自成一套,支持各种编译型的编程语言。那也就意味着,包括开发者和审计公司,在 EVM 上踩过的坑,需要推倒重来。这是谁都不愿意看到的事情。EVM 的简单带来了性能上的劣势,也让安全风险和执行逻辑上的排查更加可控,因为是栈结构,Solidity 语言里连指针操作都没有,确定性非常高。而 RISC-V 的寄存器模式,合约的 ABI 不再是字节码而是 ecall ABI,里面涉及到内存分配、有堆内存、有垃圾回收,复杂度非常高。

而为了解决确定性的问题,一般的做法是在 RISC-V 支持的编程语言上,再阉割一层,用一个沙盒环境来执行合约逻辑,并且禁用一些语言特性,从沙盒外部能够看到一个确定性的结果。这当然就会牵扯到,每一个项目都在定义自己的沙盒标准,没有业界统一的方案。

再就是很多项目方宣传口径上的问题,放大了 RISC-V 的性能优势,刻意在忽略 RISC-V 模式带来的冯诺伊曼税的问题。在 EVM 上,修改余额就是一个 SSTORE 指令,EVM 天然知道什么是账户、什么是余额,要去数据库的什么位置寻找数据。而 RISC-V 过于通用,如果要修改余额,可能需要先分配内存、处理语言运行时的边界检查、写入数据、释放内存等,虽然单个指令的执行效率高了,但是反而在业务逻辑上消耗了更多的 CPU 周期。

总的来说,RISC-V 虚拟机还无法代替 EVM 虚拟机。