在 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
克隆 Graph Node 仓库:
1
2git clone https://github.com/graphprotocol/graph-node.git
cd graph-node编译 Graph Node:
1
cargo build --release
运行 PostgreSQL 和 IPFS:
确保 PostgreSQL 和 IPFS 服务正在运行。你可以通过 Docker 运行这些服务:
1
2docker 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
创建 PostgreSQL 数据库:
使用以下命令创建数据库:
1
psql -h localhost -U postgres -c "create database graph;"
启动 Graph Node:
使用以下命令启动 Graph Node,并连接到你的私有区块链节点:
1
2
3
4
5
6
7
8cargo 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. 创建子图
安装 Subgraph CLI:
使用 npm 安装 The Graph 的 CLI 工具:
1
npm install -g @graphprotocol/graph-cli
初始化子图:
使用以下命令初始化子图:
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 配置中使用的私有链名称。编辑子图文件:
进入子图目录,编辑
subgraph.yaml
、schema.graphql
和mapping.ts
文件,定义你要索引的数据结构和映射逻辑。
b. 部署子图
生成子图代码:
使用以下命令生成子图代码:
1
graph codegen
构建子图:
使用以下命令构建子图:
1
graph build
部署子图:
使用以下命令将子图部署到你的 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 的配置和联动。确保所有服务都正确运行,并且子图配置正确无误,才能顺利完成数据的索引和查询。

...
...