This page tracks releases and changes for v0.40.0. For the full release history, see the CHANGELOG on GitHub.
BUG FIXES
[blocksync]tolerate late BlockResponse from honest peers after switching to consensus (#5959)[mempool]include proto framing overhead in AppReactor batch size to prevent peer teardown (#5956)[blocksync]documentadaptive_syncequivocation risk for validator nodes (#5953)[abci]fix socket transport missingInsertTxandReapTxscases inhandleRequestandresMatchesReq, causingErrUnexpectedResponseand node self-kill whenmempool.type = "app"with the default socket transport (#5958)[flowrate]fix flakyTestWriterby comparingIdlewith a duration tolerance instead of exact equality (#5929)[rpc]escape the requestHostin the endpoints listing page so it cannot break out of the generated HTML (#5921)[consensus]Fixdouble_sign_check_height = 1performing no double-sign checks due to off-by-one error in loop condition (i < Nshould bei <= N). The value1now correctly checks the previous block as intended. (#5668)[rpc/jsonrpc]reject non-finite, fractional, and out-of-int64-range numeric IDs in request decoding instead of silently saturating tomath.MinInt, which previously made distinct large IDs collide. (#5861)[consensus]a proposer now self-verifies its own vote extension before broadcasting its precommit, so an application whoseExtendVoteandVerifyVoteExtensionhandlers are inconsistent halts the node with a clearCONSENSUS FAILUREinstead of stalling the whole network (#5204)[blocksync]fix deadlock inAddBlockcaused by holdingpool.mtxduringsendError(#5931)[blocksync]holdpool.mtxand recomputemaxPeerHeightinEnable()(#5888)[inspect]fix flakyTestInspectRunand consolidate start/stop handshake (#5891)[p2p]fix flaky switch tests by replacing fixed sleeps with deterministic peer-wait polling (#5918)[p2p]fix race and goroutine leak inTestTransportMultiplexAcceptNonBlockingtest (#5878)[evidence]fix flakyTestReactorsGossipNoCommittedEvidencetest (#5870)[blocksync]fix flakyTestBlockPoolBasicdeadlock under-race(#5867)[blocksync]fix removeTimedoutPeers deadlock found via Byzantine prevote gossip race (#5839)[mempool]fix setRecheckFull/setDone race causing spurious ErrRecheckFull. (#5837)[abci]fix deadlock when response callback re-enters the client. (#5850)[node]use kernel-assigned ephemeral ports and fixOnStartcleanup (#5868)[node]close partial listeners on startRPC failure (#5869)[lp2p]removeMaxStreamSizeclamp inStreamReadSized(#5954)[lp2p]fallback to conn remote addr when resolving inbound peer (#5879)[consensus]release cs.mtx before sending to statsMsgQueue (#5813)[mempool]truncate proto field number to int32 in filter’s ReadTag (#5948)[privval]preempt sleep retries in privval signer client (#5934)
IMPROVEMENTS
[blocksync]replacenumPending int32withatomic.Int32and documentBlockPoolfield ownership (#5889)[execution]cache validator set within a block cycle. (#5834)[state]skip the proposer-priority advance when loading validators for the block-replay commit-info path (LoadValidatorsFast); up to ~900x faster at the largest checkpoint offsets. (#5204)[consensus]reuse encode/decode buffers in WALEncoder and WALDecoder. (#5865)[blocksync]validate blocksync response sender and signature count (#5860)[autofile]skip fsync inFlushAndSyncwhen no new data was written (#5866)[mempool]ImplementMsgBytesFilterin Reactor to prevent heap amplification attack (#5946)[privval]Dynamically calculate privval maxRemoteSignerMsgSize. (#5985)[types]Update default max block bytes param to account for increased signature size of mldsa65. (#5987)[config]Update the default max_tx_bytes to account for increased signature size of mlsdsa65. (#5989)[crypto]Add UnmarshalJSON to secp256k1eth key type. (#5990)
FEATURES
[config]Add EventBusBufferCapacity setting. (#5849)[abci/server]Accept pre-bound listener in socket and gRPC servers. (#5904)[crypto]Add ml-dsa-65 keytype. (#5875)[crypto]Addsecp256k1ethkeytype: go-ethereum-compatible secp256k1 signing (legacy Keccak-256, 65-byte[R||S||V]signatures, 20-byte Ethereum addresses). (#5907)
STATE-BREAKING
[crypto]secp256k1ethverification now requires exact 65-byte recoverable[R||S||V]signatures with canonicalVin{0,1}.[state]MedianTimeskipsNilandAbsentprecommits, aligning withVerifyCommit’s commit tally. (#5901)
API-BREAKING
[crypto]Add ml-dsa-65 keytype. (#5875)