原文作者:PaperMoon团队
一、区块链数据访问的真正难题
区块链最大的优点是不可篡改与去中心化,但恰恰也是它在工程实践中的最大困难之一:
区块链本身并不是数据库。
链上的数据并不是像 MySQL 或 MongoDB 那样可以直接按条件查询,而是以时间顺序记录在区块(Block)中的。
区块链数据具有以下天然特征:
• 数据按时间顺序写入区块
• 分布在成千上万个区块中
• 状态变化依赖历史交易
• 无结构化查询接口
因此,当开发者只需要读取单个区块的数据时,通过 JSON-RPC API 调用节点即可完成;但一旦涉及复杂查询,就会立即变得困难。
复杂查询为什么困难?
当 dApp 需要实现如下功能:
• 查询某 NFT 持有者历史记录
• 统计 DeFi 协议 TVL
• 计算用户过去一年收益
• 跨链资产统计
• 排行榜或分析报表
直接访问区块链会出现一系列问题:
| 问题 | 原因 |
|---|---|
| 数据分散 | 信息散落在大量区块中 |
| 同步耗时 | 完整节点同步可能需数天甚至数周 |
| 计算复杂 | 聚合、平均值、筛选需要额外处理 |
| 性能下降 | 直接查询节点会拖慢 dApp 响应 |
换句话说:区块链适合写入状态,不适合查询数据。这就是适用于区块链 Indexer 出现的根本原因。
二、什么是区块链 Indexer?
区块链 Indexer(数据索引器)是一种专门的基础设施工具,用于处理、整理并存储链上数据,使其可以被高效查询。
可以把它理解为:
区块链的"搜索引擎"或"数据仓库层"。
Indexer 的工作流程如下:
-
持续监听区块链的新区块与交易
-
按预定义 Schema 解析数据
-
处理并分类链上事件
-
存入可查询数据库
-
提供 API(通常是 GraphQL)
因此,dApp 不再直接查询区块链,而是查询 Indexer。
Indexer 提供的能力
• 实时数据查询
• 历史记录追踪
• 复杂过滤
• 分页
• 聚合统计
• 全文搜索
三、Polkadot 生态的 Indexer:为什么它特别重要?
Polkadot 与 Ethereum 最大不同在于:Polkadot 是多链网络。
它由 Relay Chain、平行链(Parachain)和跨链消息(XCM)构成。
这意味着一个应用的数据可能同时分布在多条链上。如果没有 Indexer,几乎无法构建复杂 Web3 应用。
1. Subsquid
Subsquid 是一个数据网络,允许从 100+ 条链中快速、低成本获取区块链数据。它本质上是一个 ETL(Extract-Transform-Load)系统 + GraphQL 服务器。
工作原理:
| 阶段 | 作用 |
|---|---|
| Extract | 从链抓取区块数据 |
| Transform | 解析事件、交易 |
| Load | 写入数据库 |
其特点:
• 支持 EVM 与 Substrate
• 可在同一项目中混合索引
• 支持分页、过滤、全文搜索
• 使用 GraphQL 查询
独特性:跨虚拟机索引能力
这是 Polkadot 特别需要的能力,因为其同时存在 Substrate runtime 与 EVM 合约数据。
2. SubQuery
SubQuery 是开源的去中心化数据索引网络,提供 RPC 与索引数据服务,并允许为 Web3 项目生成定制 API。
特点:
• 多链支持
• 去中心化节点网络
• 可自定义数据模型
• 提供高可用 API
四、与以太坊 Indexer 的对比
以太坊最著名的 Indexer 是 The Graph。
其工作方式是:
开发者编写 Subgraph → 定义事件 → Indexer 监听 → GraphQL 查询
| 特性 | Ethereum (The Graph) |
|---|---|
| 数据来源 | EVM 日志事件 |
| 查询方式 | GraphQL |
| 架构 | 单链或多 L2 |
| 开发模式 | Subgraph Manifest |
优势:
• 标准化程度高
• DeFi 广泛使用(Uniswap、Aave)
局限:
• 依赖事件日志
• 跨链能力有限
五、与 Solana Indexer 的对比
Solana 由于其账户模型和高 TPS,Indexer 更像数据解析层。
常见方案:
• Helius
• Triton
• SolanaFM
| 特性 | Solana |
|---|---|
| 数据结构 | Account-based state |
| 更新频率 | 极高 |
| 难点 | 历史状态解析 |
| 查询方式 | REST + 自定义 API |
Solana Indexer 的重点在于性能与实时性,而非复杂跨链数据。
六、三大生态 Indexer 对比
| 维度 | Polkadot | Ethereum | Solana |
|---|---|---|---|
| 链结构 | 多链 | 单链 + L2 | 单链高性能 |
| 索引难度 | 极高 | 中等 | 高 |
| 主要工具 | Subsquid / SubQuery | The Graph | Helius |
| 查询接口 | GraphQL | GraphQL | REST / API |
| 跨链支持 | 原生 XCM | 桥 | 弱 |
结论:Polkadot 对 Indexer 的依赖程度最高。
七、REVM 与 PolkaVM 时代 Indexer 的变化
随着 Polkadot 引入:
• REVM(以太坊兼容执行环境)
• PolkaVM(RISC-V 通用虚拟机)
Indexer 的角色将发生重大变化。
REVM 影响
REVM 支持 Ethereum JSON-RPC 与 EVM 交易。
意味着:
• 可直接索引 EVM 事件
• MetaMask 应用可复用
• EVM Subgraph 可迁移
PolkaVM(PVM)影响
PolkaVM 是基于 RISC-V 的用户级虚拟机:
A general purpose user-level RISC-V based virtual machine.
对 Indexer 的影响:
-
不再只索引事件日志
-
需要解析更通用执行状态
-
支持多语言合约(Rust / C)
-
数据结构更加复杂
因此未来 Indexer 将不仅是事件解析器,而是:通用链上执行状态解析器(State Interpreter)。
八、未来发展趋势
在 Polkadot 的 DAP、Proof-of-Personhood、Coretime 模型下,Indexer 将承担新的角色:
• 资源使用分析
• 身份信誉系统
• 链上数据分析
• AI 数据输入层
Web3 的分析、数据可视化、甚至 AI Agent,都将直接依赖 Indexer。
区块链节点解决的是"共识与状态写入",而 Indexer 解决的是"数据读取与应用交互"。
智能合约是 Web3 的后端,钱包是 Web3 的前端,Indexer 是 Web3 的数据库层。
在未来 REVM 与 PolkaVM 的多虚拟机时代,Polkadot 的 Indexer 很可能成为最复杂、同时也是最关键的 Web3 基础设施之一。
参考文档: