All Versions
157
Latest Version
Avg Release Cycle
26 days
Latest Release
-

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 the app_options .
    • rpc: /abci_query takes an additional height parameter to support historical queries.
    • rpc/client: new ABCIQueryWithOptions supports options like trusted (set false to get a proof) and height to query a historical height.

    ๐Ÿ‘Œ IMPROVEMENTS:

    • rpc: /genesis result includes app_options
    • rpc/lib/client: add jitter to reconnects.
    • rpc/lib/types: RPCError satisfies the error 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:

  • v0.11.0 Changes

    September 22, 2017

    ๐Ÿ’ฅ BREAKING:

    • genesis file: validator amount is now power
    • 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 new RPCError type instead of string.
    • 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 on tendermint.readthedocs.io

    ๐Ÿ› BUG FIXES:

    • fix WAL openning issue on Windows
  • 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 and create_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 increasing create_empty_blocks_interval or by setting create_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.
    • ๐Ÿ”€ rpc: Add syncing field to response returned by /status. Is true 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
  • 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 for tcp://
    • 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
  • 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 a Config 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
      
    • Logger

      • Replace static log15 logger with a simple interface, and provide a new implementation using go-kit. <!-- markdown-link-check-disable-next-line --> ๐Ÿ‘€ See our new logging library and blog post for more details
      • Levels warn and notice are removed (you may need to change them in your config.toml!)
      • Change some function and method signatures to accept a logger
    • JSON serialization:

      • Replace [TypeByte, Xxx] with {"type": "some-type", "data": Xxx} in RPC and all .json files by using go-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 to data.Bytes in all serialized types (for hex encoding)
      • Lowercase the JSON tags in ValidatorSet fields
      • Introduce EventDataInner for serializing events
    • 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 with unsafe. Use the --rpc.unsafe flag to enable.

    ๐Ÿ”‹ FEATURES:

    • ๐Ÿ“ฆ Per-module log levels. For instance, the new default is state:info,*:error, which means the state package logs at info level, and everything else logs at error 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 and pub_key fields in priv_validator.json and overwrite them with the values derrived from the priv_key

    ๐Ÿ‘Œ IMPROVEMENTS:

    • ๐Ÿ”€ Merge tendermint/go-p2p -> tendermint/tendermint/p2p and tendermint/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, except go-crypto and go-wire, are merged under tmlibs
    • 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 for go-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).
  • 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, under seeds 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()