撰文:Lostin,Helius
编译:Glendon,Techub News
Solana 快速普及中常被忽视的一个关键因素是其安全、简洁且标准化的代币处理方式。与多数区块链不同,在 Solana 上创建代币无需部署自定义合约,所有操作均通过经过严格审计和实战验证的 SPL 代币程序(又称 Tokenkeg)完成——该程序由 Solana Labs 原生部署。这种设计使得铸币、销毁和转账等常规基础操作变得极为简单。例如,部署一个 Solana 代币仅需单条 CLI 命令即可实现。
SPL 代币程序是 Solana 上使用最为频繁的程序(仅次于系统程序)。过去六个月中,通过该程序每周创建的新可替代代币数量稳定在 20 万至 30 万之间,与 2023 年 9 月相比,这一数字增长了 20 倍,当时每周新的 SPL 代币发行量通常不到 1 万个。从总体来看,除 2023 年外,自 Solana 推出以来每年新发行代币数量均呈现显著增长(如下图所示)。

Solana 每周创建的可替代代币(数据来源:Andrew Hong,Dune)
SPL 代币转账的增长更为显著。过去三个月,每周转账量持续超过 6.5 亿笔,并在 7 月下旬达到 8.678 亿笔的峰值。这一数值较 2023 年 8 月初记录的每周 4940 万笔低点增长了 17.5 倍。

Solana 每周均代币转账量,(数据来源:Andrew Hong,Dune)
输入 P-Token
P-Token 是当前计算优化型 SPL 代币程序的替代方案,由 Anza 团队于今年 3 月通过「SIMD-0266:高效代币程序」(SIMD-0266: Efficient Token Program)首次提出。它通过完全向后兼容现有 SOL 代币标准,实现计算单元(CU)消耗的大幅降低。
由于 P-Token 完全复刻 SPL 代币程序的指令集和账户布局,因此可直接作为替代品使用。这意味着 P-Token 并非一个新的代币标准——客户端代码的功能与之前完全相同,无需任何修改即可无缝切换,在保持应用层和用户「零感知」的前提下释放「效率红利」。
而采用 P-Token 的动力与 Solana 对提高程序和框架效率的整体战略相契合,这与增加网络容量的工作形成协同,尤其是通过 2025 年将可用区块空间增加一倍的目标。
Solana 上专有 AMM 的最新成功,已经展现了较低计算成本的影响以及高效程序的优势。例如,HumidiFi 等平台上的预言机更新已超优化,仅需 143 个计算单元(CU)。BlueShift 推出的全新开源预言机程序 Doppler 则将成本进一步降低至仅需 21 个计算单元(CU)。
目前,P-Token 计划已经获得了领先生态系统开发商的大力支持。

技术内核:Pinocchio
P-Token 中的字母「P」源自 Anza 开发的 Pinocchio 库——这是一个专为 Solana 程序设计的优化后、高性能、零依赖库,用于替代标准的 solana-program crate。后者广泛使用零拷贝类技术来处理指令和账户数据。零拷贝技术使数据在读写时不会被复制到新的内存位置,而是直接通过指针访问状态。这种设计通过避免不必要的内存操作,既显著节省了计算资源,同时又降低了运行时开销。
作为「no_std」(在 Rust 中表示不使用标准库),Pinocchio 不依赖于 Rust 的标准库或堆分配,完全适配 Solana 虚拟机(SVM)的运行时环境,进一步精简执行流程,减少依赖,从而确保程序更精简、更快速。
效率提升
CU 是衡量 Solana 运行时执行成本的单位。最小运算(例如两个整数的加法或按位运算)消耗 1 个 CU。每条指令的 CU 上限为 20 万,每笔交易上限为 140 万个 CU。
P-Token 能够实现显著效率提升,将标准 SPL 代币交易的 CU 消耗降低约 95%(效率提升约 19 倍)。更快的执行速度带来更流畅的用户体验,同时释放的计算资源允许每个区块能够容纳更多交易,从而直接提升网络吞吐量。
目前,代币程序指令约占整个区块 CU 使用量的 10%。通过将其成本降至当前水平的 5%,P-Token 可以将这一比例从 10% 降至 0.5%,从而为其他交易释放额外 9.5% 的区块容量。P-Token 还使下游程序受益,通过降低整体 CU 使用量和跨程序调用(CPI)的成本,提升可组合性。
以下是 P-Token 指令与当前 SPL 代币程序相比的 CU 效率提升数据,以图表和表格形式呈现。

