https://github.com/balancer/balancer-subgraph
Subgraph (Graph Protocol) data layer for Balancer pools, swaps, txs, users
https://github.com/balancer/balancer-subgraph
Last synced: 10 months ago
JSON representation
Subgraph (Graph Protocol) data layer for Balancer pools, swaps, txs, users
- Host: GitHub
- URL: https://github.com/balancer/balancer-subgraph
- Owner: balancer
- License: mit
- Created: 2019-10-27T16:44:50.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-12-07T22:24:03.000Z (over 4 years ago)
- Last Synced: 2025-04-14T13:57:52.043Z (about 1 year ago)
- Language: TypeScript
- Homepage:
- Size: 1.42 MB
- Stars: 69
- Watchers: 11
- Forks: 58
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Balancer Subgraph
The graphql schema is still under heavy development and will likely have major breaking changes.
Only the factory address is needed in subgraph.yaml, new pool addresses are automatically picked up using Graph Protocol's data source templates.
## Setup
### Prerequisites
- Global Yarn Packages
- ganache-cli
- truffle
- graph-cli
- Docker
### Services
Start a ganache chain using 0.0.0.0 as a host so docker can connect
```
ganache-cli -h 0.0.0.0 -d -l 4294967295 --allowUnlimitedContractSize
```
Run a local graph node
```
git clone https://github.com/graphprotocol/graph-node/
```
Update ethereum value in docker-compose.yml to `ganache:http://host.docker.internal:8545`
```
cd graph-node/docker
```
```
docker-compose up
```
To blow away graph-node settings
```
docker-compose kill && docker-compose rm -f && rm -rf data
```
### Contracts
Deploy balancer contracts using truffle. Using the `yarn deploy` script in balancer-dapp also makes this easy to test out the subgraph using the frontend.
### Subgraph
Clone the balancer subgraph
```
git clone git@github.com:balancer-labs/balancer-subgraph.git
```
Update factory address in subgraph.yaml to the one listed as part of the deploy
Install dependencies
```
yarn
```
Generate the graph code
```
yarn codegen
```
Create local node
```
yarn create:local
```
Deploy locally
```
yarn deploy:local
```
Any updates can be made to this repo and re-running `yarn deploy:local` without needing to re-initialize the environment.
## Running Locally With Parity Kovan Node
Start Parity:
```
parity --chain=kovan --jsonrpc-interface=0.0.0.0
```
Update ethereum value in docker-compose.yml to `kovan:http://host.docker.internal:8545`
Comment out try_ functions in pool.ts LN52-64
```
cd graph-node/docker
```
```
docker-compose up
```
Create local node
```
yarn create:local
```
Deploy locally
```
yarn deploy:local
```
To blow away graph-node settings
```
docker-compose kill && docker-compose rm -f && rm -rf data
```
## Queries
GraphiQL interface can be accessed on a dev env at: http://127.0.0.1:8000/subgraphs/name/balancer-labs/balancer-subgraph
**List of pools**
```GraphQL
{
pools {
id
controller
publicSwap
finalized
swapFee
totalWeight
totalShares
createTime
joinsCount
exitsCount
swapsCount
tokens {
id
poolId {
id
}
address
balance
denormWeight
}
shares {
id
poolId {
id
}
userAddress {
id
}
}
}
}
```
**Pools with 2 tokens**
```GraphQL
{
pools (where: {tokensList_contains: ["0x5b1869d9a4c187f2eaa108f3062412ecf0526b24", "0xcfeb869f69431e42cdb54a4f4f105c19c080a601"]}) {
id
publicSwap
swapFee
tokensList
tokens {
id
address
balance
denormWeight
}
}
}
```