Overview
Each release proposal on the Network Nervous System (NNS) includes detailed verification instructions. The verification process builds the IC from the specified commit and compares the locally built artifacts with those published on the CDN.Build reproducibility ensures that the exact same binary artifacts are produced from the same source code, proving that deployed code matches the public repository.
Prerequisites
Before verifying releases, ensure your system meets these requirements:Operating System
Ubuntu 22.04 or higher
Python
Python 3.x installed
curl
curl utility installed
Disk Space
About 100 GB free in
$HOMEInstalling Dependencies
Quick Start
To verify an IC OS Version Election proposal:Get the Commit ID
Find the commit ID from the release proposal.
Run Verification
Execute the repro-check script:Replace
{COMMIT_ID} with the actual commit hash and <proposal_number> with the proposal ID.Verification Methods
You can verify releases using either a proposal number or a Git commit hash:- By Proposal Number
- By Git Commit
- Fetch the proposal data from the NNS
- Extract the git commit hash
- Verify the proposal’s release package hash
- Build and compare artifacts
Component-Specific Verification
You can verify individual IC-OS components to save time and resources:GuestOS Only
GuestOS Only
- GuestOS update image (
update-img.tar.zst) - Launch measurements for confidential computing
HostOS Only
HostOS Only
- HostOS update image (
update-img.tar.zst)
SetupOS Only
SetupOS Only
- SetupOS disk image (
disk-img.tar.zst)
Recovery GuestOS
Recovery GuestOS
- Recovery GuestOS update image
If no component flags are specified, all components (GuestOS, HostOS, SetupOS, and Recovery) are verified by default.
Advanced Options
Custom Cache Directory
By default, the script uses~/.cache/repro-check. You can specify a different location:
Clean Cache Before Running
Download Source Selection
Choose which CDN to download artifacts from:Debug Mode
Enable verbose logging and preserve temporary files:Dry Run
Build locally without performing verification:Understanding the Verification Process
The repro-check script performs several steps:Environment Checks
- Verifies x86-64 architecture
- Checks Ubuntu 22.04+
- Validates 16+ GB RAM
- Ensures 100+ GB free disk space
- Installs missing dependencies (git, podman)
Repository Setup
- Clones IC repository from GitHub
- Checks out the specified commit
- Verifies git integrity
Download Remote Artifacts
- Downloads IC-OS images from CDN
- Downloads SHA256SUMS files
- Downloads launch-measurements.json (for GuestOS)
- Caches downloads for future runs
Verification Output
Successful verification output:Verifying Proposals
When verifying a proposal, additional checks are performed:Proposal Package Hash
Proposal Package Hash
The script verifies that the release package URLs in the proposal point to artifacts with the correct SHA-256 hash.
Proposal vs. CDN
Proposal vs. CDN
Compares the proposal’s release package hash with the artifact stored on the CDN:
Launch Measurements
Launch Measurements
For GuestOS, verifies the confidential computing launch measurements:
Cache Management
The repro-check script uses caching to speed up repeated verifications:Cache Location
Default:~/.cache/repro-check/
Cache Structure
Cache Cleanup
The script automatically keeps the 2 most recent commit caches and removes older ones. Manual cleanup:Troubleshooting
Architecture not x86_64
Architecture not x86_64
The build and verification process requires an x86-64 system.Use a compatible system or cloud instance.
Not enough disk space
Not enough disk space
Ensure you have at least 100 GB free:Consider using
--cache-dir to specify a volume with more space:Git fetch failed
Git fetch failed
If fetching the commit fails:
- Verify the commit hash is correct
- Check your internet connection
- Ensure you have access to github.com/dfinity/ic
Download failed
Download failed
If artifact downloads fail:
- Check your internet connection
- Try a different download source with
--download-source - Verify the commit has been published to the CDN
Build failed
Build failed
If the local build fails:
- Ensure all dependencies are installed
- Check build logs for specific errors
- Verify you have enough RAM and disk space
- Try running in debug mode:
--debug
System Requirements Summary
Recommended System
For optimal verification performance:
- CPU: 8+ cores
- RAM: 32 GB+
- Disk: 200 GB+ free space
- Network: High-speed internet connection
- OS: Ubuntu 22.04 LTS
Best Practices
Use Versioned URLs
Always use the commit-specific repro-check URL, not
master.Verify Critical Releases
Verify releases before voting on NNS proposals.
Cache Results
Keep the cache directory to speed up re-verification.
Monitor Progress
Use debug mode for long-running verifications to see detailed progress.
Example: Complete Verification Workflow
Here’s a complete example verifying a specific release:Next Steps
System Requirements
Review detailed system requirements
Building the IC
Learn how to build IC components
IC-OS Overview
Understand IC-OS architecture
Release Dashboard
View current and past releases