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

Error reference

Midnight.js는 컨트랙트와 트랜잭션을 다룰 때 발생하는 실패를 분류할 수 있도록 구조화된 오류 클래스를 제공합니다.

이 문서에서는 오류 클래스와 각 속성을 정리해 안내합니다.

Quick reference

ClassKindTrigger
TxFailedErrorTransaction합의 노드가 트랜잭션을 거부하거나 적용에 실패한 경우
DeployTxFailedErrorTransaction배포 트랜잭션이 실패한 경우
CallTxFailedErrorTransaction호출 트랜잭션이 실패한 경우
ReplaceMaintenanceAuthorityTxFailedErrorTransaction유지보수 권한 교체에 실패한 경우
RemoveVerifierKeyTxFailedErrorTransaction검증자 키 제거에 실패한 경우
InsertVerifierKeyTxFailedErrorTransaction검증자 키 삽입에 실패한 경우
ContractTypeErrorContract배포된 컨트랙트의 타입이나 검증자 키가 예상과 다른 경우
IncompleteCallTxPrivateStateConfigConfiguration호출 시 privateStateId만 지정하고 privateStateProvider를 누락한 경우
IncompleteFindContractPrivateStateConfigConfiguration조회 시 initialPrivateState만 지정하고 privateStateId를 누락한 경우
ScopedTransactionIdentityMismatchErrorState / identity스코프드 배치가 다른 컨트랙트나 프라이빗 상태의 캐시를 재사용하려는 경우

Transaction errors

네트워크에 제출한 트랜잭션이 실행이나 검증 단계에서 실패할 때 발생하는 오류입니다.

Transaction failed (TxFailedError)

합의 노드에 제출한 트랜잭션이 실패했음을 나타냅니다.

Properties

  • finalizedTxData: 실패한 트랜잭션의 최종 데이터
  • circuitId(선택): 트랜잭션을 구성할 때 사용된 회로

Deploy transaction failed (DeployTxFailedError)

컨트랙트 배포 트랜잭션이 실패했음을 나타냅니다.

Properties

  • finalizedTxData: 실패한 배포 트랜잭션의 최종 데이터

Call transaction failed (CallTxFailedError)

컨트랙트 호출 트랜잭션이 실패했음을 나타냅니다.

Properties

  • finalizedTxData: 실패한 호출 트랜잭션의 최종 데이터
  • circuitId: 트랜잭션을 구성할 때 사용된 회로

Replace maintenance authority transaction failed (ReplaceMaintenanceAuthorityTxFailedError)

유지보수 권한 교체 트랜잭션이 실패했음을 나타냅니다.

Properties

  • finalizedTxData: 실패한 유지보수 권한 교체 트랜잭션의 최종 데이터

Remove verifier key transaction failed (RemoveVerifierKeyTxFailedError)

검증자 키 제거 트랜잭션이 실패했음을 나타냅니다.

Properties

  • finalizedTxData: 실패한 검증자 키 제거 트랜잭션의 최종 데이터

Insert verifier key transaction failed (InsertVerifierKeyTxFailedError)

검증자 키 삽입 트랜잭션이 실패했음을 나타냅니다.

Properties

  • finalizedTxData: 실패한 검증자 키 삽입 트랜잭션의 최종 데이터

Contract errors

배포된 컨트랙트와 상호작용할 때 발생하는 오류입니다.

Contract type error (ContractTypeError)

기대한 컨트랙트 타입이 실제 배포된 상태와 일치하지 않을 때 발생합니다.

Properties

  • contractState: 배포된 컨트랙트 상태
  • circuitIds: 정의되지 않았거나 검증자 키가 일치하지 않는 회로

Configuration errors

트랜잭션을 구성하거나 컨트랙트를 조회할 때 설정이 잘못되었거나 누락되어 발생하는 오류입니다.

Incomplete call transaction private state config (IncompleteCallTxPrivateStateConfig)

호출 트랜잭션에서 privateStateId는 지정했지만 privateStateProvider가 없을 때 발생합니다.

Properties

  • privateStateId: 호출 트랜잭션에 지정된 프라이빗 상태 ID
  • privateStateProvider: 호출 트랜잭션에 지정된 프라이빗 상태 프로바이더

Incomplete find contract private state config (IncompleteFindContractPrivateStateConfig)

컨트랙트 조회에서 initialPrivateState는 지정했지만 privateStateId가 없을 때 발생합니다.

Properties

  • initialPrivateState: 컨트랙트 조회에 지정된 초기 프라이빗 상태
  • privateStateId: 컨트랙트 조회에 지정된 프라이빗 상태 ID

Message

이 오류가 발생할 때 클라이언트가 던지는 실제 런타임 메시지는 다음과 같습니다.

'initialPrivateState' was defined for contract find while 'privateStateId' was undefined

State and identity errors

컨트랙트 식별자나 캐시된 상태와 관련된 미묘한 버그를 막기 위한 오류입니다.

Scoped transaction identity mismatch (ScopedTransactionIdentityMismatchError)

스코프드 트랜잭션이 다른 컨트랙트 주소나 프라이빗 상태 ID로 캐시된 상태를 재사용하려고 할 때 발생합니다.

Properties

  • cached: 캐시에 저장된 컨트랙트 주소와 프라이빗 상태 ID
  • requested: 요청된 컨트랙트 주소와 프라이빗 상태 ID

Error handling

JavaScript의 try/catch 구문과 instanceof 연산자로 오류를 처리할 수 있습니다.

import { CallTxFailedError } from '@midnight-ntwrk/midnight-js-contracts';

try {
await client.call(/* ... */);
} catch (error) {
if (error instanceof CallTxFailedError) {
console.error('Transaction failed:', error.message);
} else {
console.error('Unexpected error:', error);
}
}