P-Token 与 SPL Token 程序的 CU 消耗对比(数据来源:Anza)


P-Token 与 SPL Token 程序的 CU 消耗对比(数据来源:Anza)

另一个值得注意的优化,主要由「no_std」实现,是将程序二进制大小从 131 KB 减少到 95 KB。
添加新指令
P-Token 建议在代币程序中添加原有 SPL 代币程序中不存在的三条新指令(「withdraw_excess_lamports」、「batch」和「unwrap_lamports」)。
提取超额 Lamports
与当前的 SPL Token-2022 实现类似,「withdraw_excess_lamports」允许回收铸币账户中被「冻结」的多余 SOL,通常因用户误将 Lamports 发送至代币铸币账户所致。
提现操作需要获得铸币机构的授权,铸币机构可以是标准铸币账户的指定签名者,也可以是多重签名账户的多重签名者。由于大多数 SPL 代币的铸币机构权限已被撤销,因此可以使用铸币账户本身作为签名主体,并使用铸币机构的私钥对指令进行签名,从而提供授权。
在所有 SPL 代币铸币账户中,约有 869,000 个账户持有的 SOL 超过了最低租金豁免门槛(0.0014616 枚 SOL)。总计有 176,961.5 枚 SOL 锁定在代币铸币账户中,按写稿时的价格计算价值约 3600 万美元。
锁定在代币铸币账户中的最大 SOL 通常与 Memecoin、遗留代币和主要蓝筹资产挂钩。锁定在代币铸币账户中的最大 SOL 金额是 Meme 币 BOOK OF MEME (BOME),其铸币账户持有 6328 枚 SOL。P-Token 的采用可能会解锁这些资金,为这些代币背后的团队带来意外收益。

按无法回收的 SOL 排名的前 10 名铸币账户数据(数据来源:Helius Labs、Dune)
Batch 处理
第二条新指令是「batch」,它简化了 CPI 与 P-Token 程序的交互。与多次调用 token 程序不同,「batch」允许在单次调用中执行可变数量的 token 指令。这意味着 1000 个单位的基本 CPI 成本仅需计算一次,而不是每条指令都单独计费。
其结果是,对于那些依赖于单条指令中的多个代币 CPI 的协议来说(如 Solana DeFi 的常见模式),计算资源使用量显著减少。例如,AMM 可能在一次合约交易中执行两次转账,或者流动性池存款可能同时涉及转账和铸币操作。通过使用「batch」处理,程序可以在这些场景中实现显著的计算单元(CU)节省。
Lamports 解包
新增的「unwrap_lampors」指令(最近在单独的 PR 中添加)可以将 lamports 直接转移到目标账户,省去创建临时原生代币账户步骤。
此前,从已包装的 SOL 账户中解包 Lamports 需要为接收者创建并关闭一个关联的代币账户(ATA)。此次更新后,可直接从原生 SOL 账户转出 Lamports,简化流程。
转账指令优化路径
对主网代币程序使用情况的分析显示,转账类指令的集中度很高,加起来占所有活动的近一半。使用频率最高的五条指令为:
-
transfer_checked(36.33%)
-
transfer(13.22%)
-
close_account(12.23%)
-
initialize_account3(9.98%)
-
initialize_immutable_owner(9.78%)
这种使用模式凸显了进一步优化 P-Token 转账并减少 CU 消耗的机会。
为了实现这些改进,P-Token 引入了一个自定义入口点,其中包含传输指令的快速路径,并更新了处理器,使其优先执行「sync_native」和「initialize_immutable_owner」。这些改进与使用模式高度契合,带来显著的 CU 效率提升。
日志记录
随着 P-Token 的引入,一个悬而未决的问题是是否保留当前的日志记录行为。最新的提案版本建议删除日志。在 Solana 上,日志是从程序中提取调试、监控和事件数据的主要机制。在现有的 token 程序中,日志极为精简,仅输出正在执行的指令名称,例如:

