For the complete documentation index, see llms.txt
Fix version mismatch errors
Midnight 컴포넌트 간 버전 불일치로 인한 빌드 실패 및 런타임 에러를 해결하는 방법입니다.
What causes version mismatches?
Midnight은 호환되는 버전으로 함께 동작해야 하는 여러 컴포넌트로 구성됩니다:
- Compact toolchain: 바이너리, 컴파일러, 포매터
- Runtime libraries:
@midnight-ntwrk/compact-runtime,@midnight-ntwrk/ledger-v8,@midnight-ntwrk/onchain-runtime-v3등 관련 패키지 - JavaScript libraries:
@midnight-ntwrk/midnight-js(barrel package),@midnight-ntwrk/dapp-connector-api,@midnight-ntwrk/wallet-sdk-facade등 관련 패키지 - Proof server: zero-knowledge proof 생성 서비스
- Indexer: blockchain 데이터 조회용 GraphQL API (선택 사항)
이 컴포넌트들의 버전이 맞지 않으면 빌드 에러, 배포 실패, 런타임 문제가 발생할 수 있습니다.
어떤 버전이 서로 호환되는지 반드시 공식 릴리스 호환성 매트릭스를 확인하세요.
Check your current versions
버전 불일치를 수정하기 전에, 현재 설치된 컴포넌트를 확인하고 호환성 매트릭스와 비교하세요.
Check runtime package versions
설치된 런타임 패키지 버전을 확인합니다:
npm list @midnight-ntwrk/compact-runtime
npm list @midnight-ntwrk/ledger-v8
npm list @midnight-ntwrk/onchain-runtime-v3
모든 런타임 패키지가 호환성 매트릭스에 명시된 호환 버전을 사용하는지 확인하세요.
Check proof server version
Docker로 proof server를 실행 중이라면:
docker ps | grep proof-server
docker logs [proof-server-container-id] | head -20
시작 로그에서 버전 정보를 확인합니다.
Compare versions with the compatibility matrix
릴리스 호환성 매트릭스를 확인하고 버전이 호환되는지 검증합니다. 권장 버전과 맞지 않는 컴포넌트를 기록해 두세요.
Align component versions
버전 불일치를 확인한 후, 모든 컴포넌트를 호환 버전으로 업데이트합니다. 개발 환경 전체의 호환성을 유지하려면 관련 컴포넌트를 항상 함께 업데이트하세요.
Consult the compatibility matrix
릴리스 호환성 매트릭스에서 각 컴포넌트의 올바른 버전을 확인합니다:
- Compact toolchain
- Runtime libraries
- JavaScript libraries
- Proof server
- Indexer (사용하는 경우)
Update runtime packages
package.json을 매트릭스의 호환 버전으로 업데이트합니다:
{
"dependencies": {
"@midnight-ntwrk/compact-runtime": "x.x.x",
"@midnight-ntwrk/ledger-v8": "x.x.x",
"@midnight-ntwrk/onchain-runtime-v3": "x.x.x",
"@midnight-ntwrk/wallet-sdk-facade": "x.x.x"
}
}
업데이트한 패키지를 설치합니다:
npm install
Update proof server
Docker를 사용하는 경우, 컨테이너 이미지를 호환 버전으로 업데이트합니다. 현재 컨테이너를 중지하고, docker-compose.yml을 올바른 버전으로 수정한 뒤 재시작합니다:
# 현재 컨테이너 중지
docker-compose down
# docker-compose.yml을 호환 버전으로 수정 후 재시작
docker-compose up -d
Recompile contracts
컴포넌트 업데이트 후, smart contract를 다시 컴파일합니다:
# 기존 아티팩트 삭제
rm -rf contract/managed/
# compact 명령어로 재컴파일
compact compile src/contract.compact contract/managed
컴포넌트를 업데이트할 때는 반드시 호환성 매트릭스를 확인하세요. 관련 컴포넌트를 항상 함께 업데이트하여 개발 환경 전체의 호환성을 유지해야 합니다.
Lock exact versions
프로젝트 설정에서 정확한 버전 번호를 지정하여 자동 버전 업데이트를 방지합니다. 프로젝트 안정성을 유지하고 예기치 않은 호환성 문제를 피할 수 있습니다.
Use exact version numbers
package.json에서 ^나 ~ 같은 범위 연산자 없이 정확한 버전을 지정하세요:
{
"dependencies": {
"@midnight-ntwrk/compact-runtime": "x.x.x",
"@midnight-ntwrk/ledger-v8": "x.x.x"
}
}
^x.x.x나 ~x.x.x 같은 버전 범위 연산자를 사용하지 마세요. 예기치 않은 업데이트를 방지하려면 x.x.x처럼 정확한 버전만 지정하세요.