ERPC 在 Solana RPC 中新增 Jet Analytics — 基于 Jetstreamer 实现,强化历史数据获取、回填、恢复与分析

ERPC 在 Solana RPC 中新增 Jet Analytics — 基于 Jetstreamer 实现,强化历史数据获取、回填、恢复与分析

ERPC 在 Solana RPC 中新增 Jet Analytics — 基于 Jetstreamer 实现,强化历史数据获取、回填、恢复与分析
ELSOUL LABO B.V.(总部:荷兰阿姆斯特丹;CEO:Fumitake Kawasaki)与 ERPC 的运营方 Validators DAO 今日宣布,ERPC 已在 Solana RPC 中新增 Jet Analytics & Indexed RPC,并借助 Jetstreamer 实现提供新的支持方法,使历史数据获取、backfilling、故障后恢复以及分析基础设施的构建更易推进。
通过本次更新,使用 ERPC Solana RPC 的开发者不仅可以使用从现在开始收集的数据,还可以利用 indexes 中保留的历史数据,更轻松地推进应用开发、backfilling、故障后恢复、分析、监控和验证。
支持的方法包括 getTransactionsForAddressgetTransfersByAddressjetTopProgramsjetSlotStatsjetTpsTimeseriesjetEpochSummaryjetProgramStats。这些都是通过 ERPC 运营的、源自 Jetstreamer 的 self-hosted index 与 gateway 提供的 Jet Analytics & Indexed RPC 方法。
本次更新在全部 ERPC Solana RPC plans 中可用。现有用户也无需另外签约专用 plan,即可通过当前的 ERPC API key 和 Solana RPC endpoint 试用 Jet Analytics & Indexed RPC。
ERPC Dashboard: https://dashboard.erpc.global/zh ERPC 官方网站: https://erpc.global/zh

可直接从 ERPC Dashboard 的 Docs 试用 Jet Analytics

ERPC Jet Analytics & Indexed RPC
在 ERPC Dashboard 中,开发者除了可以管理 Solana RPC 的使用情况和 plans 之外,还可以通过 Docs 流程打开 Solana RPC Documentation,确认 Jet Analytics & Indexed RPC 的各个方法。开发者可以在确认每个方法的 request 格式、parameters、response 格式和使用注意事项的同时,直接开始验证。
本次新增的 Jet Analytics,在现有的 Solana RPC 使用流程中加入了历史数据与 index-backed analytics 的获取方式。开发者可以在确认 ERPC Solana RPC endpoint 的同时,使用同一个 API key、同一个 Dashboard 和同一套文档流程,获取历史 transactions、token transfers、program 统计、slot 统计、TPS 趋势和 epoch summary。
由此,在 Solana 应用的开发初期、分析基础设施的构建、现有 indexer 的补充、故障后恢复、历史期间的验证、面向用户的历史展示、监控系统的重新同步等场景中,开发者可以更容易地在 ERPC 的 Solana RPC 平台上处理所需的历史数据。

通过 Jetstreamer 实现强化历史数据获取

Solana RPC 作为获取当前状态和近期信息的基础设施被广泛使用。然而,在应用开发和分析基础设施的实际运营中,仅靠当前状态往往不够。开发者经常需要在事后获取已经发生的 transactions、地址级历史、token transfers、特定 program 的执行情况、各 slot 的 transaction 数、epoch 级活动量等。
启动新应用时,开发者不仅需要「从现在开始能获取的数据」,还需要「到目前为止已经发生的数据」。对于钱包、Explorer、交易应用、分析基础设施、监控系统、bots 和 AI agents 而言,如果只从当前开始收集数据,就无法掌握过去的使用情况、交易历史、token 流动、program 使用情况,以及作为异常检测前提的比较数据。
以往,这种 backfilling 带来很大的负担。一般 RPC 主要用于获取最新状态和近期数据,要快速获取较旧的 archive 数据并整理成应用易用的形式,往往需要专用 indexer、archive node、独立数据库以及长时间的重新获取处理。结果是,许多开发团队虽然可以从现在开始收集数据,却很难在已经持有历史数据的状态下启动应用开发。
ERPC 此次把基于 Jetstreamer 实现的 self-hosted index 集成到 Solana RPC 基础设施中,提升了历史数据获取的实用性。由此,开发者不仅可以收集从现在开始的数据,还可以利用 indexes 中保留的历史数据进行 backfilling、重新获取、恢复与分析。

