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