For the complete documentation index, see llms.txt
Midnight Indexer API v4
Midnight Indexer API는 GraphQL API를 제공하여 블록, 트랜잭션, 컨트랙트, DUST 생성, 차폐/비차폐 트랜잭션 이벤트 등 Midnight 블록체인에서 인덱싱된 데이터를 조회하고 구독할 수 있게 합니다. 과거 데이터 조회와 실시간 모 니터링을 모두 지원합니다.
Version information
- Current API version: v4.
여기에 제공된 예시는 설명을 위한 것이며, API가 변경되면 업데이트가 필요할 수 있습니다. 항상 indexer-api/graphql/schema-v4.graphql을 최신 정보의 기준으로 참고하세요. 최신 스키마에 맞게 쿼리를 적절히 수정하세요.
GraphQL schema
GraphQL 스키마는 indexer-api/graphql/schema-v4.graphql에 정의되어 있습니다. 모든 쿼리, 뮤테이션, 구독과 해당 타입, 인수 및 반환 구조를 명시합니다.
Overview of operations
-
Queries: 블록, 트랜잭션, 컨트랙트 액션, DUST 생성 상태를 조회합니다. 예시:
- 최신 블록 또는 해시나 높이로 특정 블록을 조회합니다.
- 해시나 식별자로 트랜잭션을 조회합니다.
- 특정 블록이나 트랜잭션 offset에서 컨트랙트 액션의 현재 상태를 확인합니다.
- 컨트랙트가 보유한 비차폐 토큰 잔고를 조회합니다.
- Cardano 스테이크 키의 DUST 생성 상태를 조회합니다.
-
Mutations: 지갑 세션을 관리합니다.
connect(viewingKey: ViewingKey!): 뷰잉 키와 연결된 세션을 생성합니다.disconnect(sessionId: HexEncoded!): 기존에 설정된 세션을 종료합니다.
-
Subscriptions: 실시간 업데이트를 수신합니다.
blocks: 새로 인덱싱된 블록을 스트리밍합니다.contractActions(address, offset): 컨트랙트 액션을 스트리밍합니다.shieldedTransactions(sessionId, ...): 관련 트랜잭션과 선택적 진행 상태 업데이트를 포함한 차폐 트랜잭션 업데이트를 스트리밍합니다.unshieldedTransactions(address): 특정 주소의 비차폐 트랜잭션 이벤트를 스트리밍합니다.dustLedgerEvents(id): DUST 원장 이벤트를 스트리밍합니다.zswapLedgerEvents(id): Zswap 원장 이벤트를 스트리밍합니다.
API endpoints
Midnight Indexer API는 용도에 따라 두 가지 유형의 엔드포인트를 제공합니다.
HTTP endpoint (queries and mutations)
일회성 쿼리와 뮤테이션에는 HTTP 엔드포인트를 사용합니다. 이 엔드포인트는 데이터 조회를 위한 표준 GraphQL 쿼리와 지갑 세션 관리를 위한 뮤테이션을 지원합니다.
POST https://<host>:<port>/api/v4/graphql
Content-Type: application/json
WebSocket endpoint (subscriptions)
실시간 데이터 스트리밍에는 WebSocket 엔드포인트를 사용합니다. 이 엔드포인트를 통해 블록체인에서 발생하는 블록, 트랜잭션 및 기타 이벤 트를 구독할 수 있습니다.
wss://<host>:<port>/api/v4/graphql/ws
Sec-WebSocket-Protocol: graphql-transport-ws
Core scalars
API는 블록체인 전용 데이터 형식을 표현하기 위해 커스텀 스칼라 타입을 사용합니다. 쿼리를 작성하고 응답을 해석하려면 이러한 타입을 이해하는 것이 중요합니다.
HexEncoded: 해시, 주소, 세션 ID에 사용되는 16진수 인코딩 바이트입니다.ViewingKey: 지갑 세션용 16진수 또는 Bech32 형식의 뷰잉 키입니다.Unit: 데이터를 반환하지 않는 뮤테이션의 빈 반환 타입입니다.UnshieldedAddress:mn_addr_test1...과 같은 Bech32m 형식의 비차폐 주소입니다. 비차폐 토큰 작업에 사용됩니다.
Input types
다음 입력 타입은 블록, 트랜잭션, 컨트랙트 액션의 쿼리 파라미터를 지정하는 데 사용됩니다.
BlockOffset (oneOf)
해시 또는 높이로 블록을 지정합니다:
hash: HexEncoded - 블록 해시height: Int - 블록 높이
TransactionOffset (oneOf)
해시 또는 식별자로 트랜잭션을 지정합니다:
hash: HexEncoded - 트랜잭션 해시identifier: HexEncoded - 트랜잭션 식별자
ContractActionOffset (oneOf)
컨트랙트 액션 위치를 지정합니다:
blockOffset: BlockOffset - 블록(해시 또는 높이)으로 조회transactionOffset: TransactionOffset - 트랜잭션(해시 또는 식별자)으로 조회
Example queries and mutations
이 예시는 참고용입니다. 정확한 필드 이름과 구조는 스키마 파일에서 확인하세요.
block(offset: BlockOffset): Block
offset으로 블록을 조회합니다. offset을 지정하지 않으면 최신 블록을 반환합니다.
Query by height
query {
block(offset: { height: 3 }) {
hash
height
protocolVersion
timestamp
author
parent {
hash
}
transactions {
id
hash
transactionResult {
status
segments {
id
success
}
}
}
}
}
transactions(offset: TransactionOffset!): [Transaction!]!
해시 또는 식별자로 트랜잭션을 조회합니다. 조건에 맞는 트랜잭션 배열을 반환합니다.
트랜잭션에서 fees 필드를 사용할 수 있으며, paidFees와 estimatedFees 정보를 제공합니다.
Example: Query transactions by hash
hash offset 파라미터를 사용하여 특정 트랜잭션 해시부터 트랜잭션을 조회하는 예시입니다.
query {
transactions(offset: { hash: "3031323..." }) {
id
hash
protocolVersion
merkleTreeRoot
block {
height
hash
}
identifiers
raw
contractActions {
__typename
... on ContractDeploy {
address
state
zswapState
unshieldedBalances {
tokenType
amount
}
}
... on ContractCall {
address
state
entryPoint
zswapState
unshieldedBalances {
tokenType
amount
}
}
... on ContractUpdate {
address
state
zswapState
unshieldedBalances {
tokenType
amount
}
}
}
fees {
paidFees
estimatedFees
}
transactionResult {
status
segments {
id
success
}
}
unshieldedCreatedOutputs {
owner
value
tokenType
intentHash
outputIndex
}
unshieldedSpentOutputs {
owner
value
tokenType
intentHash
outputIndex
}
}
}
Example: Query transactions by identifier
특정 식별자를 사용하여 트랜잭션을 필터링하고, 생성된 비차폐 출력과 소비된 비차폐 출력을 모두 조회하는 예시입니다.
query {
transactions(offset: { identifier: "abc123..." }) {
id
hash
unshieldedCreatedOutputs {
owner
value
tokenType
}
unshieldedSpentOutputs {
owner
value
tokenType
}
}
}
contractAction(address: HexEncoded!, offset: ContractActionOffset): ContractAction
주어진 offset(블록 또는 트랜잭션)에서 가장 최근에 알려진 컨트랙트 액션을 조회합니다. offset을 지정하지 않으면 최신 상태를 반환합니다.
Example: Query latest contract action
offset을 지정하지 않고 특정 주소의 가장 최근 컨트랙트 액션을 조회하여 최신 상태를 반환하는 예시입니다.
query {
contractAction(address: "3031323...") {
__typename
... on ContractDeploy {
address
state
zswapState
unshieldedBalances {
tokenType
amount
}
}
... on ContractCall {
address
state
zswapState
entryPoint
unshieldedBalances {
tokenType
amount
}
}
... on ContractUpdate {
address
state
zswapState
unshieldedBalances {
tokenType
amount
}
}
}
}
Example: Query contract action by block height
blockOffset 파라미터를 사용하여 특정 블록 높이에서 컨트랙트 액션을 조회하는 예시입니다.
query {
contractAction(
address: "3031323...",
offset: { blockOffset: { height: 10 } }
) {
__typename
... on ContractDeploy {
address
state
zswapState
unshieldedBalances {
tokenType
amount
}
}
... on ContractCall {
address
state
zswapState
entryPoint
unshieldedBalances {
tokenType
amount
}
}
... on ContractUpdate {
address
state
zswapState
unshieldedBalances {
tokenType
amount
}
}
}
}
dustGenerationStatus(cardanoRewardAddresses: [CardanoRewardAddress!]!): [DustGenerationStatus!]!
하나 이상의 Cardano 스테이크 키에 대한 DUST 생성 상태를 조회합니다.
Example: Query DUST generation status
Cardano 스테이크 키의 DUST 생성 상태를 확인하는 예시로, 등록 상태, Night 잔고, 생성률, 현재 용량을 포함합니다.
query {
dustGenerationStatus(
cardanoRewardAddresses: [
"stake_test1uqtgpdz0chm6jnxx7erfd7rhqfud7t4ajazx8es8xk8x3ts06psdv"
]
) {
cardanoRewardAddress
dustAddress
registered
nightBalance
generationRate
currentCapacity
}
}
응답에는 DUST 생성 상태 및 용량에 관한 여러 필드가 포함됩니다.
DUST generation parameters
- 생성률: Star당 초당 8,267 Specks.
- 최대 용량: NIGHT당 5 DUST.
registered필드는 스테이크 키가 NativeTokenObservation 팔레트를 통해 등록되었는지 나타냅니다.- 등록 데이터는 브릿지를 통해 Cardano 메인넷에서 가져옵니다.
currentCapacity에 대한 중요 사항currentCapacity 필드는 Night UTXO 잔고와 경과 시간을 기반으로 한 최대 DUST 생성 용량을 나타냅니다. 이 값은:
- 첫 DUST 수수료 납부 전까지 정확합니다
- 수수료 납부 후에는 실제 잔고보다 높을 수 있습니다
- 수수료 납부가 차폐 트랜잭션이므로 소비된 DUST를 추적할 수 없습니다
수수료 납부 후 정확한 DUST 잔고는 wallet SDK 또는 DApp Connector API를 통해 연결된 지갑에서 직접 조회하세요. 지갑 연결이 불가능한 경우 currentCapacity를 근사값으로 사용하세요.
Contract action types
컨트랙트 액션은 트랜잭션 내에서 스마트 컨트랙트에 수행된 작업을 나타냅니다. 모든 ContractAction 타입은 공통 인터페이스를 구현하고 여러 필드를 공유합니다.
Common fields
모든 ContractAction 타입(ContractDeploy, ContractCall, ContractUpdate)은 다음 공통 필드를 가진 ContractAction 인터페이스를 구현합니다:
address: 컨트랙트 주소 (HexEncoded)state: 컨트랙트 상태 (HexEncoded)zswapState: 이 액션 시점의 컨트랙트별 zswap 상태 (HexEncoded)transaction: 이 액션을 포함하는 트랜잭션
Action types
컨트랙트 액션은 다음 세 가지 타입 중 하나입니다:
- ContractDeploy: 최초 컨트랙트 배포
- ContractCall: 컨트랙트 엔트리 포인트 호출
- ContractUpdate: 기존 컨트랙트의 상태 업데이트
각 타입은 ContractAction 인터페이스를 구현하지만, 추가 필드가 있을 수 있습니다. 예를 들어, ContractCall은 entryPoint 필드와 연관된 deploy에 대한 참조를 포함합니다.
Unshielded balances
모든 컨트랙트 액션 타입에는 컨트랙트가 보유한 토큰 잔고를 반환하는 unshieldedBalances 필드가 포함됩니다:
- ContractDeploy: 컨트랙트는 잔고 0으로 배포되므로 항상 빈 잔고를 반환합니다.
- ContractCall: 호출 실행 후 잔고를 반환합니다. 호출 중
unshielded_inputs또는unshielded_outputs에 의해 잔고가 변경될 수 있습니다. - ContractUpdate: 유지보수 업데이트 적용 후 잔고를 반환합니다.
ContractBalance type
ContractBalance 타입은 컨트랙트의 토큰 보유량을 나타냅니다:
type ContractBalance {
tokenType: HexEncoded! # Token type identifier
amount: String! # Balance amount (supports u128 values)
}
Block type
Block 타입은 블록체인 블록을 나타냅니다:
hash: 블록 해시 (HexEncoded)height: 블록 높이 (Int!)protocolVersion: 프로토콜 버전 (Int!)timestamp: UNIX 타임스탬프 (Int!)author: 블록 작성자 (HexEncoded, 선택적)parent: 부모 블록 참조 (Block, 선택적)transactions: 이 블록에 포함된 트랜잭션 배열 ([Transaction!]!)
Transaction type
Transaction 타입은 블록체인 트랜잭션과 관련 데이터를 나타냅니다:
id: 트랜잭션 ID (Int!)hash: 트랜잭션 해시 (HexEncoded)protocolVersion: 프로토콜 버전 (Int!)transactionResult: 트랜잭션을 원장 상태에 적용한 결과fees: 실제 납부 수수료와 예상 수수료를 포함한 수수료 정보identifiers: 트랜잭션 식별자 배열 ([HexEncoded!]!)raw: 원시 트랜잭션 내용 (HexEncoded)merkleTreeRoot: 머클 트리 루트 (HexEncoded)block: 이 트랜잭션을 포함하는 블록 참조contractActions: 이 트랜잭션 내 컨트랙트 액션 배열unshieldedCreatedOutputs: 이 트랜잭션으로 생성된 UTXOunshieldedSpentOutputs: 이 트랜잭션으로 소비된 UTXO
TransactionResult type
트랜잭션을 원장 상태에 적용한 결과입니다:
status: TransactionResultStatus (SUCCESS, PARTIAL_SUCCESS, 또는 FAILURE)segments: 부분 성공 시 세그먼트 결과의 선택적 배열
TransactionFees type
트랜잭션의 수수료 정보입니다:
paidFees: 이 트랜잭션에 대해 DUST로 실제 납부한 수수료 (String)estimatedFees: 이 트랜잭션에 대해 DUST로 산출된 예상 수수료 (String)
Unshielded token types
비차폐 토큰은 온체인에서 공개적으로 확인 가능한 자산으로, 추적 및 조회가 가능합니다. 다음 타입은 비차폐 UTXO와 관련 데이터를 나타냅니다.
UnshieldedUtxo
비차폐 UTXO(Unspent Transaction Output)를 나타냅니다:
owner: Bech32m 형식의 소유자 주소intentHash: 이 출력을 생성한 인텐트의 해시 (HexEncoded)value: UTXO 값을 문자열로 표현 (u128 지원)tokenType: 토큰 타입 식별자 (HexEncoded)outputIndex: 생성 트랜잭션 내에서 이 출력의 인덱스createdAtTransaction: 이 UTXO를 생성한 트랜잭션 참조spentAtTransaction: 이 UTXO를 소비한 트랜잭션 참조 (미소비 시 null)
DUST generation types
다음 타입은 DUST 생성 상태, 용량 및 관련 원장 이벤트에 관한 정보를 제공합니다.
DustGenerationStatus
Cardano 스테이크 키의 DUST 생성 상태입니다:
cardanoRewardAddress:stake_test1...또는stake1...과 같은 Bech32 인코딩 Cardano 스테이크 주소dustAddress: 등록된 경우 관련 DUST 주소 (HexEncoded, 선택적)registered: 이 스테이크 키의 등록 여부 (Boolean!)nightBalance: 생성을 뒷받침하는 NIGHT 잔고 (String)generationRate: 초당 Specks 단위의 생성률 (String)currentCapacity: 현재 DUST 생성 용량(Specks 단위) - 최대 가능 잔고를 나타내며, 수수료 납부 후에는 실제 잔고보다 높을 수 있음 (String)
DustLedgerEvent
DUST 원장 이벤트는 DUST 생성 시스템의 변경 사항을 추적합니다. DUST UTXO가 생성되거나, 생성 파라미터가 업데이트되거나, 소비가 처리될 때 이벤트가 발생합니다.
다음 이벤트 타입을 사용할 수 있습니다:
DustInitialUtxo: 초기 DUST UTXO 생성 이벤트DustGenerationDtimeUpdate: DUST 생성 감쇠 시간 업데이트DustSpendProcessed: DUST 소비 처리 이벤트ParamChange: DUST 파라미터 변경 이벤트
모든 DUST 원장 이벤트 타입은 다음 공통 필드를 공유합니다:
id: 이벤트 ID (Int!)raw: 원시 이벤트 데이터 (HexEncoded)maxId: 전체 DUST 이벤트의 최대 ID (Int!)
Mutations
뮤테이션을 통해 클라이언트가 지갑을 연결(세션 설정)하거나 연결을 해제할 수 있습니다.
connect(viewingKey: ViewingKey!): HexEncoded!
지정한 지갑 뷰잉 키로 세션을 설정합니다. 차폐 트랜잭션 구독에 사용할 수 있는 세션 ID를 반환합니다.
Viewing key format support
뷰잉 키는 다음 두 형식 중 하나로 제공할 수 있습니다:
- Bech32m (권장): 사람이 읽을 수 있는 접두사가 포함된 base-32 인코딩 형식입니다. 예:
mn_shield-esk_dev1.... - Hex (대안): 키 바이트를 나타내는 16진수 인코딩 문자열입니다.
Example: Connect with viewing key
Bech32m 형식의 뷰잉 키로 연결하여 세션을 설정하는 예시입니다. 서버가 이후 쿼리에서 사용할 세션 ID를 반환합니다.
mutation {
# Provide the bech32m format:
connect(viewingKey: "mn_shield-esk1abcdef...")
}
Response:
{
"data": {
"connect": "sessionIdHere"
}
}
이 sessionId를 차폐 트랜잭션 구독에 사용하세요.
disconnect(sessionId: HexEncoded!): Unit!
기존 세션을 종료합니다. 특정 지갑의 차폐 트랜잭션을 더 이상 모니터링할 필요가 없을 때 이 메서드를 호출하세요.
Example: Disconnect session
connect 뮤테이션에서 반환된 세션 ID를 사용하여 활성 세션을 종료하는 예시입니다.
mutation {
disconnect(sessionId: "sessionIdHere")
}
Subscriptions: Real-time updates
구독은 GraphQL over WebSocket 프로토콜에 따라 WebSocket 연결을 사용합니다. 연결 후 connection_init 메시지를 보내면 클라이언트가 구독 작업을 시작할 수 있습니다.
Blocks subscription
blocks(offset: BlockOffset): Block!
새 블록을 구독합니다. offset 파라미터로 특정 블록(높이 또는 해 시)부터 수신을 시작할 수 있습니다. 생략하면 최신 블록부터 시작합니다.
Example: Subscribe to blocks
블록 높이 10부터 새 블록을 구독하여 인덱싱되는 새 블록의 실시간 업데이트를 수신하는 예시입니다.
{
"id": "1",
"type": "start",
"payload": {
"query": "subscription { blocks(offset: { height: 10 }) { hash height protocolVersion timestamp author parent { hash } transactions { id hash } } }"
}
}
새 블록이 인덱싱되면 클라이언트가 next 메시지를 수신합니다.
Contract actions subscription
contractActions(address: HexEncoded!, offset: BlockOffset): ContractAction!
특정 주소의 컨트랙트 액션을 구독하여 스마트 컨트랙트 활동을 모니터링합니다. 새 컨트랙트 액션(호출, 업데이트)이 발생하면 푸시됩니다.
Example: Subscribe to contract actions
특정 주소의 컨트랙트 액션을 구독 하여 배포, 호출, 업데이트에 대한 실시간 알림을 수신하는 예시입니다.
{
"id": "2",
"type": "start",
"payload": {
"query": "subscription { contractActions(address:\"3031323...\", offset: { height: 1 }) { __typename ... on ContractDeploy { address state zswapState unshieldedBalances { tokenType amount } } ... on ContractCall { address state zswapState entryPoint unshieldedBalances { tokenType amount } } ... on ContractUpdate { address state zswapState unshieldedBalances { tokenType amount } } } }"
}
}
Shielded transactions subscription
shieldedTransactions(sessionId: HexEncoded!, index: Int, sendProgressUpdates: Boolean): ShieldedTransactionsEvent!
차폐 트랜잭션 업데이트를 구독합니다. 관련 트랜잭션과 머클 트리 업데이트, sendProgressUpdates가 true(기본값)인 경우 ShieldedTransactionsProgress 이벤트를 포함합니다. index 파라미터를 사용하여 특정 시점부터 재개할 수 있습니다.
필요에 따라 index와 offset 인수를 조정하세요.
Example: Subscribe to shielded transactions
특정 세션의 차폐 트랜잭션을 인덱스 100부터 구독하여 트랜잭션 업데이트와 진행 상태 알림을 모두 수신하는 예시입니다.
{
"id": "3",
"type": "start",
"payload": {
"query": "subscription { shieldedTransactions(sessionId: \"1CYq6ZsLmn\", index: 100) { __typename ... on ViewingUpdate { index update { __typename ... on MerkleTreeCollapsedUpdate { start end update protocolVersion } ... on RelevantTransaction { start end transaction { id hash } } } } ... on ShieldedTransactionsProgress { highestIndex highestRelevantIndex highestRelevantWalletIndex } } }"
}
}
구독은 이벤트가 발생할 때마다 반환하며, 다양한 이벤트 타입이 트랜잭션 데이터와 진행 상태 업데이트를 제공합니다.
Event types
ShieldedTransactionsEvent union 타입은 다음 중 하나입니다:
ViewingUpdate: 관련 트랜잭션 및/또는 축소된 머클 트리 업데이트를 포함합니다.
index: zswap 상태의 다음 시작 인덱스 (Int!)update: ZswapChainStateUpdate 항목 배열 ([ZswapChainStateUpdate!]!)MerkleTreeCollapsedUpdate: 머클 트리 업데이트start: 시작 인덱스 (Int!)end: 종료 인덱스 (Int!)update: 16진수 인코딩 머클 트리 축소 업데이트 (HexEncoded)protocolVersion: 프로토콜 버전 (Int!)
RelevantTransaction: 지갑에 관련된 트랜잭션start: 시작 인덱스 (Int!)end: 종료 인덱스 (Int!)transaction: 관련 트랜잭션 (Transaction!)
ShieldedTransactionsProgress: 동기화 진행 상태 정보입니다.
highestIndex: 현재 알려진 전체 트랜잭션의 최대 종료 인덱스 (Int!)highestRelevantIndex: 현재 알려진 관련 트랜잭션의 최대 종료 인덱스 (Int!)highestRelevantWalletIndex: 이 특정 지갑의 최대 종료 인덱스 (Int!)
Unshielded transactions subscription
unshieldedTransactions(address: UnshieldedAddress!, transactionId: Int): UnshieldedTransactionsEvent!
특정 주소의 비차폐 트랜잭션 이벤트를 구독합니다. 주어진 주소의 비차폐 UTXO와 관련된 트랜잭션이 발생할 때마다 이벤트를 발생시킵니다.
Parameters
address: 모니터링할 비차폐 주소 (Bech32m 형식).transactionId: 선택적. 시작 트랜잭션 ID (기본값: 0).
Example: Subscribe to unshielded transactions
특정 주소의 비차폐 트랜잭션을 구독하여 생성 및 소비된 UTXO에 대한 알림과 진행 상태 업데이트를 수신하는 예시입니다.
{
"id": "4",
"type": "start",
"payload": {
"query": "subscription { unshieldedTransactions(address: \"mn_addr_test1...\") { __typename ... on UnshieldedTransaction { transaction { hash block { height } } createdUtxos { owner value tokenType intentHash outputIndex } spentUtxos { owner value tokenType intentHash outputIndex } } ... on UnshieldedTransactionsProgress { highestTransactionId } } }"
}
}
Event types
- UnshieldedTransaction: UTXO가 생성되거나 소비될 때, 트랜잭션 세부 정보와 영향 받은 UTXO를 포함합니다
- UnshieldedTransactionsProgress: 주기적 동기화 진행 상태 업데이트
UnshieldedTransactionsEvent
비차폐 트랜잭션 구독의 이벤트 페이로드입니다:
UnshieldedTransaction: 트랜잭션 세부 정보와 생성/소비된 UTXO를 포함합니다transaction: UTXO를 생성 및/또는 소비한 트랜잭션createdUtxos: 구독 주소에 대해 이 트랜잭션에서 생성된 UTXOspentUtxos: 구독 주소에 대해 이 트랜잭션에서 소비된 UTXO
UnshieldedTransactionsProgress: 진행 상태 정보highestTransactionId: 구독 주소의 현재 알려진 전체 트랜잭션 중 최대 트랜잭션 ID
DUST ledger events subscription
dustLedgerEvents(id: Int): DustLedgerEvent!
DUST 원장 이벤트를 구독합니다. id 파라미터로 특정 이벤트부터 재개할 수 있습니다.
Example: Subscribe to DUST ledger events
DUST 원장 이벤트를 구독하여 블록체인의 DUST 관련 작업에 대한 실시간 업데이트를 수신하는 예시입니다.
{
"id": "5",
"type": "start",
"payload": {
"query": "subscription { dustLedgerEvents { id __typename ... on DustInitialUtxo { output { nonce } } raw maxId } }"
}
}
Zswap ledger events subscription
zswapLedgerEvents(id: Int): ZswapLedgerEvent!
Zswap 원장 이벤트를 구독합니다. id 파라미터로 특정 이벤트부터 재개할 수 있습니다.
Example: Subscribe to Zswap ledger events
Zswap 원장 이벤트를 구독하여 차폐 풀 작업 및 상태 변경에 대한 업데이트를 수신하는 예시입니다.
{
"id": "6",
"type": "start",
"payload": {
"query": "subscription { zswapLedgerEvents { id raw maxId } }"
}
}
Query limits configuration
서버에서 쿼리에 제한을 적용할 수 있습니다(예: max-depth, max-fields, timeout, 복잡도 비용). 이 제한을 초과하는 요청은 사유(필드 초과, 깊이 초과, 비용 초과, 시간 초과)를 나타내는 오류를 반환합니다.
Example error
{
"data": null,
"errors": [
{
"message": "Query has too many fields: 20. Max fields: 10."
}
]
}
Authentication
차폐 트랜잭션 구독에는 connect 뮤테이션에서 받은 sessionId가 필요합니다.
Regenerate the schema
Indexer API를 사용하면서 GraphQL 스키마를 정의하는 코드를 수정한 경우, 스키마 파일을 다시 생성해야 합니다.
다음 명령어를 실행하세요:
just generate-indexer-api-schema
이렇게 하면 스키마 파일이 코드 변경 사항과 동기화됩니다.
Migrate from v1
API v1에서 마이그레이션하는 경우 다음 단계를 따르세요:
- 엔드포인트 URL을
/v1/graphql에서/v4/graphql로 업데이트합니다(v1은 자동으로 리다이렉트됨). - 필드 이름 변경 사항을 확인합니다(예: 컨트랙트 액션에서
chainState→zswapState). - 일부 응답 구조가 변경되었을 수 있으므로 철저히 테스트합니다.