Skip to content

Releases: cosmos/cosmos-sdk

v0.40.0

08 Jan 22:55
a334a59

Choose a tag to compare

Cosmos SDK v0.40.0 "Stargate"

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:

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.

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:

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.

v0.40.0-rc7

07 Jan 20:29
7fd3d00

Choose a tag to compare

v0.40.0-rc7 Pre-release
Pre-release

Changes since v0.40.0-r6

Improvements

  • (tendermint) #8281 Update tendermint to v0.34.1

Bug Fixes

  • (x/gentx) #8255 Fix gentx command setting wrong amount

v0.40.0-rc6

05 Jan 01:58
f4ce686

Choose a tag to compare

v0.40.0-rc6 Pre-release
Pre-release

Changes since v0.40.0-rc5:

Improvements

  • (x/staking) #8178 Update default historical header number for stargate

Bug Fixes

  • (x/distribution) #8240 fix setting withdraw address in x/distribution
  • (x/gentx) #8183 change gentx cmd amount to arg from flag
  • (x/ibc) #8165 Support IBC upgrade on same revision
  • (x/ibc) #8169 fix IBC software upgrade proposals from automatically failing, add unpackinterfaces function
  • (x/ibc) #8170 fix ClientUpdateProposal unpacker
  • (x/ibc) #8187 fix IBC upgrade, issue with commit & halting logic
  • (x/ibc) #8200 fix IBC timeout verification bug
  • (rest) #8221 fix unregistered interface failure when calling GET /blocks/latest via REST API

v0.40.0-rc5

15 Dec 02:53
7c1da3d

Choose a tag to compare

v0.40.0-rc5 Pre-release
Pre-release

Changelog entries since v0.40.0-rc4:

Improvements

  • (auth/tx) Add new auth/tx gRPC & gRPC-Gateway endpoints for basic querying & broadcasting support
    • #7842 Add TxsByEvent gRPC endpoint
    • #7852 Add tx broadcast gRPC endpoint
  • (client/keys) #8043 Add support for export of unarmored private key
  • (client/tx) #7801 Update sign-batch multisig to work online
  • (crypto) #7987 Fix the inconsistency of CryptoCdc, only use
    codec/legacy.Cdc.
  • (logging) #8072 Refactor logging:
    • Use zerolog over Tendermint's go-kit logging wrapper.
    • Introduce Tendermint's --log_format=plain|json flag. Using format json allows for emitting structured JSON
      logs which can be consumed by an external logging facility (e.g. Loggly). Both formats log to STDERR.
    • The existing --log_level flag and it's default value now solely relates to the global logging
      level (e.g. info, debug, etc...) instead of <module>:<level>.
  • (SDK) #7925 Updated dependencies
    • Updated gRPC dependency to v1.33.2
    • Updated iavl dependency to v0.15-rc5
    • Updated tendermint dependency to v0.34.0
  • (version) #7848 #7941
    version --long output now shows the list of build dependencies and replaced build dependencies.
  • (x/genutil) #8099 init now supports a --recover flag to recover
    the private validator key from a given mnemonic

Client Breaking

  • (crypto) #7419 The SDK doesn't use Tendermint's crypto.PubKey
    interface anymore, and uses instead it's own PubKey interface, defined in crypto/types. Replace all instances of
    crypto.PubKey by cryptotypes.Pubkey.
  • (x/staking) #7419 The TmConsPubKey method on ValidatorI has been
    removed and replaced instead by ConsPubKey (which returns a SDK cryptotypes.PubKey) and TmConsPublicKey (which
    returns a Tendermint proto PublicKey).

State Machine Breaking Changes

  • (x/staking) #7979 keeper pubkey storage serialization migration
    from bech32 to protobuf.

Features

  • (codec/types) #8106 Adding NewAnyWithCustomTypeURL to correctly
    marshal Messages in TxBuilder.

