Changelog History
Page 9
-
v0.31.8 Changes
July 29, 2019July 29, 2019
๐ This releases fixes one bug in the PEX reactor and adds a
recover
to the Go's ABCI server, which allows it to properly cleanup.๐ IMPROVEMENTS:
- [abci] #3809 Recover from application panics in
server/socket_server.go
to allow socket cleanup (@ruseinov)
๐ BUG FIXES:
- [p2p] #3338 Prevent "sent next PEX request too soon" errors by not calling ensurePeers outside of ensurePeersRoutine
- [abci] #3809 Recover from application panics in
-
v0.31.7 Changes
June 04, 2019June 3, 2019
๐ This releases fixes a regression in the mempool introduced in v0.31.6. The regression caused the invalid committed txs to be proposed in blocks over and over again.
๐ BUG FIXES:
- ๐ [mempool] #3699 Remove all committed txs from the mempool. This reverts the change from v0.31.6 where we only remove valid txs from the mempool. Note this means malicious proposals can cause txs to be dropped from the mempools of other nodes by including them in blocks before they are valid. See #3322.
-
v0.31.6 Changes
May 30, 2019May 31st, 2019
๐ This release contains many fixes and improvements, primarily for p2p functionality. ๐ It also fixes a security issue in the mempool package.
๐ With this release, Tendermint now supports boltdb, although ๐ in experimental mode. Feel free to try and report to us any findings/issues. ๐ Note also that the build tags for compiling CLevelDB have changed.
๐ Special thanks to external contributors on this release: @guagualvcha, @james-ray, @gregdhill, @climber73, @yutianwu, @carlosflrs, @defunctzombie, @leoluk, @needkane, @CrocdileChan
๐ฅ BREAKING CHANGES:
- Go API
- [libs/common] Removed deprecated
PanicSanity
,PanicCrisis
,PanicConsensus
andPanicQ
- [mempool, state] #2659
Mempool
now an interface that lives in the mempool package. See issue and PR for more details. - [p2p] #3346
Reactor#InitPeer
method is added toReactor
interface - [types] #1648
Commit#VoteSignBytes
signature was changed
- [libs/common] Removed deprecated
๐ FEATURES:
- [node] #2659 Add
node.Mempool()
method, which allows you to access mempool - ๐ [libs/db] #3604 Add experimental support for bolt db (etcd's fork of bolt) (@CrocdileChan)
๐ IMPROVEMENTS:
- [cli] #3585 Add
--keep-addr-book
option tounsafe_reset_all
cmd to not clear the address book (@climber73) - [cli] #3160 Add
--config=<path-to-config>
option totestnet
cmd (@gregdhill) - [cli] #3661 Add
--hostname-suffix
,--hostname
and--random-monikers
options totestnet
cmd for greater peer address/identity generation flexibility. - [crypto] #3672 Return more info in the
AddSignatureFromPubKey
error - [cs/replay] #3460 Check appHash for each block
- [libs/db] #3611 Conditional compilation
- Use
cleveldb
tag instead ofgcc
to compile Tendermint with CLevelDB or usemake build_c
/make install_c
(full instructions can be found at https://docs.tendermint.com/master/introduction/install.html#compile-with-cleveldb-support) - Use
boltdb
tag to compile Tendermint with bolt db
- Use
- [node] #3362 Return an error if
persistent_peers
list is invalid (except when IP lookup fails) - ๐ฒ [p2p] #3463 Do not log "Can't add peer's address to addrbook" error for a private peer (@guagualvcha)
- [p2p] #3531 Terminate session on nonce wrapping (@climber73)
- ๐ [pex] #3647 Dial seeds, if any, instead of crawling peers first (@defunctzombie)
- ๐ [rpc] #3534 Add support for batched requests/responses in JSON RPC
- ๐ [rpc] #3362
/dial_seeds
&/dial_peers
return errors if addresses are incorrect (except when IP lookup fails)
๐ BUG FIXES:
- [consensus] #3067 Fix replay from appHeight==0 with validator set changes (@james-ray)
- [consensus] #3304 Create a peer state in consensus reactor before the peer is started (@guagualvcha)
- [lite] #3669 Add context parameter to RPC Handlers in proxy routes (@yutianwu)
- ๐ [mempool] #3322 When a block is committed, only remove committed txs from the mempool
that were valid (ie.
ResponseDeliverTx.Code == 0
) - ๐ [p2p] #3338 Ensure
RemovePeer
is always called beforeInitPeer
(upon a peer reconnecting to our node) - ๐ [p2p] #3532 Limit the number of attempts to connect to a peer in seed mode to 16 (as a result, the node will stop retrying after a 35 hours time window)
- ๐ [p2p] #3362 Allow inbound peers to be persistent, including for seed nodes.
- ๐ [pex] #3603 Dial seeds when addrbook needs more addresses (@defunctzombie)
OTHERS:
- ๐ [networks] fixes ansible integration script (@carlosflrs)
- Go API
-
v0.31.5 Changes
April 16, 2019April 16th, 2019
๐ This release fixes a regression from v0.31.4 where, in existing chains that โฌ๏ธ were upgraded,
/validators
could return an empty validator set. This is true for almost all heights, given the validator set remains the same.๐ Special thanks to external contributors on this release: @brapse, @guagualvcha, @dongsam, @phucc
๐ IMPROVEMENTS:
- [libs/common]
CMap
: slight optimization inKeys()
andValues()
(@phucc) - [gitignore] gitignore: add .vendor-new (@dongsam)
๐ BUG FIXES:
- [libs/common]
-
v0.31.4 Changes
April 12th, 2019
๐ This release fixes a regression from v0.31.3 which used the peer's
SocketAddr
to add the peer to the address book. This swallowed the peer's self-reported port which is important in case of reconnect. It brings backNetAddress()
toNodeInfo
and uses it instead ofSocketAddr
for adding peers. โ Additionally, it improves response time on the/validators
or/status
RPC endpoints. ๐ As a side-effect it makes these RPC endpoint more difficult to DoS and fixes a performance degradation inExecCommitBlock
. Also, it contains an ADR that proposes decoupling the responsibility for peer behaviour from thep2p.Switch
(by @brapse).๐ Special thanks to external contributors on this release: @brapse, @guagualvcha, @mydring
๐ IMPROVEMENTS:
- ๐ฒ [p2p] #3463 Do not log "Can't add peer's address to addrbook" error for a private peer
- โ๏ธ [p2p] #3547 Fix a couple of annoying typos (@mdyring)
๐ BUG FIXES:
- ๐ [docs] #3514 Fix block.Header.Time description (@melekes)
- [p2p] #2716 Check if we're already connected to peer right before dialing it (@melekes)
- [p2p] #3545 Add back
NetAddress()
toNodeInfo
and use it instead of peer'sSocketAddr()
when adding a peer to thePEXReactor
(potential fix for #3532) - [state] #3438
Persist validators every 100000 blocks even if no changes to the set
occurred (@guagualvcha). This
1) Prevents possible DoS attack using
/validators
or/status
RPC endpoints. Before response time was growing linearly with height if no changes were made to the validator set. 2) Fixes performance degradation inExecCommitBlock
where we callLoadValidators
for eachEvidence
in the block.
-
v0.31.3 Changes
April 1st, 2019
๐ This release includes two security sensitive fixes: it ensures generated private keys are valid, and it prevents certain DNS lookups that would cause the node to panic if the lookup failed.
๐ฅ BREAKING CHANGES:
- Go API
- [crypto/secp256k1] #3439
The
secp256k1.GenPrivKeySecp256k1
function has changed to guarantee that it returns a valid key, which means it will return a different private key than in previous versions for the same secret.
- [crypto/secp256k1] #3439
The
๐ BUG FIXES:
- [crypto/secp256k1] #3439 Ensure generated private keys are valid by randomly sampling until a valid key is found. Previously, it was possible (though rare!) to generate keys that exceeded the curve order. Such keys would lead to invalid signatures.
- [p2p] #3522 Memoize socket address in peer connections to avoid DNS lookups. Previously, failed DNS lookups could cause the node to panic.
- Go API
-
v0.31.2 Changes
March 30th, 2019
๐ This release fixes a regression from v0.31.1 where Tendermint panics under mempool load for external ABCI apps.
๐ Special thanks to external contributors on this release: @guagualvcha
๐ฅ BREAKING CHANGES:
CLI/RPC/Config
Apps
Go API
- [libs/autofile] #3504 Remove unused code in autofile package. Deleted functions:
Group.Search
,Group.FindLast
,GroupReader.ReadLine
,GroupReader.PushLine
,MakeSimpleSearchFunc
(@guagualvcha)
- [libs/autofile] #3504 Remove unused code in autofile package. Deleted functions:
Blockchain Protocol
P2P Protocol
๐ FEATURES:
๐ IMPROVEMENTS:
- ๐ [circle] #3497 Move release management to CircleCI
๐ BUG FIXES:
- [mempool] #3512 Fix panic from concurrent access to txsMap, a regression for external ABCI apps introduced in v0.31.1
-
v0.31.1 Changes
March 27th, 2019
๐ This release contains a major improvement for the mempool that reduce the amount of sent data by about 30% ๐ (see some numbers below). ๐ It also fixes a memory leak in the mempool and adds TLS support to the RPC server by providing a certificate and key in the config.
๐ Special thanks to external contributors on this release: @brapse, @guagualvcha, @HaoyangLiu, @needkane, @TraceBundy
๐ฅ BREAKING CHANGES:
CLI/RPC/Config
Apps
Go API
Blockchain Protocol
P2P Protocol
๐ FEATURES:
- [rpc] #3419 Start HTTPS server if
rpc.tls_cert_file
andrpc.tls_key_file
are provided in the config (@guagualvcha)
๐ IMPROVEMENTS:
- ๐ [docs] #3140 Formalize proposer election algorithm properties
- ๐ [docs] #3482 Fix broken links (@brapse)
- [mempool] #2778 No longer send txs back to peers who sent it to you.
Also, limit to 65536 active peers.
This vastly improves the bandwidth consumption of nodes.
โ
For instance, for a 4 node localnet, in a test sending 250byte txs for 120 sec. at 500 txs/sec (total of 15MB):
- total bytes received from 1st node:
- before: 42793967 (43MB)
- after: 30003256 (30MB)
- total bytes sent to 1st node:
- before: 30569339 (30MB)
- after: 19304964 (19MB)
- total bytes received from 1st node:
- [p2p] #3475 Simplify
GetSelectionWithBias
for addressbook (@guagualvcha) - [rpc/lib/client] #3430 Disable compression for HTTP client to prevent GZIP-bomb DoS attacks (@guagualvcha)
๐ BUG FIXES:
-
v0.31.0 Changes
March 16th, 2019
๐ Special thanks to external contributors on this release: @danil-lashin, @guagualvcha, @siburu, @silasdavis, @srmo, @Stumble, @svenstaro
๐ This release is primarily about the new pubsub implementation, dubbed
pubsub 2.0
, and related changes, like configurable limits on the number of active RPC subscriptions at a time (max_subscription_clients
). Pubsub 2.0 is an improved version of the older pubsub that is non-blocking and has a nicer API. Note the improved pubsub API also resulted in some improvements to the HTTPClient interface and the API for WebSocket subscriptions. This release also adds a configurable limit to the mempool size (max_txs_bytes
, default 1GB) and a configurable timeout for the/broadcast_tx_commit
endpoint.๐ See the v0.31.0 Milestone for more details.
Friendly reminder, we have a bug bounty program.
๐ฅ BREAKING CHANGES:
CLI/RPC/Config
- [config] #2920 Remove
consensus.blocktime_iota
parameter - [rpc] #3227 New PubSub design does not block on clients when publishing messages. Slow clients may miss messages and receive an error, terminating the subscription.
- [rpc] #3269 Limit number of unique clientIDs with open subscriptions. Configurable via
rpc.max_subscription_clients
- [rpc] #3269 Limit number of unique queries a given client can subscribe to at once. Configurable via
rpc.max_subscriptions_per_client
. - [rpc] #3435 Default ReadTimeout and WriteTimeout changed to 10s. WriteTimeout can increased by setting
rpc.timeout_broadcast_tx_commit
in the config. - [rpc/client] #3269 Update
EventsClient
interface to reflect new pubsub/eventBus API ADR-33. This includesSubscribe
,Unsubscribe
, andUnsubscribeAll
methods.
- [config] #2920 Remove
Apps
Go API
- [libs/common] TrapSignal accepts logger as a first parameter and does not block anymore
- previously it was dumping "captured ..." msg to os.Stdout
- TrapSignal should not be responsible for blocking thread of execution
- [libs/db] #3397 Add possibility to
Close()
Batch
to prevent memory leak when using ClevelDB. (@Stumble) - [types] #3354 Remove RoundState from EventDataRoundState
- [rpc] #3435
StartHTTPServer
/StartHTTPAndTLSServer
now require a Config (userpcserver.DefaultConfig
)
Blockchain Protocol
P2P Protocol
๐ FEATURES:
- ๐ง [config] #3269 New configuration values for controlling RPC subscriptions:
rpc.max_subscription_clients
sets the maximum number of unique clients with open subscriptionsrpc.max_subscriptions_per_client
sets the maximum number of unique subscriptions from a given clientrpc.timeout_broadcast_tx_commit
sets the time to wait for a tx to be committed during/broadcast_tx_commit
- [types] #2920 Add
time_iota_ms
to block's consensus parameters (not exposed to the application) - [lite] #3269 Add
/unsubscribe_all
endpoint to unsubscribe from all events - [mempool] #3079 Bound mempool memory usage via the
mempool.max_txs_bytes
configuration value. Set to 1GB by default. The mempool's currenttxs_total_bytes
is exposed viatotal_bytes
field in/num_unconfirmed_txs
and/unconfirmed_txs
RPC endpoints.
๐ IMPROVEMENTS:
- ๐ [all] #3385, #3386 Various linting improvements
- ๐ฆ [crypto] #3371 Copy in secp256k1 package from go-ethereum instead of importing go-ethereum (@silasdavis)
- ๐ [deps] #3382 Don't pin repos without releases
- โก๏ธ [deps] #3357, #3389, #3392 Update gogo/protobuf, golang/protobuf, levigo, golang.org/x/crypto
- [libs/common] #3238 exit with zero (0) code upon receiving SIGTERM/SIGINT
- [libs/db] #3378 CLevelDB#Stats now returns the following properties:
- leveldb.num-files-at-level{n}
- leveldb.stats
- leveldb.sstables
- leveldb.blockpool
- leveldb.cachedblock
- leveldb.openedtables
- leveldb.alivesnaps
- leveldb.aliveiters
- ๐จ [privval] #3351 First part of larger refactoring that clarifies and separates concerns in the privval package.
๐ BUG FIXES:
- [blockchain] #3358 Fix timer leak in
BlockPool
(@guagualvcha) - โ
[cmd] #3408 Fix
testnet
command's panic when creating non-validator configs (using--n
flag) (@srmo) - [libs/db/remotedb/grpcdb] #3402 Close Iterator/ReverseIterator after use
- ๐ [libs/pubsub] #951, #1880 Use non-blocking send when dispatching messages ADR-33
- [lite] #3364 Fix
/validators
and/abci_query
proxy endpoints (@guagualvcha) - [p2p/conn] #3347 Reject all-zero shared secrets in the Diffie-Hellman step of secret-connection
- [p2p] #3369 Do not panic when filter times out
- [p2p] #3359 Fix reconnecting report duplicate ID error due to race condition between adding peer to peerSet and starting it (@guagualvcha)
-
v0.30.2 Changes
March 10th, 2019
๐ This release fixes a CLevelDB memory leak. It was happening because we were not ๐ closing the WriteBatch object after use. See levigo's godoc for the Close method. Special thanks goes to @Stumble who both reported an issue in cosmos-sdk and provided a ๐ fix here.
๐ฅ BREAKING CHANGES:
- Go API
- [libs/db] #3842 Add Close() method to Batch interface (@Stumble)
๐ BUG FIXES:
- [libs/db] #3842 Fix CLevelDB memory leak (@Stumble)
- Go API