能够使用历史数据,将改变应用开发的起点

历史数据的快速获取,并不仅仅意味着能够查看旧信息。在开始新事物时,能够在已经持有历史数据的状态下启动开发,将直接影响应用设计、分析精度、用户体验以及运营恢复。
例如,钱包和 Explorer 需要在事后获取地址的历史 transactions 和 token transfers,并向用户展示过去的活动历史。分析基础设施需要确认某段时期内哪些 programs 被频繁调用、哪个 slot 处理了多少 transactions、TPS 如何变化,不仅是当前情况,还包括过去期间。
此外,当 indexer 或内部数据库发生意外事故时,历史数据的获取性能也很重要。即使因数据库损坏、ingestion 处理停止、部署时的 bug、存储故障或错误的 migration 而丢失某段时期的数据,只要能重新获取历史数据,就更容易补全缺失的时期,将服务恢复到原先的状态。
对 Solana 应用而言,重要的不仅是实时数据的接收速度,还包括随后的确认、保存、补充、重新获取、分析与监控等一系列数据处理流程。ERPC 的 Jet Analytics & Indexed RPC 正是为了支撑这部分后段历史数据处理与运营恢复的扩展。

通过 getTransactionsForAddress 获取地址级历史 transactions

getTransactionsForAddress 是用于获取与特定地址相关 transactions 的 Indexed RPC 方法。通过指定目标地址,并组合 slot、blockTime、signature、status 等条件,开发者可以获取地址级的历史数据。
该方法支持 transactionDetails: "signatures"transactionDetails: "full" 两种获取模式。signatures 模式返回 signature、slot、transactionIndex、err、memo、blockTime、confirmationStatus 等 index row。full 模式在执行相同 index lookup 的基础上,对每个 transaction 组合详细信息获取,同时返回 transaction、meta 和 version。
对于钱包、Explorer、监控系统、用户支持、交易历史确认和内部核对来说,能够快速获取与特定地址相关的历史 transactions 至关重要。在新产品想要展示历史记录、希望补充现有 indexer、或在故障后重建特定地址历史时,该方法同样有效。
response 中包含 paginationToken,可用于获取下一页。同时还包含 windowStart,可确认当前 index 中保留的最旧 slot。这样一来,客户端可以在判断该 endpoint 可获取范围的同时,设计历史数据获取流程。

通过 getTransfersByAddress 获取 token transfers 的历史数据

getTransfersByAddress 是用于获取与特定 owner address 相关的 SPL Token v1 转账数据的 Indexed RPC 方法。通过组合 inbound、outbound、any 方向指定,以及 counterparty address、mint、amount、blockTime、slot 等条件,开发者可以获取钱包和分析基础设施所需的 token transfers 历史数据。
每个 row 包含 signature、slot、blockTime、type、fromUserAccount、toUserAccount、fromTokenAccount、toTokenAccount、mint、amount、decimals、uiAmount、feeAmount、feeUiAmount、transactionIdx、instructionIdx、innerInstructionIdx 等字段。如果一个 transaction 包含多个 Token program call,每个 call 将作为独立的 row 处理。
solMode 可在 merged 模式与 separate 模式之间选择:merged 模式将 wSOL 与 native SOL 同等处理,separate 模式则将 wSOL mint 分离处理。在钱包和资产组合展示中,merged 模式通常更易处理;而在分析用途中,则可以通过 separate 模式区分 SOL 与 wSOL 的流向。
token transfers 数据在钱包、资产组合、交易历史、会计、监控、alerts、资金流动分析、bot 验证和用户支持中都很重要。在希望事后重建某段时期的资产流动,或补充 indexer 缺失期间的场景中,该方法同样有效。