API Breaking

  • #8080 Updated the codec.Marshaler interface
    • Moved MarshalAny and UnmarshalAny helper functions to codec.Marshaler and renamed to MarshalInterface and
      UnmarshalInterface respectively. These functions must take interface as a parameter (not a concrete type nor Any
      object). Underneath they use Any wrapping for correct protobuf serialization.
  • (client) #8107 Renamed PrintOutput and PrintOutputLegacy
    methods of the context.Client object to PrintProto and PrintObjectLegacy.
  • (grpc/tmservice) #8060 TmService gRPC service's validator pubkey
    type changed from bech32 format to Any
  • (x/auth/tx) #8106 change related to missing append functionality in
    client transaction signing
    • added overwriteSig argument to x/auth/client.SignTx and client/tx.Sign functions.
    • removed x/auth/tx.go:wrapper.GetSignatures. The wrapper provides TxBuilder functionality, and it's a private
      structure. That function was not used at all and it's not exposed through the TxBuilder interface.

Bug Fixes

  • (crypto) #7966 Bip44Params String() function now correctly
    returns the absolute HD path by adding the m/ prefix.
  • (crypto/keys) #7838 Add support for TM secp256k1 keys back to the
    SDK for consensus pubkeys
  • (x/auth/client/cli) #8106 fixing regression bugs in transaction signing.

v0.37.15

10 Dec 12:35
a805fc6

Choose a tag to compare

Improvements

  • (tendermint) Bump Tendermint version to v0.32.14.

v0.40.0-rc4

01 Dec 01:42
5d32ed6

Choose a tag to compare

v0.40.0-rc4 Pre-release
Pre-release

Updates since v0.40.0-rc3:

Bug Fixes

  • (store) #8048 Fix issue where SetInitialVersion was never getting called, causing all queries to return empty on chains with non-zero initial height

v0.39.2 - The Launchpad Series

24 Nov 10:01
2727c14

Choose a tag to compare

Cosmos SDK v0.39.2 Release Notes

This release fixes various bugs and brings coin's denom validation to the Cosmos SDK 0.39 release series.

See the Cosmos SDK 0.39.2 milestone on our issue tracker for details.

Allow ValidateDenom() to be customised per application

Applications can now customise types.Coin denomination validation by passing
their application-specific validation function to types.SetCoinDenomRegex().

Upgrade queries don't work after upgrade

New stores can now be registered during an on-chain upgrade. This is to
prevent blockchain state queries from stopping working after a successful upgrade.

ApproxRoot() infinite looping

The types.Dec.ApproxRoot() function has now a maximum number 100 iterations as backup boundary
condition to prevent the client's code from entering an endless loop.

Go 1.15

This is the first release of the Launchpad series that has been tested and built with go 1.15.

Tendermint's updates

Tendermint has received a few updates in the last development cycle.

The pings frequency for remote private validators and the number of GetPubKey requests
have been reduced to prevent validators from failing to sync when using remote signers.

A security vulnerability that affected the Go's encoding/binary package was reported.
Tendermint's v0.33.8 release was published with the objective to aid users in using the correct version of Go.
Please refer to this bug report for more information.

Known issues

Keyrings using the test backend that were created with applications built with Cosmos SDK v0.39.1
and go 1.15 may break with the following error after re-compiling with Cosmos SDK v0.39.2:

ERROR: aes.KeyUnwrap(): integrity check failed.

This is due to the update that the jose2go dependency
has received that made it fully compatible with go 1.15.

v0.40.0-rc3

06 Nov 19:17
5903586

Choose a tag to compare

v0.40.0-rc3 Pre-release
Pre-release

Updates since v0.40.0-rc2:

Improvements

  • (tendermint) #7828 Update tendermint dependency to v0.34.0-rc6

v0.40.0-rc2

03 Nov 00:27
ce39940

Choose a tag to compare

v0.40.0-rc2 Pre-release
Pre-release

Client Breaking

  • (x/upgrade) #7697 Rename flag name "--time" to "--upgrade-time", "--info" to "--upgrade-info", to keep it consistent with help message.

