跳到主要内容

节点配置

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

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

Graph Node​

Graph Node 是The Graph Network上索引子图的参考实现,连接区块链客户端,索引子图并使索引数据可供查询。

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或带有 call 过滤器的 blockHandlers 的子图则需要 trace_filter 支持 (请查看此处的trace模块文档)。

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 repo并通过运行 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开始​

前提条件​

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

设置​

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

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

  1. For linux users only - Use the host IP address instead of host.docker.internal in the docker-compose.ymlusing the included script:

./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