通过 jetTopPrograms 掌握 program 使用情况

jetTopPrograms 是以排行榜形式获取指定时间范围内调用次数较多的 programs 的方法。通过指定 since、until、includeVotes、limit,开发者可以获取每个 program 的 invocations、errors 和 total_cus。
在 Solana 上,掌握某段时期内哪些 programs 被频繁使用,有助于网络分析、应用分析、负载趋势确认、bot 与交易应用的目标筛选,以及监控目标的提取。仅看 transaction 数无法得知哪些 programs 实际被频繁调用、消耗了多少 compute units、发生了多少 errors。
通过 jetTopPrograms,开发者可以高粒度地确认特定时期内 Solana 上的 program activity。它可用于研究新的应用领域、发现备受关注的 programs、识别负载较大的 programs、与过去期间进行比较,以及把握整个网络的活动趋势。

通过 jetProgramStats 进行 program 级时序分析

jetProgramStats 是针对特定 program ID 按时间 bucket 获取 invocations、errors 和 total_cus 的方法。通过指定 programIdBase58、since、until、bucketSec,开发者可以按时序确认目标 program 的使用情况。
该方法适用于确认特定 program 的使用量增加、错误增加、compute units 消耗变化、事件发生前后的活动量、发布后的使用情况、异常调用激增等用途。以时序方式查看 program 级活动,可以掌握仅靠单次汇总无法看到的变化。
对于交易应用、DeFi、NFT、游戏、DePIN、AI x Crypto、监控系统和分析 dashboards 来说,确认特定 program 的活动何时增加、在哪段时期 errors 增多、compute units 消耗如何变化都很重要。jetProgramStats 正是为了让这种 program-level analytics 更易于通过 ERPC 的 Solana RPC 流程处理的方法。

通过 jetSlotStats 确认 slot 级处理情况

jetSlotStats 是针对单个 slot 或 slot range 获取 transaction_count、vote_transaction_count、non_vote_transaction_count、block_time 的方法。该方法支持通过指定 slot 进行单 slot 获取,或通过 fromSlot 与 toSlot 进行范围获取。
在 Solana 分析中,重要的是按 slot 级确认处理了多少 transactions,其中包含多少 vote transaction 和 non-vote transaction。仅看单纯的 transaction 总数,无法区分源自应用的 activity 与 consensus 相关的 vote activity。
通过 jetSlotStats,开发者可以按 slot 级确认特定 slot 或特定时期的处理情况。它可用于故障调查、性能分析、各 slot 的 activity 分析、backfill 范围确认、数据缺失验证、监控系统的基础数据获取。

通过 jetTpsTimeseries 获取 TPS 趋势

jetTpsTimeseries 是针对指定时间范围按 bucket 获取 total_tps 和 non_vote_tps 的方法。通过指定 from、to、bucketSec,开发者可以按时序确认 Solana 的 transaction throughput。
TPS 仅以单一数值呈现时容易产生误导。它会随时段、网络负载、应用 activity、vote transaction 比例和拥堵情况而大幅波动。jetTpsTimeseries 可以分别获取 total TPS 与 non-vote TPS,因此更容易现实地把握源自应用的 activity。
对于分析 dashboards、网络监控、研究用途、基础设施负载分析、应用 activity 比较、特定时期的流量验证而言,按时序处理 TPS 非常重要。通过 jetTpsTimeseries,开发者可以通过 ERPC 的 RPC 流程获取 Solana 历史期间的 throughput 趋势。

通过 jetEpochSummary 进行 epoch 级汇总

