|
|
@ -0,0 +1,220 @@ |
|
|
|
# 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 |