Skip to content

Commit

Permalink
Release v0.36.0 (informalsystems#1414)
Browse files Browse the repository at this point in the history
  • Loading branch information
romac authored Apr 25, 2024
1 parent 38a067c commit 1b219d2
Show file tree
Hide file tree
Showing 29 changed files with 108 additions and 47 deletions.
3 changes: 3 additions & 0 deletions .changelog/v0.36.0/summary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This release brings substantial performance improvements to the voting power computation within the light client, improves the handling of misformed blocks (eg. with empty `last_commit` on non-first block) when decoding them from Protobuf or RPC responses, and adds missing `serde` derives on some Protobuf definitions.

This release also technically contains a breaking change in `tendermint-proto`, but this should not impact normal use of the library, as the `ToPrimitive` impl that was removed on `BlockIdFlag` trait did not provide any additional functionality.
58 changes: 58 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,63 @@
# CHANGELOG

## v0.36.0

This release brings substantial performance improvements to the voting power computation within the light client, improves the handling of misformed blocks (eg. with empty `last_commit` on non-first block) when decoding them from Protobuf or RPC responses, and adds missing `serde` derives on some Protobuf definitions.

This release also technically contains a breaking change in `tendermint-proto`, but this should not impact normal use of the library, as the `ToPrimitive` impl that was removed on `BlockIdFlag` trait did not provide any additional functionality.

### BREAKING CHANGES

- `[tendermint-proto]` Remove redundant impl of `num_traits::ToPrimitive` for `BlockIDFlag`
([\#1389](https://github.com/informalsystems/tendermint-rs/pull/1389))
- `[tendermint]` Change `EventAttribute`'s `key` and `value` fields from `String` to `Vec<u8>` for Tendermint v0.34, as enforced by the Protobuf schema for Tendermint v0.34.
`tendermint::abci::EventAttribute` is now an enum, to account for version 0.34 and 0.37+, therefore the `key`, `value` and `index` fields now have to be retrieved through the `key_str()`/`key_bytes`, `value_str()`/`value_bytes()` and `index()` methods.
([\#1400](https://github.com/informalsystems/tendermint-rs/issues/1400)).
- `[light-client-verifier]` Rework VerificationPredicates and VotingPowerCalculator
by introducing methods which check validators and signers overlap at once.
The motivation of this is to avoid checking the same signature multiple
times.

Consider a validator is in old and new set. Previously their signature would
be verified twice. Once by call to `has_sufficient_validators_overlap`
method and second time by call to `has_sufficient_signers_overlap` method.

With the new interface, `has_sufficient_validators_and_signers_overlap` is
called and it can be implemented to remember which signatures have been
verified.

As a side effect of those changes, signatures are now verified in the order
of validator’s power which may further reduce number of signatures which
need to be verified.

([\#1410](https://github.com/informalsystems/tendermint-rs/pull/1410))

### FEATURES

- `[tendermint-proto]` Add missing `serde` derives on Protobuf definitions
([\#1389](https://github.com/informalsystems/tendermint-rs/pull/1389))
- `[tendermint]` Add the following impls for `ed25519-consensus`:
* `From<ed25519_consensus::SigningKey` for `tendermint::PrivateKey`
* `From<ed25519_consensus::SigningKey>` for `tendermint::SigningKey`
* `From<ed25519_consensus::VerificationKey>` for `tendermint::PublicKey`
* `From<ed25519_consensus::VerificationKey>` for `tendermint::VerificationKey`
([\#1401](https://github.com/informalsystems/tendermint-rs/pull/1401))

### IMPROVEMENTS

- `[tendermint]` Allow misformed blocks (eg. with empty `last_commit`
on non-first block) when decoding them from Protobuf or RPC responses
([\#1403](https://github.com/informalsystems/tendermint-rs/issues/1403))
- `[tendermint]` Check `index ≤ i32::MAX` invariant when converting `usize`
into `ValidatorIndex`.
([\#1411](https://github.com/informalsystems/tendermint-rs/issues/1411))
- `[light-client-verifier]` Optimise validators lookup in
`ProvidedVotingPowerCalculator::voting_power_in` method.
([\#1407](https://github.com/informalsystems/tendermint-rs/pull/1407))
- `[tendermint-light-client-verifier]` Reuse buffer used to store
sign_bytes to reduce number of allocations and deallocations.
([\#1413](https://github.com/informalsystems/tendermint-rs/pull/1413))

## v0.35.0

This release brings breaking changes related to `flex-error`,
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.35.0"
version = "0.36.0"
authors = ["Informal Systems <[email protected]>"]
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.12", default-features = false }
tendermint-proto = { version = "0.35.0", default-features = false, path = "../proto" }
tendermint-proto = { version = "0.36.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.35.0" # Also update depending crates (rpc, light-node, ..) when bumping this.
version = "0.36.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.35.0", default-features = false, features = ["rust-crypto"], path = "../tendermint" }
tendermint = { version = "0.36.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.35.0"
version = "0.36.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.35.0", path = "../tendermint" }
tendermint-rpc = { version = "0.35.0", path = "../rpc", features = ["http-client"] }
tendermint-light-client = { version = "0.35.0", path = "../light-client" }
tendermint-light-client-detector = { version = "0.35.0", path = "../light-client-detector" }
tendermint = { version = "0.36.0", path = "../tendermint" }
tendermint-rpc = { version = "0.36.0", path = "../rpc", features = ["http-client"] }
tendermint-light-client = { version = "0.36.0", path = "../light-client" }
tendermint-light-client-detector = { version = "0.36.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.35.0"
version = "0.36.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.35.0", path = "../tendermint" }
tendermint-rpc = { version = "0.35.0", path = "../rpc", features = ["http-client"] }
tendermint-proto = { version = "0.35.0", path = "../proto" }
tendermint-light-client = { version = "0.35.0", path = "../light-client" }
tendermint = { version = "0.36.0", path = "../tendermint" }
tendermint-rpc = { version = "0.36.0", path = "../rpc", features = ["http-client"] }
tendermint-proto = { version = "0.36.0", path = "../proto" }
tendermint-light-client = { version = "0.36.0", path = "../light-client" }

crossbeam-channel = { version = "0.5.11", default-features = false }
derive_more = { version = "0.99.5", default-features = false, features = ["display"] }
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.35.0"
version = "0.36.0"
authors = ["Informal Systems <[email protected]>"]
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.35.0", default-features = false, path = "../tendermint" }
tendermint-light-client-verifier = { version = "0.35.0", features = ["rust-crypto"], default-features = false, path = "../light-client-verifier" }
tendermint = { version = "0.36.0", default-features = false, path = "../tendermint" }
tendermint-light-client-verifier = { version = "0.36.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.35.0"
version = "0.36.0"
edition = "2021"
license = "Apache-2.0"
readme = "README.md"
Expand All @@ -27,7 +27,7 @@ default = ["rust-crypto", "flex-error/std"]
rust-crypto = ["tendermint/rust-crypto"]

[dependencies]
tendermint = { version = "0.35.0", path = "../tendermint", default-features = false }
tendermint = { version = "0.36.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.35.0"
version = "0.36.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.35.0", path = "../tendermint", default-features = false }
tendermint-rpc = { version = "0.35.0", path = "../rpc", default-features = false }
tendermint-light-client-verifier = { version = "0.35.0", path = "../light-client-verifier", default-features = false }
tendermint = { version = "0.36.0", path = "../tendermint", default-features = false }
tendermint-rpc = { version = "0.36.0", path = "../rpc", default-features = false }
tendermint-light-client-verifier = { version = "0.36.0", path = "../light-client-verifier", default-features = false }

contracts = { version = "0.6.2", default-features = false }
crossbeam-channel = { version = "0.5.11", default-features = false, features = ["std"] }
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.35.0"
version = "0.36.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.5", default-features = false }
flex-error = { version = "0.4.4", default-features = false }

# path dependencies
tendermint = { path = "../tendermint", version = "0.35.0", default-features = false }
tendermint-proto = { path = "../proto", version = "0.35.0", default-features = false }
tendermint-std-ext = { path = "../std-ext", version = "0.35.0", default-features = false }
tendermint = { path = "../tendermint", version = "0.36.0", default-features = false }
tendermint-proto = { path = "../proto", version = "0.36.0", default-features = false }
tendermint-std-ext = { path = "../std-ext", version = "0.36.0", default-features = false }

# optional dependencies
prost-derive = { version = "0.12", optional = true }
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.35.0"
version = "0.36.0"
authors = ["Informal Systems <[email protected]>"]
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.35.0"
version = "0.36.0"
authors = ["Informal Systems <[email protected]>"]
edition = "2021"
license = "Apache-2.0"
Expand Down
8 changes: 4 additions & 4 deletions rpc/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "tendermint-rpc"
version = "0.35.0"
version = "0.36.0"
edition = "2021"
license = "Apache-2.0"
homepage = "https://www.tendermint.com/"
Expand Down Expand Up @@ -55,9 +55,9 @@ websocket-client = [
]

[dependencies]
tendermint = { version = "0.35.0", default-features = false, path = "../tendermint" }
tendermint-config = { version = "0.35.0", path = "../config", default-features = false }
tendermint-proto = { version = "0.35.0", path = "../proto", default-features = false }
tendermint = { version = "0.36.0", default-features = false, path = "../tendermint" }
tendermint-config = { version = "0.36.0", path = "../config", default-features = false }
tendermint-proto = { version = "0.36.0", path = "../proto", default-features = false }

async-trait = { version = "0.1", default-features = false }
bytes = { version = "1.0", 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.35.0"
version = "0.36.0"
edition = "2021"
license = "Apache-2.0"
homepage = "https://www.tendermint.com/"
Expand Down
4 changes: 2 additions & 2 deletions tendermint/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "tendermint"
version = "0.35.0" # Also update depending crates (rpc, light-node, etc..) when bumping this .
version = "0.36.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 @@ -44,7 +44,7 @@ serde_repr = { version = "0.1", default-features = false }
signature = { version = "2", default-features = false, features = ["alloc"] }
subtle = { version = "2", default-features = false }
subtle-encoding = { version = "0.5", default-features = false, features = ["bech32-preview"] }
tendermint-proto = { version = "0.35.0", default-features = false, path = "../proto" }
tendermint-proto = { version = "0.36.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
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.35.0"
version = "0.36.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.35.0"
version = "0.36.0"
authors = ["Informal Systems <[email protected]>"]
edition = "2021"
readme = "README.md"
Expand All @@ -16,7 +16,7 @@ description = """
"""

[dependencies]
tendermint = { version = "0.35.0", path = "../tendermint", features = ["clock"] }
tendermint = { version = "0.36.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.35.0"
version = "0.36.0"
authors = ["Informal Systems <[email protected]>"]
edition = "2021"
description = """
Expand All @@ -14,9 +14,9 @@ description = """
flex-error = { version = "0.4.4", default-features = false, features = ["std"] }
futures = "0.3"
structopt = "0.3"
tendermint = { version = "0.35.0", path = "../../tendermint" }
tendermint-config = { version = "0.35.0", path = "../../config" }
tendermint-rpc = { version = "0.35.0", path = "../../rpc", features = [ "websocket-client" ] }
tendermint = { version = "0.36.0", path = "../../tendermint" }
tendermint-config = { version = "0.36.0", path = "../../config" }
tendermint-rpc = { version = "0.36.0", path = "../../rpc", features = [ "websocket-client" ] }
tracing = "0.1"
tracing-subscriber = "0.2"
tokio = { version = "1.20", features = ["full"] }
6 changes: 3 additions & 3 deletions tools/kvstore-test/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ edition = "2021"
[dev-dependencies]
futures = "0.3"
sha2 = "0.10"
tendermint = { version = "0.35.0", path = "../../tendermint" }
tendermint-light-client = { version = "0.35.0", path = "../../light-client", features = ["unstable"] }
tendermint-rpc = { version = "0.35.0", path = "../../rpc", features = [ "http-client", "websocket-client" ] }
tendermint = { version = "0.36.0", path = "../../tendermint" }
tendermint-light-client = { version = "0.36.0", path = "../../light-client", features = ["unstable"] }
tendermint-rpc = { version = "0.36.0", path = "../../rpc", features = [ "http-client", "websocket-client" ] }
tokio = { version = "1.0", features = [ "rt-multi-thread", "macros" ] }
tracing = "0.1"
tracing-subscriber = "0.3"
Expand Down
2 changes: 1 addition & 1 deletion tools/rpc-probe/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "tendermint-rpc-probe"
version = "0.35.0"
version = "0.36.0"
authors = ["Informal Systems <[email protected]>"]
edition = "2021"
license = "Apache-2.0"
Expand Down

0 comments on commit 1b219d2

Please sign in to comment.