Skip to content

Release v0.24.0 - #28

Merged
jdogresorg merged 28 commits into
masterfrom
release/v0.24.0
Oct 17, 2026
Merged

jdogresorg merged 28 commits into
masterfrom
release/v0.24.0

Conversation

@jdogresorg

Copy link
Copy Markdown
Contributor

What this release carries

Added

  • Added a ready endpoint and reported readiness on the live endpoint.
  • Added the dispenser parent-floor activation that anchors dispenser grace to the parent protocol time.

Fixed

  • Refused a block whose transactions do not fill it or match its merkle root, and parsed LTC MWEB-form transactions.
  • Refused unsafe MWEB CompactSize values and trailing transaction bytes with a typed parse error.
  • Settled a lower node tip with two agreeing readings before rolling back, and bounded the current block MTP history.

Security

  • Bumped ip-address, axios and proxy-addr past their advisories.

Testnet activation

  • ORDER_MATCH_PRICE_CROSS_ACTIVATION on BTC:testnet at height 156908
  • ORDER_MATCH_PRICE_CROSS_ACTIVATION on LTC:testnet at height 4927400
  • ORDER_MATCH_PRICE_CROSS_ACTIVATION on DOGE:testnet at height 68005165
  • REMOTE_TOKEN_ADMISSION_ACTIVATION on BTC:testnet at height 156908
  • REMOTE_TOKEN_ADMISSION_ACTIVATION on LTC:testnet at height 4927400
  • REMOTE_TOKEN_ADMISSION_ACTIVATION on DOGE:testnet at height 68005165
  • GAS_CEILING_EXHAUSTED_ACTIVATION on BTC:testnet at height 156908
  • GAS_CEILING_EXHAUSTED_ACTIVATION on LTC:testnet at height 4927400
  • GAS_CEILING_EXHAUSTED_ACTIVATION on DOGE:testnet at height 68005165
  • RESOURCE_FAULT_SIGNAL_ACTIVATION on BTC:testnet at height 156908
  • RESOURCE_FAULT_SIGNAL_ACTIVATION on LTC:testnet at height 4927400
  • RESOURCE_FAULT_SIGNAL_ACTIVATION on DOGE:testnet at height 68005165
  • HOST_ERROR_STACK_STRIP_ACTIVATION on BTC:testnet at height 156908
  • HOST_ERROR_STACK_STRIP_ACTIVATION on LTC:testnet at height 4927400
  • HOST_ERROR_STACK_STRIP_ACTIVATION on DOGE:testnet at height 68005165
  • JSON_STRINGIFY_REENTRY_ACTIVATION on BTC:testnet at height 156908
  • JSON_STRINGIFY_REENTRY_ACTIVATION on LTC:testnet at height 4927400
  • JSON_STRINGIFY_REENTRY_ACTIVATION on DOGE:testnet at height 68005165
  • NATIVE_STACK_TERMINAL_ACTIVATION on BTC:testnet at height 156908
  • NATIVE_STACK_TERMINAL_ACTIVATION on LTC:testnet at height 4927400
  • NATIVE_STACK_TERMINAL_ACTIVATION on DOGE:testnet at height 68005165
  • VOTE_SETTLEMENT_EXACT_ACTIVATION on BTC:testnet at height 156908
  • VOTE_SETTLEMENT_EXACT_ACTIVATION on LTC:testnet at height 4927400
  • VOTE_SETTLEMENT_EXACT_ACTIVATION on DOGE:testnet at height 68005165
  • SETTLEMENT_BOUNDS_ACTIVATION on BTC:testnet at height 156908
  • SETTLEMENT_BOUNDS_ACTIVATION on LTC:testnet at height 4927400
  • SETTLEMENT_BOUNDS_ACTIVATION on DOGE:testnet at height 68005165
  • PASS_PROGRESS_RETIREMENT_ACTIVATION on BTC:testnet at height 156908
  • PASS_PROGRESS_RETIREMENT_ACTIVATION on LTC:testnet at height 4927400
  • PASS_PROGRESS_RETIREMENT_ACTIVATION on DOGE:testnet at height 68005165
  • SLASH_HISTORICAL_SET_ACTIVATION on BTC:testnet at height 156908
  • SLASH_HISTORICAL_SET_ACTIVATION on LTC:testnet at height 4927400
  • SLASH_HISTORICAL_SET_ACTIVATION on DOGE:testnet at height 68005165
  • ANCHOR_REWARD_COPY_SELECTION_ACTIVATION on BTC:testnet at height 156908
  • ANCHOR_REWARD_COPY_SELECTION_ACTIVATION on LTC:testnet at height 4927400
  • ANCHOR_REWARD_COPY_SELECTION_ACTIVATION on DOGE:testnet at height 68005165
  • TOKEN_SUPPLY_REPRESENTATION_ACTIVATION on BTC:testnet at height 156908
  • TOKEN_SUPPLY_REPRESENTATION_ACTIVATION on LTC:testnet at height 4927400
  • TOKEN_SUPPLY_REPRESENTATION_ACTIVATION on DOGE:testnet at height 68005165
  • DISPENSER_FIAT_PRICING_ACTIVATION on BTC:testnet at height 156908
  • DISPENSER_FIAT_PRICING_ACTIVATION on LTC:testnet at height 4927400
  • DISPENSER_FIAT_PRICING_ACTIVATION on DOGE:testnet at height 68005165
  • BRIDGE_POLICY_APPLY_ORDER_ACTIVATION on BTC:testnet at height 156908
  • BRIDGE_POLICY_APPLY_ORDER_ACTIVATION on LTC:testnet at height 4927400
  • BRIDGE_POLICY_APPLY_ORDER_ACTIVATION on DOGE:testnet at height 68005165
  • VM_EMISSION_AMOUNT_FORMAT_ACTIVATION on BTC:testnet at height 156908
  • VM_EMISSION_AMOUNT_FORMAT_ACTIVATION on LTC:testnet at height 4927400
  • VM_EMISSION_AMOUNT_FORMAT_ACTIVATION on DOGE:testnet at height 68005165
  • EXECUTE_FEE_CAP_ACTIVATION on BTC:testnet at height 156908
  • EXECUTE_FEE_CAP_ACTIVATION on LTC:testnet at height 4927400
  • EXECUTE_FEE_CAP_ACTIVATION on DOGE:testnet at height 68005165
  • VOTE_V3_TICK_EXISTENCE_ACTIVATION on BTC:testnet at height 156908
  • VOTE_V3_TICK_EXISTENCE_ACTIVATION on LTC:testnet at height 4927400
  • VOTE_V3_TICK_EXISTENCE_ACTIVATION on DOGE:testnet at height 68005165
  • MATCH_ORIGIN_OPEN_ACTIVATION on BTC:testnet at height 156908
  • MATCH_ORIGIN_OPEN_ACTIVATION on LTC:testnet at height 4927400
  • MATCH_ORIGIN_OPEN_ACTIVATION on DOGE:testnet at height 68005165
  • VM_LINT_SYNTAX_DEPTH_ACTIVATION on BTC:testnet at height 156908
  • VM_LINT_SYNTAX_DEPTH_ACTIVATION on LTC:testnet at height 4927400
  • VM_LINT_SYNTAX_DEPTH_ACTIVATION on DOGE:testnet at height 68005165
  • NESTED_EXECUTE_GAS_SUM_ACTIVATION on BTC:testnet at height 156908
  • NESTED_EXECUTE_GAS_SUM_ACTIVATION on LTC:testnet at height 4927400
  • NESTED_EXECUTE_GAS_SUM_ACTIVATION on DOGE:testnet at height 68005165
  • EMISSION_DEPTH_EXECUTE_ONLY on BTC:testnet at block time 1792303200
  • EMISSION_DEPTH_EXECUTE_ONLY on LTC:testnet at block time 1792303200
  • EMISSION_DEPTH_EXECUTE_ONLY on DOGE:testnet at block time 1792303200
  • ARCHIVE_REPLAY_WRAPPER_WATERMARK on BTC:testnet at block time 1792303200
  • ARCHIVE_REPLAY_WRAPPER_WATERMARK on LTC:testnet at block time 1792303200
  • ARCHIVE_REPLAY_WRAPPER_WATERMARK on DOGE:testnet at block time 1792303200
  • LEGACY_ANCHOR_REWARD_PIN on BTC:testnet at block time 1792303200
  • LEGACY_ANCHOR_REWARD_PIN on LTC:testnet at block time 1792303200
  • LEGACY_ANCHOR_REWARD_PIN on DOGE:testnet at block time 1792303200
  • GUARD_STAKE_SNAPSHOT_DECIMAL_STRINGS on BTC:testnet at block time 1792303200
  • GUARD_STAKE_SNAPSHOT_DECIMAL_STRINGS on LTC:testnet at block time 1792303200
  • GUARD_STAKE_SNAPSHOT_DECIMAL_STRINGS on DOGE:testnet at block time 1792303200
  • HOST_CALL_BOUNDS on BTC:testnet at block time 1792303200
  • HOST_CALL_BOUNDS on LTC:testnet at block time 1792303200
  • HOST_CALL_BOUNDS on DOGE:testnet at block time 1792303200
  • PER_ELEMENT_METER on BTC:testnet at block time 1792303200
  • PER_ELEMENT_METER on LTC:testnet at block time 1792303200
  • PER_ELEMENT_METER on DOGE:testnet at block time 1792303200
  • CALLBACK_ARGS_EXACT on BTC:testnet at block time 1792303200
  • CALLBACK_ARGS_EXACT on LTC:testnet at block time 1792303200
  • CALLBACK_ARGS_EXACT on DOGE:testnet at block time 1792303200
  • GAS_CEILING_EXHAUSTED_ACTIVATION on BTC:testnet at height 156908
  • GAS_CEILING_EXHAUSTED_ACTIVATION on LTC:testnet at height 4927400
  • GAS_CEILING_EXHAUSTED_ACTIVATION on DOGE:testnet at height 68005165
  • LINT_SYNTAX_DEPTH_ACTIVATION on BTC:testnet at height 156908
  • LINT_SYNTAX_DEPTH_ACTIVATION on LTC:testnet at height 4927400
  • LINT_SYNTAX_DEPTH_ACTIVATION on DOGE:testnet at height 68005165
  • RESOURCE_FAULT_SIGNAL_ACTIVATION on BTC:testnet at height 156908
  • RESOURCE_FAULT_SIGNAL_ACTIVATION on LTC:testnet at height 4927400
  • RESOURCE_FAULT_SIGNAL_ACTIVATION on DOGE:testnet at height 68005165
  • HOST_ERROR_STACK_STRIP_ACTIVATION on BTC:testnet at height 156908
  • HOST_ERROR_STACK_STRIP_ACTIVATION on LTC:testnet at height 4927400
  • HOST_ERROR_STACK_STRIP_ACTIVATION on DOGE:testnet at height 68005165
  • JSON_STRINGIFY_REENTRY_ACTIVATION on BTC:testnet at height 156908
  • JSON_STRINGIFY_REENTRY_ACTIVATION on LTC:testnet at height 4927400
  • JSON_STRINGIFY_REENTRY_ACTIVATION on DOGE:testnet at height 68005165
  • NATIVE_STACK_TERMINAL_ACTIVATION on BTC:testnet at height 156908
  • NATIVE_STACK_TERMINAL_ACTIVATION on LTC:testnet at height 4927400
  • NATIVE_STACK_TERMINAL_ACTIVATION on DOGE:testnet at height 68005165

