Cointime

扫码下载App
iOS & Android

The Graph Indexer线上会议 #179

项目方

TL;DR:公开讨论部分三个主要议题:- Semiotic Labs的Gustavo介绍了indexer-rs和TAP的更新,包括indexer-service和indexer-agent的新配置选项和功能。- Edge & Node的Ricky分享了索引器数据分析教程,演示了自动索引器操作和分析子图性能的工具。-来自Pinax的Guillaume和Matthew介绍了一个用于部署启动板图表的Kubernetes演示,旨在帮助索引器开始使用Kubernetes。

大家好,欢迎阅览 Indexer Office Hours 会议纪要,第 179 场!

视频链接:https://youtu.be/sNdeo-eiVIY

观看 CircleClick Media 的联合创始人兼首席执行官 Anne Ahola Ward 的 GRTiQ 播客,CircleClick Media 是一家专注于成长型初创公司和新兴科技公司的数字营销公司。

重要存储库的最新更新

  • Reth :新版本 v1.1.0 :
  • 此版本为ETH链引入了新的默认引擎架构,以前只能通过 –engine.experimental 标志使用。喜欢保持旧引擎行为的节点现在必须使用 –engine.legacy 标志。新架构显著提高了链顶端附近的性能,尤其是在降低engine_forkchoiceUpdated延迟方面。
  • 重大更改:已删除 ExExNotifications::recv 和 poll_recv 方法,用户现在必须转换为 ExExNotifications::with_head 才能收到 exex 通知。
  • 优先级:非负载构建器应优先考虑 (中等优先级) 更新以利用性能改进,负载生成器的低优先级。
  • Heimdall:新版本 v1.0.10 :
  • 一个低优先级版本,包括对 rpm 软件包的多项清理和添加。
  • GraphOps 在 Polygon Amoy 上运行此版本,没有问题。

有关不同客户端的信息

  • Teku:新版本 v24.10.1 :
  • 高优先级修补程序 (v24.10.1) 使用 –validators-proposer-config 选项解决 Teku 启动失败问题,与 Windows 不兼容,包括对指标名称的重大更改,现在后缀为“_total”。
  • 此版本与 Windows 不兼容。
  • 索引器服务和代理(TS):新版本v0.21.5:
  • 这是 TypeScript 索引器服务存储库。
  • 高优先级更新解决了代理中的大量内存泄漏问题,改进了 TAP 功能,并为错误日志记录和收据验证添加了新功能,并显著改进了多个链的文档。
  • GraphOps 在其 Graph Arbitrum Sepolia 中运行此版本,没有问题。

注意:发布过程已更改。现在有两个单独的包:索引器服务和索引器 TAP 代理,以便用户可以为索引器服务和索引器 TAP 代理运行不同版本。

索引器服务和点击代理(RS):新版本发布:

  • 这是 Rust 索引器服务存储库。
  • indexer-service-v1.1.0 中:
  • 高优先级更新引入了配置灵活性、指标改进和修改 PostgreSQL 连接设置。
  • 您可以将 PostgreSQL URL 连接指定为一个 URL,也可以单独指定不同的组件。
  • 配置灵活性解决了指定配置文件或环境变量的能力。以前,您始终必须指定配置文件。
  • 索引器服务 v1.1.1 :
  • 包括错误修复,以使用 INFO 作为日志的默认级别。
  • indexer-tap-agent-v1.1.0 :
  • 包括错误修复,以使用 INFO 作为日志的默认级别。
  • indexer-tap-agent-v1.1.1 :
  • 高优先级更新引入了配置灵活性(您现在只能通过环境变量指定配置)、指标改进和错误修复,在配置处理和数据库交互方面具有潜在的重大变化,特别是允许通过文件或环境变量进行配置以及修改 PostgreSQL 连接设置。
  • GraphOps 在我们的 Graph Arbitrum Sepolia 上运行 indexer-service-v1.1.1 和 indexer-tap-agent-v1.1.1,没有问题。

来自聊天室:

Marc-André |Ellipfra: 0.21.5 在这里失败了,乍一看它需要一个未发布的图形节点版本。

Ana |GraphOps :好的,我需要仔细检查一下。感谢您让我们知道。

