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

Ledger error reference

midnight-ledger 크레이트는 트랜잭션 검증, 실행, 상태 관리 오류의 전체 분류 체계를 정의합니다. 노드가 표면화하는 숫자형 LedgerApiError 코드 뒤에 있는 Rust 수준 오류 타입입니다.

Error hierarchy

중첩된 오류 출력을 읽을 때는 상위 수준부터 하위 수준까지 이어지는 연결 고리를 이해하는 것이 중요합니다. 연결 고리 상단의 MalformedTransaction::InvalidProof가 컨트랙트 트랜스크립트 실행 내부 깊숙한 곳의 OnchainProgramError::Decode까지 거슬러 올라갈 수 있습니다.

MalformedTransaction
└─ wraps zswap::MalformedOffer
└─ wraps TranscriptRejected
└─ wraps OnchainProgramError
└─ wraps InvalidBuiltinDecode
└─ wraps merkle_tree::InvalidUpdate

Error types

다음 섹션에서는 연결 고리에 속한 각 오류 타입을 상위 수준의 트랜잭션 엔벨로프부터 하위 수준의 트리 및 VM 작업까지 설명합니다.

MalformedTransaction

50개가 넘는 변형이 있으며 MalformedTransaction<D>로 매개변수화됩니다. 레저가 상태를 적용하기 전에 검사하는 구조적 유효성 오류입니다. 레저는 잘못된 형식의 트랜잭션을 상태 변경 없이 거부합니다.

Proof and cryptographic errors

영지식 증명 검증 또는 암호학적 일관성 검사의 실패를 나타내는 오류입니다.

VariantDescriptionFix
BindingCommitmentOpeningInvalid바인딩 커밋먼트 opening이 커밋된 값과 일치하지 않는 경우트랜잭션 구성 버그를 나타냅니다. 커밋먼트 생성 과정을 다시 확인하세요
InvalidNetworkId트랜잭션이 다른 네트워크를 대상으로 하는 경우(예: Mainnet vs. Devnet)올바른 네트워크 ID를 대상으로 트랜잭션을 다시 빌드하세요
InvalidProof영지식 증명이 검증에 실패한 경우다시 증명해야 합니다. witness와 public input이 일치하는지 확인하세요
InvalidSchnorrProofSchnorr 서명 증명이 검증에 실패한 경우키 불일치 또는 서명 데이터 손상입니다. 다시 서명하세요
PedersenCheckFailurePedersen 커밋먼트 일관성 검사에 실패한 경우잔액 또는 값 인코딩 오류입니다. 트랜잭션 값을 다시 확인하세요

Structural errors

정규 형식이나 트랜잭션 구조 규칙의 위반을 나타내는 오류입니다.

VariantDescriptionFix
FallibleWithoutCheckpoint폴러블 트랜잭션 세그먼트에 필수 체크포인트가 없는 경우폴러블 세그먼트에 체크포인트를 추가하세요
NotNormalized트랜잭션 필드가 필수 정규 정렬 순서가 아닌 경우제출 전에 레저 사양에 따라 트랜잭션 필드를 정렬하고 정규화하세요
TooManyZswapEntries트랜잭션에 프로토콜이 허용하는 것보다 많은 Zswap 항목이 포함된 경우Zswap 작업을 여러 트랜잭션으로 분할하세요
TransactionTooLarge직렬화된 트랜잭션이 최대 허용 바이트 크기를 초과한 경우더 작은 트랜잭션으로 분할하거나 페이로드 크기를 줄이세요
VerifierKeyTooLarge트랜잭션의 검증자 키가 크기 한도를 초과한 경우올바른(디버그가 아닌) 검증자 키를 사용하고 있는지 확인하세요

Claims errors

코인 클레임 데이터가 일관되지 않거나 검증에 실패할 때 발생하는 오류입니다.

