Error Codes
This page provides a complete reference of all error codes in voyager-verifier with descriptions, causes, and solutions.
Error Code Format
All error codes follow the format [EXXX] where XXX is a three-digit number. Error codes help you quickly identify and resolve issues.
Quick Navigation:
- Workspace & Package Errors (E001-E003)
- Verification Errors (E004-E009)
- Class Hash Errors (E010-E011)
- Dependency & Resolution Errors (E012-E014)
- Contract & Target Errors (E015-E017)
- File System Errors (E018-E019, E022-E024)
- Project Configuration Errors (E020-E021, E025-E028)
- Config File Errors (E030-E032)
- History Database Errors (E040-E042)
- General Errors (E999)
Workspace & Package Errors
E001: Package Not Found in Workspace
Error Message:
[E001] Package '<name>' not found in workspace.
Cause: You specified a package name that doesn’t exist in the current workspace.
Common Scenarios:
- Typo in package name
- Package not listed in workspace members
- Wrong directory (not in workspace root)
Solutions:
-
Check available packages:
scarb metadata -
List workspace members in Scarb.toml:
[workspace] members = ["package1", "package2"] -
Use correct package name:
voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract \ --package correct_package_name -
Verify you’re in the workspace root directory
Example:
# Error: Trying to use non-existent package
voyager verify --network mainnet \
--class-hash 0x044dc2b3... \
--contract-name MyContract \
--package my_contrct # Typo: should be "my_contract"
# ✅ Solution: Fix package name
voyager verify --network mainnet \
--class-hash 0x044dc2b3... \
--contract-name MyContract \
--package my_contract
E002: HTTP Request Failed
Error Message:
[E002] HTTP request failed: <url> returned status <code>
Cause: An HTTP request to the Voyager API failed.
Common Status Codes:
400 Bad Request:
- Invalid parameters
- Malformed request
Solution:
# Check all required parameters are provided
voyager verify --network mainnet \
--class-hash 0x044dc2b3... \
--contract-name MyContract \
--license MIT
401 Unauthorized:
- Invalid authentication (rare - most endpoints are public)
403 Forbidden:
- Insufficient permissions
- Account access issues
404 Not Found:
- Wrong API endpoint
- Service not available
- Invalid URL
Solution:
# Verify the network/URL is correct
voyager verify --network mainnet ... # Use predefined network
# OR
voyager verify --url https://api.voyager.online/beta ... # Check custom URL
413 Payload Too Large:
- Project files exceed 10MB limit
Solution:
# Remove unnecessary files or try without optional files
voyager verify --network mainnet \
--class-hash 0x044dc2b3... \
--contract-name MyContract
# Don't use --test-files or --lock-file if not needed
429 Too Many Requests:
- Rate limiting triggered
Solution:
# Wait before retrying, or use batch delay
voyager verify --batch-delay 10 # For batch verification
500-599 Server Errors:
- Voyager API experiencing issues
Solution:
- Wait a few minutes and retry
- Check Voyager service status
Example:
# Error: Wrong URL
voyager verify --url https://api.wrong-domain.com/beta ...
# [E002] HTTP request failed: https://api.wrong-domain.com/beta returned status 404
# ✅ Solution: Use correct URL
voyager verify --network mainnet ...
E003: Contract Not Found in Manifest
Error Message:
[E003] Contract '<name>' not found in manifest file.
Cause:
The specified contract name doesn’t exist in the [tool.voyager] section of Scarb.toml or couldn’t be auto-detected.
Common Scenarios:
- Typo in contract name
- Contract not defined in manifest
- Missing
[tool.voyager]section
Solutions:
-
Check available contracts in Scarb.toml:
[tool.voyager.contracts] MyToken = "0x044dc2b3..." MyNFT = "0x055dc2b3..." -
Use correct contract name:
voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyToken # Must match manifest -
Add contract to manifest if missing:
[tool.voyager.contracts] MyContract = "0x044dc2b3239382230d8b1e943df23b96f52eebcac93efe6e8bde92f9a2f1da18"
Example:
# Error: Contract name doesn't match manifest
voyager verify --network mainnet \
--class-hash 0x044dc2b3... \
--contract-name MyTokin # Typo
# ✅ Solution: Use exact name from manifest
voyager verify --network mainnet \
--class-hash 0x044dc2b3... \
--contract-name MyToken
Verification Errors
E004: Compilation Failed
Error Message:
[E004] Compilation failed: <details>
Cause: The remote compiler failed to build your contract.
Common Causes:
- Syntax errors in Cairo code
- Missing dependencies
- Import errors
- Module not found
- Incompatible Cairo version
Solutions:
-
Test local build first:
scarb --release buildThe remote compiler uses the same command. If it fails locally, it will fail remotely.
-
Check dependencies:
[dependencies] starknet = ">=2.11.0" # Ensure all deps are declared -
Verify imports and modules:
// In lib.cairo mod contract; // Ensure this file exists // mod tests; // Remove if tests.cairo isn't included -
Include test files if needed:
voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract \ --test-files # Include if contract depends on test utilities -
Check release profile settings:
[profile.release.cairo] sierra-replace-ids = true # Any compiler settings must be here -
Use verbose mode for details:
voyager status --network mainnet --job <JOB_ID> --verbose
Example:
error[E0005]: Module file not found. Expected path: /tmp/targets/.../src/tests.cairo
Solution:
# Include test files OR remove module declaration
voyager verify --network mainnet \
--class-hash 0x044dc2b3... \
--contract-name MyContract \
--test-files
E005: Verification Failed
Error Message:
[E005] Verification failed: <details>
Cause: The contract compiled successfully, but the resulting class hash doesn’t match the declared class hash.
Common Causes:
- Wrong source code (doesn’t match deployed contract)
- Different compiler settings
- Incorrect dependencies or versions
- Modified code after deployment
Solutions:
-
Verify class hash is correct:
# Double-check the class hash from deployment voyager verify --network mainnet \ --class-hash 0x044dc2b3239382230d8b1e943df23b96f52eebcac93efe6e8bde92f9a2f1da18 \ --contract-name MyContract -
Ensure source matches deployment:
- Use the exact same code that was deployed
- Check out the correct git commit if using version control
- Verify no changes were made after deployment
-
Use lock file for reproducible builds:
voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract \ --lock-file # Ensure same dependency versions -
Match compiler settings:
[profile.release.cairo] # Ensure these match deployment settings sierra-replace-ids = true inlining-strategy = "default" -
Check Cairo version compatibility:
- Ensure the same Cairo/Scarb version was used for deployment
Example:
# If verification fails, try with lock file
voyager verify --network mainnet \
--class-hash 0x044dc2b3... \
--contract-name MyContract \
--lock-file \
--verbose
E006: Invalid Base URL
Error Message:
[E006] Invalid base URL: <url>
Cause: The provided custom API URL is invalid or cannot be used as a base URL.
Solutions:
-
Use valid HTTP/HTTPS URL:
# ✅ Correct format voyager verify --url https://api.example.com/beta \ --class-hash 0x044dc2b3... \ --contract-name MyContract # ❌ Wrong: Missing protocol voyager verify --url api.example.com/beta ... -
Use predefined network instead:
voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract -
Check URL format:
- Must start with
http://orhttps:// - Must be a valid URL structure
- Include proper path if required
- Must start with
Example:
# Error: Invalid URL
voyager verify --url example.com ...
# [E006] Invalid base URL: example.com
# ✅ Solution: Add protocol
voyager verify --url https://example.com/api/beta ...
E007: Verification Job Still in Progress
Error Message:
[E007] Verification job is still in progress
Cause: You checked the status of a verification job that hasn’t completed yet.
Solutions:
-
Wait and check again:
# Wait a few seconds/minutes sleep 30 voyager status --network mainnet --job <JOB_ID> -
Use watch mode to wait automatically:
voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract \ --watch # Automatically waits for completion -
Check status with auto-refresh:
# Polls every few seconds until complete voyager status --network mainnet --job <JOB_ID> --wait
Note: This is not an error - it just means the job is still being processed.
E008: Job Not Found
Error Message:
[E008] Job '<job_id>' not found
Cause: The specified job ID doesn’t exist or has expired from the server.
Solutions:
-
Check job ID is correct:
# Copy the full job ID from verification output voyager status --network mainnet --job abc-123-def-456 -
Verify using same network/URL:
# Job ID is tied to the specific API endpoint # Must use same network or URL as verification voyager status --network mainnet --job <JOB_ID> -
Check history for recent jobs:
voyager history list --limit 10 -
Job may have expired:
- Jobs may be removed after a certain period
- Submit a new verification request
Example:
# Error: Wrong network for job ID
voyager verify --network mainnet ... # Submitted to mainnet
# Output: Job ID: abc-123
voyager status --network sepolia --job abc-123 # Wrong network!
# [E008] Job 'abc-123' not found
# ✅ Solution: Use same network
voyager status --network mainnet --job abc-123
E009: Invalid URL Format
Error Message:
[E009] Invalid URL format: <url>
Cause: The custom URL provided has an invalid format.
Solutions:
-
Use proper URL format:
# ✅ Correct voyager verify --url https://api.example.com/beta ... # ❌ Wrong formats # Missing protocol: api.example.com # Invalid characters: https://api example com # Incomplete: https:// -
Encode special characters:
- Ensure proper URL encoding
- Avoid spaces and special characters
-
Use predefined networks:
# Simpler and less error-prone voyager verify --network mainnet ...
Class Hash Errors
E010: Invalid Class Hash Format
Error Message:
[E010] Invalid class hash format: '<hash>'
Expected format: 0x followed by up to 64 hexadecimal characters
Example: 0x044dc2b3239382230d8b1e943df23b96f52eebcac93efe6e8bde92f9a2f1da18
Cause: The provided class hash doesn’t match the required format.
Valid Format:
- Must start with
0x - Followed by 1-64 hexadecimal characters (0-9, a-f, A-F)
- Maximum 66 characters total (including
0xprefix)
Solutions:
-
Check hash format:
# ✅ Valid --class-hash 0x044dc2b3239382230d8b1e943df23b96f52eebcac93efe6e8bde92f9a2f1da18 # ❌ Invalid: Missing 0x prefix --class-hash 044dc2b3239382230d8b1e943df23b96f52eebcac93efe6e8bde92f9a2f1da18 # ❌ Invalid: Contains non-hex characters --class-hash 0x044dc2b3239382230d8b1e943df23b96f52eebcac93efe6e8bde92f9a2f1da1z -
Ensure correct characters:
- Only hexadecimal: 0-9, a-f, A-F
- No spaces or special characters
-
Verify hash from deployment:
# Get hash from Starknet deployment output # Or from block explorer
Example:
# Error: Missing 0x prefix
voyager verify --network mainnet \
--class-hash 044dc2b3239382230d8b1e943df23b96f52eebcac93efe6e8bde92f9a2f1da18 \
--contract-name MyContract
# [E010] Invalid class hash format
# ✅ Solution: Add 0x prefix
voyager verify --network mainnet \
--class-hash 0x044dc2b3239382230d8b1e943df23b96f52eebcac93efe6e8bde92f9a2f1da18 \
--contract-name MyContract
E011: Internal Regex Compilation Error
Error Message:
[E011] Internal regex compilation error
This is an internal error. Please report this issue.
Cause: An internal error occurred when compiling regular expressions for class hash validation.
Solution: This is a bug in the verifier. Please:
- Report the issue on GitHub
- Include the full command you ran
- Include your environment details (OS, voyager-verifier version)
Dependency & Resolution Errors
E012: Invalid Dependency Path
Error Message:
[E012] Invalid dependency path for '<name>': <path>
Cause: A path dependency in Scarb.toml points to an invalid or inaccessible location.
Common Scenarios:
- Path doesn’t exist
- Incorrect relative path
- Permission issues
Solutions:
-
Check path exists:
ls ../my-dependency # Verify path -
Use correct relative path:
[dependencies] my_lib = { path = "../my-dependency" } # Relative from Scarb.toml location -
Verify path format:
# ✅ Correct my_lib = { path = "../dependency" } my_lib = { path = "./local-lib" } # ❌ Wrong my_lib = { path = "~/dependency" } # Don't use ~
Example:
# Error: Path doesn't exist
[dependencies]
utils = { path = "../utils" } # But ../utils doesn't exist
# ✅ Solution: Fix path
[dependencies]
utils = { path = "../common-utils" } # Correct path
E013: Failed to Read Metadata
Error Message:
[E013] Failed to read metadata for '<name>' at path: <path>
Cause: Cannot read or parse Scarb.toml metadata for a path dependency.
Solutions:
-
Check Scarb.toml exists:
ls ../my-dependency/Scarb.toml -
Validate Scarb.toml:
cd ../my-dependency scarb metadata # Test if metadata can be read -
Verify file permissions:
chmod 644 ../my-dependency/Scarb.toml -
Ensure valid TOML:
# Check dependency's Scarb.toml is valid [package] name = "my_dependency" version = "0.1.0"
E014: Path Contains Invalid UTF-8
Error Message:
[E014] Path contains invalid UTF-8 characters
Cause: A file path contains characters that aren’t valid UTF-8.
Solutions:
-
Use ASCII characters only:
- Avoid special characters in file names
- Avoid spaces in directory names
- Use standard English letters and numbers
-
Check for hidden characters:
- Look for control characters or special Unicode
-
Rename files/directories:
# Example: Rename directory with special chars mv "dir with spaces" dir-with-dashes
Contract & Target Errors
E015: Class Hash Not Declared
Error Message:
[E015] Class hash '<hash>' is not declared
Cause: The specified class hash hasn’t been declared on the network.
Solutions:
-
Verify class hash:
# Check on block explorer (Voyager, Starkscan, etc.) # Ensure hash is declared on the network -
Check correct network:
# Ensure using the right network voyager verify --network mainnet ... # Or sepolia -
Declare class before verification:
- Use
starklior deployment tool to declare - Wait for transaction confirmation
- Then verify
- Use
Example:
# Error: Hash not declared on mainnet
voyager verify --network mainnet \
--class-hash 0x044dc2b3... \
--contract-name MyContract
# [E015] Class hash not declared
# ✅ Solution: Check if declared on sepolia instead
voyager verify --network sepolia \
--class-hash 0x044dc2b3... \
--contract-name MyContract
E016: No Contracts Selected
Error Message:
[E016] No contracts selected for verification
Cause: No contract was specified and none could be auto-detected.
Solutions:
-
Specify contract name:
voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract # Required -
Define in manifest:
[tool.voyager.contracts] MyContract = "0x044dc2b3..." -
Use batch verification:
[[contracts]] class-hash = "0x044dc2b3..." contract-name = "MyContract"
E017: Multiple Contracts Found
Error Message:
[E017] Multiple contracts found - only single contract verification is supported
Cause: Multiple contracts were detected, but you can only verify one at a time (unless using batch mode).
Solutions:
-
Specify which contract:
voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyToken # Choose one -
Use batch verification for multiple:
# .voyager.toml [[contracts]] class-hash = "0x044dc2b3..." contract-name = "MyToken" [[contracts]] class-hash = "0x055dc2b3..." contract-name = "MyNFT"voyager verify # Verifies all in batch
File System Errors
E018: Path Processing Error
Error Message:
[E018] Path processing error: cannot strip '<prefix>' from '<path>'
This is an internal error. Please report this issue.
Cause: Internal error when processing file paths.
Solution: This is a bug. Please report with:
- Full command
- Project structure
- Scarb.toml contents
E019: File Size Limit Exceeded
Error Message:
[E019] File '<path>' exceeds maximum size limit of <max> bytes (actual: <actual> bytes)
Cause: A file in your project is too large (exceeds individual file size limit).
Solutions:
-
Reduce file size:
- Split large files into smaller modules
- Remove unnecessary code or comments
- Check for generated content
-
Exclude large files:
- Add to
.gitignore - Don’t use
--test-filesif tests are large
- Add to
-
Check for unexpected files:
# Find large files find src -type f -size +1M
Example:
# Error: Large test file
voyager verify --network mainnet \
--class-hash 0x044dc2b3... \
--contract-name MyContract \
--test-files # Includes large tests.cairo
# ✅ Solution: Don't include test files
voyager verify --network mainnet \
--class-hash 0x044dc2b3... \
--contract-name MyContract
E022: File System Error
Error Message:
[E022] File system error
Cause: General file system error (permissions, access issues).
Solutions:
-
Check file permissions:
chmod 644 Scarb.toml chmod 755 src/ -
Verify path exists:
ls -la <path> -
Check disk space:
df -h
E023: Path Contains Invalid UTF-8
Error Message:
[E023] Path contains invalid UTF-8 characters
Cause: File path contains invalid UTF-8 characters.
Solution: Same as E014 - use ASCII characters only in file paths.
E024: Invalid File Type
Error Message:
[E024] File '<path>' has invalid file type (extension: <ext>)
Cause: A file with an unsupported extension was included.
Allowed Extensions:
.cairo- Cairo source files.toml- Configuration files (Scarb.toml).lock- Lock files (Scarb.lock).md- Documentation.txt- Text files.json- JSON files
Solutions:
-
Remove binary/executable files:
# Don't include in project directory rm src/binary_file -
Check for unexpected files:
find src -type f ! -name "*.cairo" -
Add to .gitignore:
*.bin *.exe *.so
Project Configuration Errors
E020: Scarb Manifest Not Found
Error Message:
[E020] Scarb project manifest not found at: <path>
Cause: Scarb.toml file doesn’t exist at the specified path.
Solutions:
-
Check you’re in project directory:
ls Scarb.toml # Should exist -
Use correct path:
voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract \ --path /correct/path/to/project -
Create new project:
scarb init my-project cd my-project
E021: Failed to Read Project Metadata
Error Message:
[E021] Failed to read project metadata: <error>
Cause: Cannot parse Scarb.toml or read project metadata.
Solutions:
-
Validate Scarb.toml:
scarb metadata --format-version 1 -
Check TOML syntax:
# Ensure valid TOML format [package] name = "my_project" version = "0.1.0" [dependencies] starknet = ">=2.11.0" -
Run scarb check:
scarb check -
Update scarb:
asdf install scarb latest
E025: Invalid Project Type
Error Message:
[E025] Invalid project type specified
Specified: <specified>
Detected: <detected>
Cause: Mismatch between specified project type and detected type.
Solutions:
-
Use auto-detection:
# Don't specify project type, let it auto-detect voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract -
Specify correct type:
# For Dojo projects voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract \ --project-type dojo # For Scarb projects voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract \ --project-type scarb
E026: Dojo Project Validation Failed
Error Message:
[E026] Dojo project validation failed
Cause: Project specified as Dojo, but doesn’t meet Dojo requirements.
Solutions:
-
Ensure dojo-core dependency:
[dependencies] dojo = { git = "https://github.com/dojoengine/dojo" } -
Check Dojo project structure:
project/ ├── Scarb.toml ├── src/ │ └── lib.cairo -
Test with sozo:
sozo build -
Use correct project type:
# If not actually Dojo, use scarb voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract \ --project-type scarb
E027: Interactive Prompt Failed
Error Message:
[E027] Interactive prompt failed
Cause: Failed to display interactive wizard prompt.
Solutions:
-
Use CLI arguments instead:
voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract \ --license MIT -
Specify project type:
voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract \ --project-type scarb # Skip prompt -
Check terminal supports interactive input:
- Ensure running in proper terminal
- Check stdin is available
- Not running in non-interactive environment
E028: Internal Error
Error Message:
[E028] Internal error: <message>
This is an internal error that should not occur.
Cause: Unexpected internal error.
Solution: Please report this issue with:
- Full command you ran
- Context/what you were doing
- Any relevant logs or output
Config File Errors
E030: Failed to Read Config File
Error Message:
[E030] Failed to read config file: <error>
Cause:
Cannot read .voyager.toml configuration file.
Solutions:
-
Check file permissions:
chmod 644 .voyager.toml -
Verify file exists:
ls -la .voyager.toml -
Check file is accessible:
cat .voyager.toml # Should display contents
E031: Failed to Parse Config File
Error Message:
[E031] Failed to parse config file: <error>
Cause:
.voyager.toml file has invalid TOML syntax.
Solutions:
-
Validate TOML syntax:
# Ensure proper format [voyager] network = "mainnet" # String values in quotes watch = true # Boolean without quotes -
Check field names:
# ✅ Correct field names [voyager] network = "mainnet" test-files = true # Use hyphens, not underscores # ❌ Wrong [voyager] netwrk = "mainnet" # Typo test_files = true # Underscore instead of hyphen -
Use TOML validator:
- Online TOML validator
- Or use example file as template
-
Check example file:
cp .voyager.toml.example .voyager.toml # Edit as needed
E032: Invalid UTF-8 Path in Config
Error Message:
[E032] Invalid UTF-8 path: <error>
Cause: A path in the config file contains invalid UTF-8 characters.
Solution:
Use ASCII characters only in paths configured in .voyager.toml.
History Database Errors
E040: Failed to Access History Database
Error Message:
[E040] Failed to access history database: <error>
Cause:
Cannot access or open the history database at ~/.voyager/history.db.
Solutions:
-
Check directory exists:
mkdir -p ~/.voyager -
Check permissions:
chmod 755 ~/.voyager chmod 644 ~/.voyager/history.db # If exists -
Check disk space:
df -h ~ -
Remove corrupted database:
# Backup first if needed mv ~/.voyager/history.db ~/.voyager/history.db.bak # Will be recreated automatically
E041: Failed to Create History Directory
Error Message:
[E041] Failed to create history directory: <error>
Cause:
Cannot create ~/.voyager directory.
Solutions:
-
Check home directory permissions:
chmod 755 ~ -
Check disk space:
df -h ~ -
Manual creation:
mkdir -p ~/.voyager chmod 755 ~/.voyager
E042: Unable to Determine Home Directory
Error Message:
[E042] Unable to determine home directory
Cause: Cannot find user’s home directory (HOME environment variable not set).
Solutions:
-
Check HOME variable:
echo $HOME # Should show /home/username -
Set HOME if missing:
export HOME=/home/username -
Check user has home directory:
ls -ld ~
General Errors
E999: General/Network Errors
Error Code:
[E999] <Various error messages>
Cause: Generic error code for network errors, I/O errors, or other uncategorized issues.
Common Causes:
- Network connectivity issues
- Request timeout
- DNS resolution failures
- SSL/TLS errors
- Generic I/O errors
Solutions:
-
Check internet connection:
ping api.voyager.online -
Verify DNS resolution:
nslookup api.voyager.online -
Check firewall/proxy:
- Ensure HTTPS (port 443) is allowed
- Configure proxy if needed
-
Retry the request:
# Sometimes transient network issues resolve on retry voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract -
Use verbose mode:
voyager verify --network mainnet \ --class-hash 0x044dc2b3... \ --contract-name MyContract \ --verbose
Getting Help
If you encounter an error that isn’t resolved by this guide:
-
Use verbose mode to get detailed error information:
voyager status --network mainnet --job <JOB_ID> --verbose -
Check the troubleshooting guide: Troubleshooting
-
Search for similar issues on GitHub
-
Contact support:
- Telegram: @StarknetVoyager
- GitHub: Create an issue
When reporting errors, include:
- Error code and full error message
- Full command you ran
- Output with
--verboseflag - Your environment (OS, voyager-verifier version, scarb version)
- Relevant configuration files (Scarb.toml, .voyager.toml)
See Also
- Common Errors - Frequent problems and solutions
- Debugging Guide - Debugging workflow
- Verbose Mode - Using
--verboseflag - Getting Support - How to get help