221 lines
6.1 KiB
Markdown
221 lines
6.1 KiB
Markdown
# Changelog
|
|
|
|
## 0.9.0 (March 6, 2017)
|
|
|
|
BREAKING CHANGES:
|
|
|
|
- Update ABCI to v0.4.0, where Query is now `Query(RequestQuery) ResponseQuery`, enabling precise proofs at particular heights:
|
|
|
|
```
|
|
message RequestQuery{
|
|
bytes data = 1;
|
|
string path = 2;
|
|
uint64 height = 3;
|
|
bool prove = 4;
|
|
}
|
|
|
|
message ResponseQuery{
|
|
CodeType code = 1;
|
|
int64 index = 2;
|
|
bytes key = 3;
|
|
bytes value = 4;
|
|
bytes proof = 5;
|
|
uint64 height = 6;
|
|
string log = 7;
|
|
}
|
|
```
|
|
|
|
|
|
- `BlockMeta` data type unifies its Hash and PartSetHash under a `BlockID`:
|
|
|
|
```
|
|
type BlockMeta struct {
|
|
BlockID BlockID `json:"block_id"` // the block hash and partsethash
|
|
Header *Header `json:"header"` // The block's Header
|
|
}
|
|
```
|
|
|
|
- `tendermint gen_validator` command output is now pure JSON
|
|
- `ValidatorSet` data type:
|
|
- expose a `Proposer` field. Note this means the `Proposer` is persisted with the `State`.
|
|
- change `.Proposer()` to `.GetProposer()`
|
|
|
|
FEATURES:
|
|
|
|
- New RPC endpoint `/commit?height=X` returns header and commit for block at height `X`
|
|
- Client API for each endpoint, including mocks for testing
|
|
|
|
IMPROVEMENTS:
|
|
|
|
- `Node` is now a `BaseService`
|
|
- Simplified starting Tendermint in-process from another application
|
|
- Better organized Makefile
|
|
- Scripts for auto-building binaries across platforms
|
|
- Docker image improved, slimmed down (using Alpine), and changed from tendermint/tmbase to tendermint/tendermint
|
|
- New repo files: `CONTRIBUTING.md`, Github `ISSUE_TEMPLATE`, `CHANGELOG.md`
|
|
- Improvements on CircleCI for managing build/test artifacts
|
|
- Handshake replay is doen through the consensus package, possibly using a mockApp
|
|
- Graceful shutdown of RPC listeners
|
|
- Tests for the PEX reactor and DialSeeds
|
|
|
|
BUG FIXES:
|
|
|
|
- Check peer.Send for failure before updating PeerState in consensus
|
|
- Fix panic in `/dial_seeds` with invalid addresses
|
|
- Fix proposer selection logic in ValidatorSet by taking the address into account in the `accumComparable`
|
|
- Fix inconcistencies with `ValidatorSet.Proposer` across restarts by persisting it in the `State`
|
|
|
|
|
|
## 0.8.0 (January 13, 2017)
|
|
|
|
BREAKING CHANGES:
|
|
|
|
- New data type `BlockID` to represent blocks:
|
|
|
|
```
|
|
type BlockID struct {
|
|
Hash []byte `json:"hash"`
|
|
PartsHeader PartSetHeader `json:"parts"`
|
|
}
|
|
```
|
|
|
|
- `Vote` data type now includes validator address and index:
|
|
|
|
```
|
|
type Vote struct {
|
|
ValidatorAddress []byte `json:"validator_address"`
|
|
ValidatorIndex int `json:"validator_index"`
|
|
Height int `json:"height"`
|
|
Round int `json:"round"`
|
|
Type byte `json:"type"`
|
|
BlockID BlockID `json:"block_id"` // zero if vote is nil.
|
|
Signature crypto.Signature `json:"signature"`
|
|
}
|
|
```
|
|
|
|
- Update TMSP to v0.3.0, where it is now called ABCI and AppendTx is DeliverTx
|
|
- Hex strings in the RPC are now "0x" prefixed
|
|
|
|
|
|
FEATURES:
|
|
|
|
- New message type on the ConsensusReactor, `Maj23Msg`, for peers to alert others they've seen a Maj23,
|
|
in order to track and handle conflicting votes intelligently to prevent Byzantine faults from causing halts:
|
|
|
|
```
|
|
type VoteSetMaj23Message struct {
|
|
Height int
|
|
Round int
|
|
Type byte
|
|
BlockID types.BlockID
|
|
}
|
|
```
|
|
|
|
- Configurable block part set size
|
|
- Validator set changes
|
|
- Optionally skip TimeoutCommit if we have all the votes
|
|
- Handshake between Tendermint and App on startup to sync latest state and ensure consistent recovery from crashes
|
|
- GRPC server for BroadcastTx endpoint
|
|
|
|
IMPROVEMENTS:
|
|
|
|
- Less verbose logging
|
|
- Better test coverage (37% -> 49%)
|
|
- Canonical SignBytes for signable types
|
|
- Write-Ahead Log for Mempool and Consensus via go-autofile
|
|
- Better in-process testing for the consensus reactor and byzantine faults
|
|
- Better crash/restart testing for individual nodes at preset failure points, and of networks at arbitrary points
|
|
- Better abstraction over timeout mechanics
|
|
|
|
BUG FIXES:
|
|
|
|
- Fix memory leak in mempool peer
|
|
- Fix panic on POLRound=-1
|
|
- Actually set the CommitTime
|
|
- Actually send BeginBlock message
|
|
- Fix a liveness issues caused by Byzantine proposals/votes. Uses the new `Maj23Msg`.
|
|
|
|
|
|
## 0.7.4 (December 14, 2016)
|
|
|
|
FEATURES:
|
|
|
|
- Enable the Peer Exchange reactor with the `--pex` flag for more resilient gossip network (feature still in development, beware dragons)
|
|
|
|
IMPROVEMENTS:
|
|
|
|
- Remove restrictions on RPC endpoint `/dial_seeds` to enable manual network configuration
|
|
|
|
## 0.7.3 (October 20, 2016)
|
|
|
|
IMPROVEMENTS:
|
|
|
|
- Type safe FireEvent
|
|
- More WAL/replay tests
|
|
- Cleanup some docs
|
|
|
|
BUG FIXES:
|
|
|
|
- Fix deadlock in mempool for synchronous apps
|
|
- Replay handles non-empty blocks
|
|
- Fix race condition in HeightVoteSet
|
|
|
|
## 0.7.2 (September 11, 2016)
|
|
|
|
BUG FIXES:
|
|
|
|
- Set mustConnect=false so tendermint will retry connecting to the app
|
|
|
|
## 0.7.1 (September 10, 2016)
|
|
|
|
FEATURES:
|
|
|
|
- New TMSP connection for Query/Info
|
|
- New RPC endpoints:
|
|
- `tmsp_query`
|
|
- `tmsp_info`
|
|
- Allow application to filter peers through Query (off by default)
|
|
|
|
IMPROVEMENTS:
|
|
|
|
- TMSP connection type enforced at compile time
|
|
- All listen/client urls use a "tcp://" or "unix://" prefix
|
|
|
|
BUG FIXES:
|
|
|
|
- Save LastSignature/LastSignBytes to `priv_validator.json` for recovery
|
|
- Fix event unsubscribe
|
|
- Fix fastsync/blockchain reactor
|
|
|
|
## 0.7.0 (August 7, 2016)
|
|
|
|
BREAKING CHANGES:
|
|
|
|
- Strict SemVer starting now!
|
|
- Update to ABCI v0.2.0
|
|
- Validation types now called Commit
|
|
- NewBlock event only returns the block header
|
|
|
|
|
|
FEATURES:
|
|
|
|
- TMSP and RPC support TCP and UNIX sockets
|
|
- Addition config options including block size and consensus parameters
|
|
- New WAL mode `cswal_light`; logs only the validator's own votes
|
|
- New RPC endpoints:
|
|
- for starting/stopping profilers, and for updating config
|
|
- `/broadcast_tx_commit`, returns when tx is included in a block, else an error
|
|
- `/unsafe_flush_mempool`, empties the mempool
|
|
|
|
|
|
IMPROVEMENTS:
|
|
|
|
- Various optimizations
|
|
- Remove bad or invalidated transactions from the mempool cache (allows later duplicates)
|
|
- More elaborate testing using CircleCI including benchmarking throughput on 4 digitalocean droplets
|
|
|
|
BUG FIXES:
|
|
|
|
- Various fixes to WAL and replay logic
|
|
- Various race conditions
|