VariantDescriptionFix
ClaimCoinMismatch클레임에서 참조한 코인이 예상 코인과 일치하지 않는 경우클레임이 올바른 코인 데이터를 대상으로 하는지 확인하세요
ClaimNullifierFailed클레임의 널리파이어가 유효하지 않거나 일치하지 않는 경우올바른 키와 코인 데이터로 널리파이어를 다시 생성하세요
ClaimOverflow클레임 값을 합산하는 중 산술 오버플로우가 발생한 경우개별 클레임 값을 줄이세요. 합계가 u64::MAX를 초과할 수 있습니다
ClaimReceiveFailed코인 수신 클레임이 유효하지 않거나 레저가 검증하지 못하는 경우클레임 데이터가 대상 코인과 일치하는지 확인하세요
ClaimSpendFailed코인 지출 클레임이 검증에 실패한 경우지출 권한과 널리파이어 데이터를 확인하세요
UnclaimedCoinCom코인 커밋먼트가 존재하지만 대응하는 클레임이 없는 경우모든 코인 커밋먼트에 유효한 클레임이 연결되어 있는지 확인하세요
UnclaimedNullifier널리파이어가 존재하지만 대응하는 코인 클레임이 없는 경우모든 널리파이어에 대응하는 지출 클레임이 있는지 확인하세요
Unbalanced트랜잭션 입력과 출력의 잔액이 맞지 않는 경우(값이 보존되지 않음)모든 입력과 출력의 토큰 수량을 다시 확인하세요

Committee errors

트랜잭션의 위원회 서명이 누락되거나, 부족하거나, 유효하지 않을 때 발생하는 오류입니다.

VariantDescriptionFix
InvalidCommitteeSignature위원회 서명의 형식이 잘못됐거나 검증되지 않는 경우유효한 위원회 구성원으로부터 서명을 다시 수집하세요
KeyNotInCommittee서명에 사용된 키가 예상 위원회의 구성원이 아닌 경우해당 에포크의 위원회 구성원으로 등록된 키를 사용하세요
ThresholdMissed필요한 위원회 서명 임계값에 도달하지 못한 경우제출 전에 더 많은 위원회 구성원의 서명을 수집하세요

Intents errors

트랜잭션 인텐트의 서명이 유효하지 않거나 세그먼트 식별자가 충돌할 때 발생하는 오류입니다.

VariantDescriptionFix
IntentAtGuaranteedSegmentId인텐트가 허용되지 않는 보장 세그먼트 ID를 대상으로 하는 경우인텐트를 보장 세그먼트가 아닌 곳으로 옮기세요
IntentSegmentIdCollision두 인텐트가 동일한 세그먼트 ID를 참조하는 경우각 인텐트에 고유한 세그먼트 ID를 할당하세요
IntentSignatureVerificationFailure인텐트의 서명이 검증에 실패한 경우올바른 키로 인텐트에 다시 서명하세요
IntentSignatureKeyMismatch서명 키가 인텐트에 선언된 키와 일치하지 않는 경우인텐트가 참조하는 키를 사용하는지 확인하세요

Balance check errors

트랜잭션 검증 중 토큰 잔액 검증이 실패할 때 발생하는 오류입니다.

VariantDescriptionFix
BalanceCheckConversionFailure잔액 검증 중 타입 변환에 실패한 경우값 인코딩 버그를 나타냅니다. 토큰 타입 일관성을 확인하세요
BalanceCheckOutOfBounds잔액 값이 검사에 유효한 숫자 범위를 벗어난 경우모든 토큰 수량이 프로토콜이 정의한 범위 내에 있는지 확인하세요
BalanceCheckOverspend트랜잭션이 가용 금액보다 많이 지출하려는 경우지출 금액을 줄이거나 충분한 입력을 추가하세요

DUST errors

DUST 등록 또는 지출 작업이 검증에 실패할 때 발생하는 오류입니다.

VariantDescriptionFix
InsufficientDustForRegistrationFeeDUST 수량이 등록 수수료를 충당하는 데 필요한 최소치보다 적은 경우최소 수수료 기준을 충족하도록 DUST 수량을 늘리세요
InvalidDustRegistrationSignatureDUST 등록 서명이 유효하지 않은 경우올바른 키로 DUST 등록에 다시 서명하세요
InvalidDustSpendProofDUST 지출 증명이 유효하지 않은 경우올바른 witness 데이터로 지출 증명을 다시 생성하세요
MultipleDustRegistrationsForKey하나의 트랜잭션에서 동일한 키가 여러 DUST 등록에 나타나는 경우트랜잭션당 각 DUST 키를 한 번만 사용하세요
OutOfDustValidityWindowDUST 등록 또는 지출이 허용된 유효 시간 창을 벗어난 경우블록 높이를 확인하고 유효 시간 창 안에서 재제출하세요

