Hardens consensus, the CAT mempool and RPC resource limits, and fixes two issues hit when a chain restarts or rolls back.
Behaviour changes:
- Peers that send a vote with an invalid signature are disconnected. Invalid vote extension signatures alone are not punished.
block_searchreturns an error when a page would exceed 64 MiB of blocks; use a smallerper_page. A single block is always served.- gRPC
SubscribeNewHeightsaccepts at most 1000 concurrent streams and returnsResourceExhaustedbeyond that. - A heavy gRPC stream or WebSocket response that the client does not read for 30 seconds is closed with
DeadlineExceeded, releasing its heavy request permit. - On a chain that starts at
initial_height> 1, such as one restarted from an exported genesis, a precommit for the previous height is ignored instead of panicking the node. Chains that start at height 1 are unaffected. - A tx re-executed at the same height and index after a rollback replaces its old result in the tx index.
What's Changed
- fix(rpc/grpc): [medium] bound concurrent SubscribeNewHeights streams (backport #3603) by @mergify[bot] in #3605
- fix(rpc): [medium] bound heavy permit lifetime for gRPC streams and WebSocket responses (backport #3612) by @mergify[bot] in #3618
- fix(rpc): [medium] bound block_search page by response size (backport #3610) by @mergify[bot] in #3619
- fix(mempool/cat): [high] bound the received-tx buffer (backport #3594) by @mergify[bot] in #3621
- feat(consensus): [high] disconnect peers that send votes with invalid signatures (backport #3600) by @mergify[bot] in #3622
- fix(consensus): [high] ignore precommits for the height before the initial height by @vgonkivs in #3598
- fix(txindex): [medium] let a re-executed tx replace its old result (backport #3503) by @mergify[bot] in #3599
Full Changelog: v0.42.8...v0.42.9