v0.40.0-rc0
Cosmos SDK v0.40.0 "Stargate" Release Notes
This release introduces several new important updates to the Cosmos SDK. The release notes below provide an overview of the larger high-level changes introduced in the v0.40 (aka Stargate) release series.
That being said, this release does contain many more minor and module-level changes besides those mentioned below. For a comprehsive list of all breaking changes and improvements since the v0.39 release series, please see the changelog .
Protocol Buffer Migration
Stargate introduces protocol buffers as the new standard serialization format for blockchain state & wire communication within the Cosmos SDK. Protobuf definitions are organized into packages that mirror Cosmos SDK modules in the new ./proto directory of the SDK repo.
For an overview of the SDK's usage of protocol buffers, please look at the following ADRs and meta-issues which tracked the corresponding work:
• ADR019 Protobuf State Encoding / Full Proto Encoding (#5444)
• ADR020 Protobuf Transaction Encoding / Proto Any Tx Migration (#6213)
• ADR021 Protobuf Query Encoding / Query Protobuf Migration (#5921)
• ADR023 Protobuf Naming Conventions
• ADR027 Deterministic Protobuf Serialization
As a high level summary these represent the following major changes to the SDK:
• New protocol buffer based encoding for all blockchain state (direct queries to tendermint now return protobuf binary encoded data, as opposed to Amino encoded data)
• New transaction signing path implemented according to ADR020 above
• Two new querier APIs (see #5921 for details) • Support for new gRPC based querier services
• gRPC Gateway for REST querying corresponding to the new gRPC querier services
Note: Existing Amino REST endpoints are all preserved, though they are planned to be deprecated in a future release.
Inter Blockchain Communication (IBC)
The `x/ibc` module is now available and ready for use. High level IBC documentation is available at docs.cosmos.network . For more details check the the module documentation in the `x/ibc/core/spec` directory, or the ICS specs below:
• ICS 002 - Client Semantics subpackage
• ICS 003 - Connection Semantics subpackage
• ICS 004 - Channel and Packet Semantics subpackage
• ICS 005 - Port Allocation subpackage
• ICS 006 - Solo Machine Client subpackage
• ICS 007 - Tendermint Client subpackage
• ICS 009 - Loopback Client subpackage
• ICS 020 - Fungible Token Transfer subpackage
• ICS 023 - Vector Commitments subpackage
• ICS 024 - Host State Machine Requirements subpackage
Single application binary #6571
Cosmos SDK now compiles to a single application binary, as opposed to seperate binaries for running a node and one for the CLI & REST server.
We've now included a barebones application `simapp` / `simd` for testing and demonstrating how an SDK application should be constructed.
Details of the CLI refactor can be found here .
Test Network Testing Framework #6489
Introduction of the testutil package. This package allows the creation of an entirely in-process testing cluster with fully operational Tendermint nodes constructed with SimApp. Each node has an RPC & API exposed. In addition, the network exposes a Local client that can be used to directly interface with Tendermint's RPC. The test network is entirely configurable.
Tendermint 0.34 #6365
Update to the latest version of tendermint which adds support for the following (in addition many other improvements):
• ABCI update to give application control over block pruning
• Support for arbitrary initial block height
• Support for State Sync
• Evidence handling for new types of evidence submitted by Tendermint from light clients
A more detailed list of Tendermint updates can be found here .