This document collects all of the breaking changes from the CHANGELOG.md files located in the Tendermint, Cosmos SDK, and Gaia Github repositories.
Its purpose is to provide a checklist for potential impact on deployments; however, the changelog located in each repository serves other important details, such as bug fixes and feature improvements.
- Tendermint Changelog; Tendermint versions v0.32.13 - v0.34.1
- Cosmos Changelog; Cosmos SDK versions v0.37.14 - v0.40.0
-
CLI/RPC/Config
- [cli] #5786 deprecate snake_case commands for hyphen-case (@cmwaters)
-
Go API
- [libs/protoio] #5868 Return number of bytes read in
Reader.ReadMsg()(@erikgrinaker)
- [libs/protoio] #5868 Return number of bytes read in
-
CLI/RPC/Config
- [config] #5315 Rename
prof_laddrtopprof_laddrand move it torpcsection (@melekes) - [evidence] #4959 Add JSON tags to
DuplicateVoteEvidence(@marbar3778) - [light] #4946
tendermint litecommand has been renamed totendermint light(@marbar3778) - [privval] #4582
roundin private_validator_state.json is no longer JSON string; instead it is a number (@marbar3778) - [rpc] #4792
/validatorsare now sorted by voting power (@melekes) - [rpc] #4947 Return an error when
pagepagination param is 0 in/validators,tx_search(@melekes) - [rpc] #5137 JSON tags of
gasWantedandgasUsedinResponseCheckTxandResponseDeliverTxhave been made snake_case (gas_wantedandgas_used) (@marbar3778) - [rpc] #5315 Remove
/unsafe_start_cpu_profiler,/unsafe_stop_cpu_profilerand/unsafe_write_heap_profile. Please use pprof functionality instead (@melekes) - [rpc/client, rpc/jsonrpc/client] #5347 All client methods now accept
context.Contextas 1st param (@melekes)
- [config] #5315 Rename
-
Apps
- [abci] #4704 Add ABCI methods
ListSnapshots,LoadSnapshotChunk,OfferSnapshot, andApplySnapshotChunkfor state sync snapshots.ABCIVersionbumped to 0.17.0. (@erikgrinaker) - [abci] #4989
ProofwithinResponseQueryhas been renamed toProofOps(@marbar3778) - [abci] #5096
CheckTxTypeProtobuf enum names are now uppercase, to follow Protobuf style guide (@erikgrinaker) - [abci] #5324 ABCI evidence type is now an enum with two types of possible evidence (@cmwaters)
- [abci] #4704 Add ABCI methods
-
P2P Protocol
- [blockchain] #4637 Migrate blockchain reactor(s) to Protobuf encoding (@marbar3778)
- [evidence] #4949 Migrate evidence reactor to Protobuf encoding (@marbar3778)
- [mempool] #4940 Migrate mempool from to Protobuf encoding (@marbar3778)
- [mempool] #5321 Batch transactions when broadcasting them to peers (@melekes)
MaxBatchBytesnew config setting defines the max size of one batch.
- [p2p/pex] #4973 Migrate
p2p/pexreactor to Protobuf encoding (@marbar3778) - [statesync] #4943 Migrate state sync reactor to Protobuf encoding (@marbar3778)
-
Blockchain Protocol
- [evidence] #4725 Remove
PubkeyfromDuplicateVoteEvidence(@marbar3778) - [evidence] #5499 Cap evidence to a maximum number of bytes (supercedes #4780) (@cmwaters)
- [merkle] #5193 Header hashes are no longer empty for empty inputs, notably
DataHash,EvidenceHash, andLastResultsHash(@erikgrinaker) - [state] #4845 Include
GasWantedandGasUsedintoLastResultsHash(@melekes) - [types] #4792 Sort validators by voting power to enable faster commit verification (@melekes)
- [evidence] #4725 Remove
-
On-disk serialization
-
Light client, private validator
-
Go API
- [consensus] #4582 RoundState:
Round,LockedRound&CommitRoundare nowint32(@marbar3778) - [consensus] #4582 HeightVoteSet:
roundis nowint32(@marbar3778) - [crypto] #4721 Remove
SimpleHashFromMap()andSimpleProofsFromMap()(@erikgrinaker) - [crypto] #4940 All keys have become
[]byteinstead of[<size>]byte. The byte method no longer returns the marshaled value but just the[]byteform of the data. (@marbar3778) - [crypto] #4988 Removal of key type multisig (@marbar3778)
- The key has been moved to the Cosmos-SDK
- [crypto] #4989 Remove
Simpleprefixes fromSimpleProof,SimpleValueOp&SimpleProofNode. (@marbar3778)merkle.Proofhas been renamed toProofOps.- Protobuf messages
Proof&ProofOphas been moved toproto/crypto/merkle SimpleHashFromByteSliceshas been renamed toHashFromByteSlicesSimpleHashFromByteSlicesIterativehas been renamed toHashFromByteSlicesIterativeSimpleProofsFromByteSliceshas been renamed toProofsFromByteSlices
- [crypto] #4941 Remove suffixes from all keys. (@marbar3778)
- ed25519: type
PrivKeyEd25519is nowPrivKey - ed25519: type
PubKeyEd25519is nowPubKey - secp256k1: type
PrivKeySecp256k1is nowPrivKey - secp256k1: type
PubKeySecp256k1is nowPubKey - sr25519: type
PrivKeySr25519is nowPrivKey - sr25519: type
PubKeySr25519is nowPubKey
- ed25519: type
- [crypto] #5214 Change
GenPrivKeySecp256k1toGenPrivKeyFromSecretto be consistent with other keys (@marbar3778) - [crypto] #5236
VerifyBytesis nowVerifySignatureon thecrypto.PubKeyinterface (@marbar3778) - [evidence] #5361 Add LightClientAttackEvidence and change evidence interface (@cmwaters)
- [libs] #4831 Remove
Bech32pkg from Tendermint. This pkg now lives in the cosmos-sdk (@marbar3778) - [light] #4946 Rename
lite2pkg tolight. Removeliteimplementation. (@marbar3778) - [light] #5347
NewClient,NewHTTPClient,VerifyHeaderandVerifyLightBlockAtHeightnow acceptcontext.Contextas 1st param (@melekes) - [merkle] #5193
HashFromByteSlicesandProofsFromByteSlicesnow return a hash for empty inputs, following RFC6962 (@erikgrinaker) - [proto] #5025 All proto files have been moved to
/protodirectory. (@marbar3778)- Using the recommended the file layout from buf, see here for more info
- [rpc/client] #4947
Validators,TxSearchpage/per_pageparams become pointers (@melekes)UnconfirmedTxslimitparam is a pointer
- [rpc/jsonrpc/server] #5141 Remove
WriteRPCResponseArrayHTTP(useWriteRPCResponseHTTPinstead) (@melekes) - [state] #4679
TxResultis a Protobuf type defined inabcitypes directory (@marbar3778) - [state] #5191 Add
State.InitialHeightfield to record initial block height, must be1(not0) to start from 1 (@erikgrinaker) - [state] #5231
LoadStateFromDBOrGenesisFile()andLoadStateFromDBOrGenesisDoc()no longer saves the state in the database if not found, the genesis state is simply returned (@erikgrinaker) - [state] #5348 Define an Interface for the state store. (@marbar3778)
- [types] #4939
SignedMsgTypehas moved to a Protobuf enum types (@marbar3778) - [types] #4962
ConsensusParams,BlockParams,EvidenceParams,ValidatorParams&HashedParamsare now Protobuf types (@marbar3778) - [types] #4852 Vote & Proposal
SignBytesis now funcVoteSignBytes&ProposalSignBytes(@marbar3778) - [types] #4798 Simplify
VerifyCommitTrustingfunc + remove extra validation (@melekes) - [types] #4845 Remove
ABCIResult(@melekes) - [types] #5029 Rename all values from
PartsHeadertoPartSetHeaderto have consistency (@marbar3778) - [types] #4939
TotalinParts&PartSetHeaderhas been changed from aintto auint32(@marbar3778) - [types] #4939 Vote:
ValidatorIndex&Roundare nowint32(@marbar3778) - [types] #4939 Proposal:
POLRound&Roundare nowint32(@marbar3778) - [types] #4939 Block:
Roundis nowint32(@marbar3778)
- [consensus] #4582 RoundState:
Please note that the fix for the False Witness issue renames the VerifyCommitTrusting
function to VerifyCommitLightTrusting. If you were relying on the light client, you may
need to update your code.
-
Go API
- [privval] #4744 Remove deprecated
OldFilePV(@melekes) - [mempool] #4759 Modify
Mempool#InitWALto return an error (@melekes) - [node] #4832
ConfigureRPCreturns an error (@melekes) - [rpc] #4836 Overhaul
libfolder (@melekes) Move lib/ folder to jsonrpc/. Rename: rpc package -> jsonrpc package rpcclient package -> client package rpcserver package -> server package JSONRPCClient to Client JSONRPCRequestBatch to RequestBatch JSONRPCCaller to Caller StartHTTPServer to Serve StartHTTPAndTLSServer to ServeTLS NewURIClient to NewURI NewJSONRPCClient to New NewJSONRPCClientWithHTTPClient to NewWithHTTPClient NewWSClient to NewWS Unexpose ResponseWriterWrapper Remove unused http_params.go
- [privval] #4744 Remove deprecated
- Nodes are no longer guaranteed to contain all blocks up to the latest height. The ABCI app can now control which blocks to retain through the ABCI field
ResponseCommit.retain_height, all blocks and associated data below this height will be removed.
-
Go API
-
CLI/RPC/Config
- [cli] #4505
tendermint litesub-command new syntax (@melekes):lite cosmoshub-3 -p 52.57.29.196:26657 -w public-seed-node.cosmoshub.certus.one:26657 --height 962118 --hash 28B97BE9F6DE51AC69F70E0B7BFD7E5C9CD1A595B7DC31AFF27C50D4948
- [cli] #4505
-
Go API
This release contains breaking changes to the Block#Header, specifically
NumTxs and TotalTxs were removed (#2521). Here's how this change affects
different modules:
- apps: it breaks the ABCI header field numbering
- state: it breaks the format of
Stateon disk - RPC: all RPC requests which expose the header broke
- Go API: the
Headerbroke - P2P: since blocks go over the wire, technically the P2P protocol broke
-
CLI/RPC/Config
-
[rpc] #3471 Paginate
/validatorsresponse (default: 30 vals per page) -
[rpc] #3188 Remove
BlockMetainResultBlockin favor ofBlockIdfor/block -
[rpc]
/block_resultsresponse format updated (see RPC docs for details){ "jsonrpc": "2.0", "id": "", "result": { "height": "2109", "txs_results": null, "begin_block_events": null, "end_block_events": null, "validator_updates": null, "consensus_param_updates": null } } -
[rpc] #4141 Remove
#eventsuffix from the ID in event responses.{"jsonrpc": "2.0", "id": 0, "result": ...} -
[rpc] #4141 Switch to integer IDs instead of
json-client-XYZid=0 method=/subscribe id=0 result=... id=1 method=/abci_query id=1 result=...- ID is unique for each request;
- Request.ID is now optional. Notification is a Request without an ID. Previously ID="" or ID=0 were considered as notifications.
-
[config] #4046 Rename tag(s) to CompositeKey & places where tag is still present it was renamed to event or events. Find how a compositeKey is constructed here
- You will have to generate a new config for your Tendermint node(s)
-
[genesis] #2565 Add
consensus_params.evidence.max_age_duration. Renameconsensus_params.evidence.max_agetomax_age_num_blocks. -
[cli] #1771
tendermint litenow uses new light client package (lite2) and has 3 more flags:--trusting-period,--trusted-heightand--trusted-hash
-
-
Apps
- [tm-bench] Removed tm-bench in favor of tm-load-test
-
Go API
- [rpc] #3953 Modify NewHTTP, NewXXXClient functions to return an error on invalid remote instead of panicking (@mrekucci)
- [rpc/client] #3471
Validatorsnow requires two more args:pageandperPage - [libs/common] #3262 Make error the last parameter of
Task(@PSalant726) - [cs/types] #3262 Rename
GotVoteFromUnwantedRoundErrortoErrGotVoteFromUnwantedRound(@PSalant726) - [libs/common] #3862 Remove
errors.gofromlibs/common - [libs/common] #4230 Move
KVout of common to its own pkg - [libs/common] #4230 Rename
cmn.KVPair(s)tokv.Pair(s)s - [libs/common] #4232 Move
Service&BaseServicefromlibs/commontolibs/service - [libs/common] #4232 Move
common/nil.gototypes/utils.go& make the functions private - [libs/common] #4231 Move random functions from
libs/commoninto pkgrand - [libs/common] #4237 Move byte functions from
libs/commoninto pkgbytes - [libs/common] #4237 Move throttletimer functions from
libs/commoninto pkgtimer - [libs/common] #4237 Move tempfile functions from
libs/commoninto pkgtempfile - [libs/common] #4240 Move os functions from
libs/commoninto pkgos - [libs/common] #4240 Move net functions from
libs/commoninto pkgnet - [libs/common] #4240 Move mathematical functions and types out of
libs/commontomathpkg - [libs/common] #4240 Move string functions out of
libs/commontostringspkg - [libs/common] #4240 Move async functions out of
libs/commontoasyncpkg - [libs/common] #4240 Move bit functions out of
libs/commontobitspkg - [libs/common] #4240 Move cmap functions out of
libs/commontocmappkg - [libs/common] #4258 Remove
Randfrom allrandpkg functions - [types] #2565 Remove
MockBadEvidence&MockGoodEvidencein favor ofMockEvidence
-
Blockchain Protocol
-
P2P Protocol
- [p2p] #3668 Make
SecretConnectionnon-malleable
- [p2p] #3668 Make
-
[proto] #3986 Prefix protobuf types to avoid name conflicts.
- ABCI becomes
tendermint.abci.typeswith the new API endpoint/tendermint.abci.types.ABCIApplication/ - core_grpc becomes
tendermint.rpc.grpcwith the new API endpoint/tendermint.rpc.grpc.BroadcastAPI/ - merkle becomes
tendermint.crypto.merkle - libs.common becomes
tendermint.libs.common - proto3 becomes
tendermint.types.proto3
- ABCI becomes
Support Amino JSON for IBC MsgTransfer This change breaks state backward compatibility.
At the moment hardware wallets are unable to sign messages using SIGN_MODE_DIRECT because the cosmos ledger app does not support proto encoding andSIGN_MODE_TEXTUAL is not available yet.
In order to enable hardware wallets users to interact with IBC, amino JSON support was added to MsgTransfer only.
Counterparty.ChannelID not available in OnChanOpenAck callback implementation. This change breaks state backward compatibility.
In a previous version the Counterparty.ChannelID was available for an OnChanOpenAck callback implementation (read via channelKeeper.GetChannel(). Due to a regression, the channelID is currently empty.
The issue has been fixed by reordering IBC ChanOpenAck and ChanOpenConfirm to execute the core handlers logic first, followed by application callbacks.
It breaks state backward compatibility because the current change consumes more gas, which means that in an updated node a TX might fail because it ran out of gas whilst in older versions it would be successful.
v0.40.0 - 2021-01-08
v0.40.0, known as the Stargate release of the Cosmos SDK, is one of the largest releases of the Cosmos SDK since launch. Please read through this changelog and release notes to make sure you are aware of any relevant breaking changes.
- CLI
- (client/keys) #5889 remove
keys updatecommand. - (x/auth) #5844
tx signcommand now returns an error when signing is attempted with offline/multisig keys. - (x/auth) #6108
tx signcommand's--validate-signaturesflag is migrated into atx validate-signaturesstandalone command. - (x/auth) #7788 Remove
tx authsubcommands, all auth subcommands exist astx <subcommand> - (x/genutil) #6651 The
gentxcommand has been improved. No longer are--fromand--nameflags required. Instead, a single argument,name, is required which refers to the key pair in the Keyring. In addition, an optional--monikerflag can be provided to override the moniker found inconfig.toml. - (x/upgrade) #7697 Rename flag name "--time" to "--upgrade-time", "--info" to "--upgrade-info", to keep it consistent with help message.
- (client/keys) #5889 remove
- REST / Queriers
- (api) #6426 The ability to start an out-of-process API REST server has now been removed. Instead, the API server is now started in-process along with the application and Tendermint. Configuration options have been added to
app.tomlto enable/disable the API server along with additional HTTP server options. - (client) #7246 The rest server endpoint
/swagger-ui/is replaced by/swagger/, and contains swagger documentation for gRPC Gateway routes in addition to legacy REST routes. Swagger API is exposed only if set inapp.toml. - (x/auth) #5702 The
x/authquerier route has changed from"acc"to"auth". - (x/bank) #5572 The
/bank/balances/{address}endpoint now returns all account balances or a single balance by denom when thedenomquery parameter is present. - (x/evidence) #5952 Remove CLI and REST handlers for querying
x/evidenceparameters. - (x/gov) #6295 Fix typo in querying governance params.
- (api) #6426 The ability to start an out-of-process API REST server has now been removed. Instead, the API server is now started in-process along with the application and Tendermint. Configuration options have been added to
- General
- (baseapp) #6384 The
Result.Datais now a Protocol Buffer encoded binary blob of typeTxData. TheTxDatacontainsDatawhich contains a list of Protocol Buffer encoded message data and the corresponding message type. - (client) #5783 Unify all coins representations on JSON client requests for governance proposals.
- (crypto) #7419 The SDK doesn't use Tendermint's
crypto.PubKeyinterface anymore, and uses instead it's ownPubKeyinterface, defined incrypto/types. Replace all instances ofcrypto.PubKeybycryptotypes.Pubkey. - (store/rootmulti) #6390 Proofs of empty stores are no longer supported.
- (store/types) #5730 store.types.Cp() is removed in favour of types.CopyBytes().
- (x/auth) #6054 Remove custom JSON marshaling for base accounts as multsigs cannot be bech32 decoded.
- (x/auth/vesting) #6859 Custom JSON marshaling of vesting accounts was removed. Vesting accounts are now marshaled using their default proto or amino JSON representation.
- (x/bank) #5785 In x/bank errors, JSON strings coerced to valid UTF-8 bytes at JSON marshalling time are now replaced by human-readable expressions. This change can potentially break compatibility with all those client side tools that parse log messages.
- (x/evidence) #7538 The ABCI's
Result.Datafield forMsgSubmitEvidenceresponses does not contain the raw evidence's hash, but the protobuf encodedMsgSubmitEvidenceResponsestruct. - (x/gov) #7533 The ABCI's
Result.Datafield forMsgSubmitProposalresponses does not contain a raw binary encoding of theproposalID, but the protobuf encodedMsgSubmitSubmitProposalResponsestruct. - (x/gov) #6859
ProposalStatusandVoteOptionare now JSON serialized using its protobuf name, so expect names likePROPOSAL_STATUS_DEPOSIT_PERIODas opposed toDepositPeriod. - (x/staking) #7499
BondStatusis now a protobufenuminstead of anint32, and JSON serialized using its protobuf name, so expect names likeBOND_STATUS_UNBONDINGas opposed toUnbonding. - (x/staking) #7556 The ABCI's
Result.Datafield forMsgBeginRedelegateandMsgUndelegateresponses does not contain custom binary marshaledcompletionTime, but the protobuf encodedMsgBeginRedelegateResponseandMsgUndelegateResponsestructs respectively
- (baseapp) #6384 The
- Baseapp / Client
- (AppModule) #7518 #7584 Rename
AppModule.RegisterQueryServicestoAppModule.RegisterServices, as this method now registers multiple services (the gRPC query service and the protobuf Msg service). AConfiguratorstruct is used to hold the different services. - (baseapp) #5865 The
SimulationResponsereturned from tx simulation is now JSON encoded instead of Amino binary. - (client) #6290
CLIContextis renamed toContext.Contextand all related methods have been moved from package context to client. - (client) #6525 Removed support for
indentin JSON responses. Clients should consider piping to an external tool such asjq. - (client) #8107 Renamed
PrintOutputandPrintOutputLegacymethods of thecontext.Clientobject toPrintProtoandPrintObjectLegacy. - (client/flags) #6632 Remove NewCompletionCmd(), the function is now available in tendermint.
- (client/input) #5904 Removal of unnecessary
GetCheckPassword,PrintPrefixedfunctions. - (client/keys) #5889 Rename
NewKeyBaseFromDir()->NewLegacyKeyBaseFromDir(). - (client/keys) #5820 Removed method CloseDB from Keybase interface.
- (client/rpc) #6290
clientpackage and subdirs reorganization. - (client/lcd) #6290
CliCtxof structRestServerin package client/lcd has been renamed toClientCtx. - (codec) #6330
codec.RegisterCryptohas been moved to thecrypto/codecpackage and the globalcodec.CdcAmino instance has been deprecated and moved to thecodec/legacy_globalpackage. - (codec) #8080 Updated the
codec.Marshalerinterface- Moved
MarshalAnyandUnmarshalAnyhelper functions tocodec.Marshalerand renamed toMarshalInterfaceandUnmarshalInterfacerespectively. These functions must take interface as a parameter (not a concrete type norAnyobject). Underneath they useAnywrapping for correct protobuf serialization.
- Moved
- (crypto) #6780 Move ledger code to its own package.
- (crypto/types/multisig) #6373
multisig.Multisignaturehas been renamed toAminoMultisignature - (codec)
*codec.LegacyAminois now a wrapper around Amino which provides backwards compatibility with protobufAny. ALL legacy code should use*codec.LegacyAminoinstead of*amino.Codecdirectly - (crypto) #5880 Merge
crypto/keys/mintkeyintocrypto. - (crypto/hd) #5904
crypto/keys/hdmoved tocrypto/hd. - (crypto/keyring):
- #5866 Rename
crypto/keys/tocrypto/keyring/. - #5904
Keybase->Keyringinterfaces migration.LegacyKeybaseinterface is added in order to guarantee limited backward compatibility with the old Keybase interface for the sole purpose of migrating keys across the new keyring backends.NewLegacyconstructor is provided #5889 to allow for smooth migration of keys from the legacy LevelDB based implementation to new keyring backends. Plus, the package and the new keyring no longer depends on the sdk.Config singleton. Please consult the package documentation for more information on how to implement the newKeyringinterface. - #5858 Make Keyring store keys by name and address's hexbytes representation.
- #5866 Rename
- (export) #5952
AppExporternow returns ABCI consensus parameters to be included in marshaled exported state. These parameters must be returned from the application via theBaseApp. - (simapp) Deprecating and renaming
MakeEncodingConfigtoMakeTestEncodingConfig(both insimappandsimapp/paramspackages). - (store) #5803 The
store.CommitMultiStoreinterface now includes the newsnapshots.Snapshotterinterface as well. - (types) #5579 The
keepRecentfield has been removed from thePruningOptionstype. ThePruningOptionstype now only includes fieldsKeepEveryandSnapshotEvery, whereKeepEverydetermines which committed heights are flushed to disk andSnapshotEverydetermines which of these heights are kept after pruning. TheIsValidmethod should be called whenever using these options. MethodsSnapshotVersionandFlushVersionaccept a version arugment and determine if the version should be flushed to disk or kept as a snapshot. Note,KeepRecentis automatically inferred from the options and provided directly the IAVL store. - (types) #5533 Refactored
AppModuleBasicandAppModuleGenesisto now accept acodec.JSONMarshalerfor modular serialization of genesis state. - (types/rest) #5779 Drop unused Parse{Int64OrReturnBadRequest,QueryParamBool}() functions.
- (AppModule) #7518 #7584 Rename
- Modules
- (modules) #7243 Rename
RegisterCodectoRegisterLegacyAminoCodecandcodec.New()is now renamed tocodec.NewLegacyAmino() - (modules) #6564 Constant
DefaultParamspaceis removed from all modules, use ModuleName instead. - (modules) #5989
AppModuleBasic.GetTxCmdnow takes a singleCLIContextparameter. - (modules) #5664 Remove amino
Codecfrom simulationStoreDecoder, which now returns a function closure in order to unmarshal the key-value pairs. - (modules) #5555 Move
x/auth/client/utils/types and functions tox/auth/client/. - (modules) #5572 Move account balance logic and APIs from
x/authtox/bank. - (modules) #6326
AppModuleBasic.GetQueryCmdnow takes a singleclient.Contextparameter. - (modules) #6336
AppModuleBasic.RegisterQueryServicemethod was added to support gRPC queries, andQuerierRouteandNewQuerierHandlerwere deprecated. - (modules) #6311 Remove
alias.gousage - (modules) #6447 Rename
blacklistedAddrstoblockedAddrs. - (modules) #6834 Add
RegisterInterfacesmethod toAppModuleBasicto support registration of protobuf interface types. - (modules) #6734 Add
TxEncodingConfigparameter toAppModuleBasic.ValidateGenesiscommand to support JSON tx decoding ingenutil. - (modules) #7764 Added module initialization options:
server/types.AppExporterrequires extra argument:AppOptions.server.AddCommandsrequires extra argument:addStartFlags types.ModuleInitFlagsx/crisis.NewAppModulehas a new attribute:skipGenesisInvariants. PR
- (types) #6327
sdk.Msgnow inheritsproto.Message, as a result allsdk.Msgtypes now use pointer semantics. - (types) #7032 All types ending with
ID(e.g.ProposalID) now end withId(e.g.ProposalId), to match default Protobuf generated format. Also see #7033 for more details. - (x/auth) #6029 Module accounts have been moved from
x/supplytox/auth. - (x/auth) #6443 Move
FeeTxandTxWithMemointerfaces fromx/auth/antetotypes. - (x/auth) #7006 All
AccountRetrievermethods now takeclient.Contextas a parameter instead of as a struct member. - (x/auth) #6270 The passphrase argument has been removed from the signature of the following functions and methods:
BuildAndSign,MakeSignature,SignStdTx,TxBuilder.BuildAndSign,TxBuilder.Sign,TxBuilder.SignStdTx - (x/auth) #6428:
NewAnteHandlerandNewSigVerificationDecoratorboth now take aSignModeHandlerparameter.SignatureVerificationGasConsumernow has the signature:func(meter sdk.GasMeter, sig signing.SignatureV2, params types.Params) error.- The
SigVerifiableTxinterface now has aGetSignaturesV2() ([]signing.SignatureV2, error)method and no longer has theGetSignBytesmethod.
- (x/auth/tx) #8106 change related to missing append functionality in
client transaction signing
- added
overwriteSigargument tox/auth/client.SignTxandclient/tx.Signfunctions. - removed
x/auth/tx.go:wrapper.GetSignatures. ThewrapperprovidesTxBuilderfunctionality, and it's a private structure. That function was not used at all and it's not exposed through theTxBuilderinterface.
- added
- (x/bank) #7327 AddCoins and SubtractCoins no longer return a resultingValue and will only return an error.
- (x/capability) #7918 Add x/capability safety checks:
- All outward facing APIs will now check that capability is not nil and name is not empty before performing any state-machine changes
SetIndexhas been renamed toInitializeIndex
- (x/evidence) #7251 New evidence types and light client evidence handling. The module function names changed.
- (x/evidence) #5952 Remove APIs for getting and setting
x/evidenceparameters.BaseAppnow uses aParamStoreto manage Tendermint consensus parameters which is managed via thex/paramsSubstoretype. - (x/gov) #6147 The
Contentfield onProposalandMsgSubmitProposalis nowAnyin concordance with ADR 019 andGetContentshould now be used to retrieve the actual proposalContent. Also theNewMsgSubmitProposalconstructor now may return anerror - (x/ibc) #6374
VerifyMembershipandVerifyNonMembershipnow take aspecs []stringargument to specify the proof format used for verification. Most SDK chains can simply usecommitmenttypes.GetSDKSpecs()for this argument. - (x/params) #5619 The
x/paramskeeper now accepts acodec.Marshallerinstead of a reference to an amino codec. Amino is still used for JSON serialization. - (x/staking) #6451
DefaultParamspaceandParamKeyTablein staking module are moved from keeper to types to enforce consistency. - (x/staking) #7419 The
TmConsPubKeymethod on ValidatorI has been removed and replaced instead byConsPubKey(which returns a SDKcryptotypes.PubKey) andTmConsPublicKey(which returns a Tendermint proto PublicKey). - (x/staking/types) #7447 Remove bech32 PubKey support:
ValidatorIinterface update.GetConsPubKeyrenamed toTmConsPubKey(consensus public key must be a tendermint key).TmConsPubKey,GetConsAddrmethods return error.Validatorupdate. Methods changed inValidatorI(as described above) andToTmValidatorreturn error.Validator.ConsensusPubkeytype changed fromstringtocodectypes.Any.MsgCreateValidator.Pubkeytype changed fromstringtocodectypes.Any.
- (x/supply) #6010 All
x/supplytypes and APIs have been moved tox/bank. - #6409 Rename all IsEmpty methods to Empty across the codebase and enforce consistency.
- #6231 Simplify
AppModuleinterface,RouteandNewHandlermethods become onlyRouteand returns a newRoutetype. - (x/slashing) #6212 Remove
Get*prefixes from key construction functions - (server) #6079 Remove
UpgradeOldPrivValFile(deprecated in Tendermint Core v0.28). - #5719 Bump Go requirement to 1.14+
- (modules) #7243 Rename
-
General
-
Modules
- (modules) #5572 Separate balance from accounts per ADR 004.
- Account balances are now persisted and retrieved via the
x/bankmodule. - Vesting account interface has been modified to account for changes.
- Callers to
NewBaseVestingAccountare responsible for verifying account balance in relation to the original vesting amount. - The
SendKeeperandViewKeeperinterfaces inx/bankhave been modified to account for changes.
- Account balances are now persisted and retrieved via the
- (x/auth) #5533 Migrate the
x/authmodule to use Protocol Buffers for state serialization instead of Amino.- The
BaseAccount.PubKeyfield is now represented as a Bech32 string instead of acrypto.Pubkey. NewBaseAccountWithAddressnow returns a reference to aBaseAccount.- The
x/authmodule now accepts aCodecinterface which extends thecodec.Marshalerinterface by requiring a concrete codec to know how to serialize accounts. - The
AccountRetrievertype now accepts aCodecin its constructor in order to know how to serialize accounts.
- The
- (x/bank) #6518 Support for global and per-denomination send enabled flags.
- Existing send_enabled global flag has been moved into a Params structure as
default_send_enabled. - An array of:
{denom: string, enabled: bool}is added to bank Params to support per-denomination override of global default value.
- Existing send_enabled global flag has been moved into a Params structure as
- (x/distribution) #5610 Migrate the
x/distributionmodule to use Protocol Buffers for state serialization instead of Amino. The exact codec used iscodec.HybridCodecwhich utilizes Protobuf for binary encoding and Amino for JSON encoding.ValidatorHistoricalRewards.ReferenceCountis now of typesuint32instead ofuint16.ValidatorSlashEventsis now a struct withslashevents.ValidatorOutstandingRewardsis now a struct withrewards.ValidatorAccumulatedCommissionis now a struct withcommission.- The
Keeperconstructor now takes acodec.Marshalerinstead of a concrete Amino codec. This exact type provided is specified byModuleCdc.
- (x/evidence) #5634 Migrate the
x/evidencemodule to use Protocol Buffers for state serialization instead of Amino.- The
internalsub-package has been removed in order to expose the types proto file. - The module now accepts a
Codecinterface which extends thecodec.Marshalerinterface by requiring a concrete codec to know how to serializeEvidencetypes. - The
MsgSubmitEvidencemessage has been removed in favor ofMsgSubmitEvidenceBase. The application-level codec must now define the concreteMsgSubmitEvidencetype which must implement the module'sMsgSubmitEvidenceinterface.
- The
- (x/evidence) #5952 Remove parameters from
x/evidencegenesis and module state. Thex/evidencemodule now solely uses Tendermint consensus parameters to determine of evidence is valid or not. - (x/gov) #5737 Migrate the
x/govmodule to use Protocol Buffers for state serialization instead of Amino.MsgSubmitProposalwill be removed in favor of the application-level proto-definedMsgSubmitProposalwhich implements theMsgSubmitProposalIinterface. Applications should extend theNewMsgSubmitProposalBasetype to define their own concreteMsgSubmitProposaltypes.- The module now accepts a
Codecinterface which extends thecodec.Marshalerinterface by requiring a concrete codec to know how to serializeProposaltypes.
- (x/mint) #5634 Migrate the
x/mintmodule to use Protocol Buffers for state serialization instead of Amino.- The
internalsub-package has been removed in order to expose the types proto file.
- The
- (x/slashing) #5627 Migrate the
x/slashingmodule to use Protocol Buffers for state serialization instead of Amino. The exact codec used iscodec.HybridCodecwhich utilizes Protobuf for binary encoding and Amino for JSON encoding.- The
Keeperconstructor now takes acodec.Marshalerinstead of a concrete Amino codec. This exact type provided is specified byModuleCdc.
- The
- (x/staking) #6844 Validators are now inserted into the unbonding queue based on their unbonding time and height. The relevant keeper APIs are modified to reflect these changes by now also requiring a height.
- (x/staking) #6061 Allow a validator to immediately unjail when no signing info is present due to falling below their minimum self-delegation and never having been bonded. The validator may immediately unjail once they've met their minimum self-delegation.
- (x/staking) #5600 Migrate the
x/stakingmodule to use Protocol Buffers for state serialization instead of Amino. The exact codec used iscodec.HybridCodecwhich utilizes Protobuf for binary encoding and Amino for JSON encoding.BondStatusis now of typeint32instead ofbyte.- Types of
int16in theParamstype are now of typeint32. - Every reference of
crypto.Pubkeyin context of aValidatoris now of type string.GetPubKeyFromBech32must be used to get thecrypto.Pubkey. - The
Keeperconstructor now takes acodec.Marshalerinstead of a concrete Amino codec. This exact type provided is specified byModuleCdc.
- (x/staking) #7979 keeper pubkey storage serialization migration from bech32 to protobuf.
- (x/supply) #6010 Removed the
x/supplymodule by merging the existing types and APIs into thex/bankmodule. - (x/supply) #5533 Migrate the
x/supplymodule to use Protocol Buffers for state serialization instead of Amino.- The
internalsub-package has been removed in order to expose the types proto file. - The
x/supplymodule now accepts aCodecinterface which extends thecodec.Marshalerinterface by requiring a concrete codec to know how to serializeSupplyItypes. - The
SupplyIinterface has been modified to no longer returnSupplyIon methods. Instead the concrete type's receiver should modify the type.
- The
- (x/upgrade) #5659 Migrate the
x/upgrademodule to use Protocol Buffers for state serialization instead of Amino.- The
internalsub-package has been removed in order to expose the types proto file. - The
x/upgrademodule now accepts acodec.Marshalerinterface.
- The
- (modules) #5572 Separate balance from accounts per ADR 004.
v0.39.1 - 2020-08-11
- (x/auth) #6861 Remove public key Bech32 encoding for all account types for JSON serialization, instead relying on direct Amino encoding. In addition, JSON serialization utilizes Amino instead of the Go stdlib, so integers are treated as strings.
v0.39.0 - 2020-07-20
- (baseapp) #5837 Transaction simulation now returns a
SimulationResponsewhich contains theGasInfoandResultfrom the execution.
- (x/auth) #6745 Remove BaseAccount's custom JSON {,un}marshalling.
- (genesis) #5506 The
x/distributiongenesis state now includesparamsinstead of individual parameters. - (genesis) #5017 The
x/genaccountsmodule has been deprecated and all components removed except thelegacy/package. This requires changes to the genesis state. Namely,accountsnow exist underapp_state.auth.accounts. The corresponding migration logic has been implemented for v0.38 target version. Applications can migrate via:$ {appd} migrate v0.38 genesis.json. - (modules) #5299 Handling of
ABCIEvidenceTypeDuplicateVoteduringBeginBlockalong with the corresponding parameters (MaxEvidenceAge) have moved from thex/slashingmodule to thex/evidencemodule.
- (modules) #5506 Remove individual setters of
x/distributionparameters. Instead, follow the module spec in getting parameters, setting new value(s) and finally callingSetParams. - (types) #5495 Remove redundant
(Must)Bech32ify*and(Must)Get*KeyBech32functions in favor of(Must)Bech32ifyPubKeyand(Must)GetPubKeyFromBech32respectively, both of which take aBech32PubKeyType(string). - (types) #5430
DecCoins#Addparameter changed fromDecCoinsto...DecCoin,Coins#Addparameter changed fromCoinsto...Coin. - (baseapp/types) #5421 The
Errorinterface (types/errors.go) has been removed in favor of the concrete type defined intypes/errors/which implements the standarderrorinterface.- As a result, the
HandlerandQuerierimplementations now return a standarderror. WithinBaseApp,runTxnow returns a(GasInfo, *Result, error)tuple andrunMsgsreturns a(*Result, error)tuple. A reference to aResultis now used to indicate success whereas an error signals an invalid message or failed message execution. As a result, the fieldsCode,Codespace,GasWanted, andGasUsedhave been removed theResulttype. The latter two fields are now found in theGasInfotype which is always returned regardless of execution outcome. - Note to developers: Since all handlers and queriers must now return a standard
error, thetypes/errors/package contains all the relevant and pre-registered errors that you typically work with. A typical error returned will look likesdkerrors.Wrap(sdkerrors.ErrUnknownRequest, "..."). You can retrieve relevant ABCI information from the error viaABCIInfo.
- As a result, the
- (client) #5442 Remove client/alias.go as it's not necessary and components can be imported directly from the packages.
- (store) #4748 The
CommitMultiStoreinterface now requires aSetInterBlockCachemethod. Applications that do not wish to support this can simply have this method perform a no-op. - (modules) #4665 Refactored
x/govmodule structure and dev-UX:- Prepare for module spec integration
- Update gov keys to use big endian encoding instead of little endian
- (modules) #5017 The
x/genaccountsmodule has been deprecated and all components removed except thelegacy/package. - #4486 Vesting account types decoupled from the
x/authmodule and now live underx/auth/vesting. Applications wishing to use vesting account types must be sure to register types viaRegisterCodecunder the new vesting package. - #4486 The
NewBaseVestingAccountconstructor returns an error if the provided arguments are invalid. - (x/auth) #5006 Modular
AnteHandlervia composable decorators:- The
AnteHandlerinterface now returns(newCtx Context, err error)instead of(newCtx Context, result sdk.Result, abort bool) - The
NewAnteHandlerfunction returns anAnteHandlerfunction that returns the newAnteHandlerinterface and has been moved into theauth/antedirectory. ValidateSigCount,ValidateMemo,ProcessPubKey,EnsureSufficientMempoolFee, andGetSignByteshave all been removed as public functions.- Invalid Signatures may return
InvalidPubKeyinstead ofUnauthorizederror, since the transaction will first hitSetPubKeyDecoratorbefore theSigVerificationDecoratorruns. StdTx#GetSignatureswill return an array of just signature byte slices[][]byteinstead of returning an array ofStdSignaturestructs. To replicate the old behavior, use the public fieldStdTx.Signaturesto get back the array of StdSignatures[]StdSignature.
- The
- (modules) #5299
HandleDoubleSignalong with paramsMaxEvidenceAgeandDoubleSignJailEndTimehave moved from thex/slashingmodule to thex/evidencemodule. - (keys) #4941 Keybase concrete types constructors such as
NewKeyBaseFromDirandNewInMemorynow accept optional parameters of typeKeybaseOption. These optional parameters are also added on the keys sub-commands functions, which are now public, and allows these options to be set on the commands or ignored to default to previous behavior. - #5547
NewKeyBaseFromHomeFlagconstructor has been removed. - #5439 Further modularization was done to the
keybasepackage to make it more suitable for use with different key formats and algorithms:- The
WithKeygenFuncfunction added as aKeybaseOptionwhich allows a custom bytes to key implementation to be defined when keys are created. - The
WithDeriveFuncfunction added as aKeybaseOptionallows custom logic for deriving a key from a mnemonic, bip39 password, and HD Path. - BIP44 is no longer build into
keybase.CreateAccount(). It is however the default when using theclient/keysadd command. SupportedAlgosandSupportedAlgosLedgerfunctions return a slice ofSigningAlgos that are supported by the keybase and the ledger integration respectively.
- The
- (simapp) #5419 The
helpers.GenTx()now accepts a gas argument. - (baseapp) #5455 A
sdk.Contextis now passed into therouter.Route()function.
- (rest) #5270 All account types now implement custom JSON serialization.
- (rest) #4783 The balance field in the DelegationResponse type is now sdk.Coin instead of sdk.Int
- (x/auth) #5006 The gas required to pass the
AnteHandlerhas increased significantly due to modularAnteHandlersupport. Increase GasLimit accordingly. - (rest) #5336
MsgEditValidatorusesdescriptioninstead ofDescriptionas a JSON key. - (keys) #5097 Due to the keybase -> keyring transition, keys need to be migrated. See
keys migratecommand for more info. - (x/auth) #5424 Drop
decode-txcommand from x/auth/client/cli, duplicate of thedecodecommand.