Checkpoint also exposes some queries to inspect the internal state of how the indexer is running. Typically, internal queries are usually prefixed with an underscore (_
) and are structured in a similar way to how Entity Schema queries are generated.
Currently, Checkpoint exposes the following internal data queries:
These are used to query single or multiple metadata records. Metadata records are key-value pairs of data used by Checkpoint internally to describe the state of its process. These queries are defined as:
type Query {
""" queries a single metadata value by it's id (key) """
_metadata(id: ID!): _Metadata
""" queries multiple metadata values """
_metadatas(
first: Int
skip: Int
orderBy: String
orderDirection: OrderDirection
where: Where_Metadata
): [_Metadata]
}
""" Core metadata values used internally by Checkpoint """
type _Metadata {
""" example id: last_indexed_block """
id: ID!
value: String
}
For starters, you can execute the following query to see a list of all metadata values exposed by Checkpoint:
query {
_metadatas {
id
value
}
}
Internally, Checkpoint keeps track of blocks where contracts event are found. These records are usually used by Checkpoint to speed up re-indexing when restarted. The _checkpoint(s)
queries provide a way to query these blocks. The results can be exported and used to seed another Checkpoint instance running on another machine.
These queries are defined as:
type Query {
""" queries a single _checkpoint entry by it's id"""
_checkpoint(id: ID!): _Checkpoint
""" queries multiple _checkpoint entires """
_checkpoints(
first: Int
skip: Int
orderBy: String
orderDirection: OrderDirection
where: Where_Checkpoint
): [_Checkpoint]
}
""" Contract and Block where its event is found. """
type _Checkpoint {
""" id computed as last 5 bytes of sha256(contract+block) """
id: ID!
block_number: Int!
contract_address: String!
}
For example, you can run the following query to fetch all blocks where the event of a particular contract can be found:
query {
_checkpoints(where: {
contract_address: "0x<contract-address>"
}) {
block_number
}
}