⚙️ Solana 虚拟机(SVM) SVM
运行 Solana 区块链上智能合约和应用的执行环境(也就是那台引擎)。它最大的特点,是把大量交易同时处理,而不是一笔接一笔地排队来。
🏬 一句话版 — 多开几条收银通道
想象一家超市只开了一条收银通道。哪怕大家买的东西完全不一样,也得乖乖排在前面那位身后。以太坊的 EVM 处理交易就是这副样子:一次一笔,按顺序来。SVM 则一口气开出很多条通道。只要两位顾客没在抢同一件商品,他们就能同时结账。把互不冲突的交易并行处理,正是 SVM 的全部用意,也正因如此,Solana 才能以极低的手续费每秒清算成千上万笔交易。
🅿️ 为什么每笔交易都得「报清要动哪些货架」
并行带来的速度并不是白来的。系统只有在确定两笔交易不会抢同一份数据时,才敢让它们一起跑。所以在 Solana 上,每笔交易都必须事先说清自己会读哪些账户、写哪些账户——就好比进门先告诉收银员你动过哪几排货架。负责读取这些声明、把互不冲突的活儿分进不同通道的运行时,叫做 Sealevel。一条简单的判断标准:只读同一个账户的交易可以一起跑,但只要有一笔要写共享账户,它们就得排队。
🧩 程序与账户 — 代码和数据分开放
在 Solana 上,智能合约叫做程序(program),而程序是无状态的:代码和数据各住各的。程序只是一段可执行的逻辑,真正的状态全都待在程序去读写的另一批账户里。EVM 的做法恰好相反,把合约的代码和它的存储捆在一起。正是这种分离,让并行访问成为可能——只要知道一笔交易会碰哪些账户,就能判断它能不能和别人共用一条通道。
| 角色 | 是什么 |
|---|---|
| ⚙️ 程序(Program) | 智能合约的代码——无状态的逻辑,一般用 Rust 编写,编译成一种叫 sBPF 的字节码 |
| 📦 账户(Account) | 一个单独的存储槽,存放程序要读写的数据/状态 |
| 🛤️ Sealevel | 负责把互不冲突的交易分到多个 CPU 核心上同时跑的运行时 |
🌐 SVM 不只属于 Solana
SVM 是一套可复用的运行时,所以其他链也在它之上搭建。Eclipse 是一条跑 SVM、却把结算交给以太坊的 Layer 2;Sonic SVM 则是一条主打游戏的 SVM Layer 2。换句话说,「SVM」正在变成一种更通用的技术标准,就像当年「EVM」之于整个以太坊世界那样。
🚦 新手会在哪儿真正碰到它
- 🔄 在 Solana 的 DEX 上兑换 — 这次兑换就是一个跑在 SVM 上的程序
- 🖼️ 在 Solana 上铸造 NFT — 同样是一次程序调用,由同一台引擎处理
- 👛 使用 Solana 钱包 — 你签名的每一个操作,都由 SVM 来执行
- 💸 手续费低、确认快 — 之所以让人觉得又便宜又快,靠的正是这套并行设计
📊 关于吞吐量,常见说法是「每秒数千笔 TPS」,但具体数字会因数据来源和网络状况而异。任何一个硬数字都该当成估算看,而不是写死的事实。
❓ 常见问题
- SVM 不就是 Solana 版的 EVM 吗?
- 不是。EVM 一次只处理一笔交易,按顺序排队。SVM 则把互不触碰同一份数据的交易放在多个 CPU 核心上同时跑。这套并行设计才是核心区别,不是换个名字而已。
- SVM 只有 Solana 在用吗?
- 不是。SVM 是一套可复用的运行时,其他链也在它之上搭建。比如结算到以太坊的 Layer 2「Eclipse」,以及主打游戏的 Layer 2「Sonic SVM」。「SVM」正像当年的「EVM」一样,逐渐成为更通用的标准。
- 用 Solana 上的应用,需要懂 SVM 吗?
- 不需要。你在不知不觉中就用上了 SVM。Solana 上每一次兑换、铸造 NFT 或钱包操作,背后都是一个跑在 SVM 上的程序。这套并行引擎,正是这些操作通常又快又便宜的原因。