A Fuel Indexer Project
Use Cases
The Fuel indexer project can currently be used in a number of different ways:
- as tooling to interact with indexers
- as a standalone service
- as a part of a larger Fuel project, alongside other components of the Fuel ecosystem (e.g. Sway smart contracts)
We'll describe these three different use cases below.
As tooling to interact with indexers
The Fuel indexer provides functionality to make it easy to build and compile arbitrary indexers by using the forc index
CLI tool. Using forc index
, users can create, build, deploy, and remove indexers, as well as authenticate against a running indexer service, and check the status of running indexers.
Example
Create, deploy, and check the status of a new indexer.
forc index new fuel && \
cd fuel && forc index deploy --url http://indexer.fuel.network && \
forc index status --url http://indexer.fuel.network --auth $MY_TOKEN
As a standalone service
You can also start the Fuel indexer as a standalone service that connects to a Fuel node in order to monitor the Fuel blockchain for new blocks and transactions. To do so, run the requisite database migrations, adjust the configuration to connect to a Fuel node, and start the service.
Example
Create, deploy, and check the status of a new indexer.
fuel-indexer run \
--network beta-4 \
--run-migrations \
--accept-sql-queries \
--replace-indexer
As part of a Fuel project
Finally, you can run the Fuel indexer as part of a project that uses other components of the Fuel ecosystem, such as Sway. The convention for a Fuel project layout including an indexer is as follows:
.
├── contracts
│ └── hello-contract
│ ├── Forc.toml
│ └── src
│ └── main.sw
├── frontend
│ └── index.html
└── indexer
└── hello-indexer
├── Cargo.toml
├── hello_indexer.manifest.yaml
├── schema
│ └── hello_indexer.schema.graphql
└── src
└── lib.rs
An Indexer Project at a Glance
Every Fuel indexer project requires three components: