Skip to content

Releases: Qbit-Org/qbit-mining-bootstrap

v0.1.2.3

Choose a tag to compare

@djh58 djh58 released this 10 Jul 17:05
v0.1.2.3
ef98c25

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-verifiable mining.set_difficulty from 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 the d=N,md=N password convention or mining.suggest_difficulty.
  • Exposed the high-difficulty endpoint in the public /public/v1/mining-configuration API 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 submitblock or 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_policy column to qbit_share_ledger and updates the reward-window SQL functions. The change is idempotent and backward-compatible (ADD COLUMN IF NOT EXISTS, NOT VALID constraint) 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_DIR on 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_PORT is set. Configure PRISM_STRATUM_HIGHDIFF_PORT, PRISM_STRATUM_HIGHDIFF_PORT_HOST, PRISM_STRATUM_HIGHDIFF_BIND, PRISM_STRATUM_HIGHDIFF_START_DIFF, PRISM_STRATUM_HIGHDIFF_MIN_DIFF, and PRISM_STRATUM_HIGHDIFF_MAX_DIFF (floor defaults to 500000), and publish the endpoint via PRISM_PUBLIC_STRATUM_HIGHDIFF_URL. Difficulty bounds are independent of the default listener; all other vardiff knobs inherit PRISM_STRATUM_VARDIFF_*. The default listener is unchanged when unset.
  • New or changed configuration in .env.example: PRISM_STRATUM_VARDIFF_IDLE_SWEEP_SECONDS (default 15), PRISM_STRATUM_STALE_GRACE_SECONDS (default 3), PRISM_BLOCKWAIT_ENABLED / PRISM_BLOCKWAIT_TIMEOUT_SECONDS, PRISM_WORKER_METRICS_LIMIT (default 100), and the PRISM_STRATUM_HIGHDIFF_* set.
  • Monitor the async-writer metrics: qbit_prism_share_append_queue_depth (healthy near 0; a sustained climb means the ledger is falling behind), qbit_prism_shares_recovered_to_disk_total, qbit_prism_share_append_failures_total, and qbit_prism_shares_replayed_total, alongside existing qbit_prism_blocks_accepted_total and qbit_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-check and the PRISM regression tests, and watch coordinator logs for share-writer and recovery messages.

v0.1.2.2

Choose a tag to compare

@djh58 djh58 released this 07 Jul 15:11
v0.1.2.2
dec0f25

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 u128 when 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 AuditBundle model instead of routing them through serde_json::Value.
  • Preserved compact body-ref and qbit.prism.audit-bundle.v2 reconstruction for external audit-body storage while enabling arbitrary-precision JSON numbers for large u128 fields.
  • Added live-scale regression coverage for qbit-prism-audit-verify and qbit-prism-audit-canonicalize across 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 exceed u64::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 or submitblock.
  • After upgrading, run make prism-self-check and monitor qbit_prism_blocks_accepted_total, qbit_prism_persisted_blocks, and coordinator logs for qbit-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

Choose a tag to compare

@djh58 djh58 released this 06 Jul 20:06
v0.1.2.1
4a4d1ba

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.v2 and 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_DIR before 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, and PRISM_CTV_BROADCAST_RETRY_BACKOFF_SECONDS.
  • Direct coinbase blocks now appear at /public/v1/blocks/{block_hash}/settlement-artifacts without 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

Choose a tag to compare

@djh58 djh58 released this 03 Jul 14:57
v0.1.2
3748362

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-builder and qbit-prism Rust crates for deterministic P2MR coinbase construction, signed manifests, PRISM settlement accounting, CTV fanout planning, and audit verification.
  • Added the /public/v1 dashboard 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.git without requiring a local qbit checkout.

Operator Notes

  • Review .env.example before upgrading. PRISM deployments require unique signing seeds, a trusted ledger writer public key, and production guard flags before make up-prism-pool starts.
  • Run make doctor before starting the stack and make prism-self-check after 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_REF and QBIT_GIT_COMMIT, or set QBIT_PROVIDER=source plus QBIT_SRC_DIR=/absolute/path/to/qbit for a local checkout.

v0.1.1

Choose a tag to compare

@kiwidream kiwidream released this 25 Jun 14:26
v0.1.1
70d2693

Release date: 2026-06-25

Highlights

  • Fixed AuxPoW commitment byte ordering so the coordinator and helper payloads follow the createauxblock commitment 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.x through commit 0bb8fdb.

v0.1.0

Choose a tag to compare

@kiwidream kiwidream released this 25 Jun 13:54
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.