Repository: informalsystems/tendermint-rs (language: rust)

Issue:
Release an 0.29 with #1245 included
### Description

Hi, it'd be great to get a release of `tendermint-rs` with #1245 included. Its exclusion from the `tendermint-rs` 0.34 backport regressed our debug output, causing a lot of debug spam for the last few months, and we've been hoping to avoid having to either rewrite all of our debug output or re-fork the dependency.

### Definition of "done"

A version of `tendermint-rs` with #1245 included is released and propagated through the rest of Informal's dep tree (particularly `ibc-rs`).


Discussion / hints:
Hey @mzabaluev, we're wondering if we could maybe cut this `0.29` release ahead of #1193 so that we can move forward with having `ed25519-consensus` (see #1245) so that this doesn't delay too much work on our side. I'm happy to cut the release myself, @thanethomson has granted me push rights on the repo, because I know y'all busy with comet 
> maybe cut this 0.29 release ahead of https://github.com/informalsystems/tendermint-rs/pull/1193

@romac @mzabaluev what do you think? Seems very reasonable to cut 0.29 (without 1193), and then do another release after we're done with #1193 and whatever else will be necessary.
> > maybe cut this 0.29 release ahead of #1193
> 
> @romac @mzabaluev what do you think? Seems very reasonable to cut 0.29 (without 1193), and then do another release after we're done with #1193 and whatever else will be necessary.

Agreed.

Fix patch:
diff --git a/.changelog/unreleased/breaking-changes/1238-crypto-provider-traits.md b/.changelog/v0.29.0/breaking-changes/1238-crypto-provider-traits.md
similarity index 100%
rename from .changelog/unreleased/breaking-changes/1238-crypto-provider-traits.md
rename to .changelog/v0.29.0/breaking-changes/1238-crypto-provider-traits.md
diff --git a/.changelog/unreleased/bug-fixes/1246-verify-between-trusted.md b/.changelog/v0.29.0/bug-fixes/1246-verify-between-trusted.md
similarity index 100%
rename from .changelog/unreleased/bug-fixes/1246-verify-between-trusted.md
rename to .changelog/v0.29.0/bug-fixes/1246-verify-between-trusted.md
diff --git a/.changelog/unreleased/dependencies/1046-ed25519-consensus-dep.md b/.changelog/v0.29.0/dependencies/1046-ed25519-consensus-dep.md
similarity index 100%
rename from .changelog/unreleased/dependencies/1046-ed25519-consensus-dep.md
rename to .changelog/v0.29.0/dependencies/1046-ed25519-consensus-dep.md
diff --git a/.changelog/unreleased/improvements/1262-edition-2021.md b/.changelog/v0.29.0/improvements/1262-edition-2021.md
similarity index 100%
rename from .changelog/unreleased/improvements/1262-edition-2021.md
rename to .changelog/v0.29.0/improvements/1262-edition-2021.md
diff --git a/.changelog/v0.29.0/summary.md b/.changelog/v0.29.0/summary.md
new file mode 100644
index 000000000..a4a2af7ce
--- /dev/null
+++ b/.changelog/v0.29.0/summary.md
@@ -0,0 +1,3 @@
+*Feb 17, 2023*
+
+This release features modularity improvements for the cryptographic routines, as well as fixes related to block verification and the use of a consensus-friendly ed25519 crate.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2077d9b42..7477a7fb2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,78 @@
 # CHANGELOG
 
