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/
자산 변환
다음 엔드포인트가 반환하는 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 엔드포인트
DeepBookV3용 인덱서 API가 제공하는 엔드포인트를 사용하여 다음 작업을 수행할 수 있다.
Get all pool information
/get_pools
사용 가능한 모든 pools의 목록을 반환하며, 각 pool에는 base 자산과 quote 자산에 대한 자세한 정보와 minimum size, lot size, tick size 같은 pool parameters가 포함된다.
응답
[
{
"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이다.
예시
다음 엔드포인트에 대한 성공적인 요청은
/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로 설정한다.
응답
지정된 각 pool에 대해 주어진 시간 범위 내의 과거 volume을 반환한다.
{
"pool_name_1": total_pool1_volume,
"pool_name_2": total_pool2_volume,
...
}
예시
다음 엔드포인트에 대한 성공적인 요청은
/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로 설정한다.
응답
제공된 시간 범위(있는 경우) 내에서 사용 가능한 모든 pools에 대한 과거 volume을 반환한다.
{
"pool_name_1": total_pool1_volume,
"pool_name_2": total_pool2_volume
}
예시
다음 엔드포인트에 대한 성공적인 요청은
/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로 설정한다.
응답
{
"pool_name_1": [maker_volume, taker_volume],
"pool_name_2": …
}
예시
다음 엔드포인트에 대한 성공적인 요청은
/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로 설정한다.
응답
{
"[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": …
}
}
예시
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 형식으로 반환한다.
응답
각 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"
}
예시
다음에 대한 성공적인 요청은
/summary
다음과 유사한 응답을 생성한다
[
{
"trading_pairs": "AUSD_USDC",
"quote_currency": "USDC",
"last_price": 1.0006,
"lowest_price_24h": 0.99905,
"highest_bid": 1.0006,
"base_volume": 1169.2,
"price_change_percent_24h": 0.07501125168773992,
"quote_volume": 1168.961637,
"lowest_ask": 1.0007,
"highest_price_24h": 1.00145,
"base_currency": "AUSD"
},
{
"quote_volume": 4063809.55231,
"lowest_price_24h": 0.9999,
"highest_price_24h": 1.009,
"base_volume": 4063883.6,
"quote_currency": "USDC",
"price_change_percent_24h": 0.0,
"base_currency": "WUSDC",
"trading_pairs": "WUSDC_USDC",
"last_price": 1.0,
"highest_bid": 1.0,
"lowest_ask": 1.0001
},
{
"price_change_percent_24h": 0.0,
"quote_currency": "USDC",
"lowest_price_24h": 0.0,
"quote_volume": 0.0,
"base_volume": 0.0,
"highest_price_24h": 0.0,
"lowest_ask": 1.04,
"last_price": 1.04,
"base_currency": "WUSDT",
"highest_bid": 0.90002,
"trading_pairs": "WUSDT_USDC"
},
...
]
Get ticker information
/ticker
모든 거래 페어의 volume(이미 scale이 적용됨), last price, 그리고 isFrozen 값을 반환한다. isFrozen의 가능한 값은 다음과 같다:
0: pool이 active 상태이다.1: pool이 inactive 상태이다.
응답
{
"TRADING_PAIR": {
"base_volume": float,
"quote_volume": float,
"last_price": float,
"isFrozen": integer (0 | 1)
}
}
예시
다음에 대한 성공적인 요청은
/ticker
다음과 유사한 응답을 생성한다
{
"DEEP_USDC": {
"last_price": 0.07055,
"base_volume": 43760440.0,
"quote_volume": 3096546.9161,
"isFrozen": 0
},
"NS_SUI": {
"last_price": 0.08323,
"base_volume": 280820.8,
"quote_volume": 23636.83837,
"isFrozen": 0
},
...
}
Get trades
/trades/:pool_name?limit=<INTEGER>&start_time=<UNIX_TIMESTAMP_SECONDS>&end_time=<UNIX_TIMESTAMP_SECONDS>&maker_balance_manager_id=<ID>&taker_balance_manager_id=<ID>
pool에서 가장 최근의 trades를 반환한다.
응답
[
{
"trade_id": "string",
"base_volume": integer,
"quote_volume": integer,
"price": integer,
"type": "string",
"timestamp": integer,
"maker_order_id": "string",
"taker_order_id": "string",
"maker_balance_manager_id": "string",
"taker_balance_manager_id": "string"
}
]
timestamp 값은 유닉스 밀리초이다.
예시
다음에 대한 성공적인 요청은
trades/SUI_USDC?limit=2&start_time=1738093405&end_time=1738096485&maker_balance_manager_id=0x344c2734b1d211bd15212bfb7847c66a3b18803f3f5ab00f5ff6f87b6fe6d27d&taker_balance_manager_id=0x47dcbbc8561fe3d52198336855f0983878152a12524749e054357ac2e3573d58
다음과 유사한 응답을 생성한다
[
{
"trade_id": "136321457151457660152049680",
"base_volume": 405,
"quote_volume": 1499,
"price": 3695,
"type": "sell",
"timestamp": 1738096392913,
"maker_order_id": "68160737799100866923792791",
"taker_order_id": "170141183460537392451039660509112362617",
"maker_balance_manager_id": "0x344c2734b1d211bd15212bfb7847c66a3b18803f3f5ab00f5ff6f87b6fe6d27d",
"taker_balance_manager_id": "0x47dcbbc8561fe3d52198336855f0983878152a12524749e054357ac2e3573d58"
},
...
]
Get order updates
/order_updates/:pool_name?limit=<INTEGER>&start_time=<UNIX_TIMESTAMP_SECONDS>&end_time=<UNIX_TIMESTAMP_SECONDS>&status=<"Placed" or "Canceled">&balance_manager_id=<ID>
pool에서 최근에 배치되거나 취소된 orders를 반환한다.
응답
[
{
"order_id": "string",
"balance_manager_id": "string",
"timestamp": integer,
"original_quantity": integer,
"remaining_quantity": integer,
"filled_quantity": integer,
"price": integer,
"status": "string",
"type": "string"
}
]
timestamp 값은 유닉스 밀리초이다.
예시
다음에 대한 성공적인 요청은
/order_updates/DEEP_USDC?start_time=1738703053&end_time=1738704080&limit=2&status=Placed&balance_manager_id=0xd335e8aa19d6dc04273d77e364c936bad69db4905a4ab3b2733d644dd2b31e0a
다음과 유사한 응답을 생성한다
[
{
"order_id": "170141183464610341308794360958165054983",
"balance_manager_id": "0xd335e8aa19d6dc04273d77e364c936bad69db4905a4ab3b2733d644dd2b31e0a",
"timestamp": 1738704071994,
"original_quantity": 8910,
"remaining_quantity": 8910,
"filled_quantity": 0,
"price": 22449,
"status": "Placed",
"type": "sell"
},
...
]
Get order book information
/orderbook/:pool_name?level={1|2}&depth={integer}
해당 pool에 대한 bids와 asks를 반환한다. 반환되는 bids와 asks는 각각 최고가에서 최저가 순으로 정렬된다. 엔드포인트에는 두 개의 선택적 query parameters가 있다:
- level:
level값은 1 또는 2일 수 있다. 1: best bid와 ask만 반환한다.2: best bids와 asks 기준으로 정렬한다. 이 값이 기본값이다.- depth:
depth값은0또는1보다 큰 값일 수 있다.0이면 전체 order book을 반환하고,1보다 크면 지정된 수의 bids와 asks를 모두 반환한다. 즉,depth=100을 제공하면 응답에는 bids 50개와 asks 50개가 포함된다.depth값이 홀수이면 다음으로 낮은 짝수 값으로 처리된다. 따라서depth=101도 bids 50개와 asks 50개를 반환한다.depthparameter를 제공하지 않으면 응답은 기본적으로 order book의 모든 orders를 포함한다.
응답
{
"timestamp": "string",
"bids": [
[
"string",
"string"
],
[
"string",
"string"
]
],
"asks": [
[
"string",
"string"
],
[
"string",
"string"
]
]
}
반환되는 timestamp는 밀리초 단위의 Unix timestamp를 나타내는 string이다.
예시
다음에 대한 성공적인 요청은
/orderbook/SUI_USDC?level=2&depth=4
다음과 유사한 응답을 생성한다
{
"timestamp": "1733874965431",
"bids": [
[
"3.715",
"2.7"
],
[
"3.713",
"2294.8"
]
],
"asks": [
[
"3.717",
"0.9"
],
[
"3.718",
"1000"
]
]
}
Get asset information
/assets
DeepBookV3에서 거래되는 모든 coins에 대한 자산 정보를 반환한다.
응답
각 asset object는 다음 형식을 가진다:
"ASSET_NAME": {
"unified_cryptoasset_id": "string",
"name": "string",
"contractAddress": "string",
"contractAddressUrl": "string",
"can_deposit": "string (true | false)",
"can_withdraw": "string (true | false)"
}
예시
다음에 대한 성공적인 요청은
/assets
다음과 유사한 응답을 생성한다
{
"NS": {
"unified_cryptoasset_id": "32942",
"name": "Sui Name Service",
"contractAddress": "0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178",
"contractAddressUrl": "https://suiscan.xyz/mainnet/object/0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178",
"can_deposit": "true",
"can_withdraw": "true"
},
"AUSD": {
"unified_cryptoasset_id": "32864",
"name": "AUSD",
"contractAddress": "0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2",
"contractAddressUrl": "https://suiscan.xyz/mainnet/object/0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2",
"can_deposit": "true",
"can_withdraw": "true"
},
...
}
Get orders by balance manager
/orders/:pool_name/:balance_manager_id?limit=<INTEGER>&status=<STATUS>
pool에서 특정 balance manager에 대한 orders를 반환한다. status parameter는 order status(예: Placed, Canceled, Filled)로 필터링할 수 있다. 여러 statuses는 쉼표로 구분한 값으로 제공할 수 있다.
응답
[
{
"order_id": "string",
"balance_manager_id": "string",
"type": "string",
"current_status": "string",
"price": float,
"placed_at": integer,
"last_updated_at": integer,
"original_quantity": float,
"filled_quantity": float,
"remaining_quantity": float
}
]
Get trade count
/trade_count?start_time=<UNIX_TIMESTAMP_SECONDS>&end_time=<UNIX_TIMESTAMP_SECONDS>
지정된 시간 범위 내에서 모든 pools에 걸친 전체 trade 수를 반환한다.
응답
integer
Get OHLCV candlestick data
/ohclv/:pool_name?interval=<INTERVAL>&start_time=<UNIX_TIMESTAMP_SECONDS>&end_time=<UNIX_TIMESTAMP_SECONDS>&limit=<INTEGER>
pool에 대한 OHLCV(Open, High, Low, Close, Volume) candlestick data를 반환한다. 유효한 intervals는 1m, 5m, 15m, 30m, 1h, 4h, 1d, 1w이다.
응답
{
"candles": [
[timestamp, open, high, low, close, volume],
...
]
}
예시
다음에 대한 성공적인 요청은
/ohclv/SUI_USDC?interval=1h&limit=10
다음과 유사한 응답을 생성한다
{
"candles": [
[1738000000, 3.5, 3.6, 3.4, 3.55, 1000000],
[1738003600, 3.55, 3.7, 3.5, 3.65, 1500000],
...
]
}
Get net deposits
/get_net_deposits/:asset_ids/:timestamp
지정된 timestamp까지 지정된 자산에 대한 net deposits(예치금에서 출금을 뺀 값)를 반환한다. Asset IDs는 쉼표로 구분해야 한다.
응답
{
"asset_id_1": integer,
"asset_id_2": integer,
...
}
Get DEEP supply
Get deposited assets
/deposited_assets/:balance_manager_ids
지정된 balance managers에 예치된 자산 목록을 반환한다. Balance manager IDs는 쉼표로 구분해야 한다.
응답
[
{
"balance_manager_id": "string",
"assets": ["string", ...]
}
]
Get indexer status
/status?max_checkpoint_lag=<INTEGER>&max_time_lag_seconds=<INTEGER>
각 pipeline에 대한 checkpoint lag 정보를 포함한 indexer의 health status를 반환한다. 선택적 parameters는 healthy status를 결정하기 위한 thresholds를 설정한다(기본값: max_checkpoint_lag=100, max_time_lag_seconds=60).
응답
{
"status": "OK" | "UNHEALTHY",
"latest_onchain_checkpoint": integer,
"current_time_ms": integer,
"earliest_checkpoint": integer,
"max_lag_pipeline": "string",
"max_checkpoint_lag": integer,
"max_time_lag_seconds": integer,
"pipelines": [
{
"pipeline": "string",
"indexed_checkpoint": integer,
"indexed_epoch": integer,
"indexed_timestamp_ms": integer,
"checkpoint_lag": integer,
"time_lag_seconds": integer,
"latest_onchain_checkpoint": integer
}
]
}
Get points
/get_points?addresses=<ADDRESS1>,<ADDRESS2>,...
지정된 address들에 대해 누적된 총 points를 반환한다. Points는 DeepBookV3의 trading activity를 통해 적립된다. Addresses는 쉼표로 구분한 값으로 제공한다.
응답
[
{
"address": "0x1234...",
"total_points": 1000000
},
{
"address": "0x5678...",
"total_points": 500000
}
]
예시
다음에 대한 성공적인 요청은
/get_points?addresses=0x344c2734b1d211bd15212bfb7847c66a3b18803f3f5ab00f5ff6f87b6fe6d27d,0x47dcbbc8561fe3d52198336855f0983878152a12524749e054357ac2e3573d58
다음과 유사한 응답을 생성한다
[
{
"address": "0x344c2734b1d211bd15212bfb7847c66a3b18803f3f5ab00f5ff6f87b6fe6d27d",
"total_points": 1250000
},
{
"address": "0x47dcbbc8561fe3d52198336855f0983878152a12524749e054357ac2e3573d58",
"total_points": 750000
}
]
Get margin supply
/margin_supply
Margin pool contract를 통해 onchain query한 각 margin pool의 total supply balance를 반환한다.
응답
{
"0x2::sui::SUI": 1000000000000,
"0xdba3...::usdc::USDC": 5000000000000
}
Asset type에서 total supply amount(smallest units)로 mapping한 값이다.
Get pool creation events
/pool_created
DeepBook pool이 생성될 때의 event를 반환한다.
응답
[
{
"event_digest": "0xabc123...",
"digest": "0xdef456...",
"sender": "0x1111...",
"checkpoint": 12345678,
"checkpoint_timestamp_ms": 1738000000000,
"package": "0x2222...",
"pool_id": "0x1234...",
"taker_fee": 1000000,
"maker_fee": 500000,
"tick_size": 10000,
"lot_size": 10000000,
"min_size": 100000000,
"whitelisted_pool": false,
"treasury_address": "0x5678..."
}
]
Get book parameters updated events
/book_params_updated?pool_id=<ID>
Pool에 대한 가장 최근 book parameter update event를 반환한다. pool_id parameter가 필요하다.
응답
{
"event_digest": "0xabc123...",
"digest": "0xdef456...",
"sender": "0x1111...",
"checkpoint": 12345678,
"checkpoint_timestamp_ms": 1738000000000,
"package": "0x2222...",
"pool_id": "0x1234...",
"tick_size": 10000,
"lot_size": 10000000,
"min_size": 100000000,
"onchain_timestamp": 1738000000000
}
Get user portfolio
/portfolio/:wallet_address
Wallet address에 대한 comprehensive portfolio view를 반환하며 margin position, collateral balance, LP position, total equity summary를 포함한다.
응답
{
"margin_positions": [
{
"margin_manager_id": "0x1234...",
"pool": "SUI_USDC",
"base_asset_symbol": "SUI",
"quote_asset_symbol": "USDC",
"base_asset": 100.0,
"quote_asset": 500.0,
"base_debt": 50.0,
"quote_debt": 200.0,
"base_asset_usd": 350.0,
"quote_asset_usd": 500.0,
"base_debt_usd": 175.0,
"quote_debt_usd": 200.0,
"total_debt_usd": 375.0,
"net_value_usd": 475.0,
"risk_ratio": 2.27
}
],
"collateral_balances": [
{
"asset": "SUI",
"balance": 100.0,
"balance_usd": 350.0
}
],
"lp_positions": [
{
"margin_pool_id": "0x5678...",
"asset": "USDC",
"supplied": 1000.0,
"shares": 1000000000,
"supplied_usd": 1000.0
}
],
"summary": {
"total_equity_usd": 1850.0,
"total_debt_usd": 375.0,
"net_value_usd": 1475.0
}
}
Get referral fee events
/referral_fee_events?pool_id=<ID>&referral_id=<ID>
trading 중 적립된 referral fees에 대한 events를 반환한다. 이 events는 서로 다른 pools에 걸쳐 referrals가 적립한 fees를 추적한다.
응답
[
{
"event_digest": "0xabc123...",
"digest": "0xdef456...",
"sender": "0x1111...",
"checkpoint": 12345678,
"checkpoint_timestamp_ms": 1738000000000,
"package": "0x2222...",
"pool_id": "0x1234...",
"referral_id": "0x5678...",
"base_fee": 1000000,
"quote_fee": 500000,
"deep_fee": 250000
}
]