Alchemy 上的 Photon:压缩 Solana 数据,标准 RPC
作者:Alchemy

对于在 Solana 上构建钱包、交易所、索引器和消费级应用的团队来说,压缩状态正成为一种日益常见的模式。高规模的代币账户负载可以从 ZK 压缩中获得明显收益——而读取这类数据需要用到 Photon 方法,此前这通常意味着要接入独立的服务商或自行运行索引器。
因此,我们将完整的 Photon / ZK Compression 方法套件直接加入了 Alchemy 的标准 Solana RPC 端点。
为什么压缩在 Solana 上很重要
Solana 的账户模型很快,但将每一份状态直接写入链上的成本很高,对于铸造数百万代币、NFT 或积分资产的高规模消费级应用而言尤其如此。ZK 压缩改变了这条成本曲线:链上只保留一个紧凑的加密承诺——状态的"指纹"——以及用于校验更新的规则。而详细状态,也就是钱包和应用真正需要查询的部分,则存放在链下。
这对发行方和链本身都是好事,但对客户端来说未必如此。标准的 Solana RPC 节点并不知道压缩代币余额是什么。如果没有一个能监听压缩程序活动并重建底层状态的索引器,压缩资产对你的应用来说实际上是不可见的。
Photon 就是这样一个索引器。它监听涉及压缩协议的区块和交易,将详细状态重建为可查询的数据库,并通过一套标准的 RPC 方法接口对外暴露。对于展示余额的钱包和验证持仓的应用来说,Photon 正是让压缩数据变得可读的关键。
Photon 已成为 Solana 上压缩状态读取的通用接口。我们直接采用了它的方法接口,因此从任何兼容 Photon 的服务商迁移过来,只需要改一下 URL,而不需要重写代码。
工作原理
Photon 持续跟踪涉及压缩程序的区块和交易。每一条相关指令——铸造、转账、销毁、账户更新——都会依据链上承诺进行解码,产生的状态变化随后被应用到一个镜像压缩账户实际所代表内容的链下数据库中。链上承诺始终是唯一的事实来源;索引只是它的确定性映射,随时都可以从头重建。
Photon 方法与其他所有 Solana 调用位于同一个 Solana RPC 端点上。请求会根据方法名在内部路由:标准 JSON-RPC 调用会命中我们的 Solana 节点集群,Photon 方法则会命中我们的 Photon 集群。开发者只需通过一个 URL 就能访问全部功能。
我们衡量的指标
Alchemy 上的 Photon 读取方法在美国和欧盟地区都是性能最好的,在相同调用上持续保持比其他服务商快约 3 倍:
getCompressedTokenBalancesByOwner—— 美国地区 P50 8 毫秒 / P95 12 毫秒 / P99 20 毫秒(相比之下,其他服务商约为 30 / 45 / 65 毫秒);欧盟地区 P50 16 毫秒 / P99 53 毫秒。getCompressedTokenBalancesByOwner在大账户上的表现(按大规模压缩铸造集合排序的钱包)—— 美国地区 P50 10 毫秒 / P99 23 毫秒,长尾表现比其他实现紧凑约 3 倍。getCompressedTokenAccountsByOwner—— 美国地区 P50 10 毫秒 / P99 25 毫秒;欧盟地区 P50 18 毫秒 / P99 45 毫秒。端到端速度比其他方案快约 3 倍。getValidityProof—— 美国地区 P50 130 毫秒 / P99 200 毫秒,没有出现数秒级的长尾峰值。我们观察到其他服务商在负载下该方法的延迟会飙升到 3 秒以上——证明生成是该接口套件中最重的调用,这里出现不稳定的长尾会明显卡住钱包流程。
值得注意的是大账户场景下的长尾表现。拥有超大规模压缩铸造集合的钱包,正是能够暴露"支持 Photon"和"在生产规模下支持 Photon"之间差距的负载类型——而这也正是这些差距最关键的地方。
开始使用
Photon 方法现已在所有 Solana 套餐中通过标准 Solana RPC 端点提供。如果你已经在使用其他兼容 Photon 的服务商,迁移只需要改一下 URL。
Alchemy 新闻通讯
第一时间获取发布信息
订阅我们的新闻通讯
获取 Alchemy 的最新产品更新和资源
填写您的电子邮箱地址即表示您同意接收我们的营销通讯和产品更新。您确认 Alchemy 按照我们的隐私声明处理我们收到的信息。您可以随时取消订阅。


