Skip to main content

Midnight.js v4.0.4 릴리스 노트

For the complete documentation index, see llms.txt
  • Version: v4.0.4
  • Date: April 1, 2026
  • Node.js requirement: >=22

주요 변경 사항 요약

이번 릴리스는 새로운 패키지 진입점, 다중 수신자 흐름에서의 안전한 coin output 암호화, proving/브라우저 호환성/테스트 도구 전반의 안정성 수정으로 Midnight.js를 강화합니다.

v4.0.3은 릴리스 파이프라인 문제로 게시되지 않았으며, 모든 변경 사항이 v4.0.4에 포함되었습니다.

대상 독자

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

  • Midnight.js로 DApp을 개발하면서 단일 barrel import 패키지를 원하는 경우
  • wallet 연동 DApp Connector API를 통한 proving을 구현하는 경우
  • burn address 또는 제3자 수신자에 대한 shielded output을 처리하는 경우
  • GitHub API 제한이 있는 CI 환경에서 compact fetch 흐름을 실행하는 경우

업데이트 요약

  • 새로운 @midnight-ntwrk/midnight-js barrel 패키지 추가
  • @midnight-ntwrk/midnight-js-dapp-connector-proof-provider 추가
  • zswapStateToOffer의 수신자 암호화 처리 수정
  • 브라우저 환경에서 timingSafeEqual의 constant-time fallback 추가
  • 고수준 API를 통한 additionalCoinEncPublicKeyMappings 노출
  • 광범위한 testkit-js 안정성 수정 및 테스트 범위 확대

신규 기능

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

@midnight-ntwrk/midnight-js barrel 패키지 (#735)

핵심 Midnight.js 모듈에 대한 단일 import surface를 제공하며, 번들 크기를 가볍게 유지하기 위해 provider 패키지는 의도적으로 제외됩니다.

import { contracts, networkId, types, utils } from '@midnight-ntwrk/midnight-js';
import { deployContract } from '@midnight-ntwrk/midnight-js/contracts';
import { setNetworkId } from '@midnight-ntwrk/midnight-js/network-id';

re-export 네임스페이스:

  • contracts: @midnight-ntwrk/midnight-js-contracts
  • networkId: @midnight-ntwrk/midnight-js-network-id
  • types: @midnight-ntwrk/midnight-js-types
  • utils: @midnight-ntwrk/midnight-js-utils

@midnight-ntwrk/midnight-js-dapp-connector-proof-provider

DApp Connector의 proving API를 Midnight.js ProofProvider 인터페이스에 맞춰 변환하는 패키지로, 독립형 proof server 없이 wallet에 proving을 위임할 수 있습니다.

import { dappConnectorProofProvider } from '@midnight-ntwrk/midnight-js-dapp-connector-proof-provider';

const proofProvider = await dappConnectorProofProvider(
walletConnectedAPI,
zkConfigProvider,
costModel
);

주요 export:

  • dappConnectorProofProvider
  • dappConnectorProvingProvider
  • DAppConnectorProvingAPI

수신자별 암호화 키 해석

zswapStateToOfferEncryptionPublicKeyResolver를 지원하여 각 output이 올바른 수신자 암호화 키를 사용할 수 있습니다.

resolver가 지원하는 항목:

  • Wallet 소유 output
  • Shielded burn address output
  • 선택적 제3자 수신자 키 매핑

이 변경으로 모든 output을 wallet 자체 키로 암호화하여 발생하던 phantom balance 문제가 방지됩니다.

고수준 API에서 추가 암호화 매핑

additionalCoinEncPublicKeyMappings를 다음에서 사용할 수 있습니다:

  • DeployContractOptionsBase
  • CallOptionsBase
  • ScopedTransactionOptions
  • TransactionContext.getAdditionalMappings()

브라우저 환경 안전 암호 비교 fallback

브라우저 빌드에서 crypto.timingSafeEqual을 사용할 수 없는 경우, level-private-state-provider에서 constant-time fallback을 사용합니다.


호환성 주의 사항 (Breaking changes)

v4.0.4에서는 breaking API 변경이 없습니다.


버그 수정 및 품질 개선

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

Compact fetch GitHub 인증 지원

Compact fetch가 GITHUB_TOKEN을 지원하여, 더 높은 rate limit과 private release 접근을 위해 인증된 GitHub API를 사용할 수 있습니다.

Testkit-js 안정성 수정

assertion, 오류 전파, 환경 변수 처리, bigint 직렬화 전반에 걸친 광범위한 testkit-js 버그 수정이 포함되었으며, 수정된 동작에 대한 unit test가 추가되었습니다.


알려진 이슈

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


링크 및 참고 자료