Pending
Special thanks to external contributors with PRs included in this release: ackratos, james-ray, bradyjoestar,
peerlink, Ahmah2009, bluele, b00f
BREAKING CHANGES:
-
CLI/RPC/Config
- [config] #2169 Replace MaxNumPeers with MaxNumInboundPeers and MaxNumOutboundPeers
- [config] #2300 Reduce default mempool size from 100k to 5k, until ABCI rechecking is implemented.
- [rpc] #1815
/commit
returns a signed_header
field instead of everything being top-level
-
Apps
- [abci] Added address of the original proposer of the block to Header
- [abci] Change ABCI Header to match Tendermint exactly
- [abci] #2159 Update use of
Validator
(see
ADR-018):
- Remove PubKey from
Validator
(so it's just Address and Power)
- Introduce
ValidatorUpdate
(with just PubKey and Power)
- InitChain and EndBlock use ValidatorUpdate
- Update field names and types in BeginBlock
- [state] #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
- [lite] #1815 Complete refactor of the package
- [node] #2212 NewNode now accepts a
*p2p.NodeKey
(@bradyjoestar)
- [libs/common] #2199 Remove Fmt, in favor of fmt.Sprintf
- [libs/common] SplitAndTrim was deleted
- [libs/common] #2274 Remove unused Math functions like MaxInt, MaxInt64,
MinInt, MinInt64 (@Ahmah2009)
- [libs/clist] Panics if list extends beyond MaxLength
- [crypto] #2205 Rename AminoRoute variables to no longer be prefixed by signature type.
-
Blockchain Protocol
- [state] #1815 Validator set changes are now delayed by one block (!)
- Add NextValidatorSet to State, changes on-disk representation of state
- [state] #2184 Enforce ConsensusParams.BlockSize.MaxBytes (See
ADR-020).
- Remove ConsensusParams.BlockSize.MaxTxs
- Introduce maximum sizes for all components of a block, including ChainID
- [types] Updates to the block Header:
- #1815 NextValidatorsHash - hash of the validator set for the next block,
so the current validators actually sign over the hash for the new
validators
- #2106 ProposerAddress - address of the block's original proposer
- [consensus] #2203 Implement BFT time
- Timestamp in block must be monotonic and equal the median of timestamps in block's LastCommit
- [crypto] #2239 Secp256k1 signature changes (See
ADR-014):
- 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] #2263 Update secret connection to use a little endian encoded nonce
- [blockchain] #2213 Fix Amino routes for blockchain reactor messages
(@peerlink)
FEATURES:
- [types] #2015 Allow genesis file to have 0 validators (@b00f)
- Initial validator set can be determined by the app in ResponseInitChain
- [rpc] #2161 New event
ValidatorSetUpdates
for when the validator set changes
- [crypto/multisig] #2164 Introduce multisig pubkey and signature format
- [libs/db] #2293 Allow passing options through when creating instances of leveldb dbs
IMPROVEMENTS:
- [docs] Lint documentation with
write-good
and stop-words
.
- [scripts] #2196 Added json2wal tool, which is supposed to help our users restore (@bradyjoestar)
corrupted WAL files and compose test WAL files (@bradyjoestar)
- [mempool] #2234 Now stores txs by hash inside of the cache, to mitigate memory leakage
- [mempool] #2166 Set explicit capacity for map when updating txs (@bluele)
BUG FIXES:
- [config] #2284 Replace
db_path
with db_dir
from automatically generated configuration files.
- [mempool] #2188 Fix OOM issue from cache map and list getting out of sync
- [state] #2051 KV store index supports searching by
tx.height
(@ackratos)
- [rpc] #2327
/dial_peers
does not try to dial existing peers
- [node] #2323 Filter empty strings from config lists (@james-ray)
- [abci/client] #2236 Fix closing GRPC connection (@bradyjoestar)