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.
 
 
 
 
 
 

6.1 KiB

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