Changelog History
Page 11
-
v0.27.1 Changes
December 15th, 2018
๐ Special thanks to external contributors on this release: @danil-lashin, @hleb-albau, @james-ray, @leo-xinwang
๐ FEATURES:
- [rpc] #2964 Add
UnconfirmedTxs(limit)
andNumUnconfirmedTxs()
methods to HTTP/Local clients (@danil-lashin) - ๐ [docs] #3004 Enable full-text search on docs pages
๐ IMPROVEMENTS:
- [consensus] #2971 Return error if ValidatorSet is empty after InitChain (@leo-xinwang)
- โก๏ธ [ci/cd] #3005 Updated CircleCI job to trigger website build when docs are updated
- โก๏ธ [docs] Various updates
๐ BUG FIXES:
- [cmd] #2983
testnet
command always setsaddr_book_strict = false
- [config] #2980 Fix CORS options formatting
- [kv indexer] #2912 Don't ignore key when executing CONTAINS
- [mempool] #2961 Call
notifyTxsAvailable
if there're txs left after committing a block, but recheck=false - [mempool] #2994 Reject txs with negative GasWanted
- ๐ [p2p] #2990 Fix a bug where seeds don't disconnect from a peer after 3h
- [consensus] #3006 Save state after InitChain only when stateHeight is also 0 (@james-ray)
- [rpc] #2964 Add
-
v0.27.0 Changes
December 5th, 2018
๐ Special thanks to external contributors on this release: @danil-lashin, @srmo
Special thanks to @dlguddus for discovering a major issue in the proposer selection algorithm.
Friendly reminder, we have a bug bounty program.
๐ This release is primarily about fixes to the proposer selection algorithm in preparation for the Cosmos Game of Stakes. It also makes use of the
ConsensusParams.Validator.PubKeyTypes
to restrict the ๐ key types that can be used by validators, and removes theHeartbeat
consensus message.๐ฅ BREAKING CHANGES:
CLI/RPC/Config
- [rpc] #2932 Rename
accum
toproposer_priority
- [rpc] #2932 Rename
Go API
Blockchain Protocol
- [state] #2714 Validators can now only use pubkeys allowed within ConsensusParams.Validator.PubKeyTypes
P2P Protocol
๐ IMPROVEMENTS:
- ๐จ [state] #2929 Minor refactor of updateState logic (@danil-lashin)
- [node] #2959 Allow node to start even if software's BlockProtocol is different from state's BlockProtocol
- [pex] #2959 Pex reactor logger uses
module=pex
๐ BUG FIXES:
- [p2p] #2968 Panic on transport error rather than continuing to run but not accept new connections
- [p2p] #2969 Fix mismatch in peer count between
/net_info
and the prometheus metrics - [rpc] #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 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
- [txindex/kv] #2925 Don't return false positives when range searching for a prefix of a tag value
- [types] #2938 Fix regression in v0.26.4 where we panic on empty genDoc.Validators
- โก๏ธ [types] #2941 Preserve val.Accum during ValidatorSet.Update to avoid it being reset to 0 every time a validator is updated
-
v0.26.4 Changes
November 27th, 2018
๐ Special thanks to external contributors on this release: @ackratos, @goolAdapter, @james-ray, @joe-bowman, @kostko, @nagarajmanjunath, @tomtau
Friendly reminder, we have a bug bounty program.
๐ FEATURES:
- [rpc] #2747 Enable subscription to tags emitted from
BeginBlock
/EndBlock
(@kostko) - [types] #2747 Add
ResultBeginBlock
andResultEndBlock
fields toEventDataNewBlock
andEventDataNewBlockHeader
to support subscriptions (@kostko) - [types] #2918 Add Marshal, MarshalTo, Unmarshal methods to various structs to support Protobuf compatibility (@nagarajmanjunath)
๐ IMPROVEMENTS:
- [config] #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.
- โก๏ธ [mempool] #2882 Add txs from Update to cache
- ๐ [mempool] #2891 Remove local int64 counter from being stored in every tx
- [node] #2866 Add ability to instantiate IPCVal (@joe-bowman)
๐ BUG FIXES:
- ๐ [blockchain] #2731 Retry both blocks if either is bad to avoid getting stuck during fast sync (@goolAdapter)
- [consensus] #2893 Use genDoc.Validators instead of state.NextValidators on replay when appHeight==0 (@james-ray)
- ๐ฒ [log] #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
- [rpc] #2808 Fix
accum
field in/validators
by callingIncrementAccum
if necessary - [rpc] #2811 Allow integer IDs in JSON-RPC requests (@tomtau)
- [txindex/kv] #2759 Fix tx.height range queries
- [txindex/kv] #2775 Order tx results by index if height is the same
- [txindex/kv] #2908 Don't return false positives when searching for a prefix of a tag value
- [rpc] #2747 Enable subscription to tags emitted from
-
v0.26.3 Changes
November 17th, 2018
๐ Special thanks to external contributors on this release: @danil-lashin, @kevlubkcm, @krhubert, @srmo
Friendly reminder, we have a bug bounty program.
๐ฅ BREAKING CHANGES:
- Go API
- [rpc] #2791 Functions that start HTTP servers are now blocking:
- Impacts
StartHTTPServer
,StartHTTPAndTLSServer
, andStartGRPCServer
- These functions now take a
net.Listener
instead of an address - [rpc] #2767 Subscribing to events
NewRound
andCompleteProposal
return new typesEventDataNewRound
andEventDataCompleteProposal
, respectively, instead of the genericEventDataRoundState
. (@kevlubkcm)
๐ FEATURES:
- ๐ฒ [log] #2843 New
log_format
config option, which can be set to 'plain' for colored text or 'json' for JSON output - [types] #2767 New event types EventDataNewRound (with ProposerInfo) and EventDataCompleteProposal (with BlockID). (@kevlubkcm)
๐ IMPROVEMENTS:
- ๐ [dep] #2844 Dependencies are no longer pinned to an exact version in the
Gopkg.toml:
- Serialization libs are allowed to vary by patch release
- Other libs are allowed to vary by minor release
- [p2p] #2857 "Send failed" is logged at debug level instead of error.
- [rpc] #2780 Add read and write timeouts to HTTP servers
- โก๏ธ [state] #2848 Make "Update to validators" msg value pretty (@danil-lashin)
๐ BUG FIXES:
- [consensus] #2819 Don't send proposalHearbeat if not a validator
- ๐ [docs] #2859 Fix ConsensusParams details in spec
- [libs/autofile] #2760 Comment out autofile permissions check - should fix running Tendermint on Windows
- 0๏ธโฃ [p2p] #2869 Set connection config properly instead of always using default
- ๐ [p2p/pex] #2802 Seed mode fixes:
- Only disconnect from inbound peers
- Use FlushStop instead of Sleep to ensure all messages are sent before disconnecting
- Go API
-
v0.26.2 Changes
November 15th, 2018
๐ Special thanks to external contributors on this release: @hleb-albau, @zhuzeyu
Friendly reminder, we have a bug bounty program.
๐ FEATURES:
- [rpc] #2582 Enable CORS on RPC API (@hleb-albau)
๐ BUG FIXES:
- [abci] #2748 Unlock mutex in localClient so even when app panics (e.g. during CheckTx), consensus continue working
- [abci] #2748 Fix DATA RACE in localClient
- โก๏ธ [amino] #2822 Update to v0.14.1 to support compiling on 32-bit platforms
- [rpc] #2748 Drain channel before calling Unsubscribe(All) in
/broadcast_tx_commit
-
v0.26.1 Changes
November 11, 2018
๐ Special thanks to external contributors on this release: @katakonst
Friendly reminder, we have a bug bounty program.
๐ IMPROVEMENTS:
- [consensus] #2704 Simplify valid POL round logic
- ๐ [docs] #2749 Deduplicate some ABCI docs
- ๐ฒ [mempool] More detailed log messages
๐ BUG FIXES:
- [autofile] #2703 Do not panic when checking Head size
- [crypto/merkle] #2756 Fix crypto/merkle ProofOperators.Verify to check bounds on keypath parts.
- [mempool] fix a bug where we create a WAL despite
wal_dir
being empty - [p2p] #2771 Fix
peer-id
label name topeer_id
in prometheus metrics - [p2p] #2797 Fix IDs in peer NodeInfo and require them for addresses in AddressBook
- ๐ [p2p] #2797 Do not close conn immediately after sending pex addrs in seed mode. Partial fix for #2092.
-
v0.26.0 Changes
November 2, 2018
๐ Special thanks to external contributors on this release: @bradyjoestar, @connorwstein, @goolAdapter, @HaoyangLiu, @james-ray, @overbool, @phymbert, @Slamper, @Uzair1995, @yutianwu.
Special thanks to @Slamper for a series of bug reports in our bug bounty ๐ program which are fixed in this release.
๐ This release is primarily about adding Version fields to various data structures, โก๏ธ optimizing consensus messages for signing and verification in restricted environments (like HSMs and the Ethereum Virtual Machine), and aligning the consensus code with the specification. It also includes our first take at a generalized merkle proof system, and ๐ changes the length of hashes used for hashing data structures from 20 to 32 bytes.
โฌ๏ธ See the [UPGRADING.md](UPGRADING.md#v0.26.0) for details on upgrading to the new ๐ version.
Please note that we are still making breaking changes to the protocols. While the new Version fields should help us to keep the software backwards compatible ๐ even while upgrading the protocols, we cannot guarantee that new releases will be compatible with old chains just yet. We expect there will be another breaking ๐ release or two before the Cosmos Hub launch, but we will otherwise be paying increasing attention to backwards compatibility. Thanks for bearing with us!
๐ฅ BREAKING CHANGES:
CLI/RPC/Config
- [config] #2232 Timeouts are now strings like "3s" and "100ms", not ints
- [config] #2505 Remove Mempool.RecheckEmpty (it was effectively useless anyways)
- [config] #2490
mempool.wal
is disabled by default - [privval] #2459 Split
SocketPVMsg
s implementations into Request and Response, where the Response may contain a error message (returned by the remote signer) - [state] #2644 Add Version field to State, breaking the format of State as encoded on disk.
- [rpc] #2298
/abci_query
takesprove
argument instead oftrusted
and switches the default behaviour toprove=false
- [rpc] #2654 Remove all
node_info.other.*_version
fields in/status
and/net_info
- [rpc] #2636 Remove
_params
suffix from fields inconsensus_params
.
Apps
- [abci] #2298 ResponseQuery.Proof is now a structured merkle.Proof, not just arbitrary bytes
- [abci] #2644 Add Version to Header and shift all fields by one
- [abci] #2662 Bump the field numbers for some
ResponseInfo
fields to make room forAppVersion
- [abci] #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 Timeouts are time.Duration, not ints
- [crypto/merkle & lite] #2298 Various changes to accomodate General Merkle trees
- [crypto/merkle] #2595 Remove all Hasher objects in favor of byte slices
- [crypto/merkle] #2635 merkle.SimpleHashFromTwoHashes is no longer exported
- [node] #2479 Remove node.RunForever
- [rpc/client] #2298
ABCIQueryOptions.Trusted
->ABCIQueryOptions.Prove
- [types] #2298 Remove
Index
andTotal
fields fromTxProof
. - [types] #2598
VoteTypeXxx
are now of typeSignedMsgType byte
and namedXxxType
, eg.PrevoteType
,PrecommitType
. - [types] #2636 Rename fields in ConsensusParams to remove
Params
suffixes - [types] #2735 Simplify Proposal message to align with spec
Blockchain Protocol
- [crypto/tmhash] #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 Require block.Time of the fist block to be genesis time
- [state] #2644 Require block.Version to match state.Version
- [types] Update SignBytes for
Vote
/Proposal
/Heartbeat
: - #2459 Use amino encoding instead of JSON in
SignBytes
. - #2598 Reorder fields and use fixed sized encoding.
- #2598 Change
Type
field fromstring
tobyte
and use newSignedMsgType
to enumerate. - [types] #2730 Use
same order for fields in
Vote
as in the SignBytes - [types] #2732 Remove the address field from the validator hash
- [types] #2644 Add Version struct to Header
- [types] #2609 ConsensusParams.Hash() is the hash of the amino encoded struct instead of the Merkle tree of the fields
- [types] #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 Use proto3
varint
encoding for ints that are usually unsigned (instead of zigzag encoding). - [types] #2636 Add Validator field to ConsensusParams (Used to control which pubkey types validators can use, by abci type).
P2P Protocol
- [consensus] #2652
Replace
CommitStepMessage
withNewValidBlockMessage
- [consensus] #2735 Simplify
Proposal
message to align with spec - [consensus] #2730
Add
Type
field toProposal
and use same order of fields as in the SignBytes for bothProposal
andVote
- [p2p] #2654 Add
ProtocolVersion
struct with protocol versions to top of DefaultNodeInfo and requireProtocolVersion.Block
to match during peer handshake
- [consensus] #2652
Replace
๐ FEATURES:
- [abci] #2557 Add
Codespace
field toResponse{CheckTx, DeliverTx, Query}
- [abci] #2662 Add
BlockVersion
andP2PVersion
toRequestInfo
- [crypto/merkle] #2298 General Merkle Proof scheme for chaining various types of Merkle trees together
- ๐ [docs/architecture] #1181 S plit immutable and mutable parts of priv_validator.json
๐ IMPROVEMENTS:
- โ Additional Metrics
- [config] #2232 Added ValidateBasic method, which performs basic checks
- โ
[crypto/ed25519] #2558 Switch to use latest
golang.org/x/crypto
through our fork at github.com/tendermint/crypto - ๐ฒ [libs/log] #2707 Add year to log format (@yutianwu)
- [tools] #2238 Binary dependencies are now locked to a specific git commit
๐ BUG FIXES:
- ๐ #2711 Validate all incoming reactor messages. Fixes various bugs due to negative ints.
- [autofile] #2428 Group.RotateFile need call Flush() before rename (@goolAdapter)
- ๐ [common] #2533 Fixed a bug in the
BitArray.Or
method - ๐ [common] #2506 Fixed a bug in the
BitArray.Sub
method (@james-ray) - [common] #2534 Fix
BitArray.PickRandom
to choose uniformly from true bits - [consensus] #1690 Wait for timeoutPrecommit before starting next round
- [consensus] #1745 Wait for Proposal or timeoutProposal before entering prevote
- [consensus] #2642 Only propose ValidBlock, not LockedBlock
- [consensus] #2642 Initialized ValidRound and LockedRound to -1
- [consensus] #1637 Limit the amount of evidence that can be included in a block
- [consensus] #2652 Ensure valid block property with faulty proposer
- [evidence] #2515 Fix db iter leak (@goolAdapter)
- [libs/event] #2518 Fix event concurrency flaw (@goolAdapter)
- ๐ฆ [node] #2434 Make node respond to signal interrupts while sleeping for genesis time
- [state] #2616 Pass nil to NewValidatorSet() when genesis file's Validators field is nil
- [p2p] #2555 Fix p2p switch FlushThrottle value (@goolAdapter)
- [p2p] #2668 Reconnect to originally dialed address (not self-reported address) for persistent peers
-
v0.25.0 Changes
September 22, 2018
๐ Special thanks to external contributors on this release: @scriptionist, @bradyjoestar, @WALL-E
๐ This release is mostly about the ConsensusParams - removing fields and enforcing MaxGas. ๐ It also addresses some issues found via security audit, removes various unused functions from
libs/common
, and implements ๐ ADR-012.Friendly reminder, we have a bug bounty program.
๐ฅ BREAKING CHANGES:
CLI/RPC/Config
Apps
- [mempool] #2360 Mempool tracks the
ResponseCheckTx.GasWanted
andConsensusParams.BlockSize.MaxGas
and enforces: GasWanted <= MaxGas
for every tx(sum of GasWanted in block) <= MaxGas
for block proposal
- [mempool] #2360 Mempool tracks the
Go API
๐ FEATURES:
- [rpc] #2415 New
/consensus_params?height=X
endpoint to query the consensus params at any height (@scriptonist) - [types] #1714 Add Address to GenesisValidator
- [metrics] #2337
consensus.block_interval_metrics
is now gauge, not histogram (you will be able to see spikes, if any) - [libs] #2286 Panic if
autofile
ordb/fsdb
permissions change from 0600.
๐ IMPROVEMENTS:
- [libs/db] #2371 Output error instead of panic when the given
db_backend
is not initialised (@bradyjoestar) - [mempool] #2399 Make mempool cache a proper LRU (@bradyjoestar)
- [p2p] #2126 Introduce PeerTransport interface to improve isolation of concerns
- [libs/common] #2326 Service returns ErrNotStarted
๐ BUG FIXES:
- [node] #2294 Delay starting node until Genesis time
- [consensus] #2048 Correct peer statistics for marking peer as good
- [rpc] #2460 StartHTTPAndTLSServer() now passes StartTLS() errors back to the caller rather than hanging forever.
- [p2p] #2047 Accept new connections asynchronously
- [tm-bench] #2410 Enforce minimum transaction size (@WALL-E)
-
v0.24.0 Changes
September 6th, 2018
๐ Special thanks to external contributors with PRs included in this release: ackratos, james-ray, bradyjoestar, peerlink, Ahmah2009, bluele, b00f.
๐ This release includes breaking upgrades in the block header, โก๏ธ including the long awaited changes for delaying validator set updates by one ๐ block to better support light clients. ๐ It also fixes enforcement on the maximum size of blocks, and includes a BFT timestamp in each block that can be safely used by applications. There are also some minor breaking changes to the rpc, config, and ABCI.
โฌ๏ธ See the [UPGRADING.md](UPGRADING.md#v0.24.0) for details on upgrading to the new ๐ version.
๐ From here on, breaking changes will be broken down to better reflect how users are affected by a change.
A few more breaking changes are in the works - each will come with a clear Architecture Decision Record (ADR) explaining the change. You can review ADRs ๐ here or in the open Pull Requests. You can also check in on the issues marked as ๐ฅ breaking.
๐ฅ BREAKING CHANGES:
CLI/RPC/Config
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
๐ 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
andstop-words
. - ๐จ [docs] #2249 Refactor, deduplicate, and improve the ABCI docs and spec (with thanks to @ttmc).
- โช [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
withdb_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)