Releases: Qbit-Org/qbit-mining-bootstrap
Releases · Qbit-Org/qbit-mining-bootstrap
Release list
v0.1.2.3
Release date: 2026-07-10
Highlights
- Added an opt-in high-difficulty Stratum listener on a separate port for rental-scale and hashrate-marketplace miners, with an independent difficulty floor (default
500000) so stamped jobs advertise a marketplace-verifiablemining.set_difficultyfrom the first job even while qbit network difficulty sits below the floor (young or test chains); clients may raise — never lower — difficulty within the configured bounds via thed=N,md=Npassword convention ormining.suggest_difficulty. - Exposed the high-difficulty endpoint in the public
/public/v1/mining-configurationAPI alongside the default listener. - Moved block submission to a dedicated submitter thread and accepted-share ledger writes to an async writer thread, so a miner's share acknowledgment no longer waits on
submitblockor a Postgres round trip — holding acknowledgment latency low under sustained rental-scale load. A share that meets its target is credited immediately regardless of the block's outcome (standard PPLNS/TIDES semantics), and an orphaned block candidate keeps its share credit. - Made accepted-share accounting durable: shares that cannot be persisted immediately (ledger outage, writer backlog, or shutdown) are written to an
fsync'd recovery file and replayed idempotently on the next start, and the liveness watchdog flushes the queue to that file before a self-inflicted exit. - Reduced the per-block coordinator lock hold (aggregated evidence statistics and a keep-alive qbitd JSON-RPC connection) so block acceptance no longer stalls concurrent share acknowledgments.
- Anchored the stale-grace window per connection — it opens when a connection first receives new-tip work rather than when a shared refresh pass first observes the tip — so a slow multi-client refresh or an aborted reorg reconcile no longer consumes the grace window before miners receive new work.
- Made idle vardiff step-down retargets re-check idleness and reset the window atomically at commit, so a share accepted mid-retarget is neither stepped down nor dropped; restored the idle-window clock when a step-down send is skipped so a transient send failure does not re-gate an idle miner behind another full retarget interval.
- Rejected pool-closed submits before share accounting, so stop-after-block / max-block runs no longer dilute the stale-share denominator or mark closing clients active for the idle sweep.
- Added
scripts/prism-self-check.py(make prism-self-check) and new async-writer metrics — share-append queue depth, shares recovered to disk, replayed shares, and append failures — separated block-candidate abandonment from share rejections, and bounded worker-metric label cardinality. - Refreshed the PRISM operator guide, rejection reference, ledger-operations, and storage-sizing documentation.
Operator Notes
- This release is recommended for all PRISM operators on
v0.1.2.2, especially pools serving rental-scale or hashrate-marketplace hashrate. - Schema: this release adds a nullable
credit_policycolumn toqbit_share_ledgerand updates the reward-window SQL functions. The change is idempotent and backward-compatible (ADD COLUMN IF NOT EXISTS,NOT VALIDconstraint) and is applied automatically on coordinator startup — no manual migration or downtime — but the coordinator must start once against the ledger before stale-grace crediting and the updated window functions take effect. - Durability: accepted shares are queued to an async writer before the acknowledgment. Keep
PRISM_AUDIT_DIRon persistent storage — the recovery file (PRISM_SHARE_RECOVERY_PATH, default<PRISM_AUDIT_DIR>/prism-unpersisted-shares.jsonl) must survive restarts for the durability guarantee to hold. A SIGKILL / OOM / host failure can still lose shares that are only in the in-memory queue; this window is bounded and surfaced by the queue-depth metric. - High-diff listener (opt-in): disabled unless
PRISM_STRATUM_HIGHDIFF_PORTis set. ConfigurePRISM_STRATUM_HIGHDIFF_PORT,PRISM_STRATUM_HIGHDIFF_PORT_HOST,PRISM_STRATUM_HIGHDIFF_BIND,PRISM_STRATUM_HIGHDIFF_START_DIFF,PRISM_STRATUM_HIGHDIFF_MIN_DIFF, andPRISM_STRATUM_HIGHDIFF_MAX_DIFF(floor defaults to500000), and publish the endpoint viaPRISM_PUBLIC_STRATUM_HIGHDIFF_URL. Difficulty bounds are independent of the default listener; all other vardiff knobs inheritPRISM_STRATUM_VARDIFF_*. The default listener is unchanged when unset. - New or changed configuration in
.env.example:PRISM_STRATUM_VARDIFF_IDLE_SWEEP_SECONDS(default15),PRISM_STRATUM_STALE_GRACE_SECONDS(default3),PRISM_BLOCKWAIT_ENABLED/PRISM_BLOCKWAIT_TIMEOUT_SECONDS,PRISM_WORKER_METRICS_LIMIT(default100), and thePRISM_STRATUM_HIGHDIFF_*set. - Monitor the async-writer metrics:
qbit_prism_share_append_queue_depth(healthy near0; a sustained climb means the ledger is falling behind),qbit_prism_shares_recovered_to_disk_total,qbit_prism_share_append_failures_total, andqbit_prism_shares_replayed_total, alongside existingqbit_prism_blocks_accepted_totalandqbit_prism_persisted_blocks. - The public dashboard API remains compatible, adding the high-diff endpoint to
/public/v1/mining-configuration. Direct coinbase settlement artifacts, compact audit body refs, and CTV fanout storage remain compatible. - After upgrading, run
make prism-self-checkand the PRISM regression tests, and watch coordinator logs for share-writer and recovery messages.
v0.1.2.2
Release date: 2026-07-07
Highlights
- Fixed a PRISM audit verifier regression that could reject valid live-chain block candidates with
invalid type: floating point ..., expected u128when audit bundles contained testnet-scale difficulty and share-weight integers. - Restored legacy/full audit bundle verification and canonicalization by deserializing full bundles directly into the typed
AuditBundlemodel instead of routing them throughserde_json::Value. - Preserved compact body-ref and
qbit.prism.audit-bundle.v2reconstruction for external audit-body storage while enabling arbitrary-precision JSON numbers for largeu128fields. - Added live-scale regression coverage for
qbit-prism-audit-verifyandqbit-prism-audit-canonicalizeacross both legacy full bundles and compact body-ref bundles. - Verified the fix on the deployed testnet4 PRISM pool image with a synthetic live-scale audit bundle; verification now reaches the expected coinbase comparison instead of failing JSON parsing.
Operator Notes
- This release is recommended for all PRISM operators on
v0.1.2.1, especially pools using direct PRISM Stratum against public testnet or any chain where scaled difficulty values exceedu64::MAX. - No configuration or database migration is required.
- Upgrade before relying on PRISM block candidate acceptance from
v0.1.2.1; the previous release could accept shares but reject found block candidates before persistence orsubmitblock. - After upgrading, run
make prism-self-checkand monitorqbit_prism_blocks_accepted_total,qbit_prism_persisted_blocks, and coordinator logs forqbit-prism-audit-verify failed. - Existing public dashboard API responses, direct coinbase settlement artifacts, compact audit body refs, and CTV fanout storage remain compatible.
v0.1.2.1
Release date: 2026-07-06
Highlights
- Added public dashboard settlement-artifact support for direct coinbase settlement blocks, including
settlement_mode: direct_coinbase, empty fanout lists, audit bundle links, and OpenAPI/fixture coverage. - Returned block height and payout manifest hashes from PRISM audit bundle lookups so direct coinbase artifacts can be surfaced without a CTV fanout manifest set.
- Deduplicated PRISM audit artifact storage with external audit bodies, reusable share segments, compact operator envelopes, and bounded live/candidate retention controls.
- Added
qbit.prism.audit-bundle.v2and legacy body-ref verifier support so compact audit bodies reconstruct and verify the same canonical v1 bundle hash. - Hardened CTV fanout broadcasting with retry backoff, terminal failed-row filtering, retained attempt summaries, and bounded detailed attempt retention.
- Updated PRISM ledger operations and storage sizing guidance for external audit body storage, share-segment proofs, and CTV broadcast retry retention.
Operator Notes
- This release is intended for PRISM operators upgrading from
v0.1.2; the public dashboard API remains compatible while adding direct coinbase settlement artifact responses. - Configure persistent storage for
PRISM_AUDIT_DIRbefore relying on externalized audit bodies or share segments. Live bundle envelopes are pointers and are not the durable audit body. - Review the new PRISM audit and CTV broadcast retention settings in
.env.example:PRISM_AUDIT_SHARE_SEGMENT_SIZE,PRISM_AUDIT_LIVE_BUNDLE_RETENTION,PRISM_AUDIT_CANDIDATE_RETENTION_SECONDS,PRISM_CTV_BROADCAST_ATTEMPT_DETAIL_LIMIT, andPRISM_CTV_BROADCAST_RETRY_BACKOFF_SECONDS. - Direct coinbase blocks now appear at
/public/v1/blocks/{block_hash}/settlement-artifactswithout requiring CTV fanout rows. - Run
make doctor,make prism-self-check, and the PRISM regression tests after upgrading, especially when using external audit body storage or CTV broadcast automation.
v0.1.2
Release date: 2026-07-03
Highlights
- Added PRISM, the direct non-custodial qbit pool path with Stratum mining, Postgres-backed share accounting, deterministic reward windows, audit artifacts, and operator self-checks.
- Added the
qbit-pool-builderandqbit-prismRust crates for deterministic P2MR coinbase construction, signed manifests, PRISM settlement accounting, CTV fanout planning, and audit verification. - Added the
/public/v1dashboard API contract and fixtures covering pool summary, hashrate series, leaderboard, blocks, miner views, payouts, fanouts, and settlement artifacts. - Added CTV fanout settlement support, broadcaster tooling, fee accounting, recovery artifacts, and audit-bundle construction.
- Hardened PRISM operations with production env gates, writer leases, reorg reconciliation, job-cache fixes, public API caching, and storage sizing guidance.
- Updated the public qbit source default so Docker builds can fetch qbit from
https://github.com/Qbit-Org/qbit.gitwithout requiring a local qbit checkout.
Operator Notes
- Review
.env.examplebefore upgrading. PRISM deployments require unique signing seeds, a trusted ledger writer public key, and production guard flags beforemake up-prism-poolstarts. - Run
make doctorbefore starting the stack andmake prism-self-checkafter starting PRISM. - Keep qbit RPC, Postgres, ckpool sockets,
/audit/*,/metrics,/healthz, Docker volumes, and PRISM key material private unless intentionally proxied with access controls. - The qbit provider default only changes how Docker obtains qbit source. Operators can use the public git default, pin
QBIT_GIT_REFandQBIT_GIT_COMMIT, or setQBIT_PROVIDER=sourceplusQBIT_SRC_DIR=/absolute/path/to/qbitfor a local checkout.
v0.1.1
Release date: 2026-06-25
Highlights
- Fixed AuxPoW commitment byte ordering so the coordinator and helper payloads follow the
createauxblockcommitment order. - Updated the AuxPoW mining and merge-mining protocol docs to describe the corrected ordering.
- Added regression coverage for AuxPoW payload construction and coordinator commitment handling.
- Added the Blacksmith CI workflow for branch validation.
Operator Notes
- AuxPoW and merged-mining operators should prefer this release over 0.1.0 before live bridge trials.
- No configuration migration is expected from 0.1.0.
- This branch is based on
origin/0.1.xthrough commit0bb8fdb.
v0.1.0
Release date: 2026-06-17
Highlights
- Initial public release of the qbit mining bootstrap lab.
- Added Docker Compose workflows for regtest mining operations, with signet-oriented configuration hooks.
- Added permissionless qbit mining support through ckpool, including startup preflight checks and version-rolling mask handling.
- Added AuxPoW lab support with qbitd, bitcoind, a Python coordinator, Stratum helpers, and example RPC payload scripts.
- Added operator documentation for mining flows, merge-mining protocol expectations, chain parameters, and router integration.
- Added shell smokes and Python unit tests covering ckpool startup, qbit RPC fixtures, AuxPoW coordinator behavior, vardiff logic, and Stratum codec behavior.
Operator Notes
- Compose defaults to regtest for deterministic local validation.
- qbit source builds can be provided from a local checkout or a configured git ref.
- qbit core remains the canonical source for consensus, block validation, and mining RPC semantics; this repo validates operator workflows around those interfaces.