Skip to content

v2.3.8

Choose a tag to compare

@warioishere warioishere released this 01 Oct 18:22
· 86 commits to main since this release

Group-Solo: round resets across a daylight-saving change

  • Weekly and monthly round resets computed the next reset by adding 24 hours per day. On a 25-hour day (the autumn clock change) that stays on the same date, so the computation never finished and stalled the payout process with it. Dates now advance by calendar day; daily resets on that day no longer land in the past, and custom resets no longer fire an hour early.

Job Declaration Protocol

  • A declared coinbase is checked before it reaches the validation engine: only a single-input segwit coinbase with a scriptSig of at most 100 bytes is passed on, anything else is refused with invalid-coinbase-tx.
  • A declaration whose node still lacks transactions after ProvideMissingTransactions.Success is refused with missing-txs instead of being accepted without a full node check.
  • Each declaration starts with fresh validation-engine state, so a tip change between two declarations is no longer reported as stale-chain-tip.
  • Up to three declarations may wait for their missing transactions at once, each answered under its own request_id.
  • A declaration that arrives before the pool knows a chain tip is refused with stale-chain-tip, so every accepted declaration is bound to a tip.
  • A ProvideMissingTransactions.Success with the wrong number of transactions is answered missing-txs.
  • Two token allocations right after connecting are both answered; the sustained rate stays one per second.

Stratum

  • SV1, SV2, HTTP and TLS are told apart on their opening bytes instead of the first byte. An SV2 connection opens with a pseudo-random key whose first byte matched another protocol's rule for 7 of 256 values, so about one SV2 connection attempt in 37 went to the wrong server.
  • A connection whose peer stops acknowledging data is dropped after 150 s instead of after the kernel's retransmission limit.

Fixes

  • The difficulty scoreboard showed no 30-day (or 7-day) entries for up to two hours (or 30 minutes) after a new period began: the diff-scores response was cached past the hour boundary. It now expires at the next full hour.

Upgrade notes

  • No new migrations and no config changes.
  • A JDP SetupConnection with an unsupported version range is now answered protocol-version-mismatch (previously unsupported-version), the same code the mining port uses.