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

Midnight.js error reference

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

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

Quick reference​

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

Transaction errors​

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

Transaction failed (TxFailedError)​

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

Properties​

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

Deploy transaction failed (DeployTxFailedError)​

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

Properties​

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

Call transaction failed (CallTxFailedError)​

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

Properties​

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

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: 정의되지 않았거나 검증자 키가 일치하지 않는 circuit

Configuration errors​

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

Incomplete call transaction private state config (IncompleteCallTxPrivateStateConfig)​

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

Properties​

  • privateStateId: 호출 트랜잭션에 지정된 private state ID
  • privateStateProvider: 호출 트랜잭션에 지정된 private state provider

Incomplete find contract private state config (IncompleteFindContractPrivateStateConfig)​

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

Properties​

  • initialPrivateState: 컨트랙트 조회에 지정된 초기 private state
  • privateStateId: 컨트랙트 조회에 지정된 private state ID

Message​

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

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

State and identity errors​

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

Scoped transaction identity mismatch (ScopedTransactionIdentityMismatchError)​

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

Properties​

  • cached: 캐시에 저장된 컨트랙트 주소와 private state ID
  • requested: 요청된 컨트랙트 주소와 private state 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);
}
}