Version errors

증명이나 트랜스크립트가 노드가 인식하지 못하는 버전을 사용할 때 발생하는 오류입니다.

VariantDescriptionFix
FallibleTranscriptVersion폴러블 세그먼트에 트랜스크립트 버전이 유효하지 않은 경우폴러블 세그먼트가 올바른 트랜스크립트 버전 형식을 사용하는지 확인하세요
GuaranteedTranscriptVersion보장 세그먼트에 트랜스크립트 버전이 유효하지 않은 경우보장 세그먼트가 올바른 트랜스크립트 버전 형식을 사용하는지 확인하세요
UnsupportedProofVersion증명이 노드가 지원하지 않는 버전을 사용하는 경우SDK를 업그레이드하거나 지원되는 버전으로 증명을 다시 생성하세요

Check errors

트랜잭션 이펙트나 세그먼트 순서에 대한 정적 일관성 검사가 실패할 때 발생하는 오류입니다.

VariantDescriptionFix
DisjointCheckFailure서로 분리되어야 할 세그먼트가 리소스나 상태를 공유하는 경우세그먼트가 서로 겹치지 않는 상태에서 동작하도록 하세요
EffectsCheckFailure트랜잭션의 선언된 이펙트가 정적 일관성 검사에 실패한 경우선언된 이펙트가 컨트랙트 실행 결과와 일치하는지 확인하세요
SequencingCheckFailure트랜잭션이 세그먼트 순서 제약을 위반한 경우순서 요구사항을 충족하도록 세그먼트를 재정렬하세요

Sorting and deduplication errors

트랜잭션 입력 또는 출력이 정규 순서나 고유성 요구사항을 위반할 때 발생하는 오류입니다.

VariantDescriptionFix
DuplicateInputs동일한 입력이 트랜잭션에 두 번 이상 나타나는 경우중복 입력을 제거하세요
InputsNotSorted트랜잭션 입력이 필수 정규 정렬 순서가 아닌 경우트랜잭션을 빌드하기 전에 레저의 정규 순서에 따라 입력을 정렬하세요
InputsSignaturesLengthMismatch입력 서명 수가 입력 수와 일치하지 않는 경우각 입력에 정확히 하나의 서명을 제공하세요
OutputsNotSorted트랜잭션 출력이 필수 정규 정렬 순서가 아닌 경우트랜잭션을 빌드하기 전에 출력을 정규 순서로 정렬하세요

TransactionInvalid

레저가 구조적으로 유효한 트랜잭션을 현재 상태에 적용했지만 상태 불일치로 거부할 때 발생하는 상태 적용 오류입니다. 이 enum은 #[non_exhaustive]이며 19개의 변형을 정의합니다.

