tendermint v0.33 Release Notes
-
๐ Special thanks to external contributors on this release: @mrekucci, @PSalant726, @princesinha19, @greg-szabo, @dongsam, @cuonglm, @jgimeno, @yenkhoon
Friendly reminder, we have a bug bounty program..
January 14, 2020
๐ This release contains breaking changes to the
Block#Header
, specifically ๐NumTxs
andTotalTxs
were removed (#2521). Here's how this change affects different modules:- apps: it breaks the ABCI header field numbering
- state: it breaks the format of
State
on disk - RPC: all RPC requests which expose the header broke
- Go API: the
Header
broke - P2P: since blocks go over the wire, technically the P2P protocol broke
Also, blocks are significantly smaller ๐ฅ because we got rid of the redundant information in
Block#LastCommit
.Commit
now mainly consists of a signature ๐ and a validator address plus a timestamp. Note we may remove the validator โ address & timestamp fields in the future (see ADR-25).๐ฆ
lite2
package has been added to solvelite
issues and introduce weak subjectivity interface. Refer to the spec for complete details. ๐lite
package is now deprecated and will be removed in v0.34 release.๐ฅ BREAKING CHANGES:
CLI/RPC/Config
- [rpc] #3471 Paginate
/validators
response (default: 30 vals per page) - [rpc] #3188 Remove
BlockMeta
inResultBlock
in favor ofBlockId
for/block
- [rpc]
/block_results
response format updated (see RPC docs for details){ "jsonrpc": "2.0", "id": "", "result": { "height": "2109", "txs_results": null, "begin_block_events": null, "end_block_events": null, "validator_updates": null, "consensus_param_updates": null } }
- [rpc] #4141 Remove
#event
suffix from the ID in event responses.{"jsonrpc": "2.0", "id": 0, "result": ...}
- [rpc] #4141 Switch to integer IDs instead of
json-client-XYZ
id=0 method=/subscribe id=0 result=... id=1 method=/abci_query id=1 result=...
- ID is unique for each request;
- Request.ID is now optional. Notification is a Request without an ID. Previously ID="" or ID=0 were considered as notifications.
- [config] #4046 Rename tag(s) to CompositeKey & places where tag is still present it was renamed to event or events. Find how a compositeKey is constructed here
- You will have to generate a new config for your Tendermint node(s)
- [genesis] #2565 Add
consensus_params.evidence.max_age_duration
. Renameconsensus_params.evidence.max_age
tomax_age_num_blocks
. - [cli] #1771
tendermint lite
now uses new light client package (lite2
) and has 3 more flags:--trusting-period
,--trusted-height
and--trusted-hash
- [rpc] #3471 Paginate
Apps
- [tm-bench] Removed tm-bench in favor of tm-load-test
Go API
- [rpc] #3953 Modify NewHTTP, NewXXXClient functions to return an error on invalid remote instead of panicking (@mrekucci)
- [rpc/client] #3471
Validators
now requires two more args:page
andperPage
- [libs/common] #3262 Make error the last parameter of
Task
(@PSalant726) - [cs/types] #3262 Rename
GotVoteFromUnwantedRoundError
toErrGotVoteFromUnwantedRound
(@PSalant726) - [libs/common] #3862 Remove
errors.go
fromlibs/common
- [libs/common] #4230 Move
KV
out of common to its own pkg - [libs/common] #4230 Rename
cmn.KVPair(s)
tokv.Pair(s)
s - [libs/common] #4232 Move
Service
&BaseService
fromlibs/common
tolibs/service
- [libs/common] #4232 Move
common/nil.go
totypes/utils.go
& make the functions private - [libs/common] #4231 Move random functions from
libs/common
into pkgrand
- [libs/common] #4237 Move byte functions from
libs/common
into pkgbytes
- [libs/common] #4237 Move throttletimer functions from
libs/common
into pkgtimer
- [libs/common] #4237 Move tempfile functions from
libs/common
into pkgtempfile
- [libs/common] #4240 Move os functions from
libs/common
into pkgos
- [libs/common] #4240 Move net functions from
libs/common
into pkgnet
- [libs/common] #4240 Move mathematical functions and types out of
libs/common
tomath
pkg - [libs/common] #4240 Move string functions out of
libs/common
tostrings
pkg - [libs/common] #4240 Move async functions out of
libs/common
toasync
pkg - [libs/common] #4240 Move bit functions out of
libs/common
tobits
pkg - [libs/common] #4240 Move cmap functions out of
libs/common
tocmap
pkg - [libs/common] #4258 Remove
Rand
from allrand
pkg functions - [types] #2565 Remove
MockBadEvidence
&MockGoodEvidence
in favor ofMockEvidence
Blockchain Protocol
P2P Protocol
- [p2p] #3668 Make
SecretConnection
non-malleable
- [p2p] #3668 Make
[proto] #3986 Prefix protobuf types to avoid name conflicts.
- ABCI becomes
tendermint.abci.types
with the new API endpoint/tendermint.abci.types.ABCIApplication/
- core_grpc becomes
tendermint.rpc.grpc
with the new API endpoint/tendermint.rpc.grpc.BroadcastAPI/
- merkle becomes
tendermint.crypto.merkle
- libs.common becomes
tendermint.libs.common
- proto3 becomes
tendermint.types.proto3
- ABCI becomes
๐ FEATURES:
- [p2p] #4053 Add
unconditional_peer_ids
andpersistent_peers_max_dial_period
config variables (see ADR-050) (@dongsam) - [tools] #4227 Implement
tendermint debug kill
andtendermint debug dump
commands for Tendermint node debugging functionality. See--help
in both commands for further documentation and usage. - [cli] #4234 Add
--db_backend and --db_dir
flags (@princesinha19) - [cli] #4113 Add optional
--genesis_hash
flag to check genesis hash upon startup - ๐ [config] #3831 Add support for RocksDB (@Stumble)
- [rpc] #3985 Add new
/block_by_hash
endpoint, which allows to fetch a block by its hash (@princesinha19) - [metrics] #4263 Add
consensus_validator_power
: track your validators powerconsensus_validator_last_signed_height
: track at which height the validator last signedconsensus_validator_missed_blocks
: total amount of missed blocks for a validator as gauges in prometheus for validator specific metrics
- ๐ [rpc/lib] #4248 RPC client basic authentication support (@greg-szabo)
- [lite2] #1771 Light client with weak subjectivity
๐ IMPROVEMENTS:
- [rpc] #3188 Added
block_size
toBlockMeta
this is reflected in/blockchain
- [types] #2521 Add
NumTxs
toBlockMeta
andEventDataNewBlockHeader
- [p2p] #4185 Simplify
SecretConnection
handshake with merlin - [cli] #4065 Add
--consensus.create_empty_blocks_interval
flag (@jgimeno) - [docs] #4065 Document
--consensus.create_empty_blocks_interval
flag (@jgimeno) - [crypto] #4190 Added SR25519 signature scheme
- [abci] [#4177] kvstore: Return
LastBlockHeight
andLastBlockAppHash
inInfo
(@princesinha19) - [rpc] #2741 Add
proposer
to/consensus_state
response (@princesinha19) - โก๏ธ [deps] #4289 Update tm-db to 0.4.0, this includes major breaking changes in the dep that change how errors are handled.
๐ BUG FIXES:
- [rpc/lib]#4051 Fix RPC client, which was previously resolving https protocol to http (@yenkhoon)
- [rpc] #4141 JSONRPCClient: validate that Response.ID matches Request.ID
- [rpc] #4141 WSClient: check for unsolicited responses
- โก๏ธ [types] \4164 Prevent temporary power overflows on validator updates
- [cs] #4069 Don't panic when block meta is not found in store (@gregzaitsev)
- โก๏ธ [types] #4164 Prevent temporary power overflows on validator updates (joint efforts of @gchaincl and @ancazamfir)
- [p2p] #4140
SecretConnection
: use the transcript solely for authentication (i.e. MAC) - [consensus/types] #4243 fix BenchmarkRoundStateDeepCopy panics (@cuonglm)
- [rpc] #4256 Pass
outCapacity
toeventBus#Subscribe
when subscribing using a local client