Skip to content

Releases: BlockBitOfficial/BlockBit

BlockBit v1.0.3 - Stratum V1 Difficulty & Share Validation Fixes

16 Feb 23:22

Choose a tag to compare

BlockBit v1.0.3 - Stratum V1 Difficulty & Share Validation Fixes

Release Date: February 16, 2026

Overview

This release fixes five bugs in the Stratum V1 difficulty and share validation subsystem that caused miners to experience rejected shares, unresponsive difficulty adjustments, and misleading error messages on mainnet. These issues were reported by users running production mining setups.

Bug Fixes

1. Vardiff Deadlock for Miners Below Start Difficulty (Critical)

Problem: Miners with hashrate too low to produce shares at the mainnet start_difficulty of 65536 were permanently locked out. All shares were rejected as LOW_DIFFICULTY, but the vardiff algorithm required 3 accepted shares before it would consider any adjustment β€” creating a deadlock where difficulty could never decrease.

Fix: Added a zero-share fallback mechanism. If a worker has 0 accepted shares after 30 seconds, difficulty is automatically halved toward min_difficulty. This repeats each retarget cycle until the miner can produce valid shares (e.g., 65536 β†’ 32768 β†’ 16384 β†’ ... β†’ 256).

Files: src/stratum/difficulty.h, src/stratum/difficulty.cpp


2. Vardiff Used Lifetime Average Instead of Windowed Rate (Critical)

Problem: Share rate was calculated as total_shares / total_time_since_connect, making difficulty adjustments increasingly sluggish over long connections. After hours of mining, hashrate changes (thermal throttling, miners going on/offline) barely moved the average, leaving miners at inappropriate difficulty levels.

Fix: Replaced lifetime counters with windowed tracking. New per-worker counters (shares_since_retarget, last_retarget_time) reset on each difficulty change. The vardiff algorithm now measures share rate only within the current window, matching CKPool's approach and responding quickly to hashrate changes.

Files: src/stratum/stratumworker.h, src/stratum/difficulty.cpp, src/stratum/stratumserver.cpp


3. Stale Shares Misreported as LOW_DIFFICULTY (Moderate)

Problem: When a miner submitted a share for a job ID not found in the recent job history, the server silently validated it against the current job instead of rejecting it. This produced incorrect LOW_DIFFICULTY errors when the real issue was a stale/expired job, giving miners misleading diagnostic information.

Fix: Shares referencing unknown job IDs are now properly rejected with "Stale share (job not found)" and logged as stale rejections. The ShareError::STALE code path is now active.

File: src/stratum/stratumserver.cpp


4. mining.suggest_difficulty Ignored Between Subscribe and Authorize (Moderate)

Problem: If a miner sent mining.suggest_difficulty after mining.subscribe but before mining.authorize (a valid ordering per the Stratum V1 specification), the suggested value was stored but never applied. The worker remained at start_difficulty until the vardiff algorithm eventually adjusted.

Fix: HandleAuthorize() now checks for a pending suggested difficulty when a worker authorizes. If one exists and differs from the current difficulty, it is applied immediately with a mining.set_difficulty notification.

File: src/stratum/stratumserver.cpp


5. DifficultyToTarget Truncated Fractional Difficulty (Minor)

Problem: The DifficultyToTarget() function cast difficulty to uint64_t before division, discarding all fractional precision (e.g., difficulty 1.5 became 1, difficulty 0.7 became 0).

Fix: Replaced with scaled integer division using a 10^8 scale factor, preserving 8 decimal places of precision in the target computation.

File: src/stratum/sharevalidator.cpp

Downloads

File Platform Contents
blockbit-v1.0.3-x86_64-linux.tar.gz Linux x86_64 blockbitd, blockbit-qt, blockbit-cli, blockbit

Verify Download

sha256: 6de97fa48553297a5be83d7a4fd870317b6fac40155ca1b7f643c49c4c7ff8e2  blockbit-v1.0.3-x86_64-linux.tar.gz

Install

tar xzf blockbit-v1.0.3-x86_64-linux.tar.gz
sudo install -m 755 blockbitd blockbit-qt blockbit-cli blockbit /usr/local/bin/

Configuration

Stratum V1 Difficulty Parameters (defaults)

Parameter Mainnet Testnet Regtest
-stratumstartdiff 65536 10 1000
-stratummindiff 256 1 100
-stratummaxdiff unlimited 10000 10000
-stratumtargetshares 2/min 4/min 6/min
-stratumretargetinterval 10s 10s 5s

Miners can use mining.suggest_difficulty to request a starting difficulty within the min/max range.

