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

Release v0.36.0 #1414

Merged
merged 2 commits into from
Apr 25, 2024
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
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 <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.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 <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.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 <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.35.0"
version = "0.36.0"
authors = ["Informal Systems <hello@informal.systems>"]
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 <hello@informal.systems>"]
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 <hello@informal.systems>"]
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 <hello@informal.systems>"]
edition = "2021"
license = "Apache-2.0"
Expand Down
Loading