github.com/ari-anchor/sei-tendermint@v0.0.0-20230519144642-dc826b7b56bb/CHANGELOG.md (about)

     1  # Changelog
     2  
     3  Friendly reminder: We have a [bug bounty program](https://hackerone.com/cosmos).
     4  
     5  ## v0.35.5
     6  
     7  May 26, 2022
     8  
     9  ### BUG FIXES
    10  
    11  - [p2p] [\#8371](https://github.com/tendermint/tendermint/pull/8371) fix setting in con-tracker (backport #8370) (@tychoish)
    12  - [blocksync] [\#8496](https://github.com/tendermint/tendermint/pull/8496) validate block against state before persisting it to disk (@cmwaters)
    13  - [statesync] [\#8494](https://github.com/tendermint/tendermint/pull/8494) avoid potential race (@tychoish)
    14  - [keymigrate] [\#8467](https://github.com/tendermint/tendermint/pull/8467) improve filtering for legacy transaction hashes (backport #8466) (@creachadair)
    15  - [rpc] [\#8594](https://github.com/tendermint/tendermint/pull/8594) fix encoding of block_results responses (@creachadair)
    16  
    17  ## v0.35.4
    18  
    19  April 18, 2022
    20  
    21  Special thanks to external contributors on this release: @firelizzard18
    22  
    23  ### FEATURES
    24  
    25  - [cli] [\#8300](https://github.com/tendermint/tendermint/pull/8300) Add a tool to update old config files to the latest version [backport [\#8281](https://github.com/tendermint/tendermint/pull/8281)]. (@creachadair)
    26  
    27  ### IMPROVEMENTS
    28  
    29  ### BUG FIXES
    30  
    31  - [cli] [\#8294](https://github.com/tendermint/tendermint/pull/8294) keymigrate: ensure block hash keys are correctly translated. (@creachadair)
    32  - [cli] [\#8352](https://github.com/tendermint/tendermint/pull/8352) keymigrate: ensure transaction hash keys are correctly translated. (@creachadair)
    33  
    34  ## v0.35.3
    35  
    36  April 8, 2022
    37  
    38  ### FEATURES
    39  
    40  - [cli] [\#8081](https://github.com/tendermint/tendermint/pull/8081) add a safer-to-use `reset-state` command. (@marbar3778)
    41  
    42  ### IMPROVEMENTS
    43  
    44  - [consensus] [\#8138](https://github.com/tendermint/tendermint/pull/8138) change lock handling in reactor and handleMsg for RoundState. (@williambanfield)
    45  
    46  ### BUG FIXES
    47  
    48  - [cli] [\#8276](https://github.com/tendermint/tendermint/pull/8276) scmigrate: ensure target key is correctly renamed. (@creachadair)
    49  
    50  ## v0.35.2
    51  
    52  February 28, 2022
    53  
    54  Special thanks to external contributors on this release: @ashcherbakov, @yihuang, @waelsy123
    55  
    56  ### IMPROVEMENTS
    57  
    58  - [consensus] [\#7875](https://github.com/tendermint/tendermint/pull/7875) additional timing metrics. (@williambanfield)
    59  
    60  ### BUG FIXES
    61  
    62  - [abci] [\#7990](https://github.com/tendermint/tendermint/pull/7990) revert buffer limit change. (@williambanfield)
    63  - [cli] [#7837](https://github.com/tendermint/tendermint/pull/7837) fix app hash in state rollback. (@yihuang)
    64  - [cli] [\#7869](https://github.com/tendermint/tendermint/pull/7869) Update unsafe-reset-all command to match release v35. (waelsy123)
    65  - [light] [\#7640](https://github.com/tendermint/tendermint/pull/7640) Light Client: fix absence proof verification (@ashcherbakov)
    66  - [light] [\#7641](https://github.com/tendermint/tendermint/pull/7641) Light Client: fix querying against the latest height (@ashcherbakov)
    67  - [mempool] [\#7718](https://github.com/tendermint/tendermint/pull/7718) return duplicate tx errors more consistently. (@tychoish)
    68  - [rpc] [\#7744](https://github.com/tendermint/tendermint/pull/7744) fix layout of endpoint list. (@creachadair)
    69  - [statesync] [\#7886](https://github.com/tendermint/tendermint/pull/7886) assert app version matches. (@cmwaters)
    70  
    71  ## v0.35.1
    72  
    73  January 26, 2022
    74  
    75  Special thanks to external contributors on this release: @altergui, @odeke-em,
    76  @thanethomson
    77  
    78  ### BREAKING CHANGES
    79  
    80  - CLI/RPC/Config
    81  
    82    - [config] [\#7276](https://github.com/tendermint/tendermint/pull/7276) rpc: Add experimental config params to allow for subscription buffer size control (@thanethomson).
    83  
    84  - P2P Protocol
    85  
    86    - [p2p] [\#7265](https://github.com/tendermint/tendermint/pull/7265) Peer manager reduces peer score for each failed dial attempts for peers that have not successfully dialed. (@tychoish)
    87    - [p2p] [\#7594](https://github.com/tendermint/tendermint/pull/7594) always advertise self, to enable mutual address discovery. (@altergui)
    88  
    89  ### FEATURES
    90  
    91  - [rpc] [\#7270](https://github.com/tendermint/tendermint/pull/7270) Add `header` and `header_by_hash` RPC Client queries. (@fedekunze) (@cmwaters)
    92  
    93  ### IMPROVEMENTS
    94  
    95  - [internal/protoio] [\#7325](https://github.com/tendermint/tendermint/pull/7325) Optimized `MarshalDelimited` by inlining the common case and using a `sync.Pool` in the worst case. (@odeke-em)
    96  - [\#7338](https://github.com/tendermint/tendermint/pull/7338) pubsub: Performance improvements for the event query API (backport of #7319) (@creachadair)
    97  - [\#7252](https://github.com/tendermint/tendermint/pull/7252) Add basic metrics to the indexer package. (@creachadair)
    98  - [\#7338](https://github.com/tendermint/tendermint/pull/7338) Performance improvements for the event query API. (@creachadair)
    99  
   100  ### BUG FIXES
   101  
   102  - [\#7310](https://github.com/tendermint/tendermint/issues/7310) pubsub: Report a non-nil error when shutting down (fixes #7306).
   103  - [\#7355](https://github.com/tendermint/tendermint/pull/7355) Fix incorrect tests using the PSQL sink. (@creachadair)
   104  - [\#7683](https://github.com/tendermint/tendermint/pull/7683) rpc: check error code for broadcast_tx_commit. (@tychoish)
   105  
   106  ## v0.35.0
   107  
   108  November 4, 2021
   109  
   110  Special thanks to external contributors on this release: @JayT106,
   111  @bipulprasad, @alessio, @Yawning, @silasdavis, @cuonglm, @tanyabouman,
   112  @JoeKash, @githubsands, @jeebster, @crypto-facs, @liamsi, and @gotjoshua
   113  
   114  ### FEATURES
   115  
   116  - [cli] [#7033](https://github.com/tendermint/tendermint/pull/7033) Add a `rollback` command to rollback to the previous tendermint state in the event of an incorrect app hash. (@cmwaters)
   117  - [config] [\#7174](https://github.com/tendermint/tendermint/pull/7174) expose ability to write config to arbitrary paths. (@tychoish)
   118  - [mempool, rpc] [\#7065](https://github.com/tendermint/tendermint/pull/7065) add removetx rpc method (backport of #7047) (@tychoish).
   119  - [\#6982](https://github.com/tendermint/tendermint/pull/6982) tendermint binary has built-in suppport for running the e2e application (with state sync support) (@cmwaters).
   120  - [config] Add `--mode` flag and config variable. See [ADR-52](https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-052-tendermint-mode.md) @dongsam
   121  - [rpc] [\#6329](https://github.com/tendermint/tendermint/pull/6329) Don't cap page size in unsafe mode (@gotjoshua, @cmwaters)
   122  - [pex] [\#6305](https://github.com/tendermint/tendermint/pull/6305) v2 pex reactor with backwards compatability. Introduces two new pex messages to
   123    accomodate for the new p2p stack. Removes the notion of seeds and crawling. All peer
   124    exchange reactors behave the same. (@cmwaters)
   125  - [crypto] [\#6376](https://github.com/tendermint/tendermint/pull/6376) Enable sr25519 as a validator key type
   126  - [mempool] [\#6466](https://github.com/tendermint/tendermint/pull/6466) Introduction of a prioritized mempool. (@alexanderbez)
   127    - `Priority` and `Sender` have been introduced into the `ResponseCheckTx` type, where the `priority` will determine the prioritization of
   128    the transaction when a proposer reaps transactions for a block proposal. The `sender` field acts as an index.
   129    - Operators may toggle between the legacy mempool reactor, `v0`, and the new prioritized reactor, `v1`, by setting the
   130    `mempool.version` configuration, where `v1` is the default configuration.
   131    - Applications that do not specify a priority, i.e. zero, will have transactions reaped by the order in which they are received by the node.
   132    - Transactions are gossiped in FIFO order as they are in `v0`.
   133  - [config/indexer] [\#6411](https://github.com/tendermint/tendermint/pull/6411) Introduce support for custom event indexing data sources, specifically PostgreSQL. (@JayT106)
   134  - [blocksync/event] [\#6619](https://github.com/tendermint/tendermint/pull/6619) Emit blocksync status event when switching consensus/blocksync (@JayT106)
   135  - [statesync/event] [\#6700](https://github.com/tendermint/tendermint/pull/6700) Emit statesync status start/end event (@JayT106)
   136  - [inspect] [\#6785](https://github.com/tendermint/tendermint/pull/6785) Add a new `inspect` command for introspecting the state and block store of a crashed tendermint node. (@williambanfield)
   137  
   138  ### BUG FIXES
   139  
   140  - [\#7106](https://github.com/tendermint/tendermint/pull/7106) Revert mutex change to ABCI Clients (@tychoish).
   141  - [\#7142](https://github.com/tendermint/tendermint/pull/7142) mempool: remove panic when recheck-tx was not sent to ABCI application (@williambanfield).
   142  - [consensus]: [\#7060](https://github.com/tendermint/tendermint/pull/7060) <!-- markdown-link-check-disable-line -->
   143    wait until peerUpdates channel is closed to close remaining peers (@williambanfield)
   144  - [privval] [\#5638](https://github.com/tendermint/tendermint/pull/5638) Increase read/write timeout to 5s and calculate ping interval based on it (@JoeKash)
   145  - [evidence] [\#6375](https://github.com/tendermint/tendermint/pull/6375) Fix bug with inconsistent LightClientAttackEvidence hashing (cmwaters)
   146  - [rpc] [\#6507](https://github.com/tendermint/tendermint/pull/6507) Ensure RPC client can handle URLs without ports (@JayT106)
   147  - [statesync] [\#6463](https://github.com/tendermint/tendermint/pull/6463) Adds Reverse Sync feature to fetch historical light blocks after state sync in order to verify any evidence (@cmwaters)
   148  - [blocksync] [\#6590](https://github.com/tendermint/tendermint/pull/6590) Update the metrics during blocksync (@JayT106)
   149  
   150  ### BREAKING CHANGES
   151  
   152  - Go API
   153  
   154    - [crypto/armor]: [\#6963](https://github.com/tendermint/tendermint/pull/6963) remove package which is unused, and based on
   155      deprecated fundamentals. Downstream users should maintain this
   156      library. (@tychoish)
   157    - [state] [store] [proxy] [rpc/core]: [\#6937](https://github.com/tendermint/tendermint/pull/6937) move packages to
   158      `internal` to prevent consumption of these internal APIs by
   159      external users. (@tychoish)
   160    - [pubsub] [\#6634](https://github.com/tendermint/tendermint/pull/6634) The `Query#Matches` method along with other pubsub methods, now accepts a `[]abci.Event` instead of `map[string][]string`. (@alexanderbez)
   161    - [p2p] [\#6618](https://github.com/tendermint/tendermint/pull/6618) [\#6583](https://github.com/tendermint/tendermint/pull/6583) Move `p2p.NodeInfo`, `p2p.NodeID` and `p2p.NetAddress` into `types` to support use in external packages. (@tychoish)
   162    - [node] [\#6540](https://github.com/tendermint/tendermint/pull/6540) Reduce surface area of the `node` package by making most of the implementation details private. (@tychoish)
   163    - [p2p] [\#6547](https://github.com/tendermint/tendermint/pull/6547) Move the entire `p2p` package and all reactor implementations into `internal`.  (@tychoish)
   164    - [libs/log] [\#6534](https://github.com/tendermint/tendermint/pull/6534) Remove the existing custom Tendermint logger backed by go-kit. The logging interface, `Logger`, remains. Tendermint still provides a default logger backed by the performant zerolog logger. (@alexanderbez)
   165    - [libs/time] [\#6495](https://github.com/tendermint/tendermint/pull/6495) Move types/time to libs/time to improve consistency. (@tychoish)
   166    - [mempool] [\#6529](https://github.com/tendermint/tendermint/pull/6529) The `Context` field has been removed from the `TxInfo` type. `CheckTx` now requires a `Context` argument. (@alexanderbez)
   167    - [abci/client, proxy] [\#5673](https://github.com/tendermint/tendermint/pull/5673) `Async` funcs return an error, `Sync` and `Async` funcs accept `context.Context` (@melekes)
   168    - [p2p] Remove unused function `MakePoWTarget`. (@erikgrinaker)
   169    - [libs/bits] [\#5720](https://github.com/tendermint/tendermint/pull/5720) Validate `BitArray` in `FromProto`, which now returns an error (@melekes)
   170    - [proto/p2p] Rename `DefaultNodeInfo` and `DefaultNodeInfoOther` to `NodeInfo` and `NodeInfoOther` (@erikgrinaker)
   171    - [proto/p2p] Rename `NodeInfo.default_node_id` to `node_id` (@erikgrinaker)
   172    - [libs/os] Kill() and {Must,}{Read,Write}File() functions have been removed. (@alessio)
   173    - [store] [\#5848](https://github.com/tendermint/tendermint/pull/5848) Remove block store state in favor of using the db iterators directly (@cmwaters)
   174    - [state] [\#5864](https://github.com/tendermint/tendermint/pull/5864) Use an iterator when pruning state (@cmwaters)
   175    - [types] [\#6023](https://github.com/tendermint/tendermint/pull/6023) Remove `tm2pb.Header`, `tm2pb.BlockID`, `tm2pb.PartSetHeader` and `tm2pb.NewValidatorUpdate`.
   176  	- Each of the above types has a `ToProto` and `FromProto` method or function which replaced this logic.
   177    - [light] [\#6054](https://github.com/tendermint/tendermint/pull/6054) Move `MaxRetryAttempt` option from client to provider.
   178  	- `NewWithOptions` now sets the max retry attempts and timeouts (@cmwaters)
   179    - [all] [\#6077](https://github.com/tendermint/tendermint/pull/6077) Change spelling from British English to American (@cmwaters)
   180  	- Rename "Subscription.Cancelled()" to "Subscription.Canceled()" in libs/pubsub
   181  	- Rename "behaviour" pkg to "behavior" and internalized it in blocksync v2
   182    - [rpc/client/http] [\#6176](https://github.com/tendermint/tendermint/pull/6176) Remove `endpoint` arg from `New`, `NewWithTimeout` and `NewWithClient` (@melekes)
   183    - [rpc/client/http] [\#6176](https://github.com/tendermint/tendermint/pull/6176) Unexpose `WSEvents` (@melekes)
   184    - [rpc/jsonrpc/client/ws_client] [\#6176](https://github.com/tendermint/tendermint/pull/6176) `NewWS` no longer accepts options (use `NewWSWithOptions` and `OnReconnect` funcs to configure the client) (@melekes)
   185    - [internal/libs] [\#6366](https://github.com/tendermint/tendermint/pull/6366) Move `autofile`, `clist`,`fail`,`flowrate`, `protoio`, `sync`, `tempfile`, `test` and `timer` lib packages to an internal folder
   186    - [libs/rand] [\#6364](https://github.com/tendermint/tendermint/pull/6364) Remove most of libs/rand in favour of standard lib's `math/rand` (@liamsi)
   187    - [mempool] [\#6466](https://github.com/tendermint/tendermint/pull/6466) The original mempool reactor has been versioned as `v0` and moved to a sub-package under the root `mempool` package.
   188  	Some core types have been kept in the `mempool` package such as `TxCache` and it's implementations, the `Mempool` interface itself
   189  	and `TxInfo`. (@alexanderbez)
   190    - [crypto/sr25519] [\#6526](https://github.com/tendermint/tendermint/pull/6526) Do not re-execute the Ed25519-style key derivation step when doing signing and verification.  The derivation is now done once and only once.  This breaks `sr25519.GenPrivKeyFromSecret` output compatibility. (@Yawning)
   191    - [types] [\#6627](https://github.com/tendermint/tendermint/pull/6627) Move `NodeKey` to types to make the type public.
   192    - [config] [\#6627](https://github.com/tendermint/tendermint/pull/6627) Extend `config` to contain methods `LoadNodeKeyID` and `LoadorGenNodeKeyID`
   193    - [blocksync] [\#6755](https://github.com/tendermint/tendermint/pull/6755) Rename `FastSync` and `Blockchain` package to `BlockSync` (@cmwaters)
   194  
   195  - CLI/RPC/Config
   196  
   197    - [pubsub/events] [\#6634](https://github.com/tendermint/tendermint/pull/6634) The `ResultEvent.Events` field is now of type `[]abci.Event` preserving event order instead of `map[string][]string`. (@alexanderbez)
   198    - [config] [\#5598](https://github.com/tendermint/tendermint/pull/5598) The `test_fuzz` and `test_fuzz_config` P2P settings have been removed. (@erikgrinaker)
   199    - [config] [\#5728](https://github.com/tendermint/tendermint/pull/5728) `fastsync.version = "v1"` is no longer supported (@melekes)
   200    - [cli] [\#5772](https://github.com/tendermint/tendermint/pull/5772) `gen_node_key` prints JSON-encoded `NodeKey` rather than ID and does not save it to `node_key.json` (@melekes)
   201    - [cli] [\#5777](https://github.com/tendermint/tendermint/pull/5777) use hyphen-case instead of snake_case for all cli commands and config parameters (@cmwaters)
   202    - [rpc] [\#6019](https://github.com/tendermint/tendermint/pull/6019) standardise RPC errors and return the correct status code (@bipulprasad & @cmwaters)
   203    - [rpc] [\#6168](https://github.com/tendermint/tendermint/pull/6168) Change default sorting to desc for `/tx_search` results (@melekes)
   204    - [cli] [\#6282](https://github.com/tendermint/tendermint/pull/6282) User must specify the node mode when using `tendermint init` (@cmwaters)
   205    - [state/indexer] [\#6382](https://github.com/tendermint/tendermint/pull/6382) reconstruct indexer, move txindex into the indexer package (@JayT106)
   206    - [cli] [\#6372](https://github.com/tendermint/tendermint/pull/6372) Introduce `BootstrapPeers` as part of the new p2p stack. Peers to be connected on  startup (@cmwaters)
   207    - [config] [\#6462](https://github.com/tendermint/tendermint/pull/6462) Move `PrivValidator` configuration out of `BaseConfig` into its own section. (@tychoish)
   208    - [rpc] [\#6610](https://github.com/tendermint/tendermint/pull/6610) Add MaxPeerBlockHeight into /status rpc call (@JayT106)
   209    - [blocksync/rpc] [\#6620](https://github.com/tendermint/tendermint/pull/6620) Add TotalSyncedTime & RemainingTime to SyncInfo in /status RPC  (@JayT106)
   210    - [rpc/grpc] [\#6725](https://github.com/tendermint/tendermint/pull/6725) Mark gRPC in the RPC layer as deprecated.
   211    - [blocksync/v2] [\#6730](https://github.com/tendermint/tendermint/pull/6730) Fast Sync v2 is deprecated, please use v0
   212    - [rpc] Add genesis_chunked method to support paginated and parallel fetching of large genesis documents.
   213    - [rpc/jsonrpc/server] [\#6785](https://github.com/tendermint/tendermint/pull/6785) `Listen` function updated to take an `int` argument, `maxOpenConnections`, instead of an entire config object. (@williambanfield)
   214    - [rpc] [\#6820](https://github.com/tendermint/tendermint/pull/6820) Update RPC methods to reflect changes in the p2p layer, disabling support for `UnsafeDialPeers` and `UnsafeDialPeers` when used with the new p2p layer, and changing the response format of the peer list in `NetInfo` for all users.
   215    - [cli] [\#6854](https://github.com/tendermint/tendermint/pull/6854) Remove deprecated snake case commands. (@tychoish)
   216    - [tools] [\#6498](https://github.com/tendermint/tendermint/pull/6498) Set OS home dir to instead of the hardcoded PATH. (@JayT106)
   217    - [cli/indexer] [\#6676](https://github.com/tendermint/tendermint/pull/6676) Reindex events command line tooling. (@JayT106)
   218  
   219  - Apps
   220  
   221    - [ABCI] [\#6408](https://github.com/tendermint/tendermint/pull/6408) Change the `key` and `value` fields from `[]byte` to `string` in the `EventAttribute` type. (@alexanderbez)
   222    - [ABCI] [\#5447](https://github.com/tendermint/tendermint/pull/5447) Remove `SetOption` method from `ABCI.Client` interface
   223    - [ABCI] [\#5447](https://github.com/tendermint/tendermint/pull/5447) Reset `Oneof` indexes for  `Request` and `Response`.
   224    - [ABCI] [\#5818](https://github.com/tendermint/tendermint/pull/5818) Use protoio for msg length delimitation. Migrates from int64 to uint64 length delimiters.
   225    - [ABCI] [\#3546](https://github.com/tendermint/tendermint/pull/3546) Add `mempool_error` field to `ResponseCheckTx`. This field will contain an error string if Tendermint encountered an error while adding a transaction to the mempool. (@williambanfield)
   226    - [Version] [\#6494](https://github.com/tendermint/tendermint/pull/6494) `TMCoreSemVer` has been renamed to `TMVersion`.
   227  	- It is not required any longer to set ldflags to set version strings
   228    - [abci/counter] [\#6684](https://github.com/tendermint/tendermint/pull/6684) Delete counter example app
   229  
   230  - Data Storage
   231    - [store/state/evidence/light] [\#5771](https://github.com/tendermint/tendermint/pull/5771) Use an order-preserving varint key encoding (@cmwaters)
   232    - [mempool] [\#6396](https://github.com/tendermint/tendermint/pull/6396) Remove mempool's write ahead log (WAL), (previously unused by the tendermint code). (@tychoish)
   233    - [state] [\#6541](https://github.com/tendermint/tendermint/pull/6541) Move pruneBlocks from consensus/state to state/execution. (@JayT106)
   234  
   235  ### IMPROVEMENTS
   236  
   237  - [libs/log] Console log formatting changes as a result of [\#6534](https://github.com/tendermint/tendermint/pull/6534) and [\#6589](https://github.com/tendermint/tendermint/pull/6589). (@tychoish)
   238  - [statesync] [\#6566](https://github.com/tendermint/tendermint/pull/6566) Allow state sync fetchers and request timeout to be configurable. (@alexanderbez)
   239  - [types] [\#6478](https://github.com/tendermint/tendermint/pull/6478) Add `block_id` to `newblock` event (@jeebster)
   240  - [crypto/ed25519] [\#5632](https://github.com/tendermint/tendermint/pull/5632) Adopt zip215 `ed25519` verification. (@marbar3778)
   241  - [crypto/ed25519] [\#6526](https://github.com/tendermint/tendermint/pull/6526) Use [curve25519-voi](https://github.com/oasisprotocol/curve25519-voi) for `ed25519` signing and verification. (@Yawning)
   242  - [crypto/sr25519] [\#6526](https://github.com/tendermint/tendermint/pull/6526) Use [curve25519-voi](https://github.com/oasisprotocol/curve25519-voi) for `sr25519` signing and verification. (@Yawning)
   243  - [privval] [\#5603](https://github.com/tendermint/tendermint/pull/5603) Add `--key` to `init`, `gen_validator`, `testnet` & `unsafe_reset_priv_validator` for use in generating `secp256k1` keys.
   244  - [privval] [\#5725](https://github.com/tendermint/tendermint/pull/5725) Add gRPC support to private validator.
   245  - [privval] [\#5876](https://github.com/tendermint/tendermint/pull/5876) `tendermint show-validator` will query the remote signer if gRPC is being used (@marbar3778)
   246  - [abci/client] [\#5673](https://github.com/tendermint/tendermint/pull/5673) `Async` requests return an error if queue is full (@melekes)
   247  - [mempool] [\#5673](https://github.com/tendermint/tendermint/pull/5673) Cancel `CheckTx` requests if RPC client disconnects or times out (@melekes)
   248  - [abci] [\#5706](https://github.com/tendermint/tendermint/pull/5706) Added `AbciVersion` to `RequestInfo` allowing applications to check ABCI version when connecting to Tendermint. (@marbar3778)
   249  - [blocksync/v1] [\#5728](https://github.com/tendermint/tendermint/pull/5728) Remove blocksync v1 (@melekes)
   250  - [blocksync/v0] [\#5741](https://github.com/tendermint/tendermint/pull/5741) Relax termination conditions and increase sync timeout (@melekes)
   251  - [cli] [\#5772](https://github.com/tendermint/tendermint/pull/5772) `gen_node_key` output now contains node ID (`id` field) (@melekes)
   252  - [blocksync/v2] [\#5774](https://github.com/tendermint/tendermint/pull/5774) Send status request when new peer joins (@melekes)
   253  - [store] [\#5888](https://github.com/tendermint/tendermint/pull/5888) store.SaveBlock saves using batches instead of transactions for now to improve ACID properties. This is a quick fix for underlying issues around tm-db and ACID guarantees. (@githubsands)
   254  - [consensus] [\#5987](https://github.com/tendermint/tendermint/pull/5987) and [\#5792](https://github.com/tendermint/tendermint/pull/5792) Remove the `time_iota_ms` consensus parameter. Merge `tmproto.ConsensusParams` and `abci.ConsensusParams`. (@marbar3778, @valardragon)
   255  - [types] [\#5994](https://github.com/tendermint/tendermint/pull/5994) Reduce the use of protobuf types in core logic. (@marbar3778)
   256    - `ConsensusParams`, `BlockParams`, `ValidatorParams`, `EvidenceParams`, `VersionParams`, `sm.Version` and `version.Consensus` have become native types. They still utilize protobuf when being sent over the wire or written to disk.
   257  - [rpc/client/http] [\#6163](https://github.com/tendermint/tendermint/pull/6163) Do not drop events even if the `out` channel is full (@melekes)
   258  - [node] [\#6059](https://github.com/tendermint/tendermint/pull/6059) Validate and complete genesis doc before saving to state store (@silasdavis)
   259  - [state] [\#6067](https://github.com/tendermint/tendermint/pull/6067) Batch save state data (@githubsands & @cmwaters)
   260  - [crypto] [\#6120](https://github.com/tendermint/tendermint/pull/6120) Implement batch verification interface for ed25519 and sr25519. (@marbar3778)
   261  - [types] [\#6120](https://github.com/tendermint/tendermint/pull/6120) use batch verification for verifying commits signatures.
   262    - If the key type supports the batch verification API it will try to batch verify. If the verification fails we will single verify each signature.
   263  - [privval/file] [\#6185](https://github.com/tendermint/tendermint/pull/6185) Return error on `LoadFilePV`, `LoadFilePVEmptyState`. Allows for better programmatic control of Tendermint.
   264  - [privval] [\#6240](https://github.com/tendermint/tendermint/pull/6240) Add `context.Context` to privval interface.
   265  - [rpc] [\#6265](https://github.com/tendermint/tendermint/pull/6265) set cache control in http-rpc response header (@JayT106)
   266  - [statesync] [\#6378](https://github.com/tendermint/tendermint/pull/6378) Retry requests for snapshots and add a minimum discovery time (5s) for new snapshots.
   267  - [node/state] [\#6370](https://github.com/tendermint/tendermint/pull/6370) graceful shutdown in the consensus reactor (@JayT106)
   268  - [crypto/merkle] [\#6443](https://github.com/tendermint/tendermint/pull/6443) Improve HashAlternatives performance (@cuonglm)
   269  - [crypto/merkle] [\#6513](https://github.com/tendermint/tendermint/pull/6513) Optimize HashAlternatives (@marbar3778)
   270  - [p2p/pex] [\#6509](https://github.com/tendermint/tendermint/pull/6509) Improve addrBook.hash performance (@cuonglm)
   271  - [consensus/metrics] [\#6549](https://github.com/tendermint/tendermint/pull/6549) Change block_size gauge to a histogram for better observability over time (@marbar3778)
   272  - [statesync] [\#6587](https://github.com/tendermint/tendermint/pull/6587) Increase chunk priority and re-request chunks that don't arrive (@cmwaters)
   273  - [state/privval] [\#6578](https://github.com/tendermint/tendermint/pull/6578) No GetPubKey retry beyond the proposal/voting window (@JayT106)
   274  - [rpc] [\#6615](https://github.com/tendermint/tendermint/pull/6615) Add TotalGasUsed to block_results response (@crypto-facs)
   275  - [cmd/tendermint/commands] [\#6623](https://github.com/tendermint/tendermint/pull/6623) replace `$HOME/.some/test/dir` with `t.TempDir` (@tanyabouman)
   276  - [statesync] \6807 Implement P2P state provider as an alternative to RPC (@cmwaters)
   277  
   278  ## v0.34.19
   279  
   280  ### BUG FIXES
   281  
   282  - [cli] [\#8270](https://github.com/tendermint/tendermint/issues/8270) fix reset commands (@alexanderbez).
   283  
   284  ## v0.34.18
   285  
   286  ### BREAKING CHANGES
   287  
   288  - CLI/RPC/Config
   289      - [cli] [\#8258](https://github.com/tendermint/tendermint/pull/8258) Fix a bug in the cli that caused `unsafe-reset-all` to panic
   290  
   291  ## v0.34.17
   292  
   293  ### BREAKING CHANGES
   294  
   295  - CLI/RPC/Config
   296  
   297     - [cli] [\#8081](https://github.com/tendermint/tendermint/issues/8081) make the reset command safe to use (@marbar3778).
   298  
   299  ### BUG FIXES
   300  
   301  - [consensus] [\#8079](https://github.com/tendermint/tendermint/issues/8079) start the timeout ticker before relay (backport #7844) (@creachadair).
   302  - [consensus] [\#7992](https://github.com/tendermint/tendermint/issues/7992) [\#7994](https://github.com/tendermint/tendermint/issues/7994) change lock handling in handleMsg and reactor to alleviate issues gossiping during long ABCI calls (@williambanfield).
   303  
   304  ## v0.34.16
   305  
   306  Special thanks to external contributors on this release: @yihuang
   307  
   308  ### BUG FIXES
   309  
   310  - [consensus] [\#7617](https://github.com/tendermint/tendermint/issues/7617) calculate prevote message delay metric (backport #7551) (@williambanfield).
   311  - [consensus] [\#7631](https://github.com/tendermint/tendermint/issues/7631) check proposal non-nil in prevote message delay metric (backport #7625) (@williambanfield).
   312  - [statesync] [\#7885](https://github.com/tendermint/tendermint/issues/7885) statesync: assert app version matches (backport #7856) (@cmwaters).
   313  - [statesync] [\#7881](https://github.com/tendermint/tendermint/issues/7881) fix app hash in state rollback (backport #7837) (@cmwaters).
   314  - [cli] [#7837](https://github.com/tendermint/tendermint/pull/7837) fix app hash in state rollback. (@yihuang).
   315  
   316  ## v0.34.15
   317  
   318  Special thanks to external contributors on this release: @thanethomson
   319  
   320  ### BUG FIXES
   321  
   322  - [\#7368](https://github.com/tendermint/tendermint/issues/7368) cmd: add integration test for rollback functionality (@cmwaters).
   323  - [\#7309](https://github.com/tendermint/tendermint/issues/7309) pubsub: Report a non-nil error when shutting down (fixes #7306).
   324  - [\#7057](https://github.com/tendermint/tendermint/pull/7057) Import Postgres driver support for the psql indexer (@creachadair).
   325  - [\#7106](https://github.com/tendermint/tendermint/pull/7106) Revert mutex change to ABCI Clients (@tychoish).
   326  
   327  ### IMPROVEMENTS
   328  
   329  - [config] [\#7230](https://github.com/tendermint/tendermint/issues/7230) rpc: Add experimental config params to allow for subscription buffer size control (@thanethomson).
   330  
   331  ## v0.34.14
   332  
   333  This release backports the `rollback` feature to allow recovery in the event of an incorrect app hash.
   334  
   335  ### FEATURES
   336  
   337  - [\#6982](https://github.com/tendermint/tendermint/pull/6982) The tendermint binary now has built-in suppport for running the end-to-end test application (with state sync support) (@cmwaters).
   338  - [cli] [#7033](https://github.com/tendermint/tendermint/pull/7033) Add a `rollback` command to rollback to the previous tendermint state. This may be useful in the event of non-determinstic app hash or when reverting an upgrade. @cmwaters
   339  
   340  ### IMPROVEMENTS
   341  
   342  - [\#7103](https://github.com/tendermint/tendermint/pull/7104) Remove IAVL dependency (backport of #6550) (@cmwaters)
   343  
   344  ### BUG FIXES
   345  
   346  - [\#7057](https://github.com/tendermint/tendermint/pull/7057) Import Postgres driver support for the psql indexer (@creachadair).
   347  - [ABCI] [\#7110](https://github.com/tendermint/tendermint/issues/7110) Revert "change client to use multi-reader mutexes (#6873)" (@tychoish).
   348  
   349  ## v0.34.13
   350  
   351  *September 6, 2021*
   352  
   353  This release backports improvements to state synchronization and ABCI
   354  performance under concurrent load, and the PostgreSQL event indexer.
   355  
   356  ### IMPROVEMENTS
   357  
   358  - [statesync] [\#6881](https://github.com/tendermint/tendermint/issues/6881) improvements to stateprovider logic (@cmwaters)
   359  - [ABCI] [\#6873](https://github.com/tendermint/tendermint/issues/6873) change client to use multi-reader mutexes (@tychoish)
   360  - [indexing] [\#6906](https://github.com/tendermint/tendermint/issues/6906) enable the PostgreSQL indexer sink (@creachadair)
   361  
   362  ## v0.34.12
   363  
   364  *August 17, 2021*
   365  
   366  Special thanks to external contributors on this release: @JayT106.
   367  
   368  ### FEATURES
   369  
   370  - [rpc] [\#6717](https://github.com/tendermint/tendermint/pull/6717) introduce
   371    `/genesis_chunked` rpc endpoint for handling large genesis files by chunking them (@tychoish)
   372  
   373  ### IMPROVEMENTS
   374  
   375  - [rpc] [\#6825](https://github.com/tendermint/tendermint/issues/6825) Remove egregious INFO log from `ABCI#Query` RPC. (@alexanderbez)
   376  
   377  ### BUG FIXES
   378  
   379  - [light] [\#6685](https://github.com/tendermint/tendermint/pull/6685) fix bug
   380    with incorrectly handling contexts that would occasionally freeze state sync. (@cmwaters)
   381  - [privval] [\#6748](https://github.com/tendermint/tendermint/issues/6748) Fix vote timestamp to prevent chain halt (@JayT106)
   382  
   383  ## v0.34.11
   384  
   385  *June 18, 2021*
   386  
   387  This release improves the robustness of statesync; tweaking channel priorities and timeouts and
   388  adding two new parameters to the state sync config.
   389  
   390  ### BREAKING CHANGES
   391  
   392  - Apps
   393      - [Version] [\#6494](https://github.com/tendermint/tendermint/pull/6494) `TMCoreSemVer` is not required to be set as a ldflag any longer.
   394  
   395  ### IMPROVEMENTS
   396  
   397  - [statesync] [\#6566](https://github.com/tendermint/tendermint/pull/6566) Allow state sync fetchers and request timeout to be configurable. (@alexanderbez)
   398  - [statesync] [\#6378](https://github.com/tendermint/tendermint/pull/6378) Retry requests for snapshots and add a minimum discovery time (5s) for new snapshots. (@tychoish)
   399  - [statesync] [\#6582](https://github.com/tendermint/tendermint/pull/6582) Increase chunk priority and add multiple retry chunk requests (@cmwaters)
   400  
   401  ### BUG FIXES
   402  
   403  - [evidence] [\#6375](https://github.com/tendermint/tendermint/pull/6375) Fix bug with inconsistent LightClientAttackEvidence hashing (@cmwaters)
   404  
   405  ## v0.34.10
   406  
   407  *April 14, 2021*
   408  
   409  This release fixes a bug where peers would sometimes try to send messages
   410  on incorrect channels. Special thanks to our friends at Oasis Labs for surfacing
   411  this issue!
   412  
   413  - [p2p/node] [\#6339](https://github.com/tendermint/tendermint/issues/6339) Fix bug with using custom channels (@cmwaters)
   414  - [light] [\#6346](https://github.com/tendermint/tendermint/issues/6346) Correctly handle too high errors to improve client robustness (@cmwaters)
   415  
   416  ## v0.34.9
   417  
   418  *April 8, 2021*
   419  
   420  This release fixes a moderate severity security issue, Security Advisory Alderfly,
   421  which impacts all networks that rely on Tendermint light clients.
   422  Further details will be released once networks have upgraded.
   423  
   424  This release also includes a small Go API-breaking change, to reduce panics in the RPC layer.
   425  
   426  Special thanks to our external contributors on this release: @gchaincl
   427  
   428  ### BREAKING CHANGES
   429  
   430  - Go API
   431      - [rpc/jsonrpc/server] [\#6204](https://github.com/tendermint/tendermint/issues/6204) Modify `WriteRPCResponseHTTP(Error)` to return an error (@melekes)
   432  
   433  ### FEATURES
   434  
   435  - [rpc] [\#6226](https://github.com/tendermint/tendermint/issues/6226) Index block events and expose a new RPC method, `/block_search`, to allow querying for blocks by `BeginBlock` and `EndBlock` events (@alexanderbez)
   436  
   437  ### BUG FIXES
   438  
   439  - [rpc/jsonrpc/server] [\#6191](https://github.com/tendermint/tendermint/issues/6191) Correctly unmarshal `RPCRequest` when data is `null` (@melekes)
   440  - [p2p] [\#6289](https://github.com/tendermint/tendermint/issues/6289) Fix "unknown channels" bug on CustomReactors (@gchaincl)
   441  - [light/evidence] Adds logic to handle forward lunatic attacks (@cmwaters)
   442  
   443  ## v0.34.8
   444  
   445  *February 25, 2021*
   446  
   447  This release, in conjunction with [a fix in the Cosmos SDK](https://github.com/cosmos/cosmos-sdk/pull/8641),
   448  introduces changes that should mean the logs are much, much quieter. 🎉
   449  
   450  ### IMPROVEMENTS
   451  
   452  - [libs/log] [\#6174](https://github.com/tendermint/tendermint/issues/6174) Include timestamp (`ts` field; `time.RFC3339Nano` format) in JSON logger output (@melekes)
   453  
   454  ### BUG FIXES
   455  
   456  - [abci] [\#6124](https://github.com/tendermint/tendermint/issues/6124) Fixes a panic condition during callback execution in `ReCheckTx` during high tx load. (@alexanderbez)
   457  
   458  ## v0.34.7
   459  
   460  *February 18, 2021*
   461  
   462  This release fixes a downstream security issue which impacts Cosmos SDK
   463  users who are:
   464  
   465  * Using Cosmos SDK v0.40.0 or later, AND
   466  * Running validator nodes, AND
   467  * Using the file-based `FilePV` implementation for their consensus keys
   468  
   469  Users who fulfill all the above criteria were susceptible to leaking
   470  private key material in the logs. All other users are unaffected.
   471  
   472  The root cause was a discrepancy
   473  between the Tendermint Core (untyped) logger and the Cosmos SDK (typed) logger:
   474  Tendermint Core's logger automatically stringifies Go interfaces whenever possible;
   475  however, the Cosmos SDK's logger uses reflection to log the fields within a Go interface.
   476  
   477  The introduction of the typed logger meant that previously un-logged fields within
   478  interfaces are now sometimes logged, including the private key material inside the
   479  `FilePV` struct.
   480  
   481  Tendermint Core v0.34.7 fixes this issue; however, we strongly recommend that all validators
   482  use remote signer implementations instead of `FilePV` in production.
   483  
   484  Thank you to @joe-bowman for his assistance with this vulnerability and a particular
   485  shout-out to @marbar3778 for diagnosing it quickly.
   486  
   487  ### BUG FIXES
   488  
   489  - [consensus] [\#6128](https://github.com/tendermint/tendermint/pull/6128) Remove privValidator from log call (@tessr)
   490  
   491  ## v0.34.6
   492  
   493  *February 18, 2021*
   494  
   495  _Tendermint Core v0.34.5 and v0.34.6 have been recalled due to release tooling problems._
   496  
   497  ## v0.34.4
   498  
   499  *February 11, 2021*
   500  
   501  This release includes a fix for a memory leak in the evidence reactor (see #6068, below).
   502  All Tendermint clients are recommended to upgrade.
   503  Thank you to our friends at Crypto.com for the initial report of this memory leak!
   504  
   505  Special thanks to other external contributors on this release: @yayajacky, @odidev, @laniehei, and @c29r3!
   506  
   507  ### BUG FIXES
   508  
   509  - [light] [\#6022](https://github.com/tendermint/tendermint/pull/6022) Fix a bug when the number of validators equals 100 (@melekes)
   510  - [light] [\#6026](https://github.com/tendermint/tendermint/pull/6026) Fix a bug when height isn't provided for the rpc calls: `/commit` and `/validators` (@cmwaters)
   511  - [evidence] [\#6068](https://github.com/tendermint/tendermint/pull/6068) Terminate broadcastEvidenceRoutine when peer is stopped (@melekes)
   512  
   513  ## v0.34.3
   514  
   515  *January 19, 2021*
   516  
   517  This release includes a fix for a high-severity security vulnerability,
   518  a DoS-vector that impacted Tendermint Core v0.34.0-v0.34.2. For more details, see
   519  [Security Advisory Mulberry](https://github.com/tendermint/tendermint/security/advisories/GHSA-p658-8693-mhvg)
   520  or https://nvd.nist.gov/vuln/detail/CVE-2021-21271.
   521  
   522  Tendermint Core v0.34.3 also updates GoGo Protobuf to 1.3.2 in order to pick up the fix for
   523  https://nvd.nist.gov/vuln/detail/CVE-2021-3121.
   524  
   525  ### BUG FIXES
   526  
   527  - [evidence] [[security fix]](https://github.com/tendermint/tendermint/security/advisories/GHSA-p658-8693-mhvg) Use correct source of evidence time (@cmwaters)
   528  - [proto] [\#5886](https://github.com/tendermint/tendermint/pull/5889) Bump gogoproto to 1.3.2 (@marbar3778)
   529  
   530  ## v0.34.2
   531  
   532  *January 12, 2021*
   533  
   534  This release fixes a substantial bug in evidence handling where evidence could
   535  sometimes be broadcast before the block containing that evidence was fully committed,
   536  resulting in some nodes panicking when trying to verify said evidence.
   537  
   538  ### BREAKING CHANGES
   539  
   540  - Go API
   541    - [libs/os] [\#5871](https://github.com/tendermint/tendermint/issues/5871) `EnsureDir` now propagates IO errors and checks the file type (@erikgrinaker)
   542  
   543  ### BUG FIXES
   544  
   545  - [evidence] [\#5890](https://github.com/tendermint/tendermint/pull/5890) Add a buffer to evidence from consensus to avoid broadcasting and proposing evidence before the
   546    height of such an evidence has finished (@cmwaters)
   547  - [statesync] [\#5889](https://github.com/tendermint/tendermint/issues/5889) Set `LastHeightConsensusParamsChanged` when bootstrapping Tendermint state (@cmwaters)
   548  
   549  ## v0.34.1
   550  
   551  *January 6, 2021*
   552  
   553  Special thanks to external contributors on this release:
   554  
   555  @p4u from vocdoni.io reported that the mempool might behave incorrectly under a
   556  high load. The consequences can range from pauses between blocks to the peers
   557  disconnecting from this node. As a temporary remedy (until the mempool package
   558  is refactored), the `max-batch-bytes` was disabled. Transactions will be sent
   559  one by one without batching.
   560  
   561  ### BREAKING CHANGES
   562  
   563  - CLI/RPC/Config
   564    - [cli] [\#5786](https://github.com/tendermint/tendermint/issues/5786) deprecate snake_case commands for hyphen-case (@cmwaters)
   565  
   566  - Go API
   567    - [libs/protoio] [\#5868](https://github.com/tendermint/tendermint/issues/5868) Return number of bytes read in `Reader.ReadMsg()` (@erikgrinaker)
   568  
   569  ### IMPROVEMENTS
   570  
   571  - [mempool] [\#5813](https://github.com/tendermint/tendermint/issues/5813) Add `keep-invalid-txs-in-cache` config option. When set to true, mempool will keep invalid transactions in the cache (@p4u)
   572  
   573  ### BUG FIXES
   574  
   575  - [crypto] [\#5707](https://github.com/tendermint/tendermint/issues/5707) Fix infinite recursion in string formatting of Secp256k1 keys (@erikgrinaker)
   576  - [mempool] [\#5800](https://github.com/tendermint/tendermint/issues/5800) Disable `max-batch-bytes` (@melekes)
   577  - [p2p] [\#5868](https://github.com/tendermint/tendermint/issues/5868) Fix inbound traffic statistics and rate limiting in `MConnection` (@erikgrinaker)
   578  
   579  ## v0.34.0
   580  
   581  *November 19, 2020*
   582  
   583  Holy smokes, this is a big one! For a more reader-friendly overview of the changes in 0.34.0
   584  (and of the changes you need to accommodate as a user), check out [UPGRADING.md](UPGRADING.md).
   585  
   586  Special thanks to external contributors on this release: @james-ray, @fedekunze, @favadi, @alessio,
   587  @joe-bowman, @cuonglm, @SadPencil and @dongsam.
   588  
   589  ### BREAKING CHANGES
   590  
   591  - CLI/RPC/Config
   592  
   593     - [config] [\#5315](https://github.com/tendermint/tendermint/pull/5315) Rename `prof_laddr` to `pprof_laddr` and move it to `rpc` section (@melekes)
   594    - [evidence] [\#4959](https://github.com/tendermint/tendermint/pull/4959) Add JSON tags to `DuplicateVoteEvidence` (@marbar3778)
   595    - [light] [\#4946](https://github.com/tendermint/tendermint/pull/4946) `tendermint lite` command has been renamed to `tendermint light` (@marbar3778)
   596    - [privval] [\#4582](https://github.com/tendermint/tendermint/pull/4582) `round` in private_validator_state.json is no longer JSON string; instead it is a number (@marbar3778)
   597    - [rpc] [\#4792](https://github.com/tendermint/tendermint/pull/4792) `/validators` are now sorted by voting power (@melekes)
   598    - [rpc] [\#4947](https://github.com/tendermint/tendermint/pull/4947) Return an error when `page` pagination param is 0 in `/validators`, `tx_search` (@melekes)
   599    - [rpc] [\#5137](https://github.com/tendermint/tendermint/pull/5137) JSON tags of `gasWanted` and `gasUsed` in `ResponseCheckTx` and `ResponseDeliverTx` have been made snake_case (`gas_wanted` and `gas_used`) (@marbar3778)
   600    - [rpc] [\#5315](https://github.com/tendermint/tendermint/pull/5315) Remove `/unsafe_start_cpu_profiler`, `/unsafe_stop_cpu_profiler` and `/unsafe_write_heap_profile`. Please use pprof functionality instead (@melekes)
   601    - [rpc/client, rpc/jsonrpc/client] [\#5347](https://github.com/tendermint/tendermint/pull/5347) All client methods now accept `context.Context` as 1st param (@melekes)
   602  
   603  - Apps
   604  
   605    - [abci] [\#4704](https://github.com/tendermint/tendermint/pull/4704) Add ABCI methods `ListSnapshots`, `LoadSnapshotChunk`, `OfferSnapshot`, and `ApplySnapshotChunk` for state sync snapshots. `ABCIVersion` bumped to 0.17.0. (@erikgrinaker)
   606    - [abci] [\#4989](https://github.com/tendermint/tendermint/pull/4989) `Proof` within `ResponseQuery` has been renamed to `ProofOps`  (@marbar3778)
   607    - [abci] [\#5096](https://github.com/tendermint/tendermint/pull/5096) `CheckTxType` Protobuf enum names are now uppercase, to follow Protobuf style guide (@erikgrinaker)
   608    - [abci] [\#5324](https://github.com/tendermint/tendermint/pull/5324) ABCI evidence type is now an enum with two types of possible evidence (@cmwaters)
   609  
   610  - P2P Protocol
   611  
   612    - [blockchain] [\#4637](https://github.com/tendermint/tendermint/pull/4637) Migrate blockchain reactor(s) to Protobuf encoding (@marbar3778)
   613    - [evidence] [\#4949](https://github.com/tendermint/tendermint/pull/4949) Migrate evidence reactor to Protobuf encoding (@marbar3778)
   614    - [mempool] [\#4940](https://github.com/tendermint/tendermint/pull/4940) Migrate mempool from to Protobuf encoding (@marbar3778)
   615    - [mempool] [\#5321](https://github.com/tendermint/tendermint/pull/5321) Batch transactions when broadcasting them to peers (@melekes)
   616       - `MaxBatchBytes` new config setting defines the max size of one batch.
   617    - [p2p/pex] [\#4973](https://github.com/tendermint/tendermint/pull/4973) Migrate `p2p/pex` reactor to Protobuf encoding (@marbar3778)
   618    - [statesync] [\#4943](https://github.com/tendermint/tendermint/pull/4943) Migrate state sync reactor to Protobuf encoding (@marbar3778)
   619  
   620  - Blockchain Protocol
   621  
   622    - [evidence] [\#4725](https://github.com/tendermint/tendermint/pull/4725) Remove `Pubkey` from `DuplicateVoteEvidence` (@marbar3778)
   623    - [evidence] [\#5499](https://github.com/tendermint/tendermint/pull/5449) Cap evidence to a maximum number of bytes (supercedes [\#4780](https://github.com/tendermint/tendermint/pull/4780)) (@cmwaters)
   624    - [merkle] [\#5193](https://github.com/tendermint/tendermint/pull/5193) Header hashes are no longer empty for empty inputs, notably `DataHash`, `EvidenceHash`, and `LastResultsHash` (@erikgrinaker)
   625    - [state] [\#4845](https://github.com/tendermint/tendermint/pull/4845) Include `GasWanted` and `GasUsed` into `LastResultsHash` (@melekes)
   626    - [types] [\#4792](https://github.com/tendermint/tendermint/pull/4792) Sort validators by voting power to enable faster commit verification (@melekes)
   627  
   628  - On-disk serialization
   629  
   630    - [state] [\#4679](https://github.com/tendermint/tendermint/pull/4679) Migrate state module to Protobuf encoding (@marbar3778)
   631      - `BlockStoreStateJSON` is now `BlockStoreState` and is encoded as binary in the database
   632    - [store] [\#4778](https://github.com/tendermint/tendermint/pull/4778) Migrate store module to Protobuf encoding (@marbar3778)
   633  
   634  - Light client, private validator
   635  
   636    - [light] [\#4964](https://github.com/tendermint/tendermint/pull/4964) Migrate light module migration to Protobuf encoding (@marbar3778)
   637    - [privval] [\#4985](https://github.com/tendermint/tendermint/pull/4985) Migrate `privval` module to Protobuf encoding (@marbar3778)
   638  
   639  - Go API
   640  
   641    - [consensus] [\#4582](https://github.com/tendermint/tendermint/pull/4582) RoundState: `Round`, `LockedRound` & `CommitRound` are now `int32` (@marbar3778)
   642    - [consensus] [\#4582](https://github.com/tendermint/tendermint/pull/4582) HeightVoteSet: `round` is now `int32` (@marbar3778)
   643    - [crypto] [\#4721](https://github.com/tendermint/tendermint/pull/4721) Remove `SimpleHashFromMap()` and `SimpleProofsFromMap()` (@erikgrinaker)
   644    - [crypto] [\#4940](https://github.com/tendermint/tendermint/pull/4940) All keys have become `[]byte` instead of `[<size>]byte`. The byte method no longer returns the marshaled value but just the `[]byte` form of the data. (@marbar3778)
   645    - [crypto] [\#4988](https://github.com/tendermint/tendermint/pull/4988) Removal of key type multisig (@marbar3778)
   646      - The key has been moved to the [Cosmos-SDK](https://github.com/cosmos/cosmos-sdk/blob/master/crypto/types/multisig/multisignature.go)
   647    - [crypto] [\#4989](https://github.com/tendermint/tendermint/pull/4989) Remove `Simple` prefixes from `SimpleProof`, `SimpleValueOp` & `SimpleProofNode`. (@marbar3778)
   648      - `merkle.Proof` has been renamed to `ProofOps`.
   649      - Protobuf messages `Proof` & `ProofOp` has been moved to `proto/crypto/merkle`
   650      - `SimpleHashFromByteSlices` has been renamed to `HashFromByteSlices`
   651      - `SimpleHashFromByteSlicesIterative` has been renamed to `HashFromByteSlicesIterative`
   652      - `SimpleProofsFromByteSlices` has been renamed to `ProofsFromByteSlices`
   653    - [crypto] [\#4941](https://github.com/tendermint/tendermint/pull/4941) Remove suffixes from all keys. (@marbar3778)
   654      - ed25519: type `PrivKeyEd25519` is now `PrivKey`
   655      - ed25519: type `PubKeyEd25519` is now `PubKey`
   656      - secp256k1: type`PrivKeySecp256k1` is now `PrivKey`
   657      - secp256k1: type`PubKeySecp256k1` is now `PubKey`
   658      - sr25519: type `PrivKeySr25519` is now `PrivKey`
   659      - sr25519: type `PubKeySr25519` is now `PubKey`
   660    - [crypto] [\#5214](https://github.com/tendermint/tendermint/pull/5214) Change `GenPrivKeySecp256k1` to `GenPrivKeyFromSecret` to be consistent with other keys (@marbar3778)
   661    - [crypto] [\#5236](https://github.com/tendermint/tendermint/pull/5236) `VerifyBytes` is now `VerifySignature` on the `crypto.PubKey` interface (@marbar3778)
   662    - [evidence] [\#5361](https://github.com/tendermint/tendermint/pull/5361) Add LightClientAttackEvidence and change evidence interface (@cmwaters)
   663    - [libs] [\#4831](https://github.com/tendermint/tendermint/pull/4831) Remove `Bech32` pkg from Tendermint. This pkg now lives in the [cosmos-sdk](https://github.com/cosmos/cosmos-sdk/tree/4173ea5ebad906dd9b45325bed69b9c655504867/types/bech32) (@marbar3778)
   664    - [light] [\#4946](https://github.com/tendermint/tendermint/pull/4946) Rename `lite2` pkg to `light`. Remove `lite` implementation. (@marbar3778)
   665    - [light] [\#5347](https://github.com/tendermint/tendermint/pull/5347) `NewClient`, `NewHTTPClient`, `VerifyHeader` and `VerifyLightBlockAtHeight` now accept `context.Context` as 1st param (@melekes)
   666    - [merkle] [\#5193](https://github.com/tendermint/tendermint/pull/5193) `HashFromByteSlices` and `ProofsFromByteSlices` now return a hash for empty inputs, following RFC6962 (@erikgrinaker)
   667    - [proto] [\#5025](https://github.com/tendermint/tendermint/pull/5025) All proto files have been moved to `/proto` directory. (@marbar3778)
   668      - Using the recommended the file layout from buf, [see here for more info](https://buf.build/docs/lint-checkers#file_layout)
   669    - [rpc/client] [\#4947](https://github.com/tendermint/tendermint/pull/4947) `Validators`, `TxSearch` `page`/`per_page` params become pointers (@melekes)
   670      - `UnconfirmedTxs` `limit` param is a pointer
   671    - [rpc/jsonrpc/server] [\#5141](https://github.com/tendermint/tendermint/pull/5141) Remove `WriteRPCResponseArrayHTTP` (use `WriteRPCResponseHTTP` instead) (@melekes)
   672    - [state] [\#4679](https://github.com/tendermint/tendermint/pull/4679) `TxResult` is a Protobuf type defined in `abci` types directory (@marbar3778)
   673    - [state] [\#5191](https://github.com/tendermint/tendermint/pull/5191) Add `State.InitialHeight` field to record initial block height, must be `1` (not `0`) to start from 1 (@erikgrinaker)
   674    - [state] [\#5231](https://github.com/tendermint/tendermint/pull/5231) `LoadStateFromDBOrGenesisFile()` and `LoadStateFromDBOrGenesisDoc()` no longer saves the state in the database if not found, the genesis state is simply returned (@erikgrinaker)
   675    - [state] [\#5348](https://github.com/tendermint/tendermint/pull/5348) Define an Interface for the state store. (@marbar3778)
   676    - [types] [\#4939](https://github.com/tendermint/tendermint/pull/4939)  `SignedMsgType` has moved to a Protobuf enum types (@marbar3778)
   677    - [types] [\#4962](https://github.com/tendermint/tendermint/pull/4962) `ConsensusParams`, `BlockParams`, `EvidenceParams`, `ValidatorParams` & `HashedParams` are now Protobuf types (@marbar3778)
   678    - [types] [\#4852](https://github.com/tendermint/tendermint/pull/4852) Vote & Proposal `SignBytes` is now func `VoteSignBytes` & `ProposalSignBytes` (@marbar3778)
   679    - [types] [\#4798](https://github.com/tendermint/tendermint/pull/4798) Simplify `VerifyCommitTrusting` func + remove extra validation (@melekes)
   680    - [types] [\#4845](https://github.com/tendermint/tendermint/pull/4845) Remove `ABCIResult` (@melekes)
   681    - [types] [\#5029](https://github.com/tendermint/tendermint/pull/5029) Rename all values from `PartsHeader` to `PartSetHeader` to have consistency (@marbar3778)
   682    - [types] [\#4939](https://github.com/tendermint/tendermint/pull/4939) `Total` in `Parts` & `PartSetHeader` has been changed from a `int` to a `uint32` (@marbar3778)
   683    - [types] [\#4939](https://github.com/tendermint/tendermint/pull/4939) Vote: `ValidatorIndex` & `Round` are now `int32` (@marbar3778)
   684    - [types] [\#4939](https://github.com/tendermint/tendermint/pull/4939) Proposal: `POLRound` & `Round` are now `int32` (@marbar3778)
   685    - [types] [\#4939](https://github.com/tendermint/tendermint/pull/4939) Block: `Round` is now `int32` (@marbar3778)
   686  
   687  ### FEATURES
   688  
   689  - [abci] [\#5031](https://github.com/tendermint/tendermint/pull/5031) Add `AppVersion` to consensus parameters (@james-ray)
   690    - This makes it possible to update your ABCI application version via `EndBlock` response
   691  - [abci] [\#5174](https://github.com/tendermint/tendermint/pull/5174) Remove `MockEvidence` in favor of testing with actual evidence types (`DuplicateVoteEvidence` & `LightClientAttackEvidence`) (@cmwaters)
   692  - [abci] [\#5191](https://github.com/tendermint/tendermint/pull/5191) Add `InitChain.InitialHeight` field giving the initial block height (@erikgrinaker)
   693  - [abci] [\#5227](https://github.com/tendermint/tendermint/pull/5227) Add `ResponseInitChain.app_hash` which is recorded in genesis block (@erikgrinaker)
   694  - [config] [\#5147](https://github.com/tendermint/tendermint/pull/5147) Add `--consensus.double_sign_check_height` flag and `DoubleSignCheckHeight` config variable. See [ADR-51](https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-051-double-signing-risk-reduction.md) (@dongsam)
   695  - [db] [\#5233](https://github.com/tendermint/tendermint/pull/5233) Add support for `badgerdb` database backend (@erikgrinaker)
   696  - [evidence] [\#4532](https://github.com/tendermint/tendermint/pull/4532) Handle evidence from light clients (@melekes)
   697  - [evidence] [#4821](https://github.com/tendermint/tendermint/pull/4821) Amnesia (light client attack) evidence can be detected, verified and committed (@cmwaters)
   698  - [genesis] [\#5191](https://github.com/tendermint/tendermint/pull/5191) Add `initial_height` field to specify the initial chain height (defaults to `1`) (@erikgrinaker)
   699  - [libs/math] [\#5665](https://github.com/tendermint/tendermint/pull/5665) Make fractions unsigned integers (uint64) (@cmwaters)
   700  - [light] [\#5298](https://github.com/tendermint/tendermint/pull/5298) Morph validator set and signed header into light block (@cmwaters)
   701  - [p2p] [\#4981](https://github.com/tendermint/tendermint/pull/4981) Expose `SaveAs` func on NodeKey (@melekes)
   702  - [privval] [\#5239](https://github.com/tendermint/tendermint/pull/5239) Add `chainID` to requests from client. (@marbar3778)
   703  - [rpc] [\#4532](https://github.com/tendermint/tendermint/pull/4923) Support `BlockByHash` query (@fedekunze)
   704  - [rpc] [\#4979](https://github.com/tendermint/tendermint/pull/4979) Support EXISTS operator in `/tx_search` query (@melekes)
   705  - [rpc] [\#5017](https://github.com/tendermint/tendermint/pull/5017) Add `/check_tx` endpoint to check transactions without executing them or adding them to the mempool (@melekes)
   706  - [rpc] [\#5108](https://github.com/tendermint/tendermint/pull/5108) Subscribe using the websocket for new evidence events (@cmwaters)
   707  - [statesync] Add state sync support, where a new node can be rapidly bootstrapped by fetching state snapshots from peers instead of replaying blocks. See the `[statesync]` config section.
   708  - [evidence] [\#5361](https://github.com/tendermint/tendermint/pull/5361) Add LightClientAttackEvidence and refactor evidence lifecycle - for more information see [ADR-059](https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-059-evidence-composition-and-lifecycle.md) (@cmwaters)
   709  
   710  ### IMPROVEMENTS
   711  
   712  - [blockchain] [\#5278](https://github.com/tendermint/tendermint/pull/5278) Verify only +2/3 of the signatures in a block when fast syncing. (@marbar3778)
   713  - [consensus] [\#4578](https://github.com/tendermint/tendermint/pull/4578) Attempt to repair the consensus WAL file (`data/cs.wal/wal`) automatically in case of corruption (@alessio)
   714    - The original WAL file will be backed up to `data/cs.wal/wal.CORRUPTED`.
   715  - [consensus] [\#5143](https://github.com/tendermint/tendermint/pull/5143) Only call `privValidator.GetPubKey` once per block (@melekes)
   716  - [evidence] [\#4722](https://github.com/tendermint/tendermint/pull/4722) Consolidate evidence store and pool types to improve evidence DB (@cmwaters)
   717  - [evidence] [\#4839](https://github.com/tendermint/tendermint/pull/4839) Reject duplicate evidence from being proposed (@cmwaters)
   718  - [evidence] [\#5219](https://github.com/tendermint/tendermint/pull/5219) Change the source of evidence time to block time (@cmwaters)
   719  - [libs] [\#5126](https://github.com/tendermint/tendermint/pull/5126) Add a sync package which wraps sync.(RW)Mutex & deadlock.(RW)Mutex and use a build flag (deadlock) in order to enable deadlock checking (@marbar3778)
   720  - [light] [\#4935](https://github.com/tendermint/tendermint/pull/4935) Fetch and compare a new header with witnesses in parallel (@melekes)
   721  - [light] [\#4929](https://github.com/tendermint/tendermint/pull/4929) Compare header with witnesses only when doing bisection (@melekes)
   722  - [light] [\#4916](https://github.com/tendermint/tendermint/pull/4916) Validate basic for inbound validator sets and headers before further processing them (@cmwaters)
   723  - [mempool] Add RemoveTxByKey() exported function for custom mempool cleaning (@p4u)
   724  - [p2p/conn] [\#4795](https://github.com/tendermint/tendermint/pull/4795) Return err on `signChallenge()` instead of panic
   725  - [privval] [\#5437](https://github.com/tendermint/tendermint/pull/5437) `NewSignerDialerEndpoint` can now be given `SignerServiceEndpointOption` (@erikgrinaker)
   726  - [rpc] [\#4968](https://github.com/tendermint/tendermint/pull/4968) JSON encoding is now handled by `libs/json`, not Amino (@erikgrinaker)
   727  - [rpc] [\#5293](https://github.com/tendermint/tendermint/pull/5293) `/dial_peers` has added `private` and `unconditional` as parameters. (@marbar3778)
   728  - [state] [\#4781](https://github.com/tendermint/tendermint/pull/4781) Export `InitStateVersion` for the initial state version (@erikgrinaker)
   729  - [txindex] [\#4466](https://github.com/tendermint/tendermint/pull/4466) Allow to index an event at runtime (@favadi)
   730    - `abci.EventAttribute` replaces `KV.Pair`
   731  - [types] [\#4905](https://github.com/tendermint/tendermint/pull/4905) Add `ValidateBasic` to validator and validator set (@cmwaters)
   732  - [types] [\#5340](https://github.com/tendermint/tendermint/pull/5340) Add check in `Header.ValidateBasic()` for block protocol version (@marbar3778)
   733  - [types] [\#5490](https://github.com/tendermint/tendermint/pull/5490) Use `Commit` and `CommitSig` max sizes instead of vote max size to calculate the maximum block size. (@cmwaters)
   734  
   735  
   736  ### BUG FIXES
   737  
   738  - [abci/grpc] [\#5520](https://github.com/tendermint/tendermint/pull/5520) Return async responses in order, to avoid mempool panics. (@erikgrinaker)
   739  - [blockchain/v2] [\#4971](https://github.com/tendermint/tendermint/pull/4971) Correctly set block store base in status responses (@erikgrinaker)
   740  - [blockchain/v2] [\#5499](https://github.com/tendermint/tendermint/pull/5499) Fix "duplicate block enqueued by processor" panic (@melekes)
   741  - [blockchain/v2] [\#5530](https://github.com/tendermint/tendermint/pull/5530) Fix out of order block processing panic (@melekes)
   742  - [blockchain/v2] [\#5553](https://github.com/tendermint/tendermint/pull/5553) Make the removal of an already removed peer a noop (@melekes)
   743  - [consensus] [\#4895](https://github.com/tendermint/tendermint/pull/4895) Cache the address of the validator to reduce querying a remote KMS (@joe-bowman)
   744  - [consensus] [\#4970](https://github.com/tendermint/tendermint/pull/4970) Don't allow `LastCommitRound` to be negative (@cuonglm)
   745  - [consensus] [\#5329](https://github.com/tendermint/tendermint/pull/5329) Fix wrong proposer schedule for validators returned by `InitChain` (@erikgrinaker)
   746  - [docker] [\#5385](https://github.com/tendermint/tendermint/pull/5385) Fix incorrect `time_iota_ms` default setting causing block timestamp drift (@erikgrinaker)
   747  - [evidence] [\#5170](https://github.com/tendermint/tendermint/pull/5170) Change ABCI evidence time to the time the infraction happened not the time the evidence was committed on the block (@cmwaters)
   748  - [evidence] [\#5610](https://github.com/tendermint/tendermint/pull/5610) Make it possible for ABCI evidence to be formed from Tendermint evidence (@cmwaters)
   749  - [libs/rand] [\#5215](https://github.com/tendermint/tendermint/pull/5215) Fix out-of-memory error on unexpected argument of Str() (@SadPencil)
   750  - [light] [\#5307](https://github.com/tendermint/tendermint/pull/5307) Persist correct proposer priority in light client validator sets (@cmwaters)
   751  - [p2p] [\#5136](https://github.com/tendermint/tendermint/pull/5136) Fix error for peer with the same ID but different IPs (@valardragon)
   752  - [privval] [\#5638](https://github.com/tendermint/tendermint/pull/5638) Increase read/write timeout to 5s and calculate ping interval based on it (@JoeKash)
   753  - [proxy] [\#5078](https://github.com/tendermint/tendermint/pull/5078) Force Tendermint to exit when ABCI app crashes  (@melekes)
   754  - [rpc] [\#5660](https://github.com/tendermint/tendermint/pull/5660) Set `application/json` as the `Content-Type` header in RPC responses. (@alexanderbez)
   755  - [store] [\#5382](https://github.com/tendermint/tendermint/pull/5382) Fix race conditions when loading/saving/pruning blocks (@erikgrinaker)
   756  
   757  ## v0.33.8
   758  
   759  *August 11, 2020*
   760  
   761  ### Go security update
   762  
   763  Go reported a security vulnerability that affected the `encoding/binary` package. The most recent binary for tendermint is using 1.14.6, for this
   764  reason the Tendermint engineering team has opted to conduct a release to aid users in using the correct version of Go. Read more about the security issue [here](https://github.com/golang/go/issues/40618).
   765  
   766  
   767  ## v0.33.7
   768  
   769   *August 4, 2020*
   770  
   771   ### BUG FIXES:
   772  
   773   - [go] Build release binary using Go 1.14.4, to avoid halt caused by Go 1.14.1 (https://github.com/golang/go/issues/38223)
   774   - [privval] [\#5140](https://github.com/tendermint/tendermint/pull/5140) `RemoteSignerError` from remote signers are no longer retried (@melekes)
   775  
   776  
   777  ## v0.33.6
   778  
   779  *July 2, 2020*
   780  
   781  This security release fixes:
   782  
   783  ### Denial of service
   784  
   785  Tendermint 0.33.0 and above allow block proposers to include signatures for the
   786  wrong block. This may happen naturally if you start a network, have it run for
   787  some time and restart it **without changing the chainID**. (It is a
   788  [misconfiguration](https://docs.tendermint.com/master/tendermint-core/using-tendermint.html)
   789  to reuse chainIDs.) Correct block proposers will accidentally include signatures
   790  for the wrong block if they see these signatures, and then commits won't validate,
   791  making all proposed blocks invalid. A malicious validator (even with a minimal
   792  amount of stake) can use this vulnerability to completely halt the network.
   793  
   794  Tendermint 0.33.6 checks all the signatures are for the block with +2/3
   795  majority before creating a commit.
   796  
   797  ### False Witness
   798  
   799  Tendermint 0.33.1 and above are no longer fully verifying commit signatures
   800  during block execution - they stop after +2/3. This means proposers can propose
   801  blocks that contain valid +2/3 signatures and then the rest of the signatures
   802  can be whatever they want. They can claim that all the other validators signed
   803  just by including a CommitSig with arbitrary signature data. While this doesn't
   804  seem to impact safety of Tendermint per se, it means that Commits may contain a
   805  lot of invalid data.
   806  
   807  _This was already true of blocks, since they could include invalid txs filled
   808  with garbage, but in that case the application knew that they are invalid and
   809  could punish the proposer. But since applications didn't--and don't--
   810  verify commit signatures directly (they trust Tendermint to do that),
   811  they won't be able to detect it._
   812  
   813  This can impact incentivization logic in the application that depends on the
   814  LastCommitInfo sent in BeginBlock, which includes which validators signed. For
   815  instance, Gaia incentivizes proposers with a bonus for including more than +2/3
   816  of the signatures. But a proposer can now claim that bonus just by including
   817  arbitrary data for the final -1/3 of validators without actually waiting for
   818  their signatures. There may be other tricks that can be played because of this.
   819  
   820  Tendermint 0.33.6 verifies all the signatures during block execution.
   821  
   822  _Please note that the light client does not check nil votes and exits as soon
   823  as 2/3+ of the signatures are checked._
   824  
   825  **All clients are recommended to upgrade.**
   826  
   827  Special thanks to @njmurarka at Bluzelle Networks for reporting this.
   828  
   829  ### SECURITY:
   830  
   831  - [consensus] Do not allow signatures for a wrong block in commits (@ebuchman)
   832  - [consensus] Verify all the signatures during block execution (@melekes)
   833  
   834  **Please note that the fix for the False Witness issue renames the `VerifyCommitTrusting`
   835  function to `VerifyCommitLightTrusting`. If you were relying on the light client, you may
   836  need to update your code.**
   837  
   838  ## v0.33.5
   839  
   840  *May 28, 2020*
   841  
   842  Special thanks to external contributors on this release: @tau3,
   843  
   844  ### BREAKING CHANGES:
   845  
   846  - Go API
   847  
   848    - [privval] [\#4744](https://github.com/tendermint/tendermint/pull/4744) Remove deprecated `OldFilePV` (@melekes)
   849    - [mempool] [\#4759](https://github.com/tendermint/tendermint/pull/4759) Modify `Mempool#InitWAL` to return an error (@melekes)
   850    - [node] [\#4832](https://github.com/tendermint/tendermint/pull/4832) `ConfigureRPC` returns an error (@melekes)
   851    - [rpc] [\#4836](https://github.com/tendermint/tendermint/pull/4836) Overhaul `lib` folder (@melekes)
   852      Move lib/ folder to jsonrpc/.
   853      Rename:
   854        rpc package -> jsonrpc package
   855        rpcclient package -> client package
   856        rpcserver package -> server package
   857        JSONRPCClient to Client
   858        JSONRPCRequestBatch to RequestBatch
   859        JSONRPCCaller to Caller
   860        StartHTTPServer to Serve
   861        StartHTTPAndTLSServer to ServeTLS
   862        NewURIClient to NewURI
   863        NewJSONRPCClient to New
   864        NewJSONRPCClientWithHTTPClient to NewWithHTTPClient
   865        NewWSClient to NewWS
   866      Unexpose ResponseWriterWrapper
   867      Remove unused http_params.go
   868  
   869  
   870  ### FEATURES:
   871  
   872  - [pex] [\#4439](https://github.com/tendermint/tendermint/pull/4439) Use highwayhash for pex buckets (@tau3)
   873  
   874  ### IMPROVEMENTS:
   875  
   876  - [abci/server] [\#4719](https://github.com/tendermint/tendermint/pull/4719) Print panic & stack trace to STDERR if logger is not set (@melekes)
   877  - [types] [\#4638](https://github.com/tendermint/tendermint/pull/4638) Implement `Header#ValidateBasic` (@alexanderbez)
   878  - [buildsystem] [\#4378](https://github.com/tendermint/tendermint/pull/4738) Replace build_c and install_c with TENDERMINT_BUILD_OPTIONS parsing. The following options are available:
   879    - nostrip: don't strip debugging symbols nor DWARF tables.
   880    - cleveldb: use cleveldb as db backend instead of goleveldb.
   881    - race: pass -race to go build and enable data race detection.
   882  - [mempool] [\#4759](https://github.com/tendermint/tendermint/pull/4759) Allow ReapX and CheckTx functions to run in parallel (@melekes)
   883  - [rpc/core] [\#4844](https://github.com/tendermint/tendermint/pull/4844) Do not lock consensus state in `/validators`, `/consensus_params` and `/status` (@melekes)
   884  
   885  ### BUG FIXES:
   886  
   887  - [blockchain/v2] [\#4761](https://github.com/tendermint/tendermint/pull/4761) Fix excessive CPU usage caused by spinning on closed channels (@erikgrinaker)
   888  - [blockchain/v2] Respect `fast_sync` option (@erikgrinaker)
   889  - [light] [\#4741](https://github.com/tendermint/tendermint/pull/4741) Correctly return  `ErrSignedHeaderNotFound` and `ErrValidatorSetNotFound` on corresponding RPC errors (@erikgrinaker)
   890  - [rpc] [\#4805](https://github.com/tendermint/tendermint/issues/4805) Attempt to handle panics during panic recovery (@erikgrinaker)
   891  - [types] [\#4764](https://github.com/tendermint/tendermint/pull/4764) Return an error if voting power overflows in `VerifyCommitTrusting` (@melekes)
   892  - [privval] [\#4812](https://github.com/tendermint/tendermint/pull/4812) Retry `GetPubKey/SignVote/SignProposal` a few times before returning an error (@melekes)
   893  - [p2p] [\#4847](https://github.com/tendermint/tendermint/pull/4847) Return masked IP (not the actual IP) in addrbook#groupKey (@melekes)
   894  
   895  ## v0.33.4
   896  
   897  - Nodes are no longer guaranteed to contain all blocks up to the latest height. The ABCI app can now control which blocks to retain through the ABCI field `ResponseCommit.retain_height`, all blocks and associated data below this height will be removed.
   898  
   899  *April 21, 2020*
   900  
   901  Special thanks to external contributors on this release: @whylee259, @greg-szabo
   902  
   903  ### BREAKING CHANGES:
   904  
   905  - Go API
   906  
   907    - [lite2] [\#4616](https://github.com/tendermint/tendermint/pull/4616) Make `maxClockDrift` an option `Verify/VerifyAdjacent/VerifyNonAdjacent` now accept `maxClockDrift time.Duration` (@melekes).
   908    - [rpc/client] [\#4628](https://github.com/tendermint/tendermint/pull/4628) Split out HTTP and local clients into `http` and `local` packages (@erikgrinaker).
   909  
   910  ### FEATURES:
   911  
   912  - [abci] [\#4588](https://github.com/tendermint/tendermint/issues/4588) Add `ResponseCommit.retain_height` field, which will automatically remove blocks below this height. This bumps the ABCI version to 0.16.2 (@erikgrinaker).
   913  - [cmd] [\#4665](https://github.com/tendermint/tendermint/pull/4665) New `tendermint completion` command to generate Bash/Zsh completion scripts (@alessio).
   914  - [rpc] [\#4588](https://github.com/tendermint/tendermint/issues/4588) Add `/status` response fields for the earliest block available on the node (@erikgrinaker).
   915  - [rpc] [\#4611](https://github.com/tendermint/tendermint/pull/4611) Add `codespace` to `ResultBroadcastTx` (@whylee259).
   916  
   917  ### IMPROVEMENTS:
   918  
   919  - [all] [\#4608](https://github.com/tendermint/tendermint/pull/4608) Give reactors descriptive names when they're initialized (@tessr).
   920  - [blockchain] [\#4588](https://github.com/tendermint/tendermint/issues/4588) Add `Base` to blockchain reactor P2P messages `StatusRequest` and `StatusResponse` (@erikgrinaker).
   921  - [Docker] [\#4569](https://github.com/tendermint/tendermint/issues/4569) Default configuration added to docker image (you can still mount your own config the same way) (@greg-szabo).
   922  - [example/kvstore] [\#4588](https://github.com/tendermint/tendermint/issues/4588) Add `RetainBlocks` option to control block retention (@erikgrinaker).
   923  - [evidence] [\#4632](https://github.com/tendermint/tendermint/pull/4632) Inbound evidence checked if already existing (@cmwaters).
   924  - [lite2] [\#4575](https://github.com/tendermint/tendermint/pull/4575) Use bisection for within-range verification (@cmwaters).
   925  - [lite2] [\#4562](https://github.com/tendermint/tendermint/pull/4562) Cache headers when using bisection (@cmwaters).
   926  - [p2p] [\#4548](https://github.com/tendermint/tendermint/pull/4548) Add ban list to address book (@cmwaters).
   927  - [privval] [\#4534](https://github.com/tendermint/tendermint/issues/4534) Add `error` as a return value on`GetPubKey()` (@marbar3778).
   928  - [p2p] [\#4621](https://github.com/tendermint/tendermint/issues/4621) Ban peers when messages are unsolicited or too frequent (@cmwaters).
   929  - [rpc] [\#4703](https://github.com/tendermint/tendermint/pull/4703) Add `count` and `total` to `/validators` response (@melekes).
   930  - [tools] [\#4615](https://github.com/tendermint/tendermint/issues/4615) Allow developers to use Docker to generate proto stubs, via `make proto-gen-docker` (@erikgrinaker).
   931  
   932  ### BUG FIXES:
   933  
   934  - [rpc] [\#4568](https://github.com/tendermint/tendermint/issues/4568) Fix panic when `Subscribe` is called, but HTTP client is not running. `Subscribe`, `Unsubscribe(All)` methods return an error now (@melekes).
   935  
   936  ## v0.33.3
   937  
   938  *April 6, 2020*
   939  
   940  This security release fixes:
   941  
   942  ### Denial of service 1
   943  
   944  Tendermint 0.33.2 and earlier does not limit P2P connection requests number.
   945  For each p2p connection, Tendermint allocates ~0.5MB. Even though this
   946  memory is garbage collected once the connection is terminated (due to duplicate
   947  IP or reaching a maximum number of inbound peers), temporary memory spikes can
   948  lead to OOM (Out-Of-Memory) exceptions.
   949  
   950  Tendermint 0.33.3 (and 0.32.10) limits the total number of P2P incoming
   951  connection requests to to `p2p.max_num_inbound_peers +
   952  len(p2p.unconditional_peer_ids)`.
   953  
   954  Notes:
   955  
   956  - Tendermint does not rate limit P2P connection requests per IP (an attacker
   957    can saturate all the inbound slots);
   958  - Tendermint does not rate limit HTTP(S) requests. If you expose any RPC
   959    endpoints to the public, please make sure to put in place some protection
   960    (https://www.nginx.com/blog/rate-limiting-nginx/). We may implement this in
   961    the future ([\#1696](https://github.com/tendermint/tendermint/issues/1696)).
   962  
   963  ### Denial of service 2
   964  
   965  Tendermint 0.33.2 and earlier does not reclaim `activeID` of a peer after it's
   966  removed in `Mempool` reactor. This does not happen all the time. It only
   967  happens when a connection fails (for any reason) before the Peer is created and
   968  added to all reactors. `RemovePeer` is therefore called before `AddPeer`, which
   969  leads to always growing memory (`activeIDs` map). The `activeIDs` map has a
   970  maximum size of 65535 and the node will panic if this map reaches the maximum.
   971  An attacker can create a lot of connection attempts (exploiting Denial of
   972  service 1), which ultimately will lead to the node panicking.
   973  
   974  Tendermint 0.33.3 (and 0.32.10) claims `activeID` for a peer in `InitPeer`,
   975  which is executed before `MConnection` is started.
   976  
   977  Notes:
   978  
   979  - `InitPeer` function was added to all reactors to combat a similar issue -
   980    [\#3338](https://github.com/tendermint/tendermint/issues/3338);
   981  - Denial of service 2 is independent of Denial of service 1 and can be executed
   982    without it.
   983  
   984  **All clients are recommended to upgrade**
   985  
   986  Special thanks to [fudongbai](https://hackerone.com/fudongbai) for finding
   987  and reporting this.
   988  
   989  ### SECURITY:
   990  
   991  - [mempool] Reserve IDs in InitPeer instead of AddPeer (@tessr)
   992  - [p2p] Limit the number of incoming connections (@melekes)
   993  
   994  ## v0.33.2
   995  
   996  *March 11, 2020*
   997  
   998  Special thanks to external contributors on this release:
   999  @antho1404, @michaelfig, @gterzian, @tau3, @Shivani912
  1000  
  1001  ### BREAKING CHANGES:
  1002  
  1003  - CLI/RPC/Config
  1004    - [cli] [\#4505](https://github.com/tendermint/tendermint/pull/4505) `tendermint lite` sub-command new syntax (@melekes):
  1005      `lite cosmoshub-3 -p 52.57.29.196:26657 -w public-seed-node.cosmoshub.certus.one:26657
  1006      --height 962118 --hash 28B97BE9F6DE51AC69F70E0B7BFD7E5C9CD1A595B7DC31AFF27C50D4948`
  1007  
  1008  - Go API
  1009    - [lite2] [\#4535](https://github.com/tendermint/tendermint/pull/4535) Remove `Start/Stop` (@melekes)
  1010    - [lite2] [\#4469](https://github.com/tendermint/tendermint/issues/4469) Remove `RemoveNoLongerTrustedHeaders` and `RemoveNoLongerTrustedHeadersPeriod` option (@cmwaters)
  1011    - [lite2] [\#4473](https://github.com/tendermint/tendermint/issues/4473) Return height as a 2nd param in `TrustedValidatorSet` (@melekes)
  1012    - [lite2] [\#4536](https://github.com/tendermint/tendermint/pull/4536) `Update` returns a signed header (1st param) (@melekes)
  1013  
  1014  
  1015  ### IMPROVEMENTS:
  1016  
  1017  - [blockchain/v2] [\#4361](https://github.com/tendermint/tendermint/pull/4361) Add reactor (@brapse)
  1018  - [cmd] [\#4515](https://github.com/tendermint/tendermint/issues/4515) Change `tendermint debug dump` sub-command archives filename's format (@melekes)
  1019  - [consensus] [\#3583](https://github.com/tendermint/tendermint/issues/3583) Reduce `non-deterministic signature` log noise (@tau3)
  1020  - [examples/kvstore] [\#4507](https://github.com/tendermint/tendermint/issues/4507) ABCI query now returns the proper height (@erikgrinaker)
  1021  - [lite2] [\#4462](https://github.com/tendermint/tendermint/issues/4462) Add `NewHTTPClient` and `NewHTTPClientFromTrustedStore` (@cmwaters)
  1022  - [lite2] [\#4329](https://github.com/tendermint/tendermint/issues/4329) modified bisection to loop (@cmwaters)
  1023  - [lite2] [\#4385](https://github.com/tendermint/tendermint/issues/4385) Disconnect from bad nodes (@melekes)
  1024  - [lite2] [\#4398](https://github.com/tendermint/tendermint/issues/4398) Add `VerifyAdjacent` and `VerifyNonAdjacent` funcs (@cmwaters)
  1025  - [lite2] [\#4426](https://github.com/tendermint/tendermint/issues/4426) Don't save intermediate headers (@cmwaters)
  1026  - [lite2] [\#4464](https://github.com/tendermint/tendermint/issues/4464) Cross-check first header (@cmwaters)
  1027  - [lite2] [\#4470](https://github.com/tendermint/tendermint/issues/4470) Fix inconsistent header-validatorset pairing (@melekes)
  1028  - [lite2] [\#4488](https://github.com/tendermint/tendermint/issues/4488) Allow local clock drift -10 sec. (@melekes)
  1029  - [p2p] [\#4449](https://github.com/tendermint/tendermint/pull/4449) Use `curve25519.X25519()` instead of `ScalarMult` (@erikgrinaker)
  1030  - [types] [\#4417](https://github.com/tendermint/tendermint/issues/4417) **VerifyCommitX() functions should return as soon as +2/3 threshold is reached** (@alessio).
  1031  - [libs/kv] [\#4542](https://github.com/tendermint/tendermint/pull/4542) remove unused type KI64Pair (@tessr)
  1032  
  1033  ### BUG FIXES:
  1034  
  1035  - [cmd] [\#4303](https://github.com/tendermint/tendermint/issues/4303) Show useful error when Tendermint is not initialized (@melekes)
  1036  - [cmd] [\#4515](https://github.com/tendermint/tendermint/issues/4515) **Fix `tendermint debug kill` sub-command** (@melekes)
  1037  - [rpc] [\#3935](https://github.com/tendermint/tendermint/issues/3935) **Create buffered subscriptions on `/subscribe`** (@melekes)
  1038  - [rpc] [\#4375](https://github.com/tendermint/tendermint/issues/4375) Stop searching for txs in `/tx_search` upon client timeout (@gterzian)
  1039  - [rpc] [\#4406](https://github.com/tendermint/tendermint/pull/4406) Fix issue with multiple subscriptions on the websocket (@antho1404)
  1040  - [rpc] [\#4432](https://github.com/tendermint/tendermint/issues/4432) Fix `/tx_search` pagination with ordered results (@erikgrinaker)
  1041  - [rpc] [\#4492](https://github.com/tendermint/tendermint/issues/4492) Keep the original subscription "id" field when new RPCs come in (@michaelfig)
  1042  
  1043  
  1044  ## v0.33.1
  1045  
  1046  *Feburary 13, 2020*
  1047  
  1048  Special thanks to external contributors on this release:
  1049  @princesinha19
  1050  
  1051  ### FEATURES:
  1052  
  1053  - [rpc] [\#3333](https://github.com/tendermint/tendermint/issues/3333) Add `order_by` to `/tx_search` endpoint, allowing to change default ordering from asc to desc (@princesinha19)
  1054  
  1055  ### IMPROVEMENTS:
  1056  
  1057  - [proto] [\#4369](https://github.com/tendermint/tendermint/issues/4369) Add [buf](https://buf.build/) for usage with linting and checking if there are breaking changes with the master branch.
  1058  - [proto] [\#4369](https://github.com/tendermint/tendermint/issues/4369) Add `make proto-gen` cmd to generate proto stubs outside of GOPATH.
  1059  
  1060  ### BUG FIXES:
  1061  
  1062  - [node] [\#4311](https://github.com/tendermint/tendermint/issues/4311) Use `GRPCMaxOpenConnections` when creating the gRPC server, not `MaxOpenConnections`
  1063  - [rpc] [\#4319](https://github.com/tendermint/tendermint/issues/4319) Check `BlockMeta` is not nil in `/block` & `/block_by_hash`
  1064  
  1065  ## v0.33
  1066  
  1067  Special thanks to external contributors on this release: @mrekucci, @PSalant726, @princesinha19, @greg-szabo, @dongsam, @cuonglm, @jgimeno, @yenkhoon
  1068  
  1069  *January 14, 2020*
  1070  
  1071  This release contains breaking changes to the `Block#Header`, specifically
  1072  `NumTxs` and `TotalTxs` were removed (\#2521). Here's how this change affects
  1073  different modules:
  1074  
  1075  - apps: it breaks the ABCI header field numbering
  1076  - state: it breaks the format of `State` on disk
  1077  - RPC: all RPC requests which expose the header broke
  1078  - Go API: the `Header` broke
  1079  - P2P: since blocks go over the wire, technically the P2P protocol broke
  1080  
  1081  Also, blocks are significantly smaller 🔥 because we got rid of the redundant
  1082  information in `Block#LastCommit`. `Commit` now mainly consists of a signature
  1083  and a validator address plus a timestamp. Note we may remove the validator
  1084  address & timestamp fields in the future (see ADR-25).
  1085  
  1086  `lite2` package has been added to solve `lite` issues and introduce weak
  1087  subjectivity interface. Refer to the [spec](./spec/consensus/light-client/) for complete details.
  1088  `lite` package is now deprecated and will be removed in v0.34 release.
  1089  
  1090  ### BREAKING CHANGES:
  1091  
  1092  - CLI/RPC/Config
  1093  
  1094    - [rpc] [\#3471](https://github.com/tendermint/tendermint/issues/3471) Paginate `/validators` response (default: 30 vals per page)
  1095    - [rpc] [\#3188](https://github.com/tendermint/tendermint/issues/3188) Remove `BlockMeta` in `ResultBlock` in favor of `BlockId` for `/block`
  1096    - [rpc] `/block_results` response format updated (see RPC docs for details)
  1097      ```
  1098      {
  1099        "jsonrpc": "2.0",
  1100        "id": "",
  1101        "result": {
  1102          "height": "2109",
  1103          "txs_results": null,
  1104          "begin_block_events": null,
  1105          "end_block_events": null,
  1106          "validator_updates": null,
  1107          "consensus_param_updates": null
  1108        }
  1109      }
  1110      ```
  1111    - [rpc] [\#4141](https://github.com/tendermint/tendermint/pull/4141) Remove `#event` suffix from the ID in event responses.
  1112      `{"jsonrpc": "2.0", "id": 0, "result": ...}`
  1113    - [rpc] [\#4141](https://github.com/tendermint/tendermint/pull/4141) Switch to integer IDs instead of `json-client-XYZ`
  1114      ```
  1115      id=0 method=/subscribe
  1116      id=0 result=...
  1117      id=1 method=/abci_query
  1118      id=1 result=...
  1119      ```
  1120      - ID is unique for each request;
  1121      - Request.ID is now optional. Notification is a Request without an ID. Previously ID="" or ID=0 were considered as notifications.
  1122  
  1123    - [config] [\#4046](https://github.com/tendermint/tendermint/issues/4046) Rename tag(s) to CompositeKey & places where tag is still present it was renamed to event or events. Find how a compositeKey is constructed [here](https://github.com/tendermint/tendermint/blob/6d05c531f7efef6f0619155cf10ae8557dd7832f/docs/app-dev/indexing-transactions.md)
  1124      - You will have to generate a new config for your Tendermint node(s)
  1125    - [genesis] [\#2565](https://github.com/tendermint/tendermint/issues/2565) Add `consensus_params.evidence.max_age_duration`. Rename
  1126      `consensus_params.evidence.max_age` to `max_age_num_blocks`.
  1127    - [cli] [\#1771](https://github.com/tendermint/tendermint/issues/1771) `tendermint lite` now uses new light client package (`lite2`)
  1128      and has 3 more flags: `--trusting-period`, `--trusted-height` and
  1129      `--trusted-hash`
  1130  
  1131  - Apps
  1132  
  1133    - [tm-bench] Removed tm-bench in favor of [tm-load-test](https://github.com/informalsystems/tm-load-test)
  1134  
  1135  - Go API
  1136  
  1137    - [rpc] [\#3953](https://github.com/tendermint/tendermint/issues/3953) Modify NewHTTP, NewXXXClient functions to return an error on invalid remote instead of panicking (@mrekucci)
  1138    - [rpc/client] [\#3471](https://github.com/tendermint/tendermint/issues/3471) `Validators` now requires two more args: `page` and `perPage`
  1139    - [libs/common] [\#3262](https://github.com/tendermint/tendermint/issues/3262) Make error the last parameter of `Task` (@PSalant726)
  1140    - [cs/types] [\#3262](https://github.com/tendermint/tendermint/issues/3262) Rename `GotVoteFromUnwantedRoundError` to `ErrGotVoteFromUnwantedRound` (@PSalant726)
  1141    - [libs/common] [\#3862](https://github.com/tendermint/tendermint/issues/3862) Remove `errors.go` from `libs/common`
  1142    - [libs/common] [\#4230](https://github.com/tendermint/tendermint/issues/4230) Move `KV` out of common to its own pkg
  1143    - [libs/common] [\#4230](https://github.com/tendermint/tendermint/issues/4230) Rename `cmn.KVPair(s)` to `kv.Pair(s)`s
  1144    - [libs/common] [\#4232](https://github.com/tendermint/tendermint/issues/4232) Move `Service` & `BaseService` from `libs/common` to `libs/service`
  1145    - [libs/common] [\#4232](https://github.com/tendermint/tendermint/issues/4232) Move `common/nil.go` to `types/utils.go` & make the functions private
  1146    - [libs/common] [\#4231](https://github.com/tendermint/tendermint/issues/4231) Move random functions from `libs/common` into pkg `rand`
  1147    - [libs/common] [\#4237](https://github.com/tendermint/tendermint/issues/4237) Move byte functions from `libs/common` into pkg `bytes`
  1148    - [libs/common] [\#4237](https://github.com/tendermint/tendermint/issues/4237) Move throttletimer functions from `libs/common` into pkg `timer`
  1149    - [libs/common] [\#4237](https://github.com/tendermint/tendermint/issues/4237) Move tempfile functions from `libs/common` into pkg `tempfile`
  1150    - [libs/common] [\#4240](https://github.com/tendermint/tendermint/issues/4240) Move os functions from `libs/common` into pkg `os`
  1151    - [libs/common] [\#4240](https://github.com/tendermint/tendermint/issues/4240) Move net functions from `libs/common` into pkg `net`
  1152    - [libs/common] [\#4240](https://github.com/tendermint/tendermint/issues/4240) Move mathematical functions and types out of `libs/common` to `math` pkg
  1153    - [libs/common] [\#4240](https://github.com/tendermint/tendermint/issues/4240) Move string functions out of `libs/common` to `strings` pkg
  1154    - [libs/common] [\#4240](https://github.com/tendermint/tendermint/issues/4240) Move async functions out of `libs/common` to `async` pkg
  1155    - [libs/common] [\#4240](https://github.com/tendermint/tendermint/issues/4240) Move bit functions out of `libs/common` to `bits` pkg
  1156    - [libs/common] [\#4240](https://github.com/tendermint/tendermint/issues/4240) Move cmap functions out of `libs/common` to `cmap` pkg
  1157    - [libs/common] [\#4258](https://github.com/tendermint/tendermint/issues/4258) Remove `Rand` from all `rand` pkg functions
  1158    - [types] [\#2565](https://github.com/tendermint/tendermint/issues/2565) Remove `MockBadEvidence` & `MockGoodEvidence` in favor of `MockEvidence`
  1159  
  1160  - Blockchain Protocol
  1161  
  1162    - [abci] [\#2521](https://github.com/tendermint/tendermint/issues/2521) Remove `TotalTxs` and `NumTxs` from `Header`
  1163    - [types] [\#4151](https://github.com/tendermint/tendermint/pull/4151) Enforce ordering of votes in DuplicateVoteEvidence to be lexicographically sorted on BlockID
  1164    - [types] [\#1648](https://github.com/tendermint/tendermint/issues/1648) Change `Commit` to consist of just signatures
  1165  
  1166  - P2P Protocol
  1167  
  1168    - [p2p] [\#3668](https://github.com/tendermint/tendermint/pull/3668) Make `SecretConnection` non-malleable
  1169  
  1170  - [proto] [\#3986](https://github.com/tendermint/tendermint/pull/3986) Prefix protobuf types to avoid name conflicts.
  1171    - ABCI becomes `tendermint.abci.types` with the new API endpoint `/tendermint.abci.types.ABCIApplication/`
  1172    - core_grpc becomes `tendermint.rpc.grpc` with the new API endpoint `/tendermint.rpc.grpc.BroadcastAPI/`
  1173    - merkle becomes `tendermint.crypto.merkle`
  1174    - libs.common becomes `tendermint.libs.common`
  1175    - proto3 becomes `tendermint.types.proto3`
  1176  
  1177  ### FEATURES:
  1178  
  1179  - [p2p] [\#4053](https://github.com/tendermint/tendermint/issues/4053) Add `unconditional_peer_ids` and `persistent_peers_max_dial_period` config variables (see ADR-050) (@dongsam)
  1180  - [tools] [\#4227](https://github.com/tendermint/tendermint/pull/4227) Implement `tendermint debug kill` and
  1181    `tendermint debug dump` commands for Tendermint node debugging functionality. See `--help` in both
  1182    commands for further documentation and usage.
  1183  - [cli] [\#4234](https://github.com/tendermint/tendermint/issues/4234) Add `--db_backend and --db_dir` flags (@princesinha19)
  1184  - [cli] [\#4113](https://github.com/tendermint/tendermint/issues/4113) Add optional `--genesis_hash` flag to check genesis hash upon startup
  1185  - [config] [\#3831](https://github.com/tendermint/tendermint/issues/3831) Add support for [RocksDB](https://rocksdb.org/) (@Stumble)
  1186  - [rpc] [\#3985](https://github.com/tendermint/tendermint/issues/3985) Add new `/block_by_hash` endpoint, which allows to fetch a block by its hash (@princesinha19)
  1187  - [metrics] [\#4263](https://github.com/tendermint/tendermint/issues/4263) Add
  1188    - `consensus_validator_power`: track your validators power
  1189    - `consensus_validator_last_signed_height`: track at which height the validator last signed
  1190    - `consensus_validator_missed_blocks`: total amount of missed blocks for a validator
  1191    as gauges in prometheus for validator specific metrics
  1192  - [rpc/lib] [\#4248](https://github.com/tendermint/tendermint/issues/4248) RPC client basic authentication support (@greg-szabo)
  1193  - [lite2] [\#1771](https://github.com/tendermint/tendermint/issues/1771) Light client with weak subjectivity
  1194  
  1195  ### IMPROVEMENTS:
  1196  
  1197  - [rpc] [\#3188](https://github.com/tendermint/tendermint/issues/3188) Added `block_size` to `BlockMeta` this is reflected in `/blockchain`
  1198  - [types] [\#2521](https://github.com/tendermint/tendermint/issues/2521) Add `NumTxs` to `BlockMeta` and `EventDataNewBlockHeader`
  1199  - [p2p] [\#4185](https://github.com/tendermint/tendermint/pull/4185) Simplify `SecretConnection` handshake with merlin
  1200  - [cli] [\#4065](https://github.com/tendermint/tendermint/issues/4065) Add `--consensus.create_empty_blocks_interval` flag (@jgimeno)
  1201  - [docs] [\#4065](https://github.com/tendermint/tendermint/issues/4065) Document `--consensus.create_empty_blocks_interval` flag (@jgimeno)
  1202  - [crypto] [\#4190](https://github.com/tendermint/tendermint/pull/4190) Added SR25519 signature scheme
  1203  - [abci] [\#4177] kvstore: Return `LastBlockHeight` and `LastBlockAppHash` in `Info` (@princesinha19)
  1204  - [rpc] [\#2741](https://github.com/tendermint/tendermint/issues/2741) Add `proposer` to `/consensus_state` response (@princesinha19)
  1205  - [deps] [\#4289](https://github.com/tendermint/tendermint/pull/4289) Update tm-db to 0.4.0, this includes major breaking changes in the dep that change how errors are handled.
  1206  
  1207  ### BUG FIXES:
  1208  
  1209  - [rpc/lib][\#4051](https://github.com/tendermint/tendermint/pull/4131) Fix RPC client, which was previously resolving https protocol to http (@yenkhoon)
  1210  - [rpc] [\#4141](https://github.com/tendermint/tendermint/pull/4141) JSONRPCClient: validate that Response.ID matches Request.ID
  1211  - [rpc] [\#4141](https://github.com/tendermint/tendermint/pull/4141) WSClient: check for unsolicited responses
  1212  - [types] [\4164](https://github.com/tendermint/tendermint/pull/4164) Prevent temporary power overflows on validator updates
  1213  - [cs] [\#4069](https://github.com/tendermint/tendermint/issues/4069) Don't panic when block meta is not found in store (@gregzaitsev)
  1214  - [types] [\#4164](https://github.com/tendermint/tendermint/issues/4164) Prevent temporary power overflows on validator updates (joint
  1215    efforts of @gchaincl and @ancazamfir)
  1216  - [p2p] [\#4140](https://github.com/tendermint/tendermint/issues/4140) `SecretConnection`: use the transcript solely for authentication (i.e. MAC)
  1217  - [consensus/types] [\#4243](https://github.com/tendermint/tendermint/issues/4243) fix BenchmarkRoundStateDeepCopy panics (@cuonglm)
  1218  - [rpc] [\#4256](https://github.com/tendermint/tendermint/issues/4256) Pass `outCapacity` to `eventBus#Subscribe` when subscribing using a local client
  1219  
  1220  ## v0.32.13
  1221  
  1222  *August 5, 2020*
  1223  
  1224   ### BUG FIXES
  1225  
  1226   - [privval] [\#5112](https://github.com/tendermint/tendermint/issues/5112) If remote signer errors, don't retry (@melekes)
  1227  
  1228  ## v0.32.12
  1229  
  1230  *May 19, 2020*
  1231  
  1232  ### BUG FIXES
  1233  
  1234  - [p2p] [\#4847](https://github.com/tendermint/tendermint/pull/4847) Return masked IP (not the actual IP) in addrbook#groupKey (@melekes)
  1235  
  1236  ## v0.32.11
  1237  
  1238  *April 29, 2020*
  1239  
  1240  ### BUG FIXES:
  1241  
  1242  - [privval] [\#4275](https://github.com/tendermint/tendermint/issues/4275) Fix consensus failure when remote signer drops (@melekes)
  1243  
  1244  ## v0.32.10
  1245  
  1246  *April 6, 2020*
  1247  
  1248  This security release fixes:
  1249  
  1250  ### Denial of Service 1
  1251  
  1252  Tendermint 0.33.2 and earlier does not limit the number of P2P connection
  1253  requests. For each p2p connection, Tendermint allocates ~0.5MB. Even though
  1254  this memory is garbage collected once the connection is terminated (due to
  1255  duplicate IP or reaching a maximum number of inbound peers), temporary memory
  1256  spikes can lead to OOM (Out-Of-Memory) exceptions.
  1257  
  1258  Tendermint 0.33.3 (and 0.32.10) limits the total number of P2P incoming
  1259  connection requests to to `p2p.max_num_inbound_peers +
  1260  len(p2p.unconditional_peer_ids)`.
  1261  
  1262  Notes:
  1263  
  1264  - Tendermint does not rate limit P2P connection requests per IP (an attacker
  1265    can saturate all the inbound slots);
  1266  - Tendermint does not rate limit HTTP(S) requests. If you expose any RPC
  1267    endpoints to the public, please make sure to put in place some protection
  1268    (https://www.nginx.com/blog/rate-limiting-nginx/). We may implement this in
  1269    the future ([\#1696](https://github.com/tendermint/tendermint/issues/1696)).
  1270  
  1271  ### Denial of Service 2
  1272  
  1273  Tendermint 0.33.2 and earlier does not reclaim `activeID` of a peer after it's
  1274  removed in `Mempool` reactor. This does not happen all the time. It only
  1275  happens when a connection fails (for any reason) before the Peer is created and
  1276  added to all reactors. `RemovePeer` is therefore called before `AddPeer`, which
  1277  leads to always growing memory (`activeIDs` map). The `activeIDs` map has a
  1278  maximum size of 65535 and the node will panic if this map reaches the maximum.
  1279  An attacker can create a lot of connection attempts (exploiting Denial of
  1280  Service 1), which ultimately will lead to the node panicking.
  1281  
  1282  Tendermint 0.33.3 (and 0.32.10) claims `activeID` for a peer in `InitPeer`,
  1283  which is executed before `MConnection` is started.
  1284  
  1285  Notes:
  1286  
  1287  - `InitPeer` function was added to all reactors to combat a similar issue -
  1288    [\#3338](https://github.com/tendermint/tendermint/issues/3338);
  1289  - Denial of Service 2 is independent of Denial of Service 1 and can be executed
  1290    without it.
  1291  
  1292  **All clients are recommended to upgrade**
  1293  
  1294  Special thanks to [fudongbai](https://hackerone.com/fudongbai) for finding
  1295  and reporting this.
  1296  
  1297  ### SECURITY:
  1298  
  1299  - [mempool] Reserve IDs in InitPeer instead of AddPeer (@tessr)
  1300  - [p2p] Limit the number of incoming connections (@melekes)
  1301  
  1302  ## v0.32.9
  1303  
  1304  _January, 9, 2020_
  1305  
  1306  Special thanks to external contributors on this release: @greg-szabo, @gregzaitsev, @yenkhoon
  1307  
  1308  ### FEATURES:
  1309  
  1310  - [rpc/lib] [\#4248](https://github.com/tendermint/tendermint/issues/4248) RPC client basic authentication support (@greg-szabo)
  1311  
  1312  - [metrics] [\#4294](https://github.com/tendermint/tendermint/pull/4294) Add
  1313    - `consensus_validator_power`: track your validators power
  1314    - `consensus_validator_last_signed_height`: track at which height the validator last signed
  1315    - `consensus_validator_missed_blocks`: total amount of missed blocks for a validator
  1316      as gauges in prometheus for validator specific metrics
  1317  
  1318  ### BUG FIXES:
  1319  
  1320  - [rpc/lib] [\#4131](https://github.com/tendermint/tendermint/pull/4131) Fix RPC client, which was previously resolving https protocol to http (@yenkhoon)
  1321  - [cs] [\#4069](https://github.com/tendermint/tendermint/issues/4069) Don't panic when block meta is not found in store (@gregzaitsev)
  1322  
  1323  ## v0.32.8
  1324  
  1325  *November 19, 2019*
  1326  
  1327  Special thanks to external contributors on this release: @erikgrinaker, @guagualvcha, @hsyis, @cosmostuba, @whunmr, @austinabell
  1328  
  1329  
  1330  ### BREAKING CHANGES:
  1331  
  1332  - Go API
  1333  
  1334    - [libs/pubsub] [\#4070](https://github.com/tendermint/tendermint/pull/4070) `Query#(Matches|Conditions)` returns an error.
  1335  
  1336  ### IMPROVEMENTS:
  1337  
  1338  - [mempool] [\#4083](https://github.com/tendermint/tendermint/pull/4083) Added TxInfo parameter to CheckTx(), and removed CheckTxWithInfo() (@erikgrinaker)
  1339  - [mempool] [\#4057](https://github.com/tendermint/tendermint/issues/4057) Include peer ID when logging rejected txns (@erikgrinaker)
  1340  - [tools] [\#4023](https://github.com/tendermint/tendermint/issues/4023) Improved `tm-monitor` formatting of start time and avg tx throughput (@erikgrinaker)
  1341  - [p2p] [\#3991](https://github.com/tendermint/tendermint/issues/3991) Log "has been established or dialed" as debug log instead of Error for connected peers (@whunmr)
  1342  - [rpc] [\#4077](https://github.com/tendermint/tendermint/pull/4077) Added support for `EXISTS` clause to the Websocket query interface.
  1343  - [privval] Add `SignerDialerEndpointRetryWaitInterval` option (@cosmostuba)
  1344  - [crypto] Add `RegisterKeyType` to amino to allow external key types registration (@austinabell)
  1345  
  1346  ### BUG FIXES:
  1347  
  1348  - [libs/pubsub] [\#4070](https://github.com/tendermint/tendermint/pull/4070) Strip out non-numeric characters when attempting to match numeric values.
  1349  - [libs/pubsub] [\#4070](https://github.com/tendermint/tendermint/pull/4070) No longer panic in Query#(Matches|Conditions) preferring to return an error instead.
  1350  - [tools] [\#4023](https://github.com/tendermint/tendermint/issues/4023) Refresh `tm-monitor` health when validator count is updated (@erikgrinaker)
  1351  - [state] [\#4104](https://github.com/tendermint/tendermint/pull/4104) txindex/kv: Fsync data to disk immediately after receiving it (@guagualvcha)
  1352  - [state] [\#4095](https://github.com/tendermint/tendermint/pull/4095) txindex/kv: Return an error if there's one when the user searches for a tx (hash=X) (@hsyis)
  1353  
  1354  ## v0.32.7
  1355  
  1356  *October 18, 2019*
  1357  
  1358  This security release fixes a vulnerability found in the `consensus` package,
  1359  where an attacker could construct a `BlockPartMessage` message in such a way
  1360  that it will lead to consensus failure. A few similar issues have been
  1361  identified and fixed here.
  1362  
  1363  **All clients are recommended to upgrade**
  1364  
  1365  Special thanks to [elvishacker](https://hackerone.com/elvishacker) for finding
  1366  and reporting this.
  1367  
  1368  ### BREAKING CHANGES:
  1369  
  1370  - Go API
  1371    - [consensus] Modify `WAL#Write` and `WAL#WriteSync` to return an error if
  1372      they fail to write a message
  1373  
  1374  ### SECURITY:
  1375  
  1376  - [consensus] Validate incoming messages more throughly
  1377  
  1378  ## v0.32.6
  1379  
  1380  *October 8, 2019*
  1381  
  1382  The previous patch was insufficient because the attacker could still find a way
  1383  to submit a `nil` pubkey by constructing a `PubKeyMultisigThreshold` pubkey
  1384  with `nil` subpubkeys for example.
  1385  
  1386  This release provides multiple fixes, which include recovering from panics when
  1387  accepting new peers and only allowing `ed25519` pubkeys.
  1388  
  1389  **All clients are recommended to upgrade**
  1390  
  1391  Special thanks to [fudongbai](https://hackerone.com/fudongbai) for pointing
  1392  this out.
  1393  
  1394  ### SECURITY:
  1395  
  1396  - [p2p] [\#4030](https://github.com/tendermint/tendermint/issues/4030) Only allow ed25519 pubkeys when connecting
  1397  
  1398  ## v0.32.5
  1399  
  1400  *October 1, 2019*
  1401  
  1402  This release fixes a major security vulnerability found in the `p2p` package.
  1403  All clients are recommended to upgrade. See
  1404  [\#4030](https://github.com/tendermint/tendermint/issues/4030) for details.
  1405  
  1406  Special thanks to [fudongbai](https://hackerone.com/fudongbai) for discovering
  1407  and reporting this issue.
  1408  
  1409  ### SECURITY:
  1410  
  1411  - [p2p] [\#4030](https://github.com/tendermint/tendermint/issues/4030) Fix for panic on nil public key send to a peer
  1412  
  1413  ## v0.32.4
  1414  
  1415  *September 19, 2019*
  1416  
  1417  Special thanks to external contributors on this release: @jon-certik, @gracenoah, @PSalant726, @gchaincl
  1418  
  1419  ### BREAKING CHANGES:
  1420  
  1421  - CLI/RPC/Config
  1422    - [rpc] [\#3984](https://github.com/tendermint/tendermint/issues/3984) Add `MempoolClient` interface to `Client` interface
  1423  
  1424  ### IMPROVEMENTS:
  1425  
  1426  - [rpc] [\#2010](https://github.com/tendermint/tendermint/issues/2010) Add NewHTTPWithClient and NewJSONRPCClientWithHTTPClient (note these and NewHTTP, NewJSONRPCClient functions panic if remote is invalid) (@gracenoah)
  1427  - [rpc] [\#3882](https://github.com/tendermint/tendermint/issues/3882) Add custom marshalers to proto messages to disable `omitempty`
  1428  - [deps] [\#3952](https://github.com/tendermint/tendermint/pull/3952) bump github.com/go-kit/kit from 0.6.0 to 0.9.0
  1429  - [deps] [\#3951](https://github.com/tendermint/tendermint/pull/3951) bump github.com/stretchr/testify from 1.3.0 to 1.4.0
  1430  - [deps] [\#3945](https://github.com/tendermint/tendermint/pull/3945) bump github.com/gorilla/websocket from 1.2.0 to 1.4.1
  1431  - [deps] [\#3948](https://github.com/tendermint/tendermint/pull/3948) bump github.com/libp2p/go-buffer-pool from 0.0.1 to 0.0.2
  1432  - [deps] [\#3943](https://github.com/tendermint/tendermint/pull/3943) bump github.com/fortytw2/leaktest from 1.2.0 to 1.3.0
  1433  - [deps] [\#3939](https://github.com/tendermint/tendermint/pull/3939) bump github.com/rs/cors from 1.6.0 to 1.7.0
  1434  - [deps] [\#3937](https://github.com/tendermint/tendermint/pull/3937) bump github.com/magiconair/properties from 1.8.0 to 1.8.1
  1435  - [deps] [\#3947](https://github.com/tendermint/tendermint/pull/3947) update gogo/protobuf version from v1.2.1 to v1.3.0
  1436  - [deps] [\#4001](https://github.com/tendermint/tendermint/pull/4001) bump github.com/tendermint/tm-db from 0.1.1 to 0.2.0
  1437  
  1438  ### BUG FIXES:
  1439  
  1440  - [consensus] [\#3908](https://github.com/tendermint/tendermint/issues/3908) Wait `timeout_commit` to pass even if `create_empty_blocks` is `false`
  1441  - [mempool] [\#3968](https://github.com/tendermint/tendermint/issues/3968) Fix memory loading error on 32-bit machines (@jon-certik)
  1442  
  1443  ## v0.32.3
  1444  
  1445  *August 28, 2019*
  1446  
  1447  @climber73 wrote the [Writing a Tendermint Core application in Java
  1448  (gRPC)](https://github.com/tendermint/tendermint/blob/master/docs/guides/java.md) <!-- markdown-link-check-disable-line -->
  1449  guide.
  1450  
  1451  Special thanks to external contributors on this release:
  1452  @gchaincl, @bluele, @climber73
  1453  
  1454  ### IMPROVEMENTS:
  1455  
  1456  - [consensus] [\#3839](https://github.com/tendermint/tendermint/issues/3839) Reduce "Error attempting to add vote" message severity (Error -> Info)
  1457  - [mempool] [\#3877](https://github.com/tendermint/tendermint/pull/3877) Make `max_tx_bytes` configurable instead of `max_msg_bytes` (@bluele)
  1458  - [privval] [\#3370](https://github.com/tendermint/tendermint/issues/3370) Refactor and simplify validator/kms connection handling. Please refer to [this comment](https://github.com/tendermint/tendermint/pull/3370#issue-257360971) for details
  1459  - [rpc] [\#3880](https://github.com/tendermint/tendermint/issues/3880) Document endpoints with `swagger`, introduce contract tests of implementation against documentation
  1460  
  1461  ### BUG FIXES:
  1462  
  1463  - [config] [\#3868](https://github.com/tendermint/tendermint/issues/3868) Move misplaced `max_msg_bytes` into mempool section (@bluele)
  1464  - [rpc] [\#3910](https://github.com/tendermint/tendermint/pull/3910) Fix DATA RACE in HTTP client (@gchaincl)
  1465  - [store] [\#3893](https://github.com/tendermint/tendermint/issues/3893) Fix "Unregistered interface types.Evidence" panic
  1466  
  1467  ## v0.32.2
  1468  
  1469  *July 31, 2019*
  1470  
  1471  Special thanks to external contributors on this release:
  1472  @ruseinov, @bluele, @guagualvcha
  1473  
  1474  ### BREAKING CHANGES:
  1475  
  1476  - Go API
  1477    - [libs] [\#3811](https://github.com/tendermint/tendermint/issues/3811) Remove `db` from libs in favor of `https://github.com/tendermint/tm-db`
  1478  
  1479  ### FEATURES:
  1480  
  1481  - [blockchain] [\#3561](https://github.com/tendermint/tendermint/issues/3561) Add early version of the new blockchain reactor, which is supposed to be more modular and testable compared to the old version. To try it, you'll have to change `version` in the config file, [here](https://github.com/tendermint/tendermint/blob/master/config/toml.go#L303) NOTE: It's not ready for a production yet. For further information, see [ADR-40](https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-040-blockchain-reactor-refactor.md) & [ADR-43](https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-043-blockchain-riri-org.md)
  1482  - [mempool] [\#3826](https://github.com/tendermint/tendermint/issues/3826) Make `max_msg_bytes` configurable(@bluele)
  1483  - [node] [\#3846](https://github.com/tendermint/tendermint/pull/3846) Allow replacing existing p2p.Reactor(s) using [`CustomReactors`
  1484    option](https://godoc.org/github.com/tendermint/tendermint/node#CustomReactors).
  1485    Warning: beware of accidental name clashes. Here is the list of existing
  1486    reactors: MEMPOOL, BLOCKCHAIN, CONSENSUS, EVIDENCE, PEX.
  1487  - [rpc] [\#3818](https://github.com/tendermint/tendermint/issues/3818) Make `max_body_bytes` and `max_header_bytes` configurable(@bluele)
  1488  - [rpc] [\#2252](https://github.com/tendermint/tendermint/issues/2252) Add `/broadcast_evidence` endpoint to submit double signing and other types of evidence
  1489  
  1490  ### IMPROVEMENTS:
  1491  
  1492  - [abci] [\#3809](https://github.com/tendermint/tendermint/issues/3809) Recover from application panics in `server/socket_server.go` to allow socket cleanup (@ruseinov)
  1493  - [p2p] [\#3664](https://github.com/tendermint/tendermint/issues/3664) p2p/conn: reuse buffer when write/read from secret connection(@guagualvcha)
  1494  - [p2p] [\#3834](https://github.com/tendermint/tendermint/issues/3834) Do not write 'Couldn't connect to any seeds' error log if there are no seeds in config file
  1495  - [rpc] [\#3076](https://github.com/tendermint/tendermint/issues/3076) Improve transaction search performance
  1496  
  1497  ### BUG FIXES:
  1498  
  1499  - [p2p] [\#3644](https://github.com/tendermint/tendermint/issues/3644) Fix error logging for connection stop (@defunctzombie)
  1500  - [rpc] [\#3813](https://github.com/tendermint/tendermint/issues/3813) Return err if page is incorrect (less than 0 or greater than total pages)
  1501  
  1502  ## v0.32.1
  1503  
  1504  *July 15, 2019*
  1505  
  1506  Special thanks to external contributors on this release:
  1507  @ParthDesai, @climber73, @jim380, @ashleyvega
  1508  
  1509  This release contains a minor enhancement to the ABCI and some breaking changes to our libs folder, namely:
  1510  - CheckTx requests include a `CheckTxType` enum that can be set to `Recheck` to indicate to the application that this transaction was already checked/validated and certain expensive operations (like checking signatures) can be skipped
  1511  - Removed various functions from `libs` pkgs
  1512  
  1513  ### BREAKING CHANGES:
  1514  
  1515  - Go API
  1516  
  1517    -  [abci] [\#2127](https://github.com/tendermint/tendermint/issues/2127) The CheckTx and DeliverTx methods in the ABCI `Application` interface now take structs  as arguments (RequestCheckTx and RequestDeliverTx, respectively), instead of just the raw tx bytes. This allows more information to be passed to these methods, for instance, indicating whether a tx has already been checked.
  1518    - [libs] Remove unused `db/debugDB` and `common/colors.go` & `errors/errors.go` files (@marbar3778)
  1519    - [libs] [\#2432](https://github.com/tendermint/tendermint/issues/2432) Remove unused `common/heap.go` file (@marbar3778)
  1520    - [libs] Remove unused `date.go`, `io.go`. Remove `GoPath()`, `Prompt()` and `IsDirEmpty()` functions from `os.go` (@marbar3778)
  1521    - [libs] Remove unused `FailRand()` func and minor clean up to `fail.go`(@marbar3778)
  1522  
  1523  ### FEATURES:
  1524  
  1525  - [node] Add variadic argument to `NewNode` to support functional options, allowing the Node to be more easily customized.
  1526  - [node][\#3730](https://github.com/tendermint/tendermint/pull/3730) Add `CustomReactors` option to `NewNode` allowing caller to pass
  1527    custom reactors to run inside Tendermint node (@ParthDesai)
  1528  - [abci] [\#2127](https://github.com/tendermint/tendermint/issues/2127)RequestCheckTx has a new field, `CheckTxType`, which can take values of `CheckTxType_New` and `CheckTxType_Recheck`, indicating whether this is a new tx being checked for the first time or whether this tx is being rechecked after a block commit. This allows applications to skip certain expensive operations, like signature checking, if they've already been done once. see [docs](https://github.com/tendermint/tendermint/blob/eddb433d7c082efbeaf8974413a36641519ee895/docs/spec/abci/apps.md#mempool-connection)
  1529  
  1530  ### IMPROVEMENTS:
  1531  
  1532  - [rpc] [\#3700](https://github.com/tendermint/tendermint/issues/3700) Make possible to set absolute paths for TLS cert and key (@climber73)
  1533  - [abci] [\#3513](https://github.com/tendermint/tendermint/issues/3513) Call the reqRes callback after the resCb so they always happen in the same order
  1534  
  1535  ### BUG FIXES:
  1536  
  1537  - [p2p] [\#3338](https://github.com/tendermint/tendermint/issues/3338) Prevent "sent next PEX request too soon" errors by not calling
  1538    ensurePeers outside of ensurePeersRoutine
  1539  - [behaviour] [\3772](https://github.com/tendermint/tendermint/pull/3772) Return correct reason in MessageOutOfOrder (@jim380)
  1540  - [config] [\#3723](https://github.com/tendermint/tendermint/issues/3723) Add consensus_params to testnet config generation; document time_iota_ms (@ashleyvega)
  1541  
  1542  
  1543  ## v0.32.0
  1544  
  1545  *June 25, 2019*
  1546  
  1547  Special thanks to external contributors on this release:
  1548  @needkane, @SebastianElvis, @andynog, @Yawning, @wooparadog
  1549  
  1550  This release contains breaking changes to our build and release processes, ABCI,
  1551  and the RPC, namely:
  1552  - Use Go modules instead of dep
  1553  - Bring active development to the `master` Github branch
  1554  - ABCI Tags are now Events - see
  1555    [docs](https://github.com/tendermint/tendermint/blob/60827f75623b92eff132dc0eff5b49d2025c591e/docs/spec/abci/abci.md#events)
  1556  - Bind RPC to localhost by default, not to the public interface [UPGRADING/RPC_Changes](./UPGRADING.md#rpc_changes)
  1557  
  1558  ### BREAKING CHANGES:
  1559  
  1560  * CLI/RPC/Config
  1561    - [cli] [\#3613](https://github.com/tendermint/tendermint/issues/3613) Switch from golang/dep to Go Modules to resolve dependencies:
  1562      It is recommended to switch to Go Modules if your project has tendermint as
  1563      a dependency. Read more on Modules here:
  1564      https://github.com/golang/go/wiki/Modules
  1565    - [config] [\#3632](https://github.com/tendermint/tendermint/pull/3632) Removed `leveldb` as generic
  1566      option for `db_backend`. Must be `goleveldb` or `cleveldb`.
  1567    - [rpc] [\#3616](https://github.com/tendermint/tendermint/issues/3616) Fix field names for `/block_results` response (eg. `results.DeliverTx`
  1568      -> `results.deliver_tx`). See docs for details.
  1569    - [rpc] [\#3724](https://github.com/tendermint/tendermint/issues/3724) RPC now binds to `127.0.0.1` by default instead of `0.0.0.0`
  1570  
  1571  * Apps
  1572    - [abci] [\#1859](https://github.com/tendermint/tendermint/issues/1859) `ResponseCheckTx`, `ResponseDeliverTx`, `ResponseBeginBlock`,
  1573      and `ResponseEndBlock` now include `Events` instead of `Tags`. Each `Event`
  1574      contains a `type` and a list of `attributes` (list of key-value pairs)
  1575      allowing for inclusion of multiple distinct events in each response.
  1576  
  1577  * Go API
  1578    - [abci] [\#3193](https://github.com/tendermint/tendermint/issues/3193) Use RequestDeliverTx and RequestCheckTx in the ABCI
  1579      Application interface
  1580    - [libs/db] [\#3632](https://github.com/tendermint/tendermint/pull/3632) Removed deprecated `LevelDBBackend` const
  1581      If you have `db_backend` set to `leveldb` in your config file, please
  1582      change it to `goleveldb` or `cleveldb`.
  1583    - [p2p] [\#3521](https://github.com/tendermint/tendermint/issues/3521) Remove NewNetAddressStringWithOptionalID
  1584  
  1585  * Blockchain Protocol
  1586  
  1587  * P2P Protocol
  1588  
  1589  ### FEATURES:
  1590  
  1591  ### IMPROVEMENTS:
  1592  - [abci/examples] [\#3659](https://github.com/tendermint/tendermint/issues/3659) Change validator update tx format in the `persistent_kvstore` to use base64 for pubkeys instead of hex (@needkane)
  1593  - [consensus] [\#3656](https://github.com/tendermint/tendermint/issues/3656) Exit if SwitchToConsensus fails
  1594  - [p2p] [\#3666](https://github.com/tendermint/tendermint/issues/3666) Add per channel telemetry to improve reactor observability
  1595  - [rpc] [\#3686](https://github.com/tendermint/tendermint/pull/3686) `HTTPClient#Call` returns wrapped errors, so a caller could use `errors.Cause` to retrieve an error code. (@wooparadog)
  1596  
  1597  ### BUG FIXES:
  1598  - [libs/db] [\#3717](https://github.com/tendermint/tendermint/issues/3717) Fixed the BoltDB backend's Batch.Delete implementation (@Yawning)
  1599  - [libs/db] [\#3718](https://github.com/tendermint/tendermint/issues/3718) Fixed the BoltDB backend's Get and Iterator implementation (@Yawning)
  1600  - [node] [\#3716](https://github.com/tendermint/tendermint/issues/3716) Fix a bug where `nil` is recorded as node's address
  1601  - [node] [\#3741](https://github.com/tendermint/tendermint/issues/3741) Fix profiler blocking the entire node
  1602  
  1603  *Tendermint 0.31 release series has reached End-Of-Life and is no longer supported.*
  1604  
  1605  ## v0.31.12
  1606  
  1607  *April 6, 2020*
  1608  
  1609  This security release fixes:
  1610  
  1611  ### Denial of Service 1
  1612  
  1613  Tendermint 0.33.2 and earlier does not limit the number of P2P connection requests.
  1614  For each p2p connection, Tendermint allocates ~0.5MB. Even though this
  1615  memory is garbage collected once the connection is terminated (due to duplicate
  1616  IP or reaching a maximum number of inbound peers), temporary memory spikes can
  1617  lead to OOM (Out-Of-Memory) exceptions.
  1618  
  1619  Tendermint 0.33.3, 0.32.10, and 0.31.12 limit the total number of P2P incoming
  1620  connection requests to to `p2p.max_num_inbound_peers +
  1621  len(p2p.unconditional_peer_ids)`.
  1622  
  1623  Notes:
  1624  
  1625  - Tendermint does not rate limit P2P connection requests per IP (an attacker
  1626    can saturate all the inbound slots);
  1627  - Tendermint does not rate limit HTTP(S) requests. If you expose any RPC
  1628    endpoints to the public, please make sure to put in place some protection
  1629    (https://www.nginx.com/blog/rate-limiting-nginx/). We may implement this in
  1630    the future ([\#1696](https://github.com/tendermint/tendermint/issues/1696)).
  1631  
  1632  ### Denial of Service 2
  1633  
  1634  Tendermint 0.33.2 and earlier does not reclaim `activeID` of a peer after it's
  1635  removed in `Mempool` reactor. This does not happen all the time. It only
  1636  happens when a connection fails (for any reason) before the Peer is created and
  1637  added to all reactors. `RemovePeer` is therefore called before `AddPeer`, which
  1638  leads to always growing memory (`activeIDs` map). The `activeIDs` map has a
  1639  maximum size of 65535 and the node will panic if this map reaches the maximum.
  1640  An attacker can create a lot of connection attempts (exploiting Denial of
  1641  Service 1), which ultimately will lead to the node panicking.
  1642  
  1643  Tendermint 0.33.3, 0.32.10, and 0.31.12 claim `activeID` for a peer in `InitPeer`,
  1644  which is executed before `MConnection` is started.
  1645  
  1646  Notes:
  1647  
  1648  - `InitPeer` function was added to all reactors to combat a similar issue -
  1649    [\#3338](https://github.com/tendermint/tendermint/issues/3338);
  1650  - Denial of Service 2 is independent of Denial of Service 1 and can be executed
  1651    without it.
  1652  
  1653  **All clients are recommended to upgrade**
  1654  
  1655  Special thanks to [fudongbai](https://hackerone.com/fudongbai) for finding
  1656  and reporting this.
  1657  
  1658  
  1659  ### SECURITY:
  1660  
  1661  - [mempool] Reserve IDs in InitPeer instead of AddPeer (@tessr)
  1662  - [p2p] Limit the number of incoming connections (@melekes)
  1663  
  1664  ## v0.31.11
  1665  
  1666  *October 18, 2019*
  1667  
  1668  This security release fixes a vulnerability found in the `consensus` package,
  1669  where an attacker could construct a `BlockPartMessage` message in such a way
  1670  that it will lead to consensus failure. A few similar issues have been
  1671  identified and fixed here.
  1672  
  1673  **All clients are recommended to upgrade**
  1674  
  1675  Special thanks to [elvishacker](https://hackerone.com/elvishacker) for finding
  1676  and reporting this.
  1677  
  1678  
  1679  ### BREAKING CHANGES:
  1680  
  1681  - Go API
  1682    - [consensus] Modify `WAL#Write` and `WAL#WriteSync` to return an error if
  1683      they fail to write a message
  1684  
  1685  ### SECURITY:
  1686  
  1687  - [consensus] Validate incoming messages more throughly
  1688  
  1689  ## v0.31.10
  1690  
  1691  *October 8, 2019*
  1692  
  1693  The previous patch was insufficient because the attacker could still find a way
  1694  to submit a `nil` pubkey by constructing a `PubKeyMultisigThreshold` pubkey
  1695  with `nil` subpubkeys for example.
  1696  
  1697  This release provides multiple fixes, which include recovering from panics when
  1698  accepting new peers and only allowing `ed25519` pubkeys.
  1699  
  1700  **All clients are recommended to upgrade**
  1701  
  1702  Special thanks to [fudongbai](https://hackerone.com/fudongbai) for pointing
  1703  this out.
  1704  
  1705  
  1706  ### SECURITY:
  1707  
  1708  - [p2p] [\#4030](https://github.com/tendermint/tendermint/issues/4030) Only allow ed25519 pubkeys when connecting
  1709  
  1710  ## v0.31.9
  1711  
  1712  *October 1, 2019*
  1713  
  1714  This release fixes a major security vulnerability found in the `p2p` package.
  1715  All clients are recommended to upgrade. See
  1716  [\#4030](https://github.com/tendermint/tendermint/issues/4030) for details.
  1717  
  1718  Special thanks to [fudongbai](https://hackerone.com/fudongbai) for discovering
  1719  and reporting this issue.
  1720  
  1721  
  1722  ### SECURITY:
  1723  
  1724  - [p2p] [\#4030](https://github.com/tendermint/tendermint/issues/4030) Fix for panic on nil public key send to a peer
  1725  
  1726  ### BUG FIXES:
  1727  
  1728  - [node] [\#3716](https://github.com/tendermint/tendermint/issues/3716) Fix a bug where `nil` is recorded as node's address
  1729  - [node] [\#3741](https://github.com/tendermint/tendermint/issues/3741) Fix profiler blocking the entire node
  1730  
  1731  ## v0.31.8
  1732  
  1733  *July 29, 2019*
  1734  
  1735  This releases fixes one bug in the PEX reactor and adds a `recover` to the Go's
  1736  ABCI server, which allows it to properly cleanup.
  1737  
  1738  ### IMPROVEMENTS:
  1739  - [abci] [\#3809](https://github.com/tendermint/tendermint/issues/3809) Recover from application panics in `server/socket_server.go` to allow socket cleanup (@ruseinov)
  1740  
  1741  ### BUG FIXES:
  1742  - [p2p] [\#3338](https://github.com/tendermint/tendermint/issues/3338) Prevent "sent next PEX request too soon" errors by not calling
  1743    ensurePeers outside of ensurePeersRoutine
  1744  
  1745  ## v0.31.7
  1746  
  1747  *June 3, 2019*
  1748  
  1749  This releases fixes a regression in the mempool introduced in v0.31.6.
  1750  The regression caused the invalid committed txs to be proposed in blocks over and
  1751  over again.
  1752  
  1753  ### BUG FIXES:
  1754  - [mempool] [\#3699](https://github.com/tendermint/tendermint/issues/3699) Remove all committed txs from the mempool.
  1755      This reverts the change from v0.31.6 where we only remove valid txs from the mempool.
  1756      Note this means malicious proposals can cause txs to be dropped from the
  1757      mempools of other nodes by including them in blocks before they are valid.
  1758      See [\#3322](https://github.com/tendermint/tendermint/issues/3322).
  1759  
  1760  ## v0.31.6
  1761  
  1762  *May 31st, 2019*
  1763  
  1764  This release contains many fixes and improvements, primarily for p2p functionality.
  1765  It also fixes a security issue in the mempool package.
  1766  
  1767  With this release, Tendermint now supports [boltdb](https://github.com/etcd-io/bbolt), although
  1768  in experimental mode. Feel free to try and report to us any findings/issues.
  1769  Note also that the build tags for compiling CLevelDB have changed.
  1770  
  1771  Special thanks to external contributors on this release:
  1772  @guagualvcha, @james-ray, @gregdhill, @climber73, @yutianwu,
  1773  @carlosflrs, @defunctzombie, @leoluk, @needkane, @CrocdileChan
  1774  
  1775  ### BREAKING CHANGES:
  1776  
  1777  * Go API
  1778    - [libs/common] Removed deprecated `PanicSanity`, `PanicCrisis`,
  1779      `PanicConsensus` and `PanicQ`
  1780    - [mempool, state] [\#2659](https://github.com/tendermint/tendermint/issues/2659) `Mempool` now an interface that lives in the mempool package.
  1781      See issue and PR for more details.
  1782    - [p2p] [\#3346](https://github.com/tendermint/tendermint/issues/3346) `Reactor#InitPeer` method is added to `Reactor` interface
  1783    - [types] [\#1648](https://github.com/tendermint/tendermint/issues/1648) `Commit#VoteSignBytes` signature was changed
  1784  
  1785  ### FEATURES:
  1786  - [node] [\#2659](https://github.com/tendermint/tendermint/issues/2659) Add `node.Mempool()` method, which allows you to access mempool
  1787  - [libs/db] [\#3604](https://github.com/tendermint/tendermint/pull/3604) Add experimental support for bolt db (etcd's fork of bolt) (@CrocdileChan)
  1788  
  1789  ### IMPROVEMENTS:
  1790  - [cli] [\#3585](https://github.com/tendermint/tendermint/issues/3585) Add `--keep-addr-book` option to `unsafe_reset_all` cmd to not
  1791    clear the address book (@climber73)
  1792  - [cli] [\#3160](https://github.com/tendermint/tendermint/issues/3160) Add
  1793    `--config=<path-to-config>` option to `testnet` cmd (@gregdhill)
  1794  - [cli] [\#3661](https://github.com/tendermint/tendermint/pull/3661) Add
  1795    `--hostname-suffix`, `--hostname` and `--random-monikers` options to `testnet`
  1796    cmd for greater peer address/identity generation flexibility.
  1797  - [crypto] [\#3672](https://github.com/tendermint/tendermint/issues/3672) Return more info in the `AddSignatureFromPubKey` error
  1798  - [cs/replay] [\#3460](https://github.com/tendermint/tendermint/issues/3460) Check appHash for each block
  1799  - [libs/db] [\#3611](https://github.com/tendermint/tendermint/issues/3611) Conditional compilation
  1800    * Use `cleveldb` tag instead of `gcc` to compile Tendermint with CLevelDB or
  1801      use `make build_c` / `make install_c` (full instructions can be found at
  1802      https://docs.tendermint.com/master/introduction/install.html#compile-with-cleveldb-support)
  1803    * Use `boltdb` tag to compile Tendermint with bolt db
  1804  - [node] [\#3362](https://github.com/tendermint/tendermint/issues/3362) Return an error if `persistent_peers` list is invalid (except
  1805    when IP lookup fails)
  1806  - [p2p] [\#3463](https://github.com/tendermint/tendermint/pull/3463) Do not log "Can't add peer's address to addrbook" error for a private peer (@guagualvcha)
  1807  - [p2p] [\#3531](https://github.com/tendermint/tendermint/issues/3531) Terminate session on nonce wrapping (@climber73)
  1808  - [pex] [\#3647](https://github.com/tendermint/tendermint/pull/3647) Dial seeds, if any, instead of crawling peers first (@defunctzombie)
  1809  - [rpc] [\#3534](https://github.com/tendermint/tendermint/pull/3534) Add support for batched requests/responses in JSON RPC
  1810  - [rpc] [\#3362](https://github.com/tendermint/tendermint/issues/3362) `/dial_seeds` & `/dial_peers` return errors if addresses are
  1811    incorrect (except when IP lookup fails)
  1812  
  1813  ### BUG FIXES:
  1814  - [consensus] [\#3067](https://github.com/tendermint/tendermint/issues/3067) Fix replay from appHeight==0 with validator set changes (@james-ray)
  1815  - [consensus] [\#3304](https://github.com/tendermint/tendermint/issues/3304) Create a peer state in consensus reactor before the peer
  1816    is started (@guagualvcha)
  1817  - [lite] [\#3669](https://github.com/tendermint/tendermint/issues/3669) Add context parameter to RPC Handlers in proxy routes (@yutianwu)
  1818  - [mempool] [\#3322](https://github.com/tendermint/tendermint/issues/3322) When a block is committed, only remove committed txs from the mempool
  1819  that were valid (ie. `ResponseDeliverTx.Code == 0`)
  1820  - [p2p] [\#3338](https://github.com/tendermint/tendermint/issues/3338) Ensure `RemovePeer` is always called before `InitPeer` (upon a peer
  1821    reconnecting to our node)
  1822  - [p2p] [\#3532](https://github.com/tendermint/tendermint/issues/3532) Limit the number of attempts to connect to a peer in seed mode
  1823    to 16 (as a result, the node will stop retrying after a 35 hours time window)
  1824  - [p2p] [\#3362](https://github.com/tendermint/tendermint/issues/3362) Allow inbound peers to be persistent, including for seed nodes.
  1825  - [pex] [\#3603](https://github.com/tendermint/tendermint/pull/3603) Dial seeds when addrbook needs more addresses (@defunctzombie)
  1826  
  1827  ### OTHERS:
  1828  - [networks] fixes ansible integration script (@carlosflrs)
  1829  
  1830  ## v0.31.5
  1831  
  1832  *April 16th, 2019*
  1833  
  1834  This release fixes a regression from v0.31.4 where, in existing chains that
  1835  were upgraded, `/validators` could return an empty validator set. This is true
  1836  for almost all heights, given the validator set remains the same.
  1837  
  1838  Special thanks to external contributors on this release:
  1839  @brapse, @guagualvcha, @dongsam, @phucc
  1840  
  1841  ### IMPROVEMENTS:
  1842  
  1843  - [libs/common] `CMap`: slight optimization in `Keys()` and `Values()` (@phucc)
  1844  - [gitignore] gitignore: add .vendor-new (@dongsam)
  1845  
  1846  ### BUG FIXES:
  1847  
  1848  - [state] [\#3537](https://github.com/tendermint/tendermint/pull/3537#issuecomment-482711833)
  1849    `LoadValidators`: do not return an empty validator set
  1850  - [blockchain] [\#3457](https://github.com/tendermint/tendermint/issues/3457)
  1851    Fix "peer did not send us anything" in `fast_sync` mode when under high pressure
  1852  
  1853  ## v0.31.4
  1854  
  1855  *April 12th, 2019*
  1856  
  1857  This release fixes a regression from v0.31.3 which used the peer's `SocketAddr` to add the peer to
  1858  the address book. This swallowed the peer's self-reported port which is important in case of reconnect.
  1859  It brings back `NetAddress()` to `NodeInfo` and uses it instead of `SocketAddr` for adding peers.
  1860  Additionally, it improves response time on the `/validators` or `/status` RPC endpoints.
  1861  As a side-effect it makes these RPC endpoint more difficult to DoS and fixes a performance degradation in `ExecCommitBlock`.
  1862  Also, it contains an [ADR](https://github.com/tendermint/tendermint/pull/3539) that proposes decoupling the
  1863  responsibility for peer behaviour from the `p2p.Switch` (by @brapse).
  1864  
  1865  Special thanks to external contributors on this release:
  1866  @brapse, @guagualvcha, @mydring
  1867  
  1868  ### IMPROVEMENTS:
  1869  
  1870  - [p2p] [\#3463](https://github.com/tendermint/tendermint/pull/3463) Do not log "Can't add peer's address to addrbook" error for a private peer
  1871  - [p2p] [\#3547](https://github.com/tendermint/tendermint/pull/3547) Fix a couple of annoying typos (@mdyring)
  1872  
  1873  ### BUG FIXES:
  1874  
  1875  - [docs] [\#3514](https://github.com/tendermint/tendermint/issues/3514) Fix block.Header.Time description (@melekes)
  1876  - [p2p] [\#2716](https://github.com/tendermint/tendermint/issues/2716) Check if we're already connected to peer right before dialing it (@melekes)
  1877  - [p2p] [\#3545](https://github.com/tendermint/tendermint/issues/3545) Add back `NetAddress()` to `NodeInfo` and use it instead of peer's `SocketAddr()` when adding a peer to the `PEXReactor` (potential fix for [\#3532](https://github.com/tendermint/tendermint/issues/3532))
  1878  - [state] [\#3438](https://github.com/tendermint/tendermint/pull/3438)
  1879    Persist validators every 100000 blocks even if no changes to the set
  1880    occurred (@guagualvcha). This
  1881    1) Prevents possible DoS attack using `/validators` or `/status` RPC
  1882    endpoints. Before response time was growing linearly with height if no
  1883    changes were made to the validator set.
  1884    2) Fixes performance degradation in `ExecCommitBlock` where we call
  1885    `LoadValidators` for each `Evidence` in the block.
  1886  
  1887  ## v0.31.3
  1888  
  1889  *April 1st, 2019*
  1890  
  1891  This release includes two security sensitive fixes: it ensures generated private
  1892  keys are valid, and it prevents certain DNS lookups that would cause the node to
  1893  panic if the lookup failed.
  1894  
  1895  ### BREAKING CHANGES:
  1896  * Go API
  1897    - [crypto/secp256k1] [\#3439](https://github.com/tendermint/tendermint/issues/3439)
  1898      The `secp256k1.GenPrivKeySecp256k1` function has changed to guarantee that it returns a valid key, which means it
  1899      will return a different private key than in previous versions for the same secret.
  1900  
  1901  ### BUG FIXES:
  1902  
  1903  - [crypto/secp256k1] [\#3439](https://github.com/tendermint/tendermint/issues/3439)
  1904      Ensure generated private keys are valid by randomly sampling until a valid key is found.
  1905      Previously, it was possible (though rare!) to generate keys that exceeded the curve order.
  1906      Such keys would lead to invalid signatures.
  1907  - [p2p] [\#3522](https://github.com/tendermint/tendermint/issues/3522) Memoize
  1908    socket address in peer connections to avoid DNS lookups. Previously, failed
  1909    DNS lookups could cause the node to panic.
  1910  
  1911  ## v0.31.2
  1912  
  1913  *March 30th, 2019*
  1914  
  1915  This release fixes a regression from v0.31.1 where Tendermint panics under
  1916  mempool load for external ABCI apps.
  1917  
  1918  Special thanks to external contributors on this release:
  1919  @guagualvcha
  1920  
  1921  ### BREAKING CHANGES:
  1922  
  1923  * CLI/RPC/Config
  1924  
  1925  * Apps
  1926  
  1927  * Go API
  1928    - [libs/autofile] [\#3504](https://github.com/tendermint/tendermint/issues/3504) Remove unused code in autofile package. Deleted functions: `Group.Search`, `Group.FindLast`, `GroupReader.ReadLine`, `GroupReader.PushLine`, `MakeSimpleSearchFunc` (@guagualvcha)
  1929  
  1930  * Blockchain Protocol
  1931  
  1932  * P2P Protocol
  1933  
  1934  ### FEATURES:
  1935  
  1936  ### IMPROVEMENTS:
  1937  
  1938  - [circle] [\#3497](https://github.com/tendermint/tendermint/issues/3497) Move release management to CircleCI
  1939  
  1940  ### BUG FIXES:
  1941  
  1942  - [mempool] [\#3512](https://github.com/tendermint/tendermint/issues/3512) Fix panic from concurrent access to txsMap, a regression for external ABCI apps introduced in v0.31.1
  1943  
  1944  ## v0.31.1
  1945  
  1946  *March 27th, 2019*
  1947  
  1948  This release contains a major improvement for the mempool that reduce the amount of sent data by about 30%
  1949  (see some numbers below).
  1950  It also fixes a memory leak in the mempool and adds TLS support to the RPC server by providing a certificate and key in the config.
  1951  
  1952  Special thanks to external contributors on this release:
  1953  @brapse, @guagualvcha, @HaoyangLiu, @needkane, @TraceBundy
  1954  
  1955  ### BREAKING CHANGES:
  1956  
  1957  * CLI/RPC/Config
  1958  
  1959  * Apps
  1960  
  1961  * Go API
  1962    - [crypto] [\#3426](https://github.com/tendermint/tendermint/pull/3426) Remove `Ripemd160` helper method (@needkane)
  1963    - [libs/common] [\#3429](https://github.com/tendermint/tendermint/pull/3429) Remove `RepeatTimer` (also `TimerMaker` and `Ticker` interface)
  1964    - [rpc/client] [\#3458](https://github.com/tendermint/tendermint/issues/3458) Include `NetworkClient` interface into `Client` interface
  1965    - [types] [\#3448](https://github.com/tendermint/tendermint/issues/3448) Remove method `PB2TM.ConsensusParams`
  1966  
  1967  * Blockchain Protocol
  1968  
  1969  * P2P Protocol
  1970  
  1971  ### FEATURES:
  1972  
  1973   - [rpc] [\#3419](https://github.com/tendermint/tendermint/issues/3419) Start HTTPS server if `rpc.tls_cert_file` and `rpc.tls_key_file` are provided in the config (@guagualvcha)
  1974  
  1975  ### IMPROVEMENTS:
  1976  
  1977  - [docs] [\#3140](https://github.com/tendermint/tendermint/issues/3140) Formalize proposer election algorithm properties
  1978  - [docs] [\#3482](https://github.com/tendermint/tendermint/issues/3482) Fix broken links (@brapse)
  1979  - [mempool] [\#2778](https://github.com/tendermint/tendermint/issues/2778) No longer send txs back to peers who sent it to you.
  1980  Also, limit to 65536 active peers.
  1981  This vastly improves the bandwidth consumption of nodes.
  1982  For instance, for a 4 node localnet, in a test sending 250byte txs for 120 sec. at 500 txs/sec (total of 15MB):
  1983    - total bytes received from 1st node:
  1984       - before: 42793967 (43MB)
  1985       - after: 30003256 (30MB)
  1986    - total bytes sent to 1st node:
  1987       - before: 30569339 (30MB)
  1988       - after: 19304964 (19MB)
  1989  - [p2p] [\#3475](https://github.com/tendermint/tendermint/issues/3475) Simplify `GetSelectionWithBias` for addressbook (@guagualvcha)
  1990  - [rpc/lib/client] [\#3430](https://github.com/tendermint/tendermint/issues/3430) Disable compression for HTTP client to prevent GZIP-bomb DoS attacks (@guagualvcha)
  1991  
  1992  ### BUG FIXES:
  1993  
  1994  - [blockchain] [\#2699](https://github.com/tendermint/tendermint/issues/2699) Update the maxHeight when a peer is removed
  1995  - [mempool] [\#3478](https://github.com/tendermint/tendermint/issues/3478) Fix memory-leak related to `broadcastTxRoutine` (@HaoyangLiu)
  1996  
  1997  
  1998  ## v0.31.0
  1999  
  2000  *March 16th, 2019*
  2001  
  2002  Special thanks to external contributors on this release:
  2003  @danil-lashin, @guagualvcha, @siburu, @silasdavis, @srmo, @Stumble, @svenstaro
  2004  
  2005  This release is primarily about the new pubsub implementation, dubbed `pubsub 2.0`, and related changes,
  2006  like configurable limits on the number of active RPC subscriptions at a time (`max_subscription_clients`).
  2007  Pubsub 2.0 is an improved version of the older pubsub that is non-blocking and has a nicer API.
  2008  Note the improved pubsub API also resulted in some improvements to the HTTPClient interface and the API for WebSocket subscriptions.
  2009  This release also adds a configurable limit to the mempool size (`max_txs_bytes`, default 1GB)
  2010  and a configurable timeout for the `/broadcast_tx_commit` endpoint.
  2011  
  2012  See the [v0.31.0
  2013  Milestone](https://github.com/tendermint/tendermint/milestone/19?closed=1) for
  2014  more details.
  2015  
  2016  
  2017  ### BREAKING CHANGES:
  2018  
  2019  * CLI/RPC/Config
  2020    - [config] [\#2920](https://github.com/tendermint/tendermint/issues/2920) Remove `consensus.blocktime_iota` parameter
  2021    - [rpc] [\#3227](https://github.com/tendermint/tendermint/issues/3227) New PubSub design does not block on clients when publishing
  2022      messages. Slow clients may miss messages and receive an error, terminating
  2023      the subscription.
  2024    - [rpc] [\#3269](https://github.com/tendermint/tendermint/issues/2826) Limit number of unique clientIDs with open subscriptions. Configurable via `rpc.max_subscription_clients`
  2025    - [rpc] [\#3269](https://github.com/tendermint/tendermint/issues/2826) Limit number of unique queries a given client can subscribe to at once. Configurable via `rpc.max_subscriptions_per_client`.
  2026    - [rpc] [\#3435](https://github.com/tendermint/tendermint/issues/3435) Default ReadTimeout and WriteTimeout changed to 10s. WriteTimeout can increased by setting `rpc.timeout_broadcast_tx_commit` in the config.
  2027    - [rpc/client] [\#3269](https://github.com/tendermint/tendermint/issues/3269) Update `EventsClient` interface to reflect new pubsub/eventBus API [ADR-33](https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-033-pubsub.md). This includes `Subscribe`, `Unsubscribe`, and `UnsubscribeAll` methods.
  2028  
  2029  * Apps
  2030    - [abci] [\#3403](https://github.com/tendermint/tendermint/issues/3403) Remove `time_iota_ms` from BlockParams. This is a
  2031      ConsensusParam but need not be exposed to the app for now.
  2032    - [abci] [\#2920](https://github.com/tendermint/tendermint/issues/2920) Rename `consensus_params.block_size` to `consensus_params.block` in ABCI ConsensusParams
  2033  
  2034  * Go API
  2035    - [libs/common] TrapSignal accepts logger as a first parameter and does not block anymore
  2036      * previously it was dumping "captured ..." msg to os.Stdout
  2037      * TrapSignal should not be responsible for blocking thread of execution
  2038    - [libs/db] [\#3397](https://github.com/tendermint/tendermint/pull/3397) Add possibility to `Close()` `Batch` to prevent memory leak when using ClevelDB. (@Stumble)
  2039    - [types] [\#3354](https://github.com/tendermint/tendermint/issues/3354) Remove RoundState from EventDataRoundState
  2040    - [rpc] [\#3435](https://github.com/tendermint/tendermint/issues/3435) `StartHTTPServer` / `StartHTTPAndTLSServer` now require a Config (use `rpcserver.DefaultConfig`)
  2041  
  2042  * Blockchain Protocol
  2043  
  2044  * P2P Protocol
  2045  
  2046  ### FEATURES:
  2047  - [config] [\#3269](https://github.com/tendermint/tendermint/issues/2826) New configuration values for controlling RPC subscriptions:
  2048      - `rpc.max_subscription_clients` sets the maximum number of unique clients
  2049        with open subscriptions
  2050      - `rpc.max_subscriptions_per_client`sets the maximum number of unique
  2051        subscriptions from a given client
  2052      - `rpc.timeout_broadcast_tx_commit` sets the time to wait for a tx to be committed during `/broadcast_tx_commit`
  2053  - [types] [\#2920](https://github.com/tendermint/tendermint/issues/2920) Add `time_iota_ms` to block's consensus parameters (not exposed to the application)
  2054  - [lite] [\#3269](https://github.com/tendermint/tendermint/issues/3269) Add `/unsubscribe_all` endpoint to unsubscribe from all events
  2055  - [mempool] [\#3079](https://github.com/tendermint/tendermint/issues/3079) Bound mempool memory usage via the `mempool.max_txs_bytes` configuration value. Set to 1GB by default. The mempool's current `txs_total_bytes` is exposed via `total_bytes` field in
  2056    `/num_unconfirmed_txs` and `/unconfirmed_txs` RPC endpoints.
  2057  
  2058  ### IMPROVEMENTS:
  2059  - [all] [\#3385](https://github.com/tendermint/tendermint/issues/3385), [\#3386](https://github.com/tendermint/tendermint/issues/3386) Various linting improvements
  2060  - [crypto] [\#3371](https://github.com/tendermint/tendermint/issues/3371) Copy in secp256k1 package from go-ethereum instead of importing
  2061    go-ethereum (@silasdavis)
  2062  - [deps] [\#3382](https://github.com/tendermint/tendermint/issues/3382) Don't pin repos without releases
  2063  - [deps] [\#3357](https://github.com/tendermint/tendermint/issues/3357), [\#3389](https://github.com/tendermint/tendermint/issues/3389), [\#3392](https://github.com/tendermint/tendermint/issues/3392) Update gogo/protobuf, golang/protobuf, levigo, golang.org/x/crypto
  2064  - [libs/common] [\#3238](https://github.com/tendermint/tendermint/issues/3238) exit with zero (0) code upon receiving SIGTERM/SIGINT
  2065  - [libs/db] [\#3378](https://github.com/tendermint/tendermint/issues/3378) CLevelDB#Stats now returns the following properties:
  2066    - leveldb.num-files-at-level{n}
  2067    - leveldb.stats
  2068    - leveldb.sstables
  2069    - leveldb.blockpool
  2070    - leveldb.cachedblock
  2071    - leveldb.openedtables
  2072    - leveldb.alivesnaps
  2073    - leveldb.aliveiters
  2074  - [privval] [\#3351](https://github.com/tendermint/tendermint/pull/3351) First part of larger refactoring that clarifies and separates concerns in the privval package.
  2075  
  2076  ### BUG FIXES:
  2077  - [blockchain] [\#3358](https://github.com/tendermint/tendermint/pull/3358) Fix timer leak in `BlockPool` (@guagualvcha)
  2078  - [cmd] [\#3408](https://github.com/tendermint/tendermint/issues/3408) Fix `testnet` command's panic when creating non-validator configs (using `--n` flag) (@srmo)
  2079  - [libs/db/remotedb/grpcdb] [\#3402](https://github.com/tendermint/tendermint/issues/3402) Close Iterator/ReverseIterator after use
  2080  - [libs/pubsub] [\#951](https://github.com/tendermint/tendermint/issues/951), [\#1880](https://github.com/tendermint/tendermint/issues/1880) Use non-blocking send when dispatching messages [ADR-33](https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-033-pubsub.md)
  2081  - [lite] [\#3364](https://github.com/tendermint/tendermint/issues/3364) Fix `/validators` and `/abci_query` proxy endpoints
  2082    (@guagualvcha)
  2083  - [p2p/conn] [\#3347](https://github.com/tendermint/tendermint/issues/3347) Reject all-zero shared secrets in the Diffie-Hellman step of secret-connection
  2084  - [p2p] [\#3369](https://github.com/tendermint/tendermint/issues/3369) Do not panic when filter times out
  2085  - [p2p] [\#3359](https://github.com/tendermint/tendermint/pull/3359) Fix reconnecting report duplicate ID error due to race condition between adding peer to peerSet and starting it (@guagualvcha)
  2086  
  2087  ## v0.30.2
  2088  
  2089  *March 10th, 2019*
  2090  
  2091  This release fixes a CLevelDB memory leak. It was happening because we were not
  2092  closing the WriteBatch object after use. See [levigo's
  2093  godoc](https://godoc.org/github.com/jmhodges/levigo#WriteBatch.Close) for the
  2094  Close method. Special thanks goes to @Stumble who both reported an issue in
  2095  [cosmos-sdk](https://github.com/cosmos/cosmos-sdk/issues/3842) and provided a
  2096  fix here.
  2097  
  2098  ### BREAKING CHANGES:
  2099  
  2100  * Go API
  2101    - [libs/db] [\#3842](https://github.com/cosmos/cosmos-sdk/issues/3842) Add Close() method to Batch interface (@Stumble)
  2102  
  2103  ### BUG FIXES:
  2104  - [libs/db] [\#3842](https://github.com/cosmos/cosmos-sdk/issues/3842) Fix CLevelDB memory leak (@Stumble)
  2105  
  2106  ## v0.30.1
  2107  
  2108  *February 20th, 2019*
  2109  
  2110  This release fixes a consensus halt and a DataCorruptionError after restart
  2111  discovered in `game_of_stakes_6`. It also fixes a security issue in the p2p
  2112  handshake by authenticating the NetAddress.ID of the peer we're dialing.
  2113  
  2114  ### IMPROVEMENTS:
  2115  
  2116  * [config] [\#3291](https://github.com/tendermint/tendermint/issues/3291) Make
  2117    config.ResetTestRootWithChainID() create concurrency-safe test directories.
  2118  
  2119  ### BUG FIXES:
  2120  
  2121  * [consensus] [\#3295](https://github.com/tendermint/tendermint/issues/3295)
  2122    Flush WAL on stop to prevent data corruption during graceful shutdown.
  2123  * [consensus] [\#3302](https://github.com/tendermint/tendermint/issues/3302)
  2124    Fix possible halt by resetting TriggeredTimeoutPrecommit before starting next height.
  2125  * [rpc] [\#3251](https://github.com/tendermint/tendermint/issues/3251) Fix
  2126    `/net_info#peers#remote_ip` format. New format spec:
  2127    * dotted decimal ("192.0.2.1"), if ip is an IPv4 or IP4-mapped IPv6 address
  2128    * IPv6 ("2001:db8::1"), if ip is a valid IPv6 address
  2129  * [cmd] [\#3314](https://github.com/tendermint/tendermint/issues/3314) Return
  2130    an error on `show_validator` when the private validator file does not exist.
  2131  * [p2p] [\#3010](https://github.com/tendermint/tendermint/issues/3010#issuecomment-464287627)
  2132    Authenticate a peer against its NetAddress.ID when dialing.
  2133  
  2134  ## v0.30.0
  2135  
  2136  *February 8th, 2019*
  2137  
  2138  This release fixes yet another issue with the proposer selection algorithm.
  2139  We hope it's the last one, but we won't be surprised if it's not.
  2140  We plan to one day expose the selection algorithm more directly to
  2141  the application ([\#3285](https://github.com/tendermint/tendermint/issues/3285)), and even to support randomness ([\#763](https://github.com/tendermint/tendermint/issues/763)). <!-- markdown-link-check-disable-line -->
  2142  For more, see issues marked
  2143  [proposer-selection](https://github.com/tendermint/tendermint/labels/proposer-selection).
  2144  
  2145  This release also includes a fix to prevent Tendermint from including the same
  2146  piece of evidence in more than one block. This issue was reported by @chengwenxi in our
  2147  [bug bounty program](https://hackerone.com/cosmos).
  2148  
  2149  ### BREAKING CHANGES:
  2150  
  2151  * Apps
  2152    - [state] [\#3222](https://github.com/tendermint/tendermint/issues/3222)
  2153      Duplicate updates for the same validator are forbidden. Apps must ensure
  2154      that a given `ResponseEndBlock.ValidatorUpdates` contains only one entry per pubkey.
  2155  
  2156  * Go API
  2157    - [types] [\#3222](https://github.com/tendermint/tendermint/issues/3222)
  2158      Remove `Add` and `Update` methods from `ValidatorSet` in favor of new
  2159      `UpdateWithChangeSet`. This allows updates to be applied as a set, instead of
  2160      one at a time.
  2161  
  2162  * Block Protocol
  2163    - [state] [\#3286](https://github.com/tendermint/tendermint/issues/3286) Blocks that include already committed evidence are invalid.
  2164  
  2165  * P2P Protocol
  2166    - [consensus] [\#3222](https://github.com/tendermint/tendermint/issues/3222)
  2167      Validator updates are applied as a set, instead of one at a time, thus
  2168      impacting the proposer priority calculation. This ensures that the proposer
  2169      selection algorithm does not depend on the order of updates in
  2170      `ResponseEndBlock.ValidatorUpdates`.
  2171  
  2172  ### IMPROVEMENTS:
  2173  - [crypto] [\#3279](https://github.com/tendermint/tendermint/issues/3279) Use `btcec.S256().N` directly instead of hard coding a copy.
  2174  
  2175  ### BUG FIXES:
  2176  - [state] [\#3222](https://github.com/tendermint/tendermint/issues/3222) Fix validator set updates so they are applied as a set, rather
  2177    than one at a time. This makes the proposer selection algorithm independent of
  2178    the order of updates in `ResponseEndBlock.ValidatorUpdates`.
  2179  - [evidence] [\#3286](https://github.com/tendermint/tendermint/issues/3286) Don't add committed evidence to evidence pool.
  2180  
  2181  ## v0.29.2
  2182  
  2183  *February 7th, 2019*
  2184  
  2185  Special thanks to external contributors on this release:
  2186  @ackratos, @rickyyangz
  2187  
  2188  **Note**: This release contains security sensitive patches in the `p2p` and
  2189  `crypto` packages:
  2190  - p2p:
  2191    - Partial fix for MITM attacks on the p2p connection. MITM conditions may
  2192      still exist. See [\#3010](https://github.com/tendermint/tendermint/issues/3010).
  2193  - crypto:
  2194    - Eliminate our fork of `btcd` and use the `btcd/btcec` library directly for
  2195      native secp256k1 signing. Note we still modify the signature encoding to
  2196      prevent malleability.
  2197    - Support the libsecp256k1 library via CGo through the `go-ethereum/crypto/secp256k1` package.
  2198    - Eliminate MixEntropy functions
  2199  
  2200  ### BREAKING CHANGES:
  2201  
  2202  * Go API
  2203    - [crypto] [\#3278](https://github.com/tendermint/tendermint/issues/3278) Remove
  2204      MixEntropy functions
  2205    - [types] [\#3245](https://github.com/tendermint/tendermint/issues/3245) Commit uses `type CommitSig Vote` instead of `Vote` directly.
  2206      In preparation for removing redundant fields from the commit [\#1648](https://github.com/tendermint/tendermint/issues/1648)
  2207  
  2208  ### IMPROVEMENTS:
  2209  - [consensus] [\#3246](https://github.com/tendermint/tendermint/issues/3246) Better logging and notes on recovery for corrupted WAL file
  2210  - [crypto] [\#3163](https://github.com/tendermint/tendermint/issues/3163) Use ethereum's libsecp256k1 go-wrapper for signatures when cgo is available
  2211  - [crypto] [\#3162](https://github.com/tendermint/tendermint/issues/3162) Wrap btcd instead of forking it to keep up with fixes (used if cgo is not available)
  2212  - [makefile] [\#3233](https://github.com/tendermint/tendermint/issues/3233) Use golangci-lint instead of go-metalinter
  2213  - [tools] [\#3218](https://github.com/tendermint/tendermint/issues/3218) Add go-deadlock tool to help detect deadlocks
  2214  - [tools] [\#3106](https://github.com/tendermint/tendermint/issues/3106) Add tm-signer-harness test harness for remote signers
  2215  - [tests] [\#3258](https://github.com/tendermint/tendermint/issues/3258) Fixed a bunch of non-deterministic test failures
  2216  
  2217  ### BUG FIXES:
  2218  - [node] [\#3186](https://github.com/tendermint/tendermint/issues/3186) EventBus and indexerService should be started before first block (for replay last block on handshake) execution (@ackratos)
  2219  - [p2p] [\#3232](https://github.com/tendermint/tendermint/issues/3232) Fix infinite loop leading to addrbook deadlock for seed nodes
  2220  - [p2p] [\#3247](https://github.com/tendermint/tendermint/issues/3247) Fix panic in SeedMode when calling FlushStop and OnStop
  2221    concurrently
  2222  - [p2p] [\#3040](https://github.com/tendermint/tendermint/issues/3040) Fix MITM on secret connection by checking low-order points
  2223  - [privval] [\#3258](https://github.com/tendermint/tendermint/issues/3258) Fix race between sign requests and ping requests in socket that was causing messages to be corrupted
  2224  
  2225  ## v0.29.1
  2226  
  2227  *January 24, 2019*
  2228  
  2229  Special thanks to external contributors on this release:
  2230  @infinytum, @gauthamzz
  2231  
  2232  This release contains two important fixes: one for p2p layer where we sometimes
  2233  were not closing connections and one for consensus layer where consensus with
  2234  no empty blocks (`create_empty_blocks = false`) could halt.
  2235  
  2236  
  2237  ### IMPROVEMENTS:
  2238  - [pex] [\#3037](https://github.com/tendermint/tendermint/issues/3037) Only log "Reached max attempts to dial" once
  2239  - [rpc] [\#3159](https://github.com/tendermint/tendermint/issues/3159) Expose
  2240    `triggered_timeout_commit` in the `/dump_consensus_state`
  2241  
  2242  ### BUG FIXES:
  2243  - [consensus] [\#3199](https://github.com/tendermint/tendermint/issues/3199) Fix consensus halt with no empty blocks from not resetting triggeredTimeoutCommit
  2244  - [p2p] [\#2967](https://github.com/tendermint/tendermint/issues/2967) Fix file descriptor leak
  2245  
  2246  ## v0.29.0
  2247  
  2248  *January 21, 2019*
  2249  
  2250  Special thanks to external contributors on this release:
  2251  @bradyjoestar, @kunaldhariwal, @gauthamzz, @hrharder
  2252  
  2253  This release is primarily about making some breaking changes to
  2254  the Block protocol version before Cosmos launch, and to fixing more issues
  2255  in the proposer selection algorithm discovered on Cosmos testnets.
  2256  
  2257  The Block protocol changes include using a standard Merkle tree format (RFC 6962),
  2258  fixing some inconsistencies between field orders in Vote and Proposal structs,
  2259  and constraining the hash of the ConsensusParams to include only a few fields.
  2260  
  2261  The proposer selection algorithm saw significant progress,
  2262  including a [formal proof by @cwgoes for the base-case in Idris](https://github.com/cwgoes/tm-proposer-idris)
  2263  and a [much more detailed specification (still in progress) by
  2264  @ancazamfir](https://github.com/tendermint/tendermint/pull/3140).
  2265  
  2266  Fixes to the proposer selection algorithm include normalizing the proposer
  2267  priorities to mitigate the effects of large changes to the validator set.
  2268  That said, we just discovered [another bug](https://github.com/tendermint/tendermint/issues/3181),
  2269  which will be fixed in the next breaking release.
  2270  
  2271  While we are trying to stabilize the Block protocol to preserve compatibility
  2272  with old chains, there may be some final changes yet to come before Cosmos
  2273  launch as we continue to audit and test the software.
  2274  
  2275  
  2276  ### BREAKING CHANGES:
  2277  
  2278  * CLI/RPC/Config
  2279  
  2280  * Apps
  2281    - [state] [\#3049](https://github.com/tendermint/tendermint/issues/3049) Total voting power of the validator set is upper bounded by
  2282      `MaxInt64 / 8`. Apps must ensure they do not return changes to the validator
  2283      set that cause this maximum to be exceeded.
  2284  
  2285  * Go API
  2286    - [node] [\#3082](https://github.com/tendermint/tendermint/issues/3082) MetricsProvider now requires you to pass a chain ID
  2287    - [types] [\#2713](https://github.com/tendermint/tendermint/issues/2713) Rename `TxProof.LeafHash` to `TxProof.Leaf`
  2288    - [crypto/merkle] [\#2713](https://github.com/tendermint/tendermint/issues/2713) `SimpleProof.Verify` takes a `leaf` instead of a
  2289      `leafHash` and performs the hashing itself
  2290  
  2291  * Blockchain Protocol
  2292    * [crypto/merkle] [\#2713](https://github.com/tendermint/tendermint/issues/2713) Merkle trees now match the RFC 6962 specification
  2293    * [types] [\#3078](https://github.com/tendermint/tendermint/issues/3078) Re-order Timestamp and BlockID in CanonicalVote so it's
  2294      consistent with CanonicalProposal (BlockID comes
  2295      first)
  2296    * [types] [\#3165](https://github.com/tendermint/tendermint/issues/3165) Hash of ConsensusParams only includes BlockSize.MaxBytes and
  2297      BlockSize.MaxGas
  2298  
  2299  * P2P Protocol
  2300    - [consensus] [\#3049](https://github.com/tendermint/tendermint/issues/3049) Normalize priorities to not exceed `2*TotalVotingPower` to mitigate unfair proposer selection
  2301      heavily preferring earlier joined validators in the case of an early bonded large validator unbonding
  2302  
  2303  ### FEATURES:
  2304  
  2305  ### IMPROVEMENTS:
  2306  - [rpc] [\#3065](https://github.com/tendermint/tendermint/issues/3065) Return maxPerPage (100), not defaultPerPage (30) if `per_page` is greater than the max 100.
  2307  - [instrumentation] [\#3082](https://github.com/tendermint/tendermint/issues/3082) Add `chain_id` label for all metrics
  2308  
  2309  ### BUG FIXES:
  2310  - [crypto] [\#3164](https://github.com/tendermint/tendermint/issues/3164) Update `btcd` fork for rare signRFC6979 bug
  2311  - [lite] [\#3171](https://github.com/tendermint/tendermint/issues/3171) Fix verifying large validator set changes
  2312  - [log] [\#3125](https://github.com/tendermint/tendermint/issues/3125) Fix year format
  2313  - [mempool] [\#3168](https://github.com/tendermint/tendermint/issues/3168) Limit tx size to fit in the max reactor msg size
  2314  - [scripts] [\#3147](https://github.com/tendermint/tendermint/issues/3147) Fix json2wal for large block parts (@bradyjoestar)
  2315  
  2316  ## v0.28.1
  2317  
  2318  *January 18th, 2019*
  2319  
  2320  Special thanks to external contributors on this release:
  2321  @HaoyangLiu
  2322  
  2323  
  2324  ### BUG FIXES:
  2325  - [consensus] Fix consensus halt from proposing blocks with too much evidence
  2326  
  2327  ## v0.28.0
  2328  
  2329  *January 16th, 2019*
  2330  
  2331  Special thanks to external contributors on this release:
  2332  @fmauricios, @gianfelipe93, @husio, @needkane, @srmo, @yutianwu
  2333  
  2334  This release is primarily about upgrades to the `privval` system -
  2335  separating the `priv_validator.json` into distinct config and data files, and
  2336  refactoring the socket validator to support reconnections.
  2337  
  2338  **Note:** Please backup your existing `priv_validator.json` before using this
  2339  version.
  2340  
  2341  See [UPGRADING.md](UPGRADING.md) for more details.
  2342  
  2343  ### BREAKING CHANGES:
  2344  
  2345  * CLI/RPC/Config
  2346    - [cli] Removed `--proxy_app=dummy` option. Use `kvstore` (`persistent_kvstore`) instead.
  2347    - [cli] Renamed `--proxy_app=nilapp` to `--proxy_app=noop`.
  2348    - [config] [\#2992](https://github.com/tendermint/tendermint/issues/2992) `allow_duplicate_ip` is now set to false
  2349    - [privval] [\#1181](https://github.com/tendermint/tendermint/issues/1181) Split `priv_validator.json` into immutable (`config/priv_validator_key.json`) and mutable (`data/priv_validator_state.json`) parts (@yutianwu)
  2350    - [privval] [\#2926](https://github.com/tendermint/tendermint/issues/2926) Split up `PubKeyMsg` into `PubKeyRequest` and `PubKeyResponse` to be consistent with other message types
  2351    - [privval] [\#2923](https://github.com/tendermint/tendermint/issues/2923) Listen for unix socket connections instead of dialing them
  2352  
  2353  * Apps
  2354  
  2355  * Go API
  2356    - [types] [\#2981](https://github.com/tendermint/tendermint/issues/2981) Remove `PrivValidator.GetAddress()`
  2357  
  2358  * Blockchain Protocol
  2359  
  2360  * P2P Protocol
  2361  
  2362  ### FEATURES:
  2363  - [rpc] [\#3052](https://github.com/tendermint/tendermint/issues/3052) Include peer's remote IP in `/net_info`
  2364  
  2365  ### IMPROVEMENTS:
  2366  - [consensus] [\#3086](https://github.com/tendermint/tendermint/issues/3086) Log peerID on ignored votes (@srmo)
  2367  - [docs] [\#3061](https://github.com/tendermint/tendermint/issues/3061) Added specification for signing consensus msgs at
  2368    ./docs/spec/consensus/signing.md
  2369  - [privval] [\#2948](https://github.com/tendermint/tendermint/issues/2948) Memoize pubkey so it's only requested once on startup
  2370  - [privval] [\#2923](https://github.com/tendermint/tendermint/issues/2923) Retry RemoteSigner connections on error
  2371  
  2372  ### BUG FIXES:
  2373  
  2374  - [build] [\#3085](https://github.com/tendermint/tendermint/issues/3085) Fix `Version` field in build scripts (@husio)
  2375  - [crypto/multisig] [\#3102](https://github.com/tendermint/tendermint/issues/3102) Fix multisig keys address length
  2376  - [crypto/encoding] [\#3101](https://github.com/tendermint/tendermint/issues/3101) Fix `PubKeyMultisigThreshold` unmarshaling into `crypto.PubKey` interface
  2377  - [p2p/conn] [\#3111](https://github.com/tendermint/tendermint/issues/3111) Make SecretConnection thread safe
  2378  - [rpc] [\#3053](https://github.com/tendermint/tendermint/issues/3053) Fix internal error in `/tx_search` when results are empty
  2379    (@gianfelipe93)
  2380  - [types] [\#2926](https://github.com/tendermint/tendermint/issues/2926) Do not panic if retrieving the privval's public key fails
  2381  
  2382  ## v0.27.4
  2383  
  2384  *December 21st, 2018*
  2385  
  2386  ### BUG FIXES:
  2387  
  2388  - [mempool] [\#3036](https://github.com/tendermint/tendermint/issues/3036) Fix
  2389    LRU cache by popping the least recently used item when the cache is full,
  2390    not the most recently used one!
  2391  
  2392  ## v0.27.3
  2393  
  2394  *December 16th, 2018*
  2395  
  2396  ### BREAKING CHANGES:
  2397  
  2398  * Go API
  2399    - [dep] [\#3027](https://github.com/tendermint/tendermint/issues/3027) Revert to mainline Go crypto library, eliminating the modified
  2400      `bcrypt.GenerateFromPassword`
  2401  
  2402  ## v0.27.2
  2403  
  2404  *December 16th, 2018*
  2405  
  2406  ### IMPROVEMENTS:
  2407  
  2408  - [node] [\#3025](https://github.com/tendermint/tendermint/issues/3025) Validate NodeInfo addresses on startup.
  2409  
  2410  ### BUG FIXES:
  2411  
  2412  - [p2p] [\#3025](https://github.com/tendermint/tendermint/pull/3025) Revert to using defers in addrbook.  Fixes deadlocks in pex and consensus upon invalid ExternalAddr/ListenAddr configuration.
  2413  
  2414  ## v0.27.1
  2415  
  2416  *December 15th, 2018*
  2417  
  2418  Special thanks to external contributors on this release:
  2419  @danil-lashin, @hleb-albau, @james-ray, @leo-xinwang
  2420  
  2421  ### FEATURES:
  2422  - [rpc] [\#2964](https://github.com/tendermint/tendermint/issues/2964) Add `UnconfirmedTxs(limit)` and `NumUnconfirmedTxs()` methods to HTTP/Local clients (@danil-lashin)
  2423  - [docs] [\#3004](https://github.com/tendermint/tendermint/issues/3004) Enable full-text search on docs pages
  2424  
  2425  ### IMPROVEMENTS:
  2426  - [consensus] [\#2971](https://github.com/tendermint/tendermint/issues/2971) Return error if ValidatorSet is empty after InitChain
  2427    (@leo-xinwang)
  2428  - [ci/cd] [\#3005](https://github.com/tendermint/tendermint/issues/3005) Updated CircleCI job to trigger website build when docs are updated
  2429  - [docs] Various updates
  2430  
  2431  ### BUG FIXES:
  2432  - [cmd] [\#2983](https://github.com/tendermint/tendermint/issues/2983) `testnet` command always sets `addr_book_strict = false`
  2433  - [config] [\#2980](https://github.com/tendermint/tendermint/issues/2980) Fix CORS options formatting
  2434  - [kv indexer] [\#2912](https://github.com/tendermint/tendermint/issues/2912) Don't ignore key when executing CONTAINS
  2435  - [mempool] [\#2961](https://github.com/tendermint/tendermint/issues/2961) Call `notifyTxsAvailable` if there're txs left after committing a block, but recheck=false
  2436  - [mempool] [\#2994](https://github.com/tendermint/tendermint/issues/2994) Reject txs with negative GasWanted
  2437  - [p2p] [\#2990](https://github.com/tendermint/tendermint/issues/2990) Fix a bug where seeds don't disconnect from a peer after 3h
  2438  - [consensus] [\#3006](https://github.com/tendermint/tendermint/issues/3006) Save state after InitChain only when stateHeight is also 0 (@james-ray)
  2439  
  2440  ## v0.27.0
  2441  
  2442  *December 5th, 2018*
  2443  
  2444  Special thanks to external contributors on this release:
  2445  @danil-lashin, @srmo
  2446  
  2447  Special thanks to @dlguddus for discovering a [major
  2448  issue](https://github.com/tendermint/tendermint/issues/2718#issuecomment-440888677)
  2449  in the proposer selection algorithm.
  2450  
  2451  
  2452  This release is primarily about fixes to the proposer selection algorithm
  2453  in preparation for the [Cosmos Game of
  2454  Stakes](https://blog.cosmos.network/the-game-of-stakes-is-open-for-registration-83a404746ee6).
  2455  It also makes use of the `ConsensusParams.Validator.PubKeyTypes` to restrict the
  2456  key types that can be used by validators, and removes the `Heartbeat` consensus
  2457  message.
  2458  
  2459  ### BREAKING CHANGES:
  2460  
  2461  * CLI/RPC/Config
  2462    - [rpc] [\#2932](https://github.com/tendermint/tendermint/issues/2932) Rename `accum` to `proposer_priority`
  2463  
  2464  * Go API
  2465    - [db] [\#2913](https://github.com/tendermint/tendermint/pull/2913)
  2466      ReverseIterator API change: start < end, and end is exclusive.
  2467    - [types] [\#2932](https://github.com/tendermint/tendermint/issues/2932) Rename `Validator.Accum` to `Validator.ProposerPriority`
  2468  
  2469  * Blockchain Protocol
  2470    - [state] [\#2714](https://github.com/tendermint/tendermint/issues/2714) Validators can now only use pubkeys allowed within
  2471      ConsensusParams.Validator.PubKeyTypes
  2472  
  2473  * P2P Protocol
  2474    - [consensus] [\#2871](https://github.com/tendermint/tendermint/issues/2871)
  2475      Remove *ProposalHeartbeat* message as it serves no real purpose (@srmo)
  2476    - [state] Fixes for proposer selection:
  2477      - [\#2785](https://github.com/tendermint/tendermint/issues/2785) Accum for new validators is `-1.125*totalVotingPower` instead of 0
  2478      - [\#2941](https://github.com/tendermint/tendermint/issues/2941) val.Accum is preserved during ValidatorSet.Update to avoid being
  2479        reset to 0
  2480  
  2481  ### IMPROVEMENTS:
  2482  
  2483  - [state] [\#2929](https://github.com/tendermint/tendermint/issues/2929) Minor refactor of updateState logic (@danil-lashin)
  2484  - [node] [\#2959](https://github.com/tendermint/tendermint/issues/2959) Allow node to start even if software's BlockProtocol is
  2485    different from state's BlockProtocol
  2486  - [pex] [\#2959](https://github.com/tendermint/tendermint/issues/2959) Pex reactor logger uses `module=pex`
  2487  
  2488  ### BUG FIXES:
  2489  
  2490  - [p2p] [\#2968](https://github.com/tendermint/tendermint/issues/2968) Panic on transport error rather than continuing to run but not
  2491    accept new connections
  2492  - [p2p] [\#2969](https://github.com/tendermint/tendermint/issues/2969) Fix mismatch in peer count between `/net_info` and the prometheus
  2493    metrics
  2494  - [rpc] [\#2408](https://github.com/tendermint/tendermint/issues/2408) `/broadcast_tx_commit`: Fix "interface conversion: interface {} in nil, not EventDataTx" panic (could happen if somebody sent a tx using `/broadcast_tx_commit` while Tendermint was being stopped)
  2495  - [state] [\#2785](https://github.com/tendermint/tendermint/issues/2785) Fix accum for new validators to be `-1.125*totalVotingPower`
  2496    instead of 0, forcing them to wait before becoming the proposer. Also:
  2497      - do not batch clip
  2498      - keep accums averaged near 0
  2499  - [txindex/kv] [\#2925](https://github.com/tendermint/tendermint/issues/2925) Don't return false positives when range searching for a prefix of a tag value
  2500  - [types] [\#2938](https://github.com/tendermint/tendermint/issues/2938) Fix regression in v0.26.4 where we panic on empty
  2501    genDoc.Validators
  2502  - [types] [\#2941](https://github.com/tendermint/tendermint/issues/2941) Preserve val.Accum during ValidatorSet.Update to avoid it being
  2503    reset to 0 every time a validator is updated
  2504  
  2505  ## v0.26.4
  2506  
  2507  *November 27th, 2018*
  2508  
  2509  Special thanks to external contributors on this release:
  2510  @ackratos, @goolAdapter, @james-ray, @joe-bowman, @kostko,
  2511  @nagarajmanjunath, @tomtau
  2512  
  2513  
  2514  ### FEATURES:
  2515  
  2516  - [rpc] [\#2747](https://github.com/tendermint/tendermint/issues/2747) Enable subscription to tags emitted from `BeginBlock`/`EndBlock` (@kostko)
  2517  - [types] [\#2747](https://github.com/tendermint/tendermint/issues/2747) Add `ResultBeginBlock` and `ResultEndBlock` fields to `EventDataNewBlock`
  2518      and `EventDataNewBlockHeader` to support subscriptions (@kostko)
  2519  - [types] [\#2918](https://github.com/tendermint/tendermint/issues/2918) Add Marshal, MarshalTo, Unmarshal methods to various structs
  2520    to support Protobuf compatibility (@nagarajmanjunath)
  2521  
  2522  ### IMPROVEMENTS:
  2523  
  2524  - [config] [\#2877](https://github.com/tendermint/tendermint/issues/2877) Add `blocktime_iota` to the config.toml (@ackratos)
  2525      - NOTE: this should be a ConsensusParam, not part of the config, and will be
  2526        removed from the config at a later date
  2527        ([\#2920](https://github.com/tendermint/tendermint/issues/2920).
  2528  - [mempool] [\#2882](https://github.com/tendermint/tendermint/issues/2882) Add txs from Update to cache
  2529  - [mempool] [\#2891](https://github.com/tendermint/tendermint/issues/2891) Remove local int64 counter from being stored in every tx
  2530  - [node] [\#2866](https://github.com/tendermint/tendermint/issues/2866) Add ability to instantiate IPCVal (@joe-bowman)
  2531  
  2532  ### BUG FIXES:
  2533  
  2534  - [blockchain] [\#2731](https://github.com/tendermint/tendermint/issues/2731) Retry both blocks if either is bad to avoid getting stuck during fast sync (@goolAdapter)
  2535  - [consensus] [\#2893](https://github.com/tendermint/tendermint/issues/2893) Use genDoc.Validators instead of state.NextValidators on replay when appHeight==0 (@james-ray)
  2536  - [log] [\#2868](https://github.com/tendermint/tendermint/issues/2868) Fix `module=main` setting overriding all others
  2537      - NOTE: this changes the default logging behaviour to be much less verbose.
  2538        Set `log_level="info"` to restore the previous behaviour.
  2539  - [rpc] [\#2808](https://github.com/tendermint/tendermint/issues/2808) Fix `accum` field in `/validators` by calling `IncrementAccum` if necessary
  2540  - [rpc] [\#2811](https://github.com/tendermint/tendermint/issues/2811) Allow integer IDs in JSON-RPC requests (@tomtau)
  2541  - [txindex/kv] [\#2759](https://github.com/tendermint/tendermint/issues/2759) Fix tx.height range queries
  2542  - [txindex/kv] [\#2775](https://github.com/tendermint/tendermint/issues/2775) Order tx results by index if height is the same
  2543  - [txindex/kv] [\#2908](https://github.com/tendermint/tendermint/issues/2908) Don't return false positives when searching for a prefix of a tag value
  2544  
  2545  ## v0.26.3
  2546  
  2547  *November 17th, 2018*
  2548  
  2549  Special thanks to external contributors on this release:
  2550  @danil-lashin, @kevlubkcm, @krhubert, @srmo
  2551  
  2552  
  2553  ### BREAKING CHANGES:
  2554  
  2555  * Go API
  2556    - [rpc] [\#2791](https://github.com/tendermint/tendermint/issues/2791) Functions that start HTTP servers are now blocking:
  2557      - Impacts `StartHTTPServer`, `StartHTTPAndTLSServer`, and `StartGRPCServer`
  2558      - These functions now take a `net.Listener` instead of an address
  2559    - [rpc] [\#2767](https://github.com/tendermint/tendermint/issues/2767) Subscribing to events
  2560    `NewRound` and `CompleteProposal` return new types `EventDataNewRound` and
  2561    `EventDataCompleteProposal`, respectively, instead of the generic `EventDataRoundState`. (@kevlubkcm)
  2562  
  2563  ### FEATURES:
  2564  
  2565  - [log] [\#2843](https://github.com/tendermint/tendermint/issues/2843) New `log_format` config option, which can be set to 'plain' for colored
  2566    text or 'json' for JSON output
  2567  - [types] [\#2767](https://github.com/tendermint/tendermint/issues/2767) New event types EventDataNewRound (with ProposerInfo) and EventDataCompleteProposal (with BlockID). (@kevlubkcm)
  2568  
  2569  ### IMPROVEMENTS:
  2570  
  2571  - [dep] [\#2844](https://github.com/tendermint/tendermint/issues/2844) Dependencies are no longer pinned to an exact version in the
  2572    Gopkg.toml:
  2573    - Serialization libs are allowed to vary by patch release
  2574    - Other libs are allowed to vary by minor release
  2575  - [p2p] [\#2857](https://github.com/tendermint/tendermint/issues/2857) "Send failed" is logged at debug level instead of error.
  2576  - [rpc] [\#2780](https://github.com/tendermint/tendermint/issues/2780) Add read and write timeouts to HTTP servers
  2577  - [state] [\#2848](https://github.com/tendermint/tendermint/issues/2848) Make "Update to validators" msg value pretty (@danil-lashin)
  2578  
  2579  ### BUG FIXES:
  2580  - [consensus] [\#2819](https://github.com/tendermint/tendermint/issues/2819) Don't send proposalHearbeat if not a validator
  2581  - [docs] [\#2859](https://github.com/tendermint/tendermint/issues/2859) Fix ConsensusParams details in spec
  2582  - [libs/autofile] [\#2760](https://github.com/tendermint/tendermint/issues/2760) Comment out autofile permissions check - should fix
  2583    running Tendermint on Windows
  2584  - [p2p] [\#2869](https://github.com/tendermint/tendermint/issues/2869) Set connection config properly instead of always using default
  2585  - [p2p/pex] [\#2802](https://github.com/tendermint/tendermint/issues/2802) Seed mode fixes:
  2586    - Only disconnect from inbound peers
  2587    - Use FlushStop instead of Sleep to ensure all messages are sent before
  2588      disconnecting
  2589  
  2590  ## v0.26.2
  2591  
  2592  *November 15th, 2018*
  2593  
  2594  Special thanks to external contributors on this release: @hleb-albau, @zhuzeyu
  2595  
  2596  ### FEATURES:
  2597  
  2598  - [rpc] [\#2582](https://github.com/tendermint/tendermint/issues/2582) Enable CORS on RPC API (@hleb-albau)
  2599  
  2600  ### BUG FIXES:
  2601  
  2602  - [abci] [\#2748](https://github.com/tendermint/tendermint/issues/2748) Unlock mutex in localClient so even when app panics (e.g. during CheckTx), consensus continue working
  2603  - [abci] [\#2748](https://github.com/tendermint/tendermint/issues/2748) Fix DATA RACE in localClient
  2604  - [amino] [\#2822](https://github.com/tendermint/tendermint/issues/2822) Update to v0.14.1 to support compiling on 32-bit platforms
  2605  - [rpc] [\#2748](https://github.com/tendermint/tendermint/issues/2748) Drain channel before calling Unsubscribe(All) in `/broadcast_tx_commit`
  2606  
  2607  ## v0.26.1
  2608  
  2609  *November 11, 2018*
  2610  
  2611  Special thanks to external contributors on this release: @katakonst
  2612  
  2613  ### IMPROVEMENTS:
  2614  
  2615  - [consensus] [\#2704](https://github.com/tendermint/tendermint/issues/2704) Simplify valid POL round logic
  2616  - [docs] [\#2749](https://github.com/tendermint/tendermint/issues/2749) Deduplicate some ABCI docs
  2617  - [mempool] More detailed log messages
  2618      - [\#2724](https://github.com/tendermint/tendermint/issues/2724)
  2619      - [\#2762](https://github.com/tendermint/tendermint/issues/2762)
  2620  
  2621  ### BUG FIXES:
  2622  
  2623  - [autofile] [\#2703](https://github.com/tendermint/tendermint/issues/2703) Do not panic when checking Head size
  2624  - [crypto/merkle] [\#2756](https://github.com/tendermint/tendermint/issues/2756) Fix crypto/merkle ProofOperators.Verify to check bounds on keypath parts.
  2625  - [mempool] fix a bug where we create a WAL despite `wal_dir` being empty
  2626  - [p2p] [\#2771](https://github.com/tendermint/tendermint/issues/2771) Fix `peer-id` label name to `peer_id` in prometheus metrics
  2627  - [p2p] [\#2797](https://github.com/tendermint/tendermint/pull/2797) Fix IDs in peer NodeInfo and require them for addresses
  2628    in AddressBook
  2629  - [p2p] [\#2797](https://github.com/tendermint/tendermint/pull/2797) Do not close conn immediately after sending pex addrs in seed mode. Partial fix for [\#2092](https://github.com/tendermint/tendermint/issues/2092).
  2630  
  2631  ## v0.26.0
  2632  
  2633  *November 2, 2018*
  2634  
  2635  Special thanks to external contributors on this release:
  2636  @bradyjoestar, @connorwstein, @goolAdapter, @HaoyangLiu,
  2637  @james-ray, @overbool, @phymbert, @Slamper, @Uzair1995, @yutianwu.
  2638  
  2639  Special thanks to @Slamper for a series of bug reports in our [bug bounty
  2640  program](https://hackerone.com/cosmos) which are fixed in this release.
  2641  
  2642  This release is primarily about adding Version fields to various data structures,
  2643  optimizing consensus messages for signing and verification in
  2644  restricted environments (like HSMs and the Ethereum Virtual Machine), and
  2645  aligning the consensus code with the [specification](https://arxiv.org/abs/1807.04938).
  2646  It also includes our first take at a generalized merkle proof system, and
  2647  changes the length of hashes used for hashing data structures from 20 to 32
  2648  bytes.
  2649  
  2650  See the [UPGRADING.md](UPGRADING.md#v0.26.0) for details on upgrading to the new
  2651  version.
  2652  
  2653  Please note that we are still making breaking changes to the protocols.
  2654  While the new Version fields should help us to keep the software backwards compatible
  2655  even while upgrading the protocols, we cannot guarantee that new releases will
  2656  be compatible with old chains just yet. We expect there will be another breaking
  2657  release or two before the Cosmos Hub launch, but we will otherwise be paying
  2658  increasing attention to backwards compatibility. Thanks for bearing with us!
  2659  
  2660  ### BREAKING CHANGES:
  2661  
  2662  * CLI/RPC/Config
  2663    * [config] [\#2232](https://github.com/tendermint/tendermint/issues/2232) Timeouts are now strings like "3s" and "100ms", not ints
  2664    * [config] [\#2505](https://github.com/tendermint/tendermint/issues/2505) Remove Mempool.RecheckEmpty (it was effectively useless anyways)
  2665    * [config] [\#2490](https://github.com/tendermint/tendermint/issues/2490) `mempool.wal` is disabled by default
  2666    * [privval] [\#2459](https://github.com/tendermint/tendermint/issues/2459) Split `SocketPVMsg`s implementations into Request and Response, where the Response may contain a error message (returned by the remote signer)
  2667    * [state] [\#2644](https://github.com/tendermint/tendermint/issues/2644) Add Version field to State, breaking the format of State as
  2668      encoded on disk.
  2669    * [rpc] [\#2298](https://github.com/tendermint/tendermint/issues/2298) `/abci_query` takes `prove` argument instead of `trusted` and switches the default
  2670      behaviour to `prove=false`
  2671    * [rpc] [\#2654](https://github.com/tendermint/tendermint/issues/2654) Remove all `node_info.other.*_version` fields in `/status` and
  2672      `/net_info`
  2673    * [rpc] [\#2636](https://github.com/tendermint/tendermint/issues/2636) Remove
  2674      `_params` suffix from fields in `consensus_params`.
  2675  
  2676  * Apps
  2677    * [abci] [\#2298](https://github.com/tendermint/tendermint/issues/2298) ResponseQuery.Proof is now a structured merkle.Proof, not just
  2678      arbitrary bytes
  2679    * [abci] [\#2644](https://github.com/tendermint/tendermint/issues/2644) Add Version to Header and shift all fields by one
  2680    * [abci] [\#2662](https://github.com/tendermint/tendermint/issues/2662) Bump the field numbers for some `ResponseInfo` fields to make room for
  2681        `AppVersion`
  2682    * [abci] [\#2636](https://github.com/tendermint/tendermint/issues/2636) Updates to ConsensusParams
  2683      * Remove `Params` suffix from field names
  2684      * Add `Params` suffix to message types
  2685      * Add new field and type, `Validator ValidatorParams`, to control what types of validator keys are allowed.
  2686  
  2687  * Go API
  2688    * [config] [\#2232](https://github.com/tendermint/tendermint/issues/2232) Timeouts are time.Duration, not ints
  2689    * [crypto/merkle & lite] [\#2298](https://github.com/tendermint/tendermint/issues/2298) Various changes to accomodate General Merkle trees
  2690    * [crypto/merkle] [\#2595](https://github.com/tendermint/tendermint/issues/2595) Remove all Hasher objects in favor of byte slices
  2691    * [crypto/merkle] [\#2635](https://github.com/tendermint/tendermint/issues/2635) merkle.SimpleHashFromTwoHashes is no longer exported
  2692    * [node] [\#2479](https://github.com/tendermint/tendermint/issues/2479) Remove node.RunForever
  2693    * [rpc/client] [\#2298](https://github.com/tendermint/tendermint/issues/2298) `ABCIQueryOptions.Trusted` -> `ABCIQueryOptions.Prove`
  2694    * [types] [\#2298](https://github.com/tendermint/tendermint/issues/2298) Remove `Index` and `Total` fields from `TxProof`.
  2695    * [types] [\#2598](https://github.com/tendermint/tendermint/issues/2598)
  2696      `VoteTypeXxx` are now of type `SignedMsgType byte` and named `XxxType`, eg.
  2697      `PrevoteType`, `PrecommitType`.
  2698    * [types] [\#2636](https://github.com/tendermint/tendermint/issues/2636) Rename fields in ConsensusParams to remove `Params` suffixes
  2699    * [types] [\#2735](https://github.com/tendermint/tendermint/issues/2735) Simplify Proposal message to align with spec
  2700  
  2701  * Blockchain Protocol
  2702    * [crypto/tmhash] [\#2732](https://github.com/tendermint/tendermint/issues/2732) TMHASH is now full 32-byte SHA256
  2703      * All hashes in the block header and Merkle trees are now 32-bytes
  2704      * PubKey Addresses are still only 20-bytes
  2705    * [state] [\#2587](https://github.com/tendermint/tendermint/issues/2587) Require block.Time of the fist block to be genesis time
  2706    * [state] [\#2644](https://github.com/tendermint/tendermint/issues/2644) Require block.Version to match state.Version
  2707    * [types] Update SignBytes for `Vote`/`Proposal`/`Heartbeat`:
  2708      * [\#2459](https://github.com/tendermint/tendermint/issues/2459) Use amino encoding instead of JSON in `SignBytes`.
  2709      * [\#2598](https://github.com/tendermint/tendermint/issues/2598) Reorder fields and use fixed sized encoding.
  2710      * [\#2598](https://github.com/tendermint/tendermint/issues/2598) Change `Type` field from `string` to `byte` and use new
  2711        `SignedMsgType` to enumerate.
  2712    * [types] [\#2730](https://github.com/tendermint/tendermint/issues/2730) Use
  2713      same order for fields in `Vote` as in the SignBytes
  2714    * [types] [\#2732](https://github.com/tendermint/tendermint/issues/2732) Remove the address field from the validator hash
  2715    * [types] [\#2644](https://github.com/tendermint/tendermint/issues/2644) Add Version struct to Header
  2716    * [types] [\#2609](https://github.com/tendermint/tendermint/issues/2609) ConsensusParams.Hash() is the hash of the amino encoded
  2717      struct instead of the Merkle tree of the fields
  2718    * [types] [\#2670](https://github.com/tendermint/tendermint/issues/2670) Header.Hash() builds Merkle tree out of fields in the same
  2719      order they appear in the header, instead of sorting by field name
  2720    * [types] [\#2682](https://github.com/tendermint/tendermint/issues/2682) Use proto3 `varint` encoding for ints that are usually unsigned (instead of zigzag encoding).
  2721    * [types] [\#2636](https://github.com/tendermint/tendermint/issues/2636) Add Validator field to ConsensusParams
  2722        (Used to control which pubkey types validators can use, by abci type).
  2723  
  2724  * P2P Protocol
  2725    * [consensus] [\#2652](https://github.com/tendermint/tendermint/issues/2652)
  2726      Replace `CommitStepMessage` with `NewValidBlockMessage`
  2727    * [consensus] [\#2735](https://github.com/tendermint/tendermint/issues/2735) Simplify `Proposal` message to align with spec
  2728    * [consensus] [\#2730](https://github.com/tendermint/tendermint/issues/2730)
  2729      Add `Type` field to `Proposal` and use same order of fields as in the
  2730      SignBytes for both `Proposal` and `Vote`
  2731    * [p2p] [\#2654](https://github.com/tendermint/tendermint/issues/2654) Add `ProtocolVersion` struct with protocol versions to top of
  2732      DefaultNodeInfo and require `ProtocolVersion.Block` to match during peer handshake
  2733  
  2734  
  2735  ### FEATURES:
  2736  - [abci] [\#2557](https://github.com/tendermint/tendermint/issues/2557) Add `Codespace` field to `Response{CheckTx, DeliverTx, Query}`
  2737  - [abci] [\#2662](https://github.com/tendermint/tendermint/issues/2662) Add `BlockVersion` and `P2PVersion` to `RequestInfo`
  2738  - [crypto/merkle] [\#2298](https://github.com/tendermint/tendermint/issues/2298) General Merkle Proof scheme for chaining various types of Merkle trees together
  2739  - [docs/architecture] [\#1181](https://github.com/tendermint/tendermint/issues/1181) S
  2740  plit immutable and mutable parts of priv_validator.json
  2741  
  2742  ### IMPROVEMENTS:
  2743  - Additional Metrics
  2744      - [consensus] [\#2169](https://github.com/cosmos/cosmos-sdk/issues/2169)
  2745      - [p2p] [\#2169](https://github.com/cosmos/cosmos-sdk/issues/2169)
  2746  - [config] [\#2232](https://github.com/tendermint/tendermint/issues/2232) Added ValidateBasic method, which performs basic checks
  2747  - [crypto/ed25519] [\#2558](https://github.com/tendermint/tendermint/issues/2558) Switch to use latest `golang.org/x/crypto` through our fork at
  2748    github.com/tendermint/crypto
  2749  - [libs/log] [\#2707](https://github.com/tendermint/tendermint/issues/2707) Add year to log format (@yutianwu)
  2750  - [tools] [\#2238](https://github.com/tendermint/tendermint/issues/2238) Binary dependencies are now locked to a specific git commit
  2751  
  2752  ### BUG FIXES:
  2753  - [\#2711](https://github.com/tendermint/tendermint/issues/2711) Validate all incoming reactor messages. Fixes various bugs due to negative ints.
  2754  - [autofile] [\#2428](https://github.com/tendermint/tendermint/issues/2428) Group.RotateFile need call Flush() before rename (@goolAdapter)
  2755  - [common] [\#2533](https://github.com/tendermint/tendermint/issues/2533) Fixed a bug in the `BitArray.Or` method
  2756  - [common] [\#2506](https://github.com/tendermint/tendermint/issues/2506) Fixed a bug in the `BitArray.Sub` method (@james-ray)
  2757  - [common] [\#2534](https://github.com/tendermint/tendermint/issues/2534) Fix `BitArray.PickRandom` to choose uniformly from true bits
  2758  - [consensus] [\#1690](https://github.com/tendermint/tendermint/issues/1690) Wait for
  2759    timeoutPrecommit before starting next round
  2760  - [consensus] [\#1745](https://github.com/tendermint/tendermint/issues/1745) Wait for
  2761    Proposal or timeoutProposal before entering prevote
  2762  - [consensus] [\#2642](https://github.com/tendermint/tendermint/issues/2642) Only propose ValidBlock, not LockedBlock
  2763  - [consensus] [\#2642](https://github.com/tendermint/tendermint/issues/2642) Initialized ValidRound and LockedRound to -1
  2764  - [consensus] [\#1637](https://github.com/tendermint/tendermint/issues/1637) Limit the amount of evidence that can be included in a
  2765    block
  2766  - [consensus] [\#2652](https://github.com/tendermint/tendermint/issues/2652) Ensure valid block property with faulty proposer
  2767  - [evidence] [\#2515](https://github.com/tendermint/tendermint/issues/2515) Fix db iter leak (@goolAdapter)
  2768  - [libs/event] [\#2518](https://github.com/tendermint/tendermint/issues/2518) Fix event concurrency flaw (@goolAdapter)
  2769  - [node] [\#2434](https://github.com/tendermint/tendermint/issues/2434) Make node respond to signal interrupts while sleeping for genesis time
  2770  - [state] [\#2616](https://github.com/tendermint/tendermint/issues/2616) Pass nil to NewValidatorSet() when genesis file's Validators field is nil
  2771  - [p2p] [\#2555](https://github.com/tendermint/tendermint/issues/2555) Fix p2p switch FlushThrottle value (@goolAdapter)
  2772  - [p2p] [\#2668](https://github.com/tendermint/tendermint/issues/2668) Reconnect to originally dialed address (not self-reported address) for persistent peers
  2773  
  2774  ## v0.25.0
  2775  
  2776  *September 22, 2018*
  2777  
  2778  Special thanks to external contributors on this release:
  2779  @scriptionist, @bradyjoestar, @WALL-E
  2780  
  2781  This release is mostly about the ConsensusParams - removing fields and enforcing MaxGas.
  2782  It also addresses some issues found via security audit, removes various unused
  2783  functions from `libs/common`, and implements
  2784  [ADR-012](https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-012-peer-transport.md).
  2785  
  2786  BREAKING CHANGES:
  2787  
  2788  * CLI/RPC/Config
  2789    * [rpc] [\#2391](https://github.com/tendermint/tendermint/issues/2391) /status `result.node_info.other` became a map
  2790    * [types] [\#2364](https://github.com/tendermint/tendermint/issues/2364) Remove `TxSize` and `BlockGossip` from `ConsensusParams`
  2791      * Maximum tx size is now set implicitly via the `BlockSize.MaxBytes`
  2792      * The size of block parts in the consensus is now fixed to 64kB
  2793  
  2794  * Apps
  2795    * [mempool] [\#2360](https://github.com/tendermint/tendermint/issues/2360) Mempool tracks the `ResponseCheckTx.GasWanted` and
  2796      `ConsensusParams.BlockSize.MaxGas` and enforces:
  2797      - `GasWanted <= MaxGas` for every tx
  2798      - `(sum of GasWanted in block) <= MaxGas` for block proposal
  2799  
  2800  * Go API
  2801    * [libs/common] [\#2431](https://github.com/tendermint/tendermint/issues/2431) Remove Word256 due to lack of use
  2802    * [libs/common] [\#2452](https://github.com/tendermint/tendermint/issues/2452) Remove the following functions due to lack of use:
  2803      * byteslice.go: cmn.IsZeros, cmn.RightPadBytes, cmn.LeftPadBytes, cmn.PrefixEndBytes
  2804      * strings.go: cmn.IsHex, cmn.StripHex
  2805      * int.go: Uint64Slice, all put/get int64 methods
  2806  
  2807  FEATURES:
  2808  - [rpc] [\#2415](https://github.com/tendermint/tendermint/issues/2415) New `/consensus_params?height=X` endpoint to query the consensus
  2809    params at any height (@scriptonist)
  2810  - [types] [\#1714](https://github.com/tendermint/tendermint/issues/1714) Add Address to GenesisValidator
  2811  - [metrics] [\#2337](https://github.com/tendermint/tendermint/issues/2337) `consensus.block_interval_metrics` is now gauge, not histogram (you will be able to see spikes, if any)
  2812  - [libs] [\#2286](https://github.com/tendermint/tendermint/issues/2286) Panic if `autofile` or `db/fsdb` permissions change from 0600.
  2813  
  2814  IMPROVEMENTS:
  2815  - [libs/db] [\#2371](https://github.com/tendermint/tendermint/issues/2371) Output error instead of panic when the given `db_backend` is not initialized (@bradyjoestar)
  2816  - [mempool] [\#2399](https://github.com/tendermint/tendermint/issues/2399) Make mempool cache a proper LRU (@bradyjoestar)
  2817  - [p2p] [\#2126](https://github.com/tendermint/tendermint/issues/2126) Introduce PeerTransport interface to improve isolation of concerns
  2818  - [libs/common] [\#2326](https://github.com/tendermint/tendermint/issues/2326) Service returns ErrNotStarted
  2819  
  2820  BUG FIXES:
  2821  - [node] [\#2294](https://github.com/tendermint/tendermint/issues/2294) Delay starting node until Genesis time
  2822  - [consensus] [\#2048](https://github.com/tendermint/tendermint/issues/2048) Correct peer statistics for marking peer as good
  2823  - [rpc] [\#2460](https://github.com/tendermint/tendermint/issues/2460) StartHTTPAndTLSServer() now passes StartTLS() errors back to the caller rather than hanging forever.
  2824  - [p2p] [\#2047](https://github.com/tendermint/tendermint/issues/2047) Accept new connections asynchronously
  2825  - [tm-bench] [\#2410](https://github.com/tendermint/tendermint/issues/2410) Enforce minimum transaction size (@WALL-E)
  2826  
  2827  ## 0.24.0
  2828  
  2829  *September 6th, 2018*
  2830  
  2831  Special thanks to external contributors with PRs included in this release: ackratos, james-ray, bradyjoestar,
  2832  peerlink, Ahmah2009, bluele, b00f.
  2833  
  2834  This release includes breaking upgrades in the block header,
  2835  including the long awaited changes for delaying validator set updates by one
  2836  block to better support light clients.
  2837  It also fixes enforcement on the maximum size of blocks, and includes a BFT
  2838  timestamp in each block that can be safely used by applications.
  2839  There are also some minor breaking changes to the rpc, config, and ABCI.
  2840  
  2841  See the [UPGRADING.md](UPGRADING.md#v0.24.0) for details on upgrading to the new
  2842  version.
  2843  
  2844  From here on, breaking changes will be broken down to better reflect how users
  2845  are affected by a change.
  2846  
  2847  A few more breaking changes are in the works - each will come with a clear
  2848  Architecture Decision Record (ADR) explaining the change. You can review ADRs
  2849  [here](https://github.com/tendermint/tendermint/tree/master/docs/architecture)
  2850  or in the [open Pull Requests](https://github.com/tendermint/tendermint/pulls).
  2851  You can also check in on the [issues marked as
  2852  breaking](https://github.com/tendermint/tendermint/issues?q=is%3Aopen+is%3Aissue+label%3Abreaking).
  2853  
  2854  BREAKING CHANGES:
  2855  
  2856  * CLI/RPC/Config
  2857    - [config] [\#2169](https://github.com/tendermint/tendermint/issues/2169) Replace MaxNumPeers with MaxNumInboundPeers and MaxNumOutboundPeers
  2858    - [config] [\#2300](https://github.com/tendermint/tendermint/issues/2300) Reduce default mempool size from 100k to 5k, until ABCI rechecking is implemented.
  2859    - [rpc] [\#1815](https://github.com/tendermint/tendermint/issues/1815) `/commit` returns a `signed_header` field instead of everything being top-level
  2860  
  2861  * Apps
  2862    - [abci] Added address of the original proposer of the block to Header
  2863    - [abci] Change ABCI Header to match Tendermint exactly
  2864    - [abci] [\#2159](https://github.com/tendermint/tendermint/issues/2159) Update use of `Validator` (see
  2865      [ADR-018](https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-018-ABCI-Validators.md)):
  2866      - Remove PubKey from `Validator` (so it's just Address and Power)
  2867      - Introduce `ValidatorUpdate` (with just PubKey and Power)
  2868      - InitChain and EndBlock use ValidatorUpdate
  2869      - Update field names and types in BeginBlock
  2870    - [state] [\#1815](https://github.com/tendermint/tendermint/issues/1815) Validator set changes are now delayed by one block
  2871      - updates returned in ResponseEndBlock for block H will be included in RequestBeginBlock for block H+2
  2872  
  2873  * Go API
  2874    - [lite] [\#1815](https://github.com/tendermint/tendermint/issues/1815) Complete refactor of the package
  2875    - [node] [\#2212](https://github.com/tendermint/tendermint/issues/2212) NewNode now accepts a `*p2p.NodeKey` (@bradyjoestar)
  2876    - [libs/common] [\#2199](https://github.com/tendermint/tendermint/issues/2199) Remove Fmt, in favor of fmt.Sprintf
  2877    - [libs/common] SplitAndTrim was deleted
  2878    - [libs/common] [\#2274](https://github.com/tendermint/tendermint/issues/2274) Remove unused Math functions like MaxInt, MaxInt64,
  2879      MinInt, MinInt64 (@Ahmah2009)
  2880    - [libs/clist] Panics if list extends beyond MaxLength
  2881    - [crypto] [\#2205](https://github.com/tendermint/tendermint/issues/2205) Rename AminoRoute variables to no longer be prefixed by signature type.
  2882  
  2883  * Blockchain Protocol
  2884    - [state] [\#1815](https://github.com/tendermint/tendermint/issues/1815) Validator set changes are now delayed by one block (!)
  2885      - Add NextValidatorSet to State, changes on-disk representation of state
  2886    - [state] [\#2184](https://github.com/tendermint/tendermint/issues/2184) Enforce ConsensusParams.BlockSize.MaxBytes (See
  2887      [ADR-020](https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-020-block-size.md)).
  2888      - Remove ConsensusParams.BlockSize.MaxTxs
  2889      - Introduce maximum sizes for all components of a block, including ChainID
  2890    - [types] Updates to the block Header:
  2891      - [\#1815](https://github.com/tendermint/tendermint/issues/1815) NextValidatorsHash - hash of the validator set for the next block,
  2892        so the current validators actually sign over the hash for the new
  2893        validators
  2894      - [\#2106](https://github.com/tendermint/tendermint/issues/2106) ProposerAddress - address of the block's original proposer
  2895    - [consensus] [\#2203](https://github.com/tendermint/tendermint/issues/2203) Implement BFT time
  2896      - Timestamp in block must be monotonic and equal the median of timestamps in block's LastCommit
  2897    - [crypto] [\#2239](https://github.com/tendermint/tendermint/issues/2239) Secp256k1 signature changes (See
  2898      [ADR-014](https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-014-secp-malleability.md)):
  2899      - format changed from DER to `r || s`, both little endian encoded as 32 bytes.
  2900      - malleability removed by requiring `s` to be in canonical form.
  2901  
  2902  * P2P Protocol
  2903    - [p2p] [\#2263](https://github.com/tendermint/tendermint/issues/2263) Update secret connection to use a little endian encoded nonce
  2904    - [blockchain] [\#2213](https://github.com/tendermint/tendermint/issues/2213) Fix Amino routes for blockchain reactor messages
  2905      (@peerlink)
  2906  
  2907  
  2908  FEATURES:
  2909  - [types] [\#2015](https://github.com/tendermint/tendermint/issues/2015) Allow genesis file to have 0 validators (@b00f)
  2910    - Initial validator set can be determined by the app in ResponseInitChain
  2911  - [rpc] [\#2161](https://github.com/tendermint/tendermint/issues/2161) New event `ValidatorSetUpdates` for when the validator set changes
  2912  - [crypto/multisig] [\#2164](https://github.com/tendermint/tendermint/issues/2164) Introduce multisig pubkey and signature format
  2913  - [libs/db] [\#2293](https://github.com/tendermint/tendermint/issues/2293) Allow passing options through when creating instances of leveldb dbs
  2914  
  2915  IMPROVEMENTS:
  2916  - [docs] Lint documentation with `write-good` and `stop-words`.
  2917  - [docs] [\#2249](https://github.com/tendermint/tendermint/issues/2249) Refactor, deduplicate, and improve the ABCI docs and spec (with thanks to @ttmc).
  2918  - [scripts] [\#2196](https://github.com/tendermint/tendermint/issues/2196) Added json2wal tool, which is supposed to help our users restore (@bradyjoestar)
  2919    corrupted WAL files and compose test WAL files (@bradyjoestar)
  2920  - [mempool] [\#2234](https://github.com/tendermint/tendermint/issues/2234) Now stores txs by hash inside of the cache, to mitigate memory leakage
  2921  - [mempool] [\#2166](https://github.com/tendermint/tendermint/issues/2166) Set explicit capacity for map when updating txs (@bluele)
  2922  
  2923  BUG FIXES:
  2924  - [config] [\#2284](https://github.com/tendermint/tendermint/issues/2284) Replace `db_path` with `db_dir` from automatically generated configuration files.
  2925  - [mempool] [\#2188](https://github.com/tendermint/tendermint/issues/2188) Fix OOM issue from cache map and list getting out of sync
  2926  - [state] [\#2051](https://github.com/tendermint/tendermint/issues/2051) KV store index supports searching by `tx.height` (@ackratos)
  2927  - [rpc] [\#2327](https://github.com/tendermint/tendermint/issues/2327) `/dial_peers` does not try to dial existing peers
  2928  - [node] [\#2323](https://github.com/tendermint/tendermint/issues/2323) Filter empty strings from config lists (@james-ray)
  2929  - [abci/client] [\#2236](https://github.com/tendermint/tendermint/issues/2236) Fix closing GRPC connection (@bradyjoestar)
  2930  
  2931  ## 0.23.1
  2932  
  2933  *August 22nd, 2018*
  2934  
  2935  BUG FIXES:
  2936  - [libs/autofile] [\#2261](https://github.com/tendermint/tendermint/issues/2261) Fix log rotation so it actually happens.
  2937      - Fixes issues with consensus WAL growing unbounded ala [\#2259](https://github.com/tendermint/tendermint/issues/2259)
  2938  
  2939  ## 0.23.0
  2940  
  2941  *August 5th, 2018*
  2942  
  2943  This release includes breaking upgrades in our P2P encryption,
  2944  some ABCI messages, and how we encode time and signatures.
  2945  
  2946  A few more changes are still coming to the Header, ABCI,
  2947  and validator set handling to better support light clients, BFT time, and
  2948  upgrades. Most notably, validator set changes will be delayed by one block (see
  2949  [#1815][i1815]).
  2950  
  2951  We also removed `make ensure_deps` in favour of `make get_vendor_deps`.
  2952  
  2953  BREAKING CHANGES:
  2954  - [abci] Changed time format from int64 to google.protobuf.Timestamp
  2955  - [abci] Changed Validators to LastCommitInfo in RequestBeginBlock
  2956  - [abci] Removed Fee from ResponseDeliverTx and ResponseCheckTx
  2957  - [crypto] Switch crypto.Signature from interface to []byte for space efficiency
  2958    [#2128](https://github.com/tendermint/tendermint/pull/2128)
  2959      - NOTE: this means signatures no longer have the prefix bytes in Amino
  2960        binary nor the `type` field in Amino JSON. They're just bytes.
  2961  - [p2p] Remove salsa and ripemd primitives, in favor of using chacha as a stream cipher, and hkdf [#2054](https://github.com/tendermint/tendermint/pull/2054)
  2962  - [tools] Removed `make ensure_deps` in favor of `make get_vendor_deps`
  2963  - [types] CanonicalTime uses nanoseconds instead of clipping to ms
  2964      - breaks serialization/signing of all messages with a timestamp
  2965  
  2966  FEATURES:
  2967  - [tools] Added `make check_dep`
  2968      - ensures gopkg.lock is synced with gopkg.toml
  2969      - ensures no branches are used in the gopkg.toml
  2970  
  2971  IMPROVEMENTS:
  2972  - [blockchain] Improve fast-sync logic
  2973    [#1805](https://github.com/tendermint/tendermint/pull/1805)
  2974      - tweak params
  2975      - only process one block at a time to avoid starving
  2976  - [common] bit array functions which take in another parameter are now thread safe
  2977  - [crypto] Switch hkdfchachapoly1305 to xchachapoly1305
  2978  - [p2p] begin connecting to peers as soon a seed node provides them to you ([#2093](https://github.com/tendermint/tendermint/issues/2093))
  2979  
  2980  BUG FIXES:
  2981  - [common] Safely handle cases where atomic write files already exist [#2109](https://github.com/tendermint/tendermint/issues/2109)
  2982  - [privval] fix a deadline for accepting new connections in socket private
  2983    validator.
  2984  - [p2p] Allow startup if a configured seed node's IP can't be resolved ([#1716](https://github.com/tendermint/tendermint/issues/1716))
  2985  - [node] Fully exit when CTRL-C is pressed even if consensus state panics [#2072](https://github.com/tendermint/tendermint/issues/2072)
  2986  
  2987  [i1815]: https://github.com/tendermint/tendermint/pull/1815
  2988  
  2989  ## 0.22.8
  2990  
  2991  *July 26th, 2018*
  2992  
  2993  BUG FIXES
  2994  
  2995  - [consensus, blockchain] Fix 0.22.7 below.
  2996  
  2997  ## 0.22.7
  2998  
  2999  *July 26th, 2018*
  3000  
  3001  BUG FIXES
  3002  
  3003  - [consensus, blockchain] Register the Evidence interface so it can be
  3004    marshalled/unmarshalled by the blockchain and consensus reactors
  3005  
  3006  ## 0.22.6
  3007  
  3008  *July 24th, 2018*
  3009  
  3010  BUG FIXES
  3011  
  3012  - [rpc] Fix `/blockchain` endpoint
  3013      - (#2049) Fix OOM attack by returning error on negative input
  3014      - Fix result length to have max 20 (instead of 21) block metas
  3015  - [rpc] Validate height is non-negative in `/abci_query`
  3016  - [consensus] (#2050) Include evidence in proposal block parts (previously evidence was
  3017    not being included in blocks!)
  3018  - [p2p] (#2046) Close rejected inbound connections so file descriptor doesn't
  3019    leak
  3020  - [Gopkg] (#2053) Fix versions in the toml
  3021  
  3022  ## 0.22.5
  3023  
  3024  *July 23th, 2018*
  3025  
  3026  BREAKING CHANGES:
  3027  - [crypto] Refactor `tendermint/crypto` into many subpackages
  3028  - [libs/common] remove exponentially distributed random numbers
  3029  
  3030  IMPROVEMENTS:
  3031  - [abci, libs/common] Generated gogoproto static marshaller methods
  3032  - [config] Increase default send/recv rates to 5 mB/s
  3033  - [p2p] reject addresses coming from private peers
  3034  - [p2p] allow persistent peers to be private
  3035  
  3036  BUG FIXES:
  3037  - [mempool] fixed a race condition when `create_empty_blocks=false` where a
  3038    transaction is published at an old height.
  3039  - [p2p] dial external IP setup by `persistent_peers`, not internal NAT IP
  3040  - [rpc] make `/status` RPC endpoint resistant to consensus halt
  3041  
  3042  ## 0.22.4
  3043  
  3044  *July 14th, 2018*
  3045  
  3046  BREAKING CHANGES:
  3047  - [genesis] removed deprecated `app_options` field.
  3048  - [types] Genesis.AppStateJSON -> Genesis.AppState
  3049  
  3050  FEATURES:
  3051  - [tools] Merged in from github.com/tendermint/tools
  3052  
  3053  BUG FIXES:
  3054  - [tools/tm-bench] Various fixes
  3055  - [consensus] Wait for WAL to stop on shutdown
  3056  - [abci] Fix #1891, pending requests cannot hang when abci server dies.
  3057    Previously a crash in BeginBlock could leave tendermint in broken state.
  3058  
  3059  ## 0.22.3
  3060  
  3061  *July 10th, 2018*
  3062  
  3063  IMPROVEMENTS
  3064  - Update dependencies
  3065      * pin all values in Gopkg.toml to version or commit
  3066      * update golang/protobuf to v1.1.0
  3067  
  3068  ## 0.22.2
  3069  
  3070  *July 10th, 2018*
  3071  
  3072  IMPROVEMENTS
  3073  - More cleanup post repo merge!
  3074  - [docs] Include `ecosystem.json` and `tendermint-bft.md` from deprecated `aib-data` repository.
  3075  - [config] Add `instrumentation.max_open_connections`, which limits the number
  3076    of requests in flight to Prometheus server (if enabled). Default: 3.
  3077  
  3078  
  3079  BUG FIXES
  3080  - [rpc] Allow unquoted integers in requests
  3081      - NOTE: this is only for URI requests. JSONRPC requests and all responses
  3082        will use quoted integers (the proto3 JSON standard).
  3083  - [consensus] Fix halt on shutdown
  3084  
  3085  ## 0.22.1
  3086  
  3087  *July 5th, 2018*
  3088  
  3089  IMPROVEMENTS
  3090  
  3091  * Cleanup post repo-merge.
  3092  * [docs] Various improvements.
  3093  
  3094  BUG FIXES
  3095  
  3096  * [state] Return error when EndBlock returns a 0-power validator that isn't
  3097    already in the validator set.
  3098  * [consensus] Shut down WAL properly.
  3099  
  3100  
  3101  ## 0.22.0
  3102  
  3103  *July 2nd, 2018*
  3104  
  3105  BREAKING CHANGES:
  3106  - [config]
  3107      * Remove `max_block_size_txs` and `max_block_size_bytes` in favor of
  3108          consensus params from the genesis file.
  3109      * Rename `skip_upnp` to `upnp`, and turn it off by default.
  3110      * Change `max_packet_msg_size` back to `max_packet_msg_payload_size`
  3111  - [rpc]
  3112      * All integers are encoded as strings (part of the update for Amino v0.10.1)
  3113      * `syncing` is now called `catching_up`
  3114  - [types] Update Amino to v0.10.1
  3115      * Amino is now fully proto3 compatible for the basic types
  3116      * JSON-encoded types now use the type name instead of the prefix bytes
  3117      * Integers are encoded as strings
  3118  - [crypto] Update go-crypto to v0.10.0 and merge into `crypto`
  3119      * privKey.Sign returns error.
  3120      * ed25519 address changed to the first 20-bytes of the SHA256 of the raw pubkey bytes
  3121      * `tmlibs/merkle` -> `crypto/merkle`. Uses SHA256 instead of RIPEMD160
  3122  - [tmlibs] Update to v0.9.0 and merge into `libs`
  3123      * remove `merkle` package (moved to `crypto/merkle`)
  3124  
  3125  FEATURES
  3126  - [cmd] Added metrics (served under `/metrics` using a Prometheus client;
  3127    disabled by default). See the new `instrumentation` section in the config and
  3128    [metrics](https://github.com/tendermint/tendermint/blob/master/docs/nodes/metrics.md)
  3129    guide.
  3130  - [p2p] Add IPv6 support to peering.
  3131  - [p2p] Add `external_address` to config to allow specifying the address for
  3132    peers to dial
  3133  
  3134  IMPROVEMENT
  3135  - [rpc/client] Supports https and wss now.
  3136  - [crypto] Make public key size into public constants
  3137  - [mempool] Log tx hash, not entire tx
  3138  - [abci] Merged in github.com/tendermint/abci
  3139  - [crypto] Merged in github.com/tendermint/go-crypto
  3140  - [libs] Merged in github.com/tendermint/tmlibs
  3141  - [docs] Move from .rst to .md
  3142  
  3143  BUG FIXES:
  3144  - [rpc] Limit maximum number of HTTP/WebSocket connections
  3145    (`rpc.max_open_connections`) and gRPC connections
  3146    (`rpc.grpc_max_open_connections`). Check out "Running In Production" guide if
  3147    you want to increase them.
  3148  - [rpc] Limit maximum request body size to 1MB (header is limited to 1MB).
  3149  - [consensus] Fix a halting bug where `create_empty_blocks=false`
  3150  - [p2p] Fix panic in seed mode
  3151  
  3152  ## 0.21.0
  3153  
  3154  *June 21th, 2018*
  3155  
  3156  BREAKING CHANGES
  3157  
  3158  - [config] Change default ports from 4665X to 2665X. Ports over 32768 are
  3159    ephemeral and reserved for use by the kernel.
  3160  - [cmd] `unsafe_reset_all` removes the addrbook.json
  3161  
  3162  IMPROVEMENT
  3163  
  3164  - [pubsub] Set default capacity to 0
  3165  - [docs] Various improvements
  3166  
  3167  BUG FIXES
  3168  
  3169  - [consensus] Fix an issue where we don't make blocks after `fast_sync` when `create_empty_blocks=false`
  3170  - [mempool] Fix #1761 where we don't process txs if `cache_size=0`
  3171  - [rpc] Fix memory leak in Websocket (when using `/subscribe` method)
  3172  - [config] Escape paths in config - fixes config paths on Windows
  3173  
  3174  ## 0.20.0
  3175  
  3176  *June 6th, 2018*
  3177  
  3178  This is the first in a series of breaking releases coming to Tendermint after
  3179  soliciting developer feedback and conducting security audits.
  3180  
  3181  This release does not break any blockchain data structures or
  3182  protocols other than the ABCI messages between Tendermint and the application.
  3183  
  3184  Applications that upgrade for ABCI v0.11.0 should be able to continue running Tendermint
  3185  v0.20.0 on blockchains created with v0.19.X
  3186  
  3187  BREAKING CHANGES
  3188  
  3189  - [abci] Upgrade to
  3190    [v0.11.0](https://github.com/tendermint/abci/blob/master/CHANGELOG.md#0110)
  3191  - [abci] Change Query path for filtering peers by node ID from
  3192    `p2p/filter/pubkey/<id>` to `p2p/filter/id/<id>`
  3193  
  3194  ## 0.19.9
  3195  
  3196  *June 5th, 2018*
  3197  
  3198  BREAKING CHANGES
  3199  
  3200  - [types/priv_validator] Moved to top level `privval` package
  3201  
  3202  FEATURES
  3203  
  3204  - [config] Collapse PeerConfig into P2PConfig
  3205  - [docs] Add quick-install script
  3206  - [docs/spec] Add table of Amino prefixes
  3207  
  3208  BUG FIXES
  3209  
  3210  - [rpc] Return 404 for unknown endpoints
  3211  - [consensus] Flush WAL on stop
  3212  - [evidence] Don't send evidence to peers that are behind
  3213  - [p2p] Fix memory leak on peer disconnects
  3214  - [rpc] Fix panic when `per_page=0`
  3215  
  3216  ## 0.19.8
  3217  
  3218  *June 4th, 2018*
  3219  
  3220  BREAKING:
  3221  
  3222  - [p2p] Remove `auth_enc` config option, peer connections are always auth
  3223    encrypted. Technically a breaking change but seems no one was using it and
  3224    arguably a bug fix :)
  3225  
  3226  BUG FIXES
  3227  
  3228  - [mempool] Fix deadlock under high load when `skip_timeout_commit=true` and
  3229    `create_empty_blocks=false`
  3230  
  3231  ## 0.19.7
  3232  
  3233  *May 31st, 2018*
  3234  
  3235  BREAKING:
  3236  
  3237  - [libs/pubsub] TagMap#Get returns a string value
  3238  - [libs/pubsub] NewTagMap accepts a map of strings
  3239  
  3240  FEATURES
  3241  
  3242  - [rpc] the RPC documentation is now published to `https://tendermint.github.io/slate`
  3243  - [p2p] AllowDuplicateIP config option to refuse connections from same IP.
  3244      - true by default for now, false by default in next breaking release
  3245  - [docs] Add docs for query, tx indexing, events, pubsub
  3246  - [docs] Add some notes about running Tendermint in production
  3247  
  3248  IMPROVEMENTS:
  3249  
  3250  - [consensus] Consensus reactor now receives events from a separate synchronous event bus,
  3251    which is not dependant on external RPC load
  3252  - [consensus/wal] do not look for height in older files if we've seen height - 1
  3253  - [docs] Various cleanup and link fixes
  3254  
  3255  ## 0.19.6
  3256  
  3257  *May 29th, 2018*
  3258  
  3259  BUG FIXES
  3260  
  3261  - [blockchain] Fix fast-sync deadlock during high peer turnover
  3262  
  3263  BUG FIX:
  3264  
  3265  - [evidence] Dont send peers evidence from heights they haven't synced to yet
  3266  - [p2p] Refuse connections to more than one peer with the same IP
  3267  - [docs] Various fixes
  3268  
  3269  ## 0.19.5
  3270  
  3271  *May 20th, 2018*
  3272  
  3273  BREAKING CHANGES
  3274  
  3275  - [rpc/client] TxSearch and UnconfirmedTxs have new arguments (see below)
  3276  - [rpc/client] TxSearch returns ResultTxSearch
  3277  - [version] Breaking changes to Go APIs will not be reflected in breaking
  3278    version change, but will be included in changelog.
  3279  
  3280  FEATURES
  3281  
  3282  - [rpc] `/tx_search` takes `page` (starts at 1) and `per_page` (max 100, default 30) args to paginate results
  3283  - [rpc] `/unconfirmed_txs` takes `limit` (max 100, default 30) arg to limit the output
  3284  - [config] `mempool.size` and `mempool.cache_size` options
  3285  
  3286  IMPROVEMENTS
  3287  
  3288  - [docs] Lots of updates
  3289  - [consensus] Only Fsync() the WAL before executing msgs from ourselves
  3290  
  3291  BUG FIXES
  3292  
  3293  - [mempool] Enforce upper bound on number of transactions
  3294  
  3295  ## 0.19.4 (May 17th, 2018)
  3296  
  3297  IMPROVEMENTS
  3298  
  3299  - [state] Improve tx indexing by using batches
  3300  - [consensus, state] Improve logging (more consensus logs, fewer tx logs)
  3301  - [spec] Moved to `docs/spec` (TODO cleanup the rest of the docs ...)
  3302  
  3303  BUG FIXES
  3304  
  3305  - [consensus] Fix issue #1575 where a late proposer can get stuck
  3306  
  3307  ## 0.19.3 (May 14th, 2018)
  3308  
  3309  FEATURES
  3310  
  3311  - [rpc] New `/consensus_state` returns just the votes seen at the current height
  3312  
  3313  IMPROVEMENTS
  3314  
  3315  - [rpc] Add stringified votes and fraction of power voted to `/dump_consensus_state`
  3316  - [rpc] Add PeerStateStats to `/dump_consensus_state`
  3317  
  3318  BUG FIXES
  3319  
  3320  - [cmd] Set GenesisTime during `tendermint init`
  3321  - [consensus] fix ValidBlock rules
  3322  
  3323  ## 0.19.2 (April 30th, 2018)
  3324  
  3325  FEATURES:
  3326  
  3327  - [p2p] Allow peers with different Minor versions to connect
  3328  - [rpc] `/net_info` includes `n_peers`
  3329  
  3330  IMPROVEMENTS:
  3331  
  3332  - [p2p] Various code comments, cleanup, error types
  3333  - [p2p] Change some Error logs to Debug
  3334  
  3335  BUG FIXES:
  3336  
  3337  - [p2p] Fix reconnect to persistent peer when first dial fails
  3338  - [p2p] Validate NodeInfo.ListenAddr
  3339  - [p2p] Only allow (MaxNumPeers - MaxNumOutboundPeers) inbound peers
  3340  - [p2p/pex] Limit max msg size to 64kB
  3341  - [p2p] Fix panic when pex=false
  3342  - [p2p] Allow multiple IPs per ID in AddrBook
  3343  - [p2p] Fix before/after bugs in addrbook isBad()
  3344  
  3345  ## 0.19.1 (April 27th, 2018)
  3346  
  3347  Note this release includes some small breaking changes in the RPC and one in the
  3348  config that are really bug fixes. v0.19.1 will work with existing chains, and make Tendermint
  3349  easier to use and debug. With <3
  3350  
  3351  BREAKING (MINOR)
  3352  
  3353  - [config] Removed `wal_light` setting. If you really needed this, let us know
  3354  
  3355  FEATURES:
  3356  
  3357  - [networks] moved in tooling from devops repo: terraform and ansible scripts for deploying testnets !
  3358  - [cmd] Added `gen_node_key` command
  3359  
  3360  BUG FIXES
  3361  
  3362  Some of these are breaking in the RPC response, but they're really bugs!
  3363  
  3364  - [spec] Document address format and pubkey encoding pre and post Amino
  3365  - [rpc] Lower case JSON field names
  3366  - [rpc] Fix missing entries, improve, and lower case the fields in `/dump_consensus_state`
  3367  - [rpc] Fix NodeInfo.Channels format to hex
  3368  - [rpc] Add Validator address to `/status`
  3369  - [rpc] Fix `prove` in ABCIQuery
  3370  - [cmd] MarshalJSONIndent on init
  3371  
  3372  ## 0.19.0 (April 13th, 2018)
  3373  
  3374  BREAKING:
  3375  - [cmd] improved `testnet` command; now it can fill in `persistent_peers` for you in the config file and much more (see `tendermint testnet --help` for details)
  3376  - [cmd] `show_node_id` now returns an error if there is no node key
  3377  - [rpc]: changed the output format for the `/status` endpoint (see https://godoc.org/github.com/tendermint/tendermint/rpc/core#Status)
  3378  
  3379  Upgrade from go-wire to go-amino. This is a sweeping change that breaks everything that is
  3380  serialized to disk or over the network.
  3381  
  3382  See github.com/tendermint/go-amino for details on the new format.
  3383  
  3384  See `scripts/wire2amino.go` for a tool to upgrade
  3385  genesis/priv_validator/node_key JSON files.
  3386  
  3387  FEATURES
  3388  
  3389  - [test] docker-compose for local testnet setup (thanks Greg!)
  3390  
  3391  ## 0.18.0 (April 6th, 2018)
  3392  
  3393  BREAKING:
  3394  
  3395  - [types] Merkle tree uses different encoding for varints (see tmlibs v0.8.0)
  3396  - [types] ValidtorSet.GetByAddress returns -1 if no validator found
  3397  - [p2p] require all addresses come with an ID no matter what
  3398  - [rpc] Listening address must contain tcp:// or unix:// prefix
  3399  
  3400  FEATURES:
  3401  
  3402  - [rpc] StartHTTPAndTLSServer (not used yet)
  3403  - [rpc] Include validator's voting power in `/status`
  3404  - [rpc] `/tx` and `/tx_search` responses now include the transaction hash
  3405  - [rpc] Include peer NodeIDs in `/net_info`
  3406  
  3407  IMPROVEMENTS:
  3408  - [config] trim whitespace from elements of lists (like `persistent_peers`)
  3409  - [rpc] `/tx_search` results are sorted by height
  3410  - [p2p] do not try to connect to ourselves (ok, maybe only once)
  3411  - [p2p] seeds respond with a bias towards good peers
  3412  
  3413  BUG FIXES:
  3414  - [rpc] fix subscribing using an abci.ResponseDeliverTx tag
  3415  - [rpc] fix tx_indexers matchRange
  3416  - [rpc] fix unsubscribing (see tmlibs v0.8.0)
  3417  
  3418  ## 0.17.1 (March 27th, 2018)
  3419  
  3420  BUG FIXES:
  3421  - [types] Actually support `app_state` in genesis as `AppStateJSON`
  3422  
  3423  ## 0.17.0 (March 27th, 2018)
  3424  
  3425  BREAKING:
  3426  - [types] WriteSignBytes -> SignBytes
  3427  
  3428  IMPROVEMENTS:
  3429  - [all] renamed `dummy` (`persistent_dummy`) to `kvstore` (`persistent_kvstore`) (name "dummy" is deprecated and will not work in the next breaking release)
  3430  - [docs] note on determinism (docs/determinism.rst)
  3431  - [genesis] `app_options` field is deprecated. please rename it to `app_state` in your genesis file(s). `app_options` will not work in the next breaking release
  3432  - [p2p] dial seeds directly without potential peers
  3433  - [p2p] exponential backoff for addrs in the address book
  3434  - [p2p] mark peer as good if it contributed enough votes or block parts
  3435  - [p2p] stop peer if it sends incorrect data, msg to unknown channel, msg we did not expect
  3436  - [p2p] when `auth_enc` is true, all dialed peers must have a node ID in their address
  3437  - [spec] various improvements
  3438  - switched from glide to dep internally for package management
  3439  - [wire] prep work for upgrading to new go-wire (which is now called go-amino)
  3440  
  3441  FEATURES:
  3442  - [config] exposed `auth_enc` flag to enable/disable encryption
  3443  - [config] added the `--p2p.private_peer_ids` flag and `PrivatePeerIDs` config variable (see config for description)
  3444  - [rpc] added `/health` endpoint, which returns empty result for now
  3445  - [types/priv_validator] new format and socket client, allowing for remote signing
  3446  
  3447  BUG FIXES:
  3448  - [consensus] fix liveness bug by introducing ValidBlock mechanism
  3449  
  3450  ## 0.16.0 (February 20th, 2018)
  3451  
  3452  BREAKING CHANGES:
  3453  - [config] use $TMHOME/config for all config and json files
  3454  - [p2p] old `--p2p.seeds` is now `--p2p.persistent_peers` (persistent peers to which TM will always connect to)
  3455  - [p2p] now `--p2p.seeds` only used for getting addresses (if addrbook is empty; not persistent)
  3456  - [p2p] NodeInfo: remove RemoteAddr and add Channels
  3457      - we must have at least one overlapping channel with peer
  3458      - we only send msgs for channels the peer advertised
  3459  - [p2p/conn] pong timeout
  3460  - [lite] comment out IAVL related code
  3461  
  3462  FEATURES:
  3463  - [p2p] added new `/dial_peers&persistent=_` **unsafe** endpoint
  3464  - [p2p] persistent node key in `$THMHOME/config/node_key.json`
  3465  - [p2p] introduce peer ID and authenticate peers by ID using addresses like `ID@IP:PORT`
  3466  - [p2p/pex] new seed mode crawls the network and serves as a seed.
  3467  - [config] MempoolConfig.CacheSize
  3468  - [config] P2P.SeedMode (`--p2p.seed_mode`)
  3469  
  3470  IMPROVEMENT:
  3471  - [p2p/pex] stricter rules in the PEX reactor for better handling of abuse
  3472  - [p2p] various improvements to code structure including subpackages for `pex` and `conn`
  3473  - [docs] new spec!
  3474  - [all] speed up the tests!
  3475  
  3476  BUG FIX:
  3477  - [blockchain] StopPeerForError on timeout
  3478  - [consensus] StopPeerForError on a bad Maj23 message
  3479  - [state] flush mempool conn before calling commit
  3480  - [types] fix priv val signing things that only differ by timestamp
  3481  - [mempool] fix memory leak causing zombie peers
  3482  - [p2p/conn] fix potential deadlock
  3483  
  3484  ## 0.15.0 (December 29, 2017)
  3485  
  3486  BREAKING CHANGES:
  3487  - [p2p] enable the Peer Exchange reactor by default
  3488  - [types] add Timestamp field to Proposal/Vote
  3489  - [types] add new fields to Header: TotalTxs, ConsensusParamsHash, LastResultsHash, EvidenceHash
  3490  - [types] add Evidence to Block
  3491  - [types] simplify ValidateBasic
  3492  - [state] updates to support changes to the header
  3493  - [state] Enforce <1/3 of validator set can change at a time
  3494  
  3495  FEATURES:
  3496  - [state] Send indices of absent validators and addresses of byzantine validators in BeginBlock
  3497  - [state] Historical ConsensusParams and ABCIResponses
  3498  - [docs] Specification for the base Tendermint data structures.
  3499  - [evidence] New evidence reactor for gossiping and managing evidence
  3500  - [rpc] `/block_results?height=X` returns the DeliverTx results for a given height.
  3501  
  3502  IMPROVEMENTS:
  3503  - [consensus] Better handling of corrupt WAL file
  3504  
  3505  BUG FIXES:
  3506  - [lite] fix race
  3507  - [state] validate block.Header.ValidatorsHash
  3508  - [p2p] allow seed addresses to be prefixed with eg. `tcp://`
  3509  - [p2p] use consistent key to refer to peers so we dont try to connect to existing peers
  3510  - [cmd] fix `tendermint init` to ignore files that are there and generate files that aren't.
  3511  
  3512  ## 0.14.0 (December 11, 2017)
  3513  
  3514  BREAKING CHANGES:
  3515  - consensus/wal: removed separator
  3516  - rpc/client: changed Subscribe/Unsubscribe/UnsubscribeAll funcs signatures to be identical to event bus.
  3517  
  3518  FEATURES:
  3519  - new `tendermint lite` command (and `lite/proxy` pkg) for running a light-client RPC proxy.
  3520      NOTE it is currently insecure and its APIs are not yet covered by semver
  3521  
  3522  IMPROVEMENTS:
  3523  - rpc/client: can act as event bus subscriber (See https://github.com/tendermint/tendermint/issues/945).
  3524  - p2p: use exponential backoff from seconds to hours when attempting to reconnect to persistent peer
  3525  - config: moniker defaults to the machine's hostname instead of "anonymous"
  3526  
  3527  BUG FIXES:
  3528  - p2p: no longer exit if one of the seed addresses is incorrect
  3529  
  3530  ## 0.13.0 (December 6, 2017)
  3531  
  3532  BREAKING CHANGES:
  3533  - abci: update to v0.8 using gogo/protobuf; includes tx tags, vote info in RequestBeginBlock, data.Bytes everywhere, use int64, etc.
  3534  - types: block heights are now `int64` everywhere
  3535  - types & node: EventSwitch and EventCache have been replaced by EventBus and EventBuffer; event types have been overhauled
  3536  - node: EventSwitch methods now refer to EventBus
  3537  - rpc/lib/types: RPCResponse is no longer a pointer; WSRPCConnection interface has been modified
  3538  - rpc/client: WaitForOneEvent takes an EventsClient instead of types.EventSwitch
  3539  - rpc/client: Add/RemoveListenerForEvent are now Subscribe/Unsubscribe
  3540  - rpc/core/types: ResultABCIQuery wraps an abci.ResponseQuery
  3541  - rpc: `/subscribe` and `/unsubscribe` take `query` arg instead of `event`
  3542  - rpc: `/status` returns the LatestBlockTime in human readable form instead of in nanoseconds
  3543  - mempool: cached transactions return an error instead of an ABCI response with BadNonce
  3544  
  3545  FEATURES:
  3546  - rpc: new `/unsubscribe_all` WebSocket RPC endpoint
  3547  - rpc: new `/tx_search` endpoint for filtering transactions by more complex queries
  3548  - p2p/trust: new trust metric for tracking peers. See ADR-006
  3549  - config: TxIndexConfig allows to set what DeliverTx tags to index
  3550  
  3551  IMPROVEMENTS:
  3552  - New asynchronous events system using `tmlibs/pubsub`
  3553  - logging: Various small improvements
  3554  - consensus: Graceful shutdown when app crashes
  3555  - tests: Fix various non-deterministic errors
  3556  - p2p: more defensive programming
  3557  
  3558  BUG FIXES:
  3559  - consensus: fix panic where prs.ProposalBlockParts is not initialized
  3560  - p2p: fix panic on bad channel
  3561  
  3562  ## 0.12.1 (November 27, 2017)
  3563  
  3564  BUG FIXES:
  3565  - upgrade tmlibs dependency to enable Windows builds for Tendermint
  3566  
  3567  ## 0.12.0 (October 27, 2017)
  3568  
  3569  BREAKING CHANGES:
  3570   - rpc/client: websocket ResultsCh and ErrorsCh unified in ResponsesCh.
  3571   - rpc/client: ABCIQuery no longer takes `prove`
  3572   - state: remove GenesisDoc from state.
  3573   - consensus: new binary WAL format provides efficiency and uses checksums to detect corruption
  3574      - use scripts/wal2json to convert to json for debugging
  3575  
  3576  FEATURES:
  3577   - new `Verifiers` pkg contains the tendermint light-client library (name subject to change)!
  3578   - rpc: `/genesis` includes the `app_options` .
  3579   - rpc: `/abci_query` takes an additional `height` parameter to support historical queries.
  3580   - rpc/client: new ABCIQueryWithOptions supports options like `trusted` (set false to get a proof) and `height` to query a historical height.
  3581  
  3582  IMPROVEMENTS:
  3583   - rpc: `/genesis` result includes `app_options`
  3584   - rpc/lib/client: add jitter to reconnects.
  3585   - rpc/lib/types: `RPCError` satisfies the `error` interface.
  3586  
  3587  BUG FIXES:
  3588   - rpc/client: fix ws deadlock after stopping
  3589   - blockchain: fix panic on AddBlock when peer is nil
  3590   - mempool: fix sending on TxsAvailable when a tx has been invalidated
  3591   - consensus: dont run WAL catchup if we fast synced
  3592  
  3593  ## 0.11.1 (October 10, 2017)
  3594  
  3595  IMPROVEMENTS:
  3596   - blockchain/reactor: respondWithNoResponseMessage for missing height
  3597  
  3598  BUG FIXES:
  3599   - rpc: fixed client WebSocket timeout
  3600   - rpc: client now resubscribes on reconnection
  3601   - rpc: fix panics on missing params
  3602   - rpc: fix `/dump_consensus_state` to have normal json output (NOTE: technically breaking, but worth a bug fix label)
  3603   - types: fixed out of range error in VoteSet.addVote
  3604   - consensus: fix wal autofile via https://github.com/tendermint/tmlibs/blob/master/CHANGELOG.md#032-october-2-2017
  3605  
  3606  ## 0.11.0 (September 22, 2017)
  3607  
  3608  BREAKING:
  3609   - genesis file: validator `amount` is now `power`
  3610   - abci: Info, BeginBlock, InitChain all take structs
  3611   - rpc: various changes to match JSONRPC spec (http://www.jsonrpc.org/specification), including breaking ones:
  3612      - requests that previously returned HTTP code 4XX now return 200 with an error code in the JSONRPC.
  3613      - `rpctypes.RPCResponse` uses new `RPCError` type instead of `string`.
  3614  
  3615   - cmd: if there is no genesis, exit immediately instead of waiting around for one to show.
  3616   - types: `Signer.Sign` returns an error.
  3617   - state: every validator set change is persisted to disk, which required some changes to the `State` structure.
  3618   - p2p: new `p2p.Peer` interface used for all reactor methods (instead of `*p2p.Peer` struct).
  3619  
  3620  FEATURES:
  3621   - rpc: `/validators?height=X` allows querying of validators at previous heights.
  3622   - rpc: Leaving the `height` param empty for `/block`, `/validators`, and `/commit` will return the value for the latest height.
  3623  
  3624  IMPROVEMENTS:
  3625   - docs: Moved all docs from the website and tools repo in, converted to `.rst`, and cleaned up for presentation on `tendermint.readthedocs.io`
  3626  
  3627  BUG FIXES:
  3628   - fix WAL openning issue on Windows
  3629  
  3630  ## 0.10.4 (September 5, 2017)
  3631  
  3632  IMPROVEMENTS:
  3633  - docs: Added Slate docs to each rpc function (see rpc/core)
  3634  - docs: Ported all website docs to Read The Docs
  3635  - config: expose some p2p params to tweak performance: RecvRate, SendRate, and MaxMsgPacketPayloadSize
  3636  - rpc: Upgrade the websocket client and server, including improved auto reconnect, and proper ping/pong
  3637  
  3638  BUG FIXES:
  3639  - consensus: fix panic on getVoteBitArray
  3640  - consensus: hang instead of panicking on byzantine consensus failures
  3641  - cmd: dont load config for version command
  3642  
  3643  ## 0.10.3 (August 10, 2017)
  3644  
  3645  FEATURES:
  3646  - control over empty block production:
  3647    - new flag, `--consensus.create_empty_blocks`; when set to false, blocks are only created when there are txs or when the AppHash changes.
  3648    - new config option, `consensus.create_empty_blocks_interval`; an empty block is created after this many seconds.
  3649    - in normal operation, `create_empty_blocks = true` and `create_empty_blocks_interval = 0`, so blocks are being created all the time (as in all previous versions of tendermint). The number of empty blocks can be reduced by increasing `create_empty_blocks_interval` or by setting `create_empty_blocks = false`.
  3650    - new `TxsAvailable()` method added to Mempool that returns a channel which fires when txs are available.
  3651    - new heartbeat message added to consensus reactor to notify peers that a node is waiting for txs before entering propose step.
  3652  - rpc: Add `syncing` field to response returned by `/status`. Is `true` while in fast-sync mode.
  3653  
  3654  IMPROVEMENTS:
  3655  - various improvements to documentation and code comments
  3656  
  3657  BUG FIXES:
  3658  - mempool: pass height into constructor so it doesn't always start at 0
  3659  
  3660  ## 0.10.2 (July 10, 2017)
  3661  
  3662  FEATURES:
  3663  - Enable lower latency block commits by adding consensus reactor sleep durations and p2p flush throttle timeout to the config
  3664  
  3665  IMPROVEMENTS:
  3666  - More detailed logging in the consensus reactor and state machine
  3667  - More in-code documentation for many exposed functions, especially in consensus/reactor.go and p2p/switch.go
  3668  - Improved readability for some function definitions and code blocks with long lines
  3669  
  3670  ## 0.10.1 (June 28, 2017)
  3671  
  3672  FEATURES:
  3673  - Use `--trace` to get stack traces for logged errors
  3674  - types: GenesisDoc.ValidatorHash returns the hash of the genesis validator set
  3675  - types: GenesisDocFromFile parses a GenesiDoc from a JSON file
  3676  
  3677  IMPROVEMENTS:
  3678  - Add a Code of Conduct
  3679  - Variety of improvements as suggested by `megacheck` tool
  3680  - rpc: deduplicate tests between rpc/client and rpc/tests
  3681  - rpc: addresses without a protocol prefix default to `tcp://`. `http://` is also accepted as an alias for `tcp://`
  3682  - cmd: commands are more easily reuseable from other tools
  3683  - DOCKER: automate build/push
  3684  
  3685  BUG FIXES:
  3686  - Fix log statements using keys with spaces (logger does not currently support spaces)
  3687  - rpc: set logger on websocket connection
  3688  - rpc: fix ws connection stability by setting write deadline on pings
  3689  
  3690  ## 0.10.0 (June 2, 2017)
  3691  
  3692  Includes major updates to configuration, logging, and json serialization.
  3693  Also includes the Grand Repo-Merge of 2017.
  3694  
  3695  BREAKING CHANGES:
  3696  
  3697  - Config and Flags:
  3698    - The `config` map is replaced with a [`Config` struct](https://github.com/tendermint/tendermint/blob/master/config/config.go#L11),
  3699  containing substructs: `BaseConfig`, `P2PConfig`, `MempoolConfig`, `ConsensusConfig`, `RPCConfig`
  3700    - This affects the following flags:
  3701      - `--seeds` is now `--p2p.seeds`
  3702      - `--node_laddr` is now `--p2p.laddr`
  3703      - `--pex` is now `--p2p.pex`
  3704      - `--skip_upnp` is now `--p2p.skip_upnp`
  3705      - `--rpc_laddr` is now `--rpc.laddr`
  3706      - `--grpc_laddr` is now `--rpc.grpc_laddr`
  3707    - Any configuration option now within a substract must come under that heading in the `config.toml`, for instance:
  3708      ```
  3709      [p2p]
  3710      laddr="tcp://1.2.3.4:46656"
  3711  
  3712      [consensus]
  3713      timeout_propose=1000
  3714      ```
  3715    - Use viper and `DefaultConfig() / TestConfig()` functions to handle defaults, and remove `config/tendermint` and `config/tendermint_test`
  3716    - Change some function and method signatures to
  3717    - Change some [function and method signatures](https://gist.github.com/ebuchman/640d5fc6c2605f73497992fe107ebe0b) accomodate new config
  3718  
  3719  - Logger
  3720    - Replace static `log15` logger with a simple interface, and provide a new implementation using `go-kit`. <!-- markdown-link-check-disable-next-line -->
  3721  See our new [logging library](https://github.com/tendermint/tmlibs/log) and [blog post](https://tendermint.com/blog/abstracting-the-logger-interface-in-go) for more details
  3722    - Levels `warn` and `notice` are removed (you may need to change them in your `config.toml`!)
  3723    - Change some [function and method signatures](https://gist.github.com/ebuchman/640d5fc6c2605f73497992fe107ebe0b) to accept a logger
  3724  
  3725  - JSON serialization:
  3726    - Replace `[TypeByte, Xxx]` with `{"type": "some-type", "data": Xxx}` in RPC and all `.json` files by using `go-wire/data`. For instance, a public key is now:
  3727      ```
  3728      "pub_key": {
  3729        "type": "ed25519",
  3730        "data": "83DDF8775937A4A12A2704269E2729FCFCD491B933C4B0A7FFE37FE41D7760D0"
  3731      }
  3732      ```
  3733    - Remove type information about RPC responses, so `[TypeByte, {"jsonrpc": "2.0", ... }]` is now just `{"jsonrpc": "2.0", ... }`
  3734    - Change `[]byte` to `data.Bytes` in all serialized types (for hex encoding)
  3735    - Lowercase the JSON tags in `ValidatorSet` fields
  3736    - Introduce `EventDataInner` for serializing events
  3737  
  3738  - Other:
  3739    - Send InitChain message in handshake if `appBlockHeight == 0`
  3740    - Do not include the `Accum` field when computing the validator hash. This makes the ValidatorSetHash unique for a given validator set, rather than changing with every block (as the Accum changes)
  3741    - Unsafe RPC calls are not enabled by default. This includes `/dial_seeds`, and all calls prefixed with `unsafe`. Use the `--rpc.unsafe` flag to enable.
  3742  
  3743  
  3744  FEATURES:
  3745  
  3746  - Per-module log levels. For instance, the new default is `state:info,*:error`, which means the `state` package logs at `info` level, and everything else logs at `error` level
  3747  - Log if a node is validator or not in every consensus round
  3748  - Use ldflags to set git hash as part of the version
  3749  - Ignore `address` and `pub_key` fields in `priv_validator.json` and overwrite them with the values derrived from the `priv_key`
  3750  
  3751  IMPROVEMENTS:
  3752  
  3753  - Merge `tendermint/go-p2p -> tendermint/tendermint/p2p` and `tendermint/go-rpc -> tendermint/tendermint/rpc/lib`
  3754  - Update paths for grand repo merge:
  3755    - `go-common -> tmlibs/common`
  3756    - `go-data -> go-wire/data`
  3757    - All other `go-` libs, except `go-crypto` and `go-wire`, are merged under `tmlibs`
  3758  - No global loggers (loggers are passed into constructors, or preferably set with a SetLogger method)
  3759  - Return HTTP status codes with errors for RPC responses
  3760  - Limit `/blockchain_info` call to return a maximum of 20 blocks
  3761  - Use `.Wrap()` and `.Unwrap()` instead of eg. `PubKeyS` for `go-crypto` types
  3762  - RPC JSON responses use pretty printing (via `json.MarshalIndent`)
  3763  - Color code different instances of the consensus for tests
  3764  - Isolate viper to `cmd/tendermint/commands` and do not read config from file for tests
  3765  
  3766  
  3767  ## 0.9.2 (April 26, 2017)
  3768  
  3769  BUG FIXES:
  3770  
  3771  - Fix bug in `ResetPrivValidator` where we were using the global config and log (causing external consumers, eg. basecoin, to fail).
  3772  
  3773  ## 0.9.1 (April 21, 2017)
  3774  
  3775  FEATURES:
  3776  
  3777  - Transaction indexing - txs are indexed by their hash using a simple key-value store; easily extended to more advanced indexers
  3778  - New `/tx?hash=X` endpoint to query for transactions and their DeliverTx result by hash. Optionally returns a proof of the tx's inclusion in the block
  3779  - `tendermint testnet` command initializes files for a testnet
  3780  
  3781  IMPROVEMENTS:
  3782  
  3783  - CLI now uses Cobra framework
  3784  - TMROOT is now TMHOME (TMROOT will stop working in 0.10.0)
  3785  - `/broadcast_tx_XXX` also returns the Hash (can be used to query for the tx)
  3786  - `/broadcast_tx_commit` also returns the height the block was committed in
  3787  - ABCIResponses struct persisted to disk before calling Commit; makes handshake replay much cleaner
  3788  - WAL uses #ENDHEIGHT instead of #HEIGHT (#HEIGHT will stop working in 0.10.0)
  3789  - Peers included via `--seeds`, under `seeds` in the config, or in `/dial_seeds` are now persistent, and will be reconnected to if the connection breaks
  3790  
  3791  BUG FIXES:
  3792  
  3793  - Fix bug in fast-sync where we stop syncing after a peer is removed, even if they're re-added later
  3794  - Fix handshake replay to handle validator set changes and results of DeliverTx when we crash after app.Commit but before state.Save()
  3795  
  3796  ## 0.9.0 (March 6, 2017)
  3797  
  3798  BREAKING CHANGES:
  3799  
  3800  - Update ABCI to v0.4.0, where Query is now `Query(RequestQuery) ResponseQuery`, enabling precise proofs at particular heights:
  3801  
  3802  ```
  3803  message RequestQuery{
  3804  	bytes data = 1;
  3805  	string path = 2;
  3806  	uint64 height = 3;
  3807  	bool prove = 4;
  3808  }
  3809  
  3810  message ResponseQuery{
  3811  	CodeType          code        = 1;
  3812  	int64             index       = 2;
  3813  	bytes             key         = 3;
  3814  	bytes             value       = 4;
  3815  	bytes             proof       = 5;
  3816  	uint64            height      = 6;
  3817  	string            log         = 7;
  3818  }
  3819  ```
  3820  
  3821  
  3822  - `BlockMeta` data type unifies its Hash and PartSetHash under a `BlockID`:
  3823  
  3824  ```
  3825  type BlockMeta struct {
  3826  	BlockID BlockID `json:"block_id"` // the block hash and partsethash
  3827  	Header  *Header `json:"header"`   // The block's Header
  3828  }
  3829  ```
  3830  
  3831  - `ValidatorSet.Proposer` is exposed as a field and persisted with the `State`. Use `GetProposer()` to initialize or update after validator-set changes.
  3832  
  3833  - `tendermint gen_validator` command output is now pure JSON
  3834  
  3835  FEATURES:
  3836  
  3837  - New RPC endpoint `/commit?height=X` returns header and commit for block at height `X`
  3838  - Client API for each endpoint, including mocks for testing
  3839  
  3840  IMPROVEMENTS:
  3841  
  3842  - `Node` is now a `BaseService`
  3843  - Simplified starting Tendermint in-process from another application
  3844  - Better organized Makefile
  3845  - Scripts for auto-building binaries across platforms
  3846  - Docker image improved, slimmed down (using Alpine), and changed from tendermint/tmbase to tendermint/tendermint
  3847  - New repo files: `CONTRIBUTING.md`, Github `ISSUE_TEMPLATE`, `CHANGELOG.md`
  3848  - Improvements on CircleCI for managing build/test artifacts
  3849  - Handshake replay is doen through the consensus package, possibly using a mockApp
  3850  - Graceful shutdown of RPC listeners
  3851  - Tests for the PEX reactor and DialSeeds
  3852  
  3853  BUG FIXES:
  3854  
  3855  - Check peer.Send for failure before updating PeerState in consensus
  3856  - Fix panic in `/dial_seeds` with invalid addresses
  3857  - Fix proposer selection logic in ValidatorSet by taking the address into account in the `accumComparable`
  3858  - Fix inconcistencies with `ValidatorSet.Proposer` across restarts by persisting it in the `State`
  3859  
  3860  
  3861  ## 0.8.0 (January 13, 2017)
  3862  
  3863  BREAKING CHANGES:
  3864  
  3865  - New data type `BlockID` to represent blocks:
  3866  
  3867  ```
  3868  type BlockID struct {
  3869  	Hash        []byte        `json:"hash"`
  3870  	PartsHeader PartSetHeader `json:"parts"`
  3871  }
  3872  ```
  3873  
  3874  - `Vote` data type now includes validator address and index:
  3875  
  3876  ```
  3877  type Vote struct {
  3878  	ValidatorAddress []byte           `json:"validator_address"`
  3879  	ValidatorIndex   int              `json:"validator_index"`
  3880  	Height           int              `json:"height"`
  3881  	Round            int              `json:"round"`
  3882  	Type             byte             `json:"type"`
  3883  	BlockID          BlockID          `json:"block_id"` // zero if vote is nil.
  3884  	Signature        crypto.Signature `json:"signature"`
  3885  }
  3886  ```
  3887  
  3888  - Update TMSP to v0.3.0, where it is now called ABCI and AppendTx is DeliverTx
  3889  - Hex strings in the RPC are now "0x" prefixed
  3890  
  3891  
  3892  FEATURES:
  3893  
  3894  - New message type on the ConsensusReactor, `Maj23Msg`, for peers to alert others they've seen a Maj23,
  3895  in order to track and handle conflicting votes intelligently to prevent Byzantine faults from causing halts:
  3896  
  3897  ```
  3898  type VoteSetMaj23Message struct {
  3899  	Height  int
  3900  	Round   int
  3901  	Type    byte
  3902  	BlockID types.BlockID
  3903  }
  3904  ```
  3905  
  3906  - Configurable block part set size
  3907  - Validator set changes
  3908  - Optionally skip TimeoutCommit if we have all the votes
  3909  - Handshake between Tendermint and App on startup to sync latest state and ensure consistent recovery from crashes
  3910  - GRPC server for BroadcastTx endpoint
  3911  
  3912  IMPROVEMENTS:
  3913  
  3914  - Less verbose logging
  3915  - Better test coverage (37% -> 49%)
  3916  - Canonical SignBytes for signable types
  3917  - Write-Ahead Log for Mempool and Consensus via tmlibs/autofile
  3918  - Better in-process testing for the consensus reactor and byzantine faults
  3919  - Better crash/restart testing for individual nodes at preset failure points, and of networks at arbitrary points
  3920  - Better abstraction over timeout mechanics
  3921  
  3922  BUG FIXES:
  3923  
  3924  - Fix memory leak in mempool peer
  3925  - Fix panic on POLRound=-1
  3926  - Actually set the CommitTime
  3927  - Actually send BeginBlock message
  3928  - Fix a liveness issues caused by Byzantine proposals/votes. Uses the new `Maj23Msg`.
  3929  
  3930  
  3931  ## 0.7.4 (December 14, 2016)
  3932  
  3933  FEATURES:
  3934  
  3935  - Enable the Peer Exchange reactor with the `--pex` flag for more resilient gossip network (feature still in development, beware dragons)
  3936  
  3937  IMPROVEMENTS:
  3938  
  3939  - Remove restrictions on RPC endpoint `/dial_seeds` to enable manual network configuration
  3940  
  3941  ## 0.7.3 (October 20, 2016)
  3942  
  3943  IMPROVEMENTS:
  3944  
  3945  - Type safe FireEvent
  3946  - More WAL/replay tests
  3947  - Cleanup some docs
  3948  
  3949  BUG FIXES:
  3950  
  3951  - Fix deadlock in mempool for synchronous apps
  3952  - Replay handles non-empty blocks
  3953  - Fix race condition in HeightVoteSet
  3954  
  3955  ## 0.7.2 (September 11, 2016)
  3956  
  3957  BUG FIXES:
  3958  
  3959  - Set mustConnect=false so tendermint will retry connecting to the app
  3960  
  3961  ## 0.7.1 (September 10, 2016)
  3962  
  3963  FEATURES:
  3964  
  3965  - New TMSP connection for Query/Info
  3966  - New RPC endpoints:
  3967  	- `tmsp_query`
  3968  	- `tmsp_info`
  3969  - Allow application to filter peers through Query (off by default)
  3970  
  3971  IMPROVEMENTS:
  3972  
  3973  - TMSP connection type enforced at compile time
  3974  - All listen/client urls use a "tcp://" or "unix://" prefix
  3975  
  3976  BUG FIXES:
  3977  
  3978  - Save LastSignature/LastSignBytes to `priv_validator.json` for recovery
  3979  - Fix event unsubscribe
  3980  - Fix fastsync/blockchain reactor
  3981  
  3982  ## 0.7.0 (August 7, 2016)
  3983  
  3984  BREAKING CHANGES:
  3985  
  3986  - Strict SemVer starting now!
  3987  - Update to ABCI v0.2.0
  3988  - Validation types now called Commit
  3989  - NewBlock event only returns the block header
  3990  
  3991  
  3992  FEATURES:
  3993  
  3994  - TMSP and RPC support TCP and UNIX sockets
  3995  - Addition config options including block size and consensus parameters
  3996  - New WAL mode `cswal_light`; logs only the validator's own votes
  3997  - New RPC endpoints:
  3998  	- for starting/stopping profilers, and for updating config
  3999  	- `/broadcast_tx_commit`, returns when tx is included in a block, else an error
  4000  	- `/unsafe_flush_mempool`, empties the mempool
  4001  
  4002  
  4003  IMPROVEMENTS:
  4004  
  4005  - Various optimizations
  4006  - Remove bad or invalidated transactions from the mempool cache (allows later duplicates)
  4007  - More elaborate testing using CircleCI including benchmarking throughput on 4 digitalocean droplets
  4008  
  4009  BUG FIXES:
  4010  
  4011  - Various fixes to WAL and replay logic
  4012  - Various race conditions
  4013  
  4014  ## PreHistory
  4015  
  4016  Strict versioning only began with the release of v0.7.0, in late summer 2016.
  4017  The project itself began in early summer 2014 and was workable decentralized cryptocurrency software by the end of that year.
  4018  Through the course of 2015, in collaboration with Eris Industries (now Monax Industries),
  4019  many additional features were integrated, including an implementation from scratch of the Ethereum Virtual Machine.
  4020  That implementation now forms the heart of [Burrow](https://github.com/hyperledger/burrow).
  4021  In the later half of 2015, the consensus algorithm was upgraded with a more asynchronous design and a more deterministic and robust implementation.
  4022  
  4023  By late 2015, frustration with the difficulty of forking a large monolithic stack to create alternative cryptocurrency designs led to the
  4024  invention of the Application Blockchain Interface (ABCI), then called the Tendermint Socket Protocol (TMSP).
  4025  The Ethereum Virtual Machine and various other transaction features were removed, and Tendermint was whittled down to a core consensus engine
  4026  driving an application running in another process.
  4027  The ABCI interface and implementation were iterated on and improved over the course of 2016,
  4028  until versioned history kicked in with v0.7.0.