Skip to main content
For the complete documentation index, see llms.txt

Midnight node error codes

Midnight 노드 오류는 LedgerApiError 코드를 u8 (0–255)로 매핑한 값입니다. 노드가 레저 수준에서 트랜잭션을 거부할 때 Substrate의 InvalidTransaction::Custom(u8)을 통해 표면화됩니다.

노드가 제출된 트랜잭션을 Substrate 디스패치 오류의 Custom(N) 형태로 거부할 때 자주 발생합니다.

info

팔렛 수준의 DispatchError::Module은 인덱스 5 (pallet_midnight) 또는 6 (pallet_midnight_system)으로 표면화되며, 내부 오류를 디코딩해야 합니다. 내부 오류 디코딩 방법은 Decode 1010 transaction rejection errors 문제 해결 가이드를 참조하세요.

Error tables by code range

아래는 유형 및 상태 코드별로 분류된 Midnight 노드 전용 오류 목록입니다. 오류 테이블은 코드 범위별로 오류를 그룹화하여 오류 유형을 식별하는 데 도움을 줍니다.

Deserialization errors (0–11)

노드가 와이어 포맷에서 데이터 역직렬화에 실패할 때 발생하는 오류입니다.

CodeNameDescriptionHow to fix
0NetworkId네트워크 ID 역직렬화에 실패한 경우SDK 버전 호환성 확인, 네트워크 ID 인코딩 검증
1Transaction트랜잭션 페이로드 역직렬화에 실패한 경우호환되는 SDK 버전으로 트랜잭션을 빌드했는지 확인
2LedgerState레저 상태 역직렬화에 실패한 경우노드 내부 오류
3ContractAddress컨트랙트 주소 역직렬화에 실패한 경우컨트랙트 주소 형식 확인
4PublicKey공개 키 역직렬화에 실패한 경우키 형식 및 인코딩 확인
5VersionedArenaKey버전 관리 아레나 키 역직렬화에 실패한 경우내부 오류
6UserAddress사용자 주소 역직렬화에 실패한 경우주소 형식 확인
7TypedArenaKey타입 지정 아레나 키 역직렬화에 실패한 경우내부 오류
8SystemTransaction시스템 트랜잭션 역직렬화에 실패한 경우거버넌스/브릿지 트랜잭션 형식 오류
9DustPublicKeyDUST 공개 키 역직렬화에 실패한 경우DUST 키 형식 확인
10CNightGeneratesDustActionTypecNIGHT-generates-DUST 액션 타입 역직렬화에 실패한 경우내부 브릿지/관측 오류
11CNightGeneratesDustEventcNIGHT-generates-DUST 이벤트 역직렬화에 실패한 경우내부 브릿지/관측 오류

역직렬화 오류의 대부분은 버전 불일치로 인해 발생합니다. 호환성 매트릭스를 참조하여 Midnight 블록체인 구성 요소의 호환 버전을 사용하고 있는지 항상 확인하세요.

Serialization errors (50–63)

노드가 저장 또는 전송을 위한 데이터 직렬화에 실패할 때 발생하는 오류입니다.

CodeNameDescriptionHow to fix
50TransactionIdentifier트랜잭션 식별자 직렬화에 실패한 경우내부 오류
51LedgerState레저 상태 직렬화에 실패한 경우노드 내부 오류
52LedgerParameters레저 파라미터 직렬화에 실패한 경우노드 내부 오류
53ContractAddress컨트랙트 주소 직렬화에 실패한 경우내부 오류
54ContractState컨트랙트 상태 직렬화에 실패한 경우컨트랙트 상태가 손상되었을 수 있음
55ContractStateToJson컨트랙트 상태의 JSON 직렬화에 실패한 경우컨트랙트 상태 형식이 JSON 직렬화와 호환되지 않음
56ZswapStateZswap 상태 직렬화에 실패한 경우Zswap 내부 오류
57UnknownType알 수 없는 타입 직렬화에 실패한 경우내부 오류
58MerkleTreeDigest머클 트리 다이제스트 직렬화에 실패한 경우내부 머클 트리 오류
59VersionedArenaKey버전 관리 아레나 키 직렬화에 실패한 경우내부 오류
60TypedArenaKey타입 지정 아레나 키 직렬화에 실패한 경우내부 오류
61CNightGeneratesDustEventcNIGHT-generates-DUST 이벤트 직렬화에 실패한 경우내부 브릿지 오류
62SystemTransaction시스템 트랜잭션 직렬화에 실패한 경우내부 거버넌스 오류
63ArenaHash아레나 해시 직렬화에 실패한 경우내부 오류

Transaction invalid (100–109, 193–200)

노드가 트랜잭션을 레저 상태에 적용한 후 레저 불변 조건 위반으로 거부할 때 발생하는 오류입니다.

CodeNameDescriptionHow to fix
100EffectsMismatch선언된 트랜잭션 이펙트가 계산된 이펙트와 일치하지 않는 경우트랜잭션을 다시 빌드하세요. 이펙트 선언이 오래되었거나 SDK가 잘못 계산했을 수 있습니다
101ContractAlreadyDeployed대상 주소에 이미 컨트랙트가 존재하는 경우다른 컨트랙트 주소를 사용하거나 기존 배포를 확인하세요
102ContractNotPresent지정한 주소에 존재하지 않는 컨트랙트를 호출한 경우컨트랙트 주소를 확인하고 먼저 컨트랙트를 배포하세요
103ZswapZswap 수준의 트랜잭션 오류 (예: 이중 지출, 알 수 없는 머클 루트)nullifier 재사용 여부를 확인하고 코인 트리 루트가 최신 상태인지 검증하세요
104Transcript노드가 온체인 트랜스크립트 실행을 거부한 경우컨트랙트 로직을 확인하세요. circuit의 온체인 트랜스크립트 실행에 실패했습니다
105InsufficientClaimable클레임할 NIGHT 토큰이 부족한 경우해당 작업에 충분한 NIGHT 잔액이 있는지 확인하세요
106VerifierKeyNotFoundcircuit 작업에 필요한 검증자 키가 없는 경우circuit을 호출하기 전에 검증자 키를 배포하세요
107VerifierKeyAlreadyPresent해당 작업에 검증자 키가 이미 존재하는 경우키가 이미 배포되어 있으므로 추가 조치가 필요하지 않습니다
108ReplayCounterMismatch서명된 카운터가 일치하지 않는 경우 (리플레이 공격 방지)현재 리플레이 카운터로 트랜잭션을 다시 빌드하세요
109UnknownError분류되지 않은 트랜잭션 무효 오류노드 로그에서 자세한 내용을 확인하세요
193ReplayProtectionViolation트랜잭션이 리플레이 보호를 위반한 경우 (인텐트 중복)해당 트랜잭션 또는 인텐트가 이미 제출되었습니다
194BalanceCheckOutOfBounds토큰 잔액이 오버플로우 또는 언더플로우를 일으킬 경우토큰 수량이 표현 가능한 범위를 초과하지 않는지 확인하세요
195InputNotInUtxos입력이 UTXO 집합에 존재하지 않는 UTXO를 참조하는 경우해당 코인이 이미 사용되었을 수 있습니다. 지갑 상태를 다시 동기화하세요
196DustDoubleSpend동일한 DUST를 이중으로 지출하려는 경우DUST UTXO가 이미 소비되었습니다. DUST 지갑을 다시 동기화하세요
197DustDeregistrationNotRegistered등록되지 않은 DUST 주소를 등록 해제하려는 경우DUST 주소가 현재 등록되어 있는지 확인하세요
198GenerationInfoAlreadyPresentDUST 생성 정보가 이미 존재하는 경우생성 정보가 중복 제출되었습니다
199InvariantViolation프로토콜 수준의 불변 조건이 위반된 경우 (예: NIGHT 공급량 초과)해당 트랜잭션은 근본적인 프로토콜 규칙을 위반합니다
200RewardTooSmall클레임한 보상이 최소 지급 기준에 미달하는 경우보상을 더 누적한 후 클레임하세요

Transaction malformed (110–139, 166–192)

노드가 구조적으로 유효하지 않은 트랜잭션을 거부할 때 발생하는 오류입니다.

CodeNameDescriptionHow to fix
110VerifierKeyNotSet필수 검증자 키 없이 컨트랙트가 배포된 경우컨트랙트 배포 시 검증자 키를 포함하세요
111TransactionTooLarge트랜잭션이 최대 허용 크기를 초과한 경우트랜잭션 페이로드를 줄이거나 여러 트랜잭션으로 분할하세요
112VerifierKeyTooLarge검증자 키가 역직렬화 한도를 초과한 경우더 작은 circuit을 사용하거나 Midnight 지원팀에 문의하세요
113VerifierKeyNotPresent참조한 검증자 키를 찾을 수 없는 경우circuit을 호출하기 전에 검증자 키와 함께 컨트랙트를 배포하세요
114ContractNotPresent트랜잭션이 존재하지 않는 컨트랙트를 참조하는 경우컨트랙트 주소를 확인하고 먼저 컨트랙트를 배포하세요
115InvalidProof영지식 증명 검증에 실패한 경우증명을 다시 생성하세요. proof server가 호환 버전인지 확인하세요
116BindingCommitmentOpeningInvalid바인딩 commitment가 올바르게 열리지 않은 경우Zswap 내부 오류 — 트랜잭션을 다시 빌드하세요
117NotNormalized트랜잭션이 정규 형식이 아닌 경우SDK로 다시 빌드하세요. 제출 전 트랜잭션을 정규화하세요
118FallibleWithoutCheckpoint폴러블 트랜스크립트에 초기 체크포인트가 없는 경우폴러블 섹션 시작 부분에 kernel.checkpoint()를 추가하세요
119ClaimReceiveFailed코인 commitment 수신 클레임에 실패한 경우코인 commitment 형식 오류 — 트랜잭션을 다시 빌드하세요
120ClaimSpendFailed코인 commitment 지출 클레임에 실패한 경우코인 commitment 형식 오류 — 트랜잭션을 다시 빌드하세요
121ClaimNullifierFailednullifier 클레임에 실패한 경우nullifier 형식 오류 — 트랜잭션을 다시 빌드하세요
122ClaimCallFailed컨트랙트 호출 클레임에 실패한 경우컨트랙트 호출 형식 오류 — 트랜잭션을 다시 빌드하세요
123InvalidSchnorrProofFiat-Shamir Schnorr 증명 검증에 실패한 경우서명 오류 — 트랜잭션 서명을 다시 생성하세요
124UnclaimedCoinCom컨트랙트 소유 출력이 클레임되지 않은 채로 남아 있는 경우트랜잭션 제출 전 모든 컨트랙트 출력을 클레임하세요
125UnclaimedNullifier컨트랙트 소유 코인 입력이 승인되지 않은 경우모든 컨트랙트 입력을 반드시 승인하세요
126Unbalanced특정 토큰 타입에서 잔액이 음수가 된 경우트랜잭션 잔액이 맞지 않습니다. 토큰 수량을 확인하세요
127ZswapZswap 오퍼의 구조가 잘못된 경우Zswap 오퍼를 다시 빌드하고 증명 유효성을 확인하세요
128BuiltinDecodeFAB(field-aligned binary) 디코드 오류내부 인코딩 오류 — 데이터 형식을 확인하세요
129GuaranteedLimit보장 섹션 한도를 초과한 경우보장 섹션 크기를 줄이세요
130MergingContracts컨트랙트 인텐트 병합 중 오류가 발생한 경우해당 컨트랙트들은 병합할 수 없습니다. 설정을 확인하세요
131CantMergeTypes호환되지 않는 트랜잭션 타입을 병합하려는 경우병합하려는 트랜잭션 타입이 서로 호환되어야 합니다
132ClaimOverflow클레임한 코인 값이 델타를 초과하는 경우토큰 수량이 표현 가능한 범위를 초과합니다
133ClaimCoinMismatchClaimRewards 코인이 실제 코인과 일치하지 않는 경우올바른 코인 데이터로 클레임을 다시 빌드하세요
134KeyNotInCommittee서명 키가 위원회 구성원이 아닌 경우위원회 구성원만 해당 작업에 서명할 수 있습니다
135InvalidCommitteeSignature위원회 서명 검증에 실패한 경우서명 키와 서명을 확인하세요
136ThresholdMissed위원회 승인 임계값에 미달하는 경우위원회 서명을 더 수집하세요
137TooManyZswapEntriesZswap 항목이 너무 많은 경우 (>=2^16)shielded 작업 수를 줄이세요
138BalanceCheckOverspend트랜잭션 세그먼트에서 잔액이 음수가 된 경우세그먼트가 가용 금액을 초과하여 지출합니다. 수량을 확인하세요
139UnknownError분류되지 않은 잘못된 트랜잭션 오류노드 로그에서 자세한 내용을 확인하세요
166InvalidNetworkId트랜잭션의 네트워크 ID가 노드의 네트워크와 일치하지 않는 경우networkId가 대상과 일치하는지 확인하세요 (예: 데브넷의 경우 undeployed). setNetworkId() 설정을 확인하세요
167IllegallyDeclaredGuaranteed허용되지 않는 위치에 보장 세그먼트(0)가 사용된 경우인텐트에는 segment_id 0을 사용하지 마세요
168FeeCalculation수수료 계산 오류트랜잭션 크기 또는 타이밍 파라미터가 유효하지 않습니다
169InvalidDustRegistrationSignatureDUST 등록 서명 검증에 실패한 경우올바른 키로 DUST 등록을 다시 생성하세요
170InvalidDustSpendProofDUST 지출 증명 검증에 실패한 경우DUST 지출 증명을 다시 생성하세요
171OutOfDustValidityWindowDUST가 유효 시간 창 밖에 있는 경우DUST 생성 시간이 허용 범위를 벗어났습니다. 더 최신의 DUST를 사용하세요
172MultipleDustRegistrationsForKey하나의 인텐트에 동일한 키에 대한 DUST 등록이 여러 개인 경우인텐트당 키 하나에 DUST 등록은 하나만 허용됩니다
173InsufficientDustForRegistrationFee등록 수수료를 지불할 DUST가 부족한 경우등록 전에 더 많은 DUST를 확보하세요
174MalformedContractDeploy컨트랙트 배포의 구조가 유효하지 않은 경우배포 시 잔액이 0이 아니거나 충전 상태가 잘못되었는지 확인하세요
175IntentSignatureVerificationFailure인텐트 서명 검증에 실패한 경우인텐트 서명을 다시 생성하세요
176IntentSignatureKeyMismatch서명 키가 verifier key와 일치하지 않는 경우인텐트에 올바른 서명 키를 사용하세요
177IntentSegmentIdCollision인텐트 병합 시 segment_id가 중복되는 경우각 인텐트는 고유한 segment_id를 가져야 합니다
178IntentAtGuaranteedSegmentId인텐트가 segment_id 0 (보장 세그먼트 예약)에 위치한 경우인텐트에는 segment_id >= 1을 사용하세요
179UnsupportedProofVersion지원되지 않는 증명 버전인 경우SDK 또는 proof server를 호환 버전으로 업데이트하세요
180GuaranteedTranscriptVersion보장 트랜스크립트 버전이 지원되지 않는 경우호환되는 레저/SDK 버전으로 업데이트하세요
181FallibleTranscriptVersion폴러블 트랜스크립트 버전이 지원되지 않는 경우호환되는 레저/SDK 버전으로 업데이트하세요
182TransactionApplicationError인텐트 TTL 만료, 너무 먼 미래 설정, 또는 중복인 경우인텐트 타이밍을 확인하고 동일한 인텐트를 재제출하지 마세요
183BalanceCheckOutOfBounds세그먼트에서 잔액 오버플로우 또는 언더플로우가 발생한 경우세그먼트 내 토큰 수량이 표현 가능한 범위를 초과합니다
184BalanceCheckConversionFailure잔액을 i128로 변환하는 데 실패한 경우토큰 수량이 내부 표현에 비해 너무 큽니다
185PedersenCheckFailure바인딩 commitment 불일치내부 암호화 오류 — 트랜잭션을 다시 빌드하세요
186EffectsCheckFailure트랜잭션 이펙트 검증에 실패한 경우선언된 이펙트가 계산된 이펙트와 일치하지 않습니다
187DisjointCheckFailure입력/출력 집합이 분리되어 있지 않은 경우shielded 및 트랜지언트 입력/출력은 서로 겹치지 않아야 합니다
188SequencingCheckFailure호출 그래프의 순서 조건이 위반된 경우컨트랙트 호출은 순서 제약을 준수해야 합니다
189InputsNotSorted언shielded 입력이 정렬되지 않은 경우제출 전 언shielded 입력을 정렬하세요
190OutputsNotSorted언shielded 출력이 정렬되지 않은 경우제출 전 언shielded 출력을 정렬하세요
191DuplicateInputs언shielded 입력이 중복된 경우트랜잭션에서 중복 입력을 제거하세요
192InputsSignaturesLengthMismatch입력 수와 서명 수가 일치하지 않는 경우각 입력에 대응하는 서명이 있는지 확인하세요

