Revert block-broadcast fallback path
Removes the entire fallback submitter mechanism: ckpool patch 0004,
the blocksubmit package, the wiring in main.go, the config fields,
the aggregator's fallback counters and snapshot fields, the healthz
fallback fields, and the TS type fields plus the HealthBanners
fallback alert.
Reasoning: ckpool's primary bitcoind submission must remain the
single source of truth, and getting the parallel "race a fallback
during the submit" semantics right is more architectural complexity
than the marginal reliability gain justifies. The original upstream
behavior — submit to bitcoind, retry indefinitely if unavailable —
is what we want.
Kept intact:
* Submit-attempt vs confirmed counters (block_submit_attempts /
block_submits_confirmed). Useful on their own as a "did bitcoind
confirm the submission?" signal.
* HealthBanners shows submit_gap and zmq_stale only.
* /healthz exposes submit_gap, zmq_stale, etc.
* All P0 reliability work (tailer cursor, reconcile loop, reorg
detection, multi-solve guard) and other P1 (RPC retry, WS
back-pressure, ZMQ tracking, startup readiness gate).
This commit is contained in:
@@ -9,7 +9,7 @@ Patches are applied in alphabetical order by filename. Use a numeric prefix to e
|
||||
|
||||
## Current state
|
||||
|
||||
Four Kamado patches are applied on top of the pinned upstream commit, in
|
||||
Three Kamado patches are applied on top of the pinned upstream commit, in
|
||||
alphabetical order:
|
||||
|
||||
| Patch | What it does |
|
||||
@@ -17,7 +17,6 @@ alphabetical order:
|
||||
| `0001-expose-bestever-in-runtime-json.patch` | Adds `bestever` field to the `users` / `workers` runtime socket JSON |
|
||||
| `0002-enable-socket-api-responses.patch` | Always reply on the listener socket so kamado-api gets responses even with `btcsolo: true` |
|
||||
| `0003-share-error-as-stratum-array.patch` | Maps `share_err` to Stratum spec error codes; emits `[code, msg, null]` per Slush |
|
||||
| `0004-dump-pending-block-for-fallback.patch` | Writes the raw block hex to `<logdir>/pending-blocks/` before submit; unlinks on success |
|
||||
|
||||
### Why 0001 matters
|
||||
|
||||
@@ -34,26 +33,6 @@ This patch adds `bestever` to the runtime JSON so the UI can show both
|
||||
"this round" and "all-time" best share side by side. No behavioral change
|
||||
to share validation or block handling. Candidate for upstreaming.
|
||||
|
||||
### Why 0004 matters
|
||||
|
||||
Block submission to bitcoind is the most revenue-critical RPC call ckpool
|
||||
makes. If bitcoind is unreachable when a share meets network difficulty,
|
||||
ckpool's `generator` thread retries indefinitely against the same single
|
||||
endpoint — and the raw block data lives only in stratifier memory, so a
|
||||
ckpool crash before bitcoind comes back permanently loses the block.
|
||||
|
||||
This patch hooks `local_block_submit` to write the raw block hex to
|
||||
`<logdir>/pending-blocks/<height>-<rhash>.hex` *before* invoking
|
||||
`generator_submitblock`, and unlinks the file on success. `kamado-api`
|
||||
runs a watcher over that directory: if a file persists past a grace
|
||||
period (default 30 s), it submits the block via fallback RPC URLs the
|
||||
operator has configured. Multiple fallbacks are tried in sequence; the
|
||||
file is unlinked when any fallback returns success or "duplicate"
|
||||
(meaning the block already landed).
|
||||
|
||||
This is a Kamado-specific integration hook — almost certainly not
|
||||
upstreamable, but minimal-impact on existing ckpool behavior.
|
||||
|
||||
Beyond this patch, the pinned upstream commit (`cfb0f83b`, tagged as
|
||||
version 1.0) already includes every fix that Bassin issue #29 asked to
|
||||
backport, plus several improvements:
|
||||
|
||||
Reference in New Issue
Block a user