Skip to content

Releases: informalsystems/tendermint-rs

v0.39.0

06 Aug 10:28
v0.39.0
439abf5
Compare
Choose a tag to compare

August 6th, 2024

This release bundles the google.protobuf.Any Protobuf type in tendermint-proto and brings improvements to google.protobuf.Duration and google.protobuf.Timestamp.

FEATURES

  • [tendermint-proto] Add Any type under tendermint_proto::google::protobuf::Any (#1445)

IMPROVEMENTS

  • [tendermint-proto] Implement prost::Name for tendermint_proto::google::protobuf::{Duration, Timestamp} (#1452)
  • [tendermint-proto] Improve ProtoJSON serialization of tendermint_proto::google::protobuf::{Duration, Timestamp} (#1452)

v0.38.1

23 Jul 14:25
88d582e
Compare
Choose a tag to compare

July 23rd, 2024

This release enhances decoding of the AppHash type by trying to decode it as base64 if it fails to decode as hex.
This release also updates prost and prost-types to their latest version in the tendermint crate, something that was missed in the v0.38.0 release.

BREAKING CHANGES

  • [tendermint] Bump prost and prost-types to their latest versions in the tendermint crate. This was missed in #1444, which only updated the two dependencies in tendermint-rpc, leading to duplicate versions of both crates to be present in the dependency graph. (#1446)

IMPROVEMENTS

  • [tendermint-rpc] If AppHash fails to decode as hex, try to decode it as base64. (#1449)

v0.38.0

22 Jul 13:50
475a1f8
Compare
Choose a tag to compare

Important

tendermint-rs and CometBFT are versioned separately, and the version numbers seemingly matching at the moment is not intended.

July 15th, 2024

This release enhances /block_results response handling, relaxes Block validation, and adds support for the /genesis_chunked RPC endpoint.

BREAKING CHANGES

  • tendermint: relax validation rules on Block (#1435)
  • [tendermint-proto]: Update prost to v0.13 and tonic to v0.12 (#1444)

BUG

  • [tendermint-rpc] Deserialize an empty JSON object as None for the consensus_param_updates field in the /block_results response. (#1440)

FEATURES

  • [tendermint-rpc] Add support for the /genesis_chunked RPC endpoint (#1438)

v0.37.0

31 May 10:46
v0.37.0
94a5fc0
Compare
Choose a tag to compare

May 31st, 2024

This release restores the commit verification interfaces of PredicateVerifier from tendermint-rs 0.35.0 and lower, but retains the performance improvements made in version 0.36.0.

This version also brings a few new features to the HTTP RPC client, notably a way to specify the User-Agent to send along HTTP requests, as well as a way to override the underlying reqwest client.

Additionally, this release fixes a couple of issues with the serde-based deserialization of the FinalizeBlock and Event types.

BREAKING CHANGES

  • [tendermint-proto] Upgrade tonic to v0.11 (#1422)
  • [tendermint-light-client-verifier] Restores the commit verification interfaces of PredicateVerifier<P, C, V> from <= 0.35.0 (#1423)
    • verify_commit(&self. untrusted: &UntrustedBlockState<'_>) is restored, as in <= 0.35.0.
    • verify_commit(&self, untrusted: &UntrustedBlockState<'_>, trusted: &TrustedBlockState<'_>,) introduced in 0.36.0 is renamed to verify_commit_against_trusted.
      The performance improvements made in the 0.36.0 release are still intact.

FEATURES

  • [tendermint-rpc] Add a way to specify custom User-Agent for HttpClient (#1425)
  • [tendermint-rpc] Add a client() method on transport::http::Builder to override the underlying reqwest client (#1421)
  • [tendermint-rpc] Add a from_raw_parts() method on transport::http::HttpClient to allow supplying the underlying reqwest client (#1421)

BUG FIXES

  • [tendermint] Fix FinalizeBlock::validator_updates deserialization as nullable (#1428)
  • [tendermint-abci] Add serde default annotation for Event::type to match omitempty in the Go implementation (#1416)

v0.36.0

25 Apr 09:48
v0.36.0
1b219d2
Compare
Choose a tag to compare

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)

  • [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).

  • [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)

FEATURES

  • [tendermint-proto] Add missing serde derives on Protobuf definitions (#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)

IMPROVEMENTS

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

v0.35.0

14 Mar 12:04
v0.35.0
99ed0b9
Compare
Choose a tag to compare

This release brings breaking changes related to flex-error, EventAttribute fields and /tx_broadcast Response struct, as well as a critical bug fix for tendermint-p2p, multiple improvements to tendermint-rpc and a performance optimization for tendermint-light-client-verifier.

BREAKING CHANGES

  • [tendermint] Don’t enable flex-error/eyre_tracer feature in crates which don’t use eyre directly. If you’re using eyre, and no other crate enables it, you may need to enable that explicitly. (#1371)
  • [tendermint] Allow null values in key and value fields of EventAttribute when deserializing. The serialization schema for the fields is changed to Option<String> (#1375).
  • [tendermint-rpc] Add the codespace field to the Tx sync and async broadcast Response (#1382)

BUG FIXES

  • [tendermint-p2p] Fix data corruption on sending long messages via SecretConnection (#1393)
  • [tendermint-rpc] Fix deserialization of /block_results response when some tx results are non-ok (#1391)

IMPROVEMENTS

  • [tendermint-rpc] Export the http, websocket modules under client, each with the public Builder type (#1378).
  • [tendermint-rpc] Allow specifying a request timeout for the RPC HttpClient. http::Builder now provides a .timeout(Duration) method to specify the request timeout. If not specified, the default value is 30 seconds. (#1379)
  • [tendermint-rpc] Add FromStr, Serialize and Deserialize instances to CompatMode (#1374)
  • [tendermint-light-client-verifier] Optimizing voting power calculation by breaking the loop when we have enough voting power (#1378).

v0.34.0

10 Oct 15:08
v0.34.0
bcc0b37
Compare
Choose a tag to compare

What's Changed

  • Update to prost 0.12 and tonic 0.10 by @mzabaluev in #1349
  • rpc: replace hyper::Client with reqwest::Client by @mzabaluev in #1362
  • Turn non-200 HTTP responses into an error instead of trying to parse the body as a JSON-RPC response by @romac in #1361
  • Add support for secp256k1 consensus keys by @mkaczanowski in #1358
  • Fix cargo warning by explicitly specifying a resolver for the workspace by @romac in #1363
  • Update to CometBFT 0.38.0 release by @mzabaluev in #1365
  • Release 0.34.0 by @mzabaluev in #1366

New Contributors

Full Changelog: v0.33.2...v0.34.0

v0.33.2

26 Sep 08:39
v0.33.2
4d81b67
Compare
Choose a tag to compare

📖 Release notes

What's Changed

  • Correct and optimize custom serializers for stringized values, hashes, nullable and optional fields by @mzabaluev in #1351
  • Validate construction and deserialization of validator::Set by @mzabaluev in #1350
  • Fix JSON serialization of timestamp field for CommitSig::BlockIdFlagAbsent by @romac in #1353
  • tendermint-testgen: Add app_hash field to Header by @Farhad-Shabani in #1344
  • CI: doc build fix, update actions/checkout by @mzabaluev in #1355
  • Release 0.33.2 by @mzabaluev in #1354

Full Changelog: v0.33.1...v0.33.2

v0.33.1

31 Aug 19:49
a73362d
Compare
Choose a tag to compare

📖 Release notes

What's Changed

Full Changelog: v0.33.0...v0.33.1

v0.33.0

31 Jul 02:38
v0.33.0
c2b5c9e
Compare
Choose a tag to compare

📖 Release notes

What's Changed

New Contributors

Full Changelog: v0.32.0...v0.33.0