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_laddr
topprof_laddr
and move it torpc
section (@melekes) - [evidence] #4959 Add JSON tags to
DuplicateVoteEvidence
(@marbar3778) - [light] #4946
tendermint lite
command has been renamed totendermint light
(@marbar3778) - [privval] #4582
round
in private_validator_state.json is no longer JSON string; instead it is a number (@marbar3778) - [rpc] #4792
/validators
are now sorted by voting power (@melekes) - [rpc] #4947 Return an error when
page
pagination param is 0 in/validators
,tx_search
(@melekes) - [rpc] #5137 JSON tags of
gasWanted
andgasUsed
inResponseCheckTx
andResponseDeliverTx
have been made snake_case (gas_wanted
andgas_used
) (@marbar3778) - [rpc] #5315 Remove
/unsafe_start_cpu_profiler
,/unsafe_stop_cpu_profiler
and/unsafe_write_heap_profile
. Please use pprof functionality instead (@melekes) - [rpc/client, rpc/jsonrpc/client] #5347 All client methods now accept
context.Context
as 1st param (@melekes)
- [config] #5315 Rename
-
Apps
- [abci] #4704 Add ABCI methods
ListSnapshots
,LoadSnapshotChunk
,OfferSnapshot
, andApplySnapshotChunk
for state sync snapshots.ABCIVersion
bumped to 0.17.0. (@erikgrinaker) - [abci] #4989
Proof
withinResponseQuery
has been renamed toProofOps
(@marbar3778) - [abci] #5096
CheckTxType
Protobuf 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)
MaxBatchBytes
new config setting defines the max size of one batch.
- [p2p/pex] #4973 Migrate
p2p/pex
reactor to Protobuf encoding (@marbar3778) - [statesync] #4943 Migrate state sync reactor to Protobuf encoding (@marbar3778)
-
Blockchain Protocol
- [evidence] #4725 Remove
Pubkey
fromDuplicateVoteEvidence
(@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
GasWanted
andGasUsed
intoLastResultsHash
(@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
&CommitRound
are nowint32
(@marbar3778) - [consensus] #4582 HeightVoteSet:
round
is nowint32
(@marbar3778) - [crypto] #4721 Remove
SimpleHashFromMap()
andSimpleProofsFromMap()
(@erikgrinaker) - [crypto] #4940 All keys have become
[]byte
instead of[<size>]byte
. The byte method no longer returns the marshaled value but just the[]byte
form of the data. (@marbar3778) - [crypto] #4988 Removal of key type multisig (@marbar3778)
- The key has been moved to the Cosmos-SDK
- [crypto] #4989 Remove
Simple
prefixes fromSimpleProof
,SimpleValueOp
&SimpleProofNode
. (@marbar3778)merkle.Proof
has been renamed toProofOps
.- Protobuf messages
Proof
&ProofOp
has been moved toproto/crypto/merkle
SimpleHashFromByteSlices
has been renamed toHashFromByteSlices
SimpleHashFromByteSlicesIterative
has been renamed toHashFromByteSlicesIterative
SimpleProofsFromByteSlices
has been renamed toProofsFromByteSlices
- [crypto] #4941 Remove suffixes from all keys. (@marbar3778)
- ed25519: type
PrivKeyEd25519
is nowPrivKey
- ed25519: type
PubKeyEd25519
is nowPubKey
- secp256k1: type
PrivKeySecp256k1
is nowPrivKey
- secp256k1: type
PubKeySecp256k1
is nowPubKey
- sr25519: type
PrivKeySr25519
is nowPrivKey
- sr25519: type
PubKeySr25519
is nowPubKey
- ed25519: type
- [crypto] #5214 Change
GenPrivKeySecp256k1
toGenPrivKeyFromSecret
to be consistent with other keys (@marbar3778) - [crypto] #5236
VerifyBytes
is nowVerifySignature
on thecrypto.PubKey
interface (@marbar3778) - [evidence] #5361 Add LightClientAttackEvidence and change evidence interface (@cmwaters)
- [libs] #4831 Remove
Bech32
pkg from Tendermint. This pkg now lives in the cosmos-sdk (@marbar3778) - [light] #4946 Rename
lite2
pkg tolight
. Removelite
implementation. (@marbar3778) - [light] #5347
NewClient
,NewHTTPClient
,VerifyHeader
andVerifyLightBlockAtHeight
now acceptcontext.Context
as 1st param (@melekes) - [merkle] #5193
HashFromByteSlices
andProofsFromByteSlices
now return a hash for empty inputs, following RFC6962 (@erikgrinaker) - [proto] #5025 All proto files have been moved to
/proto
directory. (@marbar3778)- Using the recommended the file layout from buf, see here for more info
- [rpc/client] #4947
Validators
,TxSearch
page
/per_page
params become pointers (@melekes)UnconfirmedTxs
limit
param is a pointer
- [rpc/jsonrpc/server] #5141 Remove
WriteRPCResponseArrayHTTP
(useWriteRPCResponseHTTP
instead) (@melekes) - [state] #4679
TxResult
is a Protobuf type defined inabci
types directory (@marbar3778) - [state] #5191 Add
State.InitialHeight
field 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
SignedMsgType
has moved to a Protobuf enum types (@marbar3778) - [types] #4962
ConsensusParams
,BlockParams
,EvidenceParams
,ValidatorParams
&HashedParams
are now Protobuf types (@marbar3778) - [types] #4852 Vote & Proposal
SignBytes
is now funcVoteSignBytes
&ProposalSignBytes
(@marbar3778) - [types] #4798 Simplify
VerifyCommitTrusting
func + remove extra validation (@melekes) - [types] #4845 Remove
ABCIResult
(@melekes) - [types] #5029 Rename all values from
PartsHeader
toPartSetHeader
to have consistency (@marbar3778) - [types] #4939
Total
inParts
&PartSetHeader
has been changed from aint
to auint32
(@marbar3778) - [types] #4939 Vote:
ValidatorIndex
&Round
are nowint32
(@marbar3778) - [types] #4939 Proposal:
POLRound
&Round
are nowint32
(@marbar3778) - [types] #4939 Block:
Round
is 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#InitWAL
to return an error (@melekes) - [node] #4832
ConfigureRPC
returns an error (@melekes) - [rpc] #4836 Overhaul
lib
folder (@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 lite
sub-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
State
on disk - RPC: all RPC requests which expose the header broke
- Go API: the
Header
broke - P2P: since blocks go over the wire, technically the P2P protocol broke
-
CLI/RPC/Config
-
[rpc] #3471 Paginate
/validators
response (default: 30 vals per page) -
[rpc] #3188 Remove
BlockMeta
inResultBlock
in favor ofBlockId
for/block
-
[rpc]
/block_results
response 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
#event
suffix from the ID in event responses.{"jsonrpc": "2.0", "id": 0, "result": ...}
-
[rpc] #4141 Switch to integer IDs instead of
json-client-XYZ
id=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_age
tomax_age_num_blocks
. -
[cli] #1771
tendermint lite
now uses new light client package (lite2
) and has 3 more flags:--trusting-period
,--trusted-height
and--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
Validators
now requires two more args:page
andperPage
- [libs/common] #3262 Make error the last parameter of
Task
(@PSalant726) - [cs/types] #3262 Rename
GotVoteFromUnwantedRoundError
toErrGotVoteFromUnwantedRound
(@PSalant726) - [libs/common] #3862 Remove
errors.go
fromlibs/common
- [libs/common] #4230 Move
KV
out of common to its own pkg - [libs/common] #4230 Rename
cmn.KVPair(s)
tokv.Pair(s)
s - [libs/common] #4232 Move
Service
&BaseService
fromlibs/common
tolibs/service
- [libs/common] #4232 Move
common/nil.go
totypes/utils.go
& make the functions private - [libs/common] #4231 Move random functions from
libs/common
into pkgrand
- [libs/common] #4237 Move byte functions from
libs/common
into pkgbytes
- [libs/common] #4237 Move throttletimer functions from
libs/common
into pkgtimer
- [libs/common] #4237 Move tempfile functions from
libs/common
into pkgtempfile
- [libs/common] #4240 Move os functions from
libs/common
into pkgos
- [libs/common] #4240 Move net functions from
libs/common
into pkgnet
- [libs/common] #4240 Move mathematical functions and types out of
libs/common
tomath
pkg - [libs/common] #4240 Move string functions out of
libs/common
tostrings
pkg - [libs/common] #4240 Move async functions out of
libs/common
toasync
pkg - [libs/common] #4240 Move bit functions out of
libs/common
tobits
pkg - [libs/common] #4240 Move cmap functions out of
libs/common
tocmap
pkg - [libs/common] #4258 Remove
Rand
from allrand
pkg functions - [types] #2565 Remove
MockBadEvidence
&MockGoodEvidence
in favor ofMockEvidence
-
Blockchain Protocol
-
P2P Protocol
- [p2p] #3668 Make
SecretConnection
non-malleable
- [p2p] #3668 Make
-
[proto] #3986 Prefix protobuf types to avoid name conflicts.
- ABCI becomes
tendermint.abci.types
with the new API endpoint/tendermint.abci.types.ABCIApplication/
- core_grpc becomes
tendermint.rpc.grpc
with 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 update
command. - (x/auth) #5844
tx sign
command now returns an error when signing is attempted with offline/multisig keys. - (x/auth) #6108
tx sign
command's--validate-signatures
flag is migrated into atx validate-signatures
standalone command. - (x/auth) #7788 Remove
tx auth
subcommands, all auth subcommands exist astx <subcommand>
- (x/genutil) #6651 The
gentx
command has been improved. No longer are--from
and--name
flags required. Instead, a single argument,name
, is required which refers to the key pair in the Keyring. In addition, an optional--moniker
flag 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.toml
to 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/auth
querier 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 thedenom
query parameter is present. - (x/evidence) #5952 Remove CLI and REST handlers for querying
x/evidence
parameters. - (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.Data
is now a Protocol Buffer encoded binary blob of typeTxData
. TheTxData
containsData
which 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.PubKey
interface anymore, and uses instead it's ownPubKey
interface, defined incrypto/types
. Replace all instances ofcrypto.PubKey
bycryptotypes.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.Data
field forMsgSubmitEvidence
responses does not contain the raw evidence's hash, but the protobuf encodedMsgSubmitEvidenceResponse
struct. - (x/gov) #7533 The ABCI's
Result.Data
field forMsgSubmitProposal
responses does not contain a raw binary encoding of theproposalID
, but the protobuf encodedMsgSubmitSubmitProposalResponse
struct. - (x/gov) #6859
ProposalStatus
andVoteOption
are now JSON serialized using its protobuf name, so expect names likePROPOSAL_STATUS_DEPOSIT_PERIOD
as opposed toDepositPeriod
. - (x/staking) #7499
BondStatus
is now a protobufenum
instead of anint32
, and JSON serialized using its protobuf name, so expect names likeBOND_STATUS_UNBONDING
as opposed toUnbonding
. - (x/staking) #7556 The ABCI's
Result.Data
field forMsgBeginRedelegate
andMsgUndelegate
responses does not contain custom binary marshaledcompletionTime
, but the protobuf encodedMsgBeginRedelegateResponse
andMsgUndelegateResponse
structs respectively
- (baseapp) #6384 The
- Baseapp / Client
- (AppModule) #7518 #7584 Rename
AppModule.RegisterQueryServices
toAppModule.RegisterServices
, as this method now registers multiple services (the gRPC query service and the protobuf Msg service). AConfigurator
struct is used to hold the different services. - (baseapp) #5865 The
SimulationResponse
returned from tx simulation is now JSON encoded instead of Amino binary. - (client) #6290
CLIContext
is renamed toContext
.Context
and all related methods have been moved from package context to client. - (client) #6525 Removed support for
indent
in JSON responses. Clients should consider piping to an external tool such asjq
. - (client) #8107 Renamed
PrintOutput
andPrintOutputLegacy
methods of thecontext.Client
object toPrintProto
andPrintObjectLegacy
. - (client/flags) #6632 Remove NewCompletionCmd(), the function is now available in tendermint.
- (client/input) #5904 Removal of unnecessary
GetCheckPassword
,PrintPrefixed
functions. - (client/keys) #5889 Rename
NewKeyBaseFromDir()
->NewLegacyKeyBaseFromDir()
. - (client/keys) #5820 Removed method CloseDB from Keybase interface.
- (client/rpc) #6290
client
package and subdirs reorganization. - (client/lcd) #6290
CliCtx
of structRestServer
in package client/lcd has been renamed toClientCtx
. - (codec) #6330
codec.RegisterCrypto
has been moved to thecrypto/codec
package and the globalcodec.Cdc
Amino instance has been deprecated and moved to thecodec/legacy_global
package. - (codec) #8080 Updated the
codec.Marshaler
interface- Moved
MarshalAny
andUnmarshalAny
helper functions tocodec.Marshaler
and renamed toMarshalInterface
andUnmarshalInterface
respectively. These functions must take interface as a parameter (not a concrete type norAny
object). Underneath they useAny
wrapping for correct protobuf serialization.
- Moved
- (crypto) #6780 Move ledger code to its own package.
- (crypto/types/multisig) #6373
multisig.Multisignature
has been renamed toAminoMultisignature
- (codec)
*codec.LegacyAmino
is now a wrapper around Amino which provides backwards compatibility with protobufAny
. ALL legacy code should use*codec.LegacyAmino
instead of*amino.Codec
directly - (crypto) #5880 Merge
crypto/keys/mintkey
intocrypto
. - (crypto/hd) #5904
crypto/keys/hd
moved tocrypto/hd
. - (crypto/keyring):
- #5866 Rename
crypto/keys/
tocrypto/keyring/
. - #5904
Keybase
->Keyring
interfaces migration.LegacyKeybase
interface 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.NewLegacy
constructor 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 newKeyring
interface. - #5858 Make Keyring store keys by name and address's hexbytes representation.
- #5866 Rename
- (export) #5952
AppExporter
now 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
MakeEncodingConfig
toMakeTestEncodingConfig
(both insimapp
andsimapp/params
packages). - (store) #5803 The
store.CommitMultiStore
interface now includes the newsnapshots.Snapshotter
interface as well. - (types) #5579 The
keepRecent
field has been removed from thePruningOptions
type. ThePruningOptions
type now only includes fieldsKeepEvery
andSnapshotEvery
, whereKeepEvery
determines which committed heights are flushed to disk andSnapshotEvery
determines which of these heights are kept after pruning. TheIsValid
method should be called whenever using these options. MethodsSnapshotVersion
andFlushVersion
accept a version arugment and determine if the version should be flushed to disk or kept as a snapshot. Note,KeepRecent
is automatically inferred from the options and provided directly the IAVL store. - (types) #5533 Refactored
AppModuleBasic
andAppModuleGenesis
to now accept acodec.JSONMarshaler
for modular serialization of genesis state. - (types/rest) #5779 Drop unused Parse{Int64OrReturnBadRequest,QueryParamBool}() functions.
- (AppModule) #7518 #7584 Rename
- Modules
- (modules) #7243 Rename
RegisterCodec
toRegisterLegacyAminoCodec
andcodec.New()
is now renamed tocodec.NewLegacyAmino()
- (modules) #6564 Constant
DefaultParamspace
is removed from all modules, use ModuleName instead. - (modules) #5989
AppModuleBasic.GetTxCmd
now takes a singleCLIContext
parameter. - (modules) #5664 Remove amino
Codec
from 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/auth
tox/bank
. - (modules) #6326
AppModuleBasic.GetQueryCmd
now takes a singleclient.Context
parameter. - (modules) #6336
AppModuleBasic.RegisterQueryService
method was added to support gRPC queries, andQuerierRoute
andNewQuerierHandler
were deprecated. - (modules) #6311 Remove
alias.go
usage - (modules) #6447 Rename
blacklistedAddrs
toblockedAddrs
. - (modules) #6834 Add
RegisterInterfaces
method toAppModuleBasic
to support registration of protobuf interface types. - (modules) #6734 Add
TxEncodingConfig
parameter toAppModuleBasic.ValidateGenesis
command to support JSON tx decoding ingenutil
. - (modules) #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
- (types) #6327
sdk.Msg
now inheritsproto.Message
, as a result allsdk.Msg
types 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/supply
tox/auth
. - (x/auth) #6443 Move
FeeTx
andTxWithMemo
interfaces fromx/auth/ante
totypes
. - (x/auth) #7006 All
AccountRetriever
methods now takeclient.Context
as 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:
NewAnteHandler
andNewSigVerificationDecorator
both now take aSignModeHandler
parameter.SignatureVerificationGasConsumer
now has the signature:func(meter sdk.GasMeter, sig signing.SignatureV2, params types.Params) error
.- The
SigVerifiableTx
interface now has aGetSignaturesV2() ([]signing.SignatureV2, error)
method and no longer has theGetSignBytes
method.
- (x/auth/tx) #8106 change related to missing append functionality in
client transaction signing
- added
overwriteSig
argument tox/auth/client.SignTx
andclient/tx.Sign
functions. - removed
x/auth/tx.go:wrapper.GetSignatures
. Thewrapper
providesTxBuilder
functionality, and it's a private structure. That function was not used at all and it's not exposed through theTxBuilder
interface.
- 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
SetIndex
has 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/evidence
parameters.BaseApp
now uses aParamStore
to manage Tendermint consensus parameters which is managed via thex/params
Substore
type. - (x/gov) #6147 The
Content
field onProposal
andMsgSubmitProposal
is nowAny
in concordance with ADR 019 andGetContent
should now be used to retrieve the actual proposalContent
. Also theNewMsgSubmitProposal
constructor now may return anerror
- (x/ibc) #6374
VerifyMembership
andVerifyNonMembership
now take aspecs []string
argument to specify the proof format used for verification. Most SDK chains can simply usecommitmenttypes.GetSDKSpecs()
for this argument. - (x/params) #5619 The
x/params
keeper now accepts acodec.Marshaller
instead of a reference to an amino codec. Amino is still used for JSON serialization. - (x/staking) #6451
DefaultParamspace
andParamKeyTable
in staking module are moved from keeper to types to enforce consistency. - (x/staking) #7419 The
TmConsPubKey
method 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:
ValidatorI
interface update.GetConsPubKey
renamed toTmConsPubKey
(consensus public key must be a tendermint key).TmConsPubKey
,GetConsAddr
methods return error.Validator
update. Methods changed inValidatorI
(as described above) andToTmValidator
return error.Validator.ConsensusPubkey
type changed fromstring
tocodectypes.Any
.MsgCreateValidator.Pubkey
type changed fromstring
tocodectypes.Any
.
- (x/supply) #6010 All
x/supply
types and APIs have been moved tox/bank
. - #6409 Rename all IsEmpty methods to Empty across the codebase and enforce consistency.
- #6231 Simplify
AppModule
interface,Route
andNewHandler
methods become onlyRoute
and returns a newRoute
type. - (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/bank
module. - Vesting account interface has been modified to account for changes.
- Callers to
NewBaseVestingAccount
are responsible for verifying account balance in relation to the original vesting amount. - The
SendKeeper
andViewKeeper
interfaces inx/bank
have been modified to account for changes.
- Account balances are now persisted and retrieved via the
- (x/auth) #5533 Migrate the
x/auth
module to use Protocol Buffers for state serialization instead of Amino.- The
BaseAccount.PubKey
field is now represented as a Bech32 string instead of acrypto.Pubkey
. NewBaseAccountWithAddress
now returns a reference to aBaseAccount
.- The
x/auth
module now accepts aCodec
interface which extends thecodec.Marshaler
interface by requiring a concrete codec to know how to serialize accounts. - The
AccountRetriever
type now accepts aCodec
in 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/distribution
module to use Protocol Buffers for state serialization instead of Amino. The exact codec used iscodec.HybridCodec
which utilizes Protobuf for binary encoding and Amino for JSON encoding.ValidatorHistoricalRewards.ReferenceCount
is now of typesuint32
instead ofuint16
.ValidatorSlashEvents
is now a struct withslashevents
.ValidatorOutstandingRewards
is now a struct withrewards
.ValidatorAccumulatedCommission
is now a struct withcommission
.- The
Keeper
constructor now takes acodec.Marshaler
instead of a concrete Amino codec. This exact type provided is specified byModuleCdc
.
- (x/evidence) #5634 Migrate the
x/evidence
module to use Protocol Buffers for state serialization instead of Amino.- The
internal
sub-package has been removed in order to expose the types proto file. - The module now accepts a
Codec
interface which extends thecodec.Marshaler
interface by requiring a concrete codec to know how to serializeEvidence
types. - The
MsgSubmitEvidence
message has been removed in favor ofMsgSubmitEvidenceBase
. The application-level codec must now define the concreteMsgSubmitEvidence
type which must implement the module'sMsgSubmitEvidence
interface.
- The
- (x/evidence) #5952 Remove parameters from
x/evidence
genesis and module state. Thex/evidence
module now solely uses Tendermint consensus parameters to determine of evidence is valid or not. - (x/gov) #5737 Migrate the
x/gov
module to use Protocol Buffers for state serialization instead of Amino.MsgSubmitProposal
will be removed in favor of the application-level proto-definedMsgSubmitProposal
which implements theMsgSubmitProposalI
interface. Applications should extend theNewMsgSubmitProposalBase
type to define their own concreteMsgSubmitProposal
types.- The module now accepts a
Codec
interface which extends thecodec.Marshaler
interface by requiring a concrete codec to know how to serializeProposal
types.
- (x/mint) #5634 Migrate the
x/mint
module to use Protocol Buffers for state serialization instead of Amino.- The
internal
sub-package has been removed in order to expose the types proto file.
- The
- (x/slashing) #5627 Migrate the
x/slashing
module to use Protocol Buffers for state serialization instead of Amino. The exact codec used iscodec.HybridCodec
which utilizes Protobuf for binary encoding and Amino for JSON encoding.- The
Keeper
constructor now takes acodec.Marshaler
instead 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/staking
module to use Protocol Buffers for state serialization instead of Amino. The exact codec used iscodec.HybridCodec
which utilizes Protobuf for binary encoding and Amino for JSON encoding.BondStatus
is now of typeint32
instead ofbyte
.- Types of
int16
in theParams
type are now of typeint32
. - Every reference of
crypto.Pubkey
in context of aValidator
is now of type string.GetPubKeyFromBech32
must be used to get thecrypto.Pubkey
. - The
Keeper
constructor now takes acodec.Marshaler
instead 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/supply
module by merging the existing types and APIs into thex/bank
module. - (x/supply) #5533 Migrate the
x/supply
module to use Protocol Buffers for state serialization instead of Amino.- The
internal
sub-package has been removed in order to expose the types proto file. - The
x/supply
module now accepts aCodec
interface which extends thecodec.Marshaler
interface by requiring a concrete codec to know how to serializeSupplyI
types. - The
SupplyI
interface has been modified to no longer returnSupplyI
on methods. Instead the concrete type's receiver should modify the type.
- The
- (x/upgrade) #5659 Migrate the
x/upgrade
module to use Protocol Buffers for state serialization instead of Amino.- The
internal
sub-package has been removed in order to expose the types proto file. - The
x/upgrade
module now accepts acodec.Marshaler
interface.
- 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
SimulationResponse
which contains theGasInfo
andResult
from the execution.
- (x/auth) #6745 Remove BaseAccount's custom JSON {,un}marshalling.
- (genesis) #5506 The
x/distribution
genesis state now includesparams
instead of individual parameters. - (genesis) #5017 The
x/genaccounts
module has been deprecated and all components removed except thelegacy/
package. This requires changes to the genesis state. Namely,accounts
now 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
ABCIEvidenceTypeDuplicateVote
duringBeginBlock
along with the corresponding parameters (MaxEvidenceAge
) have moved from thex/slashing
module to thex/evidence
module.
- (modules) #5506 Remove individual setters of
x/distribution
parameters. Instead, follow the module spec in getting parameters, setting new value(s) and finally callingSetParams
. - (types) #5495 Remove redundant
(Must)Bech32ify*
and(Must)Get*KeyBech32
functions in favor of(Must)Bech32ifyPubKey
and(Must)GetPubKeyFromBech32
respectively, both of which take aBech32PubKeyType
(string). - (types) #5430
DecCoins#Add
parameter changed fromDecCoins
to...DecCoin
,Coins#Add
parameter changed fromCoins
to...Coin
. - (baseapp/types) #5421 The
Error
interface (types/errors.go
) has been removed in favor of the concrete type defined intypes/errors/
which implements the standarderror
interface.- As a result, the
Handler
andQuerier
implementations now return a standarderror
. WithinBaseApp
,runTx
now returns a(GasInfo, *Result, error)
tuple andrunMsgs
returns a(*Result, error)
tuple. A reference to aResult
is now used to indicate success whereas an error signals an invalid message or failed message execution. As a result, the fieldsCode
,Codespace
,GasWanted
, andGasUsed
have been removed theResult
type. The latter two fields are now found in theGasInfo
type 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
CommitMultiStore
interface now requires aSetInterBlockCache
method. Applications that do not wish to support this can simply have this method perform a no-op. - (modules) #4665 Refactored
x/gov
module 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/genaccounts
module has been deprecated and all components removed except thelegacy/
package. - #4486 Vesting account types decoupled from the
x/auth
module and now live underx/auth/vesting
. Applications wishing to use vesting account types must be sure to register types viaRegisterCodec
under the new vesting package. - #4486 The
NewBaseVestingAccount
constructor returns an error if the provided arguments are invalid. - (x/auth) #5006 Modular
AnteHandler
via composable decorators:- The
AnteHandler
interface now returns(newCtx Context, err error)
instead of(newCtx Context, result sdk.Result, abort bool)
- The
NewAnteHandler
function returns anAnteHandler
function that returns the newAnteHandler
interface and has been moved into theauth/ante
directory. ValidateSigCount
,ValidateMemo
,ProcessPubKey
,EnsureSufficientMempoolFee
, andGetSignBytes
have all been removed as public functions.- Invalid Signatures may return
InvalidPubKey
instead ofUnauthorized
error, since the transaction will first hitSetPubKeyDecorator
before theSigVerificationDecorator
runs. StdTx#GetSignatures
will return an array of just signature byte slices[][]byte
instead of returning an array ofStdSignature
structs. To replicate the old behavior, use the public fieldStdTx.Signatures
to get back the array of StdSignatures[]StdSignature
.
- The
- (modules) #5299
HandleDoubleSign
along with paramsMaxEvidenceAge
andDoubleSignJailEndTime
have moved from thex/slashing
module to thex/evidence
module. - (keys) #4941 Keybase concrete types constructors such as
NewKeyBaseFromDir
andNewInMemory
now 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
NewKeyBaseFromHomeFlag
constructor has been removed. - #5439 Further modularization was done to the
keybase
package to make it more suitable for use with different key formats and algorithms:- The
WithKeygenFunc
function added as aKeybaseOption
which allows a custom bytes to key implementation to be defined when keys are created. - The
WithDeriveFunc
function added as aKeybaseOption
allows 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/keys
add command. SupportedAlgos
andSupportedAlgosLedger
functions return a slice ofSigningAlgo
s 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.Context
is 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
AnteHandler
has increased significantly due to modularAnteHandler
support. Increase GasLimit accordingly. - (rest) #5336
MsgEditValidator
usesdescription
instead ofDescription
as a JSON key. - (keys) #5097 Due to the keybase -> keyring transition, keys need to be migrated. See
keys migrate
command for more info. - (x/auth) #5424 Drop
decode-tx
command from x/auth/client/cli, duplicate of thedecode
command.