Cover photo

智能合约索引

从您自己的智能合约事件生成自定义表。

我们很高兴地宣布发布智能合约索引:这是我们区块链索引服务的一项新功能,允许您通过简单地提供合约地址,从您自己的智能合约事件中生成一组新的自定义表。

它是什么以及我们为什么要建造它

当您使用 Space and Time 进行构建时,您可以免费访问我们从主要链上实时 ZK 索引的综合区块链数据。与其他索引解决方案相比,我们采用的方法更快、更成熟、可扩展、兼容 ZK,最重要的是具有索引整个链的能力。由于我们运行的是相当大的数据仓库集群(而不仅仅是单服务器 PostgreSQL 实例),因此每个集群可以保存数十 TB 的数据。仅以太坊每年就产生约2TB的重要数据,而以太坊是迄今为止数据量最小的流行链。

我们的索引服务既提供存储在“核心”表中的链级数据(即钱包、交易、合约、区块、代币转移等表——一旦链的索引完成,创世区块的全链状态),以及来自 Aave、Uniswap、Opensea、dYdX 等协议的特定于协议的语义数据集或价格馈送。但我们也明白,有时开发人员需要访问他们自己的智能合约发出的事件周围的数据,我们希望抽象出必须对核心表进行排序才能获得数据的复杂性。

今天,我们很高兴地宣布 SxT 索引服务的新增功能:智能合约索引。 现在,用户可以提交智能合约列表进行索引,Space and Time 将创建一组新的自定义表,其中包含来自这些特定智能合约的事件。我们将发出的事件写入新表中,然后可以查询这些表,与其他索引数据或链下数据联接,并证明 ZK 是亚秒级的。这使开发人员能够创建高度定制、高效和复杂的应用程序,这些应用程序以快速、经济且经过 ZK 验证的方式利用链级数据、特定于协议的数据、链下数据以及来自他们自己的智能合约事件的数据。

运作方式

获取自己的智能合约事件

索引您的智能合约就像在 Space and Time Studio 上提交合约地址一样简单。

  1. 登录 Studio 并导航到主菜单上“智能合约”选项卡下的“从链中获取数据”按钮

  2. 选择您的合约链并输入地址

  3. 查看最近链上数据生成的表格并提交索引

就是这样!我们拉取 ABI,为每个智能合约事件自动生成一个表,然后开始自动填充它们。

SxT 区块链索引的工作原理

我们构建了一个强大的基于 Rust 的索引器,它以可验证的方式从每个区块中获取与每笔交易相关的每个智能合约事件。它首先轮询每个链的多个 RPC 节点,并验证它从每个 RPC 节点接收的内容是否一致。然后,索引器通过我们在本地缓存的智能合约 ABI 对数据进行解码。最后,这些数据被转换为关系型、易于查询的形式,并加载到数据仓库中——这是当前链上数据的精确副本。当您提交智能合约进行索引时,发出的事件将单独写入您定义的新表中。整个过程发生在块时间内。

索引器服务是一个基于 Rust 的二进制文件,因此随着空间和时间的继续去中心化,我们计划为其添加一个轻量级节点,以便多个索引器(验证者)可以冗余索引每条链,并将对其索引数据的承诺发送到 Transaction 节点以达成共识。我们的白皮书中详细介绍了这个计划中的架构,但这里有一个总结:事务节点层负责 BFT 共识。索引节点(称为验证者)从 RPC 解码和转换原始区块链数据,并在数据上构建加密承诺,稍后用于 ZK 证明验证。承诺和索引数据都被发送到交易节点,这些节点在给定多个冗余索引节点的情况下达成共识,这些节点已经索引了每条链。

它能带来什么

  • 定制和灵活性:Web3 开发人员通常使用独特的智能合约,这些智能合约会生成对其应用程序功能至关重要的特定事件。其他索引服务并不总是涵盖这些专门事件,这限制了开发人员创建完全优化和响应迅速的 dapp 的能力。Space and Time 的扩展索引服务通过提供索引定制事件的灵活性来弥补这一差距。

  • 可扩展性: 在内部处理和处理区块链数据可能非常耗费资源,需要大量的基础设施和技术专长。通过将此数据索引外包给 Space and Time,开发人员可以更有效地扩展其应用程序。

  • 改进的数据可访问性:访问和查询区块链数据可能既复杂又耗时。这项服务简化了流程,提供了结构化的、可查询的表,使开发人员更容易提取见解并将区块链数据集成到他们的应用程序中。