tendermint v0.10.0 Release Notes
Release Date: 2017-06-02 // almost 7 years ago-
โก๏ธ Includes major updates to configuration, logging, and json serialization. ๐ Also includes the Grand Repo-Merge of 2017.
๐ฅ BREAKING CHANGES:
Config and Flags:
- The
config
map is replaced with aConfig
struct, containing substructs:BaseConfig
,P2PConfig
,MempoolConfig
,ConsensusConfig
,RPCConfig
- This affects the following flags:
--seeds
is now--p2p.seeds
--node_laddr
is now--p2p.laddr
--pex
is now--p2p.pex
--skip_upnp
is now--p2p.skip_upnp
--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"
[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
- The
Logger
- Replace static
log15
logger with a simple interface, and provide a new implementation usinggo-kit
. <!-- markdown-link-check-disable-next-line --> ๐ See our new logging library and blog post for more details - Levels
warn
andnotice
are removed (you may need to change them in yourconfig.toml
!) - Change some function and method signatures to accept a logger
- Replace static
JSON serialization:
- Replace
[TypeByte, Xxx]
with{"type": "some-type", "data": Xxx}
in RPC and all.json
files by usinggo-wire/data
. For instance, a public key is now:"pub_key": { "type": "ed25519", "data": "83DDF8775937A4A12A2704269E2729FCFCD491B933C4B0A7FFE37FE41D7760D0" }
- Remove type information about RPC responses, so
[TypeByte, {"jsonrpc": "2.0", ... }]
is now just{"jsonrpc": "2.0", ... }
- Change
[]byte
todata.Bytes
in all serialized types (for hex encoding) - Lowercase the JSON tags in
ValidatorSet
fields - Introduce
EventDataInner
for serializing events
- Replace
Other:
- Send InitChain message in handshake if
appBlockHeight == 0
- 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 withunsafe
. Use the--rpc.unsafe
flag to enable.
- Send InitChain message in handshake if
๐ FEATURES:
- ๐ฆ Per-module log levels. For instance, the new default is
state:info,*:error
, which means thestate
package logs atinfo
level, and everything else logs aterror
level - ๐ฒ Log if a node is validator or not in every consensus round
- ๐ Use ldflags to set git hash as part of the version
- Ignore
address
andpub_key
fields inpriv_validator.json
and overwrite them with the values derrived from thepriv_key
๐ IMPROVEMENTS:
- ๐ Merge
tendermint/go-p2p -> tendermint/tendermint/p2p
andtendermint/go-rpc -> tendermint/tendermint/rpc/lib
- โก๏ธ Update paths for grand repo merge:
go-common -> tmlibs/common
go-data -> go-wire/data
- All other
go-
libs, exceptgo-crypto
andgo-wire
, are merged undertmlibs
- No global loggers (loggers are passed into constructors, or preferably set with a SetLogger method)
- Return HTTP status codes with errors for RPC responses
- Limit
/blockchain_info
call to return a maximum of 20 blocks - ๐ Use
.Wrap()
and.Unwrap()
instead of eg.PubKeyS
forgo-crypto
types - ๐จ RPC JSON responses use pretty printing (via
json.MarshalIndent
) - โ Color code different instances of the consensus for tests
- โ
Isolate viper to
cmd/tendermint/commands
and do not read config from file for tests