- Notifications
You must be signed in to change notification settings - Fork10
🇬 The Hop Protocol v1 Subgraphs for The Graph
License
hop-protocol/subgraph
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
The Hop Protocol Subgraph forThe Graph.
Mainnet
Goerli
npx graph auth https://api.thegraph.com/deploy/<access-token>
The access token is found on the hosted-servicedashboard.
Update
scripts/mapping_config.json
with the new chain network and subgraph name mapping.Update the
@hop-protocol/sdk
package version inpackage.json
.Add the
build-deploy
npm script inpackage.json
.Update
.gitignore
andclean.sh
(this step can probably be automated).Run
npm i
to install the latest@hop-protocol/sdk
packageRun
npm run generate-config-json
to create the updated config files
The config generation script is run automatically when building the subgraph with npmbuild-deploy
command and can also be ran withnpm run generate-config-json
.
The generation scriptscripts/generate_config_json.js
will read the chain/token config from@hop-protocol/sdk
and output/override the config JSON files toconfig/
.
After bumping the version of
@hop-protocol/sdk
inpackage.json
and pushing to github and github action finishes building thedocker 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 nameexport NETWORK=base-goerliexport RPC=https://goerli.base.org# download docker-compose filewget 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 existsudo RPC=https://rpc.linea.build NETWORK=linea docker compose up --pull=always
After a minute or so the graph should be available athttp://localhost:8000/subgraphs/name/hop-protocol/hop-base-goerli/graphql
- Troubleshooting
- If your server is unreachable from outside, ensure you enabled port
8000
with UFW- Disable and enable UFW after this
These are deprecated in favor of the local Docker instructions. Only reference these if Docker is not used.
# Required for AbortControllernvm install 16.6.1nvm use 16.6.1# Various requirementssudo apt install npmsudo apt install -y jqnpm i @graphprotocol/graph-cli@0.53.0
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
If you get the following error, you need to run comment out two lines in
buildfile.template.sh
# ErrorFailed to deploy to Graph node https://api.thegraph.com/deploy/: subgraph failure::Subgraph [hop-protocol/hop-base-mainnet] not found# Lines to commentnpx graph auth https://api.thegraph.com/deploy/ $ACCESS_TOKENnpx graph deploy --product hosted-service --ipfs https://api.thegraph.com/ipfs/ --node https://api.thegraph.com/deploy/ "$GITHUB_ORG/{{subgraphName}}"
npm run build-deploy:mainnetnpm run build-deploy:mainnet-subgraph-studionpm run build-deploy:polygonnpm run build-deploy:xdainpm run build-deploy:optimismnpm run build-deploy:arbitrum# testnetnpm run build-deploy:goerlinpm run build-deploy:mumbainpm run build-deploy:optimism-goerli# localnpm run build-deploy:arbitrum-goerlinpm run build-deploy:novanpm run build-deploy:zksyncnpm run build-deploy:base-goerlinpm run build-deploy:base-mainnetnpm run build-deploy:lineanpm run build-deploy:polygonzk
By default, it will deploy underhop-protocol
github org.
SetGITHUB_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-mainnet
hop-polygon
hop-xdai
hop-optimism
hop-arbitrum
hop-goerli
hop-mumbai
hop-optimism-goerli
npm run clean
Update networks indocker-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 ofbuildfiles.template.sh
and comment out existingnpx 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://localhost:8000/subgraphs/name/hop-protocol/hop-base-goerli
For Arbitrum (Goerli):
http://localhost:8000/subgraphs/name/hop-protocol/hop-arbitrum-goerli
Run github action build locally withact:
act --workflows .github/workflows/build.yml
About
🇬 The Hop Protocol v1 Subgraphs for The Graph