# Neon EVM：索引器入门

By [白开水](https://paragraph.com/@baikaishui) · 2022-05-27

---

![](https://storage.googleapis.com/papyrus_images/f6d9176d1c26cef128c9af9f0579fec3b8d3179b40daae239cee57005916a212.jpg)

索引器是 Neon 功能的关键组件。理解它是理解 Neon EVM 与 Solana 网络交互方式的关键，因为它负责将 Solana 交易与 Neon 交易相匹配。本介绍将为您提供有关 Neon 索引器的高级概述。

什么是索引器？
=======

Neon 的 Indexer 是 Neon 代理架构的一部分，它是一个多进程程序。索引器的目的是取消从被阻止的 Neon 帐户发送的正在进行的迭代交易，以及保存来自所有代理的 Neon EVM 交易历史记录（通过维护所有 Neon EVM 交易的数据库）。

这个怎么运作
======

索引器通过执行连续操作的恒定循环来运行。这个循环的步骤如下：

**第 1 步：获取 Solana 交易** 在这个阶段，Indexer 获取所有涉及 Neon EVM 的新 Solana 交易签名，并根据这些签名请求交易细节。

**第 2 步：处理交易** 然后索引器继续处理它获取的所有事务，从最旧的开始并按时间顺序进行。涉及到 Neon EVM 的事务被挑选出来，以便进行更全面的处理。Solana 交易由三个字段组成：数据、账户和目标合约地址。

**第 3 步：重建 Neon 交易** 根据 Indexer 从这些 Solana 交易中收到的信息，它将开始构建反映 Solana 活动的 Neon 交易。分析这些交易以确定向 Neon EVM 合约发出的请求类型。Indexer 对三种类型的请求感兴趣：

*   霓虹灯帐户创建
    
*   非迭代事务（在一个 Neon 事务中执行）
    
*   迭代事务
    

### 迭代事务

如果需要迭代交易，可以基于所涉及账户的数据构建，如果小于 1280 字节，也可以仅基于 Solana 交易数据构建。在使用账户数据的情况下，将 Neon 交易写入一个特殊的账户（仅用于此目的），随后将此信息发送到 Neon EVM 进行迭代处理。

在这种情况下，索引器会跟踪将数据记录到帐户中的事务，并且在一个 Neon 写入事务需要多个 Solana 事务的情况下，应在 Solana 上执行指令的正确顺序。然后，此数据用于帮助处理涉及该帐户的下一个迭代交易。

如果一个迭代交易没有被标记为“完成”，但所有与之相关的账户都被阻塞了，Indexer 将取消这个交易。

### 非迭代事务

如果需要非迭代事务，则可以从 Solana 事务中提取所有必要的信息。这些信息包括涉及的账户、这些账户余额的变化以及执行结果（例如“成功”或“错误”以及使用了多少gas）。索引器将需要使用相同的数据跟踪未来的事务，以将其添加到相同的 Neon 事务中。

**第 4 步：为 Neon 代理准备数据** 基于 Solana 交易数据构建 Neon 交易后，生成的数据和日志将存储在数据库中。然后，代理可以查询该数据库以获取合约代码、交易详细信息、日志等信息。代理使用它来处理它从客户端接收到的请求。

概括
--

Neon 的索引器通过为 Neon EVM 获取和处理 Solana 事务，对于 Neon EVM 与 Solana 的交互方式至关重要。它会取消那些“卡在”不完整状态且所有账户都被封锁的交易。它还保留了它处理过的所有 Neon EVM 事务​​的数据库。这样做时，索引器允许代理向代理用户提供重要的交易信息。

---

*Originally published on [白开水](https://paragraph.com/@baikaishui/neon-evm-3)*
