github zakura-core/zakura v1.8.4

latest releases: v1.8.6, v1.8.5
4 days ago

Faster block fan-out to all peers and a higher getstandardfee recommendation.

Supported on Mainnet until block 3,643,309, around December 5, 2026. Upgrade warnings start about three days earlier.

Before you upgrade

  • getstandardfee now recommends at least 1,000 zatoshis per logical action. Wallets that use it will pay more. The mempool's acceptance fee and the RPC's result shape are unchanged (#2060).
  • New file next to the identity key. Native discovery now stores its last record sequence in <identity_dir>/<network>.<node_id>.zakura-discovery-sequence. Keep it with the identity key if you back up or move that directory (#2013).

Highlights

  • Relayed blocks used to reach the last peers 9 to 12 seconds late, in 3 second waves. The default advert_window_min and advert_window_max are now 1000, so every peer gets the advert at once. Configs that still hold the old 32/64 defaults, such as generated ones, load as the new defaults (#2078).
  • The legacy advertiser waits 2 seconds instead of 3 for a peer to request an advertised block (#2079).
  • Less verification and mempool work: v5/v6 transaction digests are computed once per block, mempool cleanup no longer rescans the pool, and getblocktemplate selection is cheaper on large mempools (#2022, #2048, #2054).
Full changelog

Added

  • Added an optional loopback-only raw trace endpoint. GET /traces lists the
    JSONL trace tables, and GET /traces/<table> streams one table with standard
    HTTP byte ranges and an ETag, so collectors can follow a growing table with
    If-Range. It is disabled by default and requires trace_dir
    (#2072).

Changed

  • Verifying a block computes each v5 and v6 transaction's ID and authorizing-data
    digest once, and reuses them for transaction verification and the block's
    authorizing-data commitment check, instead of recomputing the digests
    (#2022).
  • Reduced block and transaction-expiry cleanup work by removing known mempool
    transaction IDs without rescanning the pool
    (#2048).
  • Raised the minimum fee recommendation from getstandardfee to 1,000
    zatoshis per logical action
    (#2060).
  • Classify the compatible performance improvements and fee recommendation
    increase as a patch node release; library crates retain their independent
    version requirements (#2074).
  • Raised the default advert_window_min and advert_window_max from 32 and 64
    to 1000, so every block is advertised to up to 1000 peers at once. Relayed
    blocks previously reached the last peers 9 to 12 s late in 3 s waves. Config
    files that still hold the previous defaults, such as files made by
    zakurad generate, now load as the new defaults. Other configured values are
    kept (#2078).
  • Reduced how long the legacy block advertiser waits for a peer to request an
    advertised block from 3 s to 2 s, so peers that already have the block hold
    up new-block fan-out for less time
    (#2079).

Fixed

  • Fixed header sync re-requesting a VCT repair target from a peer that refused
    it before that peer advertised a new status, and capped such refusals at
    three per peer per repair episode. A peer's repair failures now survive its
    session being replaced, and hold for one readmission cooldown after it
    disconnects (#2000).
  • Fixed block sync giving a peer a fresh Status allowance each time it reopened
    the block-sync stream. The connection now keeps its Status pacing across
    stream replacements
    (#2012).
  • Fixed block sync advertising free download slots for a peer whose outbound
    queue was full
    (#2012).
  • Fixed native discovery authoring an older self-record after a backward clock
    step across a restart, which left peers dialing the node's previous addresses
    until the old record expired. The node now stores its last authored sequence
    beside its identity key, in
    <identity_dir>/<network>.<node_id>.zakura-discovery-sequence
    (#2013).
  • Fixed a native P2P peer being able to stall its connection for up to 10
    seconds by withholding stream credit while the node reopened one of its
    service sessions. The reopen now runs beside the connection's other work and
    reserves the service only once its streams are open. The connection's first
    session opens also end at once when the node closes the connection
    (#2014).
  • Reduced getblocktemplate transaction-selection work for large mempools by
    avoiding repeated rebuilds of fee-sampling weights
    (#2054).
  • Fixed maintained Zakura redials that credited connection setup time toward
    a healthy connection, and an alternate connection that lifted the ten-minute
    ALPN-mismatch backoff
    (#2062).
  • Reduced redundant block and transaction decoding when fetching inventory over
    Zakura compatibility streams
    (#2057).

Also in CHANGELOG.md.

Don't miss a new zakura release

NewReleases is sending notifications on new releases.