mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-15 06:11:20 +00:00
changelog and version (#3750)
* changelog and version * Add section on ABCI changes * Update ABCI upgrade section to include events examples * update upgrading * more upgrading and changelog * update changelog from pending * refer to #rpc_changes * minor word changes
This commit is contained in:
63
CHANGELOG.md
63
CHANGELOG.md
@ -1,5 +1,68 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## v0.32.0
|
||||||
|
|
||||||
|
*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
|
||||||
|
[docs](https://github.com/tendermint/tendermint/blob/60827f75623b92eff132dc0eff5b49d2025c591e/docs/spec/abci/abci.md#events)
|
||||||
|
- Bind RPC to localhost by default, not to the public interface [UPGRADING/RPC_Changes](./UPGRADING.md#rpc_changes)
|
||||||
|
|
||||||
|
Friendly reminder, we have a [bug bounty
|
||||||
|
program](https://hackerone.com/tendermint).
|
||||||
|
|
||||||
|
### BREAKING CHANGES:
|
||||||
|
|
||||||
|
* CLI/RPC/Config
|
||||||
|
- [cli] \#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:
|
||||||
|
https://github.com/golang/go/wiki/Modules
|
||||||
|
- [config] [\#3632](https://github.com/tendermint/tendermint/pull/3632) Removed `leveldb` as generic
|
||||||
|
option for `db_backend`. Must be `goleveldb` or `cleveldb`.
|
||||||
|
- [rpc] \#3616 Fix field names for `/block_results` response (eg. `results.DeliverTx`
|
||||||
|
-> `results.deliver_tx`). See docs for details.
|
||||||
|
- [rpc] \#3724 RPC now binds to `127.0.0.1` by default instead of `0.0.0.0`
|
||||||
|
|
||||||
|
* Apps
|
||||||
|
- [abci] \#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
|
||||||
|
- [abci] \#3193 Use RequestDeliverTx and RequestCheckTx in the ABCI
|
||||||
|
Application interface
|
||||||
|
- [libs/db] [\#3632](https://github.com/tendermint/tendermint/pull/3632) Removed deprecated `LevelDBBackend` const
|
||||||
|
If you have `db_backend` set to `leveldb` in your config file, please
|
||||||
|
change it to `goleveldb` or `cleveldb`.
|
||||||
|
- [p2p] \#3521 Remove NewNetAddressStringWithOptionalID
|
||||||
|
|
||||||
|
* Blockchain Protocol
|
||||||
|
|
||||||
|
* P2P Protocol
|
||||||
|
|
||||||
|
### FEATURES:
|
||||||
|
|
||||||
|
### IMPROVEMENTS:
|
||||||
|
- [abci/examples] \#3659 Change validator update tx format in the `persistent_kvstore` to use base64 for pubkeys instead of hex (@needkane)
|
||||||
|
- [consensus] \#3656 Exit if SwitchToConsensus fails
|
||||||
|
- [p2p] \#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 Fixed the BoltDB backend's Batch.Delete implementation (@Yawning)
|
||||||
|
- [libs/db] \#3718 Fixed the BoltDB backend's Get and Iterator implementation (@Yawning)
|
||||||
|
- [node] \#3716 Fix a bug where `nil` is recorded as node's address
|
||||||
|
- [node] \#3741 Fix profiler blocking the entire node
|
||||||
|
|
||||||
## v0.31.7
|
## v0.31.7
|
||||||
|
|
||||||
*June 3, 2019*
|
*June 3, 2019*
|
||||||
|
@ -1,29 +1,19 @@
|
|||||||
## v0.31.8
|
## v0.32.1
|
||||||
|
|
||||||
**
|
**
|
||||||
|
|
||||||
|
Special thanks to external contributors on this release:
|
||||||
|
|
||||||
|
Friendly reminder, we have a [bug bounty
|
||||||
|
program](https://hackerone.com/tendermint).
|
||||||
|
|
||||||
### BREAKING CHANGES:
|
### BREAKING CHANGES:
|
||||||
|
|
||||||
* CLI/RPC/Config
|
* CLI/RPC/Config
|
||||||
- [cli] \#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:
|
|
||||||
https://github.com/golang/go/wiki/Modules
|
|
||||||
- [rpc] \#3616 Improve `/block_results` response format (`results.DeliverTx`
|
|
||||||
-> `results.deliver_tx`). See docs for details.
|
|
||||||
|
|
||||||
* Apps
|
* Apps
|
||||||
- [abci] \#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
|
||||||
- [libs/db] [\#3632](https://github.com/tendermint/tendermint/pull/3632) Removed deprecated `LevelDBBackend` const
|
|
||||||
If you have `db_backend` set to `leveldb` in your config file, please
|
|
||||||
change it to `goleveldb` or `cleveldb`.
|
|
||||||
- [p2p] \#3521 Remove NewNetAddressStringWithOptionalID
|
|
||||||
- [abci] \#3193 Use RequestDeliverTx and RequestCheckTx in the ABCI interface
|
|
||||||
|
|
||||||
* Blockchain Protocol
|
* Blockchain Protocol
|
||||||
|
|
||||||
@ -32,14 +22,5 @@
|
|||||||
### FEATURES:
|
### FEATURES:
|
||||||
|
|
||||||
### IMPROVEMENTS:
|
### IMPROVEMENTS:
|
||||||
- [consensus] \#3656 Exit if SwitchToConsensus fails
|
|
||||||
- [p2p] \#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)
|
|
||||||
- [abci/examples] \#3659 Change validator update tx format (incl. expected pubkey format, which is base64 now) (@needkane)
|
|
||||||
- [rpc] \#3724 RPC now binds to `127.0.0.1` by default instead of `0.0.0.0`
|
|
||||||
|
|
||||||
### BUG FIXES:
|
### BUG FIXES:
|
||||||
- [libs/db] \#3717 Fixed the BoltDB backend's Batch.Delete implementation (@Yawning)
|
|
||||||
- [libs/db] \#3718 Fixed the BoltDB backend's Get and Iterator implementation (@Yawning)
|
|
||||||
- [node] \#3716 Fix a bug where `nil` is recorded as node's address
|
|
||||||
- [node] \#3741 Fix profiler blocking the entire node
|
|
||||||
|
102
UPGRADING.md
102
UPGRADING.md
@ -3,14 +3,114 @@
|
|||||||
This guide provides steps to be followed when you upgrade your applications to
|
This guide provides steps to be followed when you upgrade your applications to
|
||||||
a newer version of Tendermint Core.
|
a newer version of Tendermint Core.
|
||||||
|
|
||||||
|
|
||||||
## v0.32.0
|
## v0.32.0
|
||||||
|
|
||||||
|
This release is compatible with previous blockchains,
|
||||||
|
however the new ABCI Events mechanism may create some complexity
|
||||||
|
for nodes wishing to continue operation with v0.32 from a previous version.
|
||||||
|
There are some minor breaking changes to the RPC.
|
||||||
|
|
||||||
### Config Changes
|
### Config Changes
|
||||||
|
|
||||||
If you have `db_backend` set to `leveldb` in your config file, please change it
|
If you have `db_backend` set to `leveldb` in your config file, please change it
|
||||||
to `goleveldb` or `cleveldb`.
|
to `goleveldb` or `cleveldb`.
|
||||||
|
|
||||||
|
### RPC Changes
|
||||||
|
|
||||||
|
The default listen address for the RPC is now `127.0.0.1`. If you want to expose
|
||||||
|
it publicly, you have to explicitly configure it. Note exposing the RPC to the
|
||||||
|
public internet may not be safe - endpoints which return a lot of data may
|
||||||
|
enable resource exhaustion attacks on your node, causing the process to crash.
|
||||||
|
|
||||||
|
Any consumers of `/block_results` need to be mindful of the change in all field
|
||||||
|
names from CamelCase to Snake case, eg. `results.DeliverTx` is now `results.deliver_tx`.
|
||||||
|
This is a fix, but it's breaking.
|
||||||
|
|
||||||
|
### ABCI Changes
|
||||||
|
|
||||||
|
ABCI responses which previously had a `Tags` field now have an `Events` field
|
||||||
|
instead. The original `Tags` field was simply a list of key-value pairs, where
|
||||||
|
each key effectively represented some attribute of an event occuring in the
|
||||||
|
blockchain, like `sender`, `receiver`, or `amount`. However, it was difficult to
|
||||||
|
represent the occurence of multiple events (for instance, multiple transfers) in a single list.
|
||||||
|
The new `Events` field contains a list of `Event`, where each `Event` is itself a list
|
||||||
|
of key-value pairs, allowing for more natural expression of multiple events in
|
||||||
|
eg. a single DeliverTx or EndBlock. Note each `Event` also includes a `Type`, which is meant to categorize the
|
||||||
|
event.
|
||||||
|
|
||||||
|
For transaction indexing, the index key is
|
||||||
|
prefixed with the event type: `{eventType}.{attributeKey}`.
|
||||||
|
If the same event type and attribute key appear multiple times, the values are
|
||||||
|
appended in a list.
|
||||||
|
|
||||||
|
To make queries, include the event type as a prefix. For instance if you
|
||||||
|
previously queried for `recipient = 'XYZ'`, and after the upgrade you name your event `transfer`,
|
||||||
|
the new query would be for `transfer.recipient = 'XYZ'`.
|
||||||
|
|
||||||
|
Note that transactions indexed on a node before upgrading to v0.32 will still be indexed
|
||||||
|
using the old scheme. For instance, if a node upgraded at height 100,
|
||||||
|
transactions before 100 would be queried with `recipient = 'XYZ'` and
|
||||||
|
transactions after 100 would be queried with `transfer.recipient = 'XYZ'`.
|
||||||
|
While this presents additional complexity to clients, it avoids the need to
|
||||||
|
reindex. Of course, you can reset the node and sync from scratch to re-index
|
||||||
|
entirely using the new scheme.
|
||||||
|
|
||||||
|
We illustrate further with a more complete example.
|
||||||
|
|
||||||
|
Prior to the update, suppose your `ResponseDeliverTx` look like:
|
||||||
|
|
||||||
|
```go
|
||||||
|
abci.ResponseDeliverTx{
|
||||||
|
Tags: []cmn.KVPair{
|
||||||
|
{Key: []byte("sender"), Value: []byte("foo")},
|
||||||
|
{Key: []byte("recipient"), Value: []byte("bar")},
|
||||||
|
{Key: []byte("amount"), Value: []byte("35")},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The following queries would match this transaction:
|
||||||
|
|
||||||
|
```go
|
||||||
|
query.MustParse("tm.event = 'Tx' AND sender = 'foo'")
|
||||||
|
query.MustParse("tm.event = 'Tx' AND recipient = 'bar'")
|
||||||
|
query.MustParse("tm.event = 'Tx' AND sender = 'foo' AND recipient = 'bar'")
|
||||||
|
```
|
||||||
|
|
||||||
|
Following the upgrade, your `ResponseDeliverTx` would look something like:
|
||||||
|
the following `Events`:
|
||||||
|
|
||||||
|
```go
|
||||||
|
abci.ResponseDeliverTx{
|
||||||
|
Events: []abci.Event{
|
||||||
|
{
|
||||||
|
Type: "transfer",
|
||||||
|
Attributes: cmn.KVPairs{
|
||||||
|
{Key: []byte("sender"), Value: []byte("foo")},
|
||||||
|
{Key: []byte("recipient"), Value: []byte("bar")},
|
||||||
|
{Key: []byte("amount"), Value: []byte("35")},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Now the following queries would match this transaction:
|
||||||
|
|
||||||
|
```go
|
||||||
|
query.MustParse("tm.event = 'Tx' AND transfer.sender = 'foo'")
|
||||||
|
query.MustParse("tm.event = 'Tx' AND transfer.recipient = 'bar'")
|
||||||
|
query.MustParse("tm.event = 'Tx' AND transfer.sender = 'foo' AND transfer.recipient = 'bar'")
|
||||||
|
```
|
||||||
|
|
||||||
|
For further documentation on `Events`, see the [docs](https://github.com/tendermint/tendermint/blob/60827f75623b92eff132dc0eff5b49d2025c591e/docs/spec/abci/abci.md#events).
|
||||||
|
|
||||||
|
### Go Applications
|
||||||
|
|
||||||
|
The ABCI Application interface changed slightly so the CheckTx and DeliverTx
|
||||||
|
methods now take Request structs. The contents of these structs are just the raw
|
||||||
|
tx bytes, which were previously passed in as the argument.
|
||||||
|
|
||||||
|
|
||||||
## v0.31.6
|
## v0.31.6
|
||||||
|
|
||||||
There are no breaking changes in this release except Go API of p2p and
|
There are no breaking changes in this release except Go API of p2p and
|
||||||
|
@ -20,7 +20,7 @@ const (
|
|||||||
// Must be a string because scripts like dist.sh read this file.
|
// 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
|
// XXX: Don't change the name of this variable or you will break
|
||||||
// automation :)
|
// automation :)
|
||||||
TMCoreSemVer = "0.31.7"
|
TMCoreSemVer = "0.32.0"
|
||||||
|
|
||||||
// ABCISemVer is the semantic version of the ABCI library
|
// ABCISemVer is the semantic version of the ABCI library
|
||||||
ABCISemVer = "0.16.0"
|
ABCISemVer = "0.16.0"
|
||||||
|
Reference in New Issue
Block a user