For the complete documentation index, see llms.txt
Midnight.js error reference
Midnight.js API는 컨트랙트와 트랜잭션을 다룰 때 발생하는 실패를 분류할 수 있도록 구조화된 오류 클래스를 제공합니다.
이 문서에서는 오류 클래스와 각 속성을 정리해 안내합니다.
Quick reference
| Class | Kind | Trigger |
|---|---|---|
TxFailedError | 트랜잭션 | 합의 노드가 트랜잭션을 거부하거나 적용에 실패한 경우 |
DeployTxFailedError | 트랜잭션 | 배포 트랜잭션이 실패한 경우 |
CallTxFailedError | 트랜잭션 | 호출 트랜잭션이 실패한 경우 |
ReplaceMaintenanceAuthorityTxFailedError | 트랜잭션 | 유지보수 권한 교체에 실패한 경우 |
RemoveVerifierKeyTxFailedError | 트랜잭션 | 검증자 키 제거에 실패한 경우 |
InsertVerifierKeyTxFailedError | 트랜잭션 | 검증자 키 삽입에 실패한 경우 |
ContractTypeError | 컨트랙트 | 배포된 컨트랙트의 타입이나 검증자 키가 예상과 다른 경우 |
IncompleteCallTxPrivateStateConfig | Configuration | 호출 시 privateStateId만 지정하고 privateStateProvider를 누락한 경우 |
IncompleteFindContractPrivateStateConfig | Configuration | 조회 시 initialPrivateState만 지정하고 privateStateId를 누락한 경우 |
ScopedTransactionIdentityMismatchError | State / 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 IDprivateStateProvider: 호출 트랜잭션에 지정된 private state provider
Incomplete find contract private state config (IncompleteFindContractPrivateStateConfig)
컨트랙트 조회에서 initialPrivateState는 지정했지만 privateStateId가 없을 때 발생합니다.
Properties
initialPrivateState: 컨트랙트 조회에 지정된 초기 private stateprivateStateId: 컨트랙트 조회에 지정된 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 IDrequested: 요청된 컨트랙트 주소와 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);
}
}