메인 콘텐츠로 건너뛰기

개요

chainstream-graphql 스킬은 AI 에이전트에게 GraphQL을 통한 ChainStream 온체인 데이터 웨어하우스에 대한 유연한 SQL 유사 접근을 제공합니다. 사전 구축된 REST/MCP 엔드포인트로 표현력이 부족할 때 — 큐브 간 JOIN, 커스텀 집계, 다중 조건 필터, 커스텀 시계열 해상도, 또는 GraphQL로만 노출된 데이터(예: PolyMarket 예측 큐브) — 적합한 도구입니다.
  • 패턴: Tool (읽기 전용, 서명 불필요)
  • 엔드포인트: https://graphql.chainstream.io/graphql (APISIX 경유)
  • CLI: npx @chainstream-io/cli graphql
  • 인증: X-API-KEY를 통한 API Key 또는 SIWX 지갑 토큰
  • 결제: REST와 동일한 API Key / 구독 풀 (CLI가 x402 / MPP 자동 처리)
  • 범위: 3개 체인 그룹에 걸친 27개 큐브 — Solana, EVM(network: eth | bsc | polygon), Trading

사용 시점

chainstream-data와의 결정 매트릭스:
시나리오사용이유
표준 토큰 검색, 시장 트렌딩, 지갑 프로필chainstream-data사전 구축된 REST / MCP 엔드포인트, 더 간단
큐브 간 JOIN (trades + transfers, pools + events)chainstream-graphqljoinXxx 지원
커스텀 집계 (groupBy와 함께 count / sum / avg)chainstream-graphql메트릭 + 차원 그룹화
다중 조건 필터 (중첩, any를 통한 OR)chainstream-graphql전체 필터 연산자 세트
커스텀 해상도 / 버킷의 시계열chainstream-graphql시간 구간 버킷팅
예측 시장 데이터 (Polygon의 PolyMarket)chainstream-graphqlPredictionTrades / Managements / Settlements 큐브

통합 경로

채널 매트릭스

GraphQL은 서로 다른 호출자로부터 접근되는 단일 표면입니다:
작업CLI 명령어SDK 메서드
전체 큐브 조회 (요약)graphql schema --summaryN/A — 탐색에는 CLI 사용
하나의 큐브 상세 조회graphql schema --type <CubeName>N/A
전체 스키마 레퍼런스graphql schema --fullN/A
캐시된 스키마 강제 새로고침graphql schema --summary --refreshN/A
인라인 쿼리graphql query --query '<gql>'client.graphql.query(gql)
파일에서 쿼리graphql query --file ./q.graphqlclient.graphql.query(fs.readFileSync(...))
변수 포함 쿼리graphql query --query '...' --var '{"k":"v"}'client.graphql.query(gql, vars)
머신 판독 출력--json 추가네이티브 JSON 반환

AI 워크플로우

스키마 탐색

에이전트가 어떤 큐브가 필요한지 아직 모른다면 항상 여기서 시작하세요.
npx @chainstream-io/cli graphql schema --summary
npx @chainstream-io/cli graphql schema --type DEXTrades
--summary는 체인(EVM / Solana / Trading)별로 그룹화된 27개 큐브의 압축 카탈로그를 최상위 필드와 설명과 함께 반환합니다. --type은 쿼리 구성을 위해 하나의 큐브 필드 트리를 확장합니다.

쿼리 작성 및 실행

스키마는 최상위 진입점으로 체인 그룹 래퍼를 사용합니다.
query {
  Solana {
    DEXTrades(
      limit: { count: 25 }
      orderBy: { descending: Block_Time }
    ) {
      Block { Time }
      Trade {
        Buy  { Currency { MintAddress } Amount PriceInUSD }
        Sell { Currency { MintAddress } Amount }
        Dex  { ProtocolName }
      }
    }
  }
}
CLI로 실행:
npx @chainstream-io/cli graphql query --file ./query.graphql --json
또는 인라인:
npx @chainstream-io/cli graphql query \
  --query 'query { Solana { DEXTrades(limit:{count:5}) { Block { Time } } } }' \
  --json

