Data Providers
In a GroupGenerator , the most interesting part is to query data. We have developed dataProviders for that. We currently support:
  • GraphQLProvider: allows to launch arbitrary graphQL queries
  • BigQueryProvider: allows to launch arbitrary BigQuery queries on the ethereum mainnet and polygon dataset
  • SnapshotProvider: allows to query all voters for a proposal or for an entire space
  • SubgraphHostedServiceProvider: allows to launch arbitrary queries on any subGraph.
  • PoapSubgraphProvider: allows to retrieve all attenders of any events.
  • LensProvider: allows to retrieve followers and lens profiles.
You are very welcomed to modify or add your own provider by making a PR.
Let's use the SnapshotProvider provider to create your group:
const generator: GroupGenerator = {
generationFrequency: GenerationFrequency.Weekly,
generate: async (context: GenerationContext): Promise<GroupWithData[]> => {
// Instantiate your snapshot provider
const snapshotProvider = new dataProviders.SnapshotProvider();
// Query all voters
const voters = await snapshotProvider.queryAllVoters({
space: "ens.eth",
return [
name: "ens-voters",
timestamp: context.timestamp,
data: voters,
valueType: ValueType.Info,
tags: [Tags.Mainnet, Tags.Vote, Tags.User],
export default generator;
You saw how you could use data from the "outside" (through API) now see how to combine groups with each others using Data Operators.
Copy link