Skip to content

Release v0.24.0 - #24

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

jdogresorg merged 31 commits into
masterfrom
release/v0.24.0

Conversation

@jdogresorg

Copy link
Copy Markdown
Contributor

What this release carries

Added

  • Added a transaction status lookup method and exposed a node tier mismatch in status readiness.

Changed

  • Priced transactions at their full size, selected inputs against the final fee and refused sub-dust payments.
  • Funded multi-chunk P2WSH reveals with first-leg headroom and a surplus sweep.
  • Refused non-validator transaction creation on mainnet before launch.

Fixed

  • Sized bare-multisig dust from each coin's relay rate and refused a reveal that does not spend its funded scripts.
  • Kept fee tiers ordered by confirmation speed and used the relay fallback for implausible test-chain fees.

Security

  • Bumped axios, fast-uri, ip-address, proxy-addr and brace-expansion to resolve security 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 8033833099fbc9a61a15d6ffb8cff7be9c49cb54
Head: release/v0.24.0 at 83020a0a0e64d5bd75ebc0fd570b5477ec707efa

Landed refs

  • 83020a0 Release v0.24.0
  • a9f9a14 Merge master into develop to level it before the v0.24.0 cut
  • 5fcda6a Merge: Narrow fee estimation suite title pin
  • ec41581 Narrow fee estimation suite title pin
  • d89ebef Merge: Keep fee ordering within source limit
  • 3609492 Use relay fallback for implausible test-chain fees
  • a8dfcf6 Keep fee ordering within source limit
  • 4ef8cf9 Keep fee tiers ordered by confirmation speed
  • d5cfc4f Merge: Keep transaction lookups within source limits
  • d7f39c5 Keep transaction lookups within source limits
  • 83764a8 Require structured mempool miss codes
  • d317416 Keep status lookup within structure limits
  • 603ac2b Add transaction status lookup RPC
  • 03d00a5 Re-vendor coin registry for the mainnet genesis re-pin
  • 79f5490 Size bare-multisig dust from each coin's relay rate and refuse a reveal that does not spend its funded scripts
  • 5d66dee Fix review round findings for xchain-encoder (2026-10-14)
  • b0b4c11 Fund multi-chunk P2WSH reveals with first-leg headroom and a surplus sweep, keep single transactions above the Core relay size, add the DOGE soft-dust fee per sub-limit output, build nested segwit inputs, and copy the caller's custom outputs
  • 4f7a5f7 Price transactions at their full size, select inputs against the final fee and refuse sub-dust payments
  • c4985d9 Route contributions to develop and guard master against non-release pull requests
  • 4dc3be9 Merge: Move the prelaunch gate into config and split its tests
  • d4a0803 Move the prelaunch gate into config and split its tests
  • 86c3957 Refuse non-validator create_tx on mainnet before launch
  • caf9335 Bump axios to 1.20.0 and refresh fast-uri, ip-address, proxy-addr and brace-expansion to resolve security advisories
  • 360d407 Merge: test: guard encoder decoder chain identity parity
  • d49c3bf Merge: Expose node tier mismatch in status readiness
  • 9ae9e9f Merge: Port genesis identity helpers from decoder
  • c159b4c test: guard encoder decoder chain identity parity
  • a4e882b Expose node tier mismatch in status readiness
  • fa3e0e9 Port genesis identity helpers from decoder
  • 4af41f7 Fix 7 review findings in xchain-encoder
  • a5b4ed7 Merge master (v0.23.0 release) back into develop

- create_tx `pubkey` given as compressed hex is never checked to be on the curve, so chunk-lane and sweep outputs can be locked to a key that cannot exi
- Unresolvable params.pubkey identity is rejected with a plain Error deep in the build, returning -32603 internal instead of -32602
- create_tx comment says build faults "stay retryable" but the SDK never retries any JSON-RPC error body
- Encoder promises retryable -32603 for transient node faults, but the SDK never retries any JSON-RPC body error
- Stale comment in anchorRelayFeeRate says getFeePerKilobyte throws on every non-regtest chain when estimatesmartfee has no data, but only mainnet throw
- feePerKb has no upper bound in the validator, unlike fee/dust/feeQuote; an oversized rate is quietly clamped instead of rejected
- Comments about the container's PID 1 contradict the Dockerfile's tini ENTRYPOINT (compose ends up running two inits)
Add focused coverage for mismatches, unpinned state, and deliberate fail-open behavior.
Retain the connector mismatch reason when the node tier gate refuses a request. Mark the status endpoint unhealthy and publish the reason, with regression coverage for mismatch and normal readiness states.
Compare the complete exported chain-to-network maps so key additions, removals, and value drift fail the encoder suite.
… brace-expansion to resolve security advisories
A mainnet encoder now answers create_tx for any action outside the
validator set (STAKE, UNSTAKE, DELEGATE, SLASH, NODEPROOF, ROLLCALL)
with -32010 and reason MAINNET_PRELAUNCH until unix time 1798761600.
ENCODER_MAINNET_PRELAUNCH_OVERRIDE (1/true/yes/on) lifts it, read live
through config.js and documented in the README. Tests drive the real
environment variable through the controller factory.
json_rpc_methods.js is back to 400 lines: the gate, its launch time and the
validator action set now live in src/common/config.js beside the override it
reads, and create_tx makes one call to it. The clock is stubbed through
Date.now in the tests, which are split into four describe blocks so none
passes 60 lines.
…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.
…sweep, keep single transactions above the Core relay size, add the DOGE soft-dust fee per sub-limit output, build nested segwit inputs, and copy the caller's custom outputs
Fixes the defects, doc drift and test gaps this repo carried on the
review board and the test-gap board, 21 files.
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.
Classify transactions through the node mempool and tracker chain index while preserving lookup failures as errors. Publish the OpenRPC contract and cover each status and failure path.
Extract shared txid and status helpers, rewrap retained readiness prose, and split the focused suites into bounded callbacks.
Treat only RPC code -5 as an absent mempool entry, retain all other node errors, and cover misleading error text. Restore pre-existing readiness commentary while keeping transaction lookup helpers within the structure ratchet.
Condense only the new lookup helpers and handlers so the API module remains at the 400-line structure limit without rewriting existing comments or methods.
Floor each faster fee quote at the preceding slower quote. Add focused controller coverage and verify the ordered payload through the real JSON-RPC app.
Fold the cumulative fee floor into the existing tier assignment so the controller remains at the repository line limit.
Treat estimates above the sanity ceiling as unavailable on non-mainnet chains while preserving the mainnet clamp. Add focused regression coverage and refresh the suite-title pin.
Keep the title map limited to the changed fee-estimation suite and the new focused regression file.
@jdogresorg
jdogresorg merged commit c246a23 into master Oct 17, 2026
10 of 11 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