介绍键值存储:更改监视列表而不重新部署
核心要点
- 过滤器可以通过键值存储读取和更新状态,而不是在应用程序逻辑中嵌入更改状态。
- REST API 访问需要 API 密钥 Streams 过滤器可以通过 Streams 运行时访问键值存储。
- 之后,监视列表的更改通过键值存储而不是通过过滤器进行。

正在加载内容...
键值存储:无需重新部署即可更改监视列表 |快速节点
Arc Mainnet 将于明天启动 在启动前联系您以设置您的基础设施。与我们交谈
博客 > 介绍键值存储:更改监视列表而不重新部署 博客 > 介绍键值存储:更改监视列表而不重新部署 介绍键值存储:更改监视列表而不重新部署键值存储为您的数据管道在 Quicknode 上提供持久、可更新的状态层。通过 REST API 更新监视列表,无需触及过滤器代码或重新部署 Streams。
SOC 2 Type II 认证 · ISO 27001
2026 年 9 月 14 日 — 阅读 6 分钟
监视列表移动。每次有人注册时,投资组合跟踪器都会获得一个地址。合规管道遵循制裁名单,该名单根据其他人的时间表进行更新。
如果该列表位于您的 Streams 过滤器内,则每次更改都会成为代码更改。有人编辑数组并更新过滤器。或者,您将数据保存在单独的数据库中,并在每个块中查询它,从而为您提供另一个系统来操作和协调。
键值存储将变化的状态移出过滤器。
它为您提供两种数据类型:
列表保存字符串项目的命名集合,例如钱包地址、白名单或过滤条件。
值保存您想要随时间跟踪的单个状态,例如您处理的最后一个块。
流过滤器可以读取和写入两者。支持的 Webhook 模板可以按名称引用键值存储列表。后端、脚本或代理可以通过 REST API 访问相同的数据。
对于监视列表,这意味着一次 API 调用可以更改正在运行的过滤器匹配的内容,而无需更改或重新部署过滤器本身。
避免更换过滤器只是好处的一部分。更重要的是,无论谁拥有观察列表,都不再需要在数据发生变化时更改过滤逻辑。 UI、后端或脚本可以直接更新它。
每个 Quicknode 计划都提供键值存储。
在 Streams 过滤器中,您可以使用 qnLib.qnContainsListItems 检查列表中的多个项目:
× 终端 □ async function main(payload) { const 地址 = Payload.data.flatMap(block => block.transactions.flatMap(tx => [tx.from, tx.to]) ); const hits =等待qnLib.qnContainsListItems(“watched_wallets”,地址);返回 hit.some(Boolean) ?负载数据:空; }
该方法接受一个项目数组,并为每个项目返回一个布尔值,与输入数组对齐。过滤器也可以用 Go 编写,等效方法是 qn.ContainsListItems 并且同步运行,无需等待。
重要的部分是 Watched_wallets 所在的位置:过滤器之外。
从列表中添加或删除地址,运行的过滤器将使用更新后的监视列表,而无需重新部署。
该模式适用于过滤逻辑保持不变而其操作的数据发生变化的任何地方。
过滤条件也可以存在于过滤器之外
列表不必包含钱包地址。
他们还可以掌握确定哪些事件重要的标准。例如,订单监控应用程序可能允许用户选择他们想要跟踪的订单状态。
您可以将它们存储在列表中,而不是将这些状态硬编码到过滤器中。当用户更改其选择时,更新列表,并且运行的过滤器开始使用新条件。
同样的想法也适用于允许列表、拒绝列表、路由条件、受监控的合约或其他独立于过滤逻辑而变化的值集。
如果更改某些内容不需要更改过滤器本身,那么它是键值存储的良好候选者。
值处理不是列表的状态
价值观涵盖了同一想法的另一面。
例如,需要记住停止位置的过滤器可以在运行结束时写入lastProcessedBlock值,并在处理恢复时再次读取它。
过滤器可以通过键值存储读取和更新状态,而不是在应用程序逻辑中嵌入更改状态。
在将其放入热路径之前
在过滤器内使用键值存储之前,有一些事情值得了解。
匹配区分大小写
键值存储项目区分大小写。
对于区块链地址,请确保一致地存储和检查值。否则,使用不同大小写的地址可能不会按预期匹配。
当前状态可全局用于 Streams、Webhooks 和 REST API
键值存储使您的过滤器可以访问列表的当前内容,当当前状态很重要时(许多监视列表和动态过滤规则就是这种情况),它非常适合。
当您更新列表时,运行过滤器会读取更新的内容。
