Zero v25
Zero release 25, built from commit fe056fc.
Changes
Security
- zebra: three fixes from the Zcash Foundation's upcoming security release,
applied ahead of it as[upstream-pending]carries on top of upstream
main(all drop on the next zebra subtree pull):- Blocks above the sync lookahead limit no longer score the peer that served
them. The far-ahead hash comes from a maliciousFindBlocksresponse that
carries no peer attribution, so the follow-up download is answered by an
independently chosen honest peer, and scoring it let an attacker get honest
peers banned throughout initial block download (GHSA-qhr3-cvch-5fh2). - A block download answered with a canonical header and a rewritten coinbase
height is re-requested immediately instead of being rediscovered a sync
round later, and the serving peer is scored when a parent block Zebra
already holds proves the claimed height wrong (GHSA-g95h-hw6g-pvgv,
reported upstream by @zakura-security). - Peers that gossip consensus-invalid blocks are scored for misbehavior
again. The inbound download cleanup downcast errors toVerifyBlockError,
but the gossip verifier is aBlockVerifierRouterreturningRouterError,
so the downcast never matched and such peers were never banned
(GHSA-8hh2-hrf2-cqf4).
- Blocks above the sync lookahead limit no longer score the peer that served
Changed
- zebra: subtree updated from v6.2.0 to upstream
main(8e9ff3b2cb, past
v6.2.3), the exact base of the Foundation's upcoming release. Brings the
6.2.1 to 6.2.3 hardening releases (NU6.3 activation-window and peer
connectivity fixes) plus unreleased work: MAX_MONEY value-pool enforcement
(#10817), the block/mempool transaction-verifier split (#11095), singleton
FindBlocks downloads (#11165), inbound address canonicalization (#11129),
bans that clear the whole address book for an IP (#11173), zec.rocks default
seeders (#11096),getdeprecationinfo(#11097),getblocksubsidyNU6-era
metadata (#11172), indexer gRPC stream limits (#10980), and a
getblocktemplatecoinbase-cache fix (#10954). State format is unchanged
(28); no resync needed. Binaries self-report zebrad 6.2.3 until upstream's
release bumps the version. - Dropped six zebra carries that merged or were superseded upstream: #11113,
#11050, #11053, #11061 (superseded by the narrower require-while-syncing
rule), GHSA-2p4c-3q4q-p463 (#11054), and GHSA-8gxx-hc65-vv82 (#11052).
Still carried: #10732 FindBlocks stall gating.
Added
- zebra: two Prometheus metrics for diagnosing slow block acceptance.
zebra_consensus_transaction_duration_secondssplits transaction verification
intophase="utxo_fetch"(one state round trip per transparent input) and
phase="checks"(scripts, signatures, proofs), each labelled
request="block"or"mempool"; the ratio shows whether a node is bound by
state lookups or cryptography.rpc_submitblock_inflightgauges how many
submitted blocks are being verified at once. Needs theprometheusfeature
and a[metrics] endpoint_addr, both already set in our images.
Fixed
- zebra:
submitblockno longer discards a solved block when the miner's client
disconnects. Verification ran on the RPC connection, so a client timeout
cancelled it mid-flight and the block vanished with no commit and no log line.
Verification now completes regardless of the client, the block is still gossiped
once the client has gone, and every outcome is logged. (50e7e57, 92f499b) - zebra:
submitblockanswersduplicate-inconclusivefor a block still being
verified, instead of verifying it a second time. A miner retrying after a
timeout would otherwise double the work on an already-slow node;duplicate
would wrongly imply the node holds a validated copy. (46b3926)
Testing
- Three regression tests cover the submitblock disconnect and resubmission
paths, each checked to fail without the fixes above.
zebra-rpc/examples/submitblock_abandon_repro.rsreproduces it on Regtest: a
2,000-input block taking ~350ms was lost 3/3 when abandoned at 43/88/177ms,
and commits after the fix. It also shows the block path reuses none of the
mempool's verification work. (c9908b5, a3c60db)
Source archives
One ZIP per vendored component (tracked source at the released commit):
zcashd-v25.zipzebra-v25.zipzaino-v25.zipzallet-v25.ziporchard-v25.ziplibrustzcash-v25.ziplightwalletd-v25.zip
Binaries
Prebuilt for linux/x86_64 (built on ubuntu-22.04, glibc 2.35+; stripped).
Telemetry disabled (no sentry/opentelemetry); getblocktemplate and
prometheus metrics included.
zebrad-v25-linux-x86_64(with.sha256)
Note
The "Source code (zip)" and "Source code (tar.gz)" entries are
generated automatically by GitHub from the tag. They are not part of
the Zero release; use the assets above.