Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare release for v0.32.0 #1314

Merged
merged 6 commits into from
May 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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