VariantDescriptionFix
BalanceCheckOutOfBounds상태 적용 중 잔액 값이 유효 범위를 벗어난 경우현재 상태를 반영한 후에도 토큰 수량이 범위 내에 있는지 확인하세요
ContractAlreadyDeployed컨트랙트 배포가 이미 컨트랙트가 있는 주소를 대상으로 하는 경우다른 주소에 배포하거나 배포 고유성을 확인하세요
ContractNotPresent트랜잭션이 해당 주소에 존재하지 않는 컨트랙트를 호출하는 경우컨트랙트 주소를 확인하고 해당 주소에 컨트랙트가 존재하는지 확인하세요
DivideByZero트랜잭션 처리 중 0으로 나누기가 발생한 경우트랜잭션 값 계산 버그를 나타냅니다
DustDeregistrationNotRegistered활성 등록이 없는 DUST 키를 등록 해제하려는 경우등록 해제 전에 해당 키에 활성 등록이 있는지 확인하세요
DustDoubleSpend트랜잭션이 지출하려는 DUST 코인이 이미 지출된 경우현재 DUST UTXO 상태를 확인하세요. 해당 코인은 이미 지출됐습니다
EffectsMismatch트랜잭션을 적용한 실제 이펙트가 선언된 이펙트와 다른 경우선언된 이펙트는 컨트랙트 실행 결과와 정확히 일치해야 합니다
GenerationInfoAlreadyPresent이 에포크/키에 대한 생성 정보가 이미 온체인에 기록된 경우생성 정보는 에포크당 한 번만 제출할 수 있습니다
InputNotInUtxos트랜잭션 입력이 현재 상태에 존재하지 않는 UTXO를 참조하는 경우해당 UTXO가 이미 지출됐을 수 있습니다. 트랜잭션을 빌드하기 전에 최신 상태를 가져오세요
InsufficientClaimable트랜잭션이 클레임 가능 풀의 가용량보다 많이 클레임하려는 경우클레임 금액을 줄이거나 클레임 가능 자금이 더 쌓일 때까지 기다리세요
InvariantViolation레저가 내부 불변 조건 위반을 감지한 경우버그로 신고하세요. 올바르게 구현된 노드나 SDK에서는 발생하지 않아야 합니다
MerkleTreeError상태 적용 중 머클 트리 작업이 실패한 경우자세한 내용은 merkle_tree::InvalidUpdate 섹션을 참조하세요
ReplayCounterMismatch리플레이 보호 카운터가 예상 값과 일치하지 않는 경우노드에서 현재 리플레이 카운터를 가져와 트랜잭션에 사용하세요
ReplayProtectionViolation트랜잭션이 리플레이 보호 제약을 위반한 경우트랜잭션이 중복되거나 순서를 벗어나지 않았는지 확인하세요
RewardTooSmall보상 금액이 필요한 최소치보다 적은 경우프로토콜 최소치를 충족하도록 보상 금액을 늘리세요
Transcript레저가 컨트랙트 트랜스크립트 실행을 거부한 경우(TranscriptRejected를 래핑)자세한 내용은 TranscriptRejected 오류 섹션을 참조하세요
VerifierKeyAlreadyPresent검증자 키 등록이 이미 등록된 키를 대상으로 하는 경우기존 검증자 키를 다시 등록하지 마세요
VerifierKeyNotFound트랜잭션에서 참조한 검증자 키가 온체인에 등록되지 않은 경우해당 키를 참조하는 트랜잭션을 제출하기 전에 검증자 키를 등록하세요
ZswapZswap 하위 작업이 실패한 경우(zswap::TransactionInvalid를 래핑)자세한 내용은 Zswap 오류 섹션을 참조하세요

OnchainProgramError

Impact VM 온체인 실행 엔진 내부에서 컨트랙트 트랜스크립트 실행이 실패할 때 표면화되는 오류입니다. 이 enum은 17개의 변형을 정의합니다.

VariantDescription
ArithmeticOverflow산술 연산이 지원 정수 범위를 오버플로우한 경우
AttemptedArrayDelete지원되지 않는 배열 요소 삭제를 시도한 경우
BoundsExceeded배열 또는 버퍼 접근이 범위를 벗어난 위치를 대상으로 한 경우
CacheMiss실행 중 필요한 값의 캐시 조회가 결과를 반환하지 않은 경우
CellBoundExceeded셀 값이 최대 허용 크기를 초과한 경우
Decode스택 또는 프로그램 데이터에서 값 디코드에 실패한 경우(InvalidBuiltinDecode를 래핑)
ExpectedCellVM이 스택 위치에서 셀 값을 기대했으나 다른 타입을 발견한 경우
InvalidArgs내장 함수가 유효하지 않거나 개수가 잘못된 인자를 받은 경우
LogBoundExceeded로깅 작업이 최대 허용 로그 크기를 초과한 경우
MerkleTreeErrorVM 내부에서 머클 트리 내장 작업이 실패한 경우
MissingKey컨트랙트 상태 맵에서 필요한 키를 찾을 수 없는 경우
OutOfGas컨트랙트 실행 중 트랜잭션의 가스가 소진된 경우
RanOffStackVM 스택 공간이 부족한 경우. 빈 스택에서 pop 또는 read를 시도했습니다
RanPastProgramEnd프로그램 카운터가 바이트코드 끝을 넘어 진행한 경우
ReadMismatch컨트랙트 상태에서 읽은 값이 트랜스크립트에 선언된 값과 일치하지 않는 경우
StackOverflowVM 호출 스택이 너무 깊어져 재귀 한도를 초과한 경우
TooLongForEqual동등성 비교가 최대 비교 가능 길이를 초과하는 값을 대상으로 한 경우
TypeError(String)VM 실행 중 타입 불일치가 발생한 경우. 문자열이 불일치 내용을 설명합니다

