This Subgraph sources events from the Beefy LRT contracts in different networks.
- Git: git-scm.com
- Node.js: nodejs.org, see version in .nvmrc
- Yarn: yarnpkg.com
- Docker: docker.com
- Docker Compose: docker.com
yarn install
yarn infra:strat
yarn remove-local # if you have already deployed the subgraph
yarn create-local # create the subgraph locally
yarn prepare:<network> # apply configuration for the network
yarn codegen # generate the typescript types
yarn build # build the subgraph code
yarn deploy-local # deploy the subgraph locally
yarn test # run all tests
yarn test:graph # run only matchstick-as graph tests
yarn test:lint # run prettier linter
- Add the network configuration config/.json.
indexerHintPrune
is the number of blocks to keep for the indexer hint, aim for 2 months. Can be set to"auto"
to prune as much as possible. Recommended for performance and cost. Or set to"never"
to keep all updates history. (Thegraph docs)clockTickBlocks
is the number of blocks between each clock tick, aim for a clock tick every ~5 minutes.
- Add dev RPCs in graph-node config docker/graph-node/config.toml.
- Add a new
prepare:<network>
script in package.json. - Add the chain in
.github/workflows/Release.yml
to configure deployments. - Test the build
- Apply the configuration:
npm run prepare:<chain>
- Build the application:
npm run build
- Run Tests:
npm run test
- The PROD env is the uncommented url in the lrt-api .graphqlclient file
- Deploy the new chain in DEV:
./bin/deploy.sh <chain> <dev provider>
- Test the data in the dev provider subgraph explorer
- Manually deploy the new chain in PROD for the first version:
./bin/deploy.sh <chain> <dev provider>
- Apply the configuration:
- Update the
Deployments
section subgraph URLs in this README - Update the LRT API
- Standard formatting with
npm run format
- Create or update the schema.graphql file.
- See TheGraph docs for defining entities
- Run
yarn codegen
to generate the typescript types.
- See TheGraph docs for TypeScript code generation
- Update subgraph.template.yaml with the new entity bindings and/or data sources if needed.
- TheGraph docs for defining a call handler
- TheGraph docs for defining a block handler
- TheGraph docs for defining a data source template
- Update or create the mappings in the mappings folder to handle the new entity.
- TheGraph docs for defining mappings
- TheGraph AssemblyScript API
- Write tests for the new mappings in the tests folder.
- TheGraph docs for testing mappings
./bin/deploy.sh <network> goldsky
./bin/deploy.sh <network> 0xgraph
# or both
./bin/deploy.sh <network> goldsky 0xgraph
- Go to https://github.com/beefyfinance/lrt-subgraph/releases
- Add a new realease with a tag matching semver (tag matching X.X.X)
- Github actions will update all subgraph
- Monitor the indexing progress in the subgraph explorer