Releases: BlockBitOfficial/BlockBit
BlockBit v1.0.3 - Stratum V1 Difficulty & Share Validation Fixes
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
- Stop blockbitd or blockbit-qt
- Replace binaries with v1.0.3 versions
- Restart β no configuration changes needed
- Existing miners will benefit from the fixes on their next connection
Links
- Repository: https://gitlab.com/BlockBitOfficial/blockbit
- Issues: https://gitlab.com/BlockBitOfficial/blockbit/-/issues
- Full Changelog: https://gitlab.com/BlockBitOfficial/blockbit/-/compare/v1.0.2...v1.0.3
Contributors
- The BlockBit developers
- Community bug reports and testing
BlockBit v1.0.2 - Stratum V2 Enhancements
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_blockflag 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.datin 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.datin 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
-
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
-
V2 Worker Block Counts Always Zero
- Issue: Worker statistics had
blocks_foundhardcoded to 0 - Fix: Read actual counter value and increment on block detection
- Impact: Accurate per-worker block statistics in Qt GUI
- Issue: Worker statistics had
-
Worker Name Suffix Breaking Address Validation
- Issue: Addresses like
addr.workernamefailed coinbase validation - Fix: Strip worker name suffix before building coinbase
- Impact: Workers can now use standard Stratum naming conventions
- Issue: Addresses like
π 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.datbacked up securely - Worker addresses should be valid Bitcoin addresses
- Pool fee set to 0% for solo mining (configurable)
π Upgrading from v1.0.1
- Pull latest code from repository
- Rebuild:
cmake .. && make - Generate V2 pool key if not already created
- Configure V2 settings in Qt GUI (auto-loads key)
- Test with V2-compatible miner
- Monitor logs for "BLOCK FOUND" messages
π Links
- Repository: https://github.com/BlockBitOfficial/BlockBit
- Issues: https://github.com/BlockBitOfficial/BlockBit/issues
- Stratum V2 Spec: https://github.com/stratum-mining/sv2-spec
π₯ 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
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()andremoveWallet()methods for proper lifecycle management - Fixed initialization order:
walletFramenow receivesclientModelat correct time - Added
LoadWalletsActivityto 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:
MANUALfor persistence - β
New RPC commands:
getprioritypeerinfo- List all priority peers and their statusaddprioritypeer <address>- Add a trusted peerremoveprioritypeer <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.hinclude forWalletViewobject 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
walletFrameinitialization order - Fixed wallet GUI not displaying loaded wallets
- Fixed window snapping to left on tab changes (Wayland)
- Fixed missing
clientModelon 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:
- Your existing wallets will automatically load in the GUI
- Priority peering is optional - configure via RPC if needed
- No configuration changes required
π Full Changelog
Previous Release: v1.0.0
BlockBit v1.0.0 - Initial Release
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:
- README.md - Quick start and overview
- doc/stratum-pool.md - Pool setup and configuration (720+ lines)
- doc/mining-gui.md - GUI usage manual (550+ lines)
- doc/stratum-v2.md - V2 technical reference (650+ lines)
- SECURITY.md - Security policy and best practices
- CONTRIBUTING.md - Developer guidelines
π οΈ 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-qtNavigate 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 getpoolinfoPoint 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
- Documentation: doc/
- GitHub Issues: Report bugs
- GitHub Discussions: Ask questions
π 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