摘要:Solana 靠 PoH 时间戳、并行执行的账户模型和本地化费用市场实现高吞吐。本文结合 Solana 中文文档和 Solana Explorer、SolanaFM 上的真实交易,讲清基础费、优先费与计算单元字段怎么核对。

Solana 快,不是靠某一个「黑科技」,而是几件设计叠在一起:用 Proof of History(PoH)给交易打上可验证的先后顺序,出块领导者(leader)提前排好,交易直接转发过去;再加上账户模型要求每笔交易事先声明要读写哪些账户,互不冲突的交易就能并行执行。手续费方面,Solana 按签名数收固定基础费,再按计算单元(CU)收可选的优先费,和以太坊的 EIP-1559 思路不同。本文用 Solana Explorer 上一笔真实转账把这些字段对上,不谈行情。

PoH 解决什么问题

分布式网络里最难的一件事是「大家对时间先后达成一致」。PoH 的做法是让 leader 连续不断地做 SHA-256 哈希:每一次的输出作为下一次的输入,这条哈希链只能顺序计算、不能并行加速,但任何人都能快速验证。交易被插进这条链的某个位置,就等于拿到了一个密码学时间戳。

  • 先排序、后投票:验证者拿到的区块本身已经带好了顺序,投票只需确认,不必再来回协商顺序。
  • leader 轮值表提前公开:钱包和 RPC 节点知道接下来是谁出块,交易直接发给即将出块的 leader,而不是先进入一个全网共享的内存池。
  • 最终性来自共识层:当前主网的共识是基于 PoH 的 TowerBFT,浏览器里的「Finalized」表示该区块已获得足够质押的投票确认。

需要特别说明的时间点:Solana 的新共识协议 Alpenglow 已于 2026 年 9 月 24 日、25 日分别在测试网和开发网完成切换,用 Votor 取代 TowerBFT,并去掉 PoH 的 tick 节拍。截至本文发布(2026-09-26),主网(mainnet-beta)仍在运行 PoH + TowerBFT,Anza 表示观察期结束后才迁移主网,具体日期以 Anza 和 Solana 官方公告为准。所以本文讲的 PoH 机制对当前主网成立,但它正处在被替换的过程中。

账户模型:一切都是账户

Solana 为什么快:PoH、账户模型与交易费怎么看-程序旅途
图1:Solana 官方中文文档「账户」:每个账户都有 lamports、data、owner、executable、rent_epoch 五个字段;只有账户的所有者程序可以修改其数据或扣减 lamports

Solana 把状态全部存在「账户」里,地址是 32 字节(通常显示为 Base58 字符串)。和以太坊不同,程序(智能合约)本身不存数据:代码在可执行的程序账户里,数据放在由该程序「拥有」(owner)的其他账户里。

字段 含义 在浏览器里对应
lamports 余额,1 SOL = 109 lamports Balance (SOL)
data 账户存的字节数据 Allocated Data Size
owner 哪个程序有权修改它 Assigned Program Id
executable 是否为可执行程序 Executable
rent_epoch 历史遗留的租金字段 一般不显示
Solana 为什么快:PoH、账户模型与交易费怎么看-程序旅途
图2:Solana Explorer 中一个普通钱包账户:Allocated Data Size 0 byte(s),Assigned Program Id 为 System Program,Executable 为 No(界面为英文)

普通钱包账户的 owner 是 System Program,数据长度为 0;而像 Token Program 这样的程序账户,Executable 会显示 Yes。每笔交易必须列出它会用到的全部账户并标明是否可写,运行时据此把不冲突的交易分配到多个线程并行执行(Solana 称之为 Sealevel)。这也是「热门账户」(例如某个热门交易对的池子)容易拥堵的原因:所有要写它的交易只能排队。

账户还要保持一个与数据大小成正比的最低余额(免租金门槛),账户被清空到 0 就会被回收,这和以太坊地址「永远存在」不一样。对比 TON 那种「每个合约一个账户、消息异步传递」的设计,可以看 TON 链怎么运作:分片、Jetton 与钱包地址格式。

交易费怎么算:官方公式

