tendermint-proto
tendermint-proto is a the Rust implementation of the Tendermint proto structs.
0.40.4
6.1M downloads/mo
#4115 most downloaded on crates.io
informalsystems/tendermint-rs
What this package is like to depend on
Last release 1 years ago
05 May 2025
Release timing varies
gaps range from 2 weeks to 5 months
Nearly every release is documented
notes for 47 of 48 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
55 releases · first in 2020
0 releases in the last 12 months
see the full history below
Release timeline
55 releases · Sep 2020 to May 2025Releases
latest 55-
0.40.405 May 2025 -
0.40.308 Apr 2025Release notes
Open source →April 8, 2025
This release fixes a security vulnerability. All users are advised to update ASAP.
BUG FIXES
[tendermint]Exportabci::event::v0_37to constructEventAttribute::V037variants. (#1479, (#1480)[tendermint-light-client-js]Bumpserde-wasm-bindgentov0.6.5andjs-systo=v0.3.70to fix compilation failure ofwasm-bindgen-test. (#1481)[light-client-verifier]Check for duplicate votes (ISA-2025-003)
-
0.40.203 Apr 2025Release notes
Open source →April 3rd, 2025
BUG FIXES
[tendermint-rpc]Strip auth info from URL to avoid doubleAuthorizationheader (#1494)
Release notes
Open source →April 3rd, 2025
This release fixes a bug in
tendermint-rpccrate.BUG FIXES
[tendermint-rpc]Strip auth info from URL to avoid doubleAuthorizationheader (#1494)
-
0.40.124 Dec 2024Release notes
Open source →0.40.1
December 24th, 2024
This is a bug fix release that address omissions in the
v0.40.0release.BUG FIXES
- tendermint: export
abci::event::v0_37to constructEventAttribute::V037variants.
(#1479, (#1480) - tendermint-light-client-js: bump
serde-wasm-bindgentov0.6.5andjs-systo=v0.3.70to
ix compilation failure ofwasm-bindgen-test. (#1481)
New Contributors
- @SuperFluffy made their first contribution in #1479
Full Changelog: v0.40.0...v0.40.1
Release notes
Open source →December 24th, 2024
This is a bug fix release that address omissions in the
v0.40.0release.BUG FIXES
- tendermint: export
-
0.40.023 Oct 2024Release notes
Open source →October 23rd, 2024
This release adds a new dialect for CometBFT
v0.38.x, enabling the correct serialization of misbehaviorEvidence. This improvement ensures compatibility with CometBFTv0.38.x, addressing specific issues in evidence handling for this version.BREAKING CHANGES
- [tendermint-rpc] Add new dialect for CometBFT v0.38.x
(#1467)
BUG FIXES
- [tendermint-rpc] Fix serialization of misbehaviour
Evidence
on CometBFT v0.38.x using the newly introduced dialect
(#1467)
Release notes
Open source →October 23rd, 2024
This release adds a new dialect for CometBFT
v0.38.x, enabling the correct serialization of misbehaviorEvidence. This improvement ensures compatibility with CometBFTv0.38.x, addressing specific issues in evidence handling for this version.BREAKING CHANGES
- [tendermint-rpc] Add new dialect for CometBFT v0.38.x (#1467)
BUG FIXES
- [tendermint-rpc] Fix serialization of misbehaviour
Evidenceon CometBFT v0.38.x using the newly introduced dialect (#1467)
- [tendermint-rpc] Add new dialect for CometBFT v0.38.x
-
0.39.109 Aug 2024Release notes
Open source →August 9th, 2024
This is a bugfix release which addresses a couple issues found in the v0.39.0 release.
Users of v0.39.0 are strongly encouraged to upgrade to v0.39.1.
BUG FIXES:
Release notes
Open source →August 9th, 2024
This is a bugfix release which addresses a few issues found in the v0.39.0 release.
Users of v0.39.0 are strongly encouraged to upgrade to v0.39.1.
BUG FIXES
-
0.39.006 Aug 2024Release notes
Open source →August 6th, 2024
This release bundles the
google.protobuf.AnyProtobuf type intendermint-protoand brings improvements togoogle.protobuf.Durationandgoogle.protobuf.Timestamp.FEATURES
[tendermint-proto]AddAnytype undertendermint_proto::google::protobuf::Any(#1445)
IMPROVEMENTS
Release notes
Open source →August 6th, 2024
This release bundles the
google.protobuf.AnyProtobuf type intendermint-protoand brings improvements togoogle.protobuf.Durationandgoogle.protobuf.Timestamp.FEATURES
[tendermint-proto]AddAnytype undertendermint_proto::google::protobuf::Any(#1445)
IMPROVEMENTS
-
0.38.123 Jul 2024Release notes
Open source →July 23rd, 2024
This release enhances decoding of the
AppHashtype by trying to decode it as base64 if it fails to decode as hex.
This release also updatesprostandprost-typesto their latest version in thetendermintcrate, something that was missed in the v0.38.0 release.BREAKING CHANGES
[tendermint]Bumpprostandprost-typesto their latest versions in thetendermintcrate. This was missed in #1444, which only updated the two dependencies intendermint-rpc, leading to duplicate versions of both crates to be present in the dependency graph. (#1446)
IMPROVEMENTS
[tendermint-rpc]IfAppHashfails to decode as hex, try to decode it as base64. (#1449)
Release notes
Open source →July 23rd, 2024
This release enhances decoding of the
AppHashtype by trying to decode it as base64 if it fails to decode as hex. This release also updatesprostandprost-typesto their latest version in thetendermintcrate, something that was missed in the v0.38.0 release.BREAKING CHANGES
[tendermint]Bumpprostandprost-typesto their latest versions in thetendermintcrate. This was missed in #1444, which only updated the two dependencies intendermint-rpc, leading to duplicate versions of both crates to be present in the dependency graph. (#1446)
IMPROVEMENTS
[tendermint-rpc]IfAppHashfails to decode as hex, try to decode it as base64. (#1449)
-
0.38.018 Jul 2024Release notes
Open source →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_resultsresponse handling, relaxesBlockvalidation, and adds support for the/genesis_chunkedRPC endpoint.BREAKING CHANGES
- tendermint: relax validation rules on
Block(#1435) [tendermint-proto]: Updateprostto v0.13 andtonicto v0.12 (#1444)
BUG
[tendermint-rpc]Deserialize an empty JSON object asNonefor theconsensus_param_updatesfield in the/block_resultsresponse. (#1440)
FEATURES
[tendermint-rpc]Add support for the/genesis_chunkedRPC endpoint (#1438)
Release notes
Open source →July 15th, 2024
This release enhances
/block_resultsresponse handling, relaxesBlockvalidation, and adds support for the/genesis_chunkedRPC endpoint.BREAKING CHANGES
- tendermint: relax validation rules on
Block(#1435) [tendermint-proto]: Updateprostto v0.13 andtonicto v0.12 (#1444)
BUG
[tendermint-rpc]Deserialize an empty JSON object asNonefor theconsensus_param_updatesfield in the/block_resultsresponse. Deserialize version in consensus params asNoneif it is an empty object, null or not found. (#1440)
FEATURES
[tendermint-rpc]Add support for the/genesis_chunkedRPC endpoint (#1438)
- tendermint: relax validation rules on
-
0.37.031 May 2024Release notes
Open source →May 31st, 2024
This release restores the commit verification interfaces of
PredicateVerifierfrom tendermint-rs0.35.0and lower, but retains the performance improvements made in version0.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
reqwestclient.Additionally, this release fixes a couple of issues with the
serde-based deserialization of theFinalizeBlockandEventtypes.BREAKING CHANGES
[tendermint-proto]Upgradetonicto v0.11 (#1422)[tendermint-light-client-verifier]Restores the commit verification interfaces ofPredicateVerifier<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 toverify_commit_against_trusted.
The performance improvements made in the0.36.0release are still intact.
FEATURES
[tendermint-rpc]Add a way to specify custom User-Agent forHttpClient(#1425)
[tendermint-rpc]Add aclient()method ontransport::http::Builderto override the underlyingreqwestclient (#1421)[tendermint-rpc]Add afrom_raw_parts()method ontransport::http::HttpClientto allow supplying the underlyingreqwestclient (#1421)
BUG FIXES
Release notes
Open source →May 30th, 2024
This release restores the commit verification interfaces of
PredicateVerifierfrom tendermint-rs0.35.0and lower, but retains the performance improvements made in version0.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
reqwestclient.Additionally, this release fixes a couple of issues with the
serde-based deserialization of theFinalizeBlockandEventtypes.BREAKING CHANGES
[tendermint-proto]Upgradetonicto v0.11 (#1422)[tendermint-light-client-verifier]Restores the commit verification interfaces ofPredicateVerifier<P, C, V>from<= 0.35.0.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 toverify_commit_against_trusted. The performance improvements made in the0.36.0release are still intact. (#1423)
BUG FIXES
[tendermint-abci]Add serde default for Event.type since it has omitempty in the Go implementation. (#1416)
FEATURES
[tendermint-rpc]Add aclient()method ontransport::http::Builderto override the underlyingreqwestclient. (#1421)[tendermint-rpc]Add afrom_raw_parts()method ontransport::http::HttpClientto allow supplying the underlyingreqwestclient. (#1421)
IMPROVEMENTS
[tendermint-rpc]Add a way to specify custom User-Agent for HttpClient (#1425)
[tendermint]FixFinalizeBlock::validator_updatesdeserialization asnullable(#1428)
-
0.36.025 Apr 2024Release notes
Open source →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_commiton non-first block) when decoding them from Protobuf or RPC responses, and adds missingserdederives 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 theToPrimitiveimpl that was removed onBlockIdFlagtrait did not provide any additional functionality.BREAKING CHANGES
-
[tendermint-proto]Remove redundant impl ofnum_traits::ToPrimitiveforBlockIDFlag(#1389) -
[tendermint]ChangeEventAttribute'skeyandvaluefields fromStringtoVec<u8>for Tendermint v0.34, as enforced by the Protobuf schema for Tendermint v0.34.tendermint::abci::EventAttributeis now an enum, to account for version 0.34 and 0.37+, therefore thekey,valueandindexfields now have to be retrieved through thekey_str()/key_bytes,value_str()/value_bytes()andindex()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_overlapmethod and second time by call tohas_sufficient_signers_overlapmethod.With the new interface,
has_sufficient_validators_and_signers_overlapis 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 missingserdederives on Protobuf definitions (#1389)[tendermint]Add the following impls fored25519-consensus:From<ed25519_consensus::SigningKeyfortendermint::PrivateKeyFrom<ed25519_consensus::SigningKey>fortendermint::SigningKeyFrom<ed25519_consensus::VerificationKey>fortendermint::PublicKeyFrom<ed25519_consensus::VerificationKey>fortendermint::VerificationKey(#1401)
IMPROVEMENTS
[tendermint]Allow misformed blocks (eg. with emptylast_commiton non-first block) when decoding them from Protobuf or RPC responses (#1403)[light-client-verifier]Optimise validators lookup inProvidedVotingPowerCalculator::voting_power_inmethod. (#1407)[tendermint]Checkindex ≤ i32::MAXinvariant when convertingusizeintoValidatorIndex. (#1411)[tendermint-light-client-verifier]Reuse buffer used to store sign_bytes to reduce number of allocations and deallocations. (#1413)
-
-
0.35.014 Mar 2024Release notes
Open source →This release brings breaking changes related to
flex-error,EventAttributefields and/tx_broadcastResponsestruct, as well as a critical bug fix fortendermint-p2p, multiple improvements totendermint-rpcand a performance optimization fortendermint-light-client-verifier.BREAKING CHANGES
- Don’t enable
flex-error/eyre_tracerfeature 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 inkeyandvaluefields ofEventAttributewhen deserializing. The serialization schema for the fields is changed toOption<String>(#1375).- Add the
codespacefield to the Tx sync and async broadcastResponse(#1382)
BUG FIXES
[tendermint-rpc]Fix deserialization of/block_resultsresponse when some tx results are non-ok ([#1391](https://github.com/informalsystems/tendermint- rs/pull/1391))[tendermint-p2p]Fix data corruption on sending long messages viaSecretConnection(#1393)
IMPROVEMENTS
[tendermint-rpc]AddFromStr,SerializeandDeserializeinstances toCompatMode([#1374](https://github.com/informalsystems/tendermint- rs/issues/1374))[tendermint-rpc]Export thehttp,websocketmodules underclient, each with the publicBuildertype (#1378).- Allow specifying a request timeout for the RPC
HttpClient.http::Buildernow provides a.timeout(Duration)method to specify the request timeout. If not specified, the default value is 30 seconds. (#1379) [tendermint-light-client-verifer]Optimizing voting power calculation by breaking the loop when we have enough voting power (#1378).
- Don’t enable
-
0.34.122 Feb 2024Nothing published for this version
-
0.34.002 Oct 2023Release notes
Open source →This release brings breaking changes, updating the
ExtendVoterequest data structure to the changes in the CometBFT 0.38.0 release. The gRPC stack has been updated to prost 0.12 and tonic 0.10. The RPC client for HTTP has been reimplemented usingreqwest. Support for Secp256k1 consensus keys has been added as an optional feature.BREAKING CHANGES
[tendermint-proto]Update dependencies to prost 0.12 and tonic 0.10 (#1349)[tendermint-rpc]ChangedErrorDetailvariants (#1362):- Removed the
HyperandInvalidUrivariants. - The
Httpvariant now hasErrorfromreqwestas the source. - Added the
InvalidProxyvariant. - The
tungstenitedependency exposed through itsErrortype in WebSocket-related variants has been updated to version 0.20.x.
- Removed the
[tendermint-rpc]Removed aTryFrom<HttpClientUrl>conversion forhyper::Urias hyper is no longer a direct dependency (#1362).[tendermint-proto]Updatev0_38bindings to CometFBT release 0.38.0 (#1365).[tendermint]Add fields toabci::request::ExtendVoteto represent the fields added to theabci.RequestExtendVoteprotobuf message since the 0.38.0-rc3 release (#1365).
FEATURES
[tendermint]Add support for secp256k1 consensus keys (#1364)
IMPROVEMENTS
[tendermint-rpc]Turn non-200 HTTP response into an error instead of trying to parse the body as a JSON-RPC response (#1359)
SECURITY
[tendermint-rpc]Address the RUSTSEC-2023-0052 vulnerability by dropping dependency onhyper-proxyand changing the HTTP client to usereqwest(#1342).
-
0.33.219 Sep 2023Release notes
Open source →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
serializefunctions in these helper modules ([#1351](https://github.com/informalsystems/tendermint- rs/pull/1351)):- In
tendermint-proto:serializers::nullableserializers::optional
- In
tendermint:serializers::apphashserializers::hashserializers::option_hash
If
serde_jsonis 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. - In
BUG FIXES
[tendermint]Integer overflows are prevented when calculating the total voting power value invalidator::Set(#1348).[tendermint-proto]SerializeandDeserializeimpls forv*::crypto::PublicKeyare corrected to match the JSON schema used by other implementations (#1350).- [
tendermint] Fix JSON serialization of timestamp field forCommitSig::BlockIdFlagAbsentto match what is expected by CometBFT (#1352)
IMPROVEMENTS
[tendermint-testgen]Addapp_hashfield to testgenHeaderand implement convenient method for defaultLightBlockconstruction fromHeader(#1343)[tendermint]Improve and validate deserialization ofvalidator::Set(#1348). Thetotal_voting_powerfield no longer has to be present in the format processed byDeserialize. If it is present, it is validated against the sum of thevoting_powervalues of the listed validators. The sum value is also checked against the protocol-defined maximum.[tendermint-proto]In theDeserializeimpls derived forv*::types::ValidatorSet, thetotal_voting_powerfield value is retrieved when present.[tendermint-proto]Add serialziation helper moduleserializers::from_str_allow_null. Use it to allow theproposed_priorityfield value of null in the deserialization ofv*::types::Validator.- Corrected custom serializer helpers to consistently produce the format accepted by the deserializer. Improved performance of deserializers. (#1351)
-
-
0.33.131 Aug 2023Release notes
Open source →Aug 29th, 2023
tendermint-proto: This release adds an optionalgrpc-serverfeature to the proto crate. When enabled the feature will include gRPC service definitions for the RPC and ABCI servers.FEATURES
[tendermint-proto]addgrpc/grpc-serverfeatures to include gRPC server definitions for the RPC/ABCI services. (#1338)
-
0.33.024 Jul 2023Release notes
Open source →This release adds support for CometBFT 0.38 protocols. In the response to the
sync_infoRPC endpoint, the data of the earliest block are exposed to the client.BREAKING CHANGES
[tendermint]Adaptations for CometFBT 0.38 (#1312):- Define
consensus::params::AbciParamsstruct, add theabcifield of this type toconsensus::Paramsto represent the protobuf additions. - Change the
abci::Requestandabci::Responsereexports to use the enums defined inv0_38.
- Define
[tendermint]Define version-specific categorized request/response enums:ConsensusRequest,MempoolRequest,InfoRequest,ShapshotRequest,ConsensusResponse,MempoolResponse,InfoResponse,ShapshotResponse, in each of thev0_*::abcimodules, so that the variants are trimmed to the requests/responses used by the respective protocol version. Reexport the types fromv0_38::abcias aliases for these names in theabcimodule, continuing the naming as used in older API. (#1312).[tendermint]RenameSignature::to_bytestoSignature::into_bytes(#1312).[tendermint-abci]Update theApplicationinterface to CometBFT 0.38 (#1312)[tendermint-rpc]Changes to support the RPC protocol in CometBFT 0.38 (#1317):- Add
finalize_block_resultsandapp_hashfields toendpoint::block_results::Response. - The
deliver_txfield is renamed totx_resultinendpoint::broadcast::tx_commit::Response. - The
tx_resultfield type changed toExecTxResultinendpoint::tx::Response. - The
event::EventData::NewBlockvariant is renamed toLegacyNewBlock. The newNewBlockvariant only carries fields relevant since CometBFT 0.38. - Removed
event::DialectEvent, replaced with non-generic serialization helpers inevent::{v0_34, v0_37, v0_38}. TheDeserializehelpers in the latter two modules are aliased from common types that can support both fields added in CometBFT 0.38,block_idandresult_finalize_block, as well as the fields present 0.37. Likewise forDialectEventDataand other event data structure types. - Changed some of the serialization dialect helpers to only be
used by the 0.34 dialect and remove generics. The current dialect's
seralization is switched to the serde impls on the domain types in
tendermint.
- Add
[tendermint]Changes to support the RPC protocol in CometBFT 0.38 (#1317):- Due to some attribute changes, the format emitted by
Serializeis changed forabci::responsetypesCheckTxandFinalizeBlock.
- Due to some attribute changes, the format emitted by
- [
tendermint-rpc] Decode the earliest block data fields of thesync_infoobject in/statusresponse and expose them in theSyncInfostruct:earliest_block_hash,earliest_app_hash,earliest_block_height,earliest_block_time(#1321). [tendermint-proto]Align the return signature of theencode_vecandencode_length_delimited_vecmethods in theProtobuftrait withprost::Messageby directly returningVec<u8>. (#1323)- Remove mandatory cloning in
Protobufmethods and let callers decide on clone beforehand for original value access
- Remove mandatory cloning in
IMPROVEMENTS
[tendermint-proto]Generate prost bindings for CometBFT 0.38 under thetendermint::v0_38module (#1312)[tendermint]Support for CometBFT 0.38: (#1312):- Add conversions to and from
tendermint::v0_38protobuf types generated in [tendermint-proto]. - Add request and response enums under
v0_38::abcito enumerate all requests and responses appropriate for CometBFT version 0.38. - Add request and response types under
abcito represent the requests and responses new to ABCI++ 2.0 in CometBFT version 0.38. The names areExtendVote,FinalizeBlock,VerifyVoteExtension.
- Add conversions to and from
[tendermint-rpc]Support for CometBFT 0.38 (#1317):Deserializeimplementations onabci::Event,abci::EventAttributethat correspond to the current RPC serialization.- Domain types under
abci::responsealso getDeserializeimplementations corresponding to the current RPC serialization. Serialize,Deserializeimplementations onabci::types::ExecTxResultcorresponding to the current RPC serialization.- Added the
apphash_base64serializer module.
-
0.32.219 Jul 2023 -
0.32.117 Jul 2023Release notes
Open source →Fixed a bug with processing the
latest_block_resultendpoint result in the RPC client set to the 0.34 compatibility mode.BUG FIXES
[tendermint-rpc]Use compatibility mode in implementations of theClient::latest_block_resultsmethod (#1326)
-
0.32.003 May 2023Release notes
Open source →May 3rd, 2023
This release notably comes with a fully featured light client attack detector, and introduces a CLI for the light client for verifying headers, detecting attacks against the light client, and reporting the evidence to primary and witness nodes.
It also adds a
Verifier::verify_misbehaviour_headermethod for verifying headers coming from a misbehaviour evidence.Moreover, the
Clienttrait is now exposed by thetendermint-rpcwithout requiring thehttp-clientor thewebsocket-clientfeature flags to be enabled.BREAKING CHANGES
- [
tendermint-light-client-verifier] RenameVerifier::verifytoVerifier::verify_update_headerto better describe its purpose versusVerifier::verify_misbehaviour_header(#1294)
FEATURES
- [
tendermint-light-client-detector] Implement a light client attack detector, based on its Go version found in Comet (#1291) - [
tendermint-light-client-verifier] AddVerifier::verify_misbehaviour_headerfor verifying headers coming from a misbehaviour evidence. The verification for these headers is a bit more relaxed in order to catch FLA attacks. In particular the "header in the future" check for the header should be skipped. (#1294)
IMPROVEMENTS
- [
-
0.31.117 Apr 2023Release notes
Open source →April 17th, 2023
Expose the
TypedEventmarker trait.FEATURES
- Expose the `tendermint::abci::event::TypedEvent (#1288)
-
0.31.016 Apr 2023Release notes
Open source →April 16th, 2023
Upgrade signature crate versions and add a
TypedEventtrait for ABCI events.BREAKING CHANGES
[tendermint, tendermint-p2p]Bumped25519to v2,k256to v0.13, andsignatureto v2
IMPROVEMENTS
-
0.30.007 Mar 2023Release notes
Open source →March 7th, 2023
This release introduces support for multiple versions of CometBFT protocols. Consumers of tendermint-rs crates, with the exception of
tendermint-abci, should be able to interoperate with CometBFT nodes based on 0.34.x and 0.37.x releases, or a combination of these.BREAKING CHANGES
- [
tendermint] Version-specific definitions for ABCIRequestandResponseenums underv0_34::abciandv0_37::abci, containing only the method variants present in each of the respective protocol versions.RequestandResponsedefined underv0_37are re-exported under the non-versionedabcimodule name, but theSetOptionvariant is not present in these latest versions of the enums. (#1193) - [
tendermint-abci] Change the frame length encoding in the ABCI wire protocol to unsigned varint, to correspond to the changes in Tendermint Core 0.37. No compatibility with 0.34 is provided at the moment. (#1193) - [
tendermint-rpc] Changed the signature ofWebSocketClient::new_with_configto accept aWebSocketConfigstruct value rather than anOption. (#1193) - [
tendermint-proto] Theserializers::evidencemodule has been made private. (#1193) - [
tendermint-rpc] Bumpasync-tungstenitedependency version to 0.20, re-exportingWebSocketConfigfromtungstenite0.18 (#1276).
IMPROVEMENTS
- [
tendermint-proto] Generate prost bindings for Tendermint 0.34 and 0.37 side by side. The version-specific structs are placed under thetendermint::v0_34andtendermint::v0_37module namespaces, respectively. The names undertendermint::v0_37are also re-exported undertendermint. (#1193) - [
tendermint] New and updated ABCI domain types for Tendermint Core v0.37 (#1193). - [
tendermint] Protobuf conversions provided for bothv0_34andv0_37versions of the generated [tendermint-proto] structs, where applicable. (#1193). - [
tendermint-rpc] Introduceclient::CompatMode, enumerating protocol compatibility modes specifying the RPC data encoding used by the client. AnHttpClientcan be created with a selected mode specified in the newbuilderAPI, or have the mode changed afterwards (usually after version discovery) by the addedset_compat_modemethod. ForWebSocketClient, the mode can only be specified at creation via the newbuilderAPI. (#1193) - [
tendermint-abci] Port ABCI application support to 0.37 Tendermint Core API. No legacy support for 0.34 is provided at the moment. (#1193). - Derive
Hashontendermint::Time(#1278) - [
tendermint-light-client] Showmax_clock_driftin error raised when header is from the future (#1280)
- [
-
0.29.127 Feb 2023Release notes
Open source →February 27th, 2023
Improve debug output for Ed25519 keys.
BUG FIXES
[tendermint]Restore hex-formatting in debug output of Ed25519 keys. (#1272)
-
0.29.017 Feb 2023Release notes
Open source →Feb 17th, 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).- Provide a
Sha256trait in modulecryptoand make digest hashing implementations available through it. - Provide a
Verifiertrait in modulecrypto::signatureto enable alternative implementations of signature verification available through it. AnErrorenum is defined in the same module, representing the error cases that can arise in the implementation in a deliberately opaque way. - The module
crypto::defaultprovides pure Rust implementations of the cryptographic traits. The module is made available by a newrust-cryptofeature, enabled by default. merkle::simple_hash_from_byte_vectorsis made generic over an implementation of the newMerkleHashtrait. Implementations for Rust-Crypto conformant digest objects and the non-incrementalcrypto::Sha256API are provided in the crate.- The
Header::hashandValidatorSet::hashmethods are gated by therust-cryptofeature. Generic hashing methods not dependent on the default crypto implementations are added for both types, namedhash_with. - Conversions to
account::Idandnode::IdfromPublicKeyand curve-specific key types are gated by therust-cryptofeature. - The
validator::Info::newmethod is gated by therust-cryptofeature. - Remove a deprecated constant
signature::ED25519_SIGNATURE_SIZE.
- Provide a
-
[tendermint-light-client-verifier]Changes for the new Tendermint crypto API (#1238).- The
rust-cryptofeature, enabled by default, guards the batteries-included implementation types:ProdVerifier,ProdPredicates,ProdVotingPowerCalculator. - Remove the
operations::hasherAPI (HasherandProdHasher), made unnecessary by the new crypto abstractions in thetendermintcrate. - The
VerificationPredicatestrait features aSha256associated type to represent the hasher implementation, replacing the&dyn Hasherparameter passed to methods. - Change the type of the
VerificationErrorDetail::FaultySignerfieldvalidator_settoValidatorSet. This removes a hasher dependency fromCommitValidator, andProdCommitValidatoris now an empty dummy type.
- The
-
[tendermint-light-client]Changes for the new Tendermint crypto API (#1238).- The
rust-cryptofeature enables the default crypto implementations, and is required by therpc-clientandunstablefeatures.ProdForkDetectoris guarded by this feature, and is made a specific type alias to the hasher-genericProvidedForkDetectortype. LightClientBuildergets another type parameter for the Merkle hasher. Its generic constructors lose theHasherparameter.
- The
BUG FIXES
[tendermint-light-client]Fix verification of blocks between two trusted heights (#1246)
DEPENDENCIES
[tendermint, tendermint-p2p]Replaced theed25519-dalekdependency withed25519-consensus(#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)
-
-
0.28.013 Dec 2022Release notes
Open source →Dec 13, 2022
This is primarily a security-related release, and although it's a breaking release, the breaking changes are relatively minor.
It is highly recommended that all tendermint-rs light client users upgrade to this version immediately.
BREAKING
[tendermint-light-client-verifier]Addis_matching_chain_idmethod to theVerificationPredicatestrait[tendermint-light-client-verifier]Add achain_idfield to theTrustedBlockStatestruct
IMPROVEMENTS
[tendermint-light-client-js]Switch to serde-wasm-bindgen for marshalling JS values (#1242)
SECURITY
[tendermint-light-client]Fix an issue where the light client was not checking that the chain ID of the trusted and untrusted headers match
-
0.27.028 Nov 2022Release notes
Open source →Nov 28, 2022
Following on from the ABCI domain type-related work in v0.26.0, this release deduplicates types across the
tendermintandtendermint-rpccrates, and makes better use of our domain types across the crates (a big thanks to @mzabaluev here!).@romac helped make the RPC query interface more ergonomic, and @hu55a1n1 implemented Rust equivalents for Tendermint Go's VerifyCommitLight and VerifyCommitLightTrusting methods for the light client.
Some additional convenience methods for the
Timetype were provided by @scalalang2.BREAKING CHANGES
-
[tendermint]Change hash fields' type fromBytes(#1095):Struct Field Type abci::request::OfferSnapshotapp_hashAppHashabci::response::Infolast_block_app_hashAppHashabci::response::InitChainapp_hashAppHashGenesisapp_hashAppHash -
[tendermint]Remove methodAppHash::value, replaced with non-allocatingAppHash::as_bytes#1232. -
[tendermint-rpc]Remove ABCI-related types, change the affected field types to standard Rust types or ABCI domain types in[tendermint]. (#1090) -
[tendermint-rpc]Extract thekeyfield fromquery::Conditionand structure aquery::Conditionto havekeyandoperationfields, since thekeyfield is common to all conditions (#1230) -
[tendermint]Renamemerkle::proof::ProoftoProofOps(#1234) -
[tendermint-rpc]Change the type of/txresponse fieldprooftotendermint::tx::Proof(#1233)
IMPROVEMENTS
[tendermint]AddedTimemethodsunix_timestampandunix_timestamp_nanos. (#1175)[light-client]Addedvalidate,validate_against_trusted,verify_commitandverify_commit_against_trustedmethods toPredicateVerifier. (#1222)[tendermint-rpc]Maketendermint_rpc::Query's fields public and add aCondition::key(&self) -> &strmethod (#1230)[tendermint]Add domain typesmerkle::Proofandtx::Proof, to represent protobuf messagescrypto.Proofandtypes.TxProofrespectively (#1234)
-
-
0.26.031 Oct 2022Release notes
Open source →Oct 31, 2022
The highlight of this release is the addition of domain types specifically for ABCI. Previously, Rust-based Tendermint application developers would have had to exclusively rely on the generated Protobuf types. Many thanks to @hdevalence for the heavy lifting on this, and to @mzabaluev for the porting work after the Tendermint v0.35 retraction!
While we will endeavour to keep this API as stable as possible, we know that we will have to evolve it over the coming months to reduce duplication of functionality and types across the ABCI module and RPC crate, so please expect further breaking changes in subsequent breaking releases.
BREAKING CHANGES
[tendermint]Added domain types for ABCI (#862)[tendermint-proto]UseBytesfor byte array fields of ABCI protobuf types. (#1203)
BUG FIXES
[tendermint-rpc]The encoding of thehashfield for requests to the/block_by_hashendpoint has been changed to base64 (from hex) to accommodate discrepancies in how the Tendermint RPC encodes this field for different RPC interfaces (#942)- Allow a
TrustThresholdFractionof 1 (#1208)
ENHANCEMENTS
[tendermint-abci]DeprecateClient::set_option. (#1203)
FEATURES
[tendermint-rpc]Add support for the/block_by_hashRPC endpoint. See https://docs.tendermint.com/master/rpc/#/Info/block_by_hash for details (#832).
-
0.25.023 Sep 2022Release notes
Open source →Sep 23, 2022
This release follows from v0.23.9, with the v0.24 series skipped due to Tendermint Core abandoning the v0.35 and v0.36 releases. As such, it is a non-breaking change, and removes the need to pin one's tendermint-rs dependencies to a specific version (as was the case for the v0.23 series).
This release still targets compatibility with Tendermint Core v0.34, and specifically provides compatibility with v0.34.21.
BUG FIXES
[tendermint-rpc]Fix deserialization of/block_resultsresponse when it contains evidence for a duplicate vote (#1194)
DEPENDENCIES
- Unpin
timedependency (#1199)
ENHANCEMENTS
[proto]Do not generate types ingoogle::protobuf(#1188).- Add support for Tendermint Core v0.34.21, which primarily involves a small addition to the configuration file (#1198)
-
0.24.0-pre.205 May 2022 pre-releaseNothing published for this version
-
0.24.0-pre.114 Jan 2022 pre-releaseNothing published for this version
-
0.23.905 Aug 2022Release notes
Open source →Aug 5, 2022
This minor release adds Basic authentication support for HTTP and WebSocket RPC clients, in addition to some dependency updates.
We had to restrict our
timedependency for some crates to a version range of>=0.3, <0.3.12due to what seems to be a recent issue injs-syscausing our no_std support to break. We will undo this restriction as soon as the issue is resolved.DEPENDENCIES
FEATURES
[tendermint-rpc]Add support for HTTP Basic authentication to HTTP and WebSocket RPC clients (#1169)
-
0.23.822 Jul 2022Release notes
Open source →Jul 22, 2022
This release focuses on ensuring compatibility with Tendermint v0.34.20, which introduces a prioritized mempool. As per the release notes for
v0.23.8-pre.1, this has a minor additive impact on the ABCI and RPC interfaces in the fields that theCheckTxresponse contains.This release also contains some important dependency updates and minor bug fixes.
BUG FIXES
[tools/proto-compiler]Annotate serde to fall back toDefaultfor the omitted fields when deserializingtendermint_proto::abci::ResponseInfostruct, also providing deserialization for the response at the/abci_infoRPC endpoint. (#1132)
DEPENDENCIES
- Update
k256to v0.11 (#1153)
ENHANCEMENTS
[tendermint-proto,tendermint-rpc,tools]Update to ensure compatibility with Tendermint v0.34.20 (#1159)
-
0.23.8-pre.129 Jun 2022 pre-releaseRelease notes
Open source →Jun 29, 2022
This pre-release targets Tendermint v0.34.20-rc0, which introduces a prioritized mempool. This has a minor additive impact on the ABCI and RPC interfaces in the fields that the
CheckTxresponse contains.Pre-releases will continue along this line until v0.34.20 is released.
FEATURES
-
0.23.725 Apr 2022Release notes
Open source →Apr 25, 2022
A minor update to use the latest version of
prost.DEPENDENCIES
- Update
prostto v0.10 ([#1113](https://github.com/informalsystems/tendermint- rs/issues/1113))
- Update
-
0.23.630 Mar 2022Release notes
Open source →Mar 29, 2022
A minor release that allows for a small UX improvement in the usage of the
Client::genesis()call intendermint-rpc.DEPENDENCIES
IMPROVEMENTS
[tendermint-rpc]Allow users to specify theAppStatetype in theClient::genesis()function. (#1106)
-
0.23.514 Jan 2022Release notes
Open source →Jan 13, 2022
A single breaking change is provided by this release in order to move us closer toward
no_stdsupport in both tendermint-rs and ibc-rs.BREAKING CHANGES
[tendermint-light-client]Split out the verification functionality from thetendermint-light-clientcrate into its ownno_std-compatible crate:tendermint-light-client-verifier. This helps move us closer tono_stdcompliance in both tendermint-rs and ibc-rs (#1027)
-
0.23.411 Jan 2022Release notes
Open source →Jan 11, 2022
This release exclusively focuses on removing
native-tls/opensslfrom the dependency tree and replacing it withrustls. This was previously incorrectly configured in ourhyper-proxydependency.DEPENDENCIES
[tendermint-rpc]: Switchhyper-proxyto userustls, eliminating the only use ofnative-tlsin tendermint-rs dependencies (#1068)
-
0.23.320 Dec 2021Release notes
Open source →Dec 20, 2021
Here we mainly attempt to provide a short-term workaround for #1021 by catering for both possible forms of JSON serialization for public keys.
IMPROVEMENTS
[tendermint]Hashis implemented fortendermint::Time(#1054)
WORKAROUNDS
[tendermint-rpc]Allow deserialization of public keys from validator updates fromblock_resultsendpoint in multiple JSON formats until this is fixed in Tendermint (#1021)
-
0.23.213 Dec 2021Release notes
Open source →Dec 7, 2021
This release focuses on the removal of
chronoas our primary dependency for dealing with time, and replaces it with thetimecrate.This is necessarily a breaking change, but is released as v0.23.2 as per our current versioning scheme.
BREAKING CHANGES
[tendermint]Reformtendermint::Time(#1030):- The struct content is made private.
- The range of acceptable values is restricted to years 1-9999 (as reckoned in UTC).
- Removed conversions from/to
chrono::DateTime<chrono::Utc>. - Changes in error variants: removed
TimestampOverflow, replaced withTimestampNanosOutOfRange; removedChronoParse, replaced withTimeParse.
[tendermint-rpc]UseOffsetDateTimeandDatetypes provided by thetimecrate in query operands instead of theirchronocounterparts. (#1030)
IMPROVEMENTS
[tendermint]Deprecatedsignature::ED25519_SIGNATURE_SIZEin favor ofEd25519Signature::BYTE_SIZE(#1023)- Remove dependencies on the
chronocrate. (#1030) [tendermint]Improvetendermint::Time(#1036, revised by #1048):- Restrict the validity range of
Timeto dates with years in the range 1-9999, to match the specification of protobuf messageTimestamp. Add anErrorDetailvariantDateOutOfRangeto report when this restriction is not met. - Added a conversion to, and a fallible conversion from,
OffsetDateTimeof thetimecrate.
- Restrict the validity range of
-
0.23.115 Nov 2021 -
0.23.027 Oct 2021Release notes
Open source →Oct 27, 2021
The main changes in this release involve upgrading to Prost v0.9 and some foundational changes to prepare for
no_stdsupport for some of our crates.One of the main
no_std-related changes in this release was to break out configuration-related data structures from thetendermintcrate into their own crate (tendermint-config) as these structures depend on other crates which do not yet supportno_std.BREAKING CHANGES
- Upgraded Prost to the official v0.9 release to finally resolve the security issue introduced by v0.7 (#925)
[tendermint]Thetendermint::node::info::ListenAddress::to_net_addressmethod was replaced with a simpleas_strmethod toward facilitatingno_stdcompatibility ([#983](https://github.com/informalsystems/tendermint- rs/issues/983))[tendermint]Thetendermint::node::info::OtherInfo::rpc_addressfield type has been changed fromtendermint::net::AddresstoStringtoward facilitatingno_stdcompatibility (#983)[tendermint, tendermint-config]Thetendermint::configmodule has now been broken out into its own crate (tendermint- config) to help towards facilitatingno_stdcompatibility (#983)
FEATURES
[tendermint-rpc]Add support for the/block_searchRPC endpoint. See https://docs.tendermint.com/v0.34.x/rpc/\#/Info/block_search for details (#832)
-
0.23.0-internal21 Oct 2021 pre-releaseNothing published for this version
-
0.22.023 Sep 2021Release notes
Open source →Sep 23, 2021
This release targets numerous issues largely in support of ibc-rs. The major breaking change in this regard is in the API we use to perform verification in the
tendermint-light-clientcrate.Toward
no_stdcompatibility and flexibility in the way we handle error tracing and reporting, we have also refactored the entire error handling system intendermint-rsto make use of flex-error.Finally, we are also (painfully) aware of the fact that our documentation does not build for this release and apologize for this. We currently still depend on Prost v0.7.0 and are awaiting a new release of Prost after v0.8.0 that does not break our builds. We have #978 open in preparation for this upgrade and will release a new version of
tendermint-rsas soon as a new Prost release is available.See below for more specific detail as to what has changed in this release.
BREAKING CHANGES
- All crates' error handling has been refactored to make use of
flex-error. This gives users greater flexibility in terms of the error handling/reporting systems they want to use and is a critical step towardsno_stdsupport. (#923) [tendermint-rpc]The/txendpoint'sRequest::hashfield has been changed fromStringtotendermint::abci::transaction::Hash(#942)[tendermint-light-client]The light client verification functionality has been refactored (including breaking changes to the API) such that it can be more easily used from bothtendermint_light_clientandibc-rs(#956)[tendermint-light-client]Disable thelightstore-sledfeature by default (#976)
BUG FIXES
[tendermint-rpc]The encoding of thehashfield for requests to the/txendpoint has been changed to base64 (from hex) to accommodate discrepancies in how the Tendermint RPC encodes this field for different RPC interfaces (#942)
FEATURES
[tendermint-rpc]Add support for the/consensus_paramsRPC endpoint. See https://docs.tendermint.com/v0.34.x/rpc/\#/Info/consensus_params for details (#832)[tendermint-rpc]Runtime query parsing (relevant to the/subscribeand/tx_searchendpoints) has been reintroduced. This allows for client-side validation of queries prior to submitting them to a remote Tendermint node. An example of how to use this is available in thetendermint-rpcCLI (see the README for details). (#859)[tendermint, tendermint-light-client]Add support for Secp256k1 signatures (#939)
IMPROVEMENTS
[tendermint-p2p]TheSecretConnectioncan now be split into two halves to facilitate full-duplex communication (must be facilitated by using each half in a separate thread). (#938)[tendermint-light-client]Model-based tests are now disabled by default and can be enabled through thembtfeature (#968)[tendermint, tendermint-rpc]DeriveEqonSignedHeaderandCommit(#969)[tendermint-light-client]AddWebSocketClient::new_with_configto specify the WebSocket connection settings (#974)[tendermint-p2p]Amino support is now implemented using the upstreamprostcrate, eliminating a dependency onprost-amino(#979)
- All crates' error handling has been refactored to make use of
-
0.21.021 Jul 2021Release notes
Open source →Jul 20, 2021
This release introduces several minor breaking changes (see below), among other improvements, that clean up a few RPC-related data structures and ensure better correctness of the
TrustThresholdFractiondata structure when constructing and deserializing it.A security issue was reported in
prostv0.7, and we attempted to upgrade to v0.8, but we are still awaiting one bug fix in v0.8 before we can upgrade. The moment that is fixed inprost, we will upgrade to v0.8 and provide anothertendermint-rsrelease.BREAKING CHANGES
[tendermint-rpc]Remove theTmEventandAttributestructs and replace them with their equivalent domain types from thetendermintcrate (#918)[tendermint]TheTrustThresholdFractionstruct can now only be constructed by way of itsnewconstructor. Deserialization also now makes use of this constructor, facilitating better validation. Thenumeratoranddenominatorfields can be accessed (read-only) via their respective methods, since the fields are now private. (#924)
BUG FIXES
[tendermint]Update Genesis for Tendermint v.0.34.x (#917)[tendermint-rpc]Fix bug whereNewBlockevents emitted by Tendermint could not be parsed because of a missing field (#930)
IMPROVEMENTS
[tendermint-proto]Regenerate the Rust equivalents of the Tendermint Protobuf structures for Tendermint v0.34.9 (#871)[tendermint-rpc]AddPartialEq,Eq,PartialOrd,OrdandHashtrait bounds to the RPC URL types (#919)[tendermint-rpc]Propagate JSON-RPC errors through the Rust subscription (#932)
-
0.20.022 Jun 2021Release notes
Open source →Jun 22, 2021
This release's number is bumped up to v0.20.0 due to two minor breaking changes in our public APIs (see the breaking changes section below for details).
Also, since nobody was really making use of the Light Node, we decided to remove its crate from the repo for now. If anyone needs it back, please contact us and we'll restore it (although, we are considering migrating any and all binaries to their own repositories in the future to separate library-level concerns from operational ones).
The
tendermint-p2pcrate is still undergoing significant expansion (thanks to @xla and @melekes). A lot's been done and we're in the process of finalizing this new architecture, which will form the basis for future work towards building more Tendermint nodes in Rust. More on this in future releases.Other than that, this release mainly contains various small bug fixes, improvements and dependency updates.
BREAKING CHANGES
[tendermint-p2p]Remove superfluous module name suffixes inp2p::error(#898)[tendermint]Renametime::Time::to_rfc3339toas_rfc3339to be consistent with Rust's self reference conventions (#910)
BUG FIXES
[tendermint-abci,tendermint-rpc]Fix DeliverTx response deserialization issues withgas_wantedandgas_usedfields (#876)[tendermint]Update TendermintConfig for Tendermint v.0.34.x (#897)[tendermint]Better handling of optional values in TendermintConfig (#908)
IMPROVEMENTS
[tendermint-light-client]Replacedtempdirdev dependency (deprecated) withtempfile(#851)- Updated the changelog process to use unclog format and unblock the PR merge process (#891).
[tendermint]Changedtendermint::public_key::Secp256k1to be an alias ofk256::ecdsa::VerifyingKey(#900)
REMOVED
[tendermint-light-node]We removed thelight-nodecrate from the repo since nobody's currently really using it. If anyone needs please log an issue and we'll restore it. It will, of course, remain accessible in the repo history for now. (#879)
-
0.19.006 Apr 2021Release notes
Open source →Apr 7, 2021
This release primarily aims to enhance RPC and Light Client functionality, thereby improving
ibc-rsand fixing an important bug affecting the Light Client (#831).The RPC now supports TLS 1.2+ connections (through the use of
rustls), allowing for secure HTTP and WebSocket connections, as well as HTTP/HTTPS proxies. This implies that the Light Client now also supports these types of connections.We additionally introduce two new crates:
tendermint-abci- A lightweight, minimal framework for building Tendermint ABCI applications in Rust.tendermint-light-client-js- Exposes the Light Client'sverifymethod to JavaScript/WASM. This implies that, for now, you need to bring your own networking functionality to practically make use of the Light Client's verification mechanisms.
Various relatively minor breaking API changes were introduced, and are listed below.
BREAKING CHANGES
[tendermint]Thetendermint::block::CommitSigenum's members have been renamed to be consistent with Rust's naming conventions. For example,BlockIDFlagAbsentis now renamed toBlockIdFlagAbsent(#839)[tendermint-light-client]The Light Client no longer usestendermint::net::Addressto refer to peers, and instead uses thetendermint_rpc::Urltype (#835)[tendermint-rpc]TheClient::validatorsmethod now requires aPagingparameter. Previously, this wasn't possible and, if the network had more than 30 validators (the default for the RPC endpoint), it only returned a subset of the validators (#831)[tendermint-rpc]TheClient::validatorsmethod now requires aPagingparameter. Previously, this wasn't possible and, if the network had more than 30 validators (the default for the RPC endpoint), it only returned a subset of the validators (#831)[tendermint-rpc]TheSubscriptionClienttrait now requires aclosemethod, since it assumes that subscription clients will, in general, use long-running connections. This should not, however, break any downstream usage of the clients (#820)[tendermint-rpc]TheHttpClientandWebSocketClientconstructors now take any input that can be converted to atendermint_rpc::Url. This should hopefully have minimal impact on projects using the code, but it might require some minor code changes in some cases - see the crate docs for more details (#820)[tendermint-rpc]Theevent::EventData::GenericJSONEventmember has been renamed toevent::EventData::GenericJsonEvent(#839)[tendermint-testgen]TheTMLightBlockdata structure has been renamed toTmLightBlockto be consistent with Rust's naming conventions (#839)
FEATURES
[tendermint-abci]Release minimal framework for building ABCI applications in Rust (#794)[tendermint-light-client]The Light Client now provides support for secure (HTTPS) connections to nodes (#835)[tendermint-light-client-js]First release of thetendermint-light-client-jscrate to provide access to Tendermint Light Client functionality from WASM. This only provides access to theverifymethod at present, exclusively provides access to block verification. This does not include network access or the Light Client's bisection algorithm (#812)[tendermint-rpc]Support for secure connections (https://andwss://) has been added to the Tendermint RPC clients, as well as support for HTTP proxies for HTTP clients (#820)[tendermint-rpc]Atendermint-rpcCLI has been added to simplify interaction with RPC endpoints from the command line (#820)
IMPROVEMENTS
[tendermint]IPv6 support has been added fornet::Address(#5)[tendermint-rpc]Addwait_until_healthyutility method for RPC clients to poll the/healthendpoint of a node until it either returns successfully or times out (#855)
BUG FIXES
[tendermint-light-client]Due to the RPC client'svalidatorsmethod sometimes only returning a subset of validators (for networks larger than 30 validators), validator set hash calculations were failing. Now we are at least obtaining a full validator set (#831)[tendermint-rpc]Fix intermittent deserialization failures of the consensus state response (#836)
-
0.18.111 Feb 2021Release notes
Open source →Feb 10, 2021
The main focus for this minor release is fixing the rendering of our
tendermint-light-clientcrate documentation.BUG FIXES
[tendermint-proto]Fix panic in evidence serialization in the case where we receive an empty evidence Protobuf structure (#782)[tendermint-light-node]Upgradejsonrpcdependency to v17.0 to fix security vulnerability inhyperv0.12.35 (#803)[tendermint-light-client]Fix rendering of documentation on docs.rs (#806)
-
0.18.029 Jan 2021Release notes
Open source →Jan 29, 2021
This release is breaking due to significant dependency updates (see below). It also introduces experimental support for backward verification for the Light Client, feature-guarded behind the
unstablefeature.The Light Client's storage system and its API were also improved.
BREAKING CHANGES:
[all]Update all crates to use the latest version of the following dependencies: (#764)tokio(1.0)hyper(0.14)prost(0.7)bytes(1.0)async-tungstenite(0.12)
FEATURES
[light-client]Add basic support for backward verification, behind aunstablefeature flag. (#361) Note: This feature is currently unstable and should not be relied on by downstream dependencies.
BUG FIXES
-
0.17.111 Jan 2021Release notes
Open source →Jan 11, 2021
This release primarily focuses on fixing #774, which is critical to the Light Client's correct and reliable operation.
IMPROVEMENTS:
[rpc, tools]The RPC probe has been moved into thetoolsfolder and can now be easily executed against a Tendermint node running the kvstore app by way of cargo make.tendermint-rpctest coverage has been expanded here too. (#758)
BUG FIXES:
[tendermint]Timevalues were not always formatted properly, causing the light client to sometimes return malformed light blocks (#774)
-
0.17.017 Dec 2020Release notes
Open source →Dec 17, 2020
This release is a significant breaking upgrade from v0.16.0 that primarily targets compatibility with Tendermint v0.34 and the Cosmos Stargate release.
To highlight some of the major changes over the course of 3 release candidates and this release, we have:
- Provided Tendermint v0.34.0 compatibility.
- Supported the development of ibc-rs.
- Improved our model-based testing to provide complex test cases for the Light Client.
- Refactored our serialization infrastructure to remove all Amino types and ensure Protobuf compatibility (see the proto crate). This includes a lot of work towards clearly separating our domain types from their serialization types.
- Started work on our P2P layer towards the eventual goal of implementing a Tendermint full node.
- Started work towards offering a WASM-based Tendermint Light Client.
- Introduced a WebSocket-based RPC client for interacting with the Tendermint RPC, including event subscription.
Please see the following detailed release notes, as well as the crate documentation, for further details.
BREAKING CHANGES:
[rpc]The RPC client interface has been refactored. TheClientstruct is nowHttpClientand is enabled with thehttp-clientfeature. It provides all RPC endpoints except the subscription related ones.[rpc]The EventListener was replaced with a new and improved WebSocketClient for more robust event subscriptions. It can be enabled with thewebsocket-clientfeature. Subscriptions are exposed using unbounded channels. (#516)[tendermint]Removed all traces of Amino, includingamino_typesmodules. All types are now "domain types" implementing theProtobuftrait for Protobuf-encoding using Prost. (#504, #535, #536, #585)[tendermint]Protocol breaking changes for compatibility with Tendermint Core v0.34 (and the Cosmos Stargate release) (#305):- Validators are now sorted by voting power (descending) and address (ascending). (#506)
- Remove PubKey field from DuplicateVoteEvidence (#502)
- Fix hash of empty Merkle tree to comply with RFC6962 (#498)
- All binary encoding is done via protobuf3 instead of amino (#504, #535, #536, #585)
- Various updates to JSON encoding (#505)
[tendermint]Direct serialization capabilities have been removed from the domain types. (#639)[tendermint]Work has started on making it compulsory to construct domain types by way of their constructors to ensure validity. (#639)
FEATURES:
[light-client]Introduce builder API for light client initialization (#583)[rpc]The subscription client interface provides a structuredQuerymechanism to help ensure compile-time validity of subscription queries. (#584)[rpc]Support unsubscribing from events (#516)[spec]TLA+ for the Tendermint consensus algorithm including proof forks can only be caused by +1/3 Byzantine validators committing equivocation or amnesia attacks. (#496)[spec]English spec of light client attacks and evidence required to correctly handle them (#526)[tendermint]Implementfmt::UpperHexforTransaction(#613)[tendermint/proto-compiler]Protobuf structs generator now also accepts commit IDs from the Tendermint Go repository (#660)[testgen]Various features and improvements to support model-based testing with the [Apalache model checker] (#414)
IMPROVEMENTS:
- [
light-client]Start using model-based testing to test Light Client executions against traces emitted from the TLA+ model (#414) [light-client]Only require Tokio whenrpc-clientfeature is enabled (#425)[rpc]AWebSocketClientis now provided to facilitate event subscription for a limited range of RPC events over a WebSocket connection. See the Tendermint/subscribeendpoint's and thetendermint-rpccrate's docs for more details (#516)[rpc]The subscription client interface provides a structuredQuerymechanism to help ensure compile-time validity of subscription queries. See the crate docs and #584 for details.[rpc]The RPC request and response types' fields are now all publicly accessible (#636).[rpc]A new RPC probe (in therpc-probedirectory) has been added to facilitate quick, pre-scripted interactions with a Tendermint node (via its WebSocket endpoint). This aims to help improve testing and compatibility between Tendermint in Go and Rust. (#653)[rpc]TheWebSocketClientnow adds support for all remaining RPC requests by way of implementing theClienttrait (#646)[rpc]Support for thetx_searchRPC endpoint has been added (#701)[rpc]Responses that include events now automatically have their tag key/value pairs decoded from base64, where previously tag key/value pairs were Base64-encoded (#717)[rpc]Support for theconsensus_stateRPC endpoint has been added (#719)[tendermint]Removetotal_voting_powerparameter fromvalidator::Set::new(#739)[tendermint, rpc, light-client]Crates now compile to WASM on thewasm32-unknown-unknownandwasm32-wasitargets (#463)[tendermint, light-client]Specify the proposer in the validator set of fetched light blocks (#705)[tendermint-proto]Upgrade protobuf definitions to Tendermint Go v0.34.0 (#737)[testgen]Computelast_block_idhash when generating aLightChain(#745)- Dependency updates:
BUG FIXES:
[light-client]Fix bug where a commit with only absent signatures would be deemed valid instead of invalid (#650)[light-client]Revert a change introduced in #652 that would enable DoS attacks, where full nodes could spam the light client with massive commits (eg. 10k validators).[rpc]Correctly handles control and keep-alive messages (#516, #590)[rpc]More robust handling of concurrency issues (#311, #313)
-
0.17.0-rc318 Nov 2020 pre-releaseNothing published for this version
-
0.17.0-rc211 Nov 2020 pre-releaseNothing published for this version
-
0.17.0-rc115 Oct 2020 pre-releaseNothing published for this version
-
0.1.021 Sep 2020