Validators DAO 开源 Solana Geyser gRPC 实时检测 pump.fun 代币铸造的研发示例代码
Validators DAO 开源 Solana Geyser gRPC 实时检测 pump.fun 代币铸造的研发示例代码

ELSOUL LABO B.V.(总部:荷兰阿姆斯特丹;CEO:Fumitake Kawasaki)与 Validators DAO 已开源一份研发示例代码,用于通过 Solana Geyser gRPC 数据流实时检测 pump.fun 代币铸造事件。
该示例代码用于以数据流形式接收 Solana 上发生的链上事件(on-chain events),并实时检测符合特定条件的事件。以 pump.fun 代币铸造(token mint)为主题,开发者可以查看如何处理 Solana Geyser gRPC stream 中流动的数据,并检测事件发生。
以 pump.fun 代币铸造检测为主题的实时 Solana 数据处理
pump.fun 代币铸造是 Solana 上发生的链上事件中,适合作为实时数据处理主题的清晰示例。通过检测新代币被铸造的瞬间,并将该信息传递给后续处理,开发者可以查看 Solana 应用所需的事件驱动基础结构。
在实时 Solana 应用中,快速理解链上发生了什么非常重要。接收新事件、识别目标、提取必要信息,并将其传递给下一步处理,这一流程是通知、日志记录、监控、分析、索引、后端处理以及许多其他 Solana 应用工作流的共同基础。
本次公开的示例代码通过 pump.fun 代币铸造检测,将这一流程具体化。开发者可以阅读实际代码,验证其行为,并根据自己的用例扩展检测条件或后续处理。
通过 Solana Geyser gRPC 数据流接收链上事件
处理 Solana 链上事件的方式有多种,包括 HTTP RPC、WebSocket、Geyser gRPC 和 Shredstream。其中,Geyser gRPC streams 适合持续接收 accounts、slots、blocks、transactions 等数据,并在应用侧实时处理这些数据。
HTTP RPC 是在某个时间点请求并获取所需信息的机制。它适用于历史检查、state 获取和单个 transaction 确认。然而,当需要持续追踪链上发生的事件时,如果在事件发生后反复查询大范围数据,网络流量、处理负载和时间开销都可能增加。
WebSocket 也是 Solana 开发中广泛使用的有用机制。不过,Geyser gRPC streams 可以将事件作为连续的数据流接收,并在应用侧立即处理。对于 pump.fun 代币铸造检测这类需要快速捕捉特定链上事件的工作负载,流式架构更容易围绕事件发生时的数据来构建处理流程。
通过 HTTP/2 和 Protocol Buffers 实现高效流式通信
gRPC 构建在 HTTP/2 之上,可以使用长连接、connection multiplexing、header compression,以及通过 Protocol Buffers 进行二进制表示。对于持续接收大量数据,并在应用侧处理所需事件的工作负载,这些特性直接支持数据传输效率和更清晰的实现设计。
在 polling 或重复 request/response 流程中,每次获取数据通常都需要发出 request、等待 response,然后在应用侧再次进行判断。WebSocket 可以使用持久连接,但当系统主要围绕 JSON-based subscriptions 或大范围通知构建时,对接收数据的解释、筛选和后续处理往往会较多地转移到应用层。
Geyser gRPC streams 基于 HTTP/2 和 Protocol Buffers,使持续接收结构化 Solana 数据变得更容易。在实时检测链上事件时,应用可以将所需数据作为数据流接收,并只处理符合目标条件的事件。这样可以更容易减少不必要的查询和重复拉取,同时以更低网络流量和处理开销设计实时数据处理。
pump.fun 代币铸造检测示例代码,是查看这种基于 Geyser gRPC stream 的实现方式的入口。开发者可以检查用于接收链上事件、判断所需条件,并将检测到的事件连接到后续处理的实际代码结构。
在每个 Epoch 推进 432,000 个 Slots 的 Solana 上,实时检测很重要
在 Solana 中,每个 epoch 会快速推进 432,000 个 slots。所处理的数据量也很大,在我们的 Solana RPC 基础设施运营中,根据范围和配置,每个 epoch 处理的数据量可能达到约 500 GB。当链上事件之后通过 backfill 大范围数据来重构时,处理时间、带宽、计算资源、存储和索引的负载都可能变得很高。
实时检测是减少这种负载的重要设计方法。通过在必要事件发生的瞬间接收它们,只记录相关记录,并只执行必要的后续流程,应用可以减少大范围重新拉取和不必要的数据处理。
pump.fun 代币铸造检测就是一个具体例子。与其在事后重度处理全部数据,不如在事件发生瞬间从数据流中识别目标事件,这样更容易构建符合 Solana 高速数据生成特点的应用结构。
示例代码展示的内容
本次公开的示例代码展示了使用 Solana Geyser gRPC streams 实时检测 pump.fun 代币铸造的流程。
开发者主要可以查看与 Geyser gRPC stream 的连接、对数据流接收数据的处理、对 pump.fun 代币铸造相关事件的判断,以及检测后与后续处理的连接。这样可以通过具体代码,而不是抽象说明,理解 Solana 实时数据处理。
开发者可以将该示例代码作为起点,调整检测条件、修改 output format、添加通知或存储处理,并将这一结构应用到其他链上事件。从 pump.fun 代币铸造检测这一具体主题开始,有助于理解使用 Solana Geyser gRPC streams 进行实时事件处理的基础结构。
开源发布
该示例代码以开源形式发布。它提供了使用 Solana Geyser gRPC streams 进行实时事件检测的实现示例,任何人都可以查看、使用和修改。
在像 Solana 这样高速且大数据量的网络中,数据获取方式本身会影响应用性能和运营成本。如果应用每次需要特定事件时都反复搜索大范围数据,负载不仅会增加在应用侧,也会增加在 RPC、网络、存储和索引基础设施上。
通过使用 Geyser gRPC streams 在事件发生时接收必要事件,并只处理相关数据,应用可以减少不必要的查询、重复拉取和过度带宽消耗。这种高效的流式通信不仅可以改善 Solana 应用的实时性能,也可以改善数据获取成本和通信效率。
该示例代码旨在让开发者以实现形式查看这种实时 Solana 数据处理。通过 pump.fun 代币铸造检测,开发者可以具体验证 Geyser gRPC streams、HTTP/2、Protocol Buffers 和实时链上事件处理。
反馈
Validators DAO 持续围绕实时 Solana 数据处理进行研究和开发。对于本次公开的 pump.fun 代币铸造检测示例代码,我们欢迎开发者反馈在实际使用中发现的改进点、希望追加的检测目标、stream processing 扩展方案,以及与通知或存储集成相关的需求。
为了让更多开发者更容易使用这一基于 Solana Geyser gRPC streams 的实时检测实现,请查看示例代码并分享您的反馈。
Validators DAO 官方 Discord:https://discord.gg/C7ZQSrCkYR
免责声明
本文和示例代码是与 Solana 链上事件检测、Geyser gRPC streams 和实时数据处理相关的研发技术资料。它们不构成投资建议、交易策略推荐,或买卖任何特定 token、asset 或 protocol 的招揽。
使用该示例代码前,请充分检查并验证内容,并自行承担使用责任。