TranscriptRejected

이 타입은 OnchainProgramError를 래핑하며 온체인 컨트랙트 실행 중 발생하는 실패를 나타냅니다. 5개의 변형을 정의합니다.

VariantDescription
Decode실행이 시작되기 전에 트랜스크립트 입력 디코드에 실패한 경우
EffectDecodeError컨트랙트 실행이 발생시킨 이펙트의 디코드에 실패한 경우
Execution컨트랙트 실행이 실패한 경우(OnchainProgramError를 래핑). 내부 오류에 VM 수준의 실패 내용이 담깁니다
FinalStackWrongLength실행이 완료된 후 스택의 요소 수가 예상과 다른 경우
WeakStateReturned프로토콜이 전체 상태를 요구했으나 컨트랙트가 약화된 상태를 반환한 경우

Zswap errors

Zswap은 실드 전송, 코인 커밋먼트, 이중 지출 방지를 포함한 프라이빗 코인 작업을 관리합니다.

zswap::TransactionInvalid

레저가 Zswap 작업을 현재 상태에 적용할 때 발생하는 상태 수준 Zswap 실패입니다.

VariantDescriptionFix
CommitmentAlreadyPresent코인 커밋먼트가 커밋먼트 트리에 이미 존재하는 경우중복 커밋먼트입니다. 리플레이 또는 구성 오류 여부를 확인하세요
MerkleTreeErrorZswap 상태 적용 중 머클 트리 업데이트가 실패한 경우자세한 내용은 merkle_tree::InvalidUpdate 섹션을 참조하세요
NullifierAlreadyPresent널리파이어가 이미 지출된 경우. 이는 이중 지출 시도입니다해당 코인은 이미 지출됐습니다. 다시 지출하려 하지 마세요
UnknownMerkleRoot증명에서 참조한 머클 루트를 현재 상태가 알지 못하는 경우노드에서 현재 머클 루트를 가져와 증명을 다시 빌드하세요

zswap::MalformedOffer

상태 적용 전에 검사하는 구조적 Zswap 오류입니다.

VariantDescriptionFix
ContractSentCiphertext이 맥락에서 허용되지 않는 ciphertext 전송을 컨트랙트가 시도한 경우컨트랙트는 ciphertext 출력을 직접 생성해서는 안 됩니다
InvalidProofZswap 영지식 증명이 검증에 실패한 경우올바른 witness와 public input으로 증명을 다시 생성하세요
NonDisjointCoinMerge코인 병합이 서로 분리되지 않은 코인 집합을 대상으로 한 경우병합하는 코인 집합이 완전히 분리되어 있는지 확인하세요
NotNormalized오퍼가 정규 정규화 형식이 아닌 경우트랜잭션에 포함하기 전에 오퍼를 정규화하세요

zswap::OfferCreationFailed

Zswap 오퍼를 구성하는 중에 발생하는 클라이언트 측 오류입니다.

VariantDescriptionFix
InvalidIndex오퍼 구성에 유효하지 않은 인덱스를 사용한 경우코인 인덱스가 머클 트리의 유효 범위 내에 있는지 확인하세요
MerkleTreeError오퍼 구성 중 머클 트리 작업이 실패한 경우자세한 내용은 merkle_tree::InvalidUpdate 섹션을 참조하세요
NotContractOwned오퍼가 예상 컨트랙트가 소유하지 않은 코인을 참조하는 경우올바른 컨트랙트가 소유한 코인에 대해서만 오퍼를 구성하세요
Proving오퍼 생성 중 영지식 증명 단계가 실패한 경우모든 witness가 유효한지 확인하고 올바른 입력으로 증명을 다시 실행하세요
TreeNotRehashed최근 업데이트 후 머클 트리에 rehash가 필요한 경우오퍼를 구성하기 전에 트리 rehash 작업을 호출하세요

