Pourquoi un indexer custom ?
The Graph est génial, mais parfois vous avez besoin de plus de contrôle ou de fonctionnalités spécifiques.
Architecture
- Listener : Écoute les événements blockchain
- Processor : Transforme et enrichit les données
- Storage : Persiste en base de données
- API : Expose les données
Code du listener (Viem)
import { createPublicClient, http, parseAbiItem } from 'viem';
import { mainnet } from 'viem/chains';
const client = createPublicClient({
chain: mainnet,
transport: http(),
});
client.watchEvent({
address: CONTRACT_ADDRESS,
event: parseAbiItem('event Transfer(address indexed from, address indexed to, uint256 value)'),
onLogs: async (logs) => {
for (const log of logs) {
await processTransfer(log);
}
},
});
Gestion du rattrapage
Stockez le dernier bloc traité et reprenez à partir de là en cas de redémarrage.


