跳到主要内容

节点配置

Graph Node是索引子图并通过 GraphQL API 提供查询结果数据的组件。 因此,它是索引器堆栈的核心,Graph Node的正确操作对于运行成功的索引器至关重要。

此文提供了Graph Node的概述,以及一些索引器可用的更高级选项。 详细的文档和说明可以在Graph Node repository中找到。

Graph Node​

Graph Node 是在 The Graph Network 上为 Subgraphs 进行索引的参考实现,它连接区块链客户端,索引 subgraphs 并使索引的数据可供查询。

Graph Node(以及整个索引器堆栈)可以在裸机或云环境中运行。 该中心化索引组件的灵活性对于The Graph Protocol的鲁棒性至关重要。 Graph Node可以通过源代码编译构建,索引器可以使用提供的Docker镜像之一。

PostgreSQL 数据库​

Graph Node 的主要存储库,其中存储了 Subgraph 数据,以及关于 Subgraph 的元数据和与 Subgraph 无关的网络数据,例如块缓存和 eth_call 缓存。

网络客户端​

为了对一个网络进行索引,Graph Node需要通过EVM兼容的JSON-RPC API访问网络客户端。 该 RPC 可能连接到单个客户端,也可能是更复杂的设置,跨多个客户端进行负载均衡。

一些子图只需要一个全节点就能支持索引特性,而部分子图可能需要支持额外RPC功能的节点。 具体而言,作为索引的一部分进行eth_calls的子图将需要支持EIP-1898的存档节点,而具有callHandlers、blockHandlers和call过滤器的子图则需要支持trace_filter(请参见此处的跟踪模块文档)。

IPFS 节点​

Subgraph 部署元数据存储在 IPFS 网络中。 Graph Node主要在子图部署期间访问IPFS节点,以获取子图清单和所有链接文件。 网络索引程序不需要托管自己的IPFS节点。 网络的IPFS节点托管在https://ipfs.network.thegraph.com。

从源代码开始​

安装前置​

  • Rust
  • PostgreSQL
  • IPFS
  • Ubuntu 用户的额外要求 - 在 Ubuntu 上运行 Graph Node 需要安装一些额外的软件包。

sudo apt-get install -y clang libpg-dev libssl-dev pkg-config

设置​

  1. 启动 PostgreSQL 数据库服务器。

initdb -D .postgres pg_ctl -D .postgres -l logfile start createdb graph-node

  1. 克隆Graph Node仓库并通过运行cargo build构建源代码。
  2. 现在所有依赖项都设置好了,可以启动Graph Node了:

cargo run -p graph-node --release -- \ --postgres-url postgresql://[USERNAME]:[PASSWORD]@localhost:5432/graph-node \ --ethereum-rpc [NETWORK_NAME]:[URL] \ --ipfs https://ipfs.network.thegraph.com

从使用 Docker开始​

前提条件​

  • Ethereum node - 默认情况下,docker compose设置将使用 mainnet: http://host.docker.internal:8545 连接到您主机上的以太坊节点。 你可以通过更新docker-compose.yml文件中的网络名称和URL来替换此设置。

设置​

  1. 克隆Graph Node并切换到Docker目录:

git clone http://github.com/graphprotocol/graph-node cd graph-node/docker

  1. 对于 Linux 用户 - 使用包含在脚本中的以下命令,将 docker-compose.yml 文件中的 host.docker.internal 替换为主机的 IP 地址:

./setup.sh

  1. 启动一个本地的Graph Node,使其连接到你的Ethereum节点:

docker-compose up

参考资料

https://thegraph.com/docs/en/operating-graph-node/

https://hub.docker.com/r/graphprotocol/graph-node/

https://github.com/pranavdaa/Graph-Node-Local