依赖
1.拉取代码
- Rust (latest stable) – How to install Rust
- PostgreSQL – PostgreSQL Downloads
- IPFS – Installing IPFS
git clone https://github.com/ensdomains/ens-subgraph git clone https://github.com/graphprotocol/graph-node //我使用这个版本报错 wget https://github.com/graphprotocol/graph-node/archive/refs/tags/v0.25.2.tar.gz tar -zxvf v0.25.2.tar.gz2.安装依赖项
-
安装 IPFS 初始化ipfs init,然后运行ipfs daemon。
-
安装PostgreSQLsudo apt-get install postgresql输入initdb -D .postgres,然后运行pg_ctl -D .postgres -l logfile start和createdb graph-node
以用户postgres进入postgresqlsudo -i -u postgres,输入 psql正常显示版本则正确。如报错可能需要重启postgresql,或者需要sudo apt-get install -y clang libpq-dev libssl-dev pkg-config。
psql 数据库名 --连接数据库 select rolname,rolpassword from pg_authid;--查看用户名密码 select usename,passwd from pg_shadow;--查看用户名密码 select version(); -- 查看版本 select current_database();--查看当前数据库 l --查看所有数据库 dt --查看表 password username --修改密码 password --设置密码。 ? --查看psql命令列表。 c [database_name] --连接其他数据库,切换数据库。 conninfo --列出当前数据库和连接的信息。 d --列出当前数据库的所有表格。 d [table_name] --列出某一张表格的结构。 du --列出所有用户。 e --打开文本编辑器。 help --帮助 h --查看SQL命令的解释,比如h select。 q --退出 sudo /etc/init.d/postgresql start # 开启 sudo /etc/init.d/postgresql stop # 关闭 sudo /etc/init.d/postgresql restart # 重启 此步骤为postgresql的安装、初始化、启用日志、创建数据库
-
如果使用Ubuntu,您可能需要安装其他软件包:sudo apt-get install -y clang libpq-dev libssl-dev pkg-config
-
cenos, yum install -y openssl-devel
cd ens-subgraph 更改其中的subgraph.yaml
specVersion: 0.0.3
description: >-
A secure & decentralized way to address resources on and off the blockchain
using simple, human-readable names. Access domains and transfer history.
repository: 'https://github.com/ensdomains/ens-subgraph'
schema:
file: ./schema.graphql
dataSources:
- kind: ethereum/contract
name: ENSRegistry
network: goerli
source:
address: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e'
abi: EnsRegistry
mapping:
kind: ethereum/events
apiVersion: 0.0.5
language: wasm/assemblyscript
file: ./src/ensRegistry.ts
entities:
- Domain
- Account
- Resolver
abis:
- name: EnsRegistry
file: ./abis/Registry.json
eventHandlers:
- event: 'Transfer(indexed bytes32,address)'
handler: handleTransfer
- event: 'NewOwner(indexed bytes32,indexed bytes32,address)'
handler: handleNewOwner
- event: 'NewResolver(indexed bytes32,address)'
handler: handleNewResolver
- event: 'NewTTL(indexed bytes32,uint64)'
handler: handleNewTTL
- kind: ethereum/contract
name: ENSRegistryOld
network: goerli
source:
address: '0x112234455c3a32fd11230c42e7bccd4a84e02010'
abi: EnsRegistry
mapping:
kind: ethereum/events
apiVersion: 0.0.5
language: wasm/assemblyscript
file: ./src/ensRegistry.ts
entities:
- Domain
- Account
- Resolver
abis:
- name: EnsRegistry
file: ./abis/Registry.json
eventHandlers:
- event: 'Transfer(indexed bytes32,address)'
handler: handleTransferOldRegistry
- event: 'NewOwner(indexed bytes32,indexed bytes32,address)'
handler: handleNewOwnerOldRegistry
- event: 'NewResolver(indexed bytes32,address)'
handler: handleNewResolverOldRegistry
- event: 'NewTTL(indexed bytes32,uint64)'
handler: handleNewTTLOldRegistry
- kind: ethereum/contract
name: Resolver
network: goerli
source:
address: '0xfF77b96d6bafCec0D684bB528b22e0Ab09C70663'
abi: Resolver
mapping:
kind: ethereum/events
apiVersion: 0.0.5
language: wasm/assemblyscript
file: ./src/resolver.ts
entities:
- AddrChanged
- MulticoinAddrChanged
- NameChanged
- AbiChanged
- PubkeyChanged
- Textchanged
- ContenthashChanged
- InterfaceChanged
- AuthorisationChanged
abis:
- name: Resolver
file: ./abis/PublicResolver.json
eventHandlers:
- event: 'ABIChanged(indexed bytes32,indexed uint256)'
handler: handleABIChanged
- event: 'AddrChanged(indexed bytes32,address)'
handler: handleAddrChanged
- event: 'AddressChanged(indexed bytes32,uint256,bytes)'
handler: handleMulticoinAddrChanged
- event: >-
AuthorisationChanged(indexed bytes32,indexed address,indexed
address,bool)
handler: handleAuthorisationChanged
- event: 'ContenthashChanged(indexed bytes32,bytes)'
handler: handleContentHashChanged
- event: 'InterfaceChanged(indexed bytes32,indexed bytes4,address)'
handler: handleInterfaceChanged
- event: 'NameChanged(indexed bytes32,string)'
handler: handleNameChanged
- event: 'PubkeyChanged(indexed bytes32,bytes32,bytes32)'
handler: handlePubkeyChanged
- event: 'TextChanged(indexed bytes32,indexed string,string)'
handler: handleTextChanged
- kind: ethereum/contract
name: BaseRegistrar
network: goerli
source:
address: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85'
abi: BaseRegistrar
mapping:
kind: ethereum/events
apiVersion: 0.0.5
language: wasm/assemblyscript
file: ./src/ethRegistrar.ts
entities:
- Registration
- NameRegistered
- NameRenewed
- NameTransferred
abis:
- name: BaseRegistrar
file: ./abis/BaseRegistrar.json
eventHandlers:
- event: 'NameRegistered(indexed uint256,indexed address,uint256)'
handler: handleNameRegistered
- event: 'NameRenewed(indexed uint256,uint256)'
handler: handleNameRenewed
- event: 'Transfer(indexed address,indexed address,indexed uint256)'
handler: handleNameTransferred
- kind: ethereum/contract
name: EthRegistrarController
network: goerli
source:
address: '0x283Af0B28c62C092C9727F1Ee09c02CA627EB7F5'
abi: EthRegistrarController
mapping:
kind: ethereum/events
apiVersion: 0.0.5
language: wasm/assemblyscript
file: ./src/ethRegistrar.ts
entities:
- Registration
abis:
- name: EthRegistrarController
file: ./abis/EthRegistrarController.json
eventHandlers:
- event: >-
NameRegistered(string,indexed bytes32,indexed
address,uint256,uint256)
handler: handleNameRegisteredByController
- event: 'NameRenewed(string,indexed bytes32,uint256,uint256)'
handler: handleNameRenewedByController
yarn yarn codegen4.编译启动graph-node
cd graph-node//cd graph-node-0.25.2 cargo build cargo run -p graph-node --release -- --postgres-url postgresql://postgres:postgres@localhost:5432/graph-node --ethereum-rpc goerli:http://192.168.36.150:9545 --ipfs 127.0.0.1:5001参数说明
- postgresql 用户名为USERNAME和PASSWORD。密码可能是可选的。这取决于你的设置。上面的账号密码为postgres:postgres
- rpc 为网络名称 : url
- 注意看graph-node的数据库和端口号是否正确
创建 yarn create-local 添加监听 yarn deploy-local



