智能合约索引

Duke
Apr 2, 2024

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

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

它是什么以及我们为何构建它

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

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

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

怎么运行的

获取您自己的智能合约事件

索引您的智能合约就像在时空工作室上提交合约地址一样简单。

  1. 登录 Studio 并导航至主菜单“智能合约”选项卡下的“从链获取数据”按钮
  2. 选择您的合约链并输入地址
  3. 查看最近链上数据生成的表并提交索引

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

SxT 区块链索引的工作原理

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

索引器服务是一个基于 Rust 的单一二进制文件,因此随着 Space and Time 的不断去中心化,我们计划为其添加一个轻节点,以便多个索引器(验证器)可以冗余地索引每个链,并将对其索引数据的承诺发送到达成共识的交易节点。这个计划的架构在我们的白皮书中有详细介绍,但这里有一个总结:交易节点层负责 BFT 共识。索引节点(称为验证器)解码并转换来自 RPC 的原始区块链数据,并在数据上构建加密承诺,以便稍后用于 ZK 证明验证。承诺和索引数据都被发送到事务节点,鉴于已为每条链建立索引的多个冗余索引节点,事务节点达成共识。

它能实现什么

  • 定制和灵活性: Web3 开发人员经常使用独特的智能合约来生成对其应用程序功能至关重要的特定事件。其他索引服务并不总是涵盖这些专门事件,限制了开发人员创建完全优化和响应式 dapp 的能力。 Space and Time 的扩展索引服务通过提供对定制事件进行索引的灵活性来解决这一差距。
  • 可扩展性:内部处理和处理区块链数据可能会非常耗费资源,需要大量的基础设施和技术专业知识。通过将此数据索引外包给 Space and Time,开发人员可以更有效地扩展其应用程序。
  • 改进的数据可访问性:访问和查询区块链数据可能非常复杂且耗时。该服务简化了流程,提供结构化、可查询的表,使开发人员更容易提取见解并将区块链数据集成到他们的应用程序中。

--

--