IMPROVEMENTS
- Adds metrics that emit precommit data; precommit quorum delay from proposal, and precommit vote count and stake weight within timeout commit period.
BUG FIXES
- (metrics) Call unused
rejected_txsmetric in mempool - (state/indexer) Fix the tx_search results not returning all results by changing the logic in the indexer to copy the key and values instead of reusing an iterator. This issue only arises when upgrading to cometbft-db v0.13 or later.
DEPENDENCIES
- (go/runtime) Bump Go version to 1.22
- Bump cometbft-db version to v0.14.1
FEATURES
- #4294 (crypto) use decred secp256k1 directly ()
IMPROVEMENTS
- (metrics) Add
evicted_txsmetric to mempool - (log) Change “mempool is full” log to debug level
BUG FIXES
- (light) Cross-check proposer priorities in retrieved validator sets
- (privval) Ignore duplicate privval listen when already connected (#3828
DEPENDENCIES
- (crypto/secp256k1) Adjust to breaking interface changes in
- pinned mockery’s version to v2.49.2 to prevent potential
IMPROVEMENTS
- (types) Check that proposer is one of the validators in
ValidateBasic - (e2e) Add
log_leveloption to manifest file - (e2e) Add
log_formatoption to manifest file
BUG FIXES
- (p2p) Node respects configured
max_num_outbound_peerslimit when dialing - (rpc) Fix an issue where a legacy ABCI response, created on
v0.37or before, is not returned properly inv0.38and up - (blocksync) Do not stay in blocksync if the node’s validator voting power
IMPROVEMENTS
- (p2p/conn) Update send monitor, used for sending rate limiting, once per batch of packets sent
- (libs/pubsub) Allow dash (
-) in event tags - (p2p/conn) Remove the usage of a synchronous pool of buffers in secret connection, storing instead the buffer in the connection struct. This reduces the synchronization primitive usage, speeding up the code.
BREAKING CHANGES
- (mempool) Add to the
Mempoolinterface a new methodPreUpdate(). This method should be
BUG FIXES
- (blockstore) Added peer banning in blockstore
- (blockstore) Send correct error message when vote extensions do not align with received packet
- [
mempool] Fix data race when rechecking with async ABCI client - (consensus) Fix a race condition in the consensus timeout ticker. Race is caused by two timeouts being scheduled at the same time.
- (types) Do not batch verify a commit if the validator set keys have different
IMPROVEMENTS
- (config) Added
recheck_timeoutmempool parameter to set how much time to wait for recheck - (rpc) Add a configurable maximum batch size for RPC requests.
- (event-bus) Remove the debug logs in PublishEventTx, which were noticed production slowdowns.
- (state/execution) Cache the block hash computation inside of the Block Type, so we only compute it once.
- (consensus/state) Remove a redundant
VerifyBlockcall inFinalizeCommit - (p2p/channel) Speedup
ProtoIOwriter creation time, and thereby speedup channel writing by 5%. - (p2p/conn) Minor speedup (3%) to connection.WritePacketMsgTo, by removing MinInt calls.
- (internal/bits) 10x speedup creating initialized bitArrays, which speedsup extendedCommit.BitArray(). This is used in consensus vote gossip.
- (blockstore) Remove a redundant
Header.ValidateBasiccall inLoadBlockMeta, 75% reducing this time. - (p2p/conn) Speedup connection.WritePacketMsgTo, by reusing internal buffers rather than re-allocating.
- [
blockstore] Use LRU caches in blockstore, significiantly improving consensus gossip routine performance - [
consensus] Improve performance of consensus metrics by lowering string operations - [
protoio] Remove one allocation and new object call fromReadMsg, - (mempool) Before updating the mempool, consider it as full if rechecking is still in progress.
BUG FIXES
- [
mempool] Panic when a CheckTx request to the app returns an error - [
bits] preventBitArray.UnmarshalJSONfrom crashing on 0 bits
FEATURES
- [
node] AddBootstrapStateWithGenProviderto boostrap state using a custom
IMPROVEMENTS
- (state/indexer) Lower the heap allocation of transaction searches
- (internal/bits) 10x speedup and remove heap overhead of bitArray.PickRandom (used extensively in consensus gossip)
- (libs/json) Lower the memory overhead of JSON encoding by using JSON encoders internally
BUG FIXES
- (privval) Retry accepting a connection (#2047)
- (state) Fix rollback to a specific height
FEATURES
- (e2e) Add
block_max_bytesoption to the manifest file.
IMPROVEMENTS
- (blocksync) Avoid double-calling
types.BlockFromProtofor performance - (e2e) Add manifest option
load_max_txsto limit the number of transactions generated by the - #2434 (jsonrpc) enable HTTP basic auth in websocket client ()
- (blocksync) make the max number of downloaded blocks dynamic.
- (blocksync) Request a block from peer B if we are approaching pool’s height
- (blocksync) Request the block N from peer B immediately after getting
- (blocksync) Sort peers by download rate (the fastest peer is picked first)
IMPROVEMENTS
- (consensus) Add
chain_size_bytesmetric for measuring the size of the blockchain in bytes
BUG FIXES
- (consensus) Fix for “Validation of
VoteExtensionsEnableHeightcan cause chain halt” - (mempool) Fix data races in
CListMempoolby making atomic the types ofheight,txsBytes, and - (mempool) The calculation method of tx size returned by calling proxyapp should be consistent with that of mempool
- (evidence) When
VerifyCommitLight&VerifyCommitLightTrustingare called as part - (crypto)
SupportsBatchVerifierreturns false - (blocksync) wait for
poolRoutineto stop in(*Reactor).OnStop
IMPROVEMENTS
- (types) Validate
Validator#AddressinValidateBasic(#1715) - (abci) Increase ABCI socket message size limit to 2GB (#1730: @troykessler)
- (state) Save the state using a single DB batch (#1735)
- (store) Save block using a single DB batch if block is less than 640kB, otherwise each block part is saved individually
- (rpc) Support setting proxy from env to
DefaultHttpClient. - (rpc) Use default port for HTTP(S) URLs when there is no explicit port (#1903)
- #1921 (crypto/merkle) faster calculation of hashes ()
BUG FIXES
- (state/indexer) Respect both height params while querying for events
FEATURES
- (metrics) Add metric for mempool size in bytes
SizeBytes.
IMPROVEMENTS
- (mempool) Add experimental feature to limit the number of persistent peers and non-persistent
- (config) Add mempool parameters
experimental_max_gossip_connections_to_persistent_peersand
BREAKING CHANGES
- (mempool) Remove priority mempool.
- (config) Remove
Versionfield fromMempoolConfig. - (protobuf) Remove fields
sender,priority, andmempool_errorfrom - (crypto/merkle) Do not allow verification of Merkle Proofs against empty trees (
nilroot).Proof.ComputeRootHashnow panics when it encounters an error, butProof.Verifydoes not panic - (state/kvindexer) Remove the function type from the event key stored in the database. This should be breaking only
- (rpc) Removed
begin_block_eventsandend_block_eventsfromBlockResultsResponse. - (pubsub) Added support for big integers and big floats in the pubsub event query system.
- (kvindexer) Added support for big integers and big floats in the kvindexer.
- (mempool) Application can now set
ConsensusParams.Block.MaxBytesto -1 - (node/state) Add Go API to bootstrap block store and state store to a height. Make sure block sync starts syncing from bootstrapped height.
- (state/store) Added Go functions to save height at which offline state sync is performed.
- (p2p) Remove UPnP functionality
- (node) Removed
ConsensusState()accessor fromNode - (state) Signature of
ExtendVotechanged inBlockExecutor. - (state) Move pruneBlocks from node/state to state/execution.
- (abci) Move
app_hashparameter fromCommittoFinalizeBlock - (abci) Introduce
FinalizeBlockwhich condensesBeginBlock,DeliverTx - (p2p) Remove unused p2p/trust package
- (rpc) Remove global environment and replace with constructor
- (node) Move DBContext and DBProvider from the node package to the config
- (inspect) Add a new
inspectcommand for introspecting - (metrics) Move state-syncing and block-syncing metrics to
BUG FIXES
- (kvindexer) Forward porting the fixes done to the kvindexer in 0.37 in PR #77
- (consensus) Unexpected error conditions in
ApplyBlockare non-recoverable, so ignoring the error and carrying on is a bug. We replaced areturnthat disregarded the error by apanic. - (consensus) Rename
(*PeerState).ToJSONtoMarshalJSONto fix a logging data race - (light) Fixed an edge case where a light client would panic when attempting
- and* keep the node in its list of providers in the same way it would if
- (abci) Restore the snake_case naming in JSON serialization of
- (consensus) Avoid recursive call after rename to (*PeerState).MarshalJSON
- (mempool/clist_mempool) Prevent a transaction to appear twice in the mempool
- (docker) Ensure Docker image uses consistent version of Go.
- (abci-cli) Fix broken abci-cli help command.
DEPRECATIONS
- (rpc/grpc) Mark the gRPC broadcast API as deprecated.
FEATURES
- (node/state) Add Go API to bootstrap block store and state store to a height
- (proxy) Introduce
NewConnSyncLocalClientCreator, which allows local ABCI - (proxy) Introduce
NewUnsyncLocalClientCreator, which allows local ABCI - (abci) New ABCI methods
VerifyVoteExtensionandExtendVoteallow validators to validate the vote extension data attached to a pre-commit message and allow applications to let their validators do more than just validate within consensus (#9836)
IMPROVEMENTS
- (blocksync) Generate new metrics during BlockSync
- (jsonrpc/client) Improve the error message for client errors stemming from
- (rpc) Remove response data from response failure logs in order
- (pubsub/kvindexer) Numeric query conditions and event values are represented as big floats with default precision of 125.
- (node) Make handshake cancelable (cometbft/cometbft#857)
- (consensus) New metrics (counters) to track duplicate votes and block parts.
- (mempool) Application can now set
ConsensusParams.Block.MaxBytesto -1 - (node) Close evidence.db OnStop (cometbft/cometbft#1210: @chillyvee)
- (state) Make logging
block_app_hashandapp_hashconsistent by logging them both as hex. - (crypto/merkle) Improve HashAlternatives performance
- (p2p/pex) Improve addrBook.hash performance
- (crypto/merkle) Improve HashAlternatives performance
- (pubsub) Performance improvements for the event query API