Thane Thomson 62f97a69e9 abci: Refactor CheckTx to notify of recheck (#3744)
As per #2127, this refactors the RequestCheckTx ProtoBuf struct to allow for a flag indicating whether a query is a recheck or not (and allows for possible future, more nuanced states).

In order to pass this extended information through to the ABCI app, the proxy.AppConnMempool (and, for consistency, the proxy.AppConnConsensus) interface seems to need to be refactored along with abcicli.Client.

And, as per this comment, I've made the following modification to the protobuf definition for the RequestCheckTx structure:

enum CheckTxType {
  New = 0;
  Recheck = 1;
}

message RequestCheckTx {
  bytes tx = 1;
  CheckTxType type = 2;
}

* Refactor ABCI CheckTx to notify of recheck

As per #2127, this refactors the `RequestCheckTx` ProtoBuf struct to allow for:

1. a flag indicating whether a query is a recheck or not (and allows for
   possible future, more nuanced states)
2. an `additional_data` bytes array to provide information for those more
   nuanced states.

In order to pass this extended information through to the ABCI app, the
`proxy.AppConnMempool` (and, for consistency, the
`proxy.AppConnConsensus`) interface seems to need to be refactored.

Commits:

* Fix linting issue

* Add CHANGELOG_PENDING entry

* Remove extraneous explicit initialization

* Update ABCI spec doc to include new CheckTx params

* Rename method param for consistency

* Rename CheckTxType enum values and remove additional_data param
2019-07-02 18:14:53 +04:00
..
2019-05-05 10:23:41 -04:00

Overview

ABCI is the interface between Tendermint (a state-machine replication engine) and your application (the actual state machine). It consists of a set of methods, where each method has a corresponding Request and Response message type. Tendermint calls the ABCI methods on the ABCI application by sending the Request* messages and receiving the Response* messages in return.

All message types are defined in a protobuf file. This allows Tendermint to run applications written in any programming language.

This specification is split as follows:

  • Methods and Types - complete details on all ABCI methods and message types
  • Applications - how to manage ABCI application state and other details about building ABCI applications
  • Client and Server - for those looking to implement their own ABCI application servers