利用键值存储追踪智能合约交互

  • QuickNode
  • 发布于 2025-01-25 15:51
  • 阅读 25

本文介绍了如何使用QuickNode的Key-Value Store和Streams来跟踪与特定智能合约交互的钱包地址,并创建动态列表。文章详细讲解了设置Stream、过滤数据、使用Key-Value Store的步骤,并提供了代码示例和配置说明。

Streams

所有拥有 QuickNode 计划的用户都可以使用 Streams。对于有独特需求的团队,我们提供定制的数据集、专属支持和自定义集成。联系我们的团队以获取更多信息。

概述

跟踪区块链上智能合约的交互可以为开发者和分析师提供宝贵的洞察。QuickNode 的 Key-Value Store 与 Streams 结合使用时,提供了一个强大的解决方案,可以针对实时和历史数据流评估列表和键值集。

在本指南中,你将学习如何使用 QuickNode 的 Key-Value Store 和 Streams 来创建与特定智能合约交互的钱包地址的动态列表。本教程将作为构建更复杂应用程序的基础。通过本教程,你将拥有一个实时跟踪这些交互的强大解决方案,并且你将具备探索 QuickNode 数据管理解决方案提供的无限可能性的能力。

你将做什么

  • 了解 QuickNode 的 Key-Value Store
  • 设置一个 Stream 以获取你所需链上的区块链数据
  • 过滤传入的 Stream 数据以检测要添加到列表中的新地址
  • 获取交互钱包地址的动态列表

你需要什么

QuickNode 的 Key-Value Store

QuickNode 的 Key-Value Store 是一种数据存储工具,旨在管理大量数据点列表,例如钱包地址或交易记录。它使开发者能够通过 REST API、在 Streams 过滤器内或使用 Functions 按需更新和检索这些列表和键值集。

主要功能包括:

  • 可扩展的数据管理:高效管理和评估大型数据集
  • 实时更新:即时更新和访问你的数据
  • API 访问:通过 REST API 与你的列表和键值集进行交互
  • QuickNode 产品集成:与 Streams 无缝集成以进行实时数据处理,并与 Functions 集成以应用自定义逻辑

Key-Value Store 的可能用例

Key-Value Store 对于需要实时数据跟踪和评估的应用程序非常有用。一些实际用例包括:

  • 钱包和投资组合管理:跟踪动态钱包地址列表的活动,允许实时更新交易和投资组合变化
  • 代币持有监控:维护多个钱包中代币持有的最新记录
  • 交易跟踪和警报:监控交易活动并设置特定条件的警报,例如大额转账或异常活动模式
  • 历史数据分析:存储和评估历史数据以分析趋势和模式

在 Streams 过滤器中使用 Key-Value Store

Key-Value Store 可以在 Streams 过滤器内无缝访问和管理。你可以创建新的列表和键值集,从列表中添加和删除项目,更新键值集,并根据流式区块链数据评估你的 Key-Value Store 数据。

  • 列表:当你想将多个值与一个键关联时,使用列表。例如,你可以通过将钱包地址作为项目添加到名为“addresses”的列表中来管理和评估大量钱包地址,或者你可以过滤仅与你指定的列表中的地址相关的交易。

  • 键值集:当你想存储数据点以便于检索和更新时,使用键值集。例如,你可以计算区块中的平均 gas 价格,使用键“gasPrice”存储该值,然后在下一个区块中检索它以计算增量。

Key-Value Store 函数与你的 QuickNode 账户原生集成,Key-Value Store 的值与你的账户绑定,而不是与特定的 Stream 绑定。因此,如果你有一个列表 addressList,它将可以从你账户中的任何流、函数或直接 Key-Value Store REST API 访问。

有关这些功能的更多详细信息,请参阅 QuickNode Key-Value Store 文档

探索更多

想了解 QuickNode Streams 的好处吗?我们的 博客文章 提供了对其功能的深入探讨。

使用 Streams 和 Key-Value Store 创建动态列表

在本节中,我们将过滤与指定合约地址(即 1inch v5 Aggregation Router)交互的交易,并将交互地址收集到一个列表中。

首先,让我们设置你的环境。

创建 Stream

首先,在 QuickNode 上设置一个 Stream 以从 Ethereum 主网(或任何其他支持的网络)获取交易。确保你的 Stream 配置为捕获必要的交易数据。

如果你尚未创建 QuickNode 账户,你可以在此处创建账户