jetEpochSummary 是针对指定 epoch 获取 slots、non_vote_txs、vote_txs、total_txs、first_block_time、last_block_time、distinct_programs、program_invocations 等汇总信息的方法。
epoch 级汇总与短期的 slot 或 transaction 确认不同,对于以较大时间单位掌握 Solana 网络的活动量非常有效。开发者可以确认某个 epoch 在 index 中存在多少 slot、处理了多少 vote transaction 和 non-vote transaction、调用了多少 programs。
在研究、报告、网络分析、长期使用趋势确认、应用 activity 的时序比较、基础设施负载预测等场景中,epoch 级汇总很有用。jetEpochSummary 正是为了让这种大尺度分析更易在无需大量获取个别 transactions 的情况下开始的方法。

从 getTransaction 加速到历史数据获取的扩展

ERPC 此前曾大幅改进围绕 Solana RPC 的 getTransaction 的历史 transaction 获取性能。getTransaction 是针对单个 transaction signature 获取详细信息的基本方法,被 Explorer、钱包、indexing、分析基础设施、监控系统、backend API、交易历史确认等频繁使用。
本次的 Jet Analytics & Indexed RPC 进一步扩展了这一方向。getTransaction 的加速支撑的是特定 transaction 的详细信息获取。而本次的 Indexed RPC,则是用于在搜索、汇总、分页的同时获取地址级历史数据、token transfers、program activity、slot stats、TPS timeseries、epoch summary 等多种历史数据的扩展。
在 Solana 应用中,不仅需要确认单个 transaction 的详细信息,还需要一并获取历史期间的活动,并将其纳入应用侧的 database、dashboard、monitoring、analytics 和 AI agent。ERPC 通过将 getTransaction 这类基本方法的改进与 Jet Analytics & Indexed RPC 这类 index-backed method 的新增相结合,提升了历史数据获取的实用性。

可在确认当前 index 保留范围的同时使用

Jet Analytics & Indexed RPC 基于 ERPC 运营的 self-hosted index 提供。因此,各 endpoint 能处理的历史数据范围取决于当前 index 中保留的范围。getTransactionsForAddressgetTransfersByAddress 会返回 windowStart,可确认当前 index 中保留的最旧 slot。
开发者可以通过 windowStart 判断该 endpoint 可获取的范围。在设计历史数据的 backfilling、重新获取、恢复处理时,重要的是组合目标时期、paginationToken、sortOrder、limit、filters 和 windowStart,按阶段获取所需范围。
本次的 Jet Analytics 是为了让历史 transactions、token transfers、program 执行统计、slot 统计、TPS 趋势和 epoch 汇总更易处理的扩展。在应用侧,根据用途组合 standard RPC、getTransaction、Indexed RPC、WebSocket、Geyser gRPC、Shredstream 进行设计非常重要。

在 Explorer、钱包、indexer、分析基础设施、监控、AI agent 中的使用

Jet Analytics & Indexed RPC 可用于 Solana 应用的多种场景。
在 Explorer 和钱包中,可用于地址级历史 transactions、token transfers、过去交易确认、面向用户的历史展示。在交易应用和 DeFi 中,可用于特定地址或特定 mint 的历史资金流动、program activity、交易成功与失败的趋势、运营层面的验证。
在 indexer 和分析基础设施中,可用于新建时的 backfilling、缺失期间的补全、历史期间的重新汇总、与现有数据库的核对、故障后的恢复。在监控系统中,可使用 slot stats、TPS timeseries、program stats、epoch summary 来确认通常状态下的基准值、异常检测、负载趋势、特定 program 的 activity 变化。
对 AI agents 和自动化运营系统来说,历史数据同样重要。AI agent 通过从 Solana RPC 获取当前状态,并从 Jet Analytics & Indexed RPC 获取历史 activity、transaction history、token transfers、program stats、TPS trend,可以提供更具上下文的报告、监控、通知、调查与开发支持。

在同一流程中使用 Solana RPC、WebSocket、Geyser gRPC、Shredstream 和 Indexed RPC