Upgrading from v1.0.2

  1. Stop blockbitd or blockbit-qt
  2. Replace binaries with v1.0.3 versions
  3. Restart β€” no configuration changes needed
  4. Existing miners will benefit from the fixes on their next connection

Links

Contributors

  • The BlockBit developers
  • Community bug reports and testing

BlockBit v1.0.2 - Stratum V2 Enhancements

13 Feb 19:04

Choose a tag to compare

BlockBit v1.0.2 - Stratum V2 Enhancements

Release Date: February 13, 2026

🎯 Major Features

Stratum V2 Protocol Improvements

  • Fixed V2 Block Detection and Tracking

    • V2 workers now properly track blocks found (was hardcoded to 0)
    • Worker block counters increment correctly when blocks are detected
    • Pool-level block statistics accurately reflect V2 contributions
  • Enhanced Share Validation

    • Improved logging for V2 share validation with block detection indicators
    • Added is_block flag to share validation output for debugging
    • Network difficulty comparison now displays in logs (share_diff vs network_diff)
  • V2 Coinbase Payment Fix

    • Fixed critical bug where V2 blocks paid to pool wallet instead of miner address
    • V2 jobs now build per-worker coinbase transactions correctly
    • Worker name suffix (e.g., .worker1) properly stripped from payout addresses

Mining Configuration Enhancements

  • Share Rate Optimization

    • Default V2 share rate increased from 2 to 32 shares/minute for 500 GH/s miners
    • Better suited for modern ASIC miners
    • Reduces network overhead while maintaining accurate hashrate reporting
  • Regtest Difficulty Management

    • Minimum difficulty enforcement for regtest (1000 minimum, 10000 maximum)
    • Prevents ESP32 miners from being overwhelmed by difficulty changes
    • Start difficulty increased from 1 to 1000 for regtest testing

Qt GUI Improvements

  • Auto-Loading V2 Settings

    • Pool static key and fingerprint now auto-load on startup
    • Default key path: sv2_pool_key.dat in data directory
    • Settings persist across restarts
    • Auto-sets key path when V2 is first enabled
  • Enhanced Status Bar

    • Added debug logging for mining statistics updates
    • Better tracking of worker counts and block updates

πŸ”§ Technical Improvements

V2 Server (src/stratum/sv2_server.cpp)

  • Fixed worker block counter tracking (line 775)
  • Added IncrementBlocksFound() call on block detection (line 619)
  • Enhanced block submission logging with success/failure messages
  • Improved share validation logging with difficulty comparison

V2 Noise Protocol (src/stratum/sv2_noise.cpp)

  • Updated secp256k1 ECDH module to version 0.7.0
  • Improved compatibility with Bitcoin's libsecp256k1

Share Validator (src/stratum/sharevalidator.cpp)

  • Added comprehensive debugging logs for coinbase construction
  • Logs full coinbase hex for validation debugging
  • Merkle root computation logging for troubleshooting

Mining Settings Page (src/qt/miningsettingspage.cpp)

  • Auto-loads V2 pool key on dialog initialization
  • Sets default key path to sv2_pool_key.dat in data directory
  • Loads and displays pool fingerprint automatically
  • Improved user experience for V2 configuration

Stratum Server Configuration (src/stratum/stratumserver.cpp)

  • Updated regtest difficulty parameters for better testing
  • Improved block submission callback for V2

Build System (cmake/secp256k1.cmake)

  • Enabled secp256k1 ECDH module for V2 encryption
  • Updated configuration flags for optimal performance

πŸ› Bug Fixes

  1. V2 Block Rewards Not Paid to Miners

    • Issue: V2 blocks used template coinbase paying to pool wallet
    • Fix: Build per-worker coinbase with miner's payout address
    • Impact: Miners now receive block rewards correctly in solo mining mode
  2. V2 Worker Block Counts Always Zero

    • Issue: Worker statistics had blocks_found hardcoded to 0
    • Fix: Read actual counter value and increment on block detection
    • Impact: Accurate per-worker block statistics in Qt GUI
  3. Worker Name Suffix Breaking Address Validation

    • Issue: Addresses like addr.workername failed coinbase validation
    • Fix: Strip worker name suffix before building coinbase
    • Impact: Workers can now use standard Stratum naming conventions

πŸ“Š Testing & Validation

  • Tested with ESP32-S3 BitAxe miners (500 GH/s)
  • Validated V2 encrypted handshake and mining
  • Confirmed block rewards pay to correct addresses
  • Verified share rate calculations for various hashrates
  • Tested in regtest environment with rapid difficulty changes