Marc-André |Ellipfra: indexer-agent:已暂停非 null 字段的 Null 值解析 #1025

Vincent |Data Nexus:我们没有遇到这种情况。我确实记得过去遇到过这种情况。我不记得我们可能做了什么来解决这个问题 :

弄清楚我们做了什么。实际上,我们自己修补了一个专门用于索引器代理状态端点的Graph节点。显然不是最好的 UX,但如果你在紧要关头,它会起作用。

index 4d7e06779..a93f2e93c 100644--- a/server/index-node/src/schema.graphql+++ b/server/index-node/src/schema.graphql@@ -71,7 +71,7 @@ type SubgraphIndexingStatus {chains: [ChainIndexingStatus!]!entityCount: BigInt!node: String- paused: Boolean!+ paused: Boolean historyBlocks: Int! }

Marc-André |Ellipfra:我恢复到文档中建议的指定提交......很高兴。谢谢。

Launchpad 图表:

  • 发布了新的图表版本,其中包含增强功能和错误修复:
  • Celo
  • Heimdall
  • Nimbus
  • Lighthouse
  • Graph-network-indexer
  • Firehose-ethereum

Launchpad 命名空间:

  • ETH、Gnosis、Celo、Monitoring、Arbitrum、Graph 的新稳定版本

问题:

  • Launchpad 图表问题:查看或报告问题
  • Launchpad 命名空间问题:查看或报告问题

来自聊天室:

Matthew Darwin |Pinax:只是问问是否有人看到 arbitrum-nitro 的任何问题。Johnathan|Pinax 正在尝试解决一些奇怪的 RPC 响应问题。

Vincent |Data Nexus:您具体遇到了哪些问题?

Johnathan |Pinax:来自 RPC 节点的空响应。

Matthew Darwin |Pinax:可能是在同时向 RPC 发送 BOATLOAT 请求时。

Marc-André |Ellipfra: 除了占用了大量的空间和资源之外,看起来还不错...性能通常低于标准。

协议重要变更的最新更新

核心开发更新:

  • Pinax 2024 年 10 月更新
  • Semiotic  2024 年 10 月更新
  • Edge & Node 2024 年 9 月/10 月更新
  • Geo 2024 年 10 月更新
  • GraphOps 2024 年 10 月更新 
  • StreamingFast 2024 年 10 月更新
  • Messari 2024 年 10 月更新
  • ❄️ Graph Horizon 和 Subgraph Service ❄️ #944 (open)
  • chore(Horizon):为 TAPCollector 添加签名者 #1060(merged)
  • 修复:确保 subgraphNFT 正确处理带有前导 0 的元数据 #577 (closed)
  1. Indexer-rs 和 TAP 更新(新功能)
  2. 索引器的数据分析教程
  3. Kubernetes 演示和讨论

来自 Semiotic Labs 的 Gustavo 介绍了 indexer-rs 的新功能。

查看幻灯片

  • 我们不会发布大型捆绑版本,而是在合并功能或 bug 修复后立即发布。
  • 这将更快地修复报告的问题。
  • indexer-service-rs 和 indexer-tap-agent 现在已分离(即使它们现在具有相同的版本号),并将单独发布,以适应我们仅针对其中一个的修复程序。
  • 两者共享相同的配置,因此每次我们有配置更新时,双方都会收到它。
  • 存储库:indexer-rs
  • 创建问题或请求功能

大多数新功能都与配置的质量有关。

  • 以前,您只有第一个选项需要提供 PostgreSQL URL,但现在您有第二个选项,您可以拥有主机、端口、用户、密码和数据库,而不是整个 URL。
  • 一些索引器在使用环境变量时遇到问题,因为标记需要环境变量的索引器服务前缀或 TAP 代理前缀,然后,如果你想像处理配置一样为它们共享相同的环境变量,你真的无法做到这一点。现在,您可以使用单个 API,并且它适用于两者。
  • 现在,如果你尝试在没有 config 的情况下运行并且缺少任何环境变量,系统会告诉你缺少什么字段,它会建议你也可以使用参数 config。
  • 以前,如果要使用环境变量,则必须使用前缀,但现在可以将部分环境变量与配置混合使用。

