Skip to content

Commit

Permalink
Prepare release for v0.32.0 (#1314)
Browse files Browse the repository at this point in the history
* Release and update changelog

* Bump version to 0.32.0

* Update light client readmes

* Update main readme

* Update release summaries with dates

* Update copyright notice
  • Loading branch information
romac committed May 3, 2023
1 parent 6a4cd24 commit 91ff1e4
Show file tree
Hide file tree
Showing 33 changed files with 176 additions and 80 deletions.
2 changes: 1 addition & 1 deletion .changelog/v0.29.0/summary.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
*Feb 17, 2023*
*Feb 17th, 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.
2 changes: 2 additions & 0 deletions .changelog/v0.29.1/summary.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
*February 27th, 2023*

Improve debug output for Ed25519 keys.
2 changes: 2 additions & 0 deletions .changelog/v0.30.0/summary.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
*March 7th, 2023*

This release introduces support for multiple versions of CometBFT protocols.
Consumers of tendermint-rs crates, with the exception of `tendermint-abci`,
should be able to interoperate with CometBFT nodes based on 0.34.x and
Expand Down
2 changes: 2 additions & 0 deletions .changelog/v0.31.0/summary.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
*April 16th, 2023*

Upgrade signature crate versions and add a `TypedEvent` trait for ABCI events.
2 changes: 2 additions & 0 deletions .changelog/v0.31.1/summary.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
*April 17th, 2023*

Expose the `TypedEvent` marker trait.
16 changes: 16 additions & 0 deletions .changelog/v0.32.0/summary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
*May 3rd, 2023*

This release notably comes with a fully featured [light client attack detector][attack-detector],
and introduces a [CLI for the light client][light-client-cli] for verifying headers,
detecting attacks against the light client, and reporting the evidence to primary and witness nodes.

It also adds a [`Verifier::verify_misbehaviour_header`][verifier-method] method for verifying
headers coming from a misbehaviour evidence.

Moreover, the [`Client`][client-trait] trait is now exposed by the `tendermint-rpc` without requiring
the `http-client` or the `websocket-client` feature flags to be enabled.

[light-client-cli]: https://github.com/informalsystems/tendermint-rs/tree/main/light-client-cli
[attack-detector]: https://github.com/informalsystems/tendermint-rs/tree/main/light-client-detector
[verifier-method]: https://github.com/informalsystems/tendermint-rs/blob/6a4cd245b6f362832b974104b40be973dd0ef108/light-client-verifier/src/verifier.rs#L67
[client-trait]: https://github.com/informalsystems/tendermint-rs/blob/6a4cd245b6f362832b974104b40be973dd0ef108/rpc/src/client.rs#L49
73 changes: 63 additions & 10 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,54 @@
# CHANGELOG

## v0.32.0

*May 3rd, 2023*

This release notably comes with a fully featured [light client attack detector][attack-detector],
and introduces a [CLI for the light client][light-client-cli] for verifying headers,
detecting attacks against the light client, and reporting the evidence to primary and witness nodes.

It also adds a [`Verifier::verify_misbehaviour_header`][verifier-method] method for verifying
headers coming from a misbehaviour evidence.

Moreover, the [`Client`][client-trait] trait is now exposed by the `tendermint-rpc` without requiring
the `http-client` or the `websocket-client` feature flags to be enabled.

[light-client-cli]: https://github.com/informalsystems/tendermint-rs/tree/main/light-client-cli
[attack-detector]: https://github.com/informalsystems/tendermint-rs/tree/main/light-client-detector
[verifier-method]: https://github.com/informalsystems/tendermint-rs/blob/6a4cd245b6f362832b974104b40be973dd0ef108/light-client-verifier/src/verifier.rs#L67
[client-trait]: https://github.com/informalsystems/tendermint-rs/blob/6a4cd245b6f362832b974104b40be973dd0ef108/rpc/src/client.rs#L49

### BREAKING CHANGES

- [`tendermint-light-client-verifier`] Rename `Verifier::verify`
to `Verifier::verify_update_header` to better describe
its purpose versus `Verifier::verify_misbehaviour_header`
([\#1294](https://github.com/informalsystems/tendermint-rs/issues/1294))

### FEATURES

- [`tendermint-light-client-detector`] Implement a light client
attack detector, based on its Go version found in Comet
([\#1291](https://github.com/informalsystems/tendermint-rs/issues/1291))
- [`tendermint-light-client-verifier`] Add `Verifier::verify_misbehaviour_header`
for verifying headers coming from a misbehaviour evidence.
The verification for these headers is a bit more relaxed in order to catch FLA attacks.
In particular the "header in the future" check for the header should be skipped.
([\#1294](https://github.com/informalsystems/tendermint-rs/issues/1294))

### IMPROVEMENTS

- [`tendermint-rpc`]: Export `Client` trait unconditionally, without
having to specify either the `http-client` or `websocket-client`
([\#1235](https://github.com/informalsystems/tendermint-rs/issues/1235))
- [`tendermint`]: Loosen bounds of merkle hashing functions to accept borrowed data.
([\#1310](https://github.com/informalsystems/tendermint-rs/issues/1310))

## v0.31.1

*April 17th, 2023*

Expose the `TypedEvent` marker trait.

### FEATURES
Expand All @@ -11,6 +58,8 @@ Expose the `TypedEvent` marker trait.

## v0.31.0

*April 16th, 2023*

Upgrade signature crate versions and add a `TypedEvent` trait for ABCI events.

### BREAKING CHANGES
Expand All @@ -27,6 +76,8 @@ Upgrade signature crate versions and add a `TypedEvent` trait for ABCI events.

## v0.30.0

*March 7th, 2023*

This release introduces support for multiple versions of CometBFT protocols.
Consumers of tendermint-rs crates, with the exception of `tendermint-abci`,
should be able to interoperate with CometBFT nodes based on 0.34.x and
Expand Down Expand Up @@ -77,14 +128,16 @@ should be able to interoperate with CometBFT nodes based on 0.34.x and
- [`tendermint-abci`] Port ABCI application support to 0.37 Tendermint Core API.
No legacy support for 0.34 is provided at the moment.
([#1193](https://github.com/informalsystems/tendermint-rs/pull/1193)).
- [`tendermint`] Derive `Hash` on `tendermint::Time`
- Derive `Hash` on `tendermint::Time`
([#1278](https://github.com/informalsystems/tendermint-rs/issues/1278))
- [`tendermint-light-client`] Show `max_clock_drift` in error raised when header
is from the future
([\#1280](https://github.com/informalsystems/tendermint-rs/issues/1280))

## v0.29.1

*February 27th, 2023*

Improve debug output for Ed25519 keys.

### BUG FIXES
Expand All @@ -94,7 +147,7 @@ Improve debug output for Ed25519 keys.

## v0.29.0

*Feb 17, 2023*
*Feb 17th, 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.

Expand Down Expand Up @@ -553,18 +606,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

Expand Down
12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,15 @@ Libraries:
- [tendermint-abci](./abci) - A lightweight, low-level framework for building
Tendermint ABCI applications in Rust
- [tendermint-light-client](./light-client) - Tendermint light client library
for verifying signed headers, tracking validator set changes, and detecting
forks
for verifying signed headers and tracking validator set changes
- [tendermint-light-client-detector](./light-client-detector) - Library for
detecting and reporting attacks against the Tendermint light client
- [tendermint-light-client-cli](./light-client-cli) - CLI for the light client,
for verifying headers, detecting attacks and reporting them.
- [tendermint-light-client-js](./light-client-js) - Low-level WASM interface for
interacting with the Tendermint light client verification functionality
- [tendermint-p2p](./p2p) - At present this primarily provides the ability to
connect to Tendermint nodes via Tendermint's [secret
connection](tendermint-secret-conn).
connect to Tendermint nodes via Tendermint's [secret connection](tendermint-secret-conn)
- [tendermint-proto](./proto) - Protobuf data structures (generated using Prost)
for wire-level interaction with Tendermint
- [tendermint-rpc](./rpc) - Tendermint RPC client and response types
Expand Down Expand Up @@ -82,7 +84,7 @@ Papers

## License

Copyright © 2020-2022 Informal Systems
Copyright © 2020 Informal Systems and contributors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use the files in this repository except in compliance with the License.
Expand Down
4 changes: 2 additions & 2 deletions abci/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "tendermint-abci"
version = "0.31.1"
version = "0.32.0"
authors = ["Informal Systems <hello@informal.systems>"]
edition = "2021"
license = "Apache-2.0"
Expand Down Expand Up @@ -33,7 +33,7 @@ binary = [
[dependencies]
bytes = { version = "1.0", default-features = false }
prost = { version = "0.11", default-features = false }
tendermint-proto = { version = "0.31.1", default-features = false, path = "../proto" }
tendermint-proto = { version = "0.32.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 }
Expand Down
4 changes: 2 additions & 2 deletions config/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "tendermint-config"
version = "0.31.1" # Also update depending crates (rpc, light-node, ..) when bumping this.
version = "0.32.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"
Expand All @@ -24,7 +24,7 @@ all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[dependencies]
tendermint = { version = "0.31.1", default-features = false, features = ["rust-crypto"], path = "../tendermint" }
tendermint = { version = "0.32.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"
Expand Down
10 changes: 5 additions & 5 deletions light-client-cli/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "tendermint-light-client-cli"
version = "0.31.1"
version = "0.32.0"
edition = "2021"
license = "Apache-2.0"
readme = "README.md"
Expand All @@ -23,10 +23,10 @@ all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[dependencies]
tendermint = { version = "0.31.1", path = "../tendermint" }
tendermint-rpc = { version = "0.31.1", path = "../rpc", features = ["http-client"] }
tendermint-light-client = { version = "0.31.1", path = "../light-client" }
tendermint-light-client-detector = { version = "0.31.1", path = "../light-client-detector" }
tendermint = { version = "0.32.0", path = "../tendermint" }
tendermint-rpc = { version = "0.32.0", path = "../rpc", features = ["http-client"] }
tendermint-light-client = { version = "0.32.0", path = "../light-client" }
tendermint-light-client-detector = { version = "0.32.0", path = "../light-client-detector" }

clap = { version = "4.1.8", features = ["derive"] }
color-eyre = "0.6.2"
Expand Down
10 changes: 5 additions & 5 deletions light-client-detector/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "tendermint-light-client-detector"
version = "0.31.1"
version = "0.32.0"
edition = "2021"
license = "Apache-2.0"
readme = "README.md"
Expand All @@ -23,10 +23,10 @@ all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[dependencies]
tendermint = { version = "0.31.1", path = "../tendermint" }
tendermint-rpc = { version = "0.31.1", path = "../rpc", features = ["http-client"] }
tendermint-proto = { version = "0.31.1", path = "../proto" }
tendermint-light-client = { version = "0.31.1", path = "../light-client" }
tendermint = { version = "0.32.0", path = "../tendermint" }
tendermint-rpc = { version = "0.32.0", path = "../rpc", features = ["http-client"] }
tendermint-proto = { version = "0.32.0", path = "../proto" }
tendermint-light-client = { version = "0.32.0", path = "../light-client" }

contracts = { version = "0.6.2", default-features = false }
crossbeam-channel = { version = "0.4.2", default-features = false }
Expand Down
29 changes: 29 additions & 0 deletions light-client-detector/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
[![Crate][crate-image]][crate-link]
[![Docs][docs-image]][docs-link]

See the [repo root] for build status, license, rust version, etc.

# Light Client Attack Detector

Implementation of the [Light Client Detection][light-client-detection].

## Documentation

See documentation on [docs.rs][docs-link].

## Testing

The Tendermint Light Client Attack Detector is currently primarily tested via the [Hermes][hermes] integration test suite

[//]: # (badges)

[crate-image]: https://img.shields.io/crates/v/tendermint-light-client-detector.svg
[crate-link]: https://crates.io/crates/tendermint-light-client-detector
[docs-image]: https://docs.rs/tendermint-light-client-detector/badge.svg
[docs-link]: https://docs.rs/tendermint-light-client-detector/

[//]: # (general links)

[repo root]: https://github.com/informalsystems/tendermint-rs
[Tendermint]: https://github.com/tendermint/tendermint
[light-client-detection]: https://github.com/informalsystems/tendermint-rs/tree/main/docs/spec/lightclient/detection
6 changes: 3 additions & 3 deletions light-client-js/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "tendermint-light-client-js"
version = "0.31.1"
version = "0.32.0"
authors = ["Informal Systems <hello@informal.systems>"]
edition = "2021"
license = "Apache-2.0"
Expand All @@ -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.31.1", default-features = false, path = "../tendermint" }
tendermint-light-client-verifier = { version = "0.31.1", features = ["rust-crypto"], default-features = false, path = "../light-client-verifier" }
tendermint = { version = "0.32.0", default-features = false, path = "../tendermint" }
tendermint-light-client-verifier = { version = "0.32.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 }

Expand Down
4 changes: 2 additions & 2 deletions light-client-verifier/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "tendermint-light-client-verifier"
version = "0.31.1"
version = "0.32.0"
edition = "2021"
license = "Apache-2.0"
readme = "README.md"
Expand All @@ -27,7 +27,7 @@ default = ["rust-crypto", "flex-error/std", "flex-error/eyre_tracer"]
rust-crypto = ["tendermint/rust-crypto"]

[dependencies]
tendermint = { version = "0.31.1", path = "../tendermint", default-features = false }
tendermint = { version = "0.32.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 }
Expand Down
8 changes: 4 additions & 4 deletions light-client/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "tendermint-light-client"
version = "0.31.1"
version = "0.32.0"
edition = "2021"
license = "Apache-2.0"
readme = "README.md"
Expand Down Expand Up @@ -35,9 +35,9 @@ unstable = ["rust-crypto"]
mbt = ["rust-crypto"]

[dependencies]
tendermint = { version = "0.31.1", path = "../tendermint", default-features = false }
tendermint-rpc = { version = "0.31.1", path = "../rpc", default-features = false }
tendermint-light-client-verifier = { version = "0.31.1", path = "../light-client-verifier", default-features = false }
tendermint = { version = "0.32.0", path = "../tendermint", default-features = false }
tendermint-rpc = { version = "0.32.0", path = "../rpc", default-features = false }
tendermint-light-client-verifier = { version = "0.32.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 }
Expand Down
Loading

0 comments on commit 91ff1e4

Please sign in to comment.