Skip to content

Releases: BitMind-AI/bitmind-subnet

Release 4.4.0

31 Jan 06:30
6e593ac

Choose a tag to compare

Summary

  • Fix generator reward logic for sharper penalties when generative miners stop responding to queries
  • Improve media format detection with proper ftyp-based MP4 detection and support for additional formats
  • Fix file format handling - detect actual format from magic bytes instead of hardcoding extensions/content-types
  • Add dynamic escrow address fetching from the API with fallback to defaults
  • Add prompt modality tracking to ensure prompts are matched to their intended modality
  • Add prompt cache cleanup to delete prompts after use, preventing unbounded cache growth
  • Add detailed error responses for generative callback failures so miners can debug issues
  • Add webhook stats tracking for miners to monitor success/failure rates per validator
  • Add C2PA verification CLI for testing C2PA credentials on local files
  • Remove LocalService from registry (since it doesn't produce C2PA-signed content)

Changes

Generator Miner Rewards Fix

  • Fixed bug where include_all=True was double-counting already-rewarded media in verification stats
  • Changed reward eligibility from union to intersection: miners must now have both local verified submissions and benchmark results to receive rewards
  • Changed base reward default from 1e-4 to 0 for generators without verified submissions
  • Increased EMA alpha from 0.2 to 0.5 for more aggressive score decay on inactive miners
  • Added hard cutoff to zero out scores for generators not active within the liveness window

Media Format Detection (#311)

  • Fixed MP4 detection by checking for ftyp at offset 4 instead of hardcoded box sizes
  • Consolidated all ftyp-based format detection to fix unreachable M4A code path
  • Added support for new image formats: HEIC/HEIF, AVIF, GIF, BMP, TIFF
  • Added support for new video formats: MOV, 3GP, AVI
  • Added support for audio formats: MP3, WAV, FLAC, OGG, M4A
  • Added length checks to prevent index errors on short data
  • Improved JPEG detection with 3-byte signature

Dynamic Escrow Addresses (#322)

  • Added new get_escrow_addresses() function to fetch escrow addresses from the gas-api to provide the option to punish weight copiers.
  • Validators now dynamically fetch video_escrow, image_escrow, and audio_escrow addresses
  • Escrow address eligibility based validators provably running latest SN code.

Prompt Modality Support

  • Added modality column to prompts table (image, video, audio)
  • Database migration automatically adds column to existing installations
  • Fixed database migration order to prevent "no such column: modality" errors on existing databases
  • Prompts are now stored with their intended modality when generated
  • Challenge manager selects modality first, then samples matching prompts

Prompt Cache Cleanup

  • Fixed remove parameter in prompt sampling to actually delete prompts instead of just incrementing used_count
  • Added min_prompts_threshold (default 100) to prevent running out of prompts
  • Enabled prompt cleanup in generative challenge manager - prompts are now deleted after use (if enough remain)

Generative Callback Error Responses

  • Miners now receive detailed error messages when their submissions are rejected:
    • 400 - Empty binary payload for empty uploads
    • 400 - Corrupted or unreadable media for invalid media files
    • 400 - Duplicate content detected for perceptual hash matches
    • 400 - C2PA verification failed: no C2PA manifest for missing credentials
    • 400 - C2PA verification failed: untrusted issuer for non-trusted sources
  • Previously, all validation failures returned 200 OK silently, making it impossible for miners to debug issues
  • Made c2pa a hard dependency - removed conditional C2PA_AVAILABLE checks
  • Cleaned up inline imports, moved all imports to module scope

Miner Webhook Stats Tracking

  • Added WebhookStatsTracker to track webhook success/failure rates per validator IP
  • Stats are persisted to ~/.bitmind/webhook_stats.json and survive restarts
  • Automatic behaviors:
    • Saves to disk every 60 seconds (debounced to avoid excessive I/O)
    • Prints summary to logs every 5 minutes
    • Daily rotation at midnight - archives to webhook_stats_archive/webhook_stats_YYYY-MM-DD.json
    • Auto-cleanup of archives older than 7 days
  • Failure types are categorized:
    • empty_payload - validator received empty data
    • connection_timeout - connection timed out
    • connection_error - network/connection issues
    • http_400, http_401, http_404, http_500 - HTTP status codes
  • Helper functions available:
    • print_webhook_stats() - print summary to logs
    • get_webhook_stats_json() - get stats as dict
    • reset_webhook_stats() - clear all stats

LocalService Removed from Service Registry

  • LocalService (local Stable Diffusion/AnimateDiff) removed from SERVICE_MAP
  • Reason: LocalService doesn't produce C2PA-signed content, which validators now require
  • The service class remains in the codebase for potential future use
  • Valid services are now: openai, openrouter, stabilityai, or none
  • If no valid service is configured for a modality, requests for that modality will be rejected
  • Miners still free to generate whatever

C2PA Verification CLI

  • Added gascli generator verify-c2pa (standalone helper script at neurons/generator/helper/verify_c2pa.py) command for gen miners to test local files for C2PA credentials
  • Useful for miners to verify their generated content has valid C2PA before sending to validators
  • Supports --verbose for detailed output and --json for machine-readable output

Release 4.3.0

04 Dec 05:29
a017663

Choose a tag to compare

This release introduces c2pa verification for miner submissions (+ the relevant support on the generative miner side), an upgraded prompt generation pipeline, and fixes for weight normalization in the validator.

Generative Miner Data Verification

New modules in gas/verification/:

  • c2pa_verification.py: Validates C2PA content credentials from miner-submitted media. Checks that content originates from trusted AI generators (OpenAI, Google, Adobe, Microsoft, Stability AI, Midjourney, Anthropic). Content without valid C2PA from trusted issuers is rejected.

  • duplicate_detection.py: Implements perceptual hashing (pHash) for images and frame-based hashing for videos. Includes crop-resistant hash segments. Configurable Hamming distance threshold (default: 8) for near-duplicate matching.

Miner Service Configuration

  • Added IMAGE_SERVICE and VIDEO_SERVICE environment variables to specify which generation service to use per modality
  • Valid options: openai, openrouter, local, none
  • Setting none disables that modality entirely
  • Prevents loading unnecessary local models when using API services
  • Conditional model loading based on configured services

Prompt Generation Pipeline

  • Replaced BLIP-2 with Qwen2.5-VL-3B-Instruct for image annotation
  • Optional flash attention support for faster inference
  • New modules for model-specific prompt styles (model_prompt_styles.py) and prompt modifiers (prompt_modifiers.py)
  • Increased max token output from 20 to 256 for richer descriptions

Challenge Manager Improvements

  • Pre-storage validation rejects: duplicate content, content without valid C2PA, corrupted/unreadable media
  • Duplicate checks now scoped to same prompt ID to reduce overhead
  • Only validated content is stored and eligible for HuggingFace upload

Service Improvements

  • C2PA metadata preservation in OpenRouter and OpenAI services
  • Option to save generated media locally (MINER_SAVE_LOCALLY)
  • Default model changed to nanobanana pro for OpenRouter

Validator Weight Normalization Fix

  • Fixed burn rate calculation by excluding special UIDs (burn, image escrow, video escrow) from weight normalization (previously burning more than .7)
  • Added null check for empty generator rewards
  • Added logging for actual vs target burn rate verification

Dependencies

  • Added: c2pa-python>=0.25.0, imagehash>=4.3.1, qwen-vl-utils>=0.0.14
  • Updated: async-substrate-interface>=1.5.1
  • Optional: flash-attn>=2.7.0 (commented, for manual installation)

Breaking Changes

  • For now, miners must now produce content with valid C2PA credentials from trusted AI generators.
  • Duplicate submissions within the same prompt are rejected
  • Until we harden verification of open source model outputs, miners using local generation without C2PA embedding will have submissions rejected
  • Current services supported in c2pa checks:
OpenAI
Google
Adobe
Microsoft
Meta 
Shutterstock
Canva
Runway
Stability AI
Pika Labs

Reach out to the BitMind team if there are more services you'd like to have supported.

Release 4.2.0

31 Oct 01:28
172bb6d

Choose a tag to compare

  • Added Chrom1-HD to validator generation pipeline
  • Replaced local eval code with a gasbench wrapper
  • Single modality uploads for gascli d push (docs)
  • Better state/task tracking for generative tasks in validator

Release 4.1.7

31 Oct 01:26
626e0e8

Choose a tag to compare

Bugfix: Need to use the union of generator uids present in verification stats and fool rate stats to set weights for new generative miners

Release 4.1.6

02 Oct 11:19
98c99c9

Choose a tag to compare

Improved generative miner time-to-incentive and score stability.

Release 4.1.4

01 Oct 00:44
e5187b8

Choose a tag to compare

Burn off, generator rewards on, discriminator WTA split into image and video winners

Release 4.1.3

29 Sep 21:42
a4ce5d5

Choose a tag to compare

  • Fix for miner type tracking to pick up new generative miners quickly
  • Optional external callback port mapping for validator webhook server
  • Support for application/octet-stream on validator webhook server
  • Fix for bug in generative miner service discovery that lead to OpenRouter being selected as the default even when no API key was supplied

Release 4.1.0

29 Sep 21:41
a4ce5d5

Choose a tag to compare

  • Generative Miner functionality
  • WTA Benchmark for discriminators

Release 4.0.12

08 Sep 22:35
3be511e

Choose a tag to compare

Fix for W&B artifact logging, caused by improperly expecting JSON metadata files rather than a metadata dict extracted from the validator's sqlite db.

Release 4.0.11

05 Sep 00:34
95d9a4a

Choose a tag to compare