Solana 为什么快:PoH、账户模型与交易费怎么看-程序旅途
图3:Solana 官方中文文档「费用结构」:总费用 = 基础费用(每个签名 5,000 lamports,50% 销毁)+ 优先级费用(CU_price × CU_limit / 1M lamports,100% 归 validator)
  • 基础费:每个签名 5,000 lamports(参数 lamports_per_signature),一半销毁、一半给出块验证者。和交易复杂度无关。
  • 优先费:可选,= ceil(CU 单价 × CU 上限 ÷ 1,000,000)lamports,100% 给验证者。CU 单价单位是 micro-lamports,通过 Compute Budget 程序的 SetComputeUnitPrice 指令设置。
  • 注意是按 CU 上限收,不是按实际用量收。上限通过 SetComputeUnitLimit 设置;不设时,每条指令默认上限 200,000 CU,单笔交易最多 1,400,000 CU。
  • 无论交易成功还是失败,费用都会扣。

实例:用 Solana Explorer 验算一笔转账

下面这笔是 2026-09-26 14:29(UTC+8)在 slot 450,594,031 确认的普通 SOL 转账。Solscan 在截图环境下无法加载交易数据,这里改用官方的 Solana Explorer 和 SolanaFM,同一个签名在任何浏览器里查到的内容一致。

Solana 为什么快:PoH、账户模型与交易费怎么看-程序旅途
图4:Solana Explorer 交易概要:Status Success、Finalized;Fee ◎0.000011667;CUs Consumed / Limit 为 450 / 200,000;Transaction Version 为 LEGACY(界面为英文)
Solana 为什么快:PoH、账户模型与交易费怎么看-程序旅途
图5:SolanaFM 展开指令:#1 设置 CU 上限 200,000;#2 设置 CU 单价 33,333 micro-lamports;#3 System Program 转账 0.093248704 SOL(界面为英文)

代入公式:

  1. 基础费:1 个签名 × 5,000 = 5,000 lamports。
  2. 优先费:ceil(33,333 × 200,000 ÷ 1,000,000)= ceil(6,666.6)= 6,667 lamports。
  3. 合计:11,667 lamports = 0.000011667 SOL,与图4的 Fee 完全一致。

这笔交易实际只消耗了 450 CU,却按 200,000 的上限付了优先费。如果把上限设成接近实际用量(例如 450),同样的单价只需 ceil(33,333 × 450 ÷ 1,000,000)= 15 lamports 的优先费。这就是为什么成熟的钱包和交易机器人会先模拟交易、再按实际用量设置 CU 上限。

和以太坊的计费差在哪

对比项 Solana 以太坊(EIP-1559)
基础部分 每个签名固定 5,000 lamports Base Fee 随区块拥挤度浮动
销毁 基础费的 50% Base Fee 的 100%
加速手段 提高 CU 单价(优先费) 提高 Priority Fee
计量单位 计算单元 CU Gas
收费依据 优先费按 CU 上限 按实际 Gas 用量

以太坊那一侧的逐字段验算见 以太坊 Gas 费怎么算:Base Fee、Priority Fee 与 EIP-1559 字段对照。

实操:付 SOL 手续费前要准备什么

  1. 钱包里必须留一点 SOL 付手续费,只有 USDC/USDT 发不出交易;还要注意账户的最低余额要求,清空时钱包会提示。
  2. 从交易所提 SOL 时网络选 Solana。还没有账户可以用 币安 或 欧易 注册买入。
  3. 自托管钱包可用欧易 Web3 钱包(支持 Solana),创建时推荐码填 CHENGXULVTU,在 DEX 里 Swap 的步骤见 欧易 Web3 DEX 怎么 Swap。
  4. 拥堵时交易失败或迟迟不确认,一般是优先费不够或区块哈希过期,钱包重新签名发送即可;失败的交易同样会扣基础费。

想看 Solana 生态的背景资料,站内也有一篇早年的 灰度 Solana 研究报告全文,其中的数据反映的是当时情况,阅读时注意时间。

相关阅读

说明:费用参数引自 Solana 官方文档(2026-09-26 查阅),交易数据为截图时的链上记录。Solana 正在推进 Alpenglow 等协议升级,共识和参数可能变化,以官方文档为准。本文不构成任何投资建议。