由于以前的功能,我们创建了一个迁移配置,该配置从旧环境变量映射到新配置。

  • 我们有一个建议的配置(在我们的存储库中),可以轻松地从您之前的配置迁移到新配置。
  • docs/migration-config/arbitrum 文档
  • docs/migration-config/arbitrum-sepolia 文档
  • 我们仍然建议使用 overtime 配置。

来自聊天室:

chris.eth |GraphOps:这真是太好了,Gustavo | Semiotic Labs!

Marc-André |Ellipfra:这些都是不错的改进。

  • 我们修复了必须提供 RUST_LOG 才能查看日志的错误,现在默认为 INFO
  • Tap-agent
  • 更好地跟踪待处理收据 (缓冲区跟踪)。
  • 如果发件人已从数据库中删除,则再次拒绝发件人。
  • 将错误原因存储在 DB 中,以防收据失败。
  • Indexer-service
  • 添加了 Prometheus/Grafana 的指标。
  • 与以前的 TypeScript 索引器服务不同,因为我们现在使用建议的命名。由于重大更改,我们可以更新并获得更好的命名。
  • Indexer-agent
  • 修复了未获取内部 subgraph 查询的所有页面的错误。
  • 如果托管账户没有足够的资金,请不要赎回。

chris.eth |GraphOps:使用 TAP 支付,网关并非完全无需许可(即使在协议级别我们有无需许可的付款人)。索引器需要为新网关授予权限(通过为其签署者密钥添加 tap-aggregator 端点配置),或者核心开发人员需要与新网关协调以推出包含该 tap-aggregator 配置的新软件默认值。是否有删除此权限依赖项的途径?

Gustavo 回答:这是我们目前在这方面遇到的一个问题,我很想得到您的反馈:[Feat.Req] 网关发现和验证协议 #342。

我们计划创建我们所谓的网关发现功能和验证协议。我们从一开始就不允许任何人提供 TAP 聚合器,因为不知何故,您需要相信 TAP 聚合器正在运行,而我们没有任何验证。

因此,例如,您可能有一个 TAP 聚合器终端节点,但是当您尝试将收据聚合到 RAV(请求聚合凭证)中时,它会失败。这样做的问题是你会失去这个初始 RAV 或你愿意损失的金额,你实际上会为每个糟糕的网关而损失。因此,我们决定,在开始时,索引器应该信任或至少允许网关,并自行提供 TAP 聚合器。

网关发现和验证协议将让网关接近索引器,发送其 TAP 聚合器,并尝试发送一些查询,以向索引器表明它能够聚合到 RAV 中。

请查看此问题,让我们进一步讨论我们计划如何执行此操作。

来自聊天室:

Vince |Nodeify:steal-it-all-gateway,不需要更新,你的基地都归我所有,直到你阻止?感觉需要有一个网关列表或发现它们。

chris.eth |GraphOps:由于 TAP,索引器<>网关关系的信任是最小的,因此对于索引器来说非常安全。但是,消费者<>网关关系是 100% 可信的,因此网关运营商是我们生态系统中非常重要的参与者。

Matthew Darwin |Pinax 发布: Vince |Nodeify 您已经使用 TAP 了吗?还有谁在使用 TAP?

Vince |Nodeify:我还没有,几周前仍在从分片迁移中调整我的 pg 数据库。修复仪表板等

Vincent |Data Nexus:仅供参考,我为新的 indexer-service-rs 指标制作了一个仪表板。

  • 单击链接到 Discord,然后选择屏幕右上角的显示聊天以获取带有代码的消息。

calinah |GraphOps:这是你最近分享的那个吗?

Vincent |Data Nexus:是的,我在合并提交后的前一周,在版本被削减之前分享了它。

Ricky是Edge & Node的数据科学家,他从索引器的角度介绍分析。他分享了他创建的教程:索引器的数据分析。请关注 Ricky 未来的另一次会议!

Ricky:

我启动了自己的索引器,以便更好地直观地理解数据:rickydata-indexer.eth。

我一直在努力自动化我的索引器的各个部分,并为索引器社区构建有用的数据工具。

首先,我将分享我制作的一个教程,该教程几乎介绍了到目前为止我为索引器提供的自动化的各个方面。本教程适用于完全初学者,并使用 R 编程语言,类似于 Python。

