Skip to main content

Midnight.js v4.1.1 release notes

For the complete documentation index, see llms.txt
  • Version: v4.1.1
  • Date: June 2, 2026
  • Node.js requirement: >=22

주요 변경 사항 요약​

이번 릴리스는 indexer public data provider의 오류 처리에 breaking change를 도입하고, key 관리와 provider URL 검증의 보안을 강화합니다. 또한 testkit-js에 qanet 지원을 추가하고, contract governance 코드의 구조와 타입 안전성을 개선합니다.

대상 독자​

이 릴리스 노트는 다음과 같은 개발자에게 유용합니다:

  • 오류 처리 코드에서 IndexerFormattedError.cause를 사용하는 경우 (.errors로 이름 변경됨)
  • Midnight.js key 관리 API로 signing key를 내보내거나 가져오는 경우
  • loopback이 아닌 환경에서 provider URL을 구성하는 경우
  • testkit-js로 qanet 대상 E2E 테스트를 실행하는 경우

업데이트 요약​

  • ES2022 Error.cause 호환성을 위해 IndexerFormattedError.cause를 .errors로 이름 변경
  • signing key와 private state 내보내기 작업에 전체 password 정책 적용
  • blockHeight·blockHash 구성에 대한 컨트랙트 상태 방출
  • indexer-public-data-provider의 오류 처리를 구조화된 오류 타입으로 강화
  • signing key 가져오기 시 값 검증 추가
  • loopback이 아닌 provider URL에서 평문 HTTP/WS 사용 시 경고 추가
  • testkit-js에 NIGHT/DUST faucet 흐름 기반 qanet 지원 추가

신규 기능​

이번 릴리스에 도입된 새로운 기능의 상세 내용입니다.

testkit-js의 qanet 지원​

testkit-js가 NIGHT/DUST faucet 흐름을 통해 qanet 환경을 지원하여, qanet 네트워크 대상 E2E 테스트를 실행할 수 있습니다. keystore가 waitForFunds 주소를 직접 도출합니다.

compose 이미지 버전 매개변수화​

testkit-js의 compose 구성이 이미지 버전을 매개변수로 받을 수 있어, 여러 컴포넌트 버전 조합을 시험하는 nightly E2E matrix를 구성할 수 있습니다.


호환성 주의 사항 (Breaking changes)​

IndexerFormattedError.cause → .errors 이름 변경​

ES2022의 Error.cause 슬롯은 규약상 단일 원인 오류를 담는 자리이지, 오류 모음을 담는 자리가 아닙니다. 이 자리를 GraphQL 오류 배열로 덮어쓰면 노드의 util.inspect 인과 체인, Sentry 그룹핑, 구조화 로거가 깨집니다. 이번 릴리스는 충돌을 피하기 위해 속성 이름을 .errors로 변경합니다.

마이그레이션: IndexerFormattedError.cause 참조를 모두 .errors로 바꾸세요.

correlateDeployTxId helper 분리​

contract action과 identifier를 대응시키는 로직을 좁은 구조적 타입을 받는 pure helper로 분리했습니다. toFinalizedDeployTxData는 이제 파일 내부 전용이며 더 이상 export되지 않습니다. 대신 correlateDeployTxId를 사용하세요.

non-null assertion을 type predicate로 교체​

contract action 처리의 Rx filter 체인이 non-null assertion 대신 type predicate를 사용합니다. 이전의 타입 좁히기 동작에 의존하던 코드는 영향을 받을 수 있습니다.


버그 수정 및 품질 개선​

이번 릴리스에 포함된 버그 수정 및 품질 개선 사항입니다.

내보내기 작업에 전체 password 정책 적용​

signing key와 private state 내보내기 작업이 다른 key 관리 작업과 동일한 password 정책을 강제합니다. 이전까지 남아 있던 보안 공백 하나를 메웁니다.

block 구성에 대한 contract 상태 방출​

blockHeight·blockHash 구성에서도 컨트랙트 상태가 방출되어, 상태 업데이트를 놓치던 사례가 해결되었습니다.

indexer 오류 처리 강화​

indexer-public-data-provider가 적절한 오류 분류를 갖춘 구조화된 오류 타입을 사용합니다. GraphQL 쿼리 실패의 디버깅이 쉬워집니다.

signing key 가져오기 시 검증​

가져온 signing key 값을 저장 전에 검증하여, 잘못된 key가 이후 단계에서 실패를 일으키는 것을 방지합니다.

loopback이 아닌 URL의 평문 HTTP/WS 경고​

provider URL이 loopback이 아닌 주소에 평문 HTTP나 WebSocket 프로토콜을 사용하면 Midnight.js가 경고를 출력합니다. 안전하지 않은 구성을 찾아내는 데 도움이 됩니다.


알려진 이슈​

릴리스 시점에 확인된 치명적인 이슈는 없습니다.


링크 및 참고 자료​