Skip to main content
The same composable funding primitives that power the REST /api/sol/funding/* endpoints, exposed over GraphQL. GraphQL is the preferred surface for large wallet sets: REST caps at 150 wallets per request to fit under proxy URL-length limits, while GraphQL takes the same [String!]! list in the JSON body with no URL-length constraint. The same per-request work cap (150) still applies inside the resolver. All five fields share two side effects with their REST twins:
  • enrichmentEnqueued: any wallet without an observed funding row is queued for an async RPC backfill. The next request returns the resolved event (or a terminal rpc_unresolved row).
  • CEX noise filter (fundingCluster only): a “cluster” covering more than 50% of the input wallets is treated as a CEX/exchange hot wallet, dropped, and its members demoted to unclustered.

fundingLookup

For each wallet, returns the first observed inbound SOL funding event.

Arguments

Return type

Example


fundedBy

Reverse lookup — for each funder, the wallets it has funded, ordered by fundedAt DESC.

Arguments

Return type

Example


fundingChain

Walks funding ancestry up to depth levels for each input wallet. One ClickHouse round trip per level (batched across all chain heads).

Arguments

Return type

The chain stops at a wallet with no observed funder or when depth is exceeded.

fundingCluster

Groups wallets that share a common funding ancestor within depth levels. The single most useful primitive — bubblemap clustering, sniper-farm detection, and “wallets bought from the same dispenser” all reduce to this.

Arguments

Return type


holderEdges

Direct user-to-user transfer edges among a wallet set, scoped to one mint. Edges are canonical (a < b lex), undirected, and aggregated — repeated transfers between the same pair collapse to one row with a transfers count.

Arguments

Return type

Example: bubblemap one-shot

A single round trip pulls every primitive the bubblemap renders.