观看 Ricky 在 29:00 演示教程。

  • 第一部分 Getting Started 为您提供了了解本教程后面的步骤所需的所有工具。
  • 使用 QoS 子图中的真实查询量数据进行演练,该子图显示查询量比实时晚 ~10 分钟,而链上查询量可能需要 28 个 epoch,或者从未出现在链上。
  • 这是一个很好的资源,其中包含从 9 月 20 日左右开始的每个子图的完整每日数据。您可以查看查询费用、查询计数,然后按日期和子图 ID 完成。
  • 查看用于汇总和转换数据的工具,然后浏览一些可视化效果。
  • Close Alpositions 介绍了如何提取活动分配、执行 GraphQL 查询并查看其工作原理、提取当前纪元、排除高容量子图以及关闭分配。
  • Synced Subgraphs 显示索引器上当前同步的 Subgraphs。确定您可以分配哪些子图以及已同步哪些子图。
  • Indexing Rewards Proportions 提取 signal 和分配的代币,以便我们可以计算每个子图的索引奖励比例。
  • 查询费用比例 将带您进一步查看不同子图(从 QoS 子图中提取)的查询费用,并从该角度确定最佳机会。
  • Available Tokens Data From Subgraph 提取索引器为新分配的令牌数量。
  • Active Allocations Data From Subgraph 查看索引器已经拥有的分配,因此我们不会为这些分配分配更多代币。
  • 计算新分配 概述了 Ricky 当前的分配机制:一次 100 GRT 以获得最优惠的价格,重新计算并继续执行该过程。
  • Allocate 执行实际分配。

其他数据工具 [35:38]

Ricky 分享了他一直在开发的一个网站的 Data Tools 页面。

  • 通过子图卷数据下载,您可以直接从服务质量子图下载最近的 100,000 行。查看最近查询量增长最快的内容,按链进行筛选,并使用它来找到一些好的查询量机会来编制索引。
  • Curation Signal Optimizer 需要更多的工作,因为它并未涵盖 curation 端的所有内容,但它提供了您当前对信号进行的 APR,并告诉您哪些是低性能信号。这是基于您作为策展人从查询费中赚取的 10%。
  • 它包括未启用索引奖励的子图,因此需要修复。
  • Indexer Data Download 允许您为索引器提取原始、完整的历史数据,以帮助跟踪一段时间内的奖励或创建可视化效果。

来自索引器社区的反馈会有很大帮助,因此请与 Ricky 分享。

注意:Ricky 以独立贡献者的身份执行此操作。不是Edge & Node。

请关注即将推出的 Know Your Indexer 论坛帖子!

Abel |GraphOps:Ricky,这太不可思议了。我不知道你是否有机会查看聊天内容,但索引器完全被震撼了。在分析方面,您显然已经将其提升到了另一个层次。我们可能需要一个专门的 IOH 会话来帮助其他索引器升级,因为每个人都喜欢它。

Vincent |Data Nexus:您分配了多少 GRT?您认为一次分配 100GRT 策略是否会在需要分配大量 GRT 的索引器时遇到性能问题?

Ricky 回答:在我的脚本中,我建立了一个最大上限阈值,我最多只将总赌注大小的 10% 分配给一个子图。没有特别的原因,其他人可以玩弄不同的东西,但这就是我决定最大化奖励,而不会让自己面临这些奖励下降的巨大风险。

我认为另一个方面是提高自动化的运行速度,它可以更智能地开始关闭相同 epoch 的分配,并且可能会变得更加复杂。

Vincent |Data Nexus:是的,我认为我很好。很棒的演示谢谢!

Vince |Nodeify:应该禁止数据科学家成为索引者。

Slimchance:在此处委派给 Ricky:rickydata-indexer.eth。

来自 Pinax 的 Guillaume 和 Matthew 共享了一些资源,使索引器更容易开始使用 Kubernetes。

  • 使用 kind 测试 Kubernetes 应用程序
  • 使用 FluxCD 引导集群
  • 将 Helm 与 Flux 结合使用以部署 launchpad 图表

Guillaume:

这是对 Kubernetes 的介绍,以及我们在 Pinax 是如何做的。

这是一个 Kubernetes IOH Demo 存储库,您可以使用它来开始使用。

