From f94eb42ebe1c53db52b07e4080e060acc4077a5a Mon Sep 17 00:00:00 2001 From: Ethan Buchman Date: Fri, 19 Oct 2018 20:27:00 -0400 Subject: [PATCH] Version bump; Update Upgrading.md; linkify Changelog (#2679) * version bump * update UPGRADING.md * add missing pr numbers to changelog pending * linkify changelog --- CHANGELOG_PENDING.md | 94 ++++++++++++++++++++++---------------------- UPGRADING.md | 76 +++++++++++++++++++++++++++++++++++ version/version.go | 4 +- 3 files changed, 125 insertions(+), 49 deletions(-) diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 5490ae77c..163c4649f 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -22,86 +22,86 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermi BREAKING CHANGES: * CLI/RPC/Config - * [config] \#2232 timeouts as time.Duration, not ints - * [config] \#2505 Remove Mempool.RecheckEmpty (it was effectively useless anyways) - * [config] `mempool.wal` is disabled by default - * [privval] \#2459 Split `SocketPVMsg`s implementations into Request and Response, where the Response may contain a error message (returned by the remote signer) - * [state] \#2644 Add Version field to State, breaking the format of State as + * [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 encoded on disk. - * [rpc] \#2298 `/abci_query` takes `prove` argument instead of `trusted` and switches the default + * [rpc] [\#2298](https://github.com/tendermint/tendermint/issues/2298) `/abci_query` takes `prove` argument instead of `trusted` and switches the default behaviour to `prove=false` - * [rpc] \#2654 Remove all `node_info.other.*_version` fields in `/status` and + * [rpc] [\#2654](https://github.com/tendermint/tendermint/issues/2654) Remove all `node_info.other.*_version` fields in `/status` and `/net_info` * Apps - * [abci] \#2298 ResponseQuery.Proof is now a structured merkle.Proof, not just + * [abci] [\#2298](https://github.com/tendermint/tendermint/issues/2298) ResponseQuery.Proof is now a structured merkle.Proof, not just arbitrary bytes - * [abci] \#2644 Add Version to Header and shift all fields by one - * [abci] \#2662 Bump the field numbers for some `ResponseInfo` fields to make room for + * [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 `AppVersion` * Go API - * [config] \#2232 timeouts as time.Duration, not ints - * [crypto/merkle & lite] \#2298 Various changes to accomodate General Merkle trees - * [crypto/merkle] \#2595 Remove all Hasher objects in favor of byte slices - * [crypto/merkle] \#2635 merkle.SimpleHashFromTwoHashes is no longer exported - * [node] Remove node.RunForever - * [rpc/client] \#2298 `ABCIQueryOptions.Trusted` -> `ABCIQueryOptions.Prove` - * [types] \#2298 Remove `Index` and `Total` fields from `TxProof`. - * [types] \#2598 `VoteTypeXxx` are now of type `SignedMsgType byte` and named `XxxType`, eg. `PrevoteType`, + * [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`, `PrecommitType`. * Blockchain Protocol * [types] Update SignBytes for `Vote`/`Proposal`/`Heartbeat`: - * \#2459 Use amino encoding instead of JSON in `SignBytes`. - * \#2598 Reorder fields and use fixed sized encoding. - * \#2598 Change `Type` field fromt `string` to `byte` and use new + * [\#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 `SignedMsgType` to enumerate. - * [types] \#2512 Remove the pubkey field from the validator hash - * [types] \#2644 Add Version struct to Header - * [types] \#2609 ConsensusParams.Hash() is the hash of the amino encoded + * [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 struct instead of the Merkle tree of the fields - * [state] \#2587 Require block.Time of the fist block to be genesis time - * [state] \#2644 Require block.Version to match state.Version - * [types] \#2670 Header.Hash() builds Merkle tree out of fields in the same + * [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 order they appear in the header, instead of sorting by field name * P2P Protocol - * [p2p] \#2654 Add `ProtocolVersion` struct with protocol versions to top of + * [p2p] [\#2654](https://github.com/tendermint/tendermint/issues/2654) Add `ProtocolVersion` struct with protocol versions to top of DefaultNodeInfo and require `ProtocolVersion.Block` to match during peer handshake FEATURES: -- [abci] \#2557 Add `Codespace` field to `Response{CheckTx, DeliverTx, Query}` -- [abci] \#2662 Add `BlockVersion` and `P2PVersion` to `RequestInfo` -- [crypto/merkle] \#2298 General Merkle Proof scheme for chaining various types of Merkle trees together +- [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 IMPROVEMENTS: - Additional Metrics - [consensus] [\#2169](https://github.com/cosmos/cosmos-sdk/issues/2169) - [p2p] [\#2169](https://github.com/cosmos/cosmos-sdk/issues/2169) -- [config] \#2232 Added ValidateBasic method, which performs basic checks -- [crypto/ed25519] \#2558 Switch to use latest `golang.org/x/crypto` through our fork at +- [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 github.com/tendermint/crypto -- [tools] \#2238 Binary dependencies are now locked to a specific git commit +- [tools] [\#2238](https://github.com/tendermint/tendermint/issues/2238) Binary dependencies are now locked to a specific git commit BUG FIXES: -- [autofile] \#2428 Group.RotateFile need call Flush() before rename (@goolAdapter) -- [common] Fixed a bug in the `BitArray.Or` method -- [common] Fixed a bug in the `BitArray.Sub` method (@james-ray) -- [common] \#2534 Fix `BitArray.PickRandom` to choose uniformly from true bits +- [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 - [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 -- [consensus] \#2642 Only propose ValidBlock, not LockedBlock -- [consensus] \#2642 Initialized ValidRound and LockedRound to -1 -- [consensus] \#1637 Limit the amount of evidence that can be included in a +- [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 block -- [evidence] \#2515 Fix db iter leak (@goolAdapter) -- [libs/event] \#2518 Fix event concurrency flaw (@goolAdapter) -- [node] \#2434 Make node respond to signal interrupts while sleeping for genesis time -- [state] \#2616 Pass nil to NewValidatorSet() when genesis file's Validators field is nil -- [p2p] \#2555 Fix p2p switch FlushThrottle value (@goolAdapter) -- [p2p] \#2668 Reconnect to originally dialed address (not self-reported +- [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 address) for persistent peers diff --git a/UPGRADING.md b/UPGRADING.md index 81e56e588..cb0830a45 100644 --- a/UPGRADING.md +++ b/UPGRADING.md @@ -3,6 +3,82 @@ This guide provides steps to be followed when you upgrade your applications to a newer version of Tendermint Core. +## v0.26.0 + +New 0.26.0 release contains a lot of changes to core data types. It is not +compatible to the old versions and there is no straight forward way to update +old data to be compatible with the new version. + +To reset the state do: + +``` +$ tendermint unsafe_reset_all +``` + +Here we summarize some other notable changes to be mindful of. + +### Config Changes + +All timeouts must be changed from integers to strings with their duration, for +instance `flush_throttle_timeout = 100` would be changed to +`flush_throttle_timeout = "100ms"` and `timeout_propose = 3000` would be changed +to `timeout_propose = "3s"`. + +### RPC Changes + +The default behaviour of `/abci_query` has been changed to not return a proof, +and the name of the parameter that controls this has been changed from `trusted` +to `prove`. To get proofs with your queries, ensure you set `prove=true`. + +Various version fields like `amino_version`, `p2p_version`, `consensus_version`, +and `rpc_version` have been removed from the `node_info.other` and are +consolidated under the tendermint semantic version (ie. `node_info.version`) and +the new `block` and `p2p` protocol versions under `node_info.protocol_version`.. + +### ABCI Changes + +Field numbers were bumped in the `Header` and `ResponseInfo` messages to make +room for new `version` fields. It should be straight forward to recompile the +protobuf file for these changes. + +#### Proofs + +The `ResponseQuery.Proof` field is now structured as a `[]ProofOp` to support +generalized Merkle tree constructions where the leaves of one Merkle tree are +the root of another. If you don't need this functionaluty, and you used to +return `` here, you should instead return a single `ProofOp` with +just the `Data` field set: + +``` +[]ProofOp{ + ProofOp{ + Data: , + } +} +``` + +For more information, see: + +- [ADR-026](https://github.com/tendermint/tendermint/blob/30519e8361c19f4bf320ef4d26288ebc621ad725/docs/architecture/adr-026-general-merkle-proof.md) +- [Relevant ABCI + documentation](https://github.com/tendermint/tendermint/blob/30519e8361c19f4bf320ef4d26288ebc621ad725/docs/spec/abci/apps.md#query-proofs) +- [Description of + keys](https://github.com/tendermint/tendermint/blob/30519e8361c19f4bf320ef4d26288ebc621ad725/crypto/merkle/proof_key_path.go#L14) + +### Go API Changes + +#### crypto.merkle + +The `merkle.Hasher` interface was removed. Functions which used to take `Hasher` +now simply take `[]byte`. This means that any objects being Merklized should be +serialized before they are passed in. + +#### node + +The `node.RunForever` function was removed. Signal handling and running forever +should instead be explicitly configured by the caller. See how we do it +[here](https://github.com/tendermint/tendermint/blob/30519e8361c19f4bf320ef4d26288ebc621ad725/cmd/tendermint/commands/run_node.go#L60). + ## v0.25.0 This release has minimal impact. diff --git a/version/version.go b/version/version.go index 19b3f3da7..b4664fd77 100644 --- a/version/version.go +++ b/version/version.go @@ -18,10 +18,10 @@ const ( // TMCoreSemVer is the current version of Tendermint Core. // It's the Semantic Version of the software. // Must be a string because scripts like dist.sh read this file. - TMCoreSemVer = "0.25.0" + TMCoreSemVer = "0.26.0" // ABCISemVer is the semantic version of the ABCI library - ABCISemVer = "0.14.0" + ABCISemVer = "0.15.0" ABCIVersion = ABCISemVer )