本文介绍了如何使用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 是一种数据存储工具,旨在管理大量数据点列表,例如钱包地址或交易记录。它使开发者能够通过 REST API、在 Streams 过滤器内或使用 Functions 按需更新和检索这些列表和键值集。
主要功能包括:
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 的好处吗?我们的 博客文章 提供了对其功能的深入探讨。
在本节中,我们将过滤与指定合约地址(即 1inch v5 Aggregation Router)交互的交易,并将交互地址收集到一个列表中。
首先,让我们设置你的环境。
首先,在 QuickNode 上设置一个 Stream 以从 Ethereum 主网(或任何其他支持的网络)获取交易。确保你的 Stream 配置为捕获必要的交易数据。
如果你尚未创建 QuickNode 账户,你可以在此处创建账户。
导航到你的 QuickNode 仪表板,然后导航到 Streams 选项卡并点击 创建 Stream。
在 Stream Settings 部分,按照以下配置进行设置:
提示
你还可以复制并粘贴此 QuickShare URL 到你的浏览器地址栏中,以根据本指南自动填充你的 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.site 或 TypedWebhook.tools 上免费生成一个。
设置 Stream 后,你可以通过检查你的 webhook 来查看结果,以确保与指定合约交互的钱包地址已正确添加到列表中。
使用 QuickNode 的 Key-Value Store 与 Streams 提供了一种强大的方式来实时管理和处理区块链数据。本指南向你展示了如何跟踪与智能合约交互的钱包,但可能性是无限的。
如果你有任何问题,请直接联系我们。如果你有任何与 Streams 相关的想法或建议,例如新的目标、功能、指标或数据集,你希望我们支持。
此外,请通过关注我们的 Twitter 并加入我们的 Discord 和 Telegram 公告频道 来了解最新动态。
告诉我们 如果你有任何反馈或新主题的请求。我们很乐意听取你的意见。
- 原文链接: quicknode.com/guides/qui...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!