πŸ”’ Security

  • V2 encryption working with Noise_NX protocol
  • secp256k1 ECDH for key exchange
  • ChaCha20-Poly1305 AEAD encryption
  • Pool static key fingerprint verification

βš™οΈ Configuration Changes

Default Settings Updated

  • V2 share rate: 2 β†’ 32 shares/minute
  • Regtest start difficulty: 1 β†’ 1000
  • Regtest min difficulty: 1 β†’ 100
  • Regtest max difficulty: 100 β†’ 10000

πŸ“ Notes

  • V2 pool key must be generated before first use
  • Qt GUI will prompt for key file location on first V2 enable
  • Recommended to keep sv2_pool_key.dat backed up securely
  • Worker addresses should be valid Bitcoin addresses
  • Pool fee set to 0% for solo mining (configurable)

πŸš€ Upgrading from v1.0.1

  1. Pull latest code from repository
  2. Rebuild: cmake .. && make
  3. Generate V2 pool key if not already created
  4. Configure V2 settings in Qt GUI (auto-loads key)
  5. Test with V2-compatible miner
  6. Monitor logs for "BLOCK FOUND" messages

πŸ”— Links

πŸ‘₯ Contributors

  • Development and testing by BlockBit team
  • Community feedback and testing

Full Changelog: v1.0.1...v1.0.2

BlockBit v1.0.1 - Wallet GUI Restoration & Priority Peering

12 Feb 18:15

Choose a tag to compare

BlockBit v1.0.1

πŸŽ‰ Major Updates

πŸ’° Critical Wallet GUI Fix

The wallet functionality has been fully restored! Users can now:

  • βœ… View wallet balances in the GUI
  • βœ… Send and receive Bitcoin
  • βœ… View transaction history
  • βœ… Create and manage multiple wallets
  • βœ… Access all wallet features through toolbar and menu

Technical Details:

  • Implemented Bitcoin Core's wallet loading pattern
  • Added addWallet() and removeWallet() methods for proper lifecycle management
  • Fixed initialization order: walletFrame now receives clientModel at correct time
  • Added LoadWalletsActivity to load pre-existing wallets after GUI initialization
  • Fixed segmentation fault caused by null pointer in wallet initialization
  • Wallet signals properly connected via GUIUtil::ExceptionSafeConnect

πŸ”— Priority Peering System

New system for maintaining persistent connections to trusted mining pools:

  • βœ… Persistent connections with automatic reconnection
  • βœ… Health monitoring (configurable interval)
  • βœ… Connection type: MANUAL for persistence
  • βœ… New RPC commands:
    • getprioritypeerinfo - List all priority peers and their status
    • addprioritypeer <address> - Add a trusted peer
    • removeprioritypeer <address> - Remove a priority peer

Files Added:

  • src/stratum/prioritypeermanager.{h,cpp}

🎨 UI Improvements

  • Pool Settings Window: Increased size from 500Γ—400 to 950Γ—500 pixels to display all tabs without scrolling
  • Mining Stats: Moved from toolbar to status bar for cleaner layout
    • Pool Status (Running/Stopped)
    • Connected Workers count
    • Pool Hashrate
    • Blocks Found
  • Wayland Fix: Removed unnecessary showNormalIfMinimized() calls that caused window repositioning bugs

πŸ› οΈ Code Quality

  • Added walletview.h include for WalletView object creation
  • Proper null pointer checks and initialization guards
  • Removed deprecated test scripts (continuous_txs.sh, start_regtest.sh)
  • Added new regtest startup script: start-blockbit-regtest.sh

πŸ“Š Statistics

  • Files Changed: 8 files
  • Additions: 717 lines
  • Deletions: 149 lines
  • New Files: 3
  • Deleted Files: 2

πŸ› Bug Fixes

  • Fixed segmentation fault due to walletFrame initialization order
  • Fixed wallet GUI not displaying loaded wallets
  • Fixed window snapping to left on tab changes (Wayland)
  • Fixed missing clientModel on wallet components

πŸ§ͺ Testing

Tested on:

  • Platform: Linux 6.17.0-14-generic
  • Display Server: Wayland
  • Network Mode: Regtest with 2 loaded wallets
  • Wallet Balance: Confirmed 9525 BTC spendable via RPC

πŸ“¦ Installation

From Source:

```bash
git clone https://github.com/BlockBitOfficial/BlockBit.git
cd BlockBit
git checkout v1.0.1
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
```

Run:

```bash
./build/bin/blockbit-qt
```

πŸ”„ Upgrade Notes

If upgrading from v1.0.0:

  1. Your existing wallets will automatically load in the GUI
  2. Priority peering is optional - configure via RPC if needed
  3. No configuration changes required

