> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cosmos.network/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Release history and changelog for Cosmos COMETBFT

<Info>
  This page tracks releases and changes for v0.39.3. For the full release history, see the [CHANGELOG](https://github.com/cometbft/cometbft/blob/main/CHANGELOG.md) on GitHub.
</Info>

<Update label="May 5, 2026" description="v0.39.3" tags={["COMETBFT", "Release"]}>
  ## DEPENDENCIES

  * Bump pq version to 1.12.0
    ([#5713](https://github.com/cometbft/cometbft/pull/5713))

  ## FEATURES

  * `[mempool]` Allow CheckTx retries for BroadcastTxSync
    ([#5802](https://github.com/cometbft/cometbft/pull/5802))
</Update>

<Update label="May 4, 2026" description="v0.39.2" tags={["COMETBFT", "Release"]}>
  ## DEPENDENCIES

  * `[build]` Bump `github.com/Masterminds/semver/v3` from `3.4.0` to `3.5.0`
    ([#5823](https://github.com/cometbft/cometbft/pull/5823))

  ## BUG FIXES

  * `[mempool]` App mempool waits before broadcasting.
    ([#5800](https://github.com/cometbft/cometbft/pull/5800))
  * `[blocksync]` Prevent maxPeerHeight poisoning
    ([#5803](https://github.com/cometbft/cometbft/pull/5803))
  * `[p2p]` Add lp2p reactor panic recovery
    ([#5816](https://github.com/cometbft/cometbft/pull/5816))
  * `[light]` Stop witness comparison after divergence checks
    ([#5820](https://github.com/cometbft/cometbft/pull/5820))
  * `[abci]` fix(abci): prevent panic on unlock in socket server panic recovery
    ([#5593](https://github.com/cometbft/cometbft/pull/5593))

  ## IMPROVEMENTS

  * `[abci,mempool]` Add Krakatoa app-mempool flow, including ABCI app-connection methods and app mempool/reactor wiring.
    ([`f4a9ba936`](https://github.com/cometbft/cometbft/commit/f4a9ba936), [#5791](https://github.com/cometbft/cometbft/pull/5791))
  * `[e2e]` Introduce app-mempool e2e network fixtures for simple, perturbed, and libp2p scenarios.
    ([`f4a9ba936`](https://github.com/cometbft/cometbft/commit/f4a9ba936))
  * `[execution,state]` Add height validation in state execution and consensus paths
    ([#5804](https://github.com/cometbft/cometbft/pull/5804))
  * `[consensus]` perf(consensus): skip fsync for unsigned internal messages (block parts)
    ([#5695](https://github.com/cometbft/cometbft/pull/5695))
</Update>

<Update label="April 14, 2026" description="v0.39.1" tags={["COMETBFT", "Release"]}>
  ## BUG FIXES

  * `[autopool]` Fix autopool worker message handling recovery
    ([#5775](https://github.com/cometbft/cometbft/pull/5775))
  * `[types]` Fix nil vote handling
    ([#5777](https://github.com/cometbft/cometbft/pull/5777))

  ## IMPROVEMENTS

  * `[node]` do not log experimental warning for libp2p if starting node at height 0
    ([#5776](https://github.com/cometbft/cometbft/pull/5776))
</Update>

<Update label="April 10, 2026" description="v0.39.0" tags={["COMETBFT", "Release"]}>
  ## BUG FIXES

  * `[evidence]` Add validation for Light Client Attack evidence ByzantineValidators
    ([#5638](https://github.com/cometbft/cometbft/pull/5638))
  * `[types]` Fix buffer offset bug in `ProposerPriorityHash` that caused hash collisions when validator priorities differed
    ([#5613](https://github.com/cometbft/cometbft/pull/5613))
  * `[p2p]` fix(privval): Ephemeral Port Exhaustion
    ([#5433](https://github.com/cometbft/cometbft/pull/5433))
  * `[blocksync]` fix(blocksync): `ExtendedCommit` verification via next blocks `LastCommit`
    ([#5629](https://github.com/cometbft/cometbft/pull/5629))
  * \[p2p] fix(lp2p): enforce stream max size ([#5647](https://github.com/cometbft/cometbft/pull/5647))
  * `[metrics]` fix(metrics)!: peer\_send\_queue\_size
    ([#5648](https://github.com/cometbft/cometbft/pull/5648))
  * `[statesync]` fix adaptive\_sync and streamline stateSync logic
    ([#5663](https://github.com/cometbft/cometbft/pull/5663))
  * `[blocksync]` Modify blocksync to use full commit verification instead of light
    ([#5663](https://github.com/cometbft/cometbft/pull/5663))
  * `[adaptivesync]` Simplify loop, reuse blockExec.ValidateBlock
    ([#5717](https://github.com/cometbft/cometbft/pull/5717))

  ## IMPROVEMENTS

  * `[consensus]` perf(consensus): skip fsync for unsigned internal messages (block parts) ([#5695](https://github.com/cometbft/cometbft/pull/5695))
  * `[ci]`: add lp2p testnet ([#5643](https://github.com/cometbft/cometbft/pull/5643))
  * `[mempool]` feat!(p2p): introduce follower-mode. Improve lib-p2p integraap access
  * `[types]` Add validation for `AuthorityParams.Authority` field in consensus params, enforcing a maximum length of 256 characters ([#5511](https://github.com/cometbft/cometbft/pull/5511))
  * `[mempool]` perf(mempool/cache): Optimize LRUTxCache.Remove to reduce lock contention and map access
    ([#5244](https://github.com/cometbft/cometbft/pull/5244))
  * `[e2e]` add support for testing different keytypes, including BLS
    ([#3513](https://github.com/cometbft/cometbft/pull/3513))
  * `[crypto]` Reduce BLS signature size to 48 bytes by increasing pubkey size to
    192 bytes ([#3624](https://github.com/cometbft/cometbft/issues/3624))
  * `[p2p]` feat(lp2p): make reactor queue configurable
    ([#5662](https://github.com/cometbft/cometbft/pull/5662))
  * `[cli]` print lib-p2p peer id
    ([#5667](https://github.com/cometbft/cometbft/pull/5667))
  * `[p2p]` Add warning when go-libp2p transport is enabled, conveying that the setting
    should only be activated if it can be enabled simultaneously for all validators
    and peer IDs have been predetermined and exchanged
    ([#5692](https://github.com/cometbft/cometbft/pull/5692))
  * `[p2p]` feat(p2p): add adaptive sync for comet-p2p
    ([#5705](https://github.com/cometbft/cometbft/pull/5705))
  * `[blocksync]` fix redo event loss, stale event cancellation, and optimize retry timer
    ([#5592](https://github.com/cometbft/cometbft/pull/5592))

  ## FEATURES

  * `[p2p]` feat(lp2p): implemented resource limiter ([#5671](https://github.com/cometbft/cometbft/pull/5671))
  * `[p2p]` feat(consensus): add adaptive sync blocksync-to-consensus ingestion ([#5633](https://github.com/cometbft/cometbft/pull/5633))
  * `[p2p]` feat(lp2p): implement Peer info methods (`NodeInfo`, `RemoteIP`, `RemoteAddr`, `IsOutbound`)
    for `/net_info` RPC compatibility with libp2p transport ([#5619](https://github.com/cometbft/cometbft/pull/5619))
  * `[p2p]` feat(lp2p): stop/reconnect peers that failed ([#5618](https://github.com/cometbft/cometbft/pull/5618))
  * `[p2p]` Add experimental support for lib-p2p networking ([#5463](https://github.com/cometbft/cometbft/pull/5463))
  * `[crypto]` Add support for BLS12-381 keys. Since the implementation needs
    `cgo` and brings in new dependencies, we use the `bls12381` build flag to
    enable it ([#2765](https://github.com/cometbft/cometbft/pull/2765))
  * `[mempool]` Add a metric (a counter) to measure whether a tx was received more than once.
    ([#634](https://github.com/cometbft/cometbft/pull/634))
  * `[p2p]` Rename `IPeerSet#List` to `Copy`, add `Random`, `ForEach` methods.
    Rename `PeerSet#List` to `Copy`, add `Random`, `ForEach` methods.
    ([#2246](https://github.com/cometbft/cometbft/pull/2246))
  * `[mempool]` When the node is performing block sync or state sync, the mempool
    reactor now discards incoming transactions from peers, and does not propagate
    transactions to peers.
    ([#785](https://github.com/cometbft/cometbft/issues/785))
  * Optimized the PSQL indexer
    ([#2142](https://github.com/cometbft/cometbft/pull/2142)) thanks to external contributor @k0marov !
  * `[p2p]` make `PeerSet.Remove` more efficient (Author: @odeke-em)
    ([#2246](https://github.com/cometbft/cometbft/pull/2246))
  * `[light]` Remove duplicated signature checks in `light.VerifyNonAdjacent`
    ([#2365](https://github.com/cometbft/cometbft/issues/2365))
  * `[state/indexer]` Lower the heap allocation of transaction searches
    ([#2839](https://github.com/cometbft/cometbft/pull/2839))
  * `[libs/json]` Lower the memory overhead of JSON encoding by using JSON encoders internally
    ([#2846](https://github.com/cometbft/cometbft/pull/2846)).
  * `[log]` allow strip out all debug-level code from the binary at compile time using build flags
    ([#2847](https://github.com/cometbft/cometbft/issues/2847))
  * `[types]` Small reduction in memory allocation via swapping Key with Equals in VoteSet
    ([#1112](https://github.com/cometbft/cometbft/issues/1112))
  * `[event-bus]` Remove the debug logs in PublishEventTx, which were noticed production slowdowns.
    ([#2911](https://github.com/cometbft/cometbft/pull/2911))
  * `[state/execution]` Cache the block hash computation inside of the Block Type, so we only compute it once.
    ([#2924](https://github.com/cometbft/cometbft/pull/2924))
  * `[consensus/state]` Remove a redundant `VerifyBlock` call in `FinalizeCommit`
    ([#2928](https://github.com/cometbft/cometbft/pull/2928))
  * `[p2p/channel]` Speedup `ProtoIO` writer creation time, and thereby speedup channel writing by 5%.
    ([#2949](https://github.com/cometbft/cometbft/pull/2949))
  * `[p2p/conn]` Minor speedup (3%) to connection.WritePacketMsgTo, by removing MinInt calls.
    ([#2952](https://github.com/cometbft/cometbft/pull/2952))
  * `[blockstore]` Remove a redundant `Header.ValidateBasic` call in `LoadBlockMeta`, 75% reducing this time.
    ([#2964](https://github.com/cometbft/cometbft/pull/2964))
  * `[p2p]` Lower `flush_throttle_timeout` to 10ms
    ([#2988](https://github.com/cometbft/cometbft/issues/2988))
  * `[types]` Significantly speedup types.MakePartSet and types.AddPart, which are used in creating a block proposal
    ([#3117](https://github.com/cometbft/cometbft/issues/3117))
  * `[types] Make a new method`GetByAddressMut`for`ValSet\`, which does not copy the returned validator.
    ([#3119](https://github.com/cometbft/cometbft/issues/3119))
  * `[consensus]` Make Vote messages only take one peerstate mutex
    ([#3156](https://github.com/cometbft/cometbft/issues/3156))
  * `[consensus]` Make the consensus reactor no longer have packets on receive take the consensus lock. Consensus will now update the reactor's view after every relevant change through the existing synchronous event bus subscription.
    ([#3211](https://github.com/cometbft/cometbft/pull/3211))
  * `[p2p/conn]` Speedup secret connection large writes, by buffering the write to the underlying connection.
    ([#3346](https://github.com/cometbft/cometbft/pull/3346))
  * `[consensus]` Make broadcasting `HasVote` and `HasProposalBlockPart` control messages use `TrySend` instead of `Send`. This saves notable amounts of performance, while at the same time those messages are for preventing redundancy, not critical, and may be dropped without risks for the protocol.
    ([#3151](https://github.com/cometbft/cometbft/issues/3151))
  * `[p2p/conn]` Removes several heap allocations per packet send, stemming from how we double-wrap packets prior to proto marshalling them in the connection layer. This change reduces the memory overhead and speeds up the code.
    ([#3423](https://github.com/cometbft/cometbft/issues/3423))
  * `[p2p/conn]` Speedup secret connection large packet reads, by buffering the read to the underlying connection.
    ([#3419](https://github.com/cometbft/cometbft/pull/3419))
  * `[mempool]` In the broadcast routine, get the pointer to the peer's state once, before starting to iterate through the list of transactions.
    ([#3430](https://github.com/cometbft/cometbft/pull/3430))
  * `[consensus]` Make mempool updates asynchronous from consensus Commit's,
    reducing latency for reaching consensus timeouts.
    ([#3008](https://github.com/cometbft/cometbft/pull/3008))
  * \[consensus] Add peer height metric publication to the consensus reactor's peer state.
    ([#5517](https://github.com/cometbft/cometbft/pull/5517))

  ## BUG-FIXES

  * `[evidence]` Use structured logging for consensus buffer flush error
    ([#5465](https://github.com/cometbft/cometbft/pull/5465))
  * `[mempool]` Fix mutex in `CListMempool.Flush` method, by changing it from read-lock to write-lock
    ([#2443](https://github.com/cometbft/cometbft/issues/2443)).
  * `[crypto/bls12381]` Fix JSON marshal of private key
    ([#4772](https://github.com/cometbft/cometbft/pull/4772))
  * `[crypto/bls12381]` Modify `Sign`, `Verify` to use `dstMinPk`
    ([#4783](https://github.com/cometbft/cometbft/issues/4783))
  * `[cli]` Prevent inadvertent rollover of IPs in `cometbft testnet` config generator
    ([#5541](https://github.com/cometbft/cometbft/pull/5541))
  * `[abci]` fix(abci): prevent panic on unlock in socket server panic recovery
    ([#5593](https://github.com/cometbft/cometbft/pull/5593))

  ## API-BREAKING

  * `[p2p]` Rename `IPeerSet#List` to `Copy`, add `Random`, `ForEach` methods.
    Rename `PeerSet#List` to `Copy`, add `Random`, `ForEach` methods.
    ([#2246](https://github.com/cometbft/cometbft/pull/2246))
  * `[crypto]` Remove Sr25519 curve
    ([#3646](https://github.com/cometbft/cometbft/pull/3646))
  * `[rpc]` The endpoints `broadcast_tx_*` now return an error when the node is
    performing block sync or state sync.
    ([#785](https://github.com/cometbft/cometbft/issues/785))
</Update>
