Ponder Indexer
Multi-chain event indexing with GraphQL API powered by Ponder
What is Ponder?
Ponder is a modern blockchain indexing framework that automatically indexes events from multiple chains and provides a type-safe GraphQL API for querying indexed data.
Multi-Chain
Indexes events from both Mantle Sepolia and Sapphire Testnet in a unified database
Real-Time
Auto-syncs with latest blocks and provides WebSocket subscriptions for live updates
Features
GraphQL API
Auto-generated GraphQL schema with type-safe queries and mutations
Type Generation
Automatically generates TypeScript types from your schema and ABIs
Database
SQLite for development, PostgreSQL for production with automatic migrations
Hot Reload
Changes to schema or event handlers automatically trigger re-indexing
What Ponder Indexes
The Cylend indexer tracks the following entities across both chains:
Deposits
Tracks all deposit buckets created by users
Actions
Records all encrypted actions (supply, borrow, repay, withdraw)
Positions
Maintains user lending positions (encrypted, only hash visible)
Liquidity
Aggregates protocol-wide liquidity metrics per token
Quick Start
Get the indexer running in a few steps:
- 1
Navigate to indexer directory
cd cylend-indexer - 2
Configure environment variables
Set RPC URLs in
.envfile (see Configuration) - 3
Start the indexer
npm run dev - 4
Access GraphQL playground
Open http://localhost:42069/graphql in your browser
The indexer will automatically sync from the deployment block. Initial indexing may take a few minutes depending on chain history.
Example Queries
Common GraphQL queries you can run:
Get User Deposits
query GetUserDeposits($address: String!) {
deposits(where: { depositor: $address }) {
items {
depositId
token
initialAmount
remainingAmount
released
createdAt
}
}
}Get User Actions
query GetUserActions($address: String!) {
actions(where: { user: $address }, orderBy: "createdAt", orderDirection: "desc") {
items {
actionId
actionType
status
createdAt
processedAt
}
}
}Get Liquidity Metrics
query GetLiquidity {
liquidities {
items {
token
totalDeposited
totalReserved
totalBorrowed
updatedAt
}
}
}For complete query examples and subscriptions, see the GraphQL Queries documentation.