+## v0.29.0
+
+*Feb 17, 2023*
+
+This release features modularity improvements for the cryptographic routines, as well as fixes related to block verification and the use of a consensus-friendly ed25519 crate.
+
+### BREAKING CHANGES
+
+- `[tendermint]` Make implementations of cryptographic primitives replaceable
+  ([#1238](https://github.com/informalsystems/tendermint-rs/pull/1238)).
+  * Provide a `Sha256` trait in module `crypto` and make digest hashing
+    implementations available through it.
+  * Provide a `Verifier` trait in module `crypto::signature` to enable
+    alternative implementations of signature verification available through it.
+    An `Error` enum is defined in the same module, representing the error cases
+    that can arise in the implementation in a deliberately opaque way.
+  * The module `crypto::default` provides pure Rust implementations of the
+    cryptographic traits. The module is made available by a
+    new `rust-crypto` feature, enabled by default.
+  * `merkle::simple_hash_from_byte_vectors` is made generic over an
+    implementation of the new `MerkleHash` trait. Implementations for
+    Rust-Crypto conformant digest objects and the non-incremental
+    `crypto::Sha256` API are provided in the crate.
+  * The `Header::hash` and `ValidatorSet::hash` methods are gated by the
+    `rust-crypto` feature. Generic hashing methods not dependent on
+    the default crypto implementations are added for both types,
+    named `hash_with`.
+  * Conversions to `account::Id` and `node::Id` from `PublicKey` and
+    curve-specific key types are gated by the `rust-crypto` feature.
+  * The `validator::Info::new` method is gated by the `rust-crypto` feature.
+  * Remove a deprecated constant `signature::ED25519_SIGNATURE_SIZE`.
+
+- `[tendermint-light-client-verifier]` Changes for the new Tendermint crypto API
+  ([#1238](https://github.com/informalsystems/tendermint-rs/pull/1238)).
+  * The `rust-crypto` feature, enabled by default, guards the
+    batteries-included implementation types: `ProdVerifier`, `ProdPredicates`,
+    `ProdVotingPowerCalculator`.
+  * Remove the `operations::hasher` API (`Hasher` and `ProdHasher`),
+    made unnecessary by the new crypto abstractions in the `tendermint` crate.
+  * The `VerificationPredicates` trait features a `Sha256` associated type
+    to represent the hasher implementation, replacing the `&dyn Hasher`
+    parameter passed to methods.
+  * Change the type of the `VerificationErrorDetail::FaultySigner` field
+    `validator_set` to `ValidatorSet`. This removes a hasher dependency from
+    `CommitValidator`, and `ProdCommitValidator` is now an empty dummy type.
+
+- `[tendermint-light-client]` Changes for the new Tendermint crypto API
+  ([#1238](https://github.com/informalsystems/tendermint-rs/pull/1238)).
+  * The `rust-crypto` feature enables the default crypto implementations,
+    and is required by the `rpc-client` and `unstable` features.
+    `ProdForkDetector` is guarded by this feature, and is made a specific
+    type alias to the hasher-generic `ProvidedForkDetector` type.
+  * `LightClientBuilder` gets another type parameter for the Merkle hasher.
+    Its generic constructors lose the `Hasher` parameter.
+
+### BUG FIXES
+
+- `[tendermint-light-client]` Fix verification of blocks between two trusted
+  heights
+  ([#1246](https://github.com/informalsystems/tendermint-rs/issues/1246))
+
+### DEPENDENCIES
+
+- `[tendermint, tendermint-p2p]` Replaced the `ed25519-dalek` dependency with
+  `ed25519-consensus`
+  ([#1046](https://github.com/informalsystems/tendermint-rs/pull/1046))
+
+### IMPROVEMENTS
+
+- Update all crates to the [2021 edition](https://doc.rust-
+  lang.org/edition-guide/rust-2021/index.html) of the Rust language
+  ([#1262](https://github.com/informalsystems/tendermint-rs/issues/1262))
+
 ## v0.28.0
 
 *Dec 13, 2022*
@@ -226,12 +299,12 @@ Pre-releases will continue along this line until v0.34.20 is released.
 
 ### FEATURES
 
-- `[tendermint-rpc]` Update `broadcast_tx_*` result to include
-  prioritized new mempool fields available from v0.34.20-rc0
-  ([#1148](https://github.com/informalsystems/tendermint-rs/issues/1148))
 - `[tendermint-proto]` Regenerate protos from Tendermint
   v0.34.20-rc0, including prioritized mempool fields in `ResponseCheckTx`
   ([#1148](https://github.com/informalsystems/tendermint-rs/issues/1148))
+- `[tendermint-rpc]` Update `broadcast_tx_*` result to include
+  prioritized new mempool fields available from v0.34.20-rc0
+  ([#1148](https://github.com/informalsystems/tendermint-rs/issues/1148))
 
 ## v0.23.7
 
@@ -388,18 +461,18 @@ not yet support `no_std`.
 - Upgraded Prost to the official v0.9 release to finally resolve the security
   issue introduced by v0.7
   ([#925](https://github.com/informalsystems/tendermint-rs/issues/925))
-- `[tendermint, tendermint-config]` The `tendermint::config`
-  module has now been broken out into its own crate (`tendermint-
-  config`) to help towards facilitating `no_std` compatibility
-  ([#983](https://github.com/informalsystems/tendermint-rs/issues/983))
-- `[tendermint]` The `tendermint::node::info::OtherInfo::rpc_address`
-  field type has been changed from `tendermint::net::Address`
-  to `String` toward facilitating `no_std` compatibility
-  ([#983](https://github.com/informalsystems/tendermint-rs/issues/983))
 - `[tendermint]` The `tendermint::node::info::ListenAddress::to_net_address`
   method was replaced with a simple `as_str` method toward facilitating
   `no_std` compatibility ([#983](https://github.com/informalsystems/tendermint-
   rs/issues/983))
+- `[tendermint]` The `tendermint::node::info::OtherInfo::rpc_address`
+  field type has been changed from `tendermint::net::Address`
+  to `String` toward facilitating `no_std` compatibility
+  ([#983](https://github.com/informalsystems/tendermint-rs/issues/983))
+- `[tendermint, tendermint-config]` The `tendermint::config`
+  module has now been broken out into its own crate (`tendermint-
+  config`) to help towards facilitating `no_std` compatibility
+  ([#983](https://github.com/informalsystems/tendermint-rs/issues/983))
 
 ### FEATURES
 
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 75354ce07..c56d7d706 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -180,11 +180,8 @@ Our release process is as follows:
 2. Push this to a branch `release/vX.Y.Z` according to the version number of the
    anticipated release (e.g. `release/v0.17.0`) and open a **draft PR**.
 3. Bump all relevant versions in the codebase to the new version and push these
-   changes to the release PR. This includes:
-   1. All `Cargo.toml` files (making sure dependencies' versions are updated
-      too).
-   2. All crates' `lib.rs` files documentation references' `html_root_url`
-      parameters must point to the new version.
+   changes to the release PR. This includes all `Cargo.toml` files (making sure
+   dependencies' versions are updated too).
 4. Run `cargo doc --all-features --open` locally to double-check that all the
    documentation compiles and seems up-to-date and coherent. Fix any potential
    issues here and push them to the release PR.
diff --git a/abci/Cargo.toml b/abci/Cargo.toml
index 98fb35dfc..5ac8d2c40 100644
--- a/abci/Cargo.toml
+++ b/abci/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name        = "tendermint-abci"
-version     = "0.28.0"
+version     = "0.29.0"
 authors     = ["Informal Systems <hello@informal.systems>"]
 edition     = "2021"
 license     = "Apache-2.0"
@@ -33,7 +33,7 @@ binary = [
 [dependencies]
 bytes = { version = "1.0", default-features = false }
 prost = { version = "0.11", default-features = false }
-tendermint-proto = { version = "0.28.0", default-features = false, path = "../proto" }
+tendermint-proto = { version = "0.29.0", default-features = false, path = "../proto" }
 tracing = { version = "0.1", default-features = false }
 flex-error = { version = "0.4.4", default-features = false }
 structopt = { version = "0.3", optional = true, default-features = false }
diff --git a/config/Cargo.toml b/config/Cargo.toml
index b3731b66a..ab8b12c49 100644
--- a/config/Cargo.toml
+++ b/config/Cargo.toml
@@ -1,7 +1,6 @@
 [package]
 name       = "tendermint-config"
-version    = "0.28.0" # Also update `html_root_url` in lib.rs and
-                      # depending crates (rpc, light-node, ..) when bumping this
+version    = "0.29.0" # Also update depending crates (rpc, light-node, ..) when bumping this.
 license    = "Apache-2.0"
 homepage   = "https://www.tendermint.com/"
 repository = "https://github.com/informalsystems/tendermint-rs/tree/main/tendermint"
@@ -25,7 +24,7 @@ all-features = true
 rustdoc-args = ["--cfg", "docsrs"]
 
 [dependencies]
-tendermint = { version = "0.28.0", default-features = false, features = ["rust-crypto"], path = "../tendermint" }
+tendermint = { version = "0.29.0", default-features = false, features = ["rust-crypto"], path = "../tendermint" }
 flex-error = { version = "0.4.4", default-features = false }
 serde = { version = "1", features = ["derive"] }
 serde_json = "1"
diff --git a/light-client-js/Cargo.toml b/light-client-js/Cargo.toml
index 3c493d2cc..fbb325e2c 100644
--- a/light-client-js/Cargo.toml
+++ b/light-client-js/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name        = "tendermint-light-client-js"
-version     = "0.28.0"
+version     = "0.29.0"
 authors     = ["Informal Systems <hello@informal.systems>"]
 edition     = "2021"
 license     = "Apache-2.0"
@@ -22,8 +22,8 @@ default = ["console_error_panic_hook"]
 [dependencies]
 serde = { version = "1.0", default-features = false, features = [ "derive" ] }
 serde_json = { version = "1.0", default-features = false }
-tendermint = { version = "0.28.0", default-features = false, path = "../tendermint" }
-tendermint-light-client-verifier = { version = "0.28.0", features = ["rust-crypto"], default-features = false, path = "../light-client-verifier" }
+tendermint = { version = "0.29.0", default-features = false, path = "../tendermint" }
+tendermint-light-client-verifier = { version = "0.29.0", features = ["rust-crypto"], default-features = false, path = "../light-client-verifier" }
 wasm-bindgen = { version = "0.2.63", default-features = false, features = [ "serde-serialize" ] }
 serde-wasm-bindgen = { version = "0.4.5", default-features = false }
 
diff --git a/light-client-verifier/Cargo.toml b/light-client-verifier/Cargo.toml
index bde6fd9cb..aa8cced0b 100644
--- a/light-client-verifier/Cargo.toml
+++ b/light-client-verifier/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name       = "tendermint-light-client-verifier"
-version    = "0.28.0"
+version    = "0.29.0"
 edition    = "2021"
 license    = "Apache-2.0"
 readme     = "README.md"
@@ -27,7 +27,7 @@ default = ["rust-crypto", "flex-error/std", "flex-error/eyre_tracer"]
 rust-crypto = ["tendermint/rust-crypto"]
 
 [dependencies]
-tendermint = { version = "0.28.0", path = "../tendermint", default-features = false }
+tendermint = { version = "0.29.0", path = "../tendermint", default-features = false }
 
 derive_more = { version = "0.99.5", default-features = false, features = ["display"] }
 serde = { version = "1.0.106", default-features = false }
@@ -36,4 +36,4 @@ flex-error = { version = "0.4.4", default-features = false }
 
 [dev-dependencies]
 tendermint-testgen = { path = "../testgen", default-features = false }
-sha2 = { version = "0.10", default-features = false }
\ No newline at end of file
+sha2 = { version = "0.10", default-features = false }
diff --git a/light-client/Cargo.toml b/light-client/Cargo.toml
index eb0b033ac..a5cdb3afd 100644
--- a/light-client/Cargo.toml
+++ b/light-client/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name       = "tendermint-light-client"
-version    = "0.28.0"
+version    = "0.29.0"
 edition    = "2021"
 license    = "Apache-2.0"
 readme     = "README.md"
@@ -35,9 +35,9 @@ unstable = ["rust-crypto"]
 mbt = ["rust-crypto"]
 
 [dependencies]
-tendermint = { version = "0.28.0", path = "../tendermint", default-features = false }
-tendermint-rpc = { version = "0.28.0", path = "../rpc", default-features = false }
-tendermint-light-client-verifier = { version = "0.28.0", path = "../light-client-verifier", default-features = false }
+tendermint = { version = "0.29.0", path = "../tendermint", default-features = false }
+tendermint-rpc = { version = "0.29.0", path = "../rpc", default-features = false }
+tendermint-light-client-verifier = { version = "0.29.0", path = "../light-client-verifier", default-features = false }
 
 contracts = { version = "0.6.2", default-features = false }
 crossbeam-channel = { version = "0.4.2", default-features = false }
diff --git a/light-client/src/lib.rs b/light-client/src/lib.rs
index 206652e4b..b10e86778 100644
--- a/light-client/src/lib.rs
+++ b/light-client/src/lib.rs
@@ -9,7 +9,6 @@
     nonstandard_style
 )]
 #![doc(
-    html_root_url = "https://docs.rs/tendermint-light-client/0.28.0",
     html_logo_url = "https://raw.githubusercontent.com/informalsystems/tendermint-rs/master/img/logo-tendermint-rs_3961x4001.png"
 )]
 #![cfg_attr(docsrs, feature(doc_cfg))]
diff --git a/p2p/Cargo.toml b/p2p/Cargo.toml
index 9b559aea6..ed2c26d9d 100644
--- a/p2p/Cargo.toml
+++ b/p2p/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name        = "tendermint-p2p"
-version     = "0.28.0"
+version     = "0.29.0"
 edition     = "2021"
 license     = "Apache-2.0"
 repository  = "https://github.com/informalsystems/tendermint-rs"
@@ -44,9 +44,9 @@ aead = { version = "0.4.1", default-features = false }
 flex-error = { version = "0.4.4", default-features = false }
 
 # path dependencies
-tendermint = { path = "../tendermint", version = "0.28.0", default-features = false }
-tendermint-proto = { path = "../proto", version = "0.28.0", default-features = false }
-tendermint-std-ext = { path = "../std-ext", version = "0.28.0", default-features = false }
+tendermint = { path = "../tendermint", version = "0.29.0", default-features = false }
+tendermint-proto = { path = "../proto", version = "0.29.0", default-features = false }
+tendermint-std-ext = { path = "../std-ext", version = "0.29.0", default-features = false }
 
 # optional dependencies
 prost-derive = { version = "0.11", optional = true }
diff --git a/p2p/src/lib.rs b/p2p/src/lib.rs
index ce3a31314..efcc9a172 100644
--- a/p2p/src/lib.rs
+++ b/p2p/src/lib.rs
@@ -20,7 +20,6 @@
     unused_qualifications
 )]
 #![doc(
-    html_root_url = "https://docs.rs/tendermint-p2p/0.28.0",
     html_logo_url = "https://raw.githubusercontent.com/informalsystems/tendermint-rs/master/img/logo-tendermint-rs_3961x4001.png"
 )]
 
diff --git a/pbt-gen/Cargo.toml b/pbt-gen/Cargo.toml
index ef5449063..fbf08a202 100644
--- a/pbt-gen/Cargo.toml
+++ b/pbt-gen/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name        = "tendermint-pbt-gen"
-version     = "0.28.0"
+version     = "0.29.0"
 authors     = ["Informal Systems <hello@informal.systems>"]
 edition     = "2021"
 license     = "Apache-2.0"
diff --git a/proto/Cargo.toml b/proto/Cargo.toml
index 241aad13e..3c8759fa4 100644
--- a/proto/Cargo.toml
+++ b/proto/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name       = "tendermint-proto"
-version    = "0.28.0"
+version    = "0.29.0"
 authors    = ["Informal Systems <hello@informal.systems>"]
 edition    = "2021"
 license    = "Apache-2.0"
diff --git a/proto/src/lib.rs b/proto/src/lib.rs
index 52357a0f3..0ef13c4f4 100644
--- a/proto/src/lib.rs
+++ b/proto/src/lib.rs
@@ -4,7 +4,6 @@
 #![deny(warnings, trivial_casts, trivial_numeric_casts, unused_import_braces)]
 #![allow(clippy::large_enum_variant)]
 #![forbid(unsafe_code)]
-#![doc(html_root_url = "https://docs.rs/tendermint-proto/0.28.0")]
 
 extern crate alloc;
 
diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml
index 432ac36fc..1c20b0a32 100644
--- a/rpc/Cargo.toml
+++ b/rpc/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name       = "tendermint-rpc"
-version    = "0.28.0"
+version    = "0.29.0"
 edition    = "2021"
 license    = "Apache-2.0"
 homepage   = "https://www.tendermint.com/"
@@ -69,8 +69,8 @@ pin-project = { version = "1.0.1", default-features = false }
 serde = { version = "1", default-features = false, features = [ "derive" ] }
 serde_bytes = { version = "0.11", default-features = false }
 serde_json = { version = "1", default-features = false, features = ["std"] }
-tendermint-config = { version = "0.28.0", path = "../config", default-features = false }
-tendermint = { version = "0.28.0", default-features = false, path = "../tendermint" }
+tendermint-config = { version = "0.29.0", path = "../config", default-features = false }
+tendermint = { version = "0.29.0", default-features = false, path = "../tendermint" }
 thiserror = { version = "1", default-features = false }
 time = { version = "0.3", default-features = false, features = ["macros", "parsing"] }
 uuid = { version = "0.8", default-features = false }
diff --git a/std-ext/Cargo.toml b/std-ext/Cargo.toml
index ef63beb23..95c12ec33 100644
--- a/std-ext/Cargo.toml
+++ b/std-ext/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name       = "tendermint-std-ext"
-version    = "0.28.0"
+version    = "0.29.0"
 edition    = "2021"
 license    = "Apache-2.0"
 homepage   = "https://www.tendermint.com/"
diff --git a/tendermint/Cargo.toml b/tendermint/Cargo.toml
index 53bf83e61..1d152af70 100644
--- a/tendermint/Cargo.toml
+++ b/tendermint/Cargo.toml
@@ -1,7 +1,6 @@
 [package]
 name       = "tendermint"
-version    = "0.28.0" # Also update `html_root_url` in lib.rs and
-                               # depending crates (rpc, light-node, ..) when bumping this
+version    = "0.29.0" # Also update depending crates (rpc, light-node, etc..) when bumping this .
 license    = "Apache-2.0"
 homepage   = "https://www.tendermint.com/"
 repository = "https://github.com/informalsystems/tendermint-rs/tree/main/tendermint"
@@ -45,7 +44,7 @@ serde_repr = { version = "0.1", default-features = false }
 signature = { version = "1", default-features = false }
 subtle = { version = "2", default-features = false }
 subtle-encoding = { version = "0.5", default-features = false, features = ["bech32-preview"] }
-tendermint-proto = { version = "0.28.0", default-features = false, path = "../proto" }
+tendermint-proto = { version = "0.29.0", default-features = false, path = "../proto" }
 time = { version = "0.3", default-features = false, features = ["macros", "parsing"] }
 zeroize = { version = "1.1", default-features = false, features = ["zeroize_derive", "alloc"] }
 flex-error = { version = "0.4.4", default-features = false }
diff --git a/tendermint/src/lib.rs b/tendermint/src/lib.rs
index e106af29f..ad70ff2ec 100644
--- a/tendermint/src/lib.rs
+++ b/tendermint/src/lib.rs
@@ -15,7 +15,6 @@
 )]
 #![forbid(unsafe_code)]
 #![doc(
-    html_root_url = "https://docs.rs/tendermint/0.28.0",
     html_logo_url = "https://raw.githubusercontent.com/informalsystems/tendermint-rs/master/img/logo-tendermint-rs_3961x4001.png"
 )]
 
diff --git a/tools/rpc-probe/Cargo.toml b/tools/rpc-probe/Cargo.toml
index de332a3fd..a13a6bc3b 100644
--- a/tools/rpc-probe/Cargo.toml
+++ b/tools/rpc-probe/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name       = "tendermint-rpc-probe"
-version    = "0.28.0"
+version    = "0.29.0"
 authors    = ["Informal Systems <hello@informal.systems>"]
 edition    = "2021"
 license    = "Apache-2.0"


Test patch:
diff --git a/test/Cargo.toml b/test/Cargo.toml
index 09d3d8368..55ab92c54 100644
--- a/test/Cargo.toml
+++ b/test/Cargo.toml
@@ -1,7 +1,7 @@
 [package]
 name        = "tendermint-test"
 description = "Tendermint workspace tests and common utilities for testing."
-version     = "0.28.0"
+version     = "0.29.0"
 edition     = "2021"
 license     = "Apache-2.0"
 categories  = ["development", "test", "tools"]
diff --git a/testgen/Cargo.toml b/testgen/Cargo.toml
index f47c6798d..761d2f316 100644
--- a/testgen/Cargo.toml
+++ b/testgen/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name        = "tendermint-testgen"
-version     = "0.28.0"
+version     = "0.29.0"
 authors     = ["Informal Systems <hello@informal.systems>"]
 edition     = "2021"
 readme      = "README.md"
@@ -16,7 +16,7 @@ description = """
     """
 
 [dependencies]
-tendermint = { version = "0.28.0", path = "../tendermint", features = ["clock"] }
+tendermint = { version = "0.29.0", path = "../tendermint", features = ["clock"] }
 serde = { version = "1", default-features = false, features = ["derive"] }
 serde_json = { version = "1", default-features = false, features = ["std"] }
 ed25519-consensus = { version = "2", default-features = false }
diff --git a/tools/abci-test/Cargo.toml b/tools/abci-test/Cargo.toml
index 90e8d0428..2968ec9c8 100644
--- a/tools/abci-test/Cargo.toml
+++ b/tools/abci-test/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "abci-test"
-version = "0.28.0"
+version = "0.29.0"
 authors = ["Informal Systems <hello@informal.systems>"]
 edition = "2021"
 description = """
@@ -14,9 +14,9 @@ description = """
 flex-error = { version = "0.4.4", default-features = false, features = ["std", "eyre_tracer"] }
 futures = "0.3"
 structopt = "0.3"
-tendermint = { version = "0.28.0", path = "../../tendermint" }
-tendermint-config = { version = "0.28.0", path = "../../config" }
-tendermint-rpc = { version = "0.28.0", path = "../../rpc", features = [ "websocket-client" ] }
+tendermint = { version = "0.29.0", path = "../../tendermint" }
+tendermint-config = { version = "0.29.0", path = "../../config" }
+tendermint-rpc = { version = "0.29.0", path = "../../rpc", features = [ "websocket-client" ] }
 tracing = "0.1"
 tracing-subscriber = "0.2"
 tokio = { version = "1.20", features = ["full"] }
diff --git a/tools/kvstore-test/Cargo.toml b/tools/kvstore-test/Cargo.toml
index 6a50b0e81..5ca550ccb 100644
--- a/tools/kvstore-test/Cargo.toml
+++ b/tools/kvstore-test/Cargo.toml
@@ -11,9 +11,9 @@ edition = "2021"
 [dev-dependencies]
 futures = "0.3"
 sha2 = "0.10"
-tendermint = { version = "0.28.0", path = "../../tendermint" }
-tendermint-light-client = { version = "0.28.0", path = "../../light-client", features = ["unstable"] }
-tendermint-rpc = { version = "0.28.0", path = "../../rpc", features = [ "http-client", "websocket-client" ] }
+tendermint = { version = "0.29.0", path = "../../tendermint" }
+tendermint-light-client = { version = "0.29.0", path = "../../light-client", features = ["unstable"] }
+tendermint-rpc = { version = "0.29.0", path = "../../rpc", features = [ "http-client", "websocket-client" ] }
 tokio = { version = "1.0", features = [ "rt-multi-thread", "macros" ] }
 tracing = "0.1"
 tracing-subscriber = "0.2"