Infrastructure errors (150–155, 165)

트랜잭션 내용과 직접 관련 없는 인프라 오류가 노드에서 발생할 때 나타나는 오류입니다.

CodeNameDescriptionHow to fix
150LedgerCacheError레저 캐시 뮤텍스/락이 오염된 경우노드를 재시작하세요. 내부 동시성 오류입니다
151NoLedgerState노드에 레저 상태가 없는 경우노드가 완전히 동기화되지 않았을 수 있습니다. 동기화가 완료될 때까지 기다리세요
152LedgerStateScaleDecodingError레저 상태의 SCALE 디코딩에 실패한 경우노드 상태가 손상되었을 수 있습니다. 재동기화를 시도하세요
153ContractCallCostError컨트랙트 호출 비용 계산에 실패한 경우내부 비용 모델 오류
154BlockLimitExceededError트랜잭션이 블록 한도를 초과한 경우트랜잭션 크기를 줄이거나 덜 혼잡한 블록을 기다리세요
155FeeCalculationError수수료 계산에 실패한 경우내부 수수료 모델 오류
165GetTransactionContextError트랜잭션 컨텍스트 조회에 실패한 경우노드 내부 오류

System transaction errors (201–210)

거버넌스 및 브릿지 시스템 트랜잭션에서 노드가 오류를 만날 때 발생하는 오류입니다. 이는 네트워크 거버넌스 메커니즘이 제출하는 특수 트랜잭션입니다.

