Repository: tendermint/rust-abci (language: rust)

Issue:
Add a changelog?

Unable to compile EmptyApp example! (::protobuf::VERSION_2_8_0)
## Summary of Bug
Unable to compile a simple example due to erros of type:

error[E0425]: cannot find value `VERSION_2_8_0` in module `protobuf`
  --> /.../.cargo/registry/src/github.com-1ecc6299db9ec823/abci-0.6.1/src/messages/abci.rs:27:49
   |
27 | const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_8_0;
   |                                                 ^^^^^^^^^^^^^ help: a constant with a similar name exists: `VERSION_2_8_1`

## Version
github.com-1ecc6299db9ec823/abci-0.6.1

## Steps to Reproduce
Just trying to setup the framework with the example from https://docs.rs/abci/0.6.1/abci/

#### For Admin Use
- [ ] Not duplicate issue
- [ ] Appropriate labels applied
- [ ] Appropriate contributors tagged
- [ ] Contributor assigned/self-assigned


Discussion / hints:
Yes, we absolutely should add a changelog.


Fix patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6da0db7..a30a308 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,15 @@
 # CHANGELOG
 
+January 2, 2020_
+
+Special thanks to external contributors on this release: @devashishdxt
+
+## v0.6.5
+
+### IMPROVEMENTS:
+
+- [\#110](https://github.com/tendermint/rust-abci/pull/110): Upgrade protobuf to 2.10.0
+
 _November 18, 2019_
 
 Special thanks to external contributors on this release: @yihuang
diff --git a/Cargo.toml b/Cargo.toml
index 733de80..ffa247b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "abci"
-version = "0.6.4"
+version = "0.6.5"
 authors = ["Adrian Brink <adrian@brink-holdings.com>", "Jackson Lewis <st.japa6@gmail.com>", "Dave Bryson", "Tomas Tauber"]
 edition = "2018"
 license = "MIT/Apache-2.0"
@@ -13,7 +13,7 @@ include = ["src/**/*", "Cargo.toml"]
 
 [dependencies]
 bytes = "0.4"
-protobuf = "2.8.1"
+protobuf = "= 2.10.0"
 byteorder = "1.3.2"
 integer-encoding = "1.0.5"
 log = "0.4.8"
@@ -22,4 +22,4 @@ tokio = { version = "0.1", default-features = false, features = ["codec", "io",
 futures = "0.3"
 
 [build-dependencies]
-protobuf-codegen-pure = "2.8.1"
+protobuf-codegen-pure = "= 2.10.0"
\ No newline at end of file
diff --git a/Makefile b/Makefile
index d06a441..52b57c0 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 # Origin
-version_branch = v0.32
+version_branch = v0.32.8
 tendermint = https://raw.githubusercontent.com/tendermint/tendermint/$(version_branch)
 
 # Outputs
diff --git a/README.md b/README.md
index ab9820d..e47d43f 100644
--- a/README.md
+++ b/README.md
@@ -44,7 +44,7 @@ This crate already contains the compiled ABCI protobuf messages. If you want to
 
 ### Tendermint
 
-To run either of the example apps you have to have Tendermint installed and initialised (Remember to run `tendermint init`!). Please install it according to these [instructions](https://tendermint.com/docs/introduction/install.html). After initializing and configuring the node, Tendermint can be run with:
+To run either of the example apps you have to have Tendermint installed and initialised (Remember to run `tendermint init`!). Please install it according to these [instructions](https://docs.tendermint.com/master/introduction/install.html). After initializing and configuring the node, Tendermint can be run with:
 
 ```
 tendermint node
@@ -82,7 +82,7 @@ Please read, understand and adhere to our [code of conduct](./CODE_OF_CONDUCT.md
 
 ## Credits
 
-- [Jackson Lewis](https://github.com/JacksonCoder)
+- [Jackson Lewis](https://github.com/InquisitivePenguin)
 - [Dave Bryson](https://github.com/davebryson)
 
 Original `rust-tsp` made by [Adrian Brink](https://github.com/adrianbrink).
diff --git a/protobuf/abci.proto b/protobuf/abci.proto
index 5702c0f..c017b47 100644
--- a/protobuf/abci.proto
+++ b/protobuf/abci.proto
@@ -81,8 +81,14 @@ message RequestBeginBlock {
   repeated Evidence byzantine_validators = 4 [(gogoproto.nullable)=false];
 }
 
+enum CheckTxType {
+  New = 0;
+  Recheck = 1;
+}
+
 message RequestCheckTx {
   bytes tx = 1;
+  CheckTxType type = 2;
 }
 
 message RequestDeliverTx {
diff --git a/protobuf/github.com/tendermint/tendermint/abci/types/types.proto b/protobuf/github.com/tendermint/tendermint/abci/types/types.proto
index 8a2da5b..8f9dda8 100644
--- a/protobuf/github.com/tendermint/tendermint/abci/types/types.proto
+++ b/protobuf/github.com/tendermint/tendermint/abci/types/types.proto
@@ -81,8 +81,14 @@ message RequestBeginBlock {
   repeated Evidence byzantine_validators = 4 [(gogoproto.nullable)=false];
 }
 
+enum CheckTxType {
+  New = 0;
+  Recheck = 1;
+}
+
 message RequestCheckTx {
   bytes tx = 1;
+  CheckTxType type = 2;
 }
 
 message RequestDeliverTx {
diff --git a/src/lib.rs b/src/lib.rs
index 880c348..a0690e9 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -14,7 +14,7 @@
 //!
 //! impl abci::Application for EmptyApp {}
 //!
-//! fn main() {
+//! fn run_empty_app() {
 //!     abci::run_local(EmptyApp);
 //! }
 //!```
diff --git a/src/messages/abci.rs b/src/messages/abci.rs
index 6bedf15..01e03ca 100644
--- a/src/messages/abci.rs
+++ b/src/messages/abci.rs
@@ -1,4 +1,4 @@
-// This file is generated by rust-protobuf 2.8.1. Do not edit
+// This file is generated by rust-protobuf 2.10.0. Do not edit
 // @generated
 
 // https://github.com/Manishearth/rust-clippy/issues/702
@@ -24,7 +24,7 @@ use protobuf::ProtobufEnum as ProtobufEnum_imported_for_functions;
 
 /// Generated files are compatible only with the same version
 /// of protobuf runtime.
-const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_8_1;
+const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_10_0;
 
 #[derive(PartialEq,Clone,Default)]
 pub struct Request {
@@ -2738,6 +2738,7 @@ impl ::protobuf::reflect::ProtobufValue for RequestBeginBlock {
 pub struct RequestCheckTx {
     // message fields
     pub tx: ::std::vec::Vec<u8>,
+    pub field_type: CheckTxType,
     // special fields
     pub unknown_fields: ::protobuf::UnknownFields,
     pub cached_size: ::protobuf::CachedSize,
@@ -2779,6 +2780,21 @@ impl RequestCheckTx {
     pub fn take_tx(&mut self) -> ::std::vec::Vec<u8> {
         ::std::mem::replace(&mut self.tx, ::std::vec::Vec::new())
     }
+
+    // .abci.CheckTxType type = 2;
+
+
+    pub fn get_field_type(&self) -> CheckTxType {
+        self.field_type
+    }
+    pub fn clear_field_type(&mut self) {
+        self.field_type = CheckTxType::New;
+    }
+
+    // Param is passed by value, moved
+    pub fn set_field_type(&mut self, v: CheckTxType) {
+        self.field_type = v;
+    }
 }
 
 impl ::protobuf::Message for RequestCheckTx {
@@ -2793,6 +2809,9 @@ impl ::protobuf::Message for RequestCheckTx {
                 1 => {
                     ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.tx)?;
                 },
+                2 => {
+                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.field_type, 2, &mut self.unknown_fields)?
+                },
                 _ => {
                     ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
                 },
@@ -2808,6 +2827,9 @@ impl ::protobuf::Message for RequestCheckTx {
         if !self.tx.is_empty() {
             my_size += ::protobuf::rt::bytes_size(1, &self.tx);
         }
+        if self.field_type != CheckTxType::New {
+            my_size += ::protobuf::rt::enum_size(2, self.field_type);
+        }
         my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
         self.cached_size.set(my_size);
         my_size
@@ -2817,6 +2839,9 @@ impl ::protobuf::Message for RequestCheckTx {
         if !self.tx.is_empty() {
             os.write_bytes(1, &self.tx)?;
         }
+        if self.field_type != CheckTxType::New {
+            os.write_enum(2, self.field_type.value())?;
+        }
         os.write_unknown_fields(self.get_unknown_fields())?;
         ::std::result::Result::Ok(())
     }
@@ -2864,6 +2889,11 @@ impl ::protobuf::Message for RequestCheckTx {
                     |m: &RequestCheckTx| { &m.tx },
                     |m: &mut RequestCheckTx| { &mut m.tx },
                 ));
+                fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<CheckTxType>>(
+                    "type",
+                    |m: &RequestCheckTx| { &m.field_type },
+                    |m: &mut RequestCheckTx| { &mut m.field_type },
+                ));
                 ::protobuf::reflect::MessageDescriptor::new::<RequestCheckTx>(
                     "RequestCheckTx",
                     fields,
@@ -2887,6 +2917,7 @@ impl ::protobuf::Message for RequestCheckTx {
 impl ::protobuf::Clear for RequestCheckTx {
     fn clear(&mut self) {
         self.tx.clear();
+        self.field_type = CheckTxType::New;
         self.unknown_fields.clear();
     }
 }
@@ -11612,6 +11643,61 @@ impl ::protobuf::reflect::ProtobufValue for Evidence {
     }
 }
 
+#[derive(Clone,PartialEq,Eq,Debug,Hash)]
+pub enum CheckTxType {
+    New = 0,
+    Recheck = 1,
+}
+
+impl ::protobuf::ProtobufEnum for CheckTxType {
+    fn value(&self) -> i32 {
+        *self as i32
+    }
+
+    fn from_i32(value: i32) -> ::std::option::Option<CheckTxType> {
+        match value {
+            0 => ::std::option::Option::Some(CheckTxType::New),
+            1 => ::std::option::Option::Some(CheckTxType::Recheck),
+            _ => ::std::option::Option::None
+        }
+    }
+
+    fn values() -> &'static [Self] {
+        static values: &'static [CheckTxType] = &[
+            CheckTxType::New,
+            CheckTxType::Recheck,
+        ];
+        values
+    }
+
+    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
+        static mut descriptor: ::protobuf::lazy::Lazy<::protobuf::reflect::EnumDescriptor> = ::protobuf::lazy::Lazy {
+            lock: ::protobuf::lazy::ONCE_INIT,
+            ptr: 0 as *const ::protobuf::reflect::EnumDescriptor,
+        };
+        unsafe {
+            descriptor.get(|| {
+                ::protobuf::reflect::EnumDescriptor::new("CheckTxType", file_descriptor_proto())
+            })
+        }
+    }
+}
+
+impl ::std::marker::Copy for CheckTxType {
+}
+
+impl ::std::default::Default for CheckTxType {
+    fn default() -> Self {
+        CheckTxType::New
+    }
+}
+
+impl ::protobuf::reflect::ProtobufValue for CheckTxType {
+    fn as_ref(&self) -> ::protobuf::reflect::ProtobufValueRef {
+        ::protobuf::reflect::ProtobufValueRef::Enum(self.descriptor())
+    }
+}
+
 static file_descriptor_proto_data: &'static [u8] = b"\
     \n\nabci.proto\x12\x04abci\"\xf1\x03\n\x07Request\x12#\n\x04echo\x18\x02\
     \x20\x01(\x0b2\x11.abci.RequestEchoH\0B\0\x12%\n\x05flush\x18\x03\x20\
@@ -11642,58 +11728,59 @@ static file_descriptor_proto_data: &'static [u8] = b"\
     \x20\x01(\x0cB\0\x12\"\n\x06header\x18\x02\x20\x01(\x0b2\x0c.abci.Header\
     B\x04\xc8\xde\x1f\0\x124\n\x10last_commit_info\x18\x03\x20\x01(\x0b2\x14\
     .abci.LastCommitInfoB\x04\xc8\xde\x1f\0\x122\n\x14byzantine_validators\
-    \x18\x04\x20\x03(\x0b2\x0e.abci.EvidenceB\x04\xc8\xde\x1f\0:\0\"\x20\n\
-    \x0eRequestCheckTx\x12\x0c\n\x02tx\x18\x01\x20\x01(\x0cB\0:\0\"\"\n\x10R\
-    equestDeliverTx\x12\x0c\n\x02tx\x18\x01\x20\x01(\x0cB\0:\0\"%\n\x0fReque\
-    stEndBlock\x12\x10\n\x06height\x18\x01\x20\x01(\x03B\0:\0\"\x11\n\rReque\
-    stCommit:\0\"\xad\x04\n\x08Response\x12.\n\texception\x18\x01\x20\x01(\
-    \x0b2\x17.abci.ResponseExceptionH\0B\0\x12$\n\x04echo\x18\x02\x20\x01(\
-    \x0b2\x12.abci.ResponseEchoH\0B\0\x12&\n\x05flush\x18\x03\x20\x01(\x0b2\
-    \x13.abci.ResponseFlushH\0B\0\x12$\n\x04info\x18\x04\x20\x01(\x0b2\x12.a\
-    bci.ResponseInfoH\0B\0\x12/\n\nset_option\x18\x05\x20\x01(\x0b2\x17.abci\
-    .ResponseSetOptionH\0B\0\x12/\n\ninit_chain\x18\x06\x20\x01(\x0b2\x17.ab\
-    ci.ResponseInitChainH\0B\0\x12&\n\x05query\x18\x07\x20\x01(\x0b2\x13.abc\
-    i.ResponseQueryH\0B\0\x121\n\x0bbegin_block\x18\x08\x20\x01(\x0b2\x18.ab\
-    ci.ResponseBeginBlockH\0B\0\x12+\n\x08check_tx\x18\t\x20\x01(\x0b2\x15.a\
-    bci.ResponseCheckTxH\0B\0\x12/\n\ndeliver_tx\x18\n\x20\x01(\x0b2\x17.abc\
-    i.ResponseDeliverTxH\0B\0\x12-\n\tend_block\x18\x0b\x20\x01(\x0b2\x16.ab\
-    ci.ResponseEndBlockH\0B\0\x12(\n\x06commit\x18\x0c\x20\x01(\x0b2\x14.abc\
-    i.ResponseCommitH\0B\0B\x07\n\x05value:\0\"&\n\x11ResponseException\x12\
-    \x0f\n\x05error\x18\x01\x20\x01(\tB\0:\0\"#\n\x0cResponseEcho\x12\x11\n\
-    \x07message\x18\x01\x20\x01(\tB\0:\0\"\x11\n\rResponseFlush:\0\"\x86\x01\
-    \n\x0cResponseInfo\x12\x0e\n\x04data\x18\x01\x20\x01(\tB\0\x12\x11\n\x07\
-    version\x18\x02\x20\x01(\tB\0\x12\x15\n\x0bapp_version\x18\x03\x20\x01(\
-    \x04B\0\x12\x1b\n\x11last_block_height\x18\x04\x20\x01(\x03B\0\x12\x1d\n\
-    \x13last_block_app_hash\x18\x05\x20\x01(\x0cB\0:\0\"D\n\x11ResponseSetOp\
-    tion\x12\x0e\n\x04code\x18\x01\x20\x01(\rB\0\x12\r\n\x03log\x18\x03\x20\
-    \x01(\tB\0\x12\x0e\n\x04info\x18\x04\x20\x01(\tB\0:\0\"y\n\x11ResponseIn\
-    itChain\x121\n\x10consensus_params\x18\x01\x20\x01(\x0b2\x15.abci.Consen\
-    susParamsB\0\x12/\n\nvalidators\x18\x02\x20\x03(\x0b2\x15.abci.Validator\
-    UpdateB\x04\xc8\xde\x1f\0:\0\"\xb8\x01\n\rResponseQuery\x12\x0e\n\x04cod\
-    e\x18\x01\x20\x01(\rB\0\x12\r\n\x03log\x18\x03\x20\x01(\tB\0\x12\x0e\n\
-    \x04info\x18\x04\x20\x01(\tB\0\x12\x0f\n\x05index\x18\x05\x20\x01(\x03B\
-    \0\x12\r\n\x03key\x18\x06\x20\x01(\x0cB\0\x12\x0f\n\x05value\x18\x07\x20\
-    \x01(\x0cB\0\x12\x1e\n\x05proof\x18\x08\x20\x01(\x0b2\r.merkle.ProofB\0\
-    \x12\x10\n\x06height\x18\t\x20\x01(\x03B\0\x12\x13\n\tcodespace\x18\n\
-    \x20\x01(\tB\0:\0\"M\n\x12ResponseBeginBlock\x125\n\x06events\x18\x01\
-    \x20\x03(\x0b2\x0b.abci.EventB\x18\xea\xde\x1f\x10events,omitempty\xc8\
-    \xde\x1f\0:\0\"\xc8\x01\n\x0fResponseCheckTx\x12\x0e\n\x04code\x18\x01\
-    \x20\x01(\rB\0\x12\x0e\n\x04data\x18\x02\x20\x01(\x0cB\0\x12\r\n\x03log\
-    \x18\x03\x20\x01(\tB\0\x12\x0e\n\x04info\x18\x04\x20\x01(\tB\0\x12\x14\n\
-    \ngas_wanted\x18\x05\x20\x01(\x03B\0\x12\x12\n\x08gas_used\x18\x06\x20\
-    \x01(\x03B\0\x125\n\x06events\x18\x07\x20\x03(\x0b2\x0b.abci.EventB\x18\
-    \xea\xde\x1f\x10events,omitempty\xc8\xde\x1f\0\x12\x13\n\tcodespace\x18\
-    \x08\x20\x01(\tB\0:\0\"\xca\x01\n\x11ResponseDeliverTx\x12\x0e\n\x04code\
-    \x18\x01\x20\x01(\rB\0\x12\x0e\n\x04data\x18\x02\x20\x01(\x0cB\0\x12\r\n\
-    \x03log\x18\x03\x20\x01(\tB\0\x12\x0e\n\x04info\x18\x04\x20\x01(\tB\0\
-    \x12\x14\n\ngas_wanted\x18\x05\x20\x01(\x03B\0\x12\x12\n\x08gas_used\x18\
-    \x06\x20\x01(\x03B\0\x125\n\x06events\x18\x07\x20\x03(\x0b2\x0b.abci.Eve\
-    ntB\x18\xea\xde\x1f\x10events,omitempty\xc8\xde\x1f\0\x12\x13\n\tcodespa\
-    ce\x18\x08\x20\x01(\tB\0:\0\"\xbd\x01\n\x10ResponseEndBlock\x126\n\x11va\
-    lidator_updates\x18\x01\x20\x03(\x0b2\x15.abci.ValidatorUpdateB\x04\xc8\
+    \x18\x04\x20\x03(\x0b2\x0e.abci.EvidenceB\x04\xc8\xde\x1f\0:\0\"C\n\x0eR\
+    equestCheckTx\x12\x0c\n\x02tx\x18\x01\x20\x01(\x0cB\0\x12!\n\x04type\x18\
+    \x02\x20\x01(\x0e2\x11.abci.CheckTxTypeB\0:\0\"\"\n\x10RequestDeliverTx\
+    \x12\x0c\n\x02tx\x18\x01\x20\x01(\x0cB\0:\0\"%\n\x0fRequestEndBlock\x12\
+    \x10\n\x06height\x18\x01\x20\x01(\x03B\0:\0\"\x11\n\rRequestCommit:\0\"\
+    \xad\x04\n\x08Response\x12.\n\texception\x18\x01\x20\x01(\x0b2\x17.abci.\
+    ResponseExceptionH\0B\0\x12$\n\x04echo\x18\x02\x20\x01(\x0b2\x12.abci.Re\
+    sponseEchoH\0B\0\x12&\n\x05flush\x18\x03\x20\x01(\x0b2\x13.abci.Response\
+    FlushH\0B\0\x12$\n\x04info\x18\x04\x20\x01(\x0b2\x12.abci.ResponseInfoH\
+    \0B\0\x12/\n\nset_option\x18\x05\x20\x01(\x0b2\x17.abci.ResponseSetOptio\
+    nH\0B\0\x12/\n\ninit_chain\x18\x06\x20\x01(\x0b2\x17.abci.ResponseInitCh\
+    ainH\0B\0\x12&\n\x05query\x18\x07\x20\x01(\x0b2\x13.abci.ResponseQueryH\
+    \0B\0\x121\n\x0bbegin_block\x18\x08\x20\x01(\x0b2\x18.abci.ResponseBegin\
+    BlockH\0B\0\x12+\n\x08check_tx\x18\t\x20\x01(\x0b2\x15.abci.ResponseChec\
+    kTxH\0B\0\x12/\n\ndeliver_tx\x18\n\x20\x01(\x0b2\x17.abci.ResponseDelive\
+    rTxH\0B\0\x12-\n\tend_block\x18\x0b\x20\x01(\x0b2\x16.abci.ResponseEndBl\
+    ockH\0B\0\x12(\n\x06commit\x18\x0c\x20\x01(\x0b2\x14.abci.ResponseCommit\
+    H\0B\0B\x07\n\x05value:\0\"&\n\x11ResponseException\x12\x0f\n\x05error\
+    \x18\x01\x20\x01(\tB\0:\0\"#\n\x0cResponseEcho\x12\x11\n\x07message\x18\
+    \x01\x20\x01(\tB\0:\0\"\x11\n\rResponseFlush:\0\"\x86\x01\n\x0cResponseI\
+    nfo\x12\x0e\n\x04data\x18\x01\x20\x01(\tB\0\x12\x11\n\x07version\x18\x02\
+    \x20\x01(\tB\0\x12\x15\n\x0bapp_version\x18\x03\x20\x01(\x04B\0\x12\x1b\
+    \n\x11last_block_height\x18\x04\x20\x01(\x03B\0\x12\x1d\n\x13last_block_\
+    app_hash\x18\x05\x20\x01(\x0cB\0:\0\"D\n\x11ResponseSetOption\x12\x0e\n\
+    \x04code\x18\x01\x20\x01(\rB\0\x12\r\n\x03log\x18\x03\x20\x01(\tB\0\x12\
+    \x0e\n\x04info\x18\x04\x20\x01(\tB\0:\0\"y\n\x11ResponseInitChain\x121\n\
+    \x10consensus_params\x18\x01\x20\x01(\x0b2\x15.abci.ConsensusParamsB\0\
+    \x12/\n\nvalidators\x18\x02\x20\x03(\x0b2\x15.abci.ValidatorUpdateB\x04\
+    \xc8\xde\x1f\0:\0\"\xb8\x01\n\rResponseQuery\x12\x0e\n\x04code\x18\x01\
+    \x20\x01(\rB\0\x12\r\n\x03log\x18\x03\x20\x01(\tB\0\x12\x0e\n\x04info\
+    \x18\x04\x20\x01(\tB\0\x12\x0f\n\x05index\x18\x05\x20\x01(\x03B\0\x12\r\
+    \n\x03key\x18\x06\x20\x01(\x0cB\0\x12\x0f\n\x05value\x18\x07\x20\x01(\
+    \x0cB\0\x12\x1e\n\x05proof\x18\x08\x20\x01(\x0b2\r.merkle.ProofB\0\x12\
+    \x10\n\x06height\x18\t\x20\x01(\x03B\0\x12\x13\n\tcodespace\x18\n\x20\
+    \x01(\tB\0:\0\"M\n\x12ResponseBeginBlock\x125\n\x06events\x18\x01\x20\
+    \x03(\x0b2\x0b.abci.EventB\x18\xea\xde\x1f\x10events,omitempty\xc8\xde\
+    \x1f\0:\0\"\xc8\x01\n\x0fResponseCheckTx\x12\x0e\n\x04code\x18\x01\x20\
+    \x01(\rB\0\x12\x0e\n\x04data\x18\x02\x20\x01(\x0cB\0\x12\r\n\x03log\x18\
+    \x03\x20\x01(\tB\0\x12\x0e\n\x04info\x18\x04\x20\x01(\tB\0\x12\x14\n\nga\
+    s_wanted\x18\x05\x20\x01(\x03B\0\x12\x12\n\x08gas_used\x18\x06\x20\x01(\
+    \x03B\0\x125\n\x06events\x18\x07\x20\x03(\x0b2\x0b.abci.EventB\x18\xc8\
+    \xde\x1f\0\xea\xde\x1f\x10events,omitempty\x12\x13\n\tcodespace\x18\x08\
+    \x20\x01(\tB\0:\0\"\xca\x01\n\x11ResponseDeliverTx\x12\x0e\n\x04code\x18\
+    \x01\x20\x01(\rB\0\x12\x0e\n\x04data\x18\x02\x20\x01(\x0cB\0\x12\r\n\x03\
+    log\x18\x03\x20\x01(\tB\0\x12\x0e\n\x04info\x18\x04\x20\x01(\tB\0\x12\
+    \x14\n\ngas_wanted\x18\x05\x20\x01(\x03B\0\x12\x12\n\x08gas_used\x18\x06\
+    \x20\x01(\x03B\0\x125\n\x06events\x18\x07\x20\x03(\x0b2\x0b.abci.EventB\
+    \x18\xc8\xde\x1f\0\xea\xde\x1f\x10events,omitempty\x12\x13\n\tcodespace\
+    \x18\x08\x20\x01(\tB\0:\0\"\xbd\x01\n\x10ResponseEndBlock\x126\n\x11vali\
+    dator_updates\x18\x01\x20\x03(\x0b2\x15.abci.ValidatorUpdateB\x04\xc8\
     \xde\x1f\0\x128\n\x17consensus_param_updates\x18\x02\x20\x01(\x0b2\x15.a\
     bci.ConsensusParamsB\0\x125\n\x06events\x18\x03\x20\x03(\x0b2\x0b.abci.E\
-    ventB\x18\xc8\xde\x1f\0\xea\xde\x1f\x10events,omitempty:\0\"\"\n\x0eResp\
+    ventB\x18\xea\xde\x1f\x10events,omitempty\xc8\xde\x1f\0:\0\"\"\n\x0eResp\
     onseCommit\x12\x0e\n\x04data\x18\x02\x20\x01(\x0cB\0:\0\"\x8d\x01\n\x0fC\
     onsensusParams\x12\"\n\x05block\x18\x01\x20\x01(\x0b2\x11.abci.BlockPara\
     msB\0\x12(\n\x08evidence\x18\x02\x20\x01(\x0b2\x14.abci.EvidenceParamsB\
@@ -11736,9 +11823,10 @@ static file_descriptor_proto_data: &'static [u8] = b"\
     ValidatorB\x04\xc8\xde\x1f\0\x12\x10\n\x06height\x18\x03\x20\x01(\x03B\0\
     \x122\n\x04time\x18\x04\x20\x01(\x0b2\x1a.google.protobuf.TimestampB\x08\
     \x90\xdf\x1f\x01\xc8\xde\x1f\0\x12\x1c\n\x12total_voting_power\x18\x05\
-    \x20\x01(\x03B\0:\0B\x1c\xd0\xe2\x1e\x01\xa8\xe2\x1e\x01\xe0\xe2\x1e\x01\
-    \xb8\xe2\x1e\x01\xc0\xe3\x1e\x01\xf8\xe1\x1e\x01\xc8\xe2\x1e\x01b\x06pro\
-    to3\
+    \x20\x01(\x03B\0:\0*%\n\x0bCheckTxType\x12\x07\n\x03New\x10\0\x12\x0b\n\
+    \x07Recheck\x10\x01\x1a\0B\x1c\xc8\xe2\x1e\x01\xe0\xe2\x1e\x01\xf8\xe1\
+    \x1e\x01\xc0\xe3\x1e\x01\xa8\xe2\x1e\x01\xb8\xe2\x1e\x01\xd0\xe2\x1e\x01\
+    b\x06proto3\
 ";
 
 static mut file_descriptor_proto_lazy: ::protobuf::lazy::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::lazy::Lazy {
diff --git a/src/messages/merkle.rs b/src/messages/merkle.rs
index 11084dd..3d16e8f 100644
--- a/src/messages/merkle.rs
+++ b/src/messages/merkle.rs
@@ -1,4 +1,4 @@
-// This file is generated by rust-protobuf 2.8.1. Do not edit
+// This file is generated by rust-protobuf 2.10.0. Do not edit
 // @generated
 
 // https://github.com/Manishearth/rust-clippy/issues/702
@@ -24,7 +24,7 @@ use protobuf::ProtobufEnum as ProtobufEnum_imported_for_functions;
 
 /// Generated files are compatible only with the same version
 /// of protobuf runtime.
-const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_8_1;
+const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_10_0;
 
 #[derive(PartialEq,Clone,Default)]
 pub struct ProofOp {
@@ -460,8 +460,8 @@ static file_descriptor_proto_data: &'static [u8] = b"\
     rkle\":\n\x07ProofOp\x12\x0e\n\x04type\x18\x01\x20\x01(\tB\0\x12\r\n\x03\
     key\x18\x02\x20\x01(\x0cB\0\x12\x0e\n\x04data\x18\x03\x20\x01(\x0cB\0:\0\
     \"-\n\x05Proof\x12\"\n\x03ops\x18\x01\x20\x03(\x0b2\x0f.merkle.ProofOpB\
-    \x04\xc8\xde\x1f\0:\0B\x14\xf8\xe1\x1e\x01\xc8\xe2\x1e\x01\xa8\xe2\x1e\
-    \x01\xe0\xe2\x1e\x01\xd0\xe2\x1e\x01b\x06proto3\
+    \x04\xc8\xde\x1f\0:\0B\x14\xf8\xe1\x1e\x01\xe0\xe2\x1e\x01\xa8\xe2\x1e\
+    \x01\xd0\xe2\x1e\x01\xc8\xe2\x1e\x01b\x06proto3\
 ";
 
 static mut file_descriptor_proto_lazy: ::protobuf::lazy::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::lazy::Lazy {
diff --git a/src/messages/types.rs b/src/messages/types.rs
index ba7d728..a7a8980 100644
--- a/src/messages/types.rs
+++ b/src/messages/types.rs
@@ -1,4 +1,4 @@
-// This file is generated by rust-protobuf 2.8.1. Do not edit
+// This file is generated by rust-protobuf 2.10.0. Do not edit
 // @generated
 
 // https://github.com/Manishearth/rust-clippy/issues/702
@@ -24,7 +24,7 @@ use protobuf::ProtobufEnum as ProtobufEnum_imported_for_functions;
 
 /// Generated files are compatible only with the same version
 /// of protobuf runtime.
-const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_8_1;
+const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_10_0;
 
 #[derive(PartialEq,Clone,Default)]
 pub struct KVPair {
@@ -445,9 +445,9 @@ static file_descriptor_proto_data: &'static [u8] = b"\
     \n8github.com/tendermint/tendermint/libs/common/types.proto\x12\x06commo\
     n\"*\n\x06KVPair\x12\r\n\x03key\x18\x01\x20\x01(\x0cB\0\x12\x0f\n\x05val\
     ue\x18\x02\x20\x01(\x0cB\0:\0\",\n\x08KI64Pair\x12\r\n\x03key\x18\x01\
-    \x20\x01(\x0cB\0\x12\x0f\n\x05value\x18\x02\x20\x01(\x03B\0:\0B\x1c\xf8\
-    \xe1\x1e\x01\xa8\xe2\x1e\x01\xc0\xe3\x1e\x01\xe0\xe2\x1e\x01\xb8\xe2\x1e\
-    \x01\xd0\xe2\x1e\x01\xc8\xe2\x1e\x01b\x06proto3\
+    \x20\x01(\x0cB\0\x12\x0f\n\x05value\x18\x02\x20\x01(\x03B\0:\0B\x1c\xd0\
+    \xe2\x1e\x01\xa8\xe2\x1e\x01\xc8\xe2\x1e\x01\xb8\xe2\x1e\x01\xf8\xe1\x1e\
+    \x01\xe0\xe2\x1e\x01\xc0\xe3\x1e\x01b\x06proto3\
 ";
 
 static mut file_descriptor_proto_lazy: ::protobuf::lazy::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::lazy::Lazy {
diff --git a/version.txt b/version.txt
index 9b27262..c9130e6 100644
--- a/version.txt
+++ b/version.txt
@@ -1,6 +1,6 @@
 	Version string = TMCoreSemVer
 	// TMCoreSemVer is the current version of Tendermint Core.
-	TMCoreSemVer = "0.32.0"
+	TMCoreSemVer = "0.32.8"
 	// ABCISemVer is the semantic version of the ABCI library
-	ABCISemVer  = "0.16.0"
+	ABCISemVer  = "0.16.1"
 	ABCIVersion = ABCISemVer


Test patch: