From 95530285d904619451421a3df0e2679c05fbd30e Mon Sep 17 00:00:00 2001 From: Marko Date: Tue, 19 Nov 2019 13:17:21 +0100 Subject: [PATCH] rc2/v0.32.8 (#4101) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit contains commit messages from the 52 commits from Tendermint 0.32.0 to 0.32.7. This is a result of creating releases from our security advisories, rather than merging these advisories back into the main repo before creating releases. In the future, we will adopt a git workflow that will reduce these commits to only the commits that make up RC2 for (for example) Tendermint 0.32.8. * docs: fix consensus spec formatting (#3804) * abci/server: recover from app panics in socket server (#3809) fixes #3800 * abci/client: fix DATA RACE in gRPC client (#3798) * Remove go func {}() closes #357 - Remove go func(){}() that caused race condiditon - To reproduce - add -race in make file to `install_abci` - Remove `CGO_ENABLED=0` & add -race to `install` Signed-off-by: Marko Baricevic * remove -race * fix data race also, reorder callbacks similarly to socket client * docs: "Writing a built-in Tendermint Core application in Go" guide (#3608) * docs: go built-in guide * fix package imports, add badger db, simplify Query * newTendermint function * working example * finish the first guide * add one more note * add the second Golang guide - external ABCI app * fix typos * libs: Remove db from tendermint in favor of tendermint/tm-cmn (#3811) * Remove db from tendemrint in favor of tendermint/tm-cmn - remove db from `libs` - update dependancy, there have been no breaking changes in the updated deps - https://github.com/grpc/grpc-go/releases - https://github.com/golang/protobuf/releases Signed-off-by: Marko Baricevic * changelog add * gofmt * more gofmt * docs: add A TOC to the Readme.md of ADR Section (#3820) * ADR TOC in readme.md * Added A TOC to the Readme.md of ADR Section - Added table of contents to the Readme of the architecture section. - Easier to traverse and when you know what is there. - If the Adr's become viewable online it would help guide the user Signed-off-by: Marko Baricevic * add tm-cmn to subprojects * normalize word * rpc: make max_body_bytes and max_header_bytes configurable (#3818) * rpc: make max_body_bytes and max_header_bytes configurable * update changelog pending * p2p/conn: Add Bufferpool (#3664) * use byte buffer pool to decreass allocs * wrap to put buffer in defer * wapper defer * add dependency * remove Gopkg,* * add change log * rpc: /broadcast_evidence (#3481) * implement broadcast_duplicate_vote endpoint * fix test_cover * address comments * address comments * Update abci/example/kvstore/persistent_kvstore.go Co-Authored-By: mossid * Update rpc/client/main_test.go Co-Authored-By: mossid * address comments in progress * reformat the code * make linter happy * make tests pass * replace BroadcastDuplicateVote with BroadcastEvidence * fix test * fix endpoint name * improve doc * fix TestBroadcastEvidenceDuplicateVote * Update rpc/core/evidence.go Co-Authored-By: Thane Thomson * add changelog entry * fix TestBroadcastEvidenceDuplicateVote * mempool: make max_msg_bytes configurable (#3826) * mempool: make max_msg_bytes configurable * apply suggestions from code review * update changelog pending * apply suggestions from code review again * rpc: return err if page is incorrect (less than 0 or greater than tot… (#3825) * rpc: return err if page is incorrect (less than 0 or greater than total pages) Fixes #3813 * fix rpc_test * blockchain: Reorg reactor (#3561) * go routines in blockchain reactor * Added reference to the go routine diagram * Initial commit * cleanup * Undo testing_logger change, committed by mistake * Fix the test loggers * pulled some fsm code into pool.go * added pool tests * changes to the design added block requests under peer moved the request trigger in the reactor poolRoutine, triggered now by a ticker in general moved everything required for making block requests smarter in the poolRoutine added a simple map of heights to keep track of what will need to be requested next added a few more tests * send errors to FSM in a different channel than blocks send errors (RemovePeer) from switch on a different channel than the one receiving blocks renamed channels added more pool tests * more pool tests * lint errors * more tests * more tests * switch fast sync to new implementation * fixed data race in tests * cleanup * finished fsm tests * address golangci comments :) * address golangci comments :) * Added timeout on next block needed to advance * updating docs and cleanup * fix issue in test from previous cleanup * cleanup * Added termination scenarios, tests and more cleanup * small fixes to adr, comments and cleanup * Fix bug in sendRequest() If we tried to send a request to a peer not present in the switch, a missing continue statement caused the request to be blackholed in a peer that was removed and never retried. While this bug was manifesting, the reactor kept asking for other blocks that would be stored and never consumed. Added the number of unconsumed blocks in the math for requesting blocks ahead of current processing height so eventually there will be no more blocks requested until the already received ones are consumed. * remove bpPeer's didTimeout field * Use distinct err codes for peer timeout and FSM timeouts * Don't allow peers to update with lower height * review comments from Ethan and Zarko * some cleanup, renaming, comments * Move block execution in separate goroutine * Remove pool's numPending * review comments * fix lint, remove old blockchain reactor and duplicates in fsm tests * small reorg around peer after review comments * add the reactor spec * verify block only once * review comments * change to int for max number of pending requests * cleanup and godoc * Add configuration flag fast sync version * golangci fixes * fix config template * move both reactor versions under blockchain * cleanup, golint, renaming stuff * updated documentation, fixed more golint warnings * integrate with behavior package * sync with master * gofmt * add changelog_pending entry * move to improvments * suggestion to changelog entry * Renamed wire.go to codec.go (#3827) * Renamed wire.go to codec.go - Wire was the previous name of amino - Codec describes the file better than `wire` & `amino` Signed-off-by: Marko Baricevic * ide error * rename amino.go to codec.go * docs: add guides to docs (#3830) * add staticcheck linting (#3828) cleanup to add linter grpc change: https://godoc.org/google.golang.org/grpc#WithContextDialer https://godoc.org/google.golang.org/grpc#WithDialer grpc/grpc-go#2627 prometheous change: due to UninstrumentedHandler, being deprecated in the future empty branch = empty if or else statement didn't delete them entirely but commented couldn't find a reason to have them could not replicate the issue #3406 but if want to keep it commented then we should comment out the if statement as well * types: move MakeVote / MakeBlock functions (#3819) to the types package Paritally Fixes #3584 * p2p: Fix error logging for connection stop (#3824) * p2p: fix false-positive error logging when stopping connections This changeset fixes two types of false-positive errors occurring during connection shutdown. The first occurs when the process invokes FlushStop() or Stop() on a connection. While the previous behavior did properly wait for the sendRoutine to finish, it did not notify the recvRoutine that the connection was shutting down. This would cause the recvRouting to receive and error when reading and log this error. The changeset fixes this by notifying the recvRoutine that the connection is shutting down. The second occurs when the connection is terminated (gracefully) by the other side. The recvRoutine would get an EOF error during the read, log it, and stop the connection with an error. The changeset detects EOF and gracefully shuts down the connection. * bring back the comment about flushing * add changelog entry * listen for quitRecvRoutine too * we have to call stopForError Otherwise peer won't be removed from the peer set and maybe readded later. * p2p: Do not write 'Couldn't connect to any seeds' if there are no seeds (#3834) * Do not write 'Couldn't connect to any seeds' if there are no seeds * changelog * remove privValUpgrade * Fix typo in changelog * Update CHANGELOG_PENDING.md Co-Authored-By: Marko I'm setting up all peers dynamically by calling dial_peers, so p2p.seeds in configs is empty, and I'm seeing error log a lot in logs. * docs: add a footer to guides (#3835) * docs: "Writing a Tendermint Core application in Kotlin (gRPC)" guide (#3838) * add abci grpc kotlin guide * Update docs/guides/kotlin.md Co-Authored-By: Anton Kaliaev * Update docs/guides/kotlin.md Co-Authored-By: Anton Kaliaev * Update docs/guides/kotlin.md Co-Authored-By: Anton Kaliaev * Update kotlin.md * node: allow replacing existing p2p.Reactor(s) (#3846) * node: allow replacing existing p2p.Reactor(s) using [`CustomReactors` option](https://godoc.org/github.com/tendermint/tendermint/node#CustomReactors). Warning: beware of accidental name clashes. Here is the list of existing reactors: MEMPOOL, BLOCKCHAIN, CONSENSUS, EVIDENCE, PEX. * check the absence of "CUSTOM" prefix * merge 2 tests * add doc.go to node package * gocritic (1/2) (#3836) Add gocritic as a linter The linting is not complete, but should i complete in this PR or in a following. 23 files have been touched so it may be better to do in a following PR Commits: * Add gocritic to linting - Added gocritic to linting Signed-off-by: Marko Baricevic * gocritic * pr comments * remove switch in cmdBatch * tm-cmn to tm-db (#3850) * tm-cmn to tm-db * go.mod changes * go.mod changes * more go.mod * fix tm-db * ci fix, pending change * version tmdb (#3854) * txindexer: Refactor Tx Search Aggregation (#3851) - Replace the previous intersect call, which was called at each query condition, with a map intersection. - Replace fmt.Sprintf with string() closes: #3076 Benchmarks ``` Old goos: darwin goarch: amd64 pkg: github.com/tendermint/tendermint/state/txindex/kv BenchmarkTxSearch-4 200 103641206 ns/op 7998416 B/op 71171 allocs/op PASS ok github.com/tendermint/tendermint/state/txindex/kv 26.019s New goos: darwin goarch: amd64 pkg: github.com/tendermint/tendermint/state/txindex/kv BenchmarkTxSearch-4 1000 38615024 ns/op 13515226 B/op 166460 allocs/op PASS ok github.com/tendermint/tendermint/state/txindex/kv 53.618s ``` ~62% performance improvement Commits: * Refactor tx search * Add pending changelog entry * Add tx search benchmarking * remove intermediate hashes list also reset timer in BenchmarkTxSearch and fix other benchmark * fix import * Add test cases * Fix searching * Replace fmt.Sprintf with string * Update state/txindex/kv/kv.go Co-Authored-By: Anton Kaliaev * Rename params * Cleanup * Check error in benchmarks * release for v0.32.2 * Merge PR #3860: Update log v0.32.2 * changelog updates * pr comments * Fix for panic in signature verification if a peer sends a nil public key. * update version.go * Changelog update * Update CHANGELOG.md Co-Authored-By: Anton Kaliaev * update changelog * p2p: only allow ed25519 pubkeys when connecting also, recover from any possible failures in acceptPeers Refs #4030 * update changelog and bump version to v0.32.6 * set the date to today * cs: panic only when WAL#WriteSync fails - modify WAL#Write and WAL#WriteSync to return an error * types: validate Part#Proof add ValidateBasic to crypto/merkle/SimpleProof * cs: limit max bit array size and block parts count * cs: test new limits * cs: only assert important stuff * update changelog and bump version to 0.32.7 * fixes after Ethan's review * align max wal msg and max consensus msg sizes * fix tests * fix test * Rc2 v0.32.8 Signed-off-by: Marko Baricevic * move issue to big fix --- CHANGELOG.md | 822 +++++++++++++++++++++--------------- CHANGELOG_PENDING.md | 18 +- abci/tests/test_app/main.go | 2 +- consensus/reactor_test.go | 2 +- consensus/state.go | 24 +- libs/pubsub/pubsub.go | 1 + rpc/lib/client/ws_client.go | 2 +- version/version.go | 3 +- 8 files changed, 502 insertions(+), 372 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b081b2927..1e076dfa5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,38 @@ # Changelog +## v0.32.8 + +Special thanks to external contributors on this release: @erikgrinaker, @guagualvcha, @hsyis, @cosmostuba, @whunmr, @austinabell + +Friendly reminder, we have a bug bounty program. + +### BREAKING CHANGES: + +- Go API + + - [libs/pubsub] [\#4070](https://github.com/tendermint/tendermint/pull/4070) `Query#(Matches|Conditions)` returns an error. + +### IMPROVEMENTS: + +- [mempool] [\#4083](https://github.com/tendermint/tendermint/pull/4083) Added TxInfo parameter to CheckTx(), and removed CheckTxWithInfo() (@erikgrinaker) +- [mempool] [\#4057](https://github.com/tendermint/tendermint/issues/4057) Include peer ID when logging rejected txns (@erikgrinaker) +- [tools] [\#4023](https://github.com/tendermint/tendermint/issues/4023) Improved `tm-monitor` formatting of start time and avg tx throughput (@erikgrinaker) +- [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) +- [rpc] [\#4077](https://github.com/tendermint/tendermint/pull/4077) Added support for `EXISTS` clause to the Websocket query interface. +- [privval] Add SignerDialerEndpointRetryWaitInterval option (@cosmostuba) +- [crypto] Add `RegisterKeyType` to amino to allow external key types registration (@austinabell) + +### BUG FIXES: + +- [libs/pubsub] [\#4070](https://github.com/tendermint/tendermint/pull/4070) Strip out non-numeric characters when attempting to match numeric values. +- [libs/pubsub] [\#4070](https://github.com/tendermint/tendermint/pull/4070) No longer panic in Query#(Matches|Conditions) preferring to return an error instead. +- [tools] [\#4023](https://github.com/tendermint/tendermint/issues/4023) Refresh `tm-monitor` health when validator count is updated (@erikgrinaker) +- [state] [\#4104](https://github.com/tendermint/tendermint/pull/4104) txindex/kv: Fsync data to disk immediately after receiving it (@guagualvcha) +- [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) + ## v0.32.7 -*October 18, 2019* +_October 18, 2019_ This security release fixes a vulnerability found in the `consensus` package, where an attacker could construct a `BlockPartMessage` message in such a way @@ -29,7 +59,7 @@ program](https://hackerone.com/tendermint). ## v0.32.6 -*October 8, 2019* +_October 8, 2019_ The previous patch was insufficient because the attacker could still find a way to submit a `nil` pubkey by constructing a `PubKeyMultisigThreshold` pubkey @@ -52,11 +82,11 @@ program](https://hackerone.com/tendermint). ## v0.32.5 -*October 1, 2019* +_September 30, 2019_ This release fixes a major security vulnerability found in the `p2p` package. -All clients are recommended to upgrade. See -[\#4030](https://github.com/tendermint/tendermint/issues/4030) for details. +All clients are recommended to upgrade. See [TODO](hxxp://githublink) for +details. Special thanks to [fudongbai](https://hackerone.com/fudongbai) for discovering and reporting this issue. @@ -70,7 +100,7 @@ program](https://hackerone.com/tendermint). ## v0.32.4 -*September 19, 2019* +_September 19, 2019_ Special thanks to external contributors on this release: @jon-certik, @gracenoah, @PSalant726, @gchaincl @@ -103,7 +133,7 @@ program](https://hackerone.com/tendermint). ## v0.32.3 -*August 28, 2019* +_August 28, 2019_ @climber73 wrote the [Writing a Tendermint Core application in Java (gRPC)](https://github.com/tendermint/tendermint/blob/master/docs/guides/java.md) @@ -130,7 +160,7 @@ program](https://hackerone.com/tendermint). ## v0.32.2 -*July 31, 2019* +_July 31, 2019_ Special thanks to external contributors on this release: @ruseinov, @bluele, @guagualvcha @@ -168,12 +198,13 @@ program](https://hackerone.com/tendermint). ## v0.32.1 -*July 15, 2019* +_July 15, 2019_ Special thanks to external contributors on this release: @ParthDesai, @climber73, @jim380, @ashleyvega This release contains a minor enhancement to the ABCI and some breaking changes to our libs folder, namely: + - 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 - Removed various functions from `libs` pkgs @@ -184,7 +215,7 @@ program](https://hackerone.com/tendermint). - Go API - - [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. + - [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. - [libs] Remove unused `db/debugDB` and `common/colors.go` & `errors/errors.go` files (@marbar3778) - [libs] [\#2432](https://github.com/tendermint/tendermint/issues/2432) Remove unused `common/heap.go` file (@marbar3778) - [libs] Remove unused `date.go`, `io.go`. Remove `GoPath()`, `Prompt()` and `IsDirEmpty()` functions from `os.go` (@marbar3778) @@ -193,7 +224,7 @@ program](https://hackerone.com/tendermint). ### FEATURES: - [node] Add variadic argument to `NewNode` to support functional options, allowing the Node to be more easily customized. -- [node][\#3730](https://github.com/tendermint/tendermint/pull/3730) Add `CustomReactors` option to `NewNode` allowing caller to pass +- [node] [\#3730](https://github.com/tendermint/tendermint/pull/3730) Add `CustomReactors` option to `NewNode` allowing caller to pass custom reactors to run inside Tendermint node (@ParthDesai) - [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) @@ -209,16 +240,16 @@ program](https://hackerone.com/tendermint). - [behaviour] [\3772](https://github.com/tendermint/tendermint/pull/3772) Return correct reason in MessageOutOfOrder (@jim380) - [config] [\#3723](https://github.com/tendermint/tendermint/issues/3723) Add consensus_params to testnet config generation; document time_iota_ms (@ashleyvega) - ## v0.32.0 -*June 25, 2019* +_June 25, 2019_ Special thanks to external contributors on this release: @needkane, @SebastianElvis, @andynog, @Yawning, @wooparadog This release contains breaking changes to our build and release processes, ABCI, and the RPC, namely: + - Use Go modules instead of dep - Bring active development to the `master` Github branch - ABCI Tags are now Events - see @@ -230,7 +261,8 @@ program](https://hackerone.com/tendermint). ### BREAKING CHANGES: -* CLI/RPC/Config +- CLI/RPC/Config + - [cli] [\#3613](https://github.com/tendermint/tendermint/issues/3613) Switch from golang/dep to Go Modules to resolve dependencies: It is recommended to switch to Go Modules if your project has tendermint as a dependency. Read more on Modules here: @@ -241,13 +273,15 @@ program](https://hackerone.com/tendermint). -> `results.deliver_tx`). See docs for details. - [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` -* Apps +- Apps + - [abci] [\#1859](https://github.com/tendermint/tendermint/issues/1859) `ResponseCheckTx`, `ResponseDeliverTx`, `ResponseBeginBlock`, and `ResponseEndBlock` now include `Events` instead of `Tags`. Each `Event` contains a `type` and a list of `attributes` (list of key-value pairs) allowing for inclusion of multiple distinct events in each response. -* Go API +- Go API + - [abci] [\#3193](https://github.com/tendermint/tendermint/issues/3193) Use RequestDeliverTx and RequestCheckTx in the ABCI Application interface - [libs/db] [\#3632](https://github.com/tendermint/tendermint/pull/3632) Removed deprecated `LevelDBBackend` const @@ -255,19 +289,21 @@ program](https://hackerone.com/tendermint). change it to `goleveldb` or `cleveldb`. - [p2p] [\#3521](https://github.com/tendermint/tendermint/issues/3521) Remove NewNetAddressStringWithOptionalID -* Blockchain Protocol +- Blockchain Protocol -* P2P Protocol +- P2P Protocol ### FEATURES: ### IMPROVEMENTS: + - [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) - [consensus] [\#3656](https://github.com/tendermint/tendermint/issues/3656) Exit if SwitchToConsensus fails - [p2p] [\#3666](https://github.com/tendermint/tendermint/issues/3666) Add per channel telemetry to improve reactor observability - [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) ### BUG FIXES: + - [libs/db] [\#3717](https://github.com/tendermint/tendermint/issues/3717) Fixed the BoltDB backend's Batch.Delete implementation (@Yawning) - [libs/db] [\#3718](https://github.com/tendermint/tendermint/issues/3718) Fixed the BoltDB backend's Get and Iterator implementation (@Yawning) - [node] [\#3716](https://github.com/tendermint/tendermint/issues/3716) Fix a bug where `nil` is recorded as node's address @@ -275,7 +311,7 @@ program](https://hackerone.com/tendermint). ## v0.31.11 -*October 18, 2019* +_October 18, 2019_ This security release fixes a vulnerability found in the `consensus` package, where an attacker could construct a `BlockPartMessage` message in such a way @@ -302,7 +338,7 @@ program](https://hackerone.com/tendermint). ## v0.31.10 -*October 8, 2019* +_October 8, 2019_ The previous patch was insufficient because the attacker could still find a way to submit a `nil` pubkey by constructing a `PubKeyMultisigThreshold` pubkey @@ -325,7 +361,7 @@ program](https://hackerone.com/tendermint). ## v0.31.9 -*October 1, 2019* +_October 1, 2019_ This release fixes a major security vulnerability found in the `p2p` package. All clients are recommended to upgrade. See @@ -348,36 +384,39 @@ program](https://hackerone.com/tendermint). ## v0.31.8 -*July 29, 2019* +_July 29, 2019_ This releases fixes one bug in the PEX reactor and adds a `recover` to the Go's ABCI server, which allows it to properly cleanup. ### IMPROVEMENTS: + - [abci] [\#3809](https://github.com/tendermint/tendermint/issues/3809) Recover from application panics in `server/socket_server.go` to allow socket cleanup (@ruseinov) ### BUG FIXES: + - [p2p] [\#3338](https://github.com/tendermint/tendermint/issues/3338) Prevent "sent next PEX request too soon" errors by not calling ensurePeers outside of ensurePeersRoutine ## v0.31.7 -*June 3, 2019* +_June 3, 2019_ This releases fixes a regression in the mempool introduced in v0.31.6. The regression caused the invalid committed txs to be proposed in blocks over and over again. ### BUG FIXES: + - [mempool] [\#3699](https://github.com/tendermint/tendermint/issues/3699) Remove all committed txs from the mempool. - This reverts the change from v0.31.6 where we only remove valid txs from the mempool. - Note this means malicious proposals can cause txs to be dropped from the - mempools of other nodes by including them in blocks before they are valid. - See [\#3322](https://github.com/tendermint/tendermint/issues/3322). + This reverts the change from v0.31.6 where we only remove valid txs from the mempool. + Note this means malicious proposals can cause txs to be dropped from the + mempools of other nodes by including them in blocks before they are valid. + See [\#3322](https://github.com/tendermint/tendermint/issues/3322). ## v0.31.6 -*May 31st, 2019* +_May 31st, 2019_ This release contains many fixes and improvements, primarily for p2p functionality. It also fixes a security issue in the mempool package. @@ -392,7 +431,7 @@ Special thanks to external contributors on this release: ### BREAKING CHANGES: -* Go API +- Go API - [libs/common] Removed deprecated `PanicSanity`, `PanicCrisis`, `PanicConsensus` and `PanicQ` - [mempool, state] [\#2659](https://github.com/tendermint/tendermint/issues/2659) `Mempool` now an interface that lives in the mempool package. @@ -401,10 +440,12 @@ Special thanks to external contributors on this release: - [types] [\#1648](https://github.com/tendermint/tendermint/issues/1648) `Commit#VoteSignBytes` signature was changed ### FEATURES: + - [node] [\#2659](https://github.com/tendermint/tendermint/issues/2659) Add `node.Mempool()` method, which allows you to access mempool - [libs/db] [\#3604](https://github.com/tendermint/tendermint/pull/3604) Add experimental support for bolt db (etcd's fork of bolt) (@CrocdileChan) ### IMPROVEMENTS: + - [cli] [\#3585](https://github.com/tendermint/tendermint/issues/3585) Add `--keep-addr-book` option to `unsafe_reset_all` cmd to not clear the address book (@climber73) - [cli] [\#3160](https://github.com/tendermint/tendermint/issues/3160) Add @@ -415,10 +456,10 @@ Special thanks to external contributors on this release: - [crypto] [\#3672](https://github.com/tendermint/tendermint/issues/3672) Return more info in the `AddSignatureFromPubKey` error - [cs/replay] [\#3460](https://github.com/tendermint/tendermint/issues/3460) Check appHash for each block - [libs/db] [\#3611](https://github.com/tendermint/tendermint/issues/3611) Conditional compilation - * Use `cleveldb` tag instead of `gcc` to compile Tendermint with CLevelDB or + - Use `cleveldb` tag instead of `gcc` to compile Tendermint with CLevelDB or use `make build_c` / `make install_c` (full instructions can be found at https://tendermint.com/docs/introduction/install.html#compile-with-cleveldb-support) - * Use `boltdb` tag to compile Tendermint with bolt db + - Use `boltdb` tag to compile Tendermint with bolt db - [node] [\#3362](https://github.com/tendermint/tendermint/issues/3362) Return an error if `persistent_peers` list is invalid (except when IP lookup fails) - [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) @@ -429,12 +470,13 @@ Special thanks to external contributors on this release: incorrect (except when IP lookup fails) ### BUG FIXES: + - [consensus] [\#3067](https://github.com/tendermint/tendermint/issues/3067) Fix replay from appHeight==0 with validator set changes (@james-ray) - [consensus] [\#3304](https://github.com/tendermint/tendermint/issues/3304) Create a peer state in consensus reactor before the peer is started (@guagualvcha) - [lite] [\#3669](https://github.com/tendermint/tendermint/issues/3669) Add context parameter to RPC Handlers in proxy routes (@yutianwu) - [mempool] [\#3322](https://github.com/tendermint/tendermint/issues/3322) When a block is committed, only remove committed txs from the mempool -that were valid (ie. `ResponseDeliverTx.Code == 0`) + that were valid (ie. `ResponseDeliverTx.Code == 0`) - [p2p] [\#3338](https://github.com/tendermint/tendermint/issues/3338) Ensure `RemovePeer` is always called before `InitPeer` (upon a peer reconnecting to our node) - [p2p] [\#3532](https://github.com/tendermint/tendermint/issues/3532) Limit the number of attempts to connect to a peer in seed mode @@ -443,11 +485,12 @@ that were valid (ie. `ResponseDeliverTx.Code == 0`) - [pex] [\#3603](https://github.com/tendermint/tendermint/pull/3603) Dial seeds when addrbook needs more addresses (@defunctzombie) ### OTHERS: + - [networks] fixes ansible integration script (@carlosflrs) ## v0.31.5 -*April 16th, 2019* +_April 16th, 2019_ This release fixes a regression from v0.31.4 where, in existing chains that were upgraded, `/validators` could return an empty validator set. This is true @@ -470,7 +513,7 @@ Special thanks to external contributors on this release: ## v0.31.4 -*April 12th, 2019* +_April 12th, 2019_ This release fixes a regression from v0.31.3 which used the peer's `SocketAddr` to add the peer to the address book. This swallowed the peer's self-reported port which is important in case of reconnect. @@ -496,22 +539,23 @@ Special thanks to external contributors on this release: - [state] [\#3438](https://github.com/tendermint/tendermint/pull/3438) Persist validators every 100000 blocks even if no changes to the set occurred (@guagualvcha). This - 1) Prevents possible DoS attack using `/validators` or `/status` RPC - endpoints. Before response time was growing linearly with height if no - changes were made to the validator set. - 2) Fixes performance degradation in `ExecCommitBlock` where we call - `LoadValidators` for each `Evidence` in the block. + 1. Prevents possible DoS attack using `/validators` or `/status` RPC + endpoints. Before response time was growing linearly with height if no + changes were made to the validator set. + 2. Fixes performance degradation in `ExecCommitBlock` where we call + `LoadValidators` for each `Evidence` in the block. ## v0.31.3 -*April 1st, 2019* +_April 1st, 2019_ This release includes two security sensitive fixes: it ensures generated private keys are valid, and it prevents certain DNS lookups that would cause the node to panic if the lookup failed. ### BREAKING CHANGES: -* Go API + +- Go API - [crypto/secp256k1] [\#3439](https://github.com/tendermint/tendermint/issues/3439) The `secp256k1.GenPrivKeySecp256k1` function has changed to guarantee that it returns a valid key, which means it will return a different private key than in previous versions for the same secret. @@ -519,16 +563,16 @@ panic if the lookup failed. ### BUG FIXES: - [crypto/secp256k1] [\#3439](https://github.com/tendermint/tendermint/issues/3439) - Ensure generated private keys are valid by randomly sampling until a valid key is found. - Previously, it was possible (though rare!) to generate keys that exceeded the curve order. - Such keys would lead to invalid signatures. + Ensure generated private keys are valid by randomly sampling until a valid key is found. + Previously, it was possible (though rare!) to generate keys that exceeded the curve order. + Such keys would lead to invalid signatures. - [p2p] [\#3522](https://github.com/tendermint/tendermint/issues/3522) Memoize socket address in peer connections to avoid DNS lookups. Previously, failed DNS lookups could cause the node to panic. ## v0.31.2 -*March 30th, 2019* +_March 30th, 2019_ This release fixes a regression from v0.31.1 where Tendermint panics under mempool load for external ABCI apps. @@ -538,16 +582,17 @@ Special thanks to external contributors on this release: ### BREAKING CHANGES: -* CLI/RPC/Config +- CLI/RPC/Config + +- Apps -* Apps +- Go API -* Go API - [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) -* Blockchain Protocol +- Blockchain Protocol -* P2P Protocol +- P2P Protocol ### FEATURES: @@ -561,7 +606,7 @@ Special thanks to external contributors on this release: ## v0.31.1 -*March 27th, 2019* +_March 27th, 2019_ This release contains a major improvement for the mempool that reduce the amount of sent data by about 30% (see some numbers below). @@ -572,38 +617,39 @@ Special thanks to external contributors on this release: ### BREAKING CHANGES: -* CLI/RPC/Config +- CLI/RPC/Config + +- Apps -* Apps +- Go API -* Go API - [crypto] [\#3426](https://github.com/tendermint/tendermint/pull/3426) Remove `Ripemd160` helper method (@needkane) - [libs/common] [\#3429](https://github.com/tendermint/tendermint/pull/3429) Remove `RepeatTimer` (also `TimerMaker` and `Ticker` interface) - [rpc/client] [\#3458](https://github.com/tendermint/tendermint/issues/3458) Include `NetworkClient` interface into `Client` interface - [types] [\#3448](https://github.com/tendermint/tendermint/issues/3448) Remove method `PB2TM.ConsensusParams` -* Blockchain Protocol +- Blockchain Protocol -* P2P Protocol +- P2P Protocol ### FEATURES: - - [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) +- [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) ### IMPROVEMENTS: - [docs] [\#3140](https://github.com/tendermint/tendermint/issues/3140) Formalize proposer election algorithm properties - [docs] [\#3482](https://github.com/tendermint/tendermint/issues/3482) Fix broken links (@brapse) - [mempool] [\#2778](https://github.com/tendermint/tendermint/issues/2778) No longer send txs back to peers who sent it to you. -Also, limit to 65536 active peers. -This vastly improves the bandwidth consumption of nodes. -For instance, for a 4 node localnet, in a test sending 250byte txs for 120 sec. at 500 txs/sec (total of 15MB): + Also, limit to 65536 active peers. + This vastly improves the bandwidth consumption of nodes. + For instance, for a 4 node localnet, in a test sending 250byte txs for 120 sec. at 500 txs/sec (total of 15MB): - total bytes received from 1st node: - - before: 42793967 (43MB) - - after: 30003256 (30MB) + - before: 42793967 (43MB) + - after: 30003256 (30MB) - total bytes sent to 1st node: - - before: 30569339 (30MB) - - after: 19304964 (19MB) + - before: 30569339 (30MB) + - after: 19304964 (19MB) - [p2p] [\#3475](https://github.com/tendermint/tendermint/issues/3475) Simplify `GetSelectionWithBias` for addressbook (@guagualvcha) - [rpc/lib/client] [\#3430](https://github.com/tendermint/tendermint/issues/3430) Disable compression for HTTP client to prevent GZIP-bomb DoS attacks (@guagualvcha) @@ -612,10 +658,9 @@ For instance, for a 4 node localnet, in a test sending 250byte txs for 120 sec. - [blockchain] [\#2699](https://github.com/tendermint/tendermint/issues/2699) Update the maxHeight when a peer is removed - [mempool] [\#3478](https://github.com/tendermint/tendermint/issues/3478) Fix memory-leak related to `broadcastTxRoutine` (@HaoyangLiu) - ## v0.31.0 -*March 16th, 2019* +_March 16th, 2019_ Special thanks to external contributors on this release: @danil-lashin, @guagualvcha, @siburu, @silasdavis, @srmo, @Stumble, @svenstaro @@ -636,7 +681,8 @@ program](https://hackerone.com/tendermint). ### BREAKING CHANGES: -* CLI/RPC/Config +- CLI/RPC/Config + - [config] [\#2920](https://github.com/tendermint/tendermint/issues/2920) Remove `consensus.blocktime_iota` parameter - [rpc] [\#3227](https://github.com/tendermint/tendermint/issues/3227) New PubSub design does not block on clients when publishing messages. Slow clients may miss messages and receive an error, terminating @@ -646,36 +692,40 @@ program](https://hackerone.com/tendermint). - [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. - [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/develop/docs/architecture/adr-033-pubsub.md). This includes `Subscribe`, `Unsubscribe`, and `UnsubscribeAll` methods. -* Apps +- Apps + - [abci] [\#3403](https://github.com/tendermint/tendermint/issues/3403) Remove `time_iota_ms` from BlockParams. This is a ConsensusParam but need not be exposed to the app for now. - [abci] [\#2920](https://github.com/tendermint/tendermint/issues/2920) Rename `consensus_params.block_size` to `consensus_params.block` in ABCI ConsensusParams -* Go API +- Go API + - [libs/common] TrapSignal accepts logger as a first parameter and does not block anymore - * previously it was dumping "captured ..." msg to os.Stdout - * TrapSignal should not be responsible for blocking thread of execution + - previously it was dumping "captured ..." msg to os.Stdout + - TrapSignal should not be responsible for blocking thread of execution - [libs/db] [\#3397](https://github.com/tendermint/tendermint/pull/3397) Add possibility to `Close()` `Batch` to prevent memory leak when using ClevelDB. (@Stumble) - [types] [\#3354](https://github.com/tendermint/tendermint/issues/3354) Remove RoundState from EventDataRoundState - [rpc] [\#3435](https://github.com/tendermint/tendermint/issues/3435) `StartHTTPServer` / `StartHTTPAndTLSServer` now require a Config (use `rpcserver.DefaultConfig`) -* Blockchain Protocol +- Blockchain Protocol -* P2P Protocol +- P2P Protocol ### FEATURES: + - [config] [\#3269](https://github.com/tendermint/tendermint/issues/2826) New configuration values for controlling RPC subscriptions: - - `rpc.max_subscription_clients` sets the maximum number of unique clients - with open subscriptions - - `rpc.max_subscriptions_per_client`sets the maximum number of unique - subscriptions from a given client - - `rpc.timeout_broadcast_tx_commit` sets the time to wait for a tx to be committed during `/broadcast_tx_commit` + - `rpc.max_subscription_clients` sets the maximum number of unique clients + with open subscriptions + - `rpc.max_subscriptions_per_client`sets the maximum number of unique + subscriptions from a given client + - `rpc.timeout_broadcast_tx_commit` sets the time to wait for a tx to be committed during `/broadcast_tx_commit` - [types] [\#2920](https://github.com/tendermint/tendermint/issues/2920) Add `time_iota_ms` to block's consensus parameters (not exposed to the application) - [lite] [\#3269](https://github.com/tendermint/tendermint/issues/3269) Add `/unsubscribe_all` endpoint to unsubscribe from all events - [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 `/num_unconfirmed_txs` and `/unconfirmed_txs` RPC endpoints. ### IMPROVEMENTS: + - [all] [\#3385](https://github.com/tendermint/tendermint/issues/3385), [\#3386](https://github.com/tendermint/tendermint/issues/3386) Various linting improvements - [crypto] [\#3371](https://github.com/tendermint/tendermint/issues/3371) Copy in secp256k1 package from go-ethereum instead of importing go-ethereum (@silasdavis) @@ -694,6 +744,7 @@ program](https://hackerone.com/tendermint). - [privval] [\#3351](https://github.com/tendermint/tendermint/pull/3351) First part of larger refactoring that clarifies and separates concerns in the privval package. ### BUG FIXES: + - [blockchain] [\#3358](https://github.com/tendermint/tendermint/pull/3358) Fix timer leak in `BlockPool` (@guagualvcha) - [cmd] [\#3408](https://github.com/tendermint/tendermint/issues/3408) Fix `testnet` command's panic when creating non-validator configs (using `--n` flag) (@srmo) - [libs/db/remotedb/grpcdb] [\#3402](https://github.com/tendermint/tendermint/issues/3402) Close Iterator/ReverseIterator after use @@ -706,7 +757,7 @@ program](https://hackerone.com/tendermint). ## v0.30.2 -*March 10th, 2019* +_March 10th, 2019_ This release fixes a CLevelDB memory leak. It was happening because we were not closing the WriteBatch object after use. See [levigo's @@ -717,15 +768,16 @@ fix here. ### BREAKING CHANGES: -* Go API +- Go API - [libs/db] [\#3842](https://github.com/cosmos/cosmos-sdk/issues/3842) Add Close() method to Batch interface (@Stumble) ### BUG FIXES: + - [libs/db] [\#3842](https://github.com/cosmos/cosmos-sdk/issues/3842) Fix CLevelDB memory leak (@Stumble) ## v0.30.1 -*February 20th, 2019* +_February 20th, 2019_ This release fixes a consensus halt and a DataCorruptionError after restart discovered in `game_of_stakes_6`. It also fixes a security issue in the p2p @@ -733,27 +785,27 @@ handshake by authenticating the NetAddress.ID of the peer we're dialing. ### IMPROVEMENTS: -* [config] [\#3291](https://github.com/tendermint/tendermint/issues/3291) Make +- [config] [\#3291](https://github.com/tendermint/tendermint/issues/3291) Make config.ResetTestRootWithChainID() create concurrency-safe test directories. ### BUG FIXES: -* [consensus] [\#3295](https://github.com/tendermint/tendermint/issues/3295) +- [consensus] [\#3295](https://github.com/tendermint/tendermint/issues/3295) Flush WAL on stop to prevent data corruption during graceful shutdown. -* [consensus] [\#3302](https://github.com/tendermint/tendermint/issues/3302) +- [consensus] [\#3302](https://github.com/tendermint/tendermint/issues/3302) Fix possible halt by resetting TriggeredTimeoutPrecommit before starting next height. -* [rpc] [\#3251](https://github.com/tendermint/tendermint/issues/3251) Fix +- [rpc] [\#3251](https://github.com/tendermint/tendermint/issues/3251) Fix `/net_info#peers#remote_ip` format. New format spec: - * dotted decimal ("192.0.2.1"), if ip is an IPv4 or IP4-mapped IPv6 address - * IPv6 ("2001:db8::1"), if ip is a valid IPv6 address -* [cmd] [\#3314](https://github.com/tendermint/tendermint/issues/3314) Return + - dotted decimal ("192.0.2.1"), if ip is an IPv4 or IP4-mapped IPv6 address + - IPv6 ("2001:db8::1"), if ip is a valid IPv6 address +- [cmd] [\#3314](https://github.com/tendermint/tendermint/issues/3314) Return an error on `show_validator` when the private validator file does not exist. -* [p2p] [\#3010](https://github.com/tendermint/tendermint/issues/3010#issuecomment-464287627) +- [p2p] [\#3010](https://github.com/tendermint/tendermint/issues/3010#issuecomment-464287627) Authenticate a peer against its NetAddress.ID when dialing. ## v0.30.0 -*February 8th, 2019* +_February 8th, 2019_ This release fixes yet another issue with the proposer selection algorithm. We hope it's the last one, but we won't be surprised if it's not. @@ -768,21 +820,24 @@ piece of evidence in more than one block. This issue was reported by @chengwenxi ### BREAKING CHANGES: -* Apps +- Apps + - [state] [\#3222](https://github.com/tendermint/tendermint/issues/3222) Duplicate updates for the same validator are forbidden. Apps must ensure that a given `ResponseEndBlock.ValidatorUpdates` contains only one entry per pubkey. -* Go API +- Go API + - [types] [\#3222](https://github.com/tendermint/tendermint/issues/3222) Remove `Add` and `Update` methods from `ValidatorSet` in favor of new `UpdateWithChangeSet`. This allows updates to be applied as a set, instead of one at a time. -* Block Protocol +- Block Protocol + - [state] [\#3286](https://github.com/tendermint/tendermint/issues/3286) Blocks that include already committed evidence are invalid. -* P2P Protocol +- P2P Protocol - [consensus] [\#3222](https://github.com/tendermint/tendermint/issues/3222) Validator updates are applied as a set, instead of one at a time, thus impacting the proposer priority calculation. This ensures that the proposer @@ -790,9 +845,11 @@ piece of evidence in more than one block. This issue was reported by @chengwenxi `ResponseEndBlock.ValidatorUpdates`. ### IMPROVEMENTS: + - [crypto] [\#3279](https://github.com/tendermint/tendermint/issues/3279) Use `btcec.S256().N` directly instead of hard coding a copy. ### BUG FIXES: + - [state] [\#3222](https://github.com/tendermint/tendermint/issues/3222) Fix validator set updates so they are applied as a set, rather than one at a time. This makes the proposer selection algorithm independent of the order of updates in `ResponseEndBlock.ValidatorUpdates`. @@ -800,13 +857,14 @@ piece of evidence in more than one block. This issue was reported by @chengwenxi ## v0.29.2 -*February 7th, 2019* +_February 7th, 2019_ Special thanks to external contributors on this release: @ackratos, @rickyyangz **Note**: This release contains security sensitive patches in the `p2p` and `crypto` packages: + - p2p: - Partial fix for MITM attacks on the p2p connection. MITM conditions may still exist. See [\#3010](https://github.com/tendermint/tendermint/issues/3010). @@ -819,13 +877,14 @@ Special thanks to external contributors on this release: ### BREAKING CHANGES: -* Go API +- Go API - [crypto] [\#3278](https://github.com/tendermint/tendermint/issues/3278) Remove MixEntropy functions - [types] [\#3245](https://github.com/tendermint/tendermint/issues/3245) Commit uses `type CommitSig Vote` instead of `Vote` directly. In preparation for removing redundant fields from the commit [\#1648](https://github.com/tendermint/tendermint/issues/1648) ### IMPROVEMENTS: + - [consensus] [\#3246](https://github.com/tendermint/tendermint/issues/3246) Better logging and notes on recovery for corrupted WAL file - [crypto] [\#3163](https://github.com/tendermint/tendermint/issues/3163) Use ethereum's libsecp256k1 go-wrapper for signatures when cgo is available - [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) @@ -835,6 +894,7 @@ Special thanks to external contributors on this release: - [tests] [\#3258](https://github.com/tendermint/tendermint/issues/3258) Fixed a bunch of non-deterministic test failures ### BUG FIXES: + - [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) - [p2p] [\#3232](https://github.com/tendermint/tendermint/issues/3232) Fix infinite loop leading to addrbook deadlock for seed nodes - [p2p] [\#3247](https://github.com/tendermint/tendermint/issues/3247) Fix panic in SeedMode when calling FlushStop and OnStop @@ -844,7 +904,7 @@ Special thanks to external contributors on this release: ## v0.29.1 -*January 24, 2019* +_January 24, 2019_ Special thanks to external contributors on this release: @infinytum, @gauthamzz @@ -857,17 +917,19 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermint). ### IMPROVEMENTS: + - [pex] [\#3037](https://github.com/tendermint/tendermint/issues/3037) Only log "Reached max attempts to dial" once - [rpc] [\#3159](https://github.com/tendermint/tendermint/issues/3159) Expose `triggered_timeout_commit` in the `/dump_consensus_state` ### BUG FIXES: + - [consensus] [\#3199](https://github.com/tendermint/tendermint/issues/3199) Fix consensus halt with no empty blocks from not resetting triggeredTimeoutCommit - [p2p] [\#2967](https://github.com/tendermint/tendermint/issues/2967) Fix file descriptor leak ## v0.29.0 -*January 21, 2019* +_January 21, 2019_ Special thanks to external contributors on this release: @bradyjoestar, @kunaldhariwal, @gauthamzz, @hrharder @@ -899,38 +961,43 @@ program](https://hackerone.com/tendermint). ### BREAKING CHANGES: -* CLI/RPC/Config +- CLI/RPC/Config + +- Apps -* Apps - [state] [\#3049](https://github.com/tendermint/tendermint/issues/3049) Total voting power of the validator set is upper bounded by `MaxInt64 / 8`. Apps must ensure they do not return changes to the validator set that cause this maximum to be exceeded. -* Go API +- Go API + - [node] [\#3082](https://github.com/tendermint/tendermint/issues/3082) MetricsProvider now requires you to pass a chain ID - [types] [\#2713](https://github.com/tendermint/tendermint/issues/2713) Rename `TxProof.LeafHash` to `TxProof.Leaf` - [crypto/merkle] [\#2713](https://github.com/tendermint/tendermint/issues/2713) `SimpleProof.Verify` takes a `leaf` instead of a `leafHash` and performs the hashing itself -* Blockchain Protocol - * [crypto/merkle] [\#2713](https://github.com/tendermint/tendermint/issues/2713) Merkle trees now match the RFC 6962 specification - * [types] [\#3078](https://github.com/tendermint/tendermint/issues/3078) Re-order Timestamp and BlockID in CanonicalVote so it's +- Blockchain Protocol + + - [crypto/merkle] [\#2713](https://github.com/tendermint/tendermint/issues/2713) Merkle trees now match the RFC 6962 specification + - [types] [\#3078](https://github.com/tendermint/tendermint/issues/3078) Re-order Timestamp and BlockID in CanonicalVote so it's consistent with CanonicalProposal (BlockID comes first) - * [types] [\#3165](https://github.com/tendermint/tendermint/issues/3165) Hash of ConsensusParams only includes BlockSize.MaxBytes and + - [types] [\#3165](https://github.com/tendermint/tendermint/issues/3165) Hash of ConsensusParams only includes BlockSize.MaxBytes and BlockSize.MaxGas -* P2P Protocol +- P2P Protocol - [consensus] [\#3049](https://github.com/tendermint/tendermint/issues/3049) Normalize priorities to not exceed `2*TotalVotingPower` to mitigate unfair proposer selection heavily preferring earlier joined validators in the case of an early bonded large validator unbonding ### FEATURES: ### IMPROVEMENTS: + - [rpc] [\#3065](https://github.com/tendermint/tendermint/issues/3065) Return maxPerPage (100), not defaultPerPage (30) if `per_page` is greater than the max 100. - [instrumentation] [\#3082](https://github.com/tendermint/tendermint/issues/3082) Add `chain_id` label for all metrics ### BUG FIXES: + - [crypto] [\#3164](https://github.com/tendermint/tendermint/issues/3164) Update `btcd` fork for rare signRFC6979 bug - [lite] [\#3171](https://github.com/tendermint/tendermint/issues/3171) Fix verifying large validator set changes - [log] [\#3125](https://github.com/tendermint/tendermint/issues/3125) Fix year format @@ -939,7 +1006,7 @@ program](https://hackerone.com/tendermint). ## v0.28.1 -*January 18th, 2019* +_January 18th, 2019_ Special thanks to external contributors on this release: @HaoyangLiu @@ -948,11 +1015,12 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermint). ### BUG FIXES: + - [consensus] Fix consensus halt from proposing blocks with too much evidence ## v0.28.0 -*January 16th, 2019* +_January 16th, 2019_ Special thanks to external contributors on this release: @fmauricios, @gianfelipe93, @husio, @needkane, @srmo, @yutianwu @@ -968,7 +1036,8 @@ See [UPGRADING.md](UPGRADING.md) for more details. ### BREAKING CHANGES: -* CLI/RPC/Config +- CLI/RPC/Config + - [cli] Removed `--proxy_app=dummy` option. Use `kvstore` (`persistent_kvstore`) instead. - [cli] Renamed `--proxy_app=nilapp` to `--proxy_app=noop`. - [config] [\#2992](https://github.com/tendermint/tendermint/issues/2992) `allow_duplicate_ip` is now set to false @@ -976,19 +1045,22 @@ See [UPGRADING.md](UPGRADING.md) for more details. - [privval] [\#2926](https://github.com/tendermint/tendermint/issues/2926) Split up `PubKeyMsg` into `PubKeyRequest` and `PubKeyResponse` to be consistent with other message types - [privval] [\#2923](https://github.com/tendermint/tendermint/issues/2923) Listen for unix socket connections instead of dialing them -* Apps +- Apps + +- Go API -* Go API - [types] [\#2981](https://github.com/tendermint/tendermint/issues/2981) Remove `PrivValidator.GetAddress()` -* Blockchain Protocol +- Blockchain Protocol -* P2P Protocol +- P2P Protocol ### FEATURES: + - [rpc] [\#3052](https://github.com/tendermint/tendermint/issues/3052) Include peer's remote IP in `/net_info` ### IMPROVEMENTS: + - [consensus] [\#3086](https://github.com/tendermint/tendermint/issues/3086) Log peerID on ignored votes (@srmo) - [docs] [\#3061](https://github.com/tendermint/tendermint/issues/3061) Added specification for signing consensus msgs at ./docs/spec/consensus/signing.md @@ -1007,7 +1079,7 @@ See [UPGRADING.md](UPGRADING.md) for more details. ## v0.27.4 -*December 21st, 2018* +_December 21st, 2018_ ### BUG FIXES: @@ -1017,17 +1089,17 @@ See [UPGRADING.md](UPGRADING.md) for more details. ## v0.27.3 -*December 16th, 2018* +_December 16th, 2018_ ### BREAKING CHANGES: -* Go API +- Go API - [dep] [\#3027](https://github.com/tendermint/tendermint/issues/3027) Revert to mainline Go crypto library, eliminating the modified `bcrypt.GenerateFromPassword` ## v0.27.2 -*December 16th, 2018* +_December 16th, 2018_ ### IMPROVEMENTS: @@ -1035,26 +1107,29 @@ See [UPGRADING.md](UPGRADING.md) for more details. ### BUG FIXES: -- [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. +- [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. ## v0.27.1 -*December 15th, 2018* +_December 15th, 2018_ Special thanks to external contributors on this release: @danil-lashin, @hleb-albau, @james-ray, @leo-xinwang ### FEATURES: + - [rpc] [\#2964](https://github.com/tendermint/tendermint/issues/2964) Add `UnconfirmedTxs(limit)` and `NumUnconfirmedTxs()` methods to HTTP/Local clients (@danil-lashin) - [docs] [\#3004](https://github.com/tendermint/tendermint/issues/3004) Enable full-text search on docs pages ### IMPROVEMENTS: + - [consensus] [\#2971](https://github.com/tendermint/tendermint/issues/2971) Return error if ValidatorSet is empty after InitChain (@leo-xinwang) - [ci/cd] [\#3005](https://github.com/tendermint/tendermint/issues/3005) Updated CircleCI job to trigger website build when docs are updated - [docs] Various updates ### BUG FIXES: + - [cmd] [\#2983](https://github.com/tendermint/tendermint/issues/2983) `testnet` command always sets `addr_book_strict = false` - [config] [\#2980](https://github.com/tendermint/tendermint/issues/2980) Fix CORS options formatting - [kv indexer] [\#2912](https://github.com/tendermint/tendermint/issues/2912) Don't ignore key when executing CONTAINS @@ -1065,7 +1140,7 @@ Special thanks to external contributors on this release: ## v0.27.0 -*December 5th, 2018* +_December 5th, 2018_ Special thanks to external contributors on this release: @danil-lashin, @srmo @@ -1086,21 +1161,24 @@ message. ### BREAKING CHANGES: -* CLI/RPC/Config +- CLI/RPC/Config + - [rpc] [\#2932](https://github.com/tendermint/tendermint/issues/2932) Rename `accum` to `proposer_priority` -* Go API +- Go API + - [db] [\#2913](https://github.com/tendermint/tendermint/pull/2913) ReverseIterator API change: start < end, and end is exclusive. - [types] [\#2932](https://github.com/tendermint/tendermint/issues/2932) Rename `Validator.Accum` to `Validator.ProposerPriority` -* Blockchain Protocol +- Blockchain Protocol + - [state] [\#2714](https://github.com/tendermint/tendermint/issues/2714) Validators can now only use pubkeys allowed within ConsensusParams.Validator.PubKeyTypes -* P2P Protocol +- P2P Protocol - [consensus] [\#2871](https://github.com/tendermint/tendermint/issues/2871) - Remove *ProposalHeartbeat* message as it serves no real purpose (@srmo) + Remove _ProposalHeartbeat_ message as it serves no real purpose (@srmo) - [state] Fixes for proposer selection: - [\#2785](https://github.com/tendermint/tendermint/issues/2785) Accum for new validators is `-1.125*totalVotingPower` instead of 0 - [\#2941](https://github.com/tendermint/tendermint/issues/2941) val.Accum is preserved during ValidatorSet.Update to avoid being @@ -1122,8 +1200,8 @@ message. - [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) - [state] [\#2785](https://github.com/tendermint/tendermint/issues/2785) Fix accum for new validators to be `-1.125*totalVotingPower` instead of 0, forcing them to wait before becoming the proposer. Also: - - do not batch clip - - keep accums averaged near 0 + - do not batch clip + - keep accums averaged near 0 - [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 - [types] [\#2938](https://github.com/tendermint/tendermint/issues/2938) Fix regression in v0.26.4 where we panic on empty genDoc.Validators @@ -1132,7 +1210,7 @@ message. ## v0.26.4 -*November 27th, 2018* +_November 27th, 2018_ Special thanks to external contributors on this release: @ackratos, @goolAdapter, @james-ray, @joe-bowman, @kostko, @@ -1145,16 +1223,16 @@ program](https://hackerone.com/tendermint). - [rpc] [\#2747](https://github.com/tendermint/tendermint/issues/2747) Enable subscription to tags emitted from `BeginBlock`/`EndBlock` (@kostko) - [types] [\#2747](https://github.com/tendermint/tendermint/issues/2747) Add `ResultBeginBlock` and `ResultEndBlock` fields to `EventDataNewBlock` - and `EventDataNewBlockHeader` to support subscriptions (@kostko) + and `EventDataNewBlockHeader` to support subscriptions (@kostko) - [types] [\#2918](https://github.com/tendermint/tendermint/issues/2918) Add Marshal, MarshalTo, Unmarshal methods to various structs to support Protobuf compatibility (@nagarajmanjunath) ### IMPROVEMENTS: - [config] [\#2877](https://github.com/tendermint/tendermint/issues/2877) Add `blocktime_iota` to the config.toml (@ackratos) - - NOTE: this should be a ConsensusParam, not part of the config, and will be - removed from the config at a later date - ([\#2920](https://github.com/tendermint/tendermint/issues/2920). + - NOTE: this should be a ConsensusParam, not part of the config, and will be + removed from the config at a later date + ([\#2920](https://github.com/tendermint/tendermint/issues/2920). - [mempool] [\#2882](https://github.com/tendermint/tendermint/issues/2882) Add txs from Update to cache - [mempool] [\#2891](https://github.com/tendermint/tendermint/issues/2891) Remove local int64 counter from being stored in every tx - [node] [\#2866](https://github.com/tendermint/tendermint/issues/2866) Add ability to instantiate IPCVal (@joe-bowman) @@ -1164,8 +1242,8 @@ program](https://hackerone.com/tendermint). - [blockchain] [\#2731](https://github.com/tendermint/tendermint/issues/2731) Retry both blocks if either is bad to avoid getting stuck during fast sync (@goolAdapter) - [consensus] [\#2893](https://github.com/tendermint/tendermint/issues/2893) Use genDoc.Validators instead of state.NextValidators on replay when appHeight==0 (@james-ray) - [log] [\#2868](https://github.com/tendermint/tendermint/issues/2868) Fix `module=main` setting overriding all others - - NOTE: this changes the default logging behaviour to be much less verbose. - Set `log_level="info"` to restore the previous behaviour. + - NOTE: this changes the default logging behaviour to be much less verbose. + Set `log_level="info"` to restore the previous behaviour. - [rpc] [\#2808](https://github.com/tendermint/tendermint/issues/2808) Fix `accum` field in `/validators` by calling `IncrementAccum` if necessary - [rpc] [\#2811](https://github.com/tendermint/tendermint/issues/2811) Allow integer IDs in JSON-RPC requests (@tomtau) - [txindex/kv] [\#2759](https://github.com/tendermint/tendermint/issues/2759) Fix tx.height range queries @@ -1174,7 +1252,7 @@ program](https://hackerone.com/tendermint). ## v0.26.3 -*November 17th, 2018* +_November 17th, 2018_ Special thanks to external contributors on this release: @danil-lashin, @kevlubkcm, @krhubert, @srmo @@ -1184,13 +1262,13 @@ program](https://hackerone.com/tendermint). ### BREAKING CHANGES: -* Go API +- Go API - [rpc] [\#2791](https://github.com/tendermint/tendermint/issues/2791) Functions that start HTTP servers are now blocking: - Impacts `StartHTTPServer`, `StartHTTPAndTLSServer`, and `StartGRPCServer` - These functions now take a `net.Listener` instead of an address - [rpc] [\#2767](https://github.com/tendermint/tendermint/issues/2767) Subscribing to events - `NewRound` and `CompleteProposal` return new types `EventDataNewRound` and - `EventDataCompleteProposal`, respectively, instead of the generic `EventDataRoundState`. (@kevlubkcm) + `NewRound` and `CompleteProposal` return new types `EventDataNewRound` and + `EventDataCompleteProposal`, respectively, instead of the generic `EventDataRoundState`. (@kevlubkcm) ### FEATURES: @@ -1209,6 +1287,7 @@ program](https://hackerone.com/tendermint). - [state] [\#2848](https://github.com/tendermint/tendermint/issues/2848) Make "Update to validators" msg value pretty (@danil-lashin) ### BUG FIXES: + - [consensus] [\#2819](https://github.com/tendermint/tendermint/issues/2819) Don't send proposalHearbeat if not a validator - [docs] [\#2859](https://github.com/tendermint/tendermint/issues/2859) Fix ConsensusParams details in spec - [libs/autofile] [\#2760](https://github.com/tendermint/tendermint/issues/2760) Comment out autofile permissions check - should fix @@ -1221,7 +1300,7 @@ program](https://hackerone.com/tendermint). ## v0.26.2 -*November 15th, 2018* +_November 15th, 2018_ Special thanks to external contributors on this release: @hleb-albau, @zhuzeyu @@ -1240,7 +1319,7 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermi ## v0.26.1 -*November 11, 2018* +_November 11, 2018_ Special thanks to external contributors on this release: @katakonst @@ -1251,8 +1330,8 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermi - [consensus] [\#2704](https://github.com/tendermint/tendermint/issues/2704) Simplify valid POL round logic - [docs] [\#2749](https://github.com/tendermint/tendermint/issues/2749) Deduplicate some ABCI docs - [mempool] More detailed log messages - - [\#2724](https://github.com/tendermint/tendermint/issues/2724) - - [\#2762](https://github.com/tendermint/tendermint/issues/2762) + - [\#2724](https://github.com/tendermint/tendermint/issues/2724) + - [\#2762](https://github.com/tendermint/tendermint/issues/2762) ### BUG FIXES: @@ -1266,7 +1345,7 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermi ## v0.26.0 -*November 2, 2018* +_November 2, 2018_ Special thanks to external contributors on this release: @bradyjoestar, @connorwstein, @goolAdapter, @HaoyangLiu, @@ -1295,90 +1374,95 @@ increasing attention to backwards compatibility. Thanks for bearing with us! ### BREAKING CHANGES: -* CLI/RPC/Config - * [config] [\#2232](https://github.com/tendermint/tendermint/issues/2232) Timeouts are now strings like "3s" and "100ms", 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 +- CLI/RPC/Config + + - [config] [\#2232](https://github.com/tendermint/tendermint/issues/2232) Timeouts are now strings like "3s" and "100ms", 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](https://github.com/tendermint/tendermint/issues/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](https://github.com/tendermint/tendermint/issues/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` - * [rpc] [\#2636](https://github.com/tendermint/tendermint/issues/2636) Remove + - [rpc] [\#2636](https://github.com/tendermint/tendermint/issues/2636) Remove `_params` suffix from fields in `consensus_params`. -* Apps - * [abci] [\#2298](https://github.com/tendermint/tendermint/issues/2298) ResponseQuery.Proof is now a structured merkle.Proof, not just +- Apps + + - [abci] [\#2298](https://github.com/tendermint/tendermint/issues/2298) ResponseQuery.Proof is now a structured merkle.Proof, not just arbitrary bytes - * [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` - * [abci] [\#2636](https://github.com/tendermint/tendermint/issues/2636) Updates to ConsensusParams - * Remove `Params` suffix from field names - * Add `Params` suffix to message types - * Add new field and type, `Validator ValidatorParams`, to control what types of validator keys are allowed. - -* Go API - * [config] [\#2232](https://github.com/tendermint/tendermint/issues/2232) Timeouts are 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) + - [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` + - [abci] [\#2636](https://github.com/tendermint/tendermint/issues/2636) Updates to ConsensusParams + - Remove `Params` suffix from field names + - Add `Params` suffix to message types + - Add new field and type, `Validator ValidatorParams`, to control what types of validator keys are allowed. + +- Go API + + - [config] [\#2232](https://github.com/tendermint/tendermint/issues/2232) Timeouts are 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`. - * [types] [\#2636](https://github.com/tendermint/tendermint/issues/2636) Rename fields in ConsensusParams to remove `Params` suffixes - * [types] [\#2735](https://github.com/tendermint/tendermint/issues/2735) Simplify Proposal message to align with spec - -* Blockchain Protocol - * [crypto/tmhash] [\#2732](https://github.com/tendermint/tendermint/issues/2732) TMHASH is now full 32-byte SHA256 - * All hashes in the block header and Merkle trees are now 32-bytes - * PubKey Addresses are still only 20-bytes - * [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] Update SignBytes for `Vote`/`Proposal`/`Heartbeat`: - * [\#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 from `string` to `byte` and use new + - [types] [\#2636](https://github.com/tendermint/tendermint/issues/2636) Rename fields in ConsensusParams to remove `Params` suffixes + - [types] [\#2735](https://github.com/tendermint/tendermint/issues/2735) Simplify Proposal message to align with spec + +- Blockchain Protocol + + - [crypto/tmhash] [\#2732](https://github.com/tendermint/tendermint/issues/2732) TMHASH is now full 32-byte SHA256 + - All hashes in the block header and Merkle trees are now 32-bytes + - PubKey Addresses are still only 20-bytes + - [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] Update SignBytes for `Vote`/`Proposal`/`Heartbeat`: + - [\#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 from `string` to `byte` and use new `SignedMsgType` to enumerate. - * [types] [\#2730](https://github.com/tendermint/tendermint/issues/2730) Use + - [types] [\#2730](https://github.com/tendermint/tendermint/issues/2730) Use same order for fields in `Vote` as in the SignBytes - * [types] [\#2732](https://github.com/tendermint/tendermint/issues/2732) Remove the address 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 + - [types] [\#2732](https://github.com/tendermint/tendermint/issues/2732) Remove the address 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 - * [types] [\#2670](https://github.com/tendermint/tendermint/issues/2670) Header.Hash() builds Merkle tree out of fields in the same + - [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 - * [types] [\#2682](https://github.com/tendermint/tendermint/issues/2682) Use proto3 `varint` encoding for ints that are usually unsigned (instead of zigzag encoding). - * [types] [\#2636](https://github.com/tendermint/tendermint/issues/2636) Add Validator field to ConsensusParams - (Used to control which pubkey types validators can use, by abci type). + - [types] [\#2682](https://github.com/tendermint/tendermint/issues/2682) Use proto3 `varint` encoding for ints that are usually unsigned (instead of zigzag encoding). + - [types] [\#2636](https://github.com/tendermint/tendermint/issues/2636) Add Validator field to ConsensusParams + (Used to control which pubkey types validators can use, by abci type). -* P2P Protocol - * [consensus] [\#2652](https://github.com/tendermint/tendermint/issues/2652) +- P2P Protocol + - [consensus] [\#2652](https://github.com/tendermint/tendermint/issues/2652) Replace `CommitStepMessage` with `NewValidBlockMessage` - * [consensus] [\#2735](https://github.com/tendermint/tendermint/issues/2735) Simplify `Proposal` message to align with spec - * [consensus] [\#2730](https://github.com/tendermint/tendermint/issues/2730) + - [consensus] [\#2735](https://github.com/tendermint/tendermint/issues/2735) Simplify `Proposal` message to align with spec + - [consensus] [\#2730](https://github.com/tendermint/tendermint/issues/2730) Add `Type` field to `Proposal` and use same order of fields as in the SignBytes for both `Proposal` and `Vote` - * [p2p] [\#2654](https://github.com/tendermint/tendermint/issues/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](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 - [docs/architecture] [\#1181](https://github.com/tendermint/tendermint/issues/1181) S -plit immutable and mutable parts of priv_validator.json + plit immutable and mutable parts of priv_validator.json ### IMPROVEMENTS: + - Additional Metrics - - [consensus] [\#2169](https://github.com/cosmos/cosmos-sdk/issues/2169) - - [p2p] [\#2169](https://github.com/cosmos/cosmos-sdk/issues/2169) + - [consensus] [\#2169](https://github.com/cosmos/cosmos-sdk/issues/2169) + - [p2p] [\#2169](https://github.com/cosmos/cosmos-sdk/issues/2169) - [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 @@ -1386,6 +1470,7 @@ plit immutable and mutable parts of priv_validator.json - [tools] [\#2238](https://github.com/tendermint/tendermint/issues/2238) Binary dependencies are now locked to a specific git commit ### BUG FIXES: + - [\#2711](https://github.com/tendermint/tendermint/issues/2711) Validate all incoming reactor messages. Fixes various bugs due to negative ints. - [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 @@ -1409,7 +1494,7 @@ plit immutable and mutable parts of priv_validator.json ## v0.25.0 -*September 22, 2018* +_September 22, 2018_ Special thanks to external contributors on this release: @scriptionist, @bradyjoestar, @WALL-E @@ -1423,26 +1508,29 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermi BREAKING CHANGES: -* CLI/RPC/Config - * [rpc] [\#2391](https://github.com/tendermint/tendermint/issues/2391) /status `result.node_info.other` became a map - * [types] [\#2364](https://github.com/tendermint/tendermint/issues/2364) Remove `TxSize` and `BlockGossip` from `ConsensusParams` - * Maximum tx size is now set implicitly via the `BlockSize.MaxBytes` - * The size of block parts in the consensus is now fixed to 64kB +- CLI/RPC/Config + + - [rpc] [\#2391](https://github.com/tendermint/tendermint/issues/2391) /status `result.node_info.other` became a map + - [types] [\#2364](https://github.com/tendermint/tendermint/issues/2364) Remove `TxSize` and `BlockGossip` from `ConsensusParams` + - Maximum tx size is now set implicitly via the `BlockSize.MaxBytes` + - The size of block parts in the consensus is now fixed to 64kB -* Apps - * [mempool] [\#2360](https://github.com/tendermint/tendermint/issues/2360) Mempool tracks the `ResponseCheckTx.GasWanted` and +- Apps + + - [mempool] [\#2360](https://github.com/tendermint/tendermint/issues/2360) Mempool tracks the `ResponseCheckTx.GasWanted` and `ConsensusParams.BlockSize.MaxGas` and enforces: - `GasWanted <= MaxGas` for every tx - `(sum of GasWanted in block) <= MaxGas` for block proposal -* Go API - * [libs/common] [\#2431](https://github.com/tendermint/tendermint/issues/2431) Remove Word256 due to lack of use - * [libs/common] [\#2452](https://github.com/tendermint/tendermint/issues/2452) Remove the following functions due to lack of use: - * byteslice.go: cmn.IsZeros, cmn.RightPadBytes, cmn.LeftPadBytes, cmn.PrefixEndBytes - * strings.go: cmn.IsHex, cmn.StripHex - * int.go: Uint64Slice, all put/get int64 methods +- Go API + - [libs/common] [\#2431](https://github.com/tendermint/tendermint/issues/2431) Remove Word256 due to lack of use + - [libs/common] [\#2452](https://github.com/tendermint/tendermint/issues/2452) Remove the following functions due to lack of use: + - byteslice.go: cmn.IsZeros, cmn.RightPadBytes, cmn.LeftPadBytes, cmn.PrefixEndBytes + - strings.go: cmn.IsHex, cmn.StripHex + - int.go: Uint64Slice, all put/get int64 methods FEATURES: + - [rpc] [\#2415](https://github.com/tendermint/tendermint/issues/2415) New `/consensus_params?height=X` endpoint to query the consensus params at any height (@scriptonist) - [types] [\#1714](https://github.com/tendermint/tendermint/issues/1714) Add Address to GenesisValidator @@ -1450,12 +1538,14 @@ FEATURES: - [libs] [\#2286](https://github.com/tendermint/tendermint/issues/2286) Panic if `autofile` or `db/fsdb` permissions change from 0600. IMPROVEMENTS: + - [libs/db] [\#2371](https://github.com/tendermint/tendermint/issues/2371) Output error instead of panic when the given `db_backend` is not initialised (@bradyjoestar) - [mempool] [\#2399](https://github.com/tendermint/tendermint/issues/2399) Make mempool cache a proper LRU (@bradyjoestar) - [p2p] [\#2126](https://github.com/tendermint/tendermint/issues/2126) Introduce PeerTransport interface to improve isolation of concerns - [libs/common] [\#2326](https://github.com/tendermint/tendermint/issues/2326) Service returns ErrNotStarted BUG FIXES: + - [node] [\#2294](https://github.com/tendermint/tendermint/issues/2294) Delay starting node until Genesis time - [consensus] [\#2048](https://github.com/tendermint/tendermint/issues/2048) Correct peer statistics for marking peer as good - [rpc] [\#2460](https://github.com/tendermint/tendermint/issues/2460) StartHTTPAndTLSServer() now passes StartTLS() errors back to the caller rather than hanging forever. @@ -1464,7 +1554,7 @@ BUG FIXES: ## 0.24.0 -*September 6th, 2018* +_September 6th, 2018_ Special thanks to external contributors with PRs included in this release: ackratos, james-ray, bradyjoestar, peerlink, Ahmah2009, bluele, b00f. @@ -1491,12 +1581,14 @@ breaking](https://github.com/tendermint/tendermint/issues?q=is%3Aopen+is%3Aissue BREAKING CHANGES: -* CLI/RPC/Config +- CLI/RPC/Config + - [config] [\#2169](https://github.com/tendermint/tendermint/issues/2169) Replace MaxNumPeers with MaxNumInboundPeers and MaxNumOutboundPeers - [config] [\#2300](https://github.com/tendermint/tendermint/issues/2300) Reduce default mempool size from 100k to 5k, until ABCI rechecking is implemented. - [rpc] [\#1815](https://github.com/tendermint/tendermint/issues/1815) `/commit` returns a `signed_header` field instead of everything being top-level -* Apps +- Apps + - [abci] Added address of the original proposer of the block to Header - [abci] Change ABCI Header to match Tendermint exactly - [abci] [\#2159](https://github.com/tendermint/tendermint/issues/2159) Update use of `Validator` (see @@ -1508,7 +1600,8 @@ BREAKING CHANGES: - [state] [\#1815](https://github.com/tendermint/tendermint/issues/1815) Validator set changes are now delayed by one block - updates returned in ResponseEndBlock for block H will be included in RequestBeginBlock for block H+2 -* Go API +- Go API + - [lite] [\#1815](https://github.com/tendermint/tendermint/issues/1815) Complete refactor of the package - [node] [\#2212](https://github.com/tendermint/tendermint/issues/2212) NewNode now accepts a `*p2p.NodeKey` (@bradyjoestar) - [libs/common] [\#2199](https://github.com/tendermint/tendermint/issues/2199) Remove Fmt, in favor of fmt.Sprintf @@ -1518,7 +1611,8 @@ BREAKING CHANGES: - [libs/clist] Panics if list extends beyond MaxLength - [crypto] [\#2205](https://github.com/tendermint/tendermint/issues/2205) Rename AminoRoute variables to no longer be prefixed by signature type. -* Blockchain Protocol +- Blockchain Protocol + - [state] [\#1815](https://github.com/tendermint/tendermint/issues/1815) Validator set changes are now delayed by one block (!) - Add NextValidatorSet to State, changes on-disk representation of state - [state] [\#2184](https://github.com/tendermint/tendermint/issues/2184) Enforce ConsensusParams.BlockSize.MaxBytes (See @@ -1537,13 +1631,13 @@ BREAKING CHANGES: - format changed from DER to `r || s`, both little endian encoded as 32 bytes. - malleability removed by requiring `s` to be in canonical form. -* P2P Protocol +- P2P Protocol - [p2p] [\#2263](https://github.com/tendermint/tendermint/issues/2263) Update secret connection to use a little endian encoded nonce - [blockchain] [\#2213](https://github.com/tendermint/tendermint/issues/2213) Fix Amino routes for blockchain reactor messages (@peerlink) - FEATURES: + - [types] [\#2015](https://github.com/tendermint/tendermint/issues/2015) Allow genesis file to have 0 validators (@b00f) - Initial validator set can be determined by the app in ResponseInitChain - [rpc] [\#2161](https://github.com/tendermint/tendermint/issues/2161) New event `ValidatorSetUpdates` for when the validator set changes @@ -1551,6 +1645,7 @@ FEATURES: - [libs/db] [\#2293](https://github.com/tendermint/tendermint/issues/2293) Allow passing options through when creating instances of leveldb dbs IMPROVEMENTS: + - [docs] Lint documentation with `write-good` and `stop-words`. - [docs] [\#2249](https://github.com/tendermint/tendermint/issues/2249) Refactor, deduplicate, and improve the ABCI docs and spec (with thanks to @ttmc). - [scripts] [\#2196](https://github.com/tendermint/tendermint/issues/2196) Added json2wal tool, which is supposed to help our users restore (@bradyjoestar) @@ -1559,6 +1654,7 @@ IMPROVEMENTS: - [mempool] [\#2166](https://github.com/tendermint/tendermint/issues/2166) Set explicit capacity for map when updating txs (@bluele) BUG FIXES: + - [config] [\#2284](https://github.com/tendermint/tendermint/issues/2284) Replace `db_path` with `db_dir` from automatically generated configuration files. - [mempool] [\#2188](https://github.com/tendermint/tendermint/issues/2188) Fix OOM issue from cache map and list getting out of sync - [state] [\#2051](https://github.com/tendermint/tendermint/issues/2051) KV store index supports searching by `tx.height` (@ackratos) @@ -1568,15 +1664,16 @@ BUG FIXES: ## 0.23.1 -*August 22nd, 2018* +_August 22nd, 2018_ BUG FIXES: + - [libs/autofile] [\#2261](https://github.com/tendermint/tendermint/issues/2261) Fix log rotation so it actually happens. - - Fixes issues with consensus WAL growing unbounded ala [\#2259](https://github.com/tendermint/tendermint/issues/2259) + - Fixes issues with consensus WAL growing unbounded ala [\#2259](https://github.com/tendermint/tendermint/issues/2259) ## 0.23.0 -*August 5th, 2018* +_August 5th, 2018_ This release includes breaking upgrades in our P2P encryption, some ABCI messages, and how we encode time and signatures. @@ -1584,38 +1681,42 @@ some ABCI messages, and how we encode time and signatures. A few more changes are still coming to the Header, ABCI, and validator set handling to better support light clients, BFT time, and upgrades. Most notably, validator set changes will be delayed by one block (see -[#1815][i1815]). +[#1815] [i1815]). We also removed `make ensure_deps` in favour of `make get_vendor_deps`. BREAKING CHANGES: + - [abci] Changed time format from int64 to google.protobuf.Timestamp - [abci] Changed Validators to LastCommitInfo in RequestBeginBlock - [abci] Removed Fee from ResponseDeliverTx and ResponseCheckTx - [crypto] Switch crypto.Signature from interface to []byte for space efficiency [#2128](https://github.com/tendermint/tendermint/pull/2128) - - NOTE: this means signatures no longer have the prefix bytes in Amino - binary nor the `type` field in Amino JSON. They're just bytes. + - NOTE: this means signatures no longer have the prefix bytes in Amino + binary nor the `type` field in Amino JSON. They're just bytes. - [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) - [tools] Removed `make ensure_deps` in favor of `make get_vendor_deps` - [types] CanonicalTime uses nanoseconds instead of clipping to ms - - breaks serialization/signing of all messages with a timestamp + - breaks serialization/signing of all messages with a timestamp FEATURES: + - [tools] Added `make check_dep` - - ensures gopkg.lock is synced with gopkg.toml - - ensures no branches are used in the gopkg.toml + - ensures gopkg.lock is synced with gopkg.toml + - ensures no branches are used in the gopkg.toml IMPROVEMENTS: + - [blockchain] Improve fast-sync logic [#1805](https://github.com/tendermint/tendermint/pull/1805) - - tweak params - - only process one block at a time to avoid starving + - tweak params + - only process one block at a time to avoid starving - [common] bit array functions which take in another parameter are now thread safe - [crypto] Switch hkdfchachapoly1305 to xchachapoly1305 - [p2p] begin connecting to peers as soon a seed node provides them to you ([#2093](https://github.com/tendermint/tendermint/issues/2093)) BUG FIXES: + - [common] Safely handle cases where atomic write files already exist [#2109](https://github.com/tendermint/tendermint/issues/2109) - [privval] fix a deadline for accepting new connections in socket private validator. @@ -1626,7 +1727,7 @@ BUG FIXES: ## 0.22.8 -*July 26th, 2018* +_July 26th, 2018_ BUG FIXES @@ -1634,7 +1735,7 @@ BUG FIXES ## 0.22.7 -*July 26th, 2018* +_July 26th, 2018_ BUG FIXES @@ -1643,35 +1744,38 @@ BUG FIXES ## 0.22.6 -*July 24th, 2018* +_July 24th, 2018_ BUG FIXES - [rpc] Fix `/blockchain` endpoint - - (#2049) Fix OOM attack by returning error on negative input - - Fix result length to have max 20 (instead of 21) block metas + - (#2049) Fix OOM attack by returning error on negative input + - Fix result length to have max 20 (instead of 21) block metas - [rpc] Validate height is non-negative in `/abci_query` -- [consensus] (#2050) Include evidence in proposal block parts (previously evidence was +- [consensus](#2050) Include evidence in proposal block parts (previously evidence was not being included in blocks!) -- [p2p] (#2046) Close rejected inbound connections so file descriptor doesn't +- [p2p](#2046) Close rejected inbound connections so file descriptor doesn't leak -- [Gopkg] (#2053) Fix versions in the toml +- [Gopkg](#2053) Fix versions in the toml ## 0.22.5 -*July 23th, 2018* +_July 23th, 2018_ BREAKING CHANGES: + - [crypto] Refactor `tendermint/crypto` into many subpackages - [libs/common] remove exponentially distributed random numbers IMPROVEMENTS: + - [abci, libs/common] Generated gogoproto static marshaller methods - [config] Increase default send/recv rates to 5 mB/s - [p2p] reject addresses coming from private peers - [p2p] allow persistent peers to be private BUG FIXES: + - [mempool] fixed a race condition when `create_empty_blocks=false` where a transaction is published at an old height. - [p2p] dial external IP setup by `persistent_peers`, not internal NAT IP @@ -1679,16 +1783,19 @@ BUG FIXES: ## 0.22.4 -*July 14th, 2018* +_July 14th, 2018_ BREAKING CHANGES: + - [genesis] removed deprecated `app_options` field. - [types] Genesis.AppStateJSON -> Genesis.AppState FEATURES: + - [tools] Merged in from github.com/tendermint/tools BUG FIXES: + - [tools/tm-bench] Various fixes - [consensus] Wait for WAL to stop on shutdown - [abci] Fix #1891, pending requests cannot hang when abci server dies. @@ -1696,71 +1803,74 @@ BUG FIXES: ## 0.22.3 -*July 10th, 2018* +_July 10th, 2018_ IMPROVEMENTS + - Update dependencies - * pin all values in Gopkg.toml to version or commit - * update golang/protobuf to v1.1.0 + - pin all values in Gopkg.toml to version or commit + - update golang/protobuf to v1.1.0 ## 0.22.2 -*July 10th, 2018* +_July 10th, 2018_ IMPROVEMENTS + - More cleanup post repo merge! - [docs] Include `ecosystem.json` and `tendermint-bft.md` from deprecated `aib-data` repository. - [config] Add `instrumentation.max_open_connections`, which limits the number of requests in flight to Prometheus server (if enabled). Default: 3. - BUG FIXES + - [rpc] Allow unquoted integers in requests - - NOTE: this is only for URI requests. JSONRPC requests and all responses - will use quoted integers (the proto3 JSON standard). + - NOTE: this is only for URI requests. JSONRPC requests and all responses + will use quoted integers (the proto3 JSON standard). - [consensus] Fix halt on shutdown ## 0.22.1 -*July 5th, 2018* +_July 5th, 2018_ IMPROVEMENTS -* Cleanup post repo-merge. -* [docs] Various improvements. +- Cleanup post repo-merge. +- [docs] Various improvements. BUG FIXES -* [state] Return error when EndBlock returns a 0-power validator that isn't +- [state] Return error when EndBlock returns a 0-power validator that isn't already in the validator set. -* [consensus] Shut down WAL properly. - +- [consensus] Shut down WAL properly. ## 0.22.0 -*July 2nd, 2018* +_July 2nd, 2018_ BREAKING CHANGES: + - [config] - * Remove `max_block_size_txs` and `max_block_size_bytes` in favor of - consensus params from the genesis file. - * Rename `skip_upnp` to `upnp`, and turn it off by default. - * Change `max_packet_msg_size` back to `max_packet_msg_payload_size` + - Remove `max_block_size_txs` and `max_block_size_bytes` in favor of + consensus params from the genesis file. + - Rename `skip_upnp` to `upnp`, and turn it off by default. + - Change `max_packet_msg_size` back to `max_packet_msg_payload_size` - [rpc] - * All integers are encoded as strings (part of the update for Amino v0.10.1) - * `syncing` is now called `catching_up` + - All integers are encoded as strings (part of the update for Amino v0.10.1) + - `syncing` is now called `catching_up` - [types] Update Amino to v0.10.1 - * Amino is now fully proto3 compatible for the basic types - * JSON-encoded types now use the type name instead of the prefix bytes - * Integers are encoded as strings + - Amino is now fully proto3 compatible for the basic types + - JSON-encoded types now use the type name instead of the prefix bytes + - Integers are encoded as strings - [crypto] Update go-crypto to v0.10.0 and merge into `crypto` - * privKey.Sign returns error. - * ed25519 address changed to the first 20-bytes of the SHA256 of the raw pubkey bytes - * `tmlibs/merkle` -> `crypto/merkle`. Uses SHA256 instead of RIPEMD160 + - privKey.Sign returns error. + - ed25519 address changed to the first 20-bytes of the SHA256 of the raw pubkey bytes + - `tmlibs/merkle` -> `crypto/merkle`. Uses SHA256 instead of RIPEMD160 - [tmlibs] Update to v0.9.0 and merge into `libs` - * remove `merkle` package (moved to `crypto/merkle`) + - remove `merkle` package (moved to `crypto/merkle`) FEATURES + - [cmd] Added metrics (served under `/metrics` using a Prometheus client; disabled by default). See the new `instrumentation` section in the config and [metrics](https://tendermint.readthedocs.io/projects/tools/en/develop/metrics.html) @@ -1770,6 +1880,7 @@ FEATURES peers to dial IMPROVEMENT + - [rpc/client] Supports https and wss now. - [crypto] Make public key size into public constants - [mempool] Log tx hash, not entire tx @@ -1779,6 +1890,7 @@ IMPROVEMENT - [docs] Move from .rst to .md BUG FIXES: + - [rpc] Limit maximum number of HTTP/WebSocket connections (`rpc.max_open_connections`) and gRPC connections (`rpc.grpc_max_open_connections`). Check out "Running In Production" guide if @@ -1789,7 +1901,7 @@ BUG FIXES: ## 0.21.0 -*June 21th, 2018* +_June 21th, 2018_ BREAKING CHANGES @@ -1811,7 +1923,7 @@ BUG FIXES ## 0.20.0 -*June 6th, 2018* +_June 6th, 2018_ This is the first in a series of breaking releases coming to Tendermint after soliciting developer feedback and conducting security audits. @@ -1831,7 +1943,7 @@ BREAKING CHANGES ## 0.19.9 -*June 5th, 2018* +_June 5th, 2018_ BREAKING CHANGES @@ -1853,7 +1965,7 @@ BUG FIXES ## 0.19.8 -*June 4th, 2018* +_June 4th, 2018_ BREAKING: @@ -1868,7 +1980,7 @@ BUG FIXES ## 0.19.7 -*May 31st, 2018* +_May 31st, 2018_ BREAKING: @@ -1879,7 +1991,7 @@ FEATURES - [rpc] the RPC documentation is now published to https://tendermint.github.io/slate - [p2p] AllowDuplicateIP config option to refuse connections from same IP. - - true by default for now, false by default in next breaking release + - true by default for now, false by default in next breaking release - [docs] Add docs for query, tx indexing, events, pubsub - [docs] Add some notes about running Tendermint in production @@ -1892,7 +2004,7 @@ IMPROVEMENTS: ## 0.19.6 -*May 29th, 2018* +_May 29th, 2018_ BUG FIXES @@ -1906,7 +2018,7 @@ BUG FIX: ## 0.19.5 -*May 20th, 2018* +_May 20th, 2018_ BREAKING CHANGES @@ -2010,6 +2122,7 @@ Some of these are breaking in the RPC response, but they're really bugs! ## 0.19.0 (April 13th, 2018) BREAKING: + - [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) - [cmd] `show_node_id` now returns an error if there is no node key - [rpc]: changed the output format for the `/status` endpoint (see https://godoc.org/github.com/tendermint/tendermint/rpc/core#Status) @@ -2043,12 +2156,14 @@ FEATURES: - [rpc] Include peer NodeIDs in `/net_info` IMPROVEMENTS: + - [config] trim whitespace from elements of lists (like `persistent_peers`) - [rpc] `/tx_search` results are sorted by height - [p2p] do not try to connect to ourselves (ok, maybe only once) - [p2p] seeds respond with a bias towards good peers BUG FIXES: + - [rpc] fix subscribing using an abci.ResponseDeliverTx tag - [rpc] fix tx_indexers matchRange - [rpc] fix unsubscribing (see tmlibs v0.8.0) @@ -2056,14 +2171,17 @@ BUG FIXES: ## 0.17.1 (March 27th, 2018) BUG FIXES: + - [types] Actually support `app_state` in genesis as `AppStateJSON` ## 0.17.0 (March 27th, 2018) BREAKING: + - [types] WriteSignBytes -> SignBytes IMPROVEMENTS: + - [all] renamed `dummy` (`persistent_dummy`) to `kvstore` (`persistent_kvstore`) (name "dummy" is deprecated and will not work in the next breaking release) - [docs] note on determinism (docs/determinism.rst) - [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 @@ -2077,27 +2195,31 @@ IMPROVEMENTS: - [wire] prep work for upgrading to new go-wire (which is now called go-amino) FEATURES: + - [config] exposed `auth_enc` flag to enable/disable encryption - [config] added the `--p2p.private_peer_ids` flag and `PrivatePeerIDs` config variable (see config for description) - [rpc] added `/health` endpoint, which returns empty result for now - [types/priv_validator] new format and socket client, allowing for remote signing BUG FIXES: + - [consensus] fix liveness bug by introducing ValidBlock mechanism ## 0.16.0 (February 20th, 2018) BREAKING CHANGES: -- [config] use $TMHOME/config for all config and json files + +- [config] use \$TMHOME/config for all config and json files - [p2p] old `--p2p.seeds` is now `--p2p.persistent_peers` (persistent peers to which TM will always connect to) - [p2p] now `--p2p.seeds` only used for getting addresses (if addrbook is empty; not persistent) - [p2p] NodeInfo: remove RemoteAddr and add Channels - - we must have at least one overlapping channel with peer - - we only send msgs for channels the peer advertised + - we must have at least one overlapping channel with peer + - we only send msgs for channels the peer advertised - [p2p/conn] pong timeout - [lite] comment out IAVL related code FEATURES: + - [p2p] added new `/dial_peers&persistent=_` **unsafe** endpoint - [p2p] persistent node key in `$THMHOME/config/node_key.json` - [p2p] introduce peer ID and authenticate peers by ID using addresses like `ID@IP:PORT` @@ -2106,12 +2228,14 @@ FEATURES: - [config] P2P.SeedMode (`--p2p.seed_mode`) IMPROVEMENT: + - [p2p/pex] stricter rules in the PEX reactor for better handling of abuse - [p2p] various improvements to code structure including subpackages for `pex` and `conn` - [docs] new spec! - [all] speed up the tests! BUG FIX: + - [blockchain] StopPeerForError on timeout - [consensus] StopPeerForError on a bad Maj23 message - [state] flush mempool conn before calling commit @@ -2122,6 +2246,7 @@ BUG FIX: ## 0.15.0 (December 29, 2017) BREAKING CHANGES: + - [p2p] enable the Peer Exchange reactor by default - [types] add Timestamp field to Proposal/Vote - [types] add new fields to Header: TotalTxs, ConsensusParamsHash, LastResultsHash, EvidenceHash @@ -2131,6 +2256,7 @@ BREAKING CHANGES: - [state] Enforce <1/3 of validator set can change at a time FEATURES: + - [state] Send indices of absent validators and addresses of byzantine validators in BeginBlock - [state] Historical ConsensusParams and ABCIResponses - [docs] Specification for the base Tendermint data structures. @@ -2138,9 +2264,11 @@ FEATURES: - [rpc] `/block_results?height=X` returns the DeliverTx results for a given height. IMPROVEMENTS: + - [consensus] Better handling of corrupt WAL file BUG FIXES: + - [lite] fix race - [state] validate block.Header.ValidatorsHash - [p2p] allow seed addresses to be prefixed with eg. `tcp://` @@ -2150,24 +2278,29 @@ BUG FIXES: ## 0.14.0 (December 11, 2017) BREAKING CHANGES: + - consensus/wal: removed separator - rpc/client: changed Subscribe/Unsubscribe/UnsubscribeAll funcs signatures to be identical to event bus. FEATURES: + - new `tendermint lite` command (and `lite/proxy` pkg) for running a light-client RPC proxy. - NOTE it is currently insecure and its APIs are not yet covered by semver + NOTE it is currently insecure and its APIs are not yet covered by semver IMPROVEMENTS: + - rpc/client: can act as event bus subscriber (See https://github.com/tendermint/tendermint/issues/945). - p2p: use exponential backoff from seconds to hours when attempting to reconnect to persistent peer - config: moniker defaults to the machine's hostname instead of "anonymous" BUG FIXES: + - p2p: no longer exit if one of the seed addresses is incorrect ## 0.13.0 (December 6, 2017) BREAKING CHANGES: + - abci: update to v0.8 using gogo/protobuf; includes tx tags, vote info in RequestBeginBlock, data.Bytes everywhere, use int64, etc. - types: block heights are now `int64` everywhere - types & node: EventSwitch and EventCache have been replaced by EventBus and EventBuffer; event types have been overhauled @@ -2181,12 +2314,14 @@ BREAKING CHANGES: - mempool: cached transactions return an error instead of an ABCI response with BadNonce FEATURES: + - rpc: new `/unsubscribe_all` WebSocket RPC endpoint - rpc: new `/tx_search` endpoint for filtering transactions by more complex queries - p2p/trust: new trust metric for tracking peers. See ADR-006 - config: TxIndexConfig allows to set what DeliverTx tags to index IMPROVEMENTS: + - New asynchronous events system using `tmlibs/pubsub` - logging: Various small improvements - consensus: Graceful shutdown when app crashes @@ -2194,86 +2329,101 @@ IMPROVEMENTS: - p2p: more defensive programming BUG FIXES: + - consensus: fix panic where prs.ProposalBlockParts is not initialized - p2p: fix panic on bad channel ## 0.12.1 (November 27, 2017) BUG FIXES: + - upgrade tmlibs dependency to enable Windows builds for Tendermint ## 0.12.0 (October 27, 2017) BREAKING CHANGES: - - rpc/client: websocket ResultsCh and ErrorsCh unified in ResponsesCh. - - rpc/client: ABCIQuery no longer takes `prove` - - state: remove GenesisDoc from state. - - consensus: new binary WAL format provides efficiency and uses checksums to detect corruption - - use scripts/wal2json to convert to json for debugging + +- rpc/client: websocket ResultsCh and ErrorsCh unified in ResponsesCh. +- rpc/client: ABCIQuery no longer takes `prove` +- state: remove GenesisDoc from state. +- consensus: new binary WAL format provides efficiency and uses checksums to detect corruption + - use scripts/wal2json to convert to json for debugging FEATURES: - - new `Verifiers` pkg contains the tendermint light-client library (name subject to change)! - - rpc: `/genesis` includes the `app_options` . - - rpc: `/abci_query` takes an additional `height` parameter to support historical queries. - - rpc/client: new ABCIQueryWithOptions supports options like `trusted` (set false to get a proof) and `height` to query a historical height. + +- new `Verifiers` pkg contains the tendermint light-client library (name subject to change)! +- rpc: `/genesis` includes the `app_options` . +- rpc: `/abci_query` takes an additional `height` parameter to support historical queries. +- rpc/client: new ABCIQueryWithOptions supports options like `trusted` (set false to get a proof) and `height` to query a historical height. IMPROVEMENTS: - - rpc: `/genesis` result includes `app_options` - - rpc/lib/client: add jitter to reconnects. - - rpc/lib/types: `RPCError` satisfies the `error` interface. + +- rpc: `/genesis` result includes `app_options` +- rpc/lib/client: add jitter to reconnects. +- rpc/lib/types: `RPCError` satisfies the `error` interface. BUG FIXES: - - rpc/client: fix ws deadlock after stopping - - blockchain: fix panic on AddBlock when peer is nil - - mempool: fix sending on TxsAvailable when a tx has been invalidated - - consensus: dont run WAL catchup if we fast synced + +- rpc/client: fix ws deadlock after stopping +- blockchain: fix panic on AddBlock when peer is nil +- mempool: fix sending on TxsAvailable when a tx has been invalidated +- consensus: dont run WAL catchup if we fast synced ## 0.11.1 (October 10, 2017) IMPROVEMENTS: - - blockchain/reactor: respondWithNoResponseMessage for missing height + +- blockchain/reactor: respondWithNoResponseMessage for missing height BUG FIXES: - - rpc: fixed client WebSocket timeout - - rpc: client now resubscribes on reconnection - - rpc: fix panics on missing params - - rpc: fix `/dump_consensus_state` to have normal json output (NOTE: technically breaking, but worth a bug fix label) - - types: fixed out of range error in VoteSet.addVote - - consensus: fix wal autofile via https://github.com/tendermint/tmlibs/blob/master/CHANGELOG.md#032-october-2-2017 + +- rpc: fixed client WebSocket timeout +- rpc: client now resubscribes on reconnection +- rpc: fix panics on missing params +- rpc: fix `/dump_consensus_state` to have normal json output (NOTE: technically breaking, but worth a bug fix label) +- types: fixed out of range error in VoteSet.addVote +- consensus: fix wal autofile via https://github.com/tendermint/tmlibs/blob/master/CHANGELOG.md#032-october-2-2017 ## 0.11.0 (September 22, 2017) BREAKING: - - genesis file: validator `amount` is now `power` - - abci: Info, BeginBlock, InitChain all take structs - - rpc: various changes to match JSONRPC spec (http://www.jsonrpc.org/specification), including breaking ones: - - requests that previously returned HTTP code 4XX now return 200 with an error code in the JSONRPC. - - `rpctypes.RPCResponse` uses new `RPCError` type instead of `string`. - - cmd: if there is no genesis, exit immediately instead of waiting around for one to show. - - types: `Signer.Sign` returns an error. - - state: every validator set change is persisted to disk, which required some changes to the `State` structure. - - p2p: new `p2p.Peer` interface used for all reactor methods (instead of `*p2p.Peer` struct). +- genesis file: validator `amount` is now `power` +- abci: Info, BeginBlock, InitChain all take structs +- rpc: various changes to match JSONRPC spec (http://www.jsonrpc.org/specification), including breaking ones: + + - requests that previously returned HTTP code 4XX now return 200 with an error code in the JSONRPC. + - `rpctypes.RPCResponse` uses new `RPCError` type instead of `string`. + +- cmd: if there is no genesis, exit immediately instead of waiting around for one to show. +- types: `Signer.Sign` returns an error. +- state: every validator set change is persisted to disk, which required some changes to the `State` structure. +- p2p: new `p2p.Peer` interface used for all reactor methods (instead of `*p2p.Peer` struct). FEATURES: - - rpc: `/validators?height=X` allows querying of validators at previous heights. - - rpc: Leaving the `height` param empty for `/block`, `/validators`, and `/commit` will return the value for the latest height. + +- rpc: `/validators?height=X` allows querying of validators at previous heights. +- rpc: Leaving the `height` param empty for `/block`, `/validators`, and `/commit` will return the value for the latest height. IMPROVEMENTS: - - docs: Moved all docs from the website and tools repo in, converted to `.rst`, and cleaned up for presentation on `tendermint.readthedocs.io` + +- docs: Moved all docs from the website and tools repo in, converted to `.rst`, and cleaned up for presentation on `tendermint.readthedocs.io` BUG FIXES: - - fix WAL openning issue on Windows + +- fix WAL openning issue on Windows ## 0.10.4 (September 5, 2017) IMPROVEMENTS: + - docs: Added Slate docs to each rpc function (see rpc/core) - docs: Ported all website docs to Read The Docs - config: expose some p2p params to tweak performance: RecvRate, SendRate, and MaxMsgPacketPayloadSize - rpc: Upgrade the websocket client and server, including improved auto reconnect, and proper ping/pong BUG FIXES: + - consensus: fix panic on getVoteBitArray - consensus: hang instead of panicking on byzantine consensus failures - cmd: dont load config for version command @@ -2281,6 +2431,7 @@ BUG FIXES: ## 0.10.3 (August 10, 2017) FEATURES: + - control over empty block production: - new flag, `--consensus.create_empty_blocks`; when set to false, blocks are only created when there are txs or when the AppHash changes. - new config option, `consensus.create_empty_blocks_interval`; an empty block is created after this many seconds. @@ -2290,17 +2441,21 @@ FEATURES: - rpc: Add `syncing` field to response returned by `/status`. Is `true` while in fast-sync mode. IMPROVEMENTS: + - various improvements to documentation and code comments BUG FIXES: + - mempool: pass height into constructor so it doesn't always start at 0 ## 0.10.2 (July 10, 2017) FEATURES: + - Enable lower latency block commits by adding consensus reactor sleep durations and p2p flush throttle timeout to the config IMPROVEMENTS: + - More detailed logging in the consensus reactor and state machine - More in-code documentation for many exposed functions, especially in consensus/reactor.go and p2p/switch.go - Improved readability for some function definitions and code blocks with long lines @@ -2308,11 +2463,13 @@ IMPROVEMENTS: ## 0.10.1 (June 28, 2017) FEATURES: + - Use `--trace` to get stack traces for logged errors - types: GenesisDoc.ValidatorHash returns the hash of the genesis validator set - types: GenesisDocFromFile parses a GenesiDoc from a JSON file IMPROVEMENTS: + - Add a Code of Conduct - Variety of improvements as suggested by `megacheck` tool - rpc: deduplicate tests between rpc/client and rpc/tests @@ -2321,6 +2478,7 @@ IMPROVEMENTS: - DOCKER: automate build/push BUG FIXES: + - Fix log statements using keys with spaces (logger does not currently support spaces) - rpc: set logger on websocket connection - rpc: fix ws connection stability by setting write deadline on pings @@ -2333,8 +2491,9 @@ Also includes the Grand Repo-Merge of 2017. BREAKING CHANGES: - Config and Flags: + - The `config` map is replaced with a [`Config` struct](https://github.com/tendermint/tendermint/blob/master/config/config.go#L11), -containing substructs: `BaseConfig`, `P2PConfig`, `MempoolConfig`, `ConsensusConfig`, `RPCConfig` + containing substructs: `BaseConfig`, `P2PConfig`, `MempoolConfig`, `ConsensusConfig`, `RPCConfig` - This affects the following flags: - `--seeds` is now `--p2p.seeds` - `--node_laddr` is now `--p2p.laddr` @@ -2343,6 +2502,7 @@ containing substructs: `BaseConfig`, `P2PConfig`, `MempoolConfig`, `ConsensusCon - `--rpc_laddr` is now `--rpc.laddr` - `--grpc_laddr` is now `--rpc.grpc_laddr` - Any configuration option now within a substract must come under that heading in the `config.toml`, for instance: + ``` [p2p] laddr="tcp://1.2.3.4:46656" @@ -2350,17 +2510,20 @@ containing substructs: `BaseConfig`, `P2PConfig`, `MempoolConfig`, `ConsensusCon [consensus] timeout_propose=1000 ``` + - Use viper and `DefaultConfig() / TestConfig()` functions to handle defaults, and remove `config/tendermint` and `config/tendermint_test` - Change some function and method signatures to - Change some [function and method signatures](https://gist.github.com/ebuchman/640d5fc6c2605f73497992fe107ebe0b) accomodate new config - Logger + - Replace static `log15` logger with a simple interface, and provide a new implementation using `go-kit`. -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 + 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 - Levels `warn` and `notice` are removed (you may need to change them in your `config.toml`!) - Change some [function and method signatures](https://gist.github.com/ebuchman/640d5fc6c2605f73497992fe107ebe0b) to accept a logger - JSON serialization: + - 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: ``` "pub_key": { @@ -2378,7 +2541,6 @@ See our new [logging library](https://github.com/tendermint/tmlibs/log) and [blo - 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) - 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. - FEATURES: - 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 @@ -2401,7 +2563,6 @@ IMPROVEMENTS: - Color code different instances of the consensus for tests - Isolate viper to `cmd/tendermint/commands` and do not read config from file for tests - ## 0.9.2 (April 26, 2017) BUG FIXES: @@ -2456,7 +2617,6 @@ message ResponseQuery{ } ``` - - `BlockMeta` data type unifies its Hash and PartSetHash under a `BlockID`: ``` @@ -2495,7 +2655,6 @@ BUG FIXES: - Fix proposer selection logic in ValidatorSet by taking the address into account in the `accumComparable` - Fix inconcistencies with `ValidatorSet.Proposer` across restarts by persisting it in the `State` - ## 0.8.0 (January 13, 2017) BREAKING CHANGES: @@ -2526,11 +2685,10 @@ type Vote struct { - Update TMSP to v0.3.0, where it is now called ABCI and AppendTx is DeliverTx - Hex strings in the RPC are now "0x" prefixed - FEATURES: - New message type on the ConsensusReactor, `Maj23Msg`, for peers to alert others they've seen a Maj23, -in order to track and handle conflicting votes intelligently to prevent Byzantine faults from causing halts: + in order to track and handle conflicting votes intelligently to prevent Byzantine faults from causing halts: ``` type VoteSetMaj23Message struct { @@ -2565,7 +2723,6 @@ BUG FIXES: - Actually send BeginBlock message - Fix a liveness issues caused by Byzantine proposals/votes. Uses the new `Maj23Msg`. - ## 0.7.4 (December 14, 2016) FEATURES: @@ -2601,9 +2758,7 @@ BUG FIXES: FEATURES: - New TMSP connection for Query/Info -- New RPC endpoints: - - `tmsp_query` - - `tmsp_info` +- New RPC endpoints: - `tmsp_query` - `tmsp_info` - Allow application to filter peers through Query (off by default) IMPROVEMENTS: @@ -2626,17 +2781,12 @@ BREAKING CHANGES: - Validation types now called Commit - NewBlock event only returns the block header - FEATURES: - TMSP and RPC support TCP and UNIX sockets - Addition config options including block size and consensus parameters - New WAL mode `cswal_light`; logs only the validator's own votes -- New RPC endpoints: - - for starting/stopping profilers, and for updating config - - `/broadcast_tx_commit`, returns when tx is included in a block, else an error - - `/unsafe_flush_mempool`, empties the mempool - +- New RPC endpoints: - for starting/stopping profilers, and for updating config - `/broadcast_tx_commit`, returns when tx is included in a block, else an error - `/unsafe_flush_mempool`, empties the mempool IMPROVEMENTS: diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 0fa986f0d..a1e632678 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -1,9 +1,8 @@ -## v0.32.8 +## v0.32.9 \*\* Special thanks to external contributors on this release: -@erikgrinaker Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermint). @@ -15,24 +14,9 @@ program](https://hackerone.com/tendermint). - Apps - Go API - - [libs/pubsub] [\#4070](https://github.com/tendermint/tendermint/pull/4070) `Query#(Matches|Conditions)` returns an error. ### FEATURES: ### IMPROVEMENTS: -- [mempool] [\#4083](https://github.com/tendermint/tendermint/pull/4083) Added TxInfo parameter to CheckTx(), and removed CheckTxWithInfo() (@erikgrinaker) -- [mempool] [\#4057](https://github.com/tendermint/tendermint/issues/4057) Include peer ID when logging rejected txns (@erikgrinaker) -- [tools] [\#4023](https://github.com/tendermint/tendermint/issues/4023) Improved `tm-monitor` formatting of start time and avg tx throughput (@erikgrinaker) -- [libs/pubsub] [\#4070](https://github.com/tendermint/tendermint/pull/4070) No longer panic in `Query#(Matches|Conditions)` preferring to return an error instead. -- [libs/pubsub] [\#4070](https://github.com/tendermint/tendermint/pull/4070) Strip out non-numeric characters when attempting to match numeric values. -- [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) -- [rpc] [\#4077](https://github.com/tendermint/tendermint/pull/4077) Added support for `EXISTS` clause to the Websocket query interface. -- [privval] Add `SignerDialerEndpointRetryWaitInterval` option (@cosmostuba) -- [crypto] Add `RegisterKeyType` to amino to allow external key types registration (@austinabell) - ### BUG FIXES: - -- [tools] [\#4023](https://github.com/tendermint/tendermint/issues/4023) Refresh `tm-monitor` health when validator count is updated (@erikgrinaker) -- [state] [\#4104](https://github.com/tendermint/tendermint/pull/4104) txindex/kv: Fsync data to disk immediately after receiving it (@guagualvcha) -- [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) diff --git a/abci/tests/test_app/main.go b/abci/tests/test_app/main.go index ae47ac6f9..c7524cb1c 100644 --- a/abci/tests/test_app/main.go +++ b/abci/tests/test_app/main.go @@ -53,7 +53,7 @@ func testCounter() { } fmt.Printf("Running %s test with abci=%s\n", abciApp, abciType) - cmd := exec.Command("bash", "-c", fmt.Sprintf("abci-cli %s", abciApp)) + cmd := exec.Command("bash", "-c", fmt.Sprintf("abci-cli %s", abciApp)) //nolint:gosec cmd.Stdout = os.Stdout if err := cmd.Start(); err != nil { log.Fatalf("starting %q err: %v", abciApp, err) diff --git a/consensus/reactor_test.go b/consensus/reactor_test.go index b9ff6ea78..b0bd4c502 100644 --- a/consensus/reactor_test.go +++ b/consensus/reactor_test.go @@ -888,7 +888,7 @@ func TestVoteSetMaj23MessageValidateBasic(t *testing.T) { } func TestVoteSetBitsMessageValidateBasic(t *testing.T) { - testCases := []struct { // nolint: maligned + testCases := []struct { malleateFn func(*VoteSetBitsMessage) expErr string }{ diff --git a/consensus/state.go b/consensus/state.go index 531a295ba..2eedc8994 100644 --- a/consensus/state.go +++ b/consensus/state.go @@ -1411,7 +1411,8 @@ func (cs *ConsensusState) finalizeCommit(height int64) { // restart). endMsg := EndHeightMessage{height} if err := cs.wal.WriteSync(endMsg); err != nil { // NOTE: fsync - panic(fmt.Sprintf("Failed to write %v msg to consensus wal due to %v. Check your FS and restart the node", endMsg, err)) + panic(fmt.Sprintf("Failed to write %v msg to consensus wal due to %v. Check your FS and restart the node", + endMsg, err)) } fail.Fail() // XXX @@ -1617,12 +1618,9 @@ func (cs *ConsensusState) tryAddVote(vote *types.Vote, peerID p2p.ID) (bool, err if bytes.Equal(vote.ValidatorAddress, addr) { cs.Logger.Error( "Found conflicting vote from ourselves. Did you unsafe_reset a validator?", - "height", - vote.Height, - "round", - vote.Round, - "type", - vote.Type) + "height", vote.Height, + "round", vote.Round, + "type", vote.Type) return added, err } cs.evpool.AddEvidence(voteErr.DuplicateVoteEvidence) @@ -1647,14 +1645,10 @@ func (cs *ConsensusState) addVote( peerID p2p.ID) (added bool, err error) { cs.Logger.Debug( "addVote", - "voteHeight", - vote.Height, - "voteType", - vote.Type, - "valIndex", - vote.ValidatorIndex, - "csHeight", - cs.Height) + "voteHeight", vote.Height, + "voteType", vote.Type, + "valIndex", vote.ValidatorIndex, + "csHeight", cs.Height) // A precommit for the previous height? // These come in while we wait timeoutCommit diff --git a/libs/pubsub/pubsub.go b/libs/pubsub/pubsub.go index bead2aae0..972d2c70a 100644 --- a/libs/pubsub/pubsub.go +++ b/libs/pubsub/pubsub.go @@ -39,6 +39,7 @@ import ( "sync" "github.com/pkg/errors" + cmn "github.com/tendermint/tendermint/libs/common" ) diff --git a/rpc/lib/client/ws_client.go b/rpc/lib/client/ws_client.go index b21eefa7c..d343a3019 100644 --- a/rpc/lib/client/ws_client.go +++ b/rpc/lib/client/ws_client.go @@ -27,7 +27,7 @@ const ( // WSClient is a WebSocket client. The methods of WSClient are safe for use by // multiple goroutines. -type WSClient struct { // nolint: maligned +type WSClient struct { conn *websocket.Conn cdc *amino.Codec diff --git a/version/version.go b/version/version.go index 35d4516d2..9c5e73697 100644 --- a/version/version.go +++ b/version/version.go @@ -20,7 +20,8 @@ const ( // Must be a string because scripts like dist.sh read this file. // XXX: Don't change the name of this variable or you will break // automation :) - TMCoreSemVer = "0.32.7" + + TMCoreSemVer = "0.32.8" // ABCISemVer is the semantic version of the ABCI library ABCISemVer = "0.16.1"