> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chainstream.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 체인 그룹

> Cubes가 EVM, Solana, Trading Chain Groups로 구성되는 방식

## 개요

ChainStream GraphQL은 25개의 Cube를 세 가지 **Chain Group**으로 묶습니다. 각 그룹은 블록체인 생태계를 나타내며, 어떤 Cube를 쓸 수 있는지, `network` 파라미터가 어떻게 동작하는지, 체인별 필드가 무엇인지를 결정합니다.

```graphql theme={null}
type ChainStream {
  EVM(network: Network!, dataset: Dataset, aggregates: Aggregates) { ... }
  Solana(network: SolanaNetwork, dataset: Dataset, aggregates: Aggregates) { ... }
  Trading(dataset: Dataset, aggregates: Aggregates) { ... }
}
```

***

## EVM

**EVM** 그룹에는 모든 EVM 호환 블록체인용 Cube가 포함됩니다. 조회할 체인을 지정하려면 **`network` 인자가 필수**입니다.

### 사용 가능한 네트워크

| 네트워크 ID   | 블록체인            |
| :-------- | :-------------- |
| `eth`     | Ethereum        |
| `bsc`     | BNB Chain (BSC) |
| `polygon` | Polygon         |

<Warning>
  **Polygon 데이터 가용성:** 현재 Polygon에서 데이터가 있는 Cube는 **예측 시장(Prediction Markets)** Cube(`PredictionTrades`, `PredictionManagements`, `PredictionSettlements`)뿐입니다. 다른 Cube(DEXTrades, Blocks, Transfers 등)는 배포 중이며, 해당 Cube에 대한 쿼리는 오류를 반환할 수 있습니다.
</Warning>

### Cube

**Solana와 공유:**
`DEXTrades`, `DEXTradeByTokens`, `Transfers`, `BalanceUpdates`, `DEXPoolEvents`, `TokenSupplyUpdates`, `Blocks`, `Transactions`, `TransactionBalances`, `DEXPools`, `TokenHolders`, `WalletTokenPnL`

**EVM 전용:**

* `Events` — 스마트 컨트랙트 이벤트 로그(디코딩된 topic·data)
* `Calls` — 내부 호출 트레이스(CALL, DELEGATECALL, CREATE 등)
* `MinerRewards` — 블록 보상 분해(static, dynamic, uncle, burned fees)
* `DEXPoolSlippages` — 풀 가격 슬리피지 분석
* `Uncles` — Uncle 블록 데이터(주로 Ethereum PoW 과거)
* `PredictionTrades` — 예측 시장 거래 *(주로 Polygon)*
* `PredictionManagements` — 예측 시장 관리 이벤트 *(주로 Polygon)*
* `PredictionSettlements` — 예측 시장 정산 *(주로 Polygon)*

### 예시 쿼리

```graphql theme={null}
query {
  EVM(network: eth, dataset: combined) {
    DEXTrades(
      limit: {count: 10}
      orderBy: {descending: Block_Time}
    ) {
      Block { Time Number }
      Transaction { Hash }
      Trade {
        Buy { Currency { SmartContract Symbol } Amount PriceInUSD }
        Sell { Currency { SmartContract Symbol } Amount }
        Dex { ProtocolName }
      }
    }
  }
}
```

***

## Solana

**Solana** 그룹에는 Solana 블록체인용 Cube가 들어 있습니다. `network` 인자를 사용할 수 있으며 값은 `solana`입니다. 선택 사항이며 기본값은 `solana`입니다.

### Cube

**EVM과 공유:**
`DEXTrades`, `DEXTradeByTokens`, `Transfers`, `BalanceUpdates`, `DEXPoolEvents`, `TokenSupplyUpdates`, `Blocks`, `Transactions`, `TransactionBalances`, `DEXPools`, `TokenHolders`, `WalletTokenPnL`

**Solana 전용:**

* `Instructions` — 프로그램 instruction 데이터(프로그램 주소, 메서드, 계정, 로그)
* `InstructionBalanceUpdates` — instruction 단위 잔액 변화
* `Rewards` — 검증자·스테이킹 보상
* `DEXOrders` — DEX 오더북 이벤트(지정가 주문, 취소, 체결)

### 예시 쿼리

```graphql theme={null}
query {
  Solana(dataset: realtime) {
    DEXTrades(
      limit: {count: 10}
      orderBy: {descending: Block_Time}
    ) {
      Block { Time Slot }
      Transaction { Hash }
      Trade {
        Buy { Currency { MintAddress Symbol } Amount PriceInUSD }
        Sell { Currency { MintAddress Symbol } Amount }
        Dex { ProgramAddress ProtocolName }
      }
    }
  }
}
```

### 체인 간 필드 이름