Release v0.24.0

Base: master at fdf97161905c408225fbf10b481023edbbaf4f0c
Head: release/v0.24.0 at a91a7d9b3c726c7e503d24ca1cfb2ebe200cbaad

Landed refs

  • a91a7d9 Release v0.24.0
  • c6c4139 Merge master into develop to level it before the v0.24.0 cut
  • e3fe948 Merge: Stabilize parent-floor regression fixture
  • 4c701d3 Stabilize parent-floor regression fixture
  • 1c3c3c1 Bound current block MTP history
  • 0d549d1 Preserve dispenser grace suite titles
  • 27c772b Tighten dispenser grace documentation
  • 411e5f7 Keep dispenser grace tests within structure limits
  • b730225 Anchor dispenser grace to parent protocol time
  • 6e4fe37 Merge: Add dispenser parent-floor activation constant
  • ce80716 Add dispenser parent-floor activation constant
  • 5862f76 Re-vendor coin registry for the mainnet genesis re-pin
  • 6acecdb Refuse unsafe MWEB CompactSize values and trailing transaction bytes with a typed parse error
  • dda336d Refuse a stripped or plain block whose transactions do not fill it or match its merkle root, and parse LTC MWEB-form transactions to the node's txid
  • 60ced95 Fix review round findings for xchain-decoder (2026-10-14)
  • 6cd4dc6 Merge remote-tracking branch 'origin/develop' into settle-tip-before-rollback
  • fb69872 Settle a lower node tip with two agreeing readings before rolling back
  • 81018f3 Add GET /ready and report readiness on /live
  • 4202032 Route contributions to develop and guard master against non-release pull requests
  • 8277bc7 Bump ip-address, axios and proxy-addr past their advisories
  • 5fbd783 Merge: Add stubbed getRawTransaction whole-hex guard test
  • 777f0b9 Add stubbed getRawTransaction whole-hex guard test
  • 0f4506f Merge: Strengthen dispenser address resolver coverage
  • 2aee2ae Strengthen dispenser address resolver coverage
  • eae5f23 Preserve pinned dispenser test titles
  • 0a0ad44 Collapse dispenser registrations by address id
  • d9cd72c Fix 9 review findings in xchain-decoder
  • 645e048 Merge master (v0.23.0 release) back into develop

