You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
9.2 KiB

  1. # Pending
  2. ## v0.26.0
  3. *October 29, 2018*
  4. Special thanks to external contributors on this release:
  5. @bradyjoestar, @connorwstein, @goolAdapter, @HaoyangLiu,
  6. @james-ray, @overbool, @phymbert, @Slamper, @Uzair1995
  7. This release is primarily about adding Version fields to various data structures,
  8. optimizing consensus messages for signing and verification in
  9. restricted environments (like HSMs and the Ethereum Virtual Machine), and
  10. aligning the consensus code with the [specification](https://arxiv.org/abs/1807.04938).
  11. It also includes our first take at a generalized merkle proof system.
  12. See the [UPGRADING.md](UPGRADING.md#v0.26.0) for details on upgrading to the new
  13. version.
  14. Please note that we are still making breaking changes to the protocols.
  15. While the new Version fields should help us to keep the software backwards compatible
  16. even while upgrading the protocols, we cannot guarantee that new releases will
  17. be compatible with old chains just yet. Thanks for bearing with us!
  18. Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermint).
  19. ### BREAKING CHANGES:
  20. * CLI/RPC/Config
  21. * [config] [\#2232](https://github.com/tendermint/tendermint/issues/2232) timeouts as time.Duration, not ints
  22. * [config] [\#2505](https://github.com/tendermint/tendermint/issues/2505) Remove Mempool.RecheckEmpty (it was effectively useless anyways)
  23. * [config] [\#2490](https://github.com/tendermint/tendermint/issues/2490) `mempool.wal` is disabled by default
  24. * [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)
  25. * [state] [\#2644](https://github.com/tendermint/tendermint/issues/2644) Add Version field to State, breaking the format of State as
  26. encoded on disk.
  27. * [rpc] [\#2298](https://github.com/tendermint/tendermint/issues/2298) `/abci_query` takes `prove` argument instead of `trusted` and switches the default
  28. behaviour to `prove=false`
  29. * [rpc] [\#2654](https://github.com/tendermint/tendermint/issues/2654) Remove all `node_info.other.*_version` fields in `/status` and
  30. `/net_info`
  31. * Apps
  32. * [abci] [\#2298](https://github.com/tendermint/tendermint/issues/2298) ResponseQuery.Proof is now a structured merkle.Proof, not just
  33. arbitrary bytes
  34. * [abci] [\#2644](https://github.com/tendermint/tendermint/issues/2644) Add Version to Header and shift all fields by one
  35. * [abci] [\#2662](https://github.com/tendermint/tendermint/issues/2662) Bump the field numbers for some `ResponseInfo` fields to make room for
  36. `AppVersion`
  37. * Go API
  38. * [config] [\#2232](https://github.com/tendermint/tendermint/issues/2232) timeouts as time.Duration, not ints
  39. * [crypto/merkle & lite] [\#2298](https://github.com/tendermint/tendermint/issues/2298) Various changes to accomodate General Merkle trees
  40. * [crypto/merkle] [\#2595](https://github.com/tendermint/tendermint/issues/2595) Remove all Hasher objects in favor of byte slices
  41. * [crypto/merkle] [\#2635](https://github.com/tendermint/tendermint/issues/2635) merkle.SimpleHashFromTwoHashes is no longer exported
  42. * [node] [\#2479](https://github.com/tendermint/tendermint/issues/2479) Remove node.RunForever
  43. * [rpc/client] [\#2298](https://github.com/tendermint/tendermint/issues/2298) `ABCIQueryOptions.Trusted` -> `ABCIQueryOptions.Prove`
  44. * [types] [\#2298](https://github.com/tendermint/tendermint/issues/2298) Remove `Index` and `Total` fields from `TxProof`.
  45. * [types] [\#2598](https://github.com/tendermint/tendermint/issues/2598) `VoteTypeXxx` are now of type `SignedMsgType byte` and named `XxxType`, eg. `PrevoteType`,
  46. `PrecommitType`.
  47. * Blockchain Protocol
  48. * [abci] [\#2636](https://github.com/tendermint/tendermint/issues/2636) Add ValidatorParams field to ConsensusParams.
  49. (Used to control which pubkey types validators can use, by abci type)
  50. * [types] Update SignBytes for `Vote`/`Proposal`/`Heartbeat`:
  51. * [\#2459](https://github.com/tendermint/tendermint/issues/2459) Use amino encoding instead of JSON in `SignBytes`.
  52. * [\#2598](https://github.com/tendermint/tendermint/issues/2598) Reorder fields and use fixed sized encoding.
  53. * [\#2598](https://github.com/tendermint/tendermint/issues/2598) Change `Type` field fromt `string` to `byte` and use new
  54. `SignedMsgType` to enumerate.
  55. * [types] [\#2512](https://github.com/tendermint/tendermint/issues/2512) Remove the pubkey field from the validator hash
  56. * [types] [\#2644](https://github.com/tendermint/tendermint/issues/2644) Add Version struct to Header
  57. * [types] [\#2609](https://github.com/tendermint/tendermint/issues/2609) ConsensusParams.Hash() is the hash of the amino encoded
  58. struct instead of the Merkle tree of the fields
  59. * [state] [\#2587](https://github.com/tendermint/tendermint/issues/2587) Require block.Time of the fist block to be genesis time
  60. * [state] [\#2644](https://github.com/tendermint/tendermint/issues/2644) Require block.Version to match state.Version
  61. * [types] [\#2670](https://github.com/tendermint/tendermint/issues/2670) Header.Hash() builds Merkle tree out of fields in the same
  62. order they appear in the header, instead of sorting by field name
  63. * [types] [\#2682](https://github.com/tendermint/tendermint/issues/2682) Use proto3 `varint` encoding for ints that are usually unsigned (instead of zigzag encoding).
  64. * P2P Protocol
  65. * [p2p] [\#2654](https://github.com/tendermint/tendermint/issues/2654) Add `ProtocolVersion` struct with protocol versions to top of
  66. DefaultNodeInfo and require `ProtocolVersion.Block` to match during peer handshake
  67. ### FEATURES:
  68. - [abci] [\#2557](https://github.com/tendermint/tendermint/issues/2557) Add `Codespace` field to `Response{CheckTx, DeliverTx, Query}`
  69. - [abci] [\#2662](https://github.com/tendermint/tendermint/issues/2662) Add `BlockVersion` and `P2PVersion` to `RequestInfo`
  70. - [crypto/merkle] [\#2298](https://github.com/tendermint/tendermint/issues/2298) General Merkle Proof scheme for chaining various types of Merkle trees together
  71. ### IMPROVEMENTS:
  72. - Additional Metrics
  73. - [consensus] [\#2169](https://github.com/cosmos/cosmos-sdk/issues/2169)
  74. - [p2p] [\#2169](https://github.com/cosmos/cosmos-sdk/issues/2169)
  75. - [config] [\#2232](https://github.com/tendermint/tendermint/issues/2232) Added ValidateBasic method, which performs basic checks
  76. - [crypto/ed25519] [\#2558](https://github.com/tendermint/tendermint/issues/2558) Switch to use latest `golang.org/x/crypto` through our fork at
  77. github.com/tendermint/crypto
  78. - [tools] [\#2238](https://github.com/tendermint/tendermint/issues/2238) Binary dependencies are now locked to a specific git commit
  79. - [libs/log] [\#2706](https://github.com/tendermint/tendermint/issues/2706) Add year to log format
  80. - [consensus] [\#2683] validate all incoming messages
  81. - [evidence] [\#2683] validate all incoming messages
  82. - [blockchain] [\#2683] validate all incoming messages
  83. - [p2p/pex] [\#2683] validate pexAddrsMessage addresses
  84. ### BUG FIXES:
  85. - [autofile] [\#2428](https://github.com/tendermint/tendermint/issues/2428) Group.RotateFile need call Flush() before rename (@goolAdapter)
  86. - [common] [\#2533](https://github.com/tendermint/tendermint/issues/2533) Fixed a bug in the `BitArray.Or` method
  87. - [common] [\#2506](https://github.com/tendermint/tendermint/issues/2506) Fixed a bug in the `BitArray.Sub` method (@james-ray)
  88. - [common] [\#2534](https://github.com/tendermint/tendermint/issues/2534) Fix `BitArray.PickRandom` to choose uniformly from true bits
  89. - [consensus] [\#1690](https://github.com/tendermint/tendermint/issues/1690) Wait for
  90. timeoutPrecommit before starting next round
  91. - [consensus] [\#1745](https://github.com/tendermint/tendermint/issues/1745) Wait for
  92. Proposal or timeoutProposal before entering prevote
  93. - [consensus] [\#2583](https://github.com/tendermint/tendermint/issues/2583) ensure valid
  94. block property with faulty proposer
  95. - [consensus] [\#2642](https://github.com/tendermint/tendermint/issues/2642) Only propose ValidBlock, not LockedBlock
  96. - [consensus] [\#2642](https://github.com/tendermint/tendermint/issues/2642) Initialized ValidRound and LockedRound to -1
  97. - [consensus] [\#1637](https://github.com/tendermint/tendermint/issues/1637) Limit the amount of evidence that can be included in a
  98. block
  99. - [consensus] [\#2646](https://github.com/tendermint/tendermint/issues/2646) Simplify Proposal message (align with spec)
  100. - [crypto] [\#2733](https://github.com/tendermint/tendermint/pull/2733) Fix general merkle keypath to start w/ last op's key
  101. - [evidence] [\#2515](https://github.com/tendermint/tendermint/issues/2515) Fix db iter leak (@goolAdapter)
  102. - [libs/event] [\#2518](https://github.com/tendermint/tendermint/issues/2518) Fix event concurrency flaw (@goolAdapter)
  103. - [node] [\#2434](https://github.com/tendermint/tendermint/issues/2434) Make node respond to signal interrupts while sleeping for genesis time
  104. - [state] [\#2616](https://github.com/tendermint/tendermint/issues/2616) Pass nil to NewValidatorSet() when genesis file's Validators field is nil
  105. - [p2p] [\#2555](https://github.com/tendermint/tendermint/issues/2555) Fix p2p switch FlushThrottle value (@goolAdapter)
  106. - [p2p] [\#2668](https://github.com/tendermint/tendermint/issues/2668) Reconnect to originally dialed address (not self-reported
  107. address) for persistent peers