索引器是 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 事务的数据库。这样做时,索引器允许代理向代理用户提供重要的交易信息。