+

thegraph私有区块链节点怎么部署

Posted by 咕🎨 on 2024-08-14
Words 903 and Reading Time 3 Minutes
Viewed Times

在 The Graph 上部署用于私有区块链节点的 Graph Node 是一个相对复杂的过程,涉及多个步骤,包括配置私有区块链节点、安装和配置 Graph Node 组件,以及创建和部署子图(Subgraph)。以下是一个简化的指南,帮助你在私有区块链上部署 The Graph:

1. 设置私有区块链节点

首先,你需要部署并运行一个私有区块链节点。这里假设你已经有一个基于以太坊的私有链在运行,例如通过 Geth(Go Ethereum)或 Parity(OpenEthereum)部署。

  • 启动节点: 确保你的节点正在运行并且能够接受 JSON-RPC 请求。可以通过以下命令启动 Geth 节点:

    1
    geth --networkid <your-network-id> --http --http.addr 0.0.0.0 --http.port 8545 --http.api eth,net,web3 --http.corsdomain "*"
  • 同步链: 确保节点与私有链完全同步,并且可以访问区块数据。

2. 安装 Graph Node

Graph Node 是 The Graph 的核心组件,负责从区块链节点中获取数据并索引。

a. 安装依赖

你需要安装以下依赖:

  • Rust (用于编译 Graph Node)
  • PostgreSQL (用于存储索引数据)
  • IPFS (用于存储子图)

b. 安装 Graph Node

  1. 克隆 Graph Node 仓库:

    1
    2
    git clone https://github.com/graphprotocol/graph-node.git
    cd graph-node
  2. 编译 Graph Node:

    1
    cargo build --release
  3. 运行 PostgreSQL 和 IPFS:

    确保 PostgreSQL 和 IPFS 服务正在运行。你可以通过 Docker 运行这些服务:

    1
    2
    docker run -d --name graph-postgres -e POSTGRES_PASSWORD=yourpassword -p 5432:5432 postgres
    docker run -d --name graph-ipfs -p 5001:5001 ipfs/go-ipfs:latest

c. 配置 Graph Node

  1. 创建 PostgreSQL 数据库:

    使用以下命令创建数据库:

    1
    psql -h localhost -U postgres -c "create database graph;"
  2. 启动 Graph Node:

    使用以下命令启动 Graph Node,并连接到你的私有区块链节点:

    1
    2
    3
    4
    5
    6
    7
    8
    cargo run -p graph-node --release -- \
    --postgres-url postgresql://postgres:yourpassword@localhost:5432/graph \
    --ethereum-rpc <your-private-chain-name>:http://localhost:8545 \
    --ipfs 127.0.0.1:5001 \
    --http-port 8000 \
    --ws-port 8001 \
    --admin-port 8020 \
    --index-node-port 8030

    这里,<your-private-chain-name> 是你为私有链节点设置的名称。

3. 创建和部署子图 (Subgraph)

a. 创建子图

  1. 安装 Subgraph CLI:

    使用 npm 安装 The Graph 的 CLI 工具:

    1
    npm install -g @graphprotocol/graph-cli
  2. 初始化子图:

    使用以下命令初始化子图:

    1
    graph init --from-contract <contract-address> --network <your-private-chain-name> <subgraph-name>  --abi <contract-abi>

    替换 <contract-address> 为你要索引的智能合约地址,<your-private-chain-name> 为你在 Graph Node 配置中使用的私有链名称。

  3. 编辑子图文件:

    进入子图目录,编辑 subgraph.yamlschema.graphqlmapping.ts 文件,定义你要索引的数据结构和映射逻辑。

b. 部署子图

  1. 生成子图代码:

    使用以下命令生成子图代码:

    1
    graph codegen
  2. 构建子图:

    使用以下命令构建子图:

    1
    graph build
  3. 部署子图:

    使用以下命令将子图部署到你的 Graph Node 实例:

    1
    graph deploy --node http://localhost:8020/ <subgraph-name>

    http://localhost:8020/ 是 Graph Node 的管理端口。

4. 查询子图

子图部署成功后,你可以通过 Graph Node 提供的 GraphQL 接口查询数据:

  • GraphQL 查询端点通常为 http://localhost:8000/subgraphs/name/<subgraph-name>

你可以使用 GraphiQL 或其他 GraphQL 客户端来执行查询。

总结

通过以上步骤,你可以在私有区块链上部署 The Graph Node,并创建、部署子图。这个过程涉及到区块链节点、Graph Node、PostgreSQL 和 IPFS 的配置和联动。确保所有服务都正确运行,并且子图配置正确无误,才能顺利完成数据的索引和查询。


...

...

00:00
00:00