Skip to content

v0.22.2

Latest

Choose a tag to compare

@zquestz zquestz released this 26 Jul 03:33
5e051d8

Consensus & Network

  • Only arm a peer stall deadline for a getblocks with a non-zero stop hash. An open-ended getblocks needs no reply, so the deadline disconnected honest, fully-synced peers (btcsuite/btcd#1317).
  • Stop replying to getblocks with an empty notfound when pruned.
  • Fix a hang on shutdown caused by a blocking queue send to a peer that had already quit.
  • Always signal the send completion channel when serving a merkle block, which could otherwise wedge a peer's input handler.
  • Fix two data races in the connection manager on ConnReq.Addr.
  • Log a warning when a transaction is relayed to no peer, which happens when its fee rate is below every peer's fee filter.

Mining

  • Pad the coinbase to the minimum transaction size enforced at the block height. Block generation was permanently broken on regtest above height 1000 and simnet above 3000.
  • Set the Upgrade9 behavior flag in CheckConnectBlockTemplate, which rejected valid CashToken transactions in getblocktemplate.

RPC & gRPC

  • Match transaction subscriptions on the address funding an input, so spends of outputs the subscription did not watch arrive now notify. Confirmed parents require --txindex.
  • Report the missing parent rather than "already have transaction" when submitting a transaction held in the orphan pool, matching BCHN.
  • Make the estimatefee nblocks parameter optional, matching BCHN and Bitcoin ABC 0.19.1.

Database

  • Fix a panic when a block rolls the block store over to a new flat file. The panic was recovered while the file lock was held, leaving the database wedged rather than crashing.

Security

  • Fix a CashTokens consensus rule violation allowing minting NFT forgery. The authorization check shared one flag across all output categories, so a single authorized minting output authorized every other one in the same transaction. Reported by 0xaudron.
  • Fix a remotely triggerable crash in the committed filter handlers, which dereferenced a missing index. --fastsync also advertised NODE_CF without maintaining one.
  • Reject raw transactions with trailing bytes in decoderawtransaction and sendrawtransaction, which were previously discarded and the transaction relayed.

Build & Packaging

  • Publish the Docker image to GHCR on each release tag.
  • Rewrite the deprecated io/ioutil usage go-bindata emits, with a make bindata target so it survives regeneration.
  • Update dependencies, including google.golang.org/grpc, golang.org/x/crypto, and golang.org/x/net.

Other

  • Export bchec.ErrInvalidSquareRoot for use with errors.Is.
  • Modernize loops to range over integers, and adopt slices.Backward and strings.Builder.
  • Assert the CHIP-2021-05 hashing density limit in the VM limits tests, which previously carried a check that could never execute.
  • Fail rather than skip in the invalid VMB vector tests when a vector executes without error.
  • Fix flaky address manager tests by generating only routable addresses.
  • Removed support for plan9.