아래 표는 체인별 관례적인 필드 이름입니다. 다만 Record 타입에는 **모든 체인의 필드를 합친 superset**이 들어 있어, 모든 Cube의 Record에 `MintAddress`와 `SmartContract`가 함께 존재하며 동일한 기본 데이터를 가리킵니다. 어떤 체인에서든 둘 중 하나를 쓸 수 있습니다.

| 개념        | 관례(Solana)           | 관례(EVM)         | 크로스체인?         |
| :-------- | :------------------- | :-------------- | :------------- |
| 토큰 주소     | `MintAddress`        | `SmartContract` | 모든 체인에서 둘 다 동작 |
| 트랜잭션 ID   | `Signature` / `Hash` | `Hash`          | 모든 체인에서 둘 다 동작 |
| 블록 식별자    | `Slot`               | `Number`        | 모든 체인에서 둘 다 동작 |
| 프로그램/컨트랙트 | `ProgramAddress`     | `SmartContract` | 모든 체인에서 둘 다 동작 |
| 수수료 지불자   | `FeePayer`           | `From`          | 모든 체인에서 둘 다 동작 |

<Tip>
  즉 **하나의 쿼리 템플릿**으로 모든 체인을 다룰 때 필드 이름을 바꿀 필요가 없습니다. 예를 들어 Solana·EVM 쿼리 모두에서 `Currency { MintAddress }`가 동작합니다.
</Tip>

***

## Trading

**Trading** 그룹은 **크로스체인 사전 집계** 거래 분석을 제공합니다. 지원 체인 데이터를 통합한 materialized view에 `chain` 차원으로 필터링할 수 있습니다.

### Cube

* `Pairs` — OHLC 캔들(open/high/low/close, 거래량, 거래 건수)
* `Tokens` — 토큰별 거래 통계(거래량, 매수/매도 분해, 고유 트레이더 수)

### EVM/Solana 그룹과의 주요 차이

1. **`network` 인자 없음** — Trading은 체인을 합친 데이터입니다. 네트워크별 필터는 데이터 안의 `chain` 차원을 사용하세요.
2. **크로스체인 데이터** — 한 쿼리로 `sol`, `eth`, `bsc` 등을 함께 반환할 수 있습니다.
3. **사전 집계** — DWM 레이어에서 분 단위로 materialize된 데이터입니다.

### 예시: 크로스체인 OHLC

```graphql theme={null}
query {
  Trading(aggregates: yes) {
    Pairs(
      where: { Token: { Address: { is: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" } } }
      limit: {count: 60}
      orderBy: {descending: Block_Time}
    ) {
      Token { Address }
      Market { Network }
      Interval { Time }
      Price { Ohlc { Open High Low Close } }
      Volume { Usd Native }
      Stats { TradeCount BuyCount SellCount }
    }
  }
}
```

### 예시: 체인별 토큰 거래 통계

```graphql theme={null}
query {
  Trading {
    Tokens(
      where: {
        Token: { Address: { is: "0xdac17f958d2ee523a2206206994597c13d831ec7" } }
        Market: { Network: { is: "eth" } }
      }
      limit: {count: 30}
      orderBy: {descending: Block_Time}
    ) {
      Interval { Time }
      Volume { Usd BuyVolumeUSD SellVolumeUSD }
      Stats { TradeCount UniqueBuyers UniqueSellers }
    }
  }
}
```

***

## Chain Group 비교

| 기능                  | EVM                                                                 | Solana                                                      | Trading       |
| :------------------ | :------------------------------------------------------------------ | :---------------------------------------------------------- | :------------ |
| **`network` 인자**    | 필수(`eth`, `bsc`, `polygon`)                                         | 선택(`solana`, 기본값 `solana`)                                  | 불필요(크로스체인)    |
| **고유 Cube**         | Events, Calls, MinerRewards, Uncles, DEXPoolSlippages, Prediction\* | Instructions, InstructionBalanceUpdates, Rewards, DEXOrders | Pairs, Tokens |
| **데이터 세분도**         | 이벤트 단위(DWD) + 집계(DWM/DWS)                                           | 이벤트 + instruction 단위                                        | 사전 집계(DWM)    |
| **`dataset` 지원**    | 예(대부분 Cube)                                                         | 예(대부분 Cube)                                                 | 예             |
| **`aggregates` 지원** | 예                                                                   | 예                                                           | 예             |

***

## 관련 문서

<CardGroup cols={2}>
  <Card title="데이터 Cube" icon="cubes" href="/ko/graphql/schema/cubes">
    25개 Cube 전체의 필드 구조와 사용 사례.
  </Card>

  <Card title="Dataset과 Aggregates" icon="database" href="/ko/graphql/schema/dataset-aggregates">
    데이터 소스 범위와 사전 집계 동작 제어.
  </Card>
</CardGroup>
