2018-06-12
BREAKING CHANGES:
- [abci-cli] Change rpc port from 46658 to 26658.
- [examples] Change rpc port from 46658 to 26658.
June 6, 2018
BREAKING CHANGES:
- [example/dummy] Remove. See example/kvstore
- [types] Upgrade many messages:
- RequestInitChain takes all fields from a Genesis file
- RequestBeginBlock provides a list of all validators and whether or not they signed
- Header: remove some fields, add proposer
- BlockID, PartSetHeader: remove
- Validator: includes address
- PubKey: new message with
type
anddata
- Evidence: add type and more fields
FEATURES:
- [types] Add some fields
- ResponseInitChain includes ConsensusParams and Validators
- ResponseBeginBlock includes tags
- ResponseEndBlock includes tags
IMPROVEMENTS:
- Update tmlibs dep
Hot fix to remove omitempty
from fee
and to actually run make protoc
FEATURES:
- [types] ResponseCheckTx and ResponseDeliverTx are now the same.
- [example]
dummy
is duplicated askvstore
.
IMPROVEMENTS:
- glide -> Godep
- remove pkg/errors
- improve specification.rst
BREAKING CHANGES:
- [types] Socket messages are length prefixed with real protobuf Varint instead of
<len of len><big endian len>
- [types] Drop gogo custom type magic with data.Bytes
- [types] Use
[(gogoproto.nullable)=false]
to prefer value over pointer for the types - [types] Field re-ordering ...
- [types] KVPair: replace with common.KVPair. Add common KI64Pair too (for fees).
- [types] CheckTx/DeliverTx: updates for tags, gas, fees
- [types] Commit: Remove code and log from Commit
- [types] SetOption: Remove code
- [example/dummy] remove dependence on IAVL
- [types] IsOk/IsErr: methods removed
FEATURES:
- [types] SetOption/Query/CheckTx/DeliverTx: Add
info string
field to responses - [types] RequestInitChain.AppStateBytes for app's genesis state
IMPROVEMENTS:
- [all] remove go-wire and go-crypto dependencies :)
BREAKING CHANGES:
- [types] Id -> ID
- [types] ResponseEndBlock: renamed Diffs field to ValidatorUpdates
- [types] changed protobuf field indices for Request and Response oneof types
FEATURES:
- [types] ResponseEndBlock: added ConsensusParamUpdates
BUG FIXES:
- [cmd] fix console and batch commands to use a single persistent connection
BREAKING CHANGES:
- [client] all XxxSync methods now return (ResponseXxx, error)
- [types] all methods on Application interface now take RequestXxx and return (ResponseXxx, error).
- Except
CheckTx
/DeliverTx
, which takes atx []byte
argument. - Except
Commit
, which takes no arguments.
- Except
- [types] removed Result and ResultQuery
- [types] removed CodeType - only
0 == OK
is defined here, everything else is left to convention at the application level - [types] switched to using
gogo/protobuf
for code generation - [types] use
customtype
feature ofgogo/protobuf
to replace[]byte
withdata.Bytes
in all generated types :)- this eliminates the need for additional types like ResultQuery
- [types]
pubKey
->pub_key
- [types]
uint64
->int32
forHeader.num_txs
andPartSetHeader.total
- [types]
uint64
->int64
for everything else - [types] ResponseSetOption includes error code
- [abci-cli] codes are printed as their number instead of a message, except for
code == 0
, which is still printed asOK
FEATURES:
- [types] ResponseDeliverTx: added
tags
field - [types] ResponseCheckTx: added
gas
andfee
fields - [types] RequestBeginBlock: added
absent_validators
andbyzantine_validators
fields - [dummy] DeliverTx returns an owner tag and a key tag
- [abci-cli] added
log_level
flag to control the logger - [abci-cli] introduce
abci-cli test
command for simple testing of ABCI server implementations via Counter application
IMPROVEMENTS:
- [cli] added version command
BUG FIXES:
- [server] fix "Connection error module=abci-server error=EOF"
BREAKING CHANGES:
- [cli] consolidate example apps under a single
abci-cli
binary
IMPROVEMENTS:
- [cli] use spf13/cobra instead of urfave/cli
- [dummy] use iavl instead of merkleeyes, and add support for historical queries
BUG FIXES:
- [client] fix deadlock on StopForError
BREAKING CHANGES:
- [types/client] app.BeginBlock takes RequestBeginBlock
- [types/client] app.InitChain takes RequestInitChain
- [types/client] app.Info takes RequestInfo
IMPROVEMENTS:
- various linting
BREAKING CHANGES:
NewSocketClient
andNewGRPCClient
no longer start the client automatically, and don't return errors. The caller is responsible for runningclient.Start()
and checking the error.NewSocketServer
andNewGRPCServer
no longer start the server automatically, and don't return errors. The caller is responsible for runningserver.Start()
and checking the error.
FEATURES:
- [types] new method
func (res Result) IsSameCode(compare Result) bool
checks whether two results have the same code - [types] new methods
func (r *ResponseCheckTx) Result() Result
andfunc (r *ResponseDeliverTx) Result() Result
to convert from protobuf types (for control over json serialization) - [types] new method
func (r *ResponseQuery) Result() *ResultQuery
and structResultQuery
to convert from protobuf types (for control over json serializtion)
IMPROVEMENTS:
- Update imports for new
tmlibs
repository - Use the new logger
- [abci-cli] Add flags to the query command for
path
,height
, andprove
- [types] use
data.Bytes
andjson
tags in theResult
struct
BUG FIXES:
IMPROVEMENTS:
- Update dependencies
BREAKING CHANGES:
- Query takes RequestQuery and returns ResponseQuery. The request is split into
data
andpath
, can specify a height to query the state from, and whether or not the response should come with a proof. The response returns the corresponding key-value pair, with proof if requested.
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;
}
IMPROVEMENTS:
- Updates to Makefile
- Various cleanup
- BaseApplication can be embedded by new apps to avoid implementing empty methods
- Drop BlockchainAware and make BeginBlock/EndBlock part of the
type Application interface
BREAKING CHANGES:
- TMSP is now ABCI (Application/Asynchronous/A BlockChain Interface or Atomic BroadCast Interface)
- AppendTx is now DeliverTx (conforms to the literature)
- BeginBlock takes a Header:
message RequestBeginBlock{
bytes hash = 1;
Header header = 2;
}
- Info returns a ResponseInfo, containing last block height and app hash:
message ResponseInfo {
string data = 1;
string version = 2;
uint64 last_block_height = 3;
bytes last_block_app_hash = 4;
}
- EndBlock returns a ResponseEndBlock, containing the changed validators:
message ResponseEndBlock{
repeated Validator diffs = 4;
}
- Hex strings are 0x-prefixed in the CLI
- Query on the Dummy app now uses hex-strings
FEATURES:
- New app, PersistentDummy, uses Info/BeginBlock to recover from failures and supports validator set changes
- New message types for blockchain data:
//----------------------------------------
// Blockchain Types
message Header {
string chain_id = 1;
uint64 height = 2;
uint64 time = 3;
uint64 num_txs = 4;
BlockID last_block_id = 5;
bytes last_commit_hash = 6;
bytes data_hash = 7;
bytes validators_hash = 8;
bytes app_hash = 9;
}
message BlockID {
bytes hash = 1;
PartSetHeader parts = 2;
}
message PartSetHeader {
uint64 total = 1;
bytes hash = 2;
}
message Validator {
bytes pubKey = 1;
uint64 power = 2;
}
- Add support for Query to Counter app
IMPROVEMENT:
- Don't exit the tmsp-cli console on bad args
BUG FIXES:
- Fix parsing in the Counter app to handle invalid transactions
IMPROVEMENTS
- Better error handling in console
BREAKING CHANGES:
- Use
oneof
types in protobuf
FEATURES:
- GRPC support
- Introduce BeginBlock
- Added InitChain, EndBlock
- s/GetHash/Commit/g
- Document Protobuf request/response fields
- Added CheckTx/Query ABCI message types
- Added Result/Log fields to DeliverTx/CheckTx/SetOption
- Removed Listener messages
- Removed Code from ResponseSetOption and ResponseGetHash
- Made examples BigEndian
- Added "RetCodeBadNonce = 0x06" return code
- Tendermint/ABCI now comes to consensus on the order first before DeliverTx.