然而,这条看似很小的日志行「指令:<name>」却耗费了大约 103 个计算单元。实际场景中,这笔开销几乎与指令本身的计算量相当。例如,日志记录约占简单转账操作所需总计算量的 40%。
除了成本问题之外,这些日志并非始终可靠;它们可能被截断或日志注入攻击被篡改操纵,这可能会误导下游的解析器。但完全移除日志又可能破坏当前依赖日志的开发者和应用程序的工作流程。
移除日志将促使团队通过发布 IDL(接口定义语言)来增强程序行为可见性。例如,Anchor 现在默认为所有新程序发布 IDL,除非明确禁用,否则强制执行此操作。
审计进展
P-Token 程序的审计工作已在进行中,以确保完全向后兼容和安全性。为获得采用,该程序必须严格遵循当前代币程序的指令集和账户布局,精确复现其行为。任何偏差都可能构成风险,目前正通过全面测试和独立审计来解决这个问题。
审计机构 Neodyme 通过两次重放验证进行了等价性测试:将近期主网交易分别使用原始代币程序和 P-Token 各执行一次。结果证实输出完全一致的同时,显著节省了计算单元。
根据他们的分析,在 2025 年 8 月 3 日至 8 月 11 日期间,如果启用日志记录,P-Token 将减少 8.9 万亿 CU 的开销;如果禁用日志记录,则将减少 9.14 万亿 CU 的开销。这两个数字分别代表着总区块空间使用量节省了 12.0% 和 12.3%。
目前,P-Token 正接受 Zellic 的第二轮审计及 Runtime Verification 的正式验证。
推出的方式
部署流程
P-Token 的部署计划将采用分阶段推进的方式。首先,其将完成审计、模糊测试和正式验证。然后,我们将进行验证者治理投票,以决定是否采用 P-Token,并正式接受 SIMD 266 提案。之后,P-Token 功能将部署到集群中,并通过功能门控进行监控。
该程序将首先部署到指定账户(ptokN…UkkZ2)。一旦功能门控在周期边界上激活,所有验证节点的运行时将使用 Upgradable Loader v3 将现有的代币程序(Tokenkeg…VQ5 DA)替换为新的实现。
另一种方法是将 P-Token 程序部署到新地址,要求用户和应用程序手动迁移。然而,这种方式并不可取,因为它可能会阻碍采用,并削弱整体效益,因为许多用户会犹豫或不愿进行切换。
经济影响
采用 P-Token 是 Solana 一系列改进措施的关键组成部分,这些改进措施旨在大幅扩展 Solana 的整体容量,从而允许每个区块容纳更多交易。其他值得关注的升级包括将区块空间翻倍至 1 亿 CU,并将每个账户的 CU 上限从固定的 1200 万提高到区块容量的 40%。
目前,单个账户每个区块的 CU 上限为 1200 万。如下图 Anza 所示,每个区块中最活跃的账户经常会触及此上限。仅 P-Token 即可降低账户触及该限值的概率,从而减少热点状态瓶颈发生的频率。

每区块最活跃账户的 CU 使用量(数据来源:Brian Wong,Anza)
如今,几乎所有交易都包含优先级费用或 Jito 小费,以激励验证者将其纳入区块。由于优先级由每个 CU 的费用决定,因此,在其他条件相同的情况下,消耗较少 CU 的 P-Token 交易理论上在相同的费用或小费下将获得更高的优先级。话虽如此,由于所有 SPL 代币交易都将受益于 P-Token 升级,因此对交易优先级的总体影响仍有待观察。
结论
P-Token 的采用(假设其通过治理投票)将成为提升 Solana 效率与可扩展性的重要里程碑。通过大幅降低计算资源使用量并简化 CPI 交互,它不仅增强了网络中最常用程序的基础,还扩展了整体区块容量。若成功实施,P-Token 可为其他常用程序(例如关联代币账户(ATA)程序甚至系统程序)开发 Pinocchio 优化版本提供蓝图,从而为更快、更高效的运行奠定基础。