Merkle tree errors

커밋먼트 머클 트리에 대한 작업이 실패할 때 표면화되는 오류입니다.

merkle_tree::InvalidIndex

제공된 인덱스가 현재 트리 크기의 범위를 벗어날 때 반환됩니다.

VariantDescription
InvalidIndex(u64)제공된 인덱스가 현재 머클 트리 크기의 범위를 벗어난 경우

merkle_tree::InvalidUpdate

머클 트리 업데이트 시 발생하는 구조적 실패를 나타내는 6개의 변형입니다.

VariantDescription
BadUpdatePath업데이트에 제공된 머클 경로가 잘못됐거나 일관되지 않은 경우
CollapsedIndex업데이트가 collapse(가지치기)된 서브트리 노드를 대상으로 한 경우
EndBeforeStart업데이트 범위의 끝 인덱스가 시작 인덱스보다 앞에 있는 경우
EndOutOfTree업데이트 범위의 끝 인덱스가 트리 경계를 넘어선 경우
NotFullyRehashed트리에 rehash되지 않은 대기 중 업데이트가 있는 경우. 일관되지 않은 상태입니다
StubUpdate업데이트가 업데이트를 받을 수 없는 stub 노드를 대상으로 한 경우
WrongNumberOfSegments업데이트가 예상과 다른 수의 세그먼트를 제공하는 경우

Other error types

다음 타입들은 클라이언트 측 구성, 수수료 계산, 시스템 트랜잭션, 보조 작업을 다룹니다.

FeeCalculationError

트랜잭션 제출 전 수수료 계산 중에 발생하는 오류입니다.

VariantDescription
BlockLimitExceeded수수료 계산 중 트랜잭션이 블록 한도를 초과한 경우
OutsideTimeToDismiss트랜잭션이 해당 바이트 크기에 허용되는 최대 time-to-dismiss를 초과한 경우

MalformedContractDeploy

컨트랙트 배포 트랜잭션에 특화된 오류로, 상태 적용 전에 검사합니다.

VariantDescription
IncorrectChargedState컨트랙트 배포에 잘못 계산된 charged key 맵이 포함된 경우
NonZeroBalance컨트랙트 배포에 0이 아닌 토큰 잔액이 실린 경우. 컨트랙트 배포에는 기존 잔액이 포함되어서는 안 됩니다

SystemTransactionError

에포크 전환, 위원회 업데이트 같은 프로토콜 수준 시스템 트랜잭션에서 발생하는 오류입니다. 이 타입은 10개의 변형을 정의합니다.

VariantDescription
CommitmentAlreadyPresent코인 커밋먼트가 트리에 이미 존재하는 경우. 이는 이중 지출 시도입니다
GenerationInfoAlreadyPresent이 에포크의 DUST 생성 정보가 이미 존재하는 경우. 레저가 중복 삽입을 거부합니다
IllegalPayout지급액 또는 브릿지 금액이 남은 네이티브 토큰 공급량이나 브릿지 풀을 초과하는 경우
IllegalReserveDistribution배분 금액이 남은 리저브 토큰 공급량을 초과하는 경우
InsufficientTreasuryFunds재무부가 요청을 충족할 만큼 요청한 타입의 토큰을 보유하지 못한 경우
InvalidBasisPointscardano_to_midnight_bridge_fee_basis_points 값이 10,000 이상으로 유효 범위를 벗어난 경우
InvariantViolation트랜잭션이 함의하는 총 NIGHT 공급량이 MAX_SUPPLY를 초과하는 경우
MerkleTreeError시스템 트랜잭션 중 머클 트리 작업이 실패한 경우. 자세한 내용은 merkle_tree::InvalidUpdate를 참조하세요
ReplayProtectionFailure시스템 트랜잭션이 리플레이 보호 제약을 위반한 경우(TransactionApplicationError를 래핑)
TreasuryDisabled거버넌스가 아직 재무부를 활성화하지 않은 경우. 이해관계자가 합의에 이르기 전까지 레저는 재무부 접근을 거부합니다