此存储库演示了如何使用 FluxCD 部署 launchpad chart。

该存储库是可复制的,因此您可以尝试一下。

我正在使用 Flux、kind 和 tilt 文件。这将创建一个具有 kind 的 Kubernetes 集群。所以这不是为了生产,而是为了开发。kind 代表 Kubernetes 和 Docker,因此只要你的机器上安装了 Docker,它就会创建一个集群,你可以在 Kubernetes 上开发、测试和部署应用程序。

集群将部署一组组件:Cilium、Cilium Envoy、负载均衡器 ID,它还将引导 Flux。

对于此集群,在使用 Flux 时,您需要将所有基础设施作为代码。您可以使用 Flux 和 Kubernetes 来扩展和部署任意数量的区块链或任意数量的组件,而不是使用 Docker Compose。

区块链越多,节点越多,使用 Docker Compose 进行扩展就越困难,并且该过程变得越手动,因此,如果您切换到 Kubernetes,则可以更轻松地创建新区块链并向集群添加内容。

基础设施:

  • 监控栈:kube-prometheus-stack
  • Launchpad 图表
  • PostgreSQL 运算符,用于在 Kubernetes 中引导 PostgreSQL 数据库
  • cert-manager 自动对颁发者执行 TLS
  • 自动更新图表

察看 50:09 的集群运行情况。

Matthew |Pinax:谢谢Guillaume。这肯定是匆忙的,所以我认为我们需要在以后的会议中再次讨论这个问题。但这里的想法是尝试构建一些东西,让人们开始使用 Kubernetes 并克服“Kubernetes 很复杂,我没有时间看它”的问题。这样你就可以在本地计算机上运行一些东西,所以它非常神奇。您可以克隆存储库并让这些东西运行,而无需太多工作。

Guillaume:希望它能自动工作。😁

Abel |GraphOps:我们肯定会安排另一场有更多时间的会议。一旦人们有时间仔细查看它,甚至可能值得再次浏览该演示。

Matthew:人们在开始时的任何问题也会有所帮助。要开始使用 Kubernetes,您需要了解哪些信息?Guillaume 快速介绍了很多概念,谈到了基础设施代码,以及当您在 GitHub 中更改内容时系统会自动部署所有内容。因此,无需运行 Kubectl 或手动部署。

它还采用了与 Launchpad 不同的方法。人们在 Kubernetes 中做事的方法不同。如果我们要调查 20 个索引器,你可能会得到 20 种不同的工作原理,所以这里的部分想法是展示我们正在做的事情的一部分,然后我们可以帮助解释为什么事情会以这种方式完成。

Chris |GraphOps:Matthew,只是一个小小的提醒。Launchpad 是超级模块化的,并且有很多组件。显然有 Launchpad 图表,您在此示例中使用的是 Launchpad 图表。这与 Launchpad Namespaces 编排这些图表的方法略有不同,是的,很高兴能在那里讨论权衡。

Matthew:这是 Launchpad 的一大亮点,它非常模块化,因此如果人们想要其他东西,可以拿起他们喜欢的部分并做其他事情。Vince 想以另一种方式做事,这完全没问题,Vince,我知道你已经和一群不同的人谈过了,他们对事情的运作方式有不同的看法。

Vince |Nodeify:是的,我认为无论如何这都是一个很棒的介绍,因为你可以看很多介绍,但真正的唯一方法是玩它并用头撞键盘,我认为这是一个很好的方法。

来自聊天:

chris.eth |GraphOps:这是 Guillaume 部署的图形节点图:Graph节点 Helm 图

还有一个 graph-network-indexer 图表,其中包含 indexer-agent、indexer-service-rs 和 indexer-tap-agent:graph-network-indexer helm chart

Vince |Nodeify:Argo CD、FluxCD、Launchpad一个宗教问题。

chris.eth |GraphOps: Argo + Helmfile 两者兼而有之。但是,是的这是宗教的。

Vince |Nodeify:Nano

Guillaume |Pinax:我只用 ed,其他都是 bloit。

Vincent |Data Nexus:我认为现在最热门的是 Neovim,哈哈。

(相关专业名词、注释、代码库、超链接等请关注博客查找)

#web3数据索引 #区块链数据 #开发者

评论

所有评论

推荐阅读