API Breaking

  • (x/staking/types) #7447 Remove bech32 PubKey support:
    • ValidatorI interface update. GetConsPubKey renamed to TmConsPubKey (consensus public key must be a tendermint key). TmConsPubKey, GetConsAddr methods return error.
    • Validator update. Methods changed in ValidatorI (as described above) and ToTmValidator return error.
    • Validator.ConsensusPubkey type changed from string to codectypes.Any.
    • MsgCreateValidator.Pubkey type changed from string to codectypes.Any.
  • Deprecating and renaming MakeEncodingConfig to MakeTestEncodingConfig (both in simapp and simapp/params packages).
  • (tx) #7688 The gRPC simulate service method has been moved from cosmos.base.v1beta1.simulate to cosmos.tx.v1beta1, as a method in the Tx service.
  • #7764 Added module initialization options:
    • server/types.AppExporter requires extra argument: AppOptions.
    • server.AddCommands requires extra argument: addStartFlags types.ModuleInitFlags
    • x/crisis.NewAppModule has a new attribute: skipGenesisInvariants. PR

Features

  • (tx) #7688 Add a new Tx gRPC service with methods Simulate and GetTx (by hash).
  • Modules
    • x/crisis has a new function: AddModuleInitFlags, which will register optional crisis module flags for the start command.

Bug Fixes

  • (client) #7699 Fix panic in context when setting invalid nodeURI. WithNodeURI does not set the Client in the context.
  • (x/gov) #7641 Fix tally calculation precision error.

Improvements

  • (rest) #7649 Return an unsigned tx in legacy GET /tx endpoint when signature conversion fails
  • (cli) #7764 Update x/banking and x/crisis InitChain to improve node startup time

v0.40.0-rc1

20 Oct 17:29
68a23c4

Choose a tag to compare

v0.40.0-rc1 Pre-release
Pre-release

The v0.40.0-rc1 release contains the following updates since RC0:

Client Breaking Changes

  • Modules
    • (x/staking) #7499 BondStatus is now a protobuf enum instead of an int32, and JSON serialized using its protobuf name, so expect names like BOND_STATUS_UNBONDING as opposed to Unbonding.
    • (x/staking) #7556 The ABCI's Result.Data field for MsgBeginRedelegate and MsgUndelegate responses does not contain custom binary marshaled completionTime, but the protobuf encoded MsgBeginRedelegateResponse and MsgUndelegateResponse structs respectively
    • (x/evidence) #7538 The ABCI's Result.Data field for MsgSubmitEvidence responses does not contain the raw evidence's hash, but the protobuf encoded MsgSubmitEvidenceResponse struct.
    • (x/gov) #7533 The ABCI's Result.Data field for MsgSubmitProposal responses does not contain a raw binary encoding of the proposalID, but the protobuf encoded MsgSubmitSubmitProposalResponse struct.

API Breaking

  • (AppModule) #7518 #7584 Rename AppModule.RegisterQueryServices to AppModule.RegisterServices, as this method now registers multiple services (the gRPC query service and the protobuf Msg service). A Configurator struct is used to hold the different services.

Features

  • (modules) #7540 Protobuf service definitions can now be used for packing Msgs in transactions as defined in ADR 031. All modules now define a Msg protobuf service.
  • (codec) #7519 InterfaceRegistry now inherits jsonpb.AnyResolver, and has a RegisterCustomTypeURL method to support ADR 031 packing of Anys. AnyResolver is now a required parameter to RejectUnknownFields.
  • (baseapp) #7519 Add ServiceMsgRouter to BaseApp to handle routing of protobuf service Msgs. The two new types defined in ADR 031, sdk.ServiceMsg and sdk.MsgRequest are introduced with this router.
  • (cli) #7221 Add the option of emitting amino encoded json from the CLI

Bug Fixes

  • (kvstore) #7415 Allow new stores to be registered during on-chain upgrades.

Improvements

  • (tendermint) #7527 Update sdk to tendermint 0.34-rc5
  • (iavl) #7549 Update sdk to IAVL 0.15.0-rc4