TransactionConstructionError

트랜잭션을 제출 전에 빌드하는 중에 발생하는 클라이언트 측 오류입니다.

VariantDescription
MissingVerifierKey컨트랙트 작업에 검증자 키가 없는 경우. 증명 단계를 진행할 수 없습니다
ProofFailed트랜잭션 조립 중 증명 생성이 실패한 경우(ProvingError를 래핑)
TransactionEmpty트랜잭션에 작업이 없는 경우. 제출 전에 최소 하나를 추가하세요
UnfinishedCall클라이언트가 컨트랙트 호출을 시작했으나 트랜잭션을 빌드하기 전에 완료하지 않은 경우

TransactionProvingError

다음 오류들은 증명 단계에서 발생합니다.

note

Proving 변형은 불투명한 anyhow::Error 별칭인 ProvingError를 래핑합니다. Tokio 변형은 std::io::Error를 래핑하며 비동기 런타임의 I/O 실패를 표면화합니다.

VariantDescription
LeftoverEntries컨트랙트 작업의 트랜스크립트에 증명이 소비한 것보다 많은 항목이 있는 경우
MissingKeyset필요한 회로 위치의 증명 키를 찾을 수 없는 경우
Proving기반 증명 백엔드가 오류를 반환한 경우(ProvingError를 래핑)
RanOutOfEntries증명이 완료되기 전에 컨트랙트 작업의 트랜스크립트 항목이 소진된 경우
Tokio비동기 증명 생성 중 I/O 오류가 발생한 경우(std::io::Error를 래핑)

EventReplayError

온체인 이벤트에서 지갑 상태를 동기화하는 데 사용되는 이벤트 로그 리플레이 중에 발생하는 오류입니다.

VariantDescription
DtimeUpdateForUntracked클라이언트가 추적하지 않는 DUST 생성 항목을 대상으로 한 경우
EventForPastTime이벤트의 타임스탬프가 클라이언트가 이미 동기화한 시점보다 이른 경우
MerkleTreeError이벤트 리플레이 중 머클 트리 작업이 실패한 경우. 자세한 내용은 merkle_tree::InvalidUpdate 섹션을 참조하세요
NonLinearInsertion클라이언트가 머클 트리에 이벤트를 비선형적으로 삽입한 경우. 예상 인덱스와 수신 인덱스가 일치하지 않습니다

DustLocalStateError

다음 오류들은 클라이언트 측의 로컬 DUST 상태 관리에서 발생합니다.

VariantDescription
BackingNightNotFound주어진 backing NIGHT 논스에 대한 생성 정보가 없는 경우
CommitmentIndexNotFound주어진 커밋먼트 인덱스에 대한 커밋먼트가 없는 경우
GenerationIndexNotFound주어진 생성 인덱스에 대한 생성 정보가 없는 경우
MerkleTreeError로컬 상태 관리 중 머클 트리 작업이 실패한 경우. 자세한 내용은 merkle_tree::InvalidUpdate 섹션을 참조하세요
NonLinearInsertion클라이언트가 머클 트리에 값을 비선형적으로 삽입한 경우. 예상 인덱스와 수신 인덱스가 일치하지 않습니다
WrongGenerationInfo주어진 인덱스에 저장된 생성 정보가 유효하지 않은 경우

Cross-reference: Rust error to node error code

노드 오류 코드를 디버깅할 때는 다음 방법으로 기반 Rust 오류를 찾으세요.

  • 노드 오류 코드 레퍼런스에서 숫자형 LedgerApiError 코드를 조회해 상위 수준 범주를 파악합니다.
  • 노드의 구조화된 오류 응답 본문을 확인합니다. Rust 오류 타입은 대개 detail 또는 cause 필드에 문자열로 직렬화됩니다.
  • Rust 타입 이름을 이 레퍼런스의 표와 대조합니다.