diff --git a/.changelog/unreleased/features/1338-grpc-server-rpc-abci.md b/.changelog/v0.33.1/features/1338-grpc-server-rpc-abci.md similarity index 100% rename from .changelog/unreleased/features/1338-grpc-server-rpc-abci.md rename to .changelog/v0.33.1/features/1338-grpc-server-rpc-abci.md diff --git a/.changelog/v0.33.1/summary.md b/.changelog/v0.33.1/summary.md new file mode 100644 index 000000000..d0318e644 --- /dev/null +++ b/.changelog/v0.33.1/summary.md @@ -0,0 +1,3 @@ +*Aug 29th, 2023* + +`tendermint-proto`: This release adds an optional `grpc-server` feature to the proto crate. When enabled the feature will include gRPC service definitions for the RPC and ABCI servers. diff --git a/.changelog/unreleased/breaking-changes/1351-serializer-fixes.md b/.changelog/v0.33.2/breaking-changes/1351-serializer-fixes.md similarity index 100% rename from .changelog/unreleased/breaking-changes/1351-serializer-fixes.md rename to .changelog/v0.33.2/breaking-changes/1351-serializer-fixes.md diff --git a/.changelog/unreleased/bug-fixes/1348-valset-deserialization-fixes.md b/.changelog/v0.33.2/bug-fixes/1348-valset-deserialization-fixes.md similarity index 100% rename from .changelog/unreleased/bug-fixes/1348-valset-deserialization-fixes.md rename to .changelog/v0.33.2/bug-fixes/1348-valset-deserialization-fixes.md diff --git a/.changelog/unreleased/bug-fixes/1350-pubkey-serde-fixes.md b/.changelog/v0.33.2/bug-fixes/1350-pubkey-serde-fixes.md similarity index 100% rename from .changelog/unreleased/bug-fixes/1350-pubkey-serde-fixes.md rename to .changelog/v0.33.2/bug-fixes/1350-pubkey-serde-fixes.md diff --git a/.changelog/unreleased/bug-fixes/1352-fix-absent-vote-json.md b/.changelog/v0.33.2/bug-fixes/1352-fix-absent-vote-json.md similarity index 100% rename from .changelog/unreleased/bug-fixes/1352-fix-absent-vote-json.md rename to .changelog/v0.33.2/bug-fixes/1352-fix-absent-vote-json.md diff --git a/.changelog/unreleased/improvements/1343-add-app-hash-field-to-testgen-header.md b/.changelog/v0.33.2/improvements/1343-add-app-hash-field-to-testgen-header.md similarity index 100% rename from .changelog/unreleased/improvements/1343-add-app-hash-field-to-testgen-header.md rename to .changelog/v0.33.2/improvements/1343-add-app-hash-field-to-testgen-header.md diff --git a/.changelog/unreleased/improvements/1348-valset-deserialization-fixes.md b/.changelog/v0.33.2/improvements/1348-valset-deserialization-fixes.md similarity index 100% rename from .changelog/unreleased/improvements/1348-valset-deserialization-fixes.md rename to .changelog/v0.33.2/improvements/1348-valset-deserialization-fixes.md diff --git a/.changelog/unreleased/improvements/1351-serializer-improvements.md b/.changelog/v0.33.2/improvements/1351-serializer-improvements.md similarity index 100% rename from .changelog/unreleased/improvements/1351-serializer-improvements.md rename to .changelog/v0.33.2/improvements/1351-serializer-improvements.md diff --git a/.changelog/v0.33.2/summary.md b/.changelog/v0.33.2/summary.md new file mode 100644 index 000000000..4dff4573f --- /dev/null +++ b/.changelog/v0.33.2/summary.md @@ -0,0 +1,4 @@ +*September 18th, 2023* + +This release includes bug fixes and performance improvements to how +CometBFT data types are serialized and deserialized. diff --git a/CHANGELOG.md b/CHANGELOG.md index c52875fb4..b7e6d985a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,65 @@ # CHANGELOG +## v0.33.2 + +*September 18th, 2023* + +This release includes bug fixes and performance improvements to how +CometBFT data types are serialized and deserialized. + +### BREAKING CHANGES + +- Changed the serde schema produced by `serialize` functions in these + helper modules ([\#1351](https://github.com/informalsystems/tendermint- + rs/pull/1351)): + + * In `tendermint-proto`: + - `serializers::nullable` + - `serializers::optional` + * In `tendermint`: + - `serializers::apphash` + - `serializers::hash` + - `serializers::option_hash` + + If `serde_json` is used for serialization, the output schema does not change. + But since serde is a generic framework, the changes may be breaking for + other users. Overall, these changes should make the serialized data + acceptable by the corresponding deserializer agnostically of the format. + +### BUG FIXES + +- `[tendermint]` Integer overflows are prevented when calculating the total + voting power value in `validator::Set` + ([\#1348](https://github.com/informalsystems/tendermint-rs/issues/1348)). +- `[tendermint-proto]` `Serialize` and `Deserialize` impls for + `v*::crypto::PublicKey` are corrected to match the JSON schema used by + other implementations + ([\#1350](https://github.com/informalsystems/tendermint-rs/pull/1350)). +- [`tendermint`] Fix JSON serialization of timestamp field for + `CommitSig::BlockIdFlagAbsent` to match what is expected by CometBFT + ([\#1352](https://github.com/informalsystems/tendermint-rs/issues/1352)) + +### IMPROVEMENTS + +- `[tendermint-testgen]` Add `app_hash` field to testgen `Header` and implement + convenient method for default `LightBlock` construction from `Header` + ([\#1343](https://github.com/informalsystems/tendermint-rs/issues/1343)) +- `[tendermint]` Improve and validate deserialization of `validator::Set` + ([\#1348](https://github.com/informalsystems/tendermint-rs/issues/1348)). + The `total_voting_power` field no longer has to be present in the format + processed by `Deserialize`. If it is present, it is validated against the + sum of the `voting_power` values of the listed validators. The sum value + is also checked against the protocol-defined maximum. +- `[tendermint-proto]` In the `Deserialize` impls derived for + `v*::types::ValidatorSet`, the `total_voting_power` field value is retrieved + when present. +- `[tendermint-proto]` Add serialziation helper module + `serializers::from_str_allow_null`. Use it to allow the `proposed_priority` + field value of null in the deserialization of `v*::types::Validator`. +- Corrected custom serializer helpers to consistently produce the format + accepted by the deserializer. Improved performance of deserializers. + ([\#1351](https://github.com/informalsystems/tendermint-rs/pull/1351)) + ## v0.33.1 *Aug 29th, 2023* @@ -718,18 +778,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]` 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)) +- `[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)) ### FEATURES diff --git a/abci/Cargo.toml b/abci/Cargo.toml index 46c953ba7..71983a7ff 100644 --- a/abci/Cargo.toml +++ b/abci/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-abci" -version = "0.33.1" +version = "0.33.2" authors = ["Informal Systems "] edition = "2021" license = "Apache-2.0" @@ -33,7 +33,7 @@ binary = [ [dependencies] bytes = { version = "1.0", default-features = false } prost = { version = "0.11", default-features = false } -tendermint-proto = { version = "0.33.1", default-features = false, path = "../proto" } +tendermint-proto = { version = "0.33.2", 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 } diff --git a/config/Cargo.toml b/config/Cargo.toml index 223fbb775..8587e97e1 100644 --- a/config/Cargo.toml +++ b/config/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-config" -version = "0.33.1" # Also update depending crates (rpc, light-node, ..) when bumping this. +version = "0.33.2" # 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" @@ -24,7 +24,7 @@ all-features = true rustdoc-args = ["--cfg", "docsrs"] [dependencies] -tendermint = { version = "0.33.1", default-features = false, features = ["rust-crypto"], path = "../tendermint" } +tendermint = { version = "0.33.2", 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" diff --git a/light-client-cli/Cargo.toml b/light-client-cli/Cargo.toml index 904090cf5..6be4e1b2a 100644 --- a/light-client-cli/Cargo.toml +++ b/light-client-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-light-client-cli" -version = "0.33.1" +version = "0.33.2" edition = "2021" license = "Apache-2.0" readme = "README.md" @@ -23,10 +23,10 @@ all-features = true rustdoc-args = ["--cfg", "docsrs"] [dependencies] -tendermint = { version = "0.33.1", path = "../tendermint" } -tendermint-rpc = { version = "0.33.1", path = "../rpc", features = ["http-client"] } -tendermint-light-client = { version = "0.33.1", path = "../light-client" } -tendermint-light-client-detector = { version = "0.33.1", path = "../light-client-detector" } +tendermint = { version = "0.33.2", path = "../tendermint" } +tendermint-rpc = { version = "0.33.2", path = "../rpc", features = ["http-client"] } +tendermint-light-client = { version = "0.33.2", path = "../light-client" } +tendermint-light-client-detector = { version = "0.33.2", path = "../light-client-detector" } clap = { version = "4.1.8", features = ["derive"] } color-eyre = "0.6.2" diff --git a/light-client-detector/Cargo.toml b/light-client-detector/Cargo.toml index b8a154cef..f02d6a85e 100644 --- a/light-client-detector/Cargo.toml +++ b/light-client-detector/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-light-client-detector" -version = "0.33.1" +version = "0.33.2" edition = "2021" license = "Apache-2.0" readme = "README.md" @@ -23,10 +23,10 @@ all-features = true rustdoc-args = ["--cfg", "docsrs"] [dependencies] -tendermint = { version = "0.33.1", path = "../tendermint" } -tendermint-rpc = { version = "0.33.1", path = "../rpc", features = ["http-client"] } -tendermint-proto = { version = "0.33.1", path = "../proto" } -tendermint-light-client = { version = "0.33.1", path = "../light-client" } +tendermint = { version = "0.33.2", path = "../tendermint" } +tendermint-rpc = { version = "0.33.2", path = "../rpc", features = ["http-client"] } +tendermint-proto = { version = "0.33.2", path = "../proto" } +tendermint-light-client = { version = "0.33.2", path = "../light-client" } contracts = { version = "0.6.2", default-features = false } crossbeam-channel = { version = "0.4.2", default-features = false } diff --git a/light-client-js/Cargo.toml b/light-client-js/Cargo.toml index 88d0a579f..886ca6d40 100644 --- a/light-client-js/Cargo.toml +++ b/light-client-js/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-light-client-js" -version = "0.33.1" +version = "0.33.2" authors = ["Informal Systems "] edition = "2021" license = "Apache-2.0" @@ -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.33.1", default-features = false, path = "../tendermint" } -tendermint-light-client-verifier = { version = "0.33.1", features = ["rust-crypto"], default-features = false, path = "../light-client-verifier" } +tendermint = { version = "0.33.2", default-features = false, path = "../tendermint" } +tendermint-light-client-verifier = { version = "0.33.2", 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 } diff --git a/light-client-verifier/Cargo.toml b/light-client-verifier/Cargo.toml index 718fe7cc0..f4289c237 100644 --- a/light-client-verifier/Cargo.toml +++ b/light-client-verifier/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-light-client-verifier" -version = "0.33.1" +version = "0.33.2" edition = "2021" license = "Apache-2.0" readme = "README.md" @@ -27,7 +27,7 @@ default = ["rust-crypto", "flex-error/std", "flex-error/eyre_tracer"] rust-crypto = ["tendermint/rust-crypto"] [dependencies] -tendermint = { version = "0.33.1", path = "../tendermint", default-features = false } +tendermint = { version = "0.33.2", path = "../tendermint", default-features = false } derive_more = { version = "0.99.5", default-features = false, features = ["display"] } serde = { version = "1.0.106", default-features = false } diff --git a/light-client/Cargo.toml b/light-client/Cargo.toml index ce4b20ce1..f7be3b43a 100644 --- a/light-client/Cargo.toml +++ b/light-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-light-client" -version = "0.33.1" +version = "0.33.2" edition = "2021" license = "Apache-2.0" readme = "README.md" @@ -35,9 +35,9 @@ unstable = ["rust-crypto"] mbt = ["rust-crypto"] [dependencies] -tendermint = { version = "0.33.1", path = "../tendermint", default-features = false } -tendermint-rpc = { version = "0.33.1", path = "../rpc", default-features = false } -tendermint-light-client-verifier = { version = "0.33.1", path = "../light-client-verifier", default-features = false } +tendermint = { version = "0.33.2", path = "../tendermint", default-features = false } +tendermint-rpc = { version = "0.33.2", path = "../rpc", default-features = false } +tendermint-light-client-verifier = { version = "0.33.2", path = "../light-client-verifier", default-features = false } contracts = { version = "0.6.2", default-features = false } crossbeam-channel = { version = "0.4.2", default-features = false } diff --git a/p2p/Cargo.toml b/p2p/Cargo.toml index 8d27f2832..53ac74edc 100644 --- a/p2p/Cargo.toml +++ b/p2p/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-p2p" -version = "0.33.1" +version = "0.33.2" edition = "2021" license = "Apache-2.0" repository = "https://github.com/informalsystems/tendermint-rs" @@ -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.33.1", default-features = false } -tendermint-proto = { path = "../proto", version = "0.33.1", default-features = false } -tendermint-std-ext = { path = "../std-ext", version = "0.33.1", default-features = false } +tendermint = { path = "../tendermint", version = "0.33.2", default-features = false } +tendermint-proto = { path = "../proto", version = "0.33.2", default-features = false } +tendermint-std-ext = { path = "../std-ext", version = "0.33.2", default-features = false } # optional dependencies prost-derive = { version = "0.11", optional = true } diff --git a/pbt-gen/Cargo.toml b/pbt-gen/Cargo.toml index de418eebe..0738602da 100644 --- a/pbt-gen/Cargo.toml +++ b/pbt-gen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-pbt-gen" -version = "0.33.1" +version = "0.33.2" authors = ["Informal Systems "] edition = "2021" license = "Apache-2.0" diff --git a/proto/Cargo.toml b/proto/Cargo.toml index 9293e6973..1f7debfef 100644 --- a/proto/Cargo.toml +++ b/proto/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-proto" -version = "0.33.1" +version = "0.33.2" authors = ["Informal Systems "] edition = "2021" license = "Apache-2.0" diff --git a/rpc/Cargo.toml b/rpc/Cargo.toml index af30341be..f90dcac10 100644 --- a/rpc/Cargo.toml +++ b/rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-rpc" -version = "0.33.1" +version = "0.33.2" edition = "2021" license = "Apache-2.0" homepage = "https://www.tendermint.com/" @@ -60,9 +60,9 @@ websocket-client = [ ] [dependencies] -tendermint = { version = "0.33.1", default-features = false, path = "../tendermint" } -tendermint-config = { version = "0.33.1", path = "../config", default-features = false } -tendermint-proto = { version = "0.33.1", path = "../proto", default-features = false } +tendermint = { version = "0.33.2", default-features = false, path = "../tendermint" } +tendermint-config = { version = "0.33.2", path = "../config", default-features = false } +tendermint-proto = { version = "0.33.2", path = "../proto", default-features = false } async-trait = { version = "0.1", default-features = false } bytes = { version = "1.0", default-features = false } diff --git a/std-ext/Cargo.toml b/std-ext/Cargo.toml index 15f467fec..c47b356fe 100644 --- a/std-ext/Cargo.toml +++ b/std-ext/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-std-ext" -version = "0.33.1" +version = "0.33.2" edition = "2021" license = "Apache-2.0" homepage = "https://www.tendermint.com/" diff --git a/tendermint/Cargo.toml b/tendermint/Cargo.toml index b06ce654d..cd0fcf857 100644 --- a/tendermint/Cargo.toml +++ b/tendermint/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint" -version = "0.33.1" # Also update depending crates (rpc, light-node, etc..) when bumping this . +version = "0.33.2" # 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" @@ -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.33.1", default-features = false, path = "../proto" } +tendermint-proto = { version = "0.33.2", 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 } diff --git a/test/Cargo.toml b/test/Cargo.toml index 758cc5498..0f85c9d88 100644 --- a/test/Cargo.toml +++ b/test/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "tendermint-test" description = "Tendermint workspace tests and common utilities for testing." -version = "0.33.1" +version = "0.33.2" edition = "2021" license = "Apache-2.0" categories = ["development", "test", "tools"] diff --git a/testgen/Cargo.toml b/testgen/Cargo.toml index 2909a2e31..29fecdd40 100644 --- a/testgen/Cargo.toml +++ b/testgen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-testgen" -version = "0.33.1" +version = "0.33.2" authors = ["Informal Systems "] edition = "2021" readme = "README.md" @@ -16,7 +16,7 @@ description = """ """ [dependencies] -tendermint = { version = "0.33.1", path = "../tendermint", features = ["clock"] } +tendermint = { version = "0.33.2", 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 } diff --git a/tools/abci-test/Cargo.toml b/tools/abci-test/Cargo.toml index 3401becd3..32d7d76ab 100644 --- a/tools/abci-test/Cargo.toml +++ b/tools/abci-test/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "abci-test" -version = "0.33.1" +version = "0.33.2" authors = ["Informal Systems "] edition = "2021" description = """ @@ -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.33.1", path = "../../tendermint" } -tendermint-config = { version = "0.33.1", path = "../../config" } -tendermint-rpc = { version = "0.33.1", path = "../../rpc", features = [ "websocket-client" ] } +tendermint = { version = "0.33.2", path = "../../tendermint" } +tendermint-config = { version = "0.33.2", path = "../../config" } +tendermint-rpc = { version = "0.33.2", path = "../../rpc", features = [ "websocket-client" ] } tracing = "0.1" tracing-subscriber = "0.2" tokio = { version = "1.20", features = ["full"] } diff --git a/tools/kvstore-test/Cargo.toml b/tools/kvstore-test/Cargo.toml index 801b2b473..13cb1286c 100644 --- a/tools/kvstore-test/Cargo.toml +++ b/tools/kvstore-test/Cargo.toml @@ -11,9 +11,9 @@ edition = "2021" [dev-dependencies] futures = "0.3" sha2 = "0.10" -tendermint = { version = "0.33.1", path = "../../tendermint" } -tendermint-light-client = { version = "0.33.1", path = "../../light-client", features = ["unstable"] } -tendermint-rpc = { version = "0.33.1", path = "../../rpc", features = [ "http-client", "websocket-client" ] } +tendermint = { version = "0.33.2", path = "../../tendermint" } +tendermint-light-client = { version = "0.33.2", path = "../../light-client", features = ["unstable"] } +tendermint-rpc = { version = "0.33.2", path = "../../rpc", features = [ "http-client", "websocket-client" ] } tokio = { version = "1.0", features = [ "rt-multi-thread", "macros" ] } tracing = "0.1" tracing-subscriber = "0.3" diff --git a/tools/rpc-probe/Cargo.toml b/tools/rpc-probe/Cargo.toml index c89dae172..0beb23a9b 100644 --- a/tools/rpc-probe/Cargo.toml +++ b/tools/rpc-probe/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tendermint-rpc-probe" -version = "0.33.1" +version = "0.33.2" authors = ["Informal Systems "] edition = "2021" license = "Apache-2.0"