Skip to content

v1.12.0

Choose a tag to compare

@github-actions github-actions released this 04 Jun 07:52
· 40 commits to main since this release

v1.12.0

First feature minor in the 1.x line. No consensus or network-protocol change; safe in-place upgrade, no resync required.

Wallet push: SSE GET /sse (PR #25, issue #15 Tier 2)

Wallets can now get a push nudge the moment a watched address's mempool or confirmed state changes, instead of polling — balance/UTXO updates render at network-RTT.

  • New long-lived GET /sse endpoint on the JSON-RPC port (text/event-stream, Electrum-style per-script subscription via ?addresses=). Server emits a tiny script_changed nudge; the client re-pulls.
  • Per-script subscription routing (cost is O(subscribers for that script)), bounded per-connection buffers, separate connection pool, per-IP and per-connection caps, 25s heartbeat, TCP-keepalive reaping.
  • Spend-side coverage: a confirmed spend of a watched address nudges that address, even for transactions that never transited this node's mempool (block-only / miner-direct) and across reorgs.
  • Operator opt-out: --rpc-sse-enabled false refuses /sse (404) and serves only one-shot JSON-RPC, for operators who prefer not to run a persistent, address-linkable subscription channel. Default on.

Batched mempool read: get_address_mempool_batch (PR #26)

One request returns the mempool view for many addresses under a single rate-limit charge — collapses a multi-address wallet poll that would otherwise spend one scan per address. Per-request work is bounded (address dedup + per-address result cap with a truncated flag).

Script tooling (PRs #22, #23)

  • covenants::htlc observer types (HtlcRecord, HtlcState, HtlcRole, claim/reclaim records) — canonical wire shapes for HTLC observers/indexers/wallets, alongside the existing try_parse_htlc.
  • script::structural_merkle_hash — identifies a script template (same combinator structure / constant types, independent of specific parameter values), for explorers and contract-type tagging. Not a spending commitment; merkle_hash is unchanged.