πŸ“ Full Changelog

v1.0.0...v1.0.1


Previous Release: v1.0.0

BlockBit v1.0.0 - Initial Release

11 Feb 02:07

Choose a tag to compare

BlockBit v1.0.0 - Initial Release

First stable release of BlockBit - A Bitcoin Core v30.2 fork with integrated Stratum V1/V2 mining pool server.

πŸŽ‰ Major Features

⛏️ Integrated Mining Pool

  • Stratum V1 protocol (JSON-RPC on port 3333)
  • Stratum V2 protocol with Noise NX encryption (binary on port 3336)
  • Solo mining with personalized coinbase transactions per worker
  • Variable difficulty (vardiff) algorithm for optimal share rates
  • 44+ configuration options for fine-tuned control
  • High concurrency - supports 5,000+ simultaneous workers

πŸ–₯️ Professional GUI

  • Real-time mining dashboard with live statistics and graphs
  • Worker management interface with 13-column detailed table
  • Per-worker charts tracking hashrate, difficulty, and best shares
  • Security checklist with visual indicators
  • Time-series monitoring - 800 samples (~26 minutes history)
  • Share log viewer for debugging and analysis

πŸ”’ Security & Privacy

  • Stratum V2 with Noise NX authenticated encryption
  • TLS support for Stratum V1 (BIP324-style encrypted transport)
  • Tor hidden service support for anonymous mining
  • Log redaction and IP anonymization
  • IP-based banning and rate limiting
  • Connection limits per IP address

⚑ High Performance

  • Epoll-based networking for thousands of concurrent connections
  • Multi-threaded architecture (accept, work updater, share processor)
  • Lock-free statistics using atomic operations
  • Efficient validation with duplicate share detection
  • Scalable to 100+ PH/s pool hashrate

πŸ“Š Technical Details

  • Based on: Bitcoin Core v30.2
  • Mining pool code: ~6,000 lines (src/stratum/)
  • GUI code: ~3,800 lines (src/qt/mining*.cpp)
  • Documentation: 4 comprehensive guides, 2,000+ lines
  • Test coverage: Full unit and functional test suite

πŸ“š Documentation

Complete documentation suite included:

πŸ› οΈ Building from Source

Requirements:

  • CMake 3.16+
  • GCC 11+ or Clang 14+
  • Boost 1.73+
  • Qt 6.2+
  • libevent 2.1+
  • OpenSSL 1.1+

Ubuntu/Debian:

sudo apt install build-essential cmake libboost-all-dev libssl-dev \
    libevent-dev libsqlite3-dev qt6-base-dev

git clone https://github.com/BlockBitOfficial/BlockBit.git
cd BlockBit
cmake -B build -DBUILD_GUI=ON -DBUILD_DAEMON=ON
cmake --build build -j$(nproc)

macOS:

brew install cmake boost openssl libevent sqlite qt@6

git clone https://github.com/BlockBitOfficial/BlockBit.git
cd BlockBit
cmake -B build -DBUILD_GUI=ON -DBUILD_DAEMON=ON
cmake --build build -j$(sysctl -n hw.ncpu)

See doc/build-*.md for detailed platform-specific instructions.

πŸš€ Quick Start

GUI Application:

./build/src/qt/blockbit-qt

Navigate to the Mining tab to configure and start your pool.

Daemon (Headless):

# Start basic V1 pool
./build/src/blockbitd -stratum -stratumbind=0.0.0.0:3333

# Start with V2 enabled
./build/src/blockbitd -stratum -stratumbind=0.0.0.0:3333 \
                       -stratumv2 -stratumv2bind=0.0.0.0:3336

# View pool status
./build/src/blockbit-cli getpoolinfo

Point miners to your pool:

stratum+tcp://your-server-ip:3333
Username: your-bitcoin-address
Password: workername

⚠️ Known Issues

None at this time. Please report bugs at the issue tracker.

πŸ› Reporting Bugs

Found a bug? Please open an issue with:

  • BlockBit version (v1.0.0)
  • Operating system and version
  • Steps to reproduce
  • Expected vs actual behavior
  • Relevant logs from ~/.blockbit/debug.log

For security vulnerabilities, see SECURITY.md.

πŸ’‘ Getting Help

πŸ™ Acknowledgments

BlockBit is built on Bitcoin Core v30.2. We thank the Bitcoin Core developers for their foundational work.

The Stratum V2 implementation follows specifications from stratumprotocol.org.

πŸ“œ License

BlockBit is released under the MIT License.


Start mining with your own pool today! πŸš€β›οΈ

Built by the BlockBit Team | https://github.com/BlockBitOfficial/BlockBit