Skip to content

Latest commit

 

History

History
330 lines (282 loc) · 17.6 KB

CHANGELOG.md

File metadata and controls

330 lines (282 loc) · 17.6 KB

CHANGELOG

Unreleased

BREAKING CHANGES

  • The TMHOME environment variable was renamed to CMTHOME, and all environment variables starting with TM_ are instead prefixed with CMT_ (#211)
  • [protobuf] Remove fields sender, priority, and mempool_error from ResponseCheckTx. (#260)
  • [mempool] Remove priority mempool. (#260)
  • [config] Remove Version field from MempoolConfig. (#260)
  • Bump minimum Go version to 1.20 (#385)
  • [state] Move pruneBlocks from node/state to state/execution. (#6541)
  • [abci] Move app_hash parameter from Commit to FinalizeBlock (#8664)
  • [abci] Introduce FinalizeBlock which condenses BeginBlock, DeliverTx and EndBlock into a single method call (#9468)
  • [p2p] Remove unused p2p/trust package (#9625)
  • [rpc] Remove global environment and replace with constructor (#9655)
  • [inspect] Add a new inspect command for introspecting the state and block store of a crashed tendermint node. (#9655)
  • [node] Move DBContext and DBProvider from the node package to the config package. (#9655)
  • [metrics] Move state-syncing and block-syncing metrics to their respective packages. Move labels from block_syncing -> blocksync_syncing and state_syncing -> statesync_syncing (#9682)

BUG FIXES

  • [consensus] Fixed a busy loop that happened when sending of a block part failed by sleeping in case of error. (#4)
  • [consensus] Short-term fix for the case when needProofBlock cannot find previous block meta by defaulting to the creation of a new proof block. Special thanks to the Vega.xyz team, and in particular to Zohar (@ze97286), for reporting the problem and working with us to get to a fix. (#386)
  • [kvindexer] Forward porting the fixes done to the kvindexer in 0.37 in PR #77 (#423)
  • [consensus] Unexpected error conditions in ApplyBlock are non-recoverable, so ignoring the error and carrying on is a bug. We replaced a return that disregarded the error by a panic. (#496)
  • [consensus] Rename (*PeerState).ToJSON to MarshalJSON to fix a logging data race (#524)
  • [docker] Ensure Docker image uses consistent version of Go. (#9462)
  • [abci-cli] Fix broken abci-cli help command. (#9717)

FEATURES

  • [config] Introduce BootstrapPeers to the config to allow nodes to list peers to be added to the addressbook upon start up. (#9680)
  • [proxy] Introduce NewUnsyncLocalClientCreator, which allows local ABCI clients to have the same concurrency model as remote clients (i.e. one mutex per client "connection", for each of the four ABCI "connections"). (#9830)

IMPROVEMENTS

  • [e2e] Add functionality for uncoordinated (minor) upgrades (#56)
  • [tools/tm-signer-harness] Remove the folder as it is unused (#136)
  • [blocksync] Generate new metrics during BlockSync (#543)
  • [crypto/merkle] Improve HashAlternatives performance (#6443)
  • [p2p/pex] Improve addrBook.hash performance (#6509)
  • [crypto/merkle] Improve HashAlternatives performance (#6513)
  • [pubsub] Performance improvements for the event query API (#7319)
  • [rpc] Enable caching of RPC responses (#9650)

v0.37.0

March 6, 2023

This is the first CometBFT release with ABCI 1.0, which introduces the PrepareProposal and ProcessProposal methods, with the aim of expanding the range of use cases that application developers can address. This is the first change to ABCI towards ABCI++, and the full range of ABCI++ functionality will only become available in the next major release with ABCI 2.0. See the specification for more details.

In the v0.34.27 release, the CometBFT Go module is still github.com/tendermint/tendermint to facilitate ease of upgrading for users, but in this release we have changed this to github.com/cometbft/cometbft.

Please also see our upgrading guidelines for more details on upgrading from the v0.34 release series.

Also see our QA results for the v0.37 release.

We'd love your feedback on this release! Please reach out to us via one of our communication channels, such as GitHub Discussions, with any of your questions, comments and/or concerns.

See below for more details.

BREAKING CHANGES

  • The TMHOME environment variable was renamed to CMTHOME, and all environment variables starting with TM_ are instead prefixed with CMT_ (#211)
  • [p2p] Reactor Send, TrySend and Receive renamed to SendEnvelope, TrySendEnvelope and ReceiveEnvelope to allow metrics to be appended to messages and measure bytes sent/received. (#230)
  • Bump minimum Go version to 1.20 (#385)
  • [abci] Make length delimiter encoding consistent (uint64) between ABCI and P2P wire-level protocols (#5783)
  • [abci] Change the key and value fields from []byte to string in the EventAttribute type. (#6403)
  • [abci/counter] Delete counter example app (#6684)
  • [abci] Renamed EvidenceType to MisbehaviorType and Evidence to Misbehavior as a more accurate label of their contents. (#8216)
  • [abci] Added cli commands for PrepareProposal and ProcessProposal. (#8656)
  • [abci] Added cli commands for PrepareProposal and ProcessProposal. (#8901)
  • [abci] Renamed LastCommitInfo to CommitInfo in preparation for vote extensions. (#9122)
  • Change spelling from British English to American. Rename Subscription.Cancelled() to Subscription.Canceled() in libs/pubsub (#9144)
  • [abci] Removes unused Response/Request SetOption from ABCI (#9145)
  • [config] Rename the fastsync section and the fast_sync key blocksync and block_sync respectively (#9259)
  • [types] Reduce the use of protobuf types in core logic. ConsensusParams, BlockParams, ValidatorParams, EvidenceParams, VersionParams have become native types. They still utilize protobuf when being sent over the wire or written to disk. Moved ValidateConsensusParams inside (now native type) ConsensusParams, and renamed it to ValidateBasic. (#9287)
  • [abci/params] Deduplicate ConsensusParams and BlockParams so only types proto definitions are use. Remove TimeIotaMs and use a hard-coded 1 millisecond value to ensure monotonically increasing block times. Rename AppVersion to App so as to not stutter. (#9287)
  • [abci] New ABCI methods PrepareProposal and ProcessProposal which give the app control over transactions proposed and allows for verification of proposed blocks. (#9301)

BUG FIXES

  • [consensus] Fixed a busy loop that happened when sending of a block part failed by sleeping in case of error. (#4)
  • [state/kvindexer] Fixed the default behaviour of the kvindexer to index and query attributes by events in which they occur. In 0.34.25 this was mitigated by a separated RPC flag. @jmalicevic (#77)
  • [state/kvindexer] Resolved crashes when event values contained slashes, introduced after adding event sequences in #77. @jmalicevic (#382)
  • [consensus] (#386) Short-term fix for the case when needProofBlock cannot find previous block meta by defaulting to the creation of a new proof block. (@adizere)
    • Special thanks to the Vega.xyz team, and in particular to Zohar (@ze97286), for reporting the problem and working with us to get to a fix.
  • [docker] enable cross platform build using docker buildx (#9073)
  • [consensus] fix round number of enterPropose when handling RoundStepNewRound timeout. (#9229)
  • [docker] ensure Docker image uses consistent version of Go (#9462)
  • [p2p] prevent peers who have errored from being added to peer_set (#9500)
  • [blocksync] handle the case when the sending queue is full: retry block request after a timeout (#9518)

FEATURES

  • [abci] New ABCI methods PrepareProposal and ProcessProposal which give the app control over transactions proposed and allows for verification of proposed blocks. (#9301)

IMPROVEMENTS

  • [e2e] Add functionality for uncoordinated (minor) upgrades (#56)
  • [tools/tm-signer-harness] Remove the folder as it is unused (#136)
  • [p2p] Reactor Send, TrySend and Receive renamed to SendEnvelope, TrySendEnvelope and ReceiveEnvelope to allow metrics to be appended to messages and measure bytes sent/received. (#230)
  • [abci] Added AbciVersion to RequestInfo allowing applications to check ABCI version when connecting to CometBFT. (#5706)
  • [cli] add --hard flag to rollback command (and a boolean to the RollbackState method). This will rollback state and remove the last block. This command can be triggered multiple times. The application must also rollback state to the same height. (#9171)
  • [crypto] Update to use btcec v2 and the latest btcutil. (#9250)
  • [rpc] Added header and header_by_hash queries to the RPC client (#9276)
  • [proto] Migrate from gogo/protobuf to cosmos/gogoproto (#9356)
  • [rpc] Enable caching of RPC responses (#9650)
  • [consensus] Save peer LastCommit correctly to achieve 50% reduction in gossiped precommits. (#9760)

v0.34.27

Feb 27, 2023

This is the first official release of CometBFT - a fork of Tendermint Core. This particular release is intended to be compatible with the Tendermint Core v0.34 release series.

For details as to how to upgrade to CometBFT from Tendermint Core, please see our upgrading guidelines.

If you have any questions, comments, concerns or feedback on this release, we would love to hear from you! Please contact us via GitHub Discussions, Discord (in the #cometbft channel) or Telegram.

Special thanks to @wcsiu, @ze97286, @faddat and @JayT106 for their contributions to this release!

BREAKING CHANGES

  • Rename binary to cometbft and Docker image to cometbft/cometbft (#152)
  • The TMHOME environment variable was renamed to CMTHOME, and all environment variables starting with TM_ are instead prefixed with CMT_ (#211)
  • Use Go 1.19 to build CometBFT, since Go 1.18 has reached end-of-life. (#360)

BUG FIXES

  • [consensus] Fixed a busy loop that happened when sending of a block part failed by sleeping in case of error. (#4)
  • [state/kvindexer] Resolved crashes when event values contained slashes, introduced after adding event sequences. (#383: @jmalicevic)
  • [consensus] Short-term fix for the case when needProofBlock cannot find previous block meta by defaulting to the creation of a new proof block. (#386: @adizere)
    • Special thanks to the Vega.xyz team, and in particular to Zohar (@ze97286), for reporting the problem and working with us to get to a fix.
  • [p2p] Correctly use non-blocking TrySendEnvelope method when attempting to send messages, as opposed to the blocking SendEnvelope method. It is unclear whether this has a meaningful impact on P2P performance, but this patch does correct the underlying behaviour to what it should be (tendermint/tendermint#9936)

DEPENDENCIES

FEATURES

  • [rpc] Add match_event query parameter to indicate to the RPC that it should match events within attributes, not only within a height (tendermint/tendermint#9759)

IMPROVEMENTS

  • [e2e] Add functionality for uncoordinated (minor) upgrades (#56)
  • [tools/tm-signer-harness] Remove the folder as it is unused (#136)
  • Append the commit hash to the version of CometBFT being built (#204)
  • [mempool/v1] Suppress "rejected bad transaction" in priority mempool logs by reducing log level from info to debug (#314: @JayT106)
  • [consensus] Add consensus_block_gossip_parts_received and consensus_step_duration_seconds metrics in order to aid in investigating the impact of database compaction on consensus performance (tendermint/tendermint#9733)
  • [state/kvindexer] Add match.event keyword to support condition evaluation based on the event the attributes belong to (tendermint/tendermint#9759)
  • [p2p] Reduce log spam through reducing log level of "Dialing peer" and "Added peer" messages from info to debug (tendermint/tendermint#9764: @faddat)
  • [consensus] Reduce bandwidth consumption of consensus votes by roughly 50% through fixing a small logic bug (tendermint/tendermint#9776)

CometBFT is a fork of Tendermint Core as of late December 2022.

Bug bounty

Friendly reminder, we have a bug bounty program.

Previous changes

For changes released before the creation of CometBFT, please refer to the Tendermint Core CHANGELOG.md.