CodeNameDescriptionHow to fix
201IllegalPayout지급액이 남은 공급량 또는 브릿지 풀을 초과하는 경우지급 금액이 가용 자금에 비해 너무 큽니다
202InsufficientTreasuryFunds재무부에 자금이 부족한 경우요청한 금액이 재무부 잔액을 초과합니다
203CommitmentAlreadyPresent페어리 골드 이중 commitment 시도commitment가 이미 트리에 존재합니다
204UnknownError분류되지 않은 시스템 트랜잭션 오류노드 로그를 확인하세요
205ReplayProtectionFailure시스템 트랜잭션 리플레이 보호가 위반된 경우시스템 트랜잭션이 중복 제출되었습니다
206IllegalReserveDistribution리저브 배분이 공급량을 초과하는 경우배분 금액이 가용 리저브를 초과합니다
207GenerationInfoAlreadyPresentDUST 생성 정보가 이미 삽입된 경우생성 정보가 중복 제출되었습니다
208InvalidBasisPoints브릿지 수수료 베이시스 포인트가 10,000 이상인 경우베이시스 포인트는 0에서 9,999 사이여야 합니다
209InvariantViolation프로토콜 수준의 불변 조건이 위반된 경우해당 트랜잭션은 근본적인 프로토콜 규칙을 위반합니다
210TreasuryDisabled비활성화된 재무부에 접근하려는 경우재무부 기능이 활성화되어 있지 않습니다

Host API error (255)

노드가 호스트 API 오류를 만날 때 발생하는 오류입니다.

CodeNameDescriptionHow to fix
255HostApiError호스트 API 처리 중 오류가 발생한 경우내부 런타임 오류입니다. 노드 로그를 확인하세요

Pallet dispatch errors

트랜잭션이 Substrate 팔렛 내에서 실패하면 DispatchError::Module { index, error } 형태로 오류가 표면화됩니다. index는 팔렛을 식별하며, error는 해당 팔렛 오류 열거형 내 변형의 SCALE 인코딩 인덱스입니다.

아래는 팔렛 및 변형별로 분류된 Midnight 노드 전용 팔렛 오류 목록입니다.

Pallet index map

아래는 Midnight 노드 전용 팔렛 인덱스와 설명 목록입니다.

IndexPalletDescription
5pallet_midnightCore Midnight ledger pallet
6pallet_midnight_systemSystem transaction pallet
13pallet_cnight_observationcNIGHT bridge observation
44pallet_federated_authorityGovernance authority
45pallet_federated_authority_observationAuthority observation
50pallet_system_parametersSystem parameters
51pallet_throttleTransaction throttling

