https://github.com/atillabirer/algebra-raw-indexer
Subgraph indexer for algebra contracts
https://github.com/atillabirer/algebra-raw-indexer
Last synced: 4 months ago
JSON representation
Subgraph indexer for algebra contracts
- Host: GitHub
- URL: https://github.com/atillabirer/algebra-raw-indexer
- Owner: atillabirer
- Created: 2023-12-03T06:14:28.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-12-03T06:15:08.000Z (over 1 year ago)
- Last Synced: 2024-11-16T11:10:53.194Z (7 months ago)
- Language: TypeScript
- Size: 12.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SubQuery - Example Project for Moonbeam EVM
[SubQuery](https://subquery.network) is a fast, flexible, and reliable open-source data indexer that provides you with custom APIs for your web3 project across all of our supported networks. To learn about how to get started with SubQuery, [visit our docs](https://academy.subquery.network).
**This SubQuery project indexes all transfers and approval events for the [Solarflare token](https://moonscan.io/token/0xe3e43888fa7803cdc7bea478ab327cf1a0dc11a7) (`0xe3e43888fa7803cdc7bea478ab327cf1a0dc11a7`) on Moonbeam's EVM**
## Start
First, install SubQuery CLI globally on your terminal by using NPM `npm install -g @subql/cli`
You can either clone this GitHub repo, or use the `subql` CLI to bootstrap a clean project in the network of your choosing by running `subql init` and following the prompts.
Don't forget to install dependencies with `npm install` or `yarn install`!
## Editing your SubQuery project
Although this is a working example SubQuery project, you can edit the SubQuery project by changing the following files:
- The project manifest in `project.yaml` defines the key project configuration and mapping handler filters
- The GraphQL Schema (`schema.graphql`) defines the shape of the resulting data that you are using SubQuery to index
- The Mapping functions in `src/mappings/` directory are typescript functions that handle transformation logicSubQuery supports various layer-1 blockchain networks and provides [dedicated quick start guides](https://academy.subquery.network/quickstart/quickstart.html) as well as [detailed technical documentation](https://academy.subquery.network/build/introduction.html) for each of them.
## Run your project
_If you get stuck, find out how to get help below._
The simplest way to run your project is by running `yarn dev` or `npm run-script dev`. This does all of the following:
1. `yarn codegen` - Generates types from the GraphQL schema definition and contract ABIs and saves them in the `/src/types` directory. This must be done after each change to the `schema.graphql` file or the contract ABIs
2. `yarn build` - Builds and packages the SubQuery project into the `/dist` directory
3. `docker-compose pull && docker-compose up` - Runs a Docker container with an indexer, PostgeSQL DB, and a query service. This requires [Docker to be installed](https://docs.docker.com/engine/install) and running locally. The configuration for this container is set from your `docker-compose.yml`You can observe the three services start, and once all are running (it may take a few minutes on your first start), please open your browser and head to [http://localhost:3000](http://localhost:3000) - you should see a GraphQL playground showing with the schemas ready to query. [Read the docs for more information](https://academy.subquery.network/run_publish/run.html) or [explore the possible service configuration for running SubQuery](https://academy.subquery.network/run_publish/references.html).
## Query your project
For this project, you can try to query with the following GraphQL code to get a taste of how it works.
```graphql
{
query {
transactions(first: 5, orderBy: VALUE_DESC) {
totalCount
nodes {
id
from
to
value
contractAddress
}
}
}
approvals(first: 5) {
nodes {
id
owner
spender
value
contractAddress
}
}
}
```You can explore the different possible queries and entities to help you with GraphQL using the documentation draw on the right.
## Publish your project
SubQuery is open-source, meaning you have the freedom to run it in the following three ways:
- Locally on your own computer (or a cloud provider of your choosing), [view the instructions on how to run SubQuery Locally](https://academy.subquery.network/run_publish/run.html)
- By publishing it to our enterprise-level [Managed Service](https://managedservice.subquery.network), where we'll host your SubQuery project in production ready services for mission critical data with zero-downtime blue/green deployments. We even have a generous free tier. [Find out how](https://academy.subquery.network/run_publish/publish.html)
- [Coming Soon] By publishing it to the decentralised [SubQuery Network](https://subquery.network/network), the most open, performant, reliable, and scalable data service for dApp developers. The SubQuery Network indexes and services data to the global community in an incentivised and verifiable way## What Next?
Take a look at some of our advanced features to take your project to the next level!
- [**Multi-chain indexing support**](https://academy.subquery.network/build/multi-chain.html) - SubQuery allows you to index data from across different layer-1 networks into the same database, this allows you to query a single endpoint to get data for all supported networks.
- [**Dynamic Data Sources**](https://academy.subquery.network/build/dynamicdatasources.html) - When you want to index factory contracts, for example on a DEX or generative NFT project.
- [**Project Optimisation Advice**](https://academy.subquery.network/build/optimisation.html) - Some common tips on how to tweak your project to maximise performance.
- [**GraphQL Subscriptions**](https://academy.subquery.network/run_publish/subscription.html) - Build more reactive front end applications that subscribe to changes in your SubQuery project.## Need Help?
The fastest way to get support is by [searching our documentation](https://academy.subquery.network), or by [joining our discord](https://discord.com/invite/subquery) and messaging us in the `#technical-support` channel.