DeepBookV3 인덱서
DeepBookV3 인덱서는 DeepBookV3 프로토콜의 오더북 및 거래 데이터에 효율적이고 실시간으로 접근할 수 있게 한다. 이 인덱서는 DeepBookV3와 상호 작용하는 개발자, 트레이더, 분석가를 위해 중요한 데이터 포인트를 집계하고 노출하는 중앙 화된 서비스 역할을 한다.
DeepBookV3 인덱서는 다음을 가능하게 하는 엔드포인트를 제공하여 데이터 조회를 단순화한다:
- Viewing pool information: 기본 자산과 quote 자산, tick sizes, lot sizes를 포함하여 사용 가능한 모든 거래 pool에 대한 자세한 메타데이터를 조회한다.
- Historical volume analysis: interval 기반 breakdown을 지원하면서 특정 pool 또는 balance manager에 대한 volume metrics를 사용자 정의 시간 범위로 가져온다.
- User-specific volume tracking: balance manager별 volume을 조회하여 개별 trader 활동에 대한 인사이트를 제공한다.
- OHLCV candlestick data: 구성 가능한 intervals로 technical analysis를 위한 candlestick chart data에 접근한다.
- DeepBook Margin data: loans, liquidations, margin pool operations를 포함한 margin trading events를 조회한다.
공개 인덱서를 사용하거나 직접 서비스를 구동할 수 있다. 선택은 몇 가지 요소에 따라 달라진다.
다음과 같은 경우 공개 서비스를 사용한다:
- 표준적인 데이터 요구 사항을 가진다.
- 공개 엔드포인트가 제공하는 지연 시간과 가용성이 요구 사항을 충족한다.
- 자체 서비스를 운영하는 운영 오버헤드를 피하고 싶다.
다음과 같은 경우 자체 인덱서를 실행한다:
- 보장된 업타임과 낮은 지연 시간이 필요하다.
- 특정한 커스터마이징 요구 사항이 있다.
- 애플리케이션이 독자적인 기능 또는 확장된 데이터 세트에 의존한다.
Public DeepBookV3 Indexer
Mysten Labs는 DeepBookV3를 위한 public 인덱서를 제공한다.
Mainnet
https://deepbook-indexer.mainnet.mystenlabs.com/
Testnet
https://deepbook-indexer.testnet.mystenlabs.com/
Asset conversions
다음 엔드포인트가 반환하는 volume은 해당 자산의 최소 단위로 표현된다.
/all_historical_volume/historical_volume/historical_volume_by_balance_manager_id/historical_volume_by_balance_manager_id_with_interval
다음은 각 자산의 base unit을 결정하는 데 사용되는 decimal places(scalars)이다.
| Asset | Scalar |
|---|---|
| ALKIMI | 9 |
| AUSD | 6 |
| Bridged Eth (BETH) | 8 |
| DEEP | 6 |
| DRF | 6 |
| IKA | 9 |
| LayerZero WBTC (LZWBTC) | 8 |
| Native USDC | 6 |
| NS | 6 |
| SEND | 6 |
| SUI | 9 |
| TYPUS | 9 |
| WAL | 9 |
| Wormhole USDC (WUSDC) | 6 |
| Wormhole USDT (WUSDT) | 6 |
| xBTC | 8 |
반환된 volume을 표준 자산 단위로 변환하려면 값을 10^SCALAR로 나눈다. 예를 들어:
SUI/USDC pool의 base 자산에 대해 반환된 volume이 1,000,000,000 SUI UNIT인 경우, SUI에서의 올바른 volume은 1,000,000,000 / 10^(SUI_SCALAR) = 1 SUI이다. 마찬가지로 SUI/USDC pool의 quote 자산에 대해 반환된 volume이 1,000,000,000 USDC UNIT인 경우, 올바른 volume은 1,000,000,000 / 10^(USDC_SCALAR) = 1,000 USDC이다.
이러한 변환을 사용하여 모든 pools와 자산에 걸쳐 volume을 올바르게 해석한다.
API endpoints
DeepBookV3용 인덱서 API가 제공하는 엔드포인트를 사용하여 다음 작업을 수행할 수 있다.
Get all pool information
/get_pools
사용 가능한 모든 pools의 목록을 반환하며, 각 pool에는 base 자산과 quote 자산에 대한 자세한 정보와 minimum size, lot size, tick size 같은 pool parameters가 포함된다.
Response
[
{
"pool_id": "string",
"pool_name": "string",
"base_asset_id": "string",
"base_asset_decimals": integer,
"base_asset_symbol": "string",
"base_asset_name": "string",
"quote_asset_id": "string",
"quote_asset_decimals": integer,
"quote_asset_symbol": "string",
"quote_asset_name": "string",
"min_size": integer,
"lot_size": integer,
"tick_size": integer
},
...
]
응답의 각 pool object에는 다음 필드가 포함된다:
- pool_id: pool의 ID이다.
- pool_name: pool의 이름이다.
- base_asset_id: base 자산의 ID이다.
- base_asset_decimals: base 자산의 소수 자릿수이다.
- base_asset_symbol: base 자산의 symbol이다.
- base_asset_name: base 자산의 이름이다.
- quote_asset_id: quote 자산의 ID이다.
- quote_asset_decimals: quote 자산의 소수 자릿수이다.
- quote_asset_symbol: quote 자산의 symbol이다.
- quote_asset_name: quote 자산의 이름이다.
- min_size: base 자산의 최소 단위로 표현된 pool의 minimum trade size이다.
- lot_size: 이 pool에서 base 자산의 최소 단위로 표현된 trades의 minimum increment이다.
- tick_size: 이 pool에서 trades를 위한 minimum price increment이다.
Example
다음 엔드포인트에 대한 성공적인 요청은
/get_pools
다음과 유사한 응답을 생성한다
[
{
"pool_id": "0xb663828d6217467c8a1838a03793da896cbe745b150ebd57d82f814ca579fc22",
"pool_name": "DEEP_SUI",
"base_asset_id": "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",
"base_asset_decimals": 6,
"base_asset_symbol": "DEEP",
"base_asset_name": "DeepBook Token",
"quote_asset_id": "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI",
"quote_asset_decimals": 9,
"quote_asset_symbol": "SUI",
"quote_asset_name": "Sui",
"min_size": 100000000,
"lot_size": 10000000,
"tick_size": 10000000
},
{
"pool_id": "0xf948981b806057580f91622417534f491da5f61aeaf33d0ed8e69fd5691c95ce",
"pool_name": "DEEP_USDC",
"base_asset_id": "0xdeeb7a4662eec9f2f3def03fb937a663dddaa2e215b8078a284d026b7946c270::deep::DEEP",
"base_asset_decimals": 6,
"base_asset_symbol": "DEEP",
"base_asset_name": "DeepBook Token",
"quote_asset_id": "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",
"quote_asset_decimals": 6,
"quote_asset_symbol": "USDC",
"quote_asset_name": "USDC",
"min_size": 100000000,
"lot_size": 10000000,
"tick_size": 10000
}
]
Get historical volume for pool in a specific time range
/historical_volume/:pool_names?start_time=<UNIX_TIMESTAMP_SECONDS>&end_time=<UNIX_TIMESTAMP_SECONDS>&volume_in_base=<BOOLEAN>
이 엔드포인트를 사용하여 특정 시간 범위 동안 pool의 과거 volume을 가져온다. pool_names는 쉼표로 구분하고 start_time과 end_time 값에는 유닉스 타임스탬프 초를 사용한다.
기본적으로 이 엔드포인트는 지정된 pools에 대해 quote 자산 기준의 최근 24시간 거래량을 가져온다. base 자산을 기준으로 조회하려면 volume_in_base를 true로 설정한다.
Response
지정된 각 pool에 대해 주어진 시간 범위 내의 과거 volume을 반환한다.
{
"pool_name_1": total_pool1_volume,
"pool_name_2": total_pool2_volume,
...
}
Example
다음 엔드포인트에 대한 성공적인 요청은
/historical_volume/DEEP_SUI,SUI_USDC?start_time=1731260703&end_time=1731692703&volume_in_base=true
다음과 유사한 응답을 생성한다
{
"DEEP_SUI": 22557460000000,
"SUI_USDC": 19430171000000000
}
Get historical volume for all pools
/all_historical_volume?start_time=<UNIX_TIMESTAMP_SECONDS>&end_time=<UNIX_TIMESTAMP_SECONDS>&volume_in_base=<BOOLEAN>
이 엔드포인트를 사용하여 모든 pools에 대한 과거 volume을 가져온다. 해당 시간 범위의 volume을 조회하려면 선택적인 start_time과 end_time 값을 유닉스 타임스탬프 초로 포함한다.
기본적으로 이 엔드포인트는 quote 자산 기준의 최근 24시간 거래량을 가져온다. base 자산을 기준으로 조회하려면 volume_in_base를 true로 설정한다.
Response
제공된 시간 범위(있는 경우) 내에서 사용 가능한 모든 pools에 대한 과거 volume을 반환한다.
{
"pool_name_1": total_pool1_volume,
"pool_name_2": total_pool2_volume
}
Example
다음 엔드포인트에 대한 성공적인 요청은
/all_historical_volume?start_time=<UNIX_TIMESTAMP_SECONDS>&end_time=<UNIX_TIMESTAMP_SECONDS>&volume_in_base=<BOOLEAN>
다음과 유사한 응답을 생성한다
{
"DEEP_SUI": 22557460000000,
"WUSDT_USDC": 10265000000,
"NS_USDC": 4399650900000,
"NS_SUI": 6975475200000,
"SUI_USDC": 19430171000000000,
"WUSDC_USDC": 23349574900000,
"DEEP_USDC": 130000590000000
}
Get historical volume by balance manager
/historical_volume_by_balance_manager_id/:pool_names/:balance_manager_id?start_time=<UNIX_TIMESTAMP_SECONDS>&end_time=<UNIX_TIMESTAMP_SECONDS>&volume_in_base=<BOOLEAN>
특정 시간 범위에 대해 balance manager별 과거 volume을 가져온다. pool_names는 쉼표로 구분하고 선택적인 start_time과 end_time 값에는 유닉스 타임스탬프 초를 사용한다.
기본적으로 이 엔드포인트는 지정된 pools에 대해 quote 자산 기준의 balance manager별 최근 24시간 거래량을 가져온다. base 자산을 기준으로 조회하려면 volume_in_base를 true로 설정한다.
Response
{
"pool_name_1": [maker_volume, taker_volume],
"pool_name_2": …
}
Example
다음 엔드포인트에 대한 성공적인 요청은
/historical_volume_by_balance_manager_id/SUI_USDC,DEEP_SUI/0x344c2734b1d211bd15212bfb7847c66a3b18803f3f5ab00f5ff6f87b6fe6d27d?start_time=1731260703&end_time=1731692703&volume_in_base=true
다음과 유사한 응답을 생성한다
{
"DEEP_SUI": [
14207960000000,
3690000000
],
"SUI_USDC": [
2089300100000000,
17349400000000
]
}
Get historical volume by balance manager within a specific time range and intervals
/historical_volume_by_balance_manager_id_with_interval/:pool_names/:balance_manager_id?start_time=<UNIX_TIMESTAMP_SECONDS>&end_time=<UNIX_TIMESTAMP_SECONDS>&interval=<UNIX_TIMESTAMP_SECONDS>&volume_in_base=<BOOLEAN>
특정 시간 범위에서 intervals를 포함하여 BalanceManager별 과거 volume을 가져온다. pool_names는 쉼표로 구분하고 선택적인 start_time과 end_time 값에는 유닉스 타임스탬프 초를 사용한다. interval 값에는 초 단위의 숫자를 사용한다. 간단한 interval 예로 start_time이 5이고 end_time이 10이며 interval이 2인 경우, 응답에는 기간 시작 시간을 key로 하여 5에서 7까지와 7에서 9까지의 거래량이 포함된다.
기본적으로 이 엔드포인트는 지정된 pools에 대해 quote 자산 기준의 최근 24시간 거래량을 가져온다. base 자산을 기준으로 조회하려면 volume_in_base를 true로 설정한다.
Response
{
"[time_1_start, time_1_end]": {
"pool_name_1": [maker_volume, taker_volume],
"pool_name_2": …
},
"[time_2_start, time_2_end]": {
"pool_name_1": [maker_volume, taker_volume],
"pool_name_2": …
}
}
Example
24시간 interval을 사용한 다음 엔드포인트에 대한 성공적인 요청은
/historical_volume_by_balance_manager_id_with_interval/USDC_DEEP,SUI_USDC/0x344c2734b1d211bd15212bfb7847c66a3b18803f3f5ab00f5ff6f87b6fe6d27d?start_time=1731460703&end_time=1731692703&interval=86400&volume_in_base=true
다음과 유사한 응답을 생성한다
{
"[1731460703, 1731547103]": {
"SUI_USDC": [
505887400000000,
2051300000000
]
},
"[1731547103, 1731633503]": {
"SUI_USDC": [
336777500000000,
470600000000
]
}
}
Get summary
/summary
DeepBookV3의 모든 거래 페어에 대한 summary를 JSON 형식으로 반환한다.
Response
각 summary object는 다음 형식을 가진다. JSON object의 필드 순서는 보장되지 않는다.
{
"trading_pairs": "string",
"quote_currency": "string",
"last_price": float,
"lowest_price_24h": float,
"highest_bid": float,
"base_volume": float,
"price_change_percent_24h": float,
"quote_volume": float,
"lowest_ask": float,
"highest_price_24h": float,
"base_currency": "string"
}