Consensus & Network
- Only arm a peer stall deadline for a
getblockswith a non-zero stop hash. An open-endedgetblocksneeds no reply, so the deadline disconnected honest, fully-synced peers (btcsuite/btcd#1317). - Stop replying to
getblockswith an emptynotfoundwhen 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 ingetblocktemplate.
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
estimatefeenblocksparameter 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.
--fastsyncalso advertisedNODE_CFwithout maintaining one. - Reject raw transactions with trailing bytes in
decoderawtransactionandsendrawtransaction, which were previously discarded and the transaction relayed.
Build & Packaging
- Publish the Docker image to GHCR on each release tag.
- Rewrite the deprecated
io/ioutilusage go-bindata emits, with amake bindatatarget so it survives regeneration. - Update dependencies, including
google.golang.org/grpc,golang.org/x/crypto, andgolang.org/x/net.
Other
- Export
bchec.ErrInvalidSquareRootfor use witherrors.Is. - Modernize loops to range over integers, and adopt
slices.Backwardandstrings.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.