导航到你的 QuickNode 仪表板,然后导航到 Streams 选项卡并点击 创建 Stream

Stream Settings 部分,按照以下配置进行设置:

Stream Settings

  • :Ethereum
  • 网络:主网
  • 数据集:交易
  • Stream 开始:15894742(起始区块号可以根据你想要的任何日期选择,或者根据合约部署的区块选择,以覆盖所有交互。
  • Stream 结束:留空(如果你只想要某个范围内的列表而不是主动更新的列表,你可以选择结束区块号。
  • Stream 有效负载:在流式传输之前修改有效负载
  • Reorg 处理:留空

提示

你还可以复制并粘贴此 QuickShare URL 到你的浏览器地址栏中,以根据本指南自动填充你的 Stream 设置中的字段。

对于上述未提及的任何其他字段,请保留其默认值。

过滤 Stream 数据

以下过滤函数处理传入的流数据,以跟踪与特定智能合约交互的钱包地址。此函数将检查区块中的每个交易,以查看其是否涉及目标合约地址,并使用 QuickNode 的 Key-Value Store 更新交互地址列表。

由于 Streams 中的成本仅基于过滤后的数据大小,过滤消除了处理不必要的数据并显著降低了成本。

在选择修改有效负载选项后,会出现一个代码框,允许你修改有效负载。将以下代码粘贴到代码框中,然后点击 运行测试 按钮。你可以根据需要选择测试区块号。

在此函数中,我们将使用以下 Key-Value Store 函数:

  • qnContainsListItem:检查 Key-Value Store 中特定列表中是否存在某个项目。
  • qnUpsertList:在 Key-Value Store 中创建或更新一个新列表。
  • qnGetList:从 Key-Value Store 中的特定列表中检索所有项目。

有关详细说明和所有可用功能的完整列表,请访问 QuickNode Key-Value Store 文档

过滤函数

function main(stream) {
  const data = stream.data[0];

  let results = {};
  const contractAddress = "0x1111111254EEB25477B68fb85Ed929f73A960582"; // 1inch v5: Aggregation Router Contract Address on Ethereum
  let newAdding = false;

  // 辅助函数检查地址是否存在于列表中
  function checkAddress(address) {
    const result = qnContainsListItem("interactionList'", address);
    return result;
  }

  // 辅助函数将地址添加到交互列表
  function addAddress(address) {
    if (!checkAddress(address)) {
      qnUpsertList("interactionList", {
        add_items: [address],
      });
      newAdding = true;
    }
  }

  try {
    // 处理区块中的每个交易
    data.forEach((transaction) => {
      // 检查交易是否涉及合约地址
      if (transaction.to && transaction.to === contractAddress.toLowerCase()) {
        addAddress(transaction.from);
      }
      if (
        transaction.from &&
        transaction.from === contractAddress.toLowerCase()
      ) {
        addAddress(transaction.to);
      }
    });

    // 获取钱包地址列表
    results.addresses = qnGetList("interactionList");
  } catch (error) {
    results.error = error.message;
  }

  return newAdding ? results : null;
}

目标设置

点击 下一步 按钮后,选择 Webhook 作为你的 Stream 目标,并输入你的 webhook URL。每当列表更新时,新列表将发送到此目标。

如果你没有 webhook URL,你可以在 webhook.siteTypedWebhook.tools 上免费生成一个。

查看结果

设置 Stream 后,你可以通过检查你的 webhook 来查看结果,以确保与指定合约交互的钱包地址已正确添加到列表中。

结果

更多资源

结论

使用 QuickNode 的 Key-Value Store 与 Streams 提供了一种强大的方式来实时管理和处理区块链数据。本指南向你展示了如何跟踪与智能合约交互的钱包,但可能性是无限的。

可能的想法

  • 高级分析:扩展此实现以包括交易量和趋势的分析。
  • 警报系统:创建一个系统,当发生重大交互时向你发出警报。
  • 历史数据分析:将实时数据处理与历史数据分析相结合,以获得更全面的洞察。

如果你有任何问题,请直接联系我们。如果你有任何与 Streams 相关的想法或建议,例如新的目标、功能、指标或数据集,你希望我们支持。

此外,请通过关注我们的 Twitter 并加入我们的 DiscordTelegram 公告频道 来了解最新动态。

我们 ❤️ 反馈!

告诉我们 如果你有任何反馈或新主题的请求。我们很乐意听取你的意见。

  • 原文链接: quicknode.com/guides/qui...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。