pallet_midnight

레저 상태와 트랜잭션을 관리하는 핵심 팔렛에서 발생하는 오류입니다.

VariantNameDescription
0NewStateOutOfBounds새 레저 상태가 허용 범위를 벗어난 경우
1DeserializationDeserializationError (코드 0–11)를 래핑합니다
2SerializationSerializationError (코드 50–63)를 래핑합니다
3TransactionTransactionError (코드 100–210)를 래핑합니다
4LedgerCacheError레저 캐시 오염 (코드 150)
5NoLedgerState레저 상태 없음 (코드 151)
6LedgerStateScaleDecodingErrorSCALE 디코딩 실패 (코드 152)
7ContractCallCostError비용 계산 실패 (코드 153)
8BlockLimitExceededError블록 한도 초과 (코드 154)
9FeeCalculationError수수료 계산 실패 (코드 155)
10HostApiError호스트 API 오류 (코드 255)
11NetworkIdNotString네트워크 ID가 유효한 문자열이 아닌 경우
12GetTransactionContextError트랜잭션 컨텍스트 조회 오류 (코드 165)

pallet_midnight_system

시스템 트랜잭션 팔렛에서 발생하는 오류입니다.

VariantNameDescription
0LedgerApiError전체 LedgerApiError를 래핑합니다
1SystemTransactionNotAllowedForGovernance거버넌스에서 허용되지 않는 시스템 트랜잭션

pallet_federated_authority

다중 집합 거버넌스 권한 팔렛에서 발생하는 오류입니다.

VariantNameDescription
0MotionAlreadyApproved권한 기관이 이미 해당 동의안을 승인한 경우
1MotionApprovalMissing승인자가 승인 목록에 없는 경우
2MotionApprovalExceedsBounds최대 권한 기관 수를 초과한 경우
3MotionNotFound동의안이 존재하지 않는 경우
4MotionNotEnded동의안 투표가 아직 완료되지 않은 경우
5MotionHasEnded동의안이 종료되어 더 이상 변경할 수 없는 경우
6MotionTooEarlyToClose승인 기간이 아직 종료되지 않은 경우
7MotionAlreadyExists동의안이 이미 존재하는 경우
8MotionExpired충분한 승인 없이 동의안이 만료된 경우
9MotionWeightBoundTooLow호출에 대한 가중치 한도가 너무 낮은 경우

pallet_cnight_observation

cNIGHT 브릿지 통합 팔렛에서 발생하는 오류입니다.

VariantNameDescription
0MaxCardanoAddrLengthExceededCardano 지갑 주소가 너무 긴 경우
1MaxRegistrationsExceeded등록이 너무 많은 경우
2LedgerApiErrorLedgerApiError를 래핑합니다
3InherentAlreadyExecuted블록당 내재 호출은 한 번만 허용됩니다
4CardanoPositionRegression다음 Cardano 포지션이 앞으로 진행되지 않는 경우
5TooManyUtxosUTXO 수가 용량을 초과하는 경우

pallet_federated_authority_observation

다중 집합 거버넌스 동기화 팔렛에서 발생하는 오류입니다.

VariantNameDescription
0EmptyMembers멤버십 집합이 비어 있는 경우
1DuplicatedMembers집합에 중복 멤버가 있는 경우
2InherentAlreadyExecuted블록당 내재 호출은 한 번만 허용됩니다

pallet_system_parameters

시스템 파라미터 팔렛에서 발생하는 오류입니다.

VariantNameDescription
0UrlTooLongURL이 최대 허용 길이를 초과하는 경우

JSON-RPC error codes

Midnight 노드는 jsonrpsee 크레이트의 표준 JSON-RPC 2.0 오류 코드를 사용합니다. 아래는 노드와 상호작용할 때 자주 마주칠 수 있는 오류 코드입니다.

CodeNameUsed inDescription
-32602INVALID_PARAMSState RPC, Block RPC, Events, Peer Info잘못된 컨트랙트 주소, 계정 주소, 블록 해시, 피어 ID 또는 기타 유효하지 않은 파라미터
-32603INTERNAL_ERRORPeer Info RPC, System Parameters RPC내부 요청 전송/수신 실패, 런타임 API 오류