Subgraph
🇬 The Hop Protocol v1 Subgraphs for The Graph
Install / Use
/learn @hop-protocol/SubgraphREADME
Hop Subgraph
The Hop Protocol Subgraph for The Graph.
Subgraphs
Mainnet
Goerli
Development
Authenticate
npx graph auth https://api.thegraph.com/deploy/ <access-token>
The access token is found on the hosted-service dashboard.
Instructions to Add new chain config or new addresses
-
Update
scripts/mapping_config.jsonwith the new chain network and subgraph name mapping. -
Update the
@hop-protocol/sdkpackage version inpackage.json. -
Add the
build-deploynpm script inpackage.json. -
Update
.gitignoreandclean.sh(this step can probably be automated). -
Run
npm ito install the latest@hop-protocol/sdkpackage -
Run
npm run generate-config-jsonto create the updated config files
The config generation script is run automatically when building the subgraph with npm build-deploy command and can also be ran with npm run generate-config-json.
The generation script scripts/generate_config_json.js will read the chain/token config from @hop-protocol/sdk and output/override the config JSON files to config/.
-
After bumping the version of
@hop-protocol/sdkinpackage.jsonand pushing to github and github action finishes building the docker image, run the following commands to build and deploy the subgraph locally or on a server using docker compose:
# change this values to deploy a different subgraph. Refer to `scripts/mapping_config.json` for the subgraph name
export NETWORK=base-goerli
export RPC=https://goerli.base.org
# download docker-compose file
wget https://raw.githubusercontent.com/hop-protocol/subgraph/master/docker-compose.yml
# start services
# the `-d` is used to run in background
# the `--pull=always` is used to update the image when there is one available
# NOTE: The NETWORK and RPC are redundant, but sometimes cause issues if they do not exist
sudo RPC=https://rpc.linea.build NETWORK=linea docker compose up --pull=always
After a minute or so the graph should be available at http://localhost:8000/subgraphs/name/hop-protocol/hop-base-goerli/graphql
- Troubleshooting
- If your server is unreachable from outside, ensure you enabled port
8000with UFW- Disable and enable UFW after this
Pre-setup notes
These are deprecated in favor of the local Docker instructions. Only reference these if Docker is not used.
# Required for AbortController
nvm install 16.6.1
nvm use 16.6.1
# Various requirements
sudo apt install npm
sudo apt install -y jq
npm i @graphprotocol/graph-cli@0.53.0
Troubleshooting
-
Depending on your NPM version, oboe@2.1.4 & multiaddr@6.1.1 appears to hang when installing NPM packages. In reality, they just take a long time to install (up to or over an hour, depending on the instance type & resources).
-
Auth key starts with 70cc
-
When setting it up locally and running a load balancer, each of these should work for debugging at various stages
- http://ec2...com:8000/subgraphs/name/hop-protocol/hop-base-mainnet
- http://lb...com/subgraphs/name/hop-protocol/hop-base-mainnet
- https://base.subgraph.hop.exchange/subgraphs/name/hop-protocol/hop-base
-
If you get the following error, you need to run comment out two lines in
buildfile.template.sh
# Error
Failed to deploy to Graph node https://api.thegraph.com/deploy/: subgraph failure::Subgraph [hop-protocol/hop-base-mainnet] not found
# Lines to comment
npx graph auth https://api.thegraph.com/deploy/ $ACCESS_TOKEN
npx graph deploy --product hosted-service --ipfs https://api.thegraph.com/ipfs/ --node https://api.thegraph.com/deploy/ "$GITHUB_ORG/{{subgraphName}}"
Build and deploy
npm run build-deploy:mainnet
npm run build-deploy:mainnet-subgraph-studio
npm run build-deploy:polygon
npm run build-deploy:xdai
npm run build-deploy:optimism
npm run build-deploy:arbitrum
# testnet
npm run build-deploy:goerli
npm run build-deploy:mumbai
npm run build-deploy:optimism-goerli
# local
npm run build-deploy:arbitrum-goerli
npm run build-deploy:nova
npm run build-deploy:zksync
npm run build-deploy:base-goerli
npm run build-deploy:base-mainnet
npm run build-deploy:linea
npm run build-deploy:polygonzk
By default, it will deploy under hop-protocol github org.
Set GITHUB_ORG to deploy another a different account.
Example:
GITHUB_ORG=<github-username> npm run build-deploy:mainnet
The following subgraphs will need to be created on the dashboard:
hop-mainnethop-polygonhop-xdaihop-optimismhop-arbitrumhop-goerlihop-mumbaihop-optimism-goerli
Clean build files:
npm run clean
Deploying locally:
Update networks in docker-compose.yml:
For Optimism Regenesis:
ethereum: 'optimism:https://mainnet-replica-4.optimism.io'
For Arbitrum Nova:
ethereum: 'nova:https://nova.arbitrum.io/rpc'
For zkSync:
ethereum: 'zksync:https://zksync2-testnet.zksync.dev'
For Base:
ethereum: 'base-mainnet:https://developer-access-mainnet.base.org'
For Linea:
ethereum: 'linea:https://rpc.linea.build'
For Polygonzk:
ethereum: 'polygonzk:https://zkevm-rpc.com'
For Linea (Goerli):
ethereum: 'linea-goerli:https://consensys-zkevm-goerli-prealpha.infura.io/v3/YOUR_PROJECT_ID'
For Base (Goerli):
ethereum: 'base-goerli:https://goerli.base.org'
For Arbitrum (Goerli):
ethereum: 'arbitrum-goerli:https://goerli-rollup.arbitrum.io/rpc'
Start containers:
docker-compose up
Create local subgraph (in another terminal):
For Optimism Regenesis:
npx graph create hop-protocol/hop-optimism --node http://127.0.0.1:8020
For Arbitrum Nova:
npx graph create hop-protocol/hop-nova --node http://127.0.0.1:8020
For zkSync:
npx graph create hop-protocol/hop-zksync --node http://127.0.0.1:8020
For Base:
npx graph create hop-protocol/hop-base-mainnet --node http://127.0.0.1:8020
For Base:
npx graph create hop-protocol/hop-linea --node http://127.0.0.1:8020
For Polygonzk:
npx graph create hop-protocol/hop-polygonzk --node http://127.0.0.1:8020
For Linea (Goerli):
npx graph create hop-protocol/hop-linea-goerli --node http://127.0.0.1:8020
For Base (Goerli):
npx graph create hop-protocol/hop-base-goerli --node http://127.0.0.1:8020
For Arbitrum (Goerli):
npx graph create hop-protocol/hop-arbitrum-goerli --node http://127.0.0.1:8020
Deploy subgraph after building (add this line at the bottom of buildfiles.template.sh and comment out existing npx graph deploy line):
For Optimism Regenesis:
npx graph deploy --ipfs http://localhost:5001 --node http://localhost:8020 hop-protocol/hop-optimism
For Arbitrum Nova:
npx graph deploy --ipfs http://localhost:5001 --node http://localhost:8020 hop-protocol/hop-nova
For zkSync:
npx graph deploy --ipfs http://localhost:5001 --node http://localhost:8020 hop-protocol/hop-zksync
For Base:
npx graph deploy --ipfs http://localhost:5001 --node http://localhost:8020 hop-protocol/hop-base-mainnet
For Linea:
npx graph deploy --ipfs http://localhost:5001 --node http://localhost:8020 hop-protocol/hop-linea
For Polygonzk:
npx graph deploy --ipfs http://localhost:5001 --node http://localhost:8020 hop-protocol/hop-polygonzk
For Linea (Goerli):
npx graph deploy --ipfs http://localhost:5001 --node http://localhost:8020 hop-protocol/hop-linea-goerli
For Base (Goerli):
npx graph deploy --ipfs http://localhost:5001 --node http://localhost:8020 hop-protocol/hop-base-goerli
For Arbitrum (Goerli):
npx graph deploy --debug --ipfs http://localhost:5001 --node http://localhost:8020 hop-protocol/hop-arbitrum-goerli
Build and deploy:
For Optimism Regenesis:
npm run build-deploy:optimism
For Arbitrum Nova:
npm run build-deploy:nova
For zkSync:
npm run build-deploy:zksync
For Base:
npm run build-deploy:base-mainnet
For Linea:
npm run build-deploy:linea
For Polygonzk:
npm run build-deploy:polygonzk
For Linea (Goerli):
npm run build-deploy:linea-goerli
For Base (Goerli):
npm run build-deploy:base-goerli
For Arbitrum (Goerli):
npm run build-deploy:arbitrum-goerli
Query subgraphs
For Optimism Regenesis:
http://localhost:8000/subgraphs/name/hop-protocol/hop-optimism
For Arbitrum Nova:
http://localhost:8000/subgraphs/name/hop-protocol/hop-nova
For zkSync:
http://localhost:8000/subgraphs/name/hop-protocol/hop-zksync
For Base:
http://localhost:8000/subgraphs/name/hop-protocol/hop-base-mainnet
For Linea:
http://localhost:8000/subgraphs/name/hop-protocol/hop-linea
For Polygonzk:
http://localhost:8000/subgraphs/name/hop-protocol/hop-polygonzk
For Linea (Goerli):
http://localhost:8000/subgraphs/name/hop-protocol/hop-linea-goerli
For Base (Goerli):
http://l
Related Skills
node-connect
344.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
96.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