- AUX_POW: operations and decoder pages say set it for Dogecoin only; utxo-tracker pages say it is required for Litecoin (HogEx) too
- MariaDB version drift between repositories
- Decoder transaction quarantines have no signal of their own: lumped into a noisy parse_errors counter that the dashboard ignores
- dispenserAddressKey folds only ASCII case and trailing spaces, but index_addresses uses utf8_unicode_ci, so two creates can still share one dispensers
- sub_commands.js equivalence commentary quotes an indexer admission gate (dispatchedOnly / DISPATCHED_ACTIONS / ACTION_ADMISSION_DISPATCHED_ONLY) that
- Below-gate path of collapseDispenserRegistrations duplicates collapseRegistrationsByKey line for line
- No test covers the case where the clear's INSERT succeeds but the read-back still shows a halt
- readReorgHaltMarker turns a falsy getReorgHaltMarker() result into "not halted" instead of keeping the cached state
- Decoder deploy-precondition 2026-06-02-widen-ids-to-bigint.sql has no MIGRATION_PRECONDITIONS baseline, so a fresh decoder DB never records it and the
Resolve each distinct operating address through index_addresses above the activation gate and group registrations by that authoritative id. Preserve raw-address replay behavior below the gate and cover non-ASCII collation equivalents.
Keep the address-id resolver assertions under the established suite titles so the title map remains stable while retaining collision coverage.
Make the trailing-space case validate both exact resolver inputs and reject unexpected lookups, so bypassing address-id resolution is detected.
Drives getRawTransaction with a stubbed rpcPost: whole hex passes through
wholeHexResult unchanged, malformed answers are retried, and a node that
never answers whole hex rejects naming the txid. The same scenarios run
against a copy of the module with the guard removed and must fail there, so
the test cannot pass when the guard behavior is absent.
…ull requests

