You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

220 lines
6.1 KiB

8 years ago
  1. # Changelog
  2. ## 0.9.0 (March 6, 2017)
  3. BREAKING CHANGES:
  4. - Update ABCI to v0.4.0, where Query is now `Query(RequestQuery) ResponseQuery`, enabling precise proofs at particular heights:
  5. ```
  6. message RequestQuery{
  7. bytes data = 1;
  8. string path = 2;
  9. uint64 height = 3;
  10. bool prove = 4;
  11. }
  12. message ResponseQuery{
  13. CodeType code = 1;
  14. int64 index = 2;
  15. bytes key = 3;
  16. bytes value = 4;
  17. bytes proof = 5;
  18. uint64 height = 6;
  19. string log = 7;
  20. }
  21. ```
  22. - `BlockMeta` data type unifies its Hash and PartSetHash under a `BlockID`:
  23. ```
  24. type BlockMeta struct {
  25. BlockID BlockID `json:"block_id"` // the block hash and partsethash
  26. Header *Header `json:"header"` // The block's Header
  27. }
  28. ```
  29. - `tendermint gen_validator` command output is now pure JSON
  30. - `ValidatorSet` data type:
  31. - expose a `Proposer` field. Note this means the `Proposer` is persisted with the `State`.
  32. - change `.Proposer()` to `.GetProposer()`
  33. FEATURES:
  34. - New RPC endpoint `/commit?height=X` returns header and commit for block at height `X`
  35. - Client API for each endpoint, including mocks for testing
  36. IMPROVEMENTS:
  37. - `Node` is now a `BaseService`
  38. - Simplified starting Tendermint in-process from another application
  39. - Better organized Makefile
  40. - Scripts for auto-building binaries across platforms
  41. - Docker image improved, slimmed down (using Alpine), and changed from tendermint/tmbase to tendermint/tendermint
  42. - New repo files: `CONTRIBUTING.md`, Github `ISSUE_TEMPLATE`, `CHANGELOG.md`
  43. - Improvements on CircleCI for managing build/test artifacts
  44. - Handshake replay is doen through the consensus package, possibly using a mockApp
  45. - Graceful shutdown of RPC listeners
  46. - Tests for the PEX reactor and DialSeeds
  47. BUG FIXES:
  48. - Check peer.Send for failure before updating PeerState in consensus
  49. - Fix panic in `/dial_seeds` with invalid addresses
  50. - Fix proposer selection logic in ValidatorSet by taking the address into account in the `accumComparable`
  51. - Fix inconcistencies with `ValidatorSet.Proposer` across restarts by persisting it in the `State`
  52. ## 0.8.0 (January 13, 2017)
  53. BREAKING CHANGES:
  54. - New data type `BlockID` to represent blocks:
  55. ```
  56. type BlockID struct {
  57. Hash []byte `json:"hash"`
  58. PartsHeader PartSetHeader `json:"parts"`
  59. }
  60. ```
  61. - `Vote` data type now includes validator address and index:
  62. ```
  63. type Vote struct {
  64. ValidatorAddress []byte `json:"validator_address"`
  65. ValidatorIndex int `json:"validator_index"`
  66. Height int `json:"height"`
  67. Round int `json:"round"`
  68. Type byte `json:"type"`
  69. BlockID BlockID `json:"block_id"` // zero if vote is nil.
  70. Signature crypto.Signature `json:"signature"`
  71. }
  72. ```
  73. - Update TMSP to v0.3.0, where it is now called ABCI and AppendTx is DeliverTx
  74. - Hex strings in the RPC are now "0x" prefixed
  75. FEATURES:
  76. - New message type on the ConsensusReactor, `Maj23Msg`, for peers to alert others they've seen a Maj23,
  77. in order to track and handle conflicting votes intelligently to prevent Byzantine faults from causing halts:
  78. ```
  79. type VoteSetMaj23Message struct {
  80. Height int
  81. Round int
  82. Type byte
  83. BlockID types.BlockID
  84. }
  85. ```
  86. - Configurable block part set size
  87. - Validator set changes
  88. - Optionally skip TimeoutCommit if we have all the votes
  89. - Handshake between Tendermint and App on startup to sync latest state and ensure consistent recovery from crashes
  90. - GRPC server for BroadcastTx endpoint
  91. IMPROVEMENTS:
  92. - Less verbose logging
  93. - Better test coverage (37% -> 49%)
  94. - Canonical SignBytes for signable types
  95. - Write-Ahead Log for Mempool and Consensus via go-autofile
  96. - Better in-process testing for the consensus reactor and byzantine faults
  97. - Better crash/restart testing for individual nodes at preset failure points, and of networks at arbitrary points
  98. - Better abstraction over timeout mechanics
  99. BUG FIXES:
  100. - Fix memory leak in mempool peer
  101. - Fix panic on POLRound=-1
  102. - Actually set the CommitTime
  103. - Actually send BeginBlock message
  104. - Fix a liveness issues caused by Byzantine proposals/votes. Uses the new `Maj23Msg`.
  105. ## 0.7.4 (December 14, 2016)
  106. FEATURES:
  107. - Enable the Peer Exchange reactor with the `--pex` flag for more resilient gossip network (feature still in development, beware dragons)
  108. IMPROVEMENTS:
  109. - Remove restrictions on RPC endpoint `/dial_seeds` to enable manual network configuration
  110. ## 0.7.3 (October 20, 2016)
  111. IMPROVEMENTS:
  112. - Type safe FireEvent
  113. - More WAL/replay tests
  114. - Cleanup some docs
  115. BUG FIXES:
  116. - Fix deadlock in mempool for synchronous apps
  117. - Replay handles non-empty blocks
  118. - Fix race condition in HeightVoteSet
  119. ## 0.7.2 (September 11, 2016)
  120. BUG FIXES:
  121. - Set mustConnect=false so tendermint will retry connecting to the app
  122. ## 0.7.1 (September 10, 2016)
  123. FEATURES:
  124. - New TMSP connection for Query/Info
  125. - New RPC endpoints:
  126. - `tmsp_query`
  127. - `tmsp_info`
  128. - Allow application to filter peers through Query (off by default)
  129. IMPROVEMENTS:
  130. - TMSP connection type enforced at compile time
  131. - All listen/client urls use a "tcp://" or "unix://" prefix
  132. BUG FIXES:
  133. - Save LastSignature/LastSignBytes to `priv_validator.json` for recovery
  134. - Fix event unsubscribe
  135. - Fix fastsync/blockchain reactor
  136. ## 0.7.0 (August 7, 2016)
  137. BREAKING CHANGES:
  138. - Strict SemVer starting now!
  139. - Update to ABCI v0.2.0
  140. - Validation types now called Commit
  141. - NewBlock event only returns the block header
  142. FEATURES:
  143. - TMSP and RPC support TCP and UNIX sockets
  144. - Addition config options including block size and consensus parameters
  145. - New WAL mode `cswal_light`; logs only the validator's own votes
  146. - New RPC endpoints:
  147. - for starting/stopping profilers, and for updating config
  148. - `/broadcast_tx_commit`, returns when tx is included in a block, else an error
  149. - `/unsafe_flush_mempool`, empties the mempool
  150. IMPROVEMENTS:
  151. - Various optimizations
  152. - Remove bad or invalidated transactions from the mempool cache (allows later duplicates)
  153. - More elaborate testing using CircleCI including benchmarking throughput on 4 digitalocean droplets
  154. BUG FIXES:
  155. - Various fixes to WAL and replay logic
  156. - Various race conditions