쿼리 작성 빠른 레퍼런스

  • 체인 그룹 래퍼: 최상위 필수. Solana, EVM(network: ...), 또는 Trading.
  • network: EVM에만 적용. 값: eth, bsc, polygon.
  • limit: { count: N, offset: M }. 기본 25.
  • orderBy: { descending: Field } / { ascending: Field }. 계산된 필드에는 { descendingByField: "field_name" }.
  • where: { Group: { Field: { operator: value } } }. OR 조건은 any: [{...}, {...}].
  • DateTime 형식: "YYYY-MM-DD HH:MM:SS"T 없음, Z 없음 (ClickHouse 요구 사항).
  • DateTime 필터: since, till, after, before — DateTime 필드에는 절대 gt / lt 사용 금지.
  • joinXxx: 관련 큐브에 대한 LEFT JOIN. 여러 쿼리보다 우선.
  • dataset 래퍼 인자: realtime, archive, combined (기본).
  • aggregates 래퍼 인자: yes, no, only.

체인 그룹과 큐브

체인 그룹래퍼큐브
SolanaSolana { ... }DEXTrades, DEXTradeByTokens, Transfers, BalanceUpdates, Blocks, Transactions, DEXPools, Instructions, InstructionBalanceUpdates, Rewards, DEXOrders, TokenSupplyUpdates
EVMEVM(network: eth|bsc|polygon) { ... }DEXTrades, DEXTradeByTokens, Transfers, BalanceUpdates, Blocks, Transactions, DEXPoolEvents, Events, Calls, MinerRewards, DEXPoolSlippages, TokenHolders, TransactionBalances, Uncles, PredictionTrades*, PredictionManagements*, PredictionSettlements*
TradingTrading { ... }Pairs, Tokens, Currencies, Trades
* 예측 큐브는 polygon 네트워크에서만 사용 가능.

안전 규칙

이 규칙들은 쿼리의 정확성을 유지하고 쿼터 낭비를 피하기 위해 스킬에 의해 강제 적용됩니다.
규칙이유
평면 CubeName(network: sol) 사용 금지 — 항상 체인 그룹에 래핑서버가 래핑되지 않은 쿼리 거부
필드 이름 추측 금지 — 먼저 graphql schema --type <cube> 실행”필드가 존재하지 않습니다” 오류의 왕복 절약
ISO-8601 "2026-03-31T00:00:00Z" 사용 금지 — "2026-03-31 00:00:00" 사용ClickHouse DateTime 형식
DateTime에 gt / lt 사용 금지 — since / after / before / till 사용DateTime 필터는 이름 지정됨
joinXxx로 결합 가능한 관련 데이터를 여러 쿼리로 분리 금지여러 건 대신 한 번의 과금 요청
결제 플랜 자동 선택 금지 — 항상 사용자가 선택청구 동의

오류 복구

오류복구 방법
401 / “Not authenticated”config auth — 로그인되지 않은 경우 login 실행 (nano trial 자동 지급, 50K CU). 그 후 재시도.
402 / “Payment required”plan status; 활성 구독이 없으면 wallet pricingplan purchase --plan <choice>. x402 결제를 참고하세요.
GraphQL error: field X does not existgraphql schema --type <cube>에 대해 필드 재확인.
4291초 대기, 지수 백오프.
5xx2초 후 1회 재시도.

관련 문서

chainstream-data

토큰, 시장, 지갑 분석용 표준 REST/MCP 쿼리

chainstream-defi

분석 후 트레이딩 실행 — 스왑, 토큰 생성

GraphQL 접근 방식

엔드포인트 레퍼런스, 인증, 스키마 개요

CLI `graphql` 서브명령

chainstream graphql schemaquery 레퍼런스