ERPC 提供 Solana RPC、WebSocket、Geyser gRPC、Shredstream、VPS 和 bare metal servers,作为面向 Solana 的专用运营基础设施。随着本次 Jet Analytics & Indexed RPC 的加入,不仅实时数据分发,历史数据、汇总数据和分析数据也都可以通过同一个 Solana RPC 流程更轻松地处理。
Solana 应用仅靠实时订阅是不够的。它们还需要 getTransaction 来事后确认实时检测到的事件、Indexed RPC 来补充历史期间、用于面向用户屏幕的历史数据、作为监控基准的 slot stats 和 TPS timeseries,以及 program activity 的分析。
ERPC 并不把这些视为分散的功能片段,而是把它们作为 Solana 应用实际所需的数据路径来处理。开发者可以从 ERPC Dashboard 确认 Solana RPC endpoint,在 Docs 中试用各方法的同时,验证当前 workload 所需的数据获取路径。

在全部 ERPC Solana RPC plans 中可用

本次新增的 Jet Analytics & Indexed RPC 可在全部 ERPC Solana RPC plans 中使用。现有用户也无需另外签约专用 plan,即可通过当前的 Solana RPC endpoint 试用新方法。
在 ERPC Dashboard 中,开发者可以确认 Solana RPC 的使用情况、plan 管理、API key 和文档流程。Jet Analytics & Indexed RPC 的各个方法已被添加到 Solana RPC Documentation 的 Jet Analytics & Indexed RPC 章节中,开发者可以在确认 request 格式、parameters、response 格式的同时进行验证。

作为 Solana 专用基础设施扩展历史数据获取与分析功能

ERPC 改进 Solana RPC,并不是把它作为一个简单的 API endpoint,而是作为支撑 Solana 应用执行品质的基础设施。在 Solana 中,HTTP RPC、WebSocket、Geyser gRPC、Shredstream、SWQoS、服务器位置、validator 质量、网络路径、处理 node 性能、indexing、历史数据获取都会直接影响应用的速度、稳定性、恢复能力与分析能力。
本次 Jet Analytics & Indexed RPC 的加入,是扩展 Solana 应用所需数据获取范围的改进。通过让当前状态、实时事件、历史 transactions、token transfers、program activity、slot stats、TPS timeseries、epoch summary 都可以在同一个开发流程中处理,ERPC 帮助开发者降低组合多个基础设施服务的初期负担,更直接地专注于应用本体的设计、验证与运营恢复。
ELSOUL LABO 自 2022 年起连续五年获得荷兰政府 WBSO 研究开发支持计划批准。公司持续推进 Solana RPC 基础设施、validator 运营、实时数据分发、历史数据获取,以及基于 AI agents 的运营与开发支持相关研究开发,并将这些成果反映到 ERPC、SLV、SLV AI 和 AS200261 Solana 专用数据中心等各项服务中。
通过 ERPC 的 Jet Analytics & Indexed RPC,使用 Solana RPC 的开发者不仅可以处理当前数据,还可以通过同一流程处理历史数据、汇总数据、分析数据和恢复用数据。通过在同一平台上组合 Solana 应用所需的实时性、历史数据获取、backfilling、恢复与分析,开发者可以更轻松地推进钱包、Explorer、交易应用、DeFi、indexer、分析基础设施、监控系统、AI agents 等的开发与运营。

联系方式

关于 Jet Analytics & Indexed RPC、Solana RPC、getTransactionsForAddressgetTransfersByAddressjetTopProgramsjetSlotStatsjetTpsTimeseriesjetEpochSummaryjetProgramStats、历史数据获取、backfilling、恢复、分析基础设施、现有 plan 及架构咨询,请在 Validators DAO 官方 Discord 创建支持工单进行咨询。
ERPC Dashboard: https://dashboard.erpc.global/zh ERPC 官方网站: https://erpc.global/zh Validators DAO 官方 Discord: https://discord.gg/C7ZQSrCkYR