Changelog History
Page 15
-
v0.12.0 Changes
October 27, 2017๐ฅ BREAKING CHANGES:
- rpc/client: websocket ResultsCh and ErrorsCh unified in ResponsesCh.
- rpc/client: ABCIQuery no longer takes
prove
- state: remove GenesisDoc from state.
- consensus: new binary WAL format provides efficiency and uses checksums to detect corruption
- use scripts/wal2json to convert to json for debugging
๐ FEATURES:
- new
Verifiers
pkg contains the tendermint light-client library (name subject to change)! - rpc:
/genesis
includes theapp_options
. - rpc:
/abci_query
takes an additionalheight
parameter to support historical queries. - rpc/client: new ABCIQueryWithOptions supports options like
trusted
(set false to get a proof) andheight
to query a historical height.
๐ IMPROVEMENTS:
- rpc:
/genesis
result includesapp_options
- rpc/lib/client: add jitter to reconnects.
- rpc/lib/types:
RPCError
satisfies theerror
interface.
๐ BUG FIXES:
- rpc/client: fix ws deadlock after stopping
- blockchain: fix panic on AddBlock when peer is nil
- mempool: fix sending on TxsAvailable when a tx has been invalidated
- consensus: dont run WAL catchup if we fast synced
-
v0.11.1 Changes
October 10, 2017๐ IMPROVEMENTS:
- blockchain/reactor: respondWithNoResponseMessage for missing height
๐ BUG FIXES:
- rpc: fixed client WebSocket timeout
- rpc: client now resubscribes on reconnection
- rpc: fix panics on missing params
- rpc: fix
/dump_consensus_state
to have normal json output (NOTE: technically breaking, but worth a bug fix label) - types: fixed out of range error in VoteSet.addVote
- consensus: fix wal autofile via https://github.com/tendermint/tmlibs/blob/master/CHANGELOG.md#032-october-2-2017
-
v0.11.0 Changes
September 22, 2017๐ฅ BREAKING:
- genesis file: validator
amount
is nowpower
- abci: Info, BeginBlock, InitChain all take structs
rpc: various changes to match JSONRPC spec (http://www.jsonrpc.org/specification), including breaking ones:
- requests that previously returned HTTP code 4XX now return 200 with an error code in the JSONRPC.
rpctypes.RPCResponse
uses newRPCError
type instead ofstring
.
cmd: if there is no genesis, exit immediately instead of waiting around for one to show.
types:
Signer.Sign
returns an error.state: every validator set change is persisted to disk, which required some changes to the
State
structure.p2p: new
p2p.Peer
interface used for all reactor methods (instead of*p2p.Peer
struct).
๐ FEATURES:
- rpc:
/validators?height=X
allows querying of validators at previous heights. - rpc: Leaving the
height
param empty for/block
,/validators
, and/commit
will return the value for the latest height.
๐ IMPROVEMENTS:
- docs: Moved all docs from the website and tools repo in, converted to
.rst
, and cleaned up for presentation ontendermint.readthedocs.io
๐ BUG FIXES:
- fix WAL openning issue on Windows
- genesis file: validator
-
v0.10.4 Changes
September 05, 2017๐ IMPROVEMENTS:
- ๐ docs: Added Slate docs to each rpc function (see rpc/core)
- ๐ docs: Ported all website docs to Read The Docs
- ๐ config: expose some p2p params to tweak performance: RecvRate, SendRate, and MaxMsgPacketPayloadSize
- โฌ๏ธ rpc: Upgrade the websocket client and server, including improved auto reconnect, and proper ping/pong
๐ BUG FIXES:
- consensus: fix panic on getVoteBitArray
- consensus: hang instead of panicking on byzantine consensus failures
- cmd: dont load config for version command
-
v0.10.3 Changes
August 10, 2017๐ FEATURES:
- control over empty block production:
- new flag,
--consensus.create_empty_blocks
; when set to false, blocks are only created when there are txs or when the AppHash changes. - new config option,
consensus.create_empty_blocks_interval
; an empty block is created after this many seconds. - in normal operation,
create_empty_blocks = true
andcreate_empty_blocks_interval = 0
, so blocks are being created all the time (as in all previous versions of tendermint). The number of empty blocks can be reduced by increasingcreate_empty_blocks_interval
or by settingcreate_empty_blocks = false
. - new
TxsAvailable()
method added to Mempool that returns a channel which fires when txs are available. - new heartbeat message added to consensus reactor to notify peers that a node is waiting for txs before entering propose step.
- new flag,
- ๐ rpc: Add
syncing
field to response returned by/status
. Istrue
while in fast-sync mode.
๐ IMPROVEMENTS:
- ๐ various improvements to documentation and code comments
๐ BUG FIXES:
- mempool: pass height into constructor so it doesn't always start at 0
- control over empty block production:
-
v0.10.2 Changes
July 10, 2017๐ FEATURES:
- ๐ค Enable lower latency block commits by adding consensus reactor sleep durations and p2p flush throttle timeout to the config
๐ IMPROVEMENTS:
- ๐ฒ More detailed logging in the consensus reactor and state machine
- ๐ More in-code documentation for many exposed functions, especially in consensus/reactor.go and p2p/switch.go
- ๐ Improved readability for some function definitions and code blocks with long lines
-
v0.10.1 Changes
June 28, 2017๐ FEATURES:
- ๐ Use
--trace
to get stack traces for logged errors - types: GenesisDoc.ValidatorHash returns the hash of the genesis validator set
- ๐ types: GenesisDocFromFile parses a GenesiDoc from a JSON file
๐ IMPROVEMENTS:
- โ Add a Code of Conduct
- Variety of improvements as suggested by
megacheck
tool - โ rpc: deduplicate tests between rpc/client and rpc/tests
- 0๏ธโฃ rpc: addresses without a protocol prefix default to
tcp://
.http://
is also accepted as an alias fortcp://
- cmd: commands are more easily reuseable from other tools
- ๐ DOCKER: automate build/push
๐ BUG FIXES:
- ๐ Fix log statements using keys with spaces (logger does not currently support spaces)
- rpc: set logger on websocket connection
- rpc: fix ws connection stability by setting write deadline on pings
- ๐ Use
-
v0.10.0 Changes
June 02, 2017โก๏ธ 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
-
v0.9.2 Changes
April 26, 2017๐ BUG FIXES:
- ๐ Fix bug in
ResetPrivValidator
where we were using the global config and log (causing external consumers, eg. basecoin, to fail).
- ๐ Fix bug in
-
v0.9.1 Changes
April 21, 2017๐ FEATURES:
- Transaction indexing - txs are indexed by their hash using a simple key-value store; easily extended to more advanced indexers
- ๐ New
/tx?hash=X
endpoint to query for transactions and their DeliverTx result by hash. Optionally returns a proof of the tx's inclusion in the block - โ
tendermint testnet
command initializes files for a testnet
๐ IMPROVEMENTS:
- CLI now uses Cobra framework
- TMROOT is now TMHOME (TMROOT will stop working in 0.10.0)
/broadcast_tx_XXX
also returns the Hash (can be used to query for the tx)/broadcast_tx_commit
also returns the height the block was committed in- ABCIResponses struct persisted to disk before calling Commit; makes handshake replay much cleaner
- WAL uses #ENDHEIGHT instead of #HEIGHT (#HEIGHT will stop working in 0.10.0)
- ๐ Peers included via
--seeds
, underseeds
in the config, or in/dial_seeds
are now persistent, and will be reconnected to if the connection breaks
๐ BUG FIXES:
- ๐ Fix bug in fast-sync where we stop syncing after a peer is removed, even if they're re-added later
- ๐ Fix handshake replay to handle validator set changes and results of DeliverTx when we crash after app.Commit but before state.Save()