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.
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)
- ARD031 Protobuf Msg Services
- 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
For details on how to upgrade Cosmos SDK based apps and modules to Stargate, please see App and Modules Migration in the Cosmos SDK docs.
Note: Existing Amino REST endpoints are all preserved, though they are planned to be deprecated in a future release.
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.1 #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.