Contributors now branch off develop and open pull requests against it, as the docs and PR template say. A new pull_request_target check fails any pull request into master that is not this repository's own develop, release/* or hotfix/* branch, and CI now runs on pull requests into develop.
/live answers 200 while a REORG_HALT marker stands, by design: it drives the
container healthcheck and a restart cannot clear the marker. Nothing answered
whether the decoder's tip can be trusted. GET /ready returns the /live body with
503 while any not-ready reason holds (every liveness fault, a halted or parked
REORG_HALT marker, a marker never read, or a stale node tip), and /live now
carries the same verdict as ready / not_ready_reasons without changing its
status code.
Fixes the defects, doc drift and test gaps this repo carried on the
review board and the test-gap board, 14 files.
… match its merkle root, and parse LTC MWEB-form transactions to the node's txid
…with a typed parse error

transactionFromHex now consumes exactly the bytes it is given and wraps every wire-parse failure, in it and in the block path, in TransactionParseError, and the MWEB CompactSize reader refuses values above Number.MAX_SAFE_INTEGER. Fixed node-txid vectors, truncation and trailing-byte cases, and a mempool containment test cover the change, and the parse fuzz harness accepts the typed error by its code.
Synced from xchain-hub/src/coins by bin/sync-coins.sh: the BTC and DOGE
mainnet genesis ledgerHash and dumpHash move after BASE, DASH, HBAR, HOOD,
HYPE and NEAR left the genesis manifests. No testnet or regtest value moves.

The vendored-file identity pin is re-taken for the new coin file bytes.
Keep the gate dormant on mainnet and testnet, activate it from regtest genesis, and pin the public re-export with a focused conformance test.
Use the previous confirmed protocol clock at the gated capture floor in block and mempool paths. Cover the close-boundary block and the subsequent floor advance.
Extract the block decoder fixture setup and tighten the related grace comments so the structure and comment checks stay clean.
Keep the capture-floor contract concise enough for the comment style check.
Keep the existing suite identities while retaining the parent-floor boundary assertions.
Keep the extra stored timestamp available for the parent protocol clock while limiting the current block context to the consensus median span. Cover the combined activation path.
Provide the normal decoder formatting seams for elapsed-time variance and split the suite callback within the structure limit without changing its full test title.
@jdogresorg
jdogresorg merged commit 800cb43 into master Oct 17, 2026
12 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant