2018-07-23 19:35:55 -07:00
# Pending
2018-10-19 10:49:04 -07:00
## v0.26.0
*October 19, 2018*
2018-09-21 13:45:00 -07:00
Special thanks to external contributors on this release:
2018-10-19 10:49:04 -07:00
@bradyjoestar , @connorwstein , @goolAdapter , @HaoyangLiu ,
@james -ray, @overbool , @phymbert , @Slamper , @Uzair1995
This release is primarily about adding Version fields to various data structures,
optimizing consensus messages for signing and verification in
restricted environments (like HSMs and the Ethereum Virtual Machine), and
aligning the consensus code with the [specification ](https://arxiv.org/abs/1807.04938 ).
It also includes our first take at a generalized merkle proof system.
See the [UPGRADING.md ](UPGRADING.md#v0.26.0 ) for details on upgrading to the new
version.
Friendly reminder, we have a [bug bounty program ](https://hackerone.com/tendermint ).
2018-09-05 15:26:12 -07:00
2018-07-23 19:35:55 -07:00
BREAKING CHANGES:
2018-09-05 15:02:45 -07:00
* CLI/RPC/Config
2018-10-19 17:27:00 -07:00
* [config] [\#2232 ](https://github.com/tendermint/tendermint/issues/2232 ) timeouts as time.Duration, not ints
* [config] [\#2505 ](https://github.com/tendermint/tendermint/issues/2505 ) Remove Mempool.RecheckEmpty (it was effectively useless anyways)
* [config] [\#2490 ](https://github.com/tendermint/tendermint/issues/2490 ) `mempool.wal` is disabled by default
* [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)
* [state] [\#2644 ](https://github.com/tendermint/tendermint/issues/2644 ) Add Version field to State, breaking the format of State as
2018-10-17 12:30:53 -07:00
encoded on disk.
2018-10-19 17:27:00 -07:00
* [rpc] [\#2298 ](https://github.com/tendermint/tendermint/issues/2298 ) `/abci_query` takes `prove` argument instead of `trusted` and switches the default
2018-10-19 10:49:04 -07:00
behaviour to `prove=false`
2018-10-19 17:27:00 -07:00
* [rpc] [\#2654 ](https://github.com/tendermint/tendermint/issues/2654 ) Remove all `node_info.other.*_version` fields in `/status` and
2018-10-18 07:29:59 -07:00
`/net_info`
2018-10-02 16:03:59 -07:00
2018-09-05 15:02:45 -07:00
* Apps
2018-10-19 17:27:00 -07:00
* [abci] [\#2298 ](https://github.com/tendermint/tendermint/issues/2298 ) ResponseQuery.Proof is now a structured merkle.Proof, not just
2018-09-28 20:32:13 -07:00
arbitrary bytes
2018-10-19 17:27:00 -07:00
* [abci] [\#2644 ](https://github.com/tendermint/tendermint/issues/2644 ) Add Version to Header and shift all fields by one
* [abci] [\#2662 ](https://github.com/tendermint/tendermint/issues/2662 ) Bump the field numbers for some `ResponseInfo` fields to make room for
2018-10-18 13:51:17 -07:00
`AppVersion`
2018-09-05 15:02:45 -07:00
* Go API
2018-10-19 17:27:00 -07:00
* [config] [\#2232 ](https://github.com/tendermint/tendermint/issues/2232 ) timeouts as time.Duration, not ints
* [crypto/merkle & lite] [\#2298 ](https://github.com/tendermint/tendermint/issues/2298 ) Various changes to accomodate General Merkle trees
* [crypto/merkle] [\#2595 ](https://github.com/tendermint/tendermint/issues/2595 ) Remove all Hasher objects in favor of byte slices
* [crypto/merkle] [\#2635 ](https://github.com/tendermint/tendermint/issues/2635 ) merkle.SimpleHashFromTwoHashes is no longer exported
* [node] [\#2479 ](https://github.com/tendermint/tendermint/issues/2479 ) Remove node.RunForever
* [rpc/client] [\#2298 ](https://github.com/tendermint/tendermint/issues/2298 ) `ABCIQueryOptions.Trusted` -> `ABCIQueryOptions.Prove`
* [types] [\#2298 ](https://github.com/tendermint/tendermint/issues/2298 ) Remove `Index` and `Total` fields from `TxProof` .
* [types] [\#2598 ](https://github.com/tendermint/tendermint/issues/2598 ) `VoteTypeXxx` are now of type `SignedMsgType byte` and named `XxxType` , eg. `PrevoteType` ,
2018-10-17 12:30:53 -07:00
`PrecommitType` .
2018-09-20 02:12:42 -07:00
2018-09-28 16:57:29 -07:00
* Blockchain Protocol
2018-10-12 16:21:46 -07:00
* [types] Update SignBytes for `Vote` /`Proposal`/`Heartbeat`:
2018-10-19 17:27:00 -07:00
* [\#2459 ](https://github.com/tendermint/tendermint/issues/2459 ) Use amino encoding instead of JSON in `SignBytes` .
* [\#2598 ](https://github.com/tendermint/tendermint/issues/2598 ) Reorder fields and use fixed sized encoding.
* [\#2598 ](https://github.com/tendermint/tendermint/issues/2598 ) Change `Type` field fromt `string` to `byte` and use new
2018-10-12 16:21:46 -07:00
`SignedMsgType` to enumerate.
2018-10-19 17:27:00 -07:00
* [types] [\#2512 ](https://github.com/tendermint/tendermint/issues/2512 ) Remove the pubkey field from the validator hash
* [types] [\#2644 ](https://github.com/tendermint/tendermint/issues/2644 ) Add Version struct to Header
* [types] [\#2609 ](https://github.com/tendermint/tendermint/issues/2609 ) ConsensusParams.Hash() is the hash of the amino encoded
2018-10-19 10:49:04 -07:00
struct instead of the Merkle tree of the fields
2018-10-19 17:27:00 -07:00
* [state] [\#2587 ](https://github.com/tendermint/tendermint/issues/2587 ) Require block.Time of the fist block to be genesis time
* [state] [\#2644 ](https://github.com/tendermint/tendermint/issues/2644 ) Require block.Version to match state.Version
* [types] [\#2670 ](https://github.com/tendermint/tendermint/issues/2670 ) Header.Hash() builds Merkle tree out of fields in the same
2018-10-19 08:39:27 -07:00
order they appear in the header, instead of sorting by field name
2018-09-28 16:57:29 -07:00
* P2P Protocol
2018-10-19 17:27:00 -07:00
* [p2p] [\#2654 ](https://github.com/tendermint/tendermint/issues/2654 ) Add `ProtocolVersion` struct with protocol versions to top of
2018-10-18 07:29:59 -07:00
DefaultNodeInfo and require `ProtocolVersion.Block` to match during peer handshake
2018-07-25 09:09:52 -07:00
FEATURES:
2018-10-19 17:27:00 -07:00
- [abci] [\#2557 ](https://github.com/tendermint/tendermint/issues/2557 ) Add `Codespace` field to `Response{CheckTx, DeliverTx, Query}`
- [abci] [\#2662 ](https://github.com/tendermint/tendermint/issues/2662 ) Add `BlockVersion` and `P2PVersion` to `RequestInfo`
- [crypto/merkle] [\#2298 ](https://github.com/tendermint/tendermint/issues/2298 ) General Merkle Proof scheme for chaining various types of Merkle trees together
2018-07-23 19:35:55 -07:00
IMPROVEMENTS:
2018-10-12 16:21:46 -07:00
- Additional Metrics
- [consensus] [\#2169 ](https://github.com/cosmos/cosmos-sdk/issues/2169 )
- [p2p] [\#2169 ](https://github.com/cosmos/cosmos-sdk/issues/2169 )
2018-10-19 17:27:00 -07:00
- [config] [\#2232 ](https://github.com/tendermint/tendermint/issues/2232 ) Added ValidateBasic method, which performs basic checks
- [crypto/ed25519] [\#2558 ](https://github.com/tendermint/tendermint/issues/2558 ) Switch to use latest `golang.org/x/crypto` through our fork at
2018-10-11 07:01:53 -07:00
github.com/tendermint/crypto
2018-10-19 17:27:00 -07:00
- [tools] [\#2238 ](https://github.com/tendermint/tendermint/issues/2238 ) Binary dependencies are now locked to a specific git commit
2018-07-23 23:44:39 -07:00
BUG FIXES:
2018-10-19 17:27:00 -07:00
- [autofile] [\#2428 ](https://github.com/tendermint/tendermint/issues/2428 ) Group.RotateFile need call Flush() before rename (@goolAdapter)
- [common] [\#2533 ](https://github.com/tendermint/tendermint/issues/2533 ) Fixed a bug in the `BitArray.Or` method
- [common] [\#2506 ](https://github.com/tendermint/tendermint/issues/2506 ) Fixed a bug in the `BitArray.Sub` method (@james-ray)
- [common] [\#2534 ](https://github.com/tendermint/tendermint/issues/2534 ) Fix `BitArray.PickRandom` to choose uniformly from true bits
2018-10-19 10:49:04 -07:00
- [consensus] [\#1690 ](https://github.com/tendermint/tendermint/issues/1690 ) Wait for
timeoutPrecommit before starting next round
- [consensus] [\#1745 ](https://github.com/tendermint/tendermint/issues/1745 ) Wait for
Proposal or timeoutProposal before entering prevote
2018-10-19 17:27:00 -07:00
- [consensus] [\#2642 ](https://github.com/tendermint/tendermint/issues/2642 ) Only propose ValidBlock, not LockedBlock
- [consensus] [\#2642 ](https://github.com/tendermint/tendermint/issues/2642 ) Initialized ValidRound and LockedRound to -1
- [consensus] [\#1637 ](https://github.com/tendermint/tendermint/issues/1637 ) Limit the amount of evidence that can be included in a
2018-10-09 10:31:21 -07:00
block
2018-10-19 17:27:00 -07:00
- [evidence] [\#2515 ](https://github.com/tendermint/tendermint/issues/2515 ) Fix db iter leak (@goolAdapter)
- [libs/event] [\#2518 ](https://github.com/tendermint/tendermint/issues/2518 ) Fix event concurrency flaw (@goolAdapter)
- [node] [\#2434 ](https://github.com/tendermint/tendermint/issues/2434 ) Make node respond to signal interrupts while sleeping for genesis time
- [state] [\#2616 ](https://github.com/tendermint/tendermint/issues/2616 ) Pass nil to NewValidatorSet() when genesis file's Validators field is nil
- [p2p] [\#2555 ](https://github.com/tendermint/tendermint/issues/2555 ) Fix p2p switch FlushThrottle value (@goolAdapter)
- [p2p] [\#2668 ](https://github.com/tendermint/tendermint/issues/2668 ) Reconnect to originally dialed address (not self-reported
2018-10-18 15:26:32 -07:00
address) for persistent peers
2018-10-19 10:49:04 -07:00