Neon EVM:索引器入门

Duke
May 31, 2022

--

索引器是 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 对三种类型的请求感兴趣:

  1. 霓虹灯帐户创建
  2. 非迭代事务(在一个 Neon 事务中执行)
  3. 迭代事务

迭代事务

如果需要迭代交易,可以基于所涉及账户的数据构建,如果小于 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 事务​​的数据库。这样做时,索引器允许代理向代理用户提供重要的交易信息。

--

--