BUG FIXES
- GHSA-47ww-ff84-4jrg Fix x/group can halt when erroring in EndBlocker
BUG FIXES
- GHSA-x5vx-95h7-rv4p Fix Group module can halt chain when handling a malicious proposal.
FEATURES
- #21653 (crypto/keyring) New Linux-only backend that adds Linux kernel’s
keyctlsupport.
IMPROVEMENTS
- #21941 (server) Regenerate addrbook.json for in place testnet.
BUG FIXES
- Fix ABS-0043/ABS-0044 Limit recursion depth for unknown field detection and unpack any
- #22564 (server) Fix fallback genesis path in server
- #22425 (x/group) Proper address rendering in error
- #21906 (sims) Skip sims test when running dry on validators
- #21919 (cli) Query address-by-acc-num by account_id instead of id.
- #22229 (x/group) Accept
1andtryin CLI for group proposal exec.
FEATURES
- #20779 (cli) Added
module-hash-by-heightcommand to query and retrieve module hashes at a specified blockchain height, enhancing debugging capabilities. - #21372 (cli) Added a
bulk-add-genesis-accountgenesis command to add many genesis accounts at once. - #21724 (types/collections) Added
LegacyDeccollection value.
IMPROVEMENTS
- #21460 (x/bank) Added
Senderattribute inMsgMultiSendevent. - #21701 (genutil) Improved error messages for genesis validation.
- #21816 (testutil/integration) Allow to pass baseapp options in
NewIntegrationApp.
BUG FIXES
- #21769 (runtime) Fix baseapp options ordering to avoid overwriting options set by modules.
- #21493 (x/consensus) Fix regression that prevented to upgrade to > v0.50.7 without consensus version params.
- #21256 (baseapp) Halt height will not commit the block indicated, meaning that if halt-height is set to 10, only blocks until 9 (included) will be committed. This is to go back to the original behavior before a change was introduced in v0.50.0.
- #21444 (baseapp) Follow-up, Return PreBlocker events in FinalizeBlockResponse.
- #21413 (baseapp) Fix data race in sdk mempool.
CHANGES
- #21159 (baseapp) Return PreBlocker events in FinalizeBlockResponse.
- #20939 Fix collection reverse iterator to include
pagination.keyin the result. - #20969 (client/grpc) Fix
node.NewQueryServermethod not settingcfg. - #21006 (testutil/integration) Fix
NewIntegrationAppmethod not writing default genesis to state. - #21080 (runtime) Fix
app.yaml/app.jsonincompatibility withdepinject v1.0.0.
IMPROVEMENTS
- #20328 (debug) Add consensus address for debug cmd.
- #20264 (runtime) Expose grpc query router via depinject.
- #20381 (x/consensus) Use Comet utility for consensus module consensus param updates.
- #20356 (client) Overwrite client context when available in
SetCmdClientContext.
BUG FIXES
- #17911 (simulation) Fix all problems with executing command
make test-sim-custom-genesis-fastfor simulation test. - #18196 (simulation) Fix the problem of
validator set is empty after InitGenesisin simulation test. - #20346 (baseapp) Correctly assign
execModeSimulateto context forsimulateTx. - #20144 (baseapp) Remove txs from mempool when AnteHandler fails in recheck.
- #20107 (baseapp) Avoid header height overwrite block height.
- #20020 (cli) Make bootstrap-state command support both new and legacy genesis format.
- #20151 (testutil/sims) Set all signatures and don’t overwrite the previous one in
GenSignedMockTx.
FEATURES
- #19759 (types) Align SignerExtractionAdapter in PriorityNonceMempool Remove.
- #19870 (client) Add new query command
wait-tx. Aliasevent-query-tx-fortowait-txfor backward compatibility.
IMPROVEMENTS
- #19903 (telemetry) Conditionally emit metrics based on enablement.
- Introduction of
NowFunction: Added a new function calledNowto the telemetry package. It returns the current system time if telemetry is enabled, or a zero time if telemetry is not enabled. - Atomic Global Variable: Implemented an atomic global variable to manage the state of telemetry’s enablement. This ensures thread safety for the telemetry state.
- Conditional Telemetry Emission: All telemetry functions have been updated to emit metrics only when telemetry is enabled. They perform a check with
isTelemetryEnabled()and return early if telemetry is disabled, minimizing unnecessary operations and overhead. - #19810 (deps) Upgrade prometheus version and fix API breaking change due to prometheus bump.
- #19810 (deps) Bump
cosmossdk.io/storeto v1.1.0. - #19884 (server) Add start customizability to start command options.
- #19853 (x/gov) Emit
depositorinEventTypeProposalDeposit. - #19844 (x/gov) Emit the proposer of governance proposals.
- #19616 (baseapp) Don’t share gas meter in tx execution.
- #20114 GHSA-4j93-fm92-rp4m (x/authz) Follow up of for
x/authz. - #19691 (crypto) Fix tx sign doesn’t throw an error when incorrect Ledger is used.
- #19970 (baseapp) Fix default config values to use no-op mempool as default.
- #20027 (crypto) secp256r1 keys now implement gogoproto’s customtype interface.
- #20028 (x/bank) Align query with multi denoms for send-enabled.
FEATURES
- #19626 (baseapp) Add
DisableBlockGasMeteroption toBaseApp, which removes the block gas meter during transaction execution.
IMPROVEMENTS
- #19707 (x/distribution) Add autocli config for
DelegationTotalRewardsfor CLI consistency withq rewardscommands in previous versions. - #19651 (x/auth) Allow empty public keys in
GetSignBytesAdapter.
BUG FIXES
- #19725 (x/gov) Fetch a failed proposal tally from proposal.FinalTallyResult in the gprc query.
- #19709 (types) Fix skip staking genesis export when using
CoreAppModuleAdaptor/CoreAppModuleBasicAdaptorfor it. - #19549 (x/auth) Accept custom get signers when injecting
x/auth/tx. - GHSA-86h5-xcpx-cfqc (x/staking) Fix a possible bypass of delegator slashing:
- GHSA-95rx-m9m5-m94v (baseapp) Fix a bug in
baseapp.ValidateVoteExtensionshelper (). The helper has been fixed and for avoiding API breaking changescurrentHeightandchainIDarguments are ignored. Those arguments are removed from the helper in v0.51+.
FEATURES
- #19280 (server) Adds in-place testnet CLI command.
IMPROVEMENTS
- #19393 (client) Add
ReadDefaultValuesFromDefaultClientConfigto populate the default values from the default client config in client.Context without creating a app folder.
BUG FIXES
- (x/auth/vesting) GHSA-4j93-fm92-rp4m Add
BlockedAddrcheck inCreatePeriodicVestingAccount. - #19338 (baseapp) Set HeaderInfo in context when calling
setState. - #19200 (baseapp): Ensure that sdk side ve math matches cometbft.
- #19106 Allow empty public keys when setting signatures. Public keys aren’t needed for every transaction.
- #19198 (baseapp) Remove usage of pointers in logs in all optimistic execution goroutines.
- #19177 (baseapp) Fix baseapp
DefaultProposalHandlersame-sender non-sequential sequence. - #19371 (crypto) Avoid CLI redundant log in stdout, log to stderr instead.
FEATURES
- #18991 (types) Add SignerExtractionAdapter to PriorityNonceMempool/Config and provide Default implementation matching existing behavior.
- #19043 (gRPC) Add
halt_heightto the gRPC/cosmos/base/node/v1beta1/configrequest.
IMPROVEMENTS
- #18956 (x/bank) Introduced a new
DenomOwnersByQueryquery method forDenomOwners, which accepts the denom value as a query string parameter, resolving issues with denoms containing slashes. - #18707 (x/gov) Improve genesis validation.
- #18772 (x/auth/tx) Remove misleading gas wanted from tx simulation failure log.
- #18852 (client/tx) Add
WithFromNameto tx factory. - #18888 (types) Speedup DecCoin.Sort() if len(coins) <= 1
- #18875 (types) Speedup coins.Sort() if len(coins) <= 1
- #18915 (baseapp) Add a new
ExecModeVerifyVoteExtensionexec mode and ensure it’s populated in theContextduringVerifyVoteExtensionexecution. - #18930 (testutil) Add NodeURI for clientCtx.
BUG FIXES
- #19058 (baseapp) Fix baseapp posthandler branch would fail if the
runMsgshad returned an error. - #18609 (baseapp) Fixed accounting in the block gas meter after module’s beginBlock and before DeliverTx, ensuring transaction processing always starts with the expected zeroed out block gas meter.
- #18895 (baseapp) Fix de-duplicating vote extensions during validation in ValidateVoteExtensions.
FEATURES
- #18219 (debug) Add debug commands for application codec types.
- #17639 (client/keys) Allows using and saving public keys encoded as base64.
- #17094 (server) Add a
shutdown-graceflag for waiting a given time before exit.
IMPROVEMENTS
- (telemetry) [#18646] (https://github.com/cosmos/cosmos-sdk/pull/18646) Enable statsd and dogstatsd telemetry sinks.
- #18478 (server) Add command flag to disable colored logs.
- #18025 (x/gov) Improve
<appd> q gov proposerby querying directly a proposal instead of tx events. It is an alias ofq gov proposalas the proposer is a field of the proposal. - #18063 (version) Allow to define extra info to be displayed in
<appd> version --longcommand. - #18541 (codec/unknownproto)Remove the use of “protoc-gen-gogo/descriptor” in favour of using the official protobuf descriptorpb types inside unknownproto.
BUG FIXES
- #18564 (x/auth) Fix total fees calculation when batch signing.
- #18537 (server) Fix panic when defining minimum gas config as
100stake;100uatom. Use a,delimiter instead of;. Fixes the server config getter to use the correct delimiter. - #18531 Baseapp’s
GetConsensusParamsreturns an empty struct instead of panicking if no params are found. - #18472 (client/tx) Utilizes the correct Pubkey when simulating a transaction.
- #18486 (baseapp) Fixed FinalizeBlock calls not being passed to ABCIListeners.
- #18627 (baseapp) Post handlers are run on non successful transaction executions too.
- #18654 (baseapp) Fixes an issue in which
gogoproto.Mergedoes not work with gogoproto messages with custom types.
FEATURES
- #18071 (baseapp) Add hybrid handlers to
MsgServiceRouter. - #18162 (server) Start gRPC & API server in standalone mode.
- #17712 (baseapp & types) Introduce
PreBlock, which runs before begin blocker other modules, and allows to modify consensus parameters, and the changes are visible to the following state machine logics. Additionally it can be used for vote extensions. - #17571 (genutil) Allow creation of
AppGenesiswithout a file lookup. - #17042 (codec) Add
CollValueV2which supports encoding of protov2 messages in collections. - #16976 #238 (x/gov) Add
failed_reasonfield toProposalunderx/govto indicate the reason for a failed proposal. Referenced from underbnb-chain/greenfield-cosmos-sdk. - #16898 (baseapp) Add
preFinalizeBlockHookto allow vote extensions persistence. - #16887 (cli) Add two new CLI commands:
<appd> tx simulatefor simulating a transaction;<appd> query block-resultsfor querying CometBFT RPC for block results. - #16852 (x/bank) Add
DenomMetadataByQueryStringquery in bank module to support metadata query by query string. - #16581 (baseapp) Implement Optimistic Execution as an experimental feature (not enabled by default).
- #16257 (types) Allow setting the base denom in the denom registry.
- #16239 (baseapp) Add Gas Limits to allow node operators to resource bound queries.
- #16209 (cli) Make
StartCmdmore customizable. - #16074 (types/simulation) Add generic SimulationStoreDecoder for modules using collections.
- #16046 #15970 (genutil) Add “module-name” flag to genutil
add-genesis-accountto enable initializing module accounts at genesis.* Enable SIGN_MODE_TEXTUAL. - #15958 (types) Add
module.NewBasicManagerFromManagerfor creating a basic module manager from a module manager. - #15829 (types/module) Add new endblocker interface to handle valset updates.
- #15818 (runtime) Provide logger through
depinjectinstead of appBuilder. - #15735 (types) Make
ValidateBasic() errormethod ofMsginterface optional. Modules should validate messages directly in their message handlers (RFC 001). - #15679 (x/genutil) Allow applications to specify a custom genesis migration function for the
genesis migratecommand. - #15657 (telemetry) Emit more data (go version, sdk version, upgrade height) in prom metrics.
- #15597 (client) Add status endpoint for clients.
- #15556 (testutil/integration) Introduce
testutil/integrationpackage for module integration testing. - #15547 (runtime) Allow runtime to pass event core api service to modules.
- #15458 (client) Add a
CmdContextfield to client.Context initialized to cobra command’s context. - #15301 (x/genutil) Add application genesis. The genesis is now entirely managed by the application and passed to CometBFT at note instantiation. Functions that were taking a
cmttypes.GenesisDoc{}now takes agenutiltypes.AppGenesis{}. - #15133 (core) Implement RegisterServices in the module manager.
- #14894 (x/bank) Return a human readable denomination for IBC vouchers when querying bank balances. Added a
ResolveDenomparameter totypes.QueryAllBalancesRequestand--resolve-denomflag toGetBalancesCmd(). - #14860 (core) Add
PrecommitandPrepareCheckStateAppModule callbacks. - #14720 (x/gov) Upstream expedited proposals from Osmosis.
- #14659 (cli) Added ability to query blocks by events with queries directly passed to Tendermint, which will allow for full query operator support, e.g.
>. - #14650 (x/auth) Add Textual SignModeHandler. Enable
SIGN_MODE_TEXTUALby following the upgrading guide instructions. - #14588 (x/crisis) Use CacheContext() in AssertInvariants().
- #14484 (mempool) Add priority nonce mempool option for transaction replacement.
- #14468 (query) Implement pagination for collections.
- #14373 (x/gov) Add new proto field
constitutionof typestringto gov module genesis state, which allows chain builders to lay a strong foundation by specifying purpose. - #14342 (client) Add
<app> configcommand is now a sub-command, for setting, getting and migrating Cosmos SDK configuration files. - #14322 (x/distribution) Introduce a new gRPC message handler,
DepositValidatorRewardsPool, that allows explicit funding of a validator’s reward pool. - #14224 (x/bank) Allow injection of restrictions on transfers using
AppendSendRestrictionorPrependSendRestriction.
IMPROVEMENTS
- #18189 (x/gov) Limit the accepted deposit coins for a proposal to the minimum proposal deposit denoms.
- #18049 (x/staking) Return early if Slash encounters zero tokens to burn.
- #18035 (x/staking) Hoisted out of the redelegation loop, the non-changing validator and delegator addresses parsing.
- #17913 (keyring) Add
NewAutoCLIKeyringfor creating an AutoCLI keyring from a SDK keyring. - #18041 (x/consensus) Let
ToProtoConsensusParams()return an error. - #17780 (x/gov) Recover panics and turn them into errors when executing x/gov proposals.
- #17667 (baseapp) Close databases opened by SDK in
baseApp.Close(). - #17554 (types/module) Introduce
HasABCIGenesiswhich is implemented by a module only when a validatorset update needs to be returned. - #17389 (cli) gRPC CometBFT commands have been added under
<aapd> q consensus comet. CometBFT commands placement in the SDK has been simplified. See the exhaustive list below. client/rpc.StatusCommand()is now atserver.StatusCommand()- #17216 (testutil) Add
DefaultContextWithKeystotestutilpackage. - #17187 (cli) Do not use
ctx.PrintObjectLegacyin commands anymore. <appd> q gov proposer [proposal-id]now returns a proposal id as int instead of string.- #17164 (x/staking) Add
BondedTokensAndPubKeyByConsAddrto the keeper to enable vote extension verification. - #17109 (x/group, x/gov) Let proposal summary be 40x longer than metadata limit.
- #17096 (version) Improve
getSDKVersion()to handle module replacements. - #16890 (types) Remove
GetTxCmd() *cobra.CommandandGetQueryCmd() *cobra.Commandfrommodule.AppModuleBasicinterface. - #16869 (x/authz) Improve error message when grant not found.
- #16497 (all) Removed all exported vestiges of
sdk.MustSortJSONandsdk.SortJSON. - #16238 (server) Don’t setup p2p node keys if starting a node in GRPC only mode.
- #16206 (cli) Make ABCI handshake profileable.
- #16076 (types) Optimize
ChainAnteDecorators/ChainPostDecoratorsto instantiate the functions once instead of on every invocation of the returnedAnteHandler/PostHandler. - #16071 (server) When
mempool.max-txsis set to a negative value, use a no-op mempool (effectively disable the app mempool). - #16041 (types/query) Change pagination max limit to a variable in order to be modified by application devs.
- #15958 (simapp) Refactor SimApp for removing the global basic manager.
- #15901 (all modules) All core Cosmos SDK modules query commands have migrated to AutoCLI, ensuring parity between gRPC and CLI queries.
- #15867 (x/auth) Support better logging for signature verification failure.
- #15767 (store/cachekv) Reduce peak RAM usage during and after
InitGenesis. - #15764 (x/bank) Speedup x/bank
InitGenesis. - #15580 (x/slashing) Refactor the validator’s missed block signing window to be a chunked bitmap instead of a “logical” bitmap, significantly reducing the storage footprint.
- #15554 (x/gov) Add proposal result log in
active_proposalevent. When a proposal passes but fails to execute, the proposal result is logged in theactive_proposalevent. - #15553 (x/consensus) Migrate consensus module to use collections.
- #15358 (server) Add
server.InterceptConfigsAndCreateContextas alternative toserver.InterceptConfigsPreRunHandlerwhich does not set the server context and the default SDK logger. - #15328 (mempool) Improve the
PriorityNonceMempool: - Support generic transaction prioritization, instead of
ctx.Priority() - Improve construction through the use of a single
PriorityNonceMempoolConfiginstead of option functions - #15164 (x/authz) Add
MsgCancelUnbondingDelegationto staking authorization. - #15041 (server) Remove unnecessary sleeps from gRPC and API server initiation. The servers will start and accept requests as soon as they’re ready.
- #15023 #15213 (baseapp) & Add
MessageRouterinterface to baseapp and pass it to authz, gov and groups instead of concrete type. - #15011 Introduce
cosmossdk.io/logpackage to provide a consistent logging interface through the SDK. CometBFT logger is now replaced bycosmossdk.io/log.Logger. - #14864 (x/staking)
<appd> tx staking create-validatorCLI command now takes a json file as an arg instead of using required flags. - #14758 (x/auth) Allow transaction event queries to directly passed to Tendermint, which will allow for full query operator support, e.g.
>. - #14757 (x/evidence) Evidence messages do not need to implement a
.Type()anymore. - #14751 (x/auth/tx) Remove
.Type()andRoute()methods from all msgs andlegacytx.LegacyMsginterface. - #14659 (cli) Added ability to query blocks by either height/hash
<app> q block --type=height|hash <height|hash>. - #14590 (x/staking) Return undelegate amount in MsgUndelegateResponse.
- #14529 Add new property
BondDenomtoSimulationStatestruct. - #14439 (store) Remove global metric gatherer from store.
- By default store has a no op metric gatherer, the application developer must set another metric gatherer or us the provided one in
store/metrics. - #14438 (store) Pass logger from baseapp to store.
- #14417 (baseapp) The store package no longer has a dependency on baseapp.
- #14415 (module) Loosen assertions in SetOrderBeginBlockers() and SetOrderEndBlockers().
- #14410 (store)
rootmulti.Store.loadVersionhas validation to check if all the module stores’ height is correct, it will error if any module store has incorrect height. - #14406 Migrate usage of
types/store.gotostore/types/... - #14384 (context)Refactor(context): Pass EventManager to the context as an interface.
- #14354 (types) Improve performance on Context.KVStore and Context.TransientStore by 40%.
- #14151 (crypto/keyring) Move keys presentation from
crypto/keyringtoclient/keys - #14087 (signing) Add SignModeHandlerWithContext interface with a new
GetSignBytesWithContextto get the sign bytes usingcontext.Contextas an argument to access state. - #14062 (server) Remove rosetta from server start.
- #3129 (crypto) New armor and keyring key derivation uses aead and encryption uses chacha20poly.
STATE MACHINE BREAKING
- #18146 (x/gov) Add denom check to reject denoms outside of those listed in
MinDeposit. A newMinDepositRatioparam is added (with a default value of0.001) and now deposits are required to be at leastMinDepositRatio*MinDepositto be accepted. - #16235 (x/group,x/gov) A group and gov proposal is rejected if the proposal metadata title and summary do not match the proposal title and summary.
- #15930 (baseapp) change vote info provided by prepare and process proposal to the one in the block.
- #15731 (x/staking) Introducing a new index to retrieve the delegations by validator efficiently.
- #15701 (x/staking) The
HistoricalInfoKeyhas been updated to use a binary format. - #15580 (x/slashing) The validator slashing window now stores “chunked” bitmap entries for each validator’s signing window instead of a single boolean entry per signing window index.
- #14590 (x/staking)
MsgUndelegateResponsenow includes undelegated amount.x/stakingmodule’skeeper.Undelegatenow returns 3 values (completionTime,undelegateAmount,error) instead of 2. - #14294 (x/feegrant) Moved the logic of rejecting duplicate grant from
msg_servertokeepermethod.
API BREAKING CHANGES
- #17787 (x/auth) Remove Tip functionality.
- (types)
module.EndBlockAppModulehas been replaced by Core APIappmodule.HasEndBlockerormodule.HasABCIEndBlockwhen needing validator updates. - (types)
module.BeginBlockAppModulehas been replaced by Core APIappmodule.HasBeginBlocker. - #17358 (types) Remove deprecated
sdk.Handler, usebaseapp.MsgServiceHandlerinstead. - #17197 (client)
keys.Commandsdoes not take a home directory anymore. It is inferred from the root command. - #17157 (x/staking)
GetValidatorsByPowerIndexKeyandValidateBasicfor historical info takes a validator address codec in order to be able to decode/encode addresses. GetOperator()now returns the address as it is represented in state, by default this is an encoded addressGetConsAddr() ([]byte, error)returns[]byteinstead of sdk.ConsAddres.FromABCIEvidence&GetConsensusAddress(consAc address.Codec)now take a consensus address codec to be able to decode the incoming address.- (x/distribution)
Delegate&SlashValidatorhelper function added the mock staking keeper as a parameter passed to the function - #17098 (x/staking)
NewMsgCreateValidator,NewValidator,NewMsgCancelUnbondingDelegation,NewMsgUndelegate,NewMsgBeginRedelegate,NewMsgDelegateandNewMsgEditValidatortakes a string instead ofsdk.ValAddressorsdk.AccAddress: NewRedelegationandNewUnbondingDelegationtakes a validatorAddressCodec and a delegatorAddressCodec in order to decode the addresses.NewRedelegationResponsetakes a string instead ofsdk.ValAddressorsdk.AccAddress.NewMsgCreateValidator.Validate()takes an address codec in order to decode the address.BuildCreateValidatorMsgtakes a ValidatorAddressCodec in order to decode addresses.- #17098 (x/slashing)
NewMsgUnjailtakes a string instead ofsdk.ValAddress - #17098 (x/genutil)
GenAppStateFromConfig, AddGenesisAccountCmd andGenTxCmdtakes an addresscodec to decode addresses. - #17098 (x/distribution)
NewMsgDepositValidatorRewardsPool,NewMsgFundCommunityPool,NewMsgWithdrawValidatorCommissionandNewMsgWithdrawDelegatorRewardtakes a string instead ofsdk.ValAddressorsdk.AccAddress. - #16959 (x/staking) Add validator and consensus address codec as staking keeper arguments.
- #16958 (x/staking) DelegationI interface
GetDelegatorAddr&GetValidatorAddrhave been migrated to return string instead of sdk.AccAddress and sdk.ValAddress respectively. stakingtypes.NewDelegation takes a string instead of sdk.AccAddress and sdk.ValAddress. - #16899 (testutil) The cli testutil
QueryBalancesExechas been removed. Use the gRPC or REST query instead. - #16795 (x/staking)
DelegationToDelegationResponse,DelegationsToDelegationResponses,RedelegationsToRedelegationResponsesare no longer exported. - #16741 (x/auth/vesting) Vesting account constructor now return an error with the result of their validate function.
- #16650 (x/auth) The cli testutil
QueryAccountExechas been removed. Use the gRPC or REST query instead. - #16621 (x/auth) Pass address codec to auth new keeper constructor.
- #16423 (x/auth)
helpers.AddGenesisAccounthas been moved tox/genutilto remove the cyclic dependency betweenx/authandx/genutil. - #16342 (baseapp) NewContext was renamed to NewContextLegacy. The replacement (NewContext) now does not take a header, instead you should set the header via
WithHeaderInfoorWithBlockHeight. Note thatWithBlockHeightwill soon be deprecated and its recommended to useWithHeaderInfo. - #16329 (x/mint) Use collections for state management:
- Removed: keeper
GetParams,SetParams,GetMinter,SetMinter. - #16328 (x/crisis) Use collections for state management:
- Removed: keeper
GetConstantFee,SetConstantFee - #16324 (x/staking)
NewKeepernow takes aKVStoreServiceinstead of aStoreKey, and methods in theKeepernow take acontext.Contextinstead of asdk.Contextand return anerror. Notable changes: Validatormethod now returnstypes.ErrNoValidatorFoundinstead ofnilwhen not found.- #16302 (x/distribution) Use collections for FeePool state management.
- Removed: keeper
GetFeePool,SetFeePool,GetFeePoolCommunityCoins - #16272 (types)
FeeGranterin theFeeTxinterface returns[]byteinstead ofstring. - #16268 (x/gov) Use collections for proposal state management (part 2):
- this finalizes the gov collections migration
- Removed: types all the key related functions
- Removed: keeper
InsertActiveProposalsQueue,RemoveActiveProposalsQueue,InsertInactiveProposalsQueue,RemoveInactiveProposalsQueue,IterateInactiveProposalsQueue,IterateActiveProposalsQueue,ActiveProposalsQueueIterator,InactiveProposalsQueueIterator - #16246 (x/slashing)
NewKeepernow takes aKVStoreServiceinstead of aStoreKey, and methods in theKeepernow take acontext.Contextinstead of asdk.Contextand return anerror.GetValidatorSigningInfonow returns an error instead of afound bool, the error can benil(found),ErrNoSigningInfoFound(not found) and any other error. - #16227 (module)
manager.RunMigrations()now take acontext.Contextinstead of asdk.Context. - #16216 (x/crisis)
NewKeepernow takes aKVStoreServiceinstead of aStoreKey, methods in theKeepernow take acontext.Contextinstead of asdk.Contextand return anerrorinstead of panicking. - #16211 (x/distribution) Use collections for params state management.
- #16209 (cli) Add API
StartCmdWithOptionsto create customized start command. - #16179 (x/mint)
NewKeepernow takes aKVStoreServiceinstead of aStoreKey, and methods in theKeepernow take acontext.Contextinstead of asdk.Contextand return anerror. - #16171 (x/gov) Use collections for proposal state management (part 1):
- Removed: keeper:
GetProposal,UnmarshalProposal,MarshalProposal,IterateProposal,GetProposal,GetProposalFiltered,GetProposals,GetProposalID,SetProposalID - Removed: errors unused errors
- #16164 (x/gov) Use collections for vote state management:
- Removed: types
VoteKey,VoteKeys - Removed: keeper
IterateVotes,IterateAllVotes,GetVotes,GetVote,SetVote - #16155 (sims)
simulation.NewOperationMsgnow marshals the operation msg as proto bytes instead of legacy amino JSON bytes.simulation.NewOperationMsgis now 2-arity instead of 3-arity with the obsolete argumentcodec.ProtoCodecremoved.- The field
OperationMsg.Msgis now of type[]byteinstead ofjson.RawMessage. - #16127 (x/gov) Use collections for deposit state management:
- The following methods are removed from the gov keeper:
GetDeposit,GetAllDeposits,IterateAllDeposits. - The following functions are removed from the gov types:
DepositKey,DepositsKey. - #16118 (x/gov) Use collections for constitution and params state management.
- #16106 (x/gov) Remove gRPC query methods from gov keeper.
- #16052 (x/all)
GetSignBytesimplementations on messages and global legacy amino codec definitions have been removed from all modules. - #16052 (sims)
GetOrGenerateno longer requires a codec argument is now 4-arity instead of 5-arity. - #16040 (types/math) Remove aliases in
types/math.go(part 2). - #16040 (types/math) Remove aliases in
types/math.go(part 1). - #16016 (x/auth) Use collections for accounts state management:
- removed: keeper
HasAccountByID,AccountAddressByID, `SetParams - #15999 (x/genutil) Genutil now takes the
GenesisTxHanlderinterface instead of deliverTx. The interface is implemented on baseapp - #15988 (x/gov)
NewKeepernow takes aKVStoreServiceinstead of aStoreKey, methods in theKeepernow take acontext.Contextinstead of asdk.Contextand return anerror(instead of panicking or returning afound bool). Iterators callback functions now return an error instead of abool. - #15985 (x/auth) The
AccountKeeperdoes not expose theQueryServerandMsgServerAPIs anymore. - #15962 (x/authz)
NewKeepernow takes aKVStoreServiceinstead of aStoreKey, methods in theKeepernow take acontext.Contextinstead of asdk.Context. TheAuthorizationinterface’sAcceptmethod now takes acontext.Contextinstead of asdk.Context. - #15948 (x/distribution)
NewKeepernow takes aKVStoreServiceinstead of aStoreKeyand methods in theKeepernow take acontext.Contextinstead of asdk.Context. Keeper methods also now return anerror. - #15891 (x/bank)
NewKeepernow takes aKVStoreServiceinstead of aStoreKeyand methods in theKeepernow take acontext.Contextinstead of asdk.Context. AlsoFundAccountandFundModuleAccountfrom thetestutilpackage accept acontext.Contextinstead of asdk.Context, and it’s position was moved to the first place. - #15875 (x/slashing)
x/slashing.NewAppModulenow requires anInterfaceRegistryparameter. - #15852 (x/crisis) Crisis keeper now takes a instance of the address codec to be able to decode user addresses
- #15822 (x/auth) The type of struct field
ante.HandlerOptions.SignModeHandlerhas been changed tox/tx/signing.HandlerMap. - #15822 (client) The return type of the interface method
TxConfig.SignModeHandlerhas been changed tox/tx/signing.HandlerMap. - The signature of
VerifySignaturehas been changed to accept ax/tx/signing.HandlerMapand other structs fromx/txas arguments. - The signature of
NewTxConfigWithTextualhas been deprecated and its signature changed to accept aSignModeOptions. - The signature of
NewSigVerificationDecoratorhas been changed to accept ax/tx/signing.HandlerMap. - #15818 (x/bank)
BaseViewKeeper’sLoggermethod now doesn’t require a context.NewBaseKeeper,NewBaseSendKeeperandNewBaseViewKeepernow also require alog.Loggerto be passed in. - #15679 (x/genutil)
MigrateGenesisCmdnow takes aMigrationMapinstead of having the SDK genesis migration hardcoded. - #15673 (client) Move
client/keys.OutputFormatJSONandclient/keys.OutputFormatTexttoclient/flagspackage. - #15648 (x/all) Make
SetParamsconsistent across all modules and validate the params at the message handling instead ofSetParamsmethod. - #15600 #15873 (codec) add support for getting signers to
codec.CodecandInterfaceRegistry: InterfaceRegistryis has unexported methods and implementsprotodesc.Resolverplus theRangeFilesandSigningContextmethods. All implementations ofInterfaceRegistryby other users must now embed the official implementation.Codechas new methodsInterfaceRegistry,GetMsgAnySigners,GetMsgV1Signers, andGetMsgV2Signersas well as unexported methods. All implementations ofCodecby other users must now embed an official implementation from thecodecpackage.AminoCodecis marked as deprecated and no longer implements `Codec.- #15597 (client)
RegisterNodeServicenow requires a config parameter. - #15588 (x/nft)
NewKeepernow takes aKVStoreServiceinstead of aStoreKeyand methods in theKeepernow take acontext.Contextinstead of asdk.Context. - #15568 (baseapp)
SetIAVLLazyLoadingis removed from baseapp. - #15567 (x/genutil)
CollectGenTxsCmd&GenTxCmdtakes a address.Codec to be able to decode addresses. - #15567 (x/bank)
GenesisBalance.GetAddressnow returns a string instead ofsdk.AccAddress MsgSendExectest helper function now takes a address.Codec- #15520 (x/auth)
NewAccountKeepernow takes aKVStoreServiceinstead of aStoreKeyand methods in theKeepernow take acontext.Contextinstead of asdk.Context. - #15519 (baseapp)
runTxModes were renamed toexecMode.ModeDeliveras changed toModeFinalizeand a newModeVoteExtensionwas added for vote extensions. - #15519 (baseapp) Writing of state to the multistore was moved to
FinalizeBlock.Commitstill handles the committing values to disk. - #15519 (baseapp) Calls to BeginBlock and EndBlock have been replaced with core api beginblock & endblock.
- #15519 (baseapp) BeginBlock and EndBlock are now internal to baseapp. For testing, user must call
FinalizeBlock. BeginBlock and EndBlock calls are internal to Baseapp. - #15519 (baseapp) All calls to ABCI methods now accept a pointer of the abci request and response types
- #15517 (x/consensus)
NewKeepernow takes aKVStoreServiceinstead of aStoreKey. - #15477 (x/bank)
banktypes.NewMsgMultiSendandkeeper.InputOutputCoinsonly accept one input. - #15358 (server) Remove
server.ErrorCodethat was not used anywhere. - #15344 (x/capability) Capability module was removed and is now housed in IBC-GO.
- #15328 (mempool) The
PriorityNonceMempoolis now generic over typeC comparableand takes a singlePriorityNonceMempoolConfig[C]argument. SeeDefaultPriorityNonceMempoolConfigfor how to construct the configuration and aTxPrioritytype. - #15299 Remove
StdTxtransaction and signing APIs. No SDK version has actually supportedStdTxsince before Stargate. - #15284
- #15284 (x/gov)
NewKeepernow requirescodec.Codec. - #15284 (x/authx)
NewKeepernow requirescodec.Codec. types/tx.Txno longer implementssdk.Tx.sdk.Txnow requires a new methodGetMsgsV2().sdk.Msg.GetSignerswas deprecated and is no longer supported. Use thecosmos.msg.v1.signerprotobuf annotation instead.TxConfighas a new methodSigningContext() *signing.Context.SigVerifiableTx.GetSigners()now returns([][]byte, error)instead of[]sdk.AccAddress.AccountKeepernow has anAddressCodec() address.Codecmethod and the expectedAccountKeeperforx/auth/anteexpects this method.- #15211 Remove usage of
github.com/cometbft/cometbft/libs/bytes.HexBytesin favor of[]bytethorough the SDK. - #15070 (crypto)
GenerateFromPasswordandCostfrombcrypt.gonow take auint32instead of ainttype. - #15067 (types) Remove deprecated alias from
types/errors. Usecosmossdk.io/errorsinstead. - #15041 (server) Refactor how gRPC and API servers are started to remove unnecessary sleeps:
api.Server#Startnow accepts acontext.Context. The caller is responsible for ensuring that the context is canceled such that the API server can gracefully exit. The caller does not need to stop the server.- To start the gRPC server you must first create the server via
NewGRPCServer, after which you can start the gRPC server viaStartGRPCServerwhich accepts acontext.Context. The caller is responsible for ensuring that the context is canceled such that the gRPC server can gracefully exit. The caller does not need to stop the server. - Rename
WaitForQuitSignalstoListenForQuitSignals. Note, this function is no longer blocking. Thus the caller is expected to provide acontext.CancelFuncwhich indicates that when a signal is caught, that any spawned processes can gracefully exit. - Remove
ServerStartTimeconstant. - #15011 All functions that were taking a CometBFT logger, now take
cosmossdk.io/log.Loggerinstead. - #14977 (simapp) Move simulation helpers functions (
AppStateFnandAppStateRandomizedFn) totestutil/sims. These takes an extra genesisState argument which is the default state of the app. - #14894 (x/bank) Allow a human readable denomination for coins when querying bank balances. Added a
ResolveDenomparameter totypes.QueryAllBalancesRequest. - #14847 App and ModuleManager methods
InitGenesis,ExportGenesis,BeginBlockandEndBlocknow also return an error. - #14764 (x/upgrade) The
x/upgrademodule is extracted to have a separate go.mod file which allows it to be a standalone module. - #14758 (x/auth) Refactor transaction searching:
- Refactor
QueryTxsByEventsto accept aqueryof typestringinstead ofeventsof type[]string - Refactor CLI methods to accept
--queryflag instead of--events - Pass
prove=falseto Tendermint’sTxSearchRPC method - #14751 (simulation) Remove the
MsgTypefield fromsimulation.OperationInputstruct. - #14746 (store) Extract Store in its own go.mod and rename the package to
cosmossdk.io/store. - #14725 (x/nft) Extract NFT in its own go.mod and rename the package to
cosmossdk.io/x/nft. - #14720 (x/gov) Add an expedited field in the gov v1 proposal and
MsgNewMsgProposal. - #14649 (x/feegrant) Extract Feegrant in its own go.mod and rename the package to
cosmossdk.io/x/feegrant. - #14634 (tx) Move the
txgo module tox/tx. - #14603 (store/streaming)
StoreDecoderRegistrymoved from store totypes/simulationsthis breaks theAppModuleSimulationinterface. - #14597 (snapshots) Move
snapshotstostore/snapshots, rename and bump proto package to v1. - #14590 (x/staking)
MsgUndelegateResponsenow includes undelegated amount.x/stakingmodule’skeeper.Undelegatenow returns 3 values (completionTime,undelegateAmount,error) instead of 2. - #14151 (crypto/keyring) Move keys presentation from
crypto/keyringtoclient/keys - #14050 (baseapp) Refactor
ABCIListenerinterface to accept Go contexts. - #13850 (x/auth) Remove
MarshalYAMLmethods from module (x/...) types. - #13850 #14046 (modules) and Remove gogoproto stringer annotations. This removes the custom
String()methods on all types that were using the annotations. - (x/evidence) 14724 Extract Evidence in its own go.mod and rename the package to
cosmossdk.io/x/evidence. - #13734 (crypto/keyring) The keyring’s
Signmethod now takes a newsignModeargument. It is only used if the signing key is a Ledger hardware device. You can set it to 0 in all other cases. - (snapshots) 14048 Move the Snapshot package to the store package. This is done in an effort group all storage related logic under one package.
- #13701 (signing) Add
context.Contextas an argumentx/auth/signing.VerifySignature. - #11825 (store) Make extension snapshotter interface safer to use, renamed the util function
WriteExtensionItemtoWriteExtensionPayload.
CLIENT BREAKING CHANGES
- #17910 (x/gov) Remove telemetry for counting votes and proposals. It was incorrectly counting votes. Use alternatives, such as state streaming.
- #15845 (abci) Remove duplicating events in
logs. - #15845 (abci) Add
msg_indexto all event attributes to associate events and messages. - #15701 (x/staking)
HistoricalInfoKeynow has a binary format. - #15519 (store/streaming) State Streaming removed emitting of beginblock, endblock and delivertx in favour of emitting FinalizeBlock.
- #15519 (baseapp) BeginBlock & EndBlock events have begin or endblock in the events in order to identify which stage they are emitted from since they are returned to comet as FinalizeBlock events.
- #14652 (grpc-web) Use same port for gRPC-Web and the API server.
CLI BREAKING CHANGES
- (all) The migration of modules to AutoCLI led to no changes in UX but a small change in CLI outputs where results can be nested.
- (all) Query pagination flags have been renamed with the migration to AutoCLI:
--reverse->--page-reverse--offset->--page-offset--limit->--page-limit--count-total->--page-count-total- #17184 (cli) All json keys returned by the
statuscommand are now snake case instead of pascal case. - #17177 (server) Remove
iavl-lazy-loadingconfiguration. - #16987 (x/gov) In
<appd> query gov proposalsthe proposal status flag have renamed from--statusto--proposal-status. Additionally, that flags now uses the ENUM values:PROPOSAL_STATUS_DEPOSIT_PERIOD,PROPOSAL_STATUS_VOTING_PERIOD,PROPOSAL_STATUS_PASSED,PROPOSAL_STATUS_REJECTED,PROPOSAL_STATUS_FAILED. - #16899 (x/bank) With the migration to AutoCLI some bank commands have been split in two:
- Use
total-supply(ortotal) for querying the total supply andtotal-supply-offor querying the supply of a specific denom. - Use
denoms-metadatafor querying all denom metadata anddenom-metadatafor querying a specific denom metadata. - #16276 (rosetta) Rosetta migration to standalone repo.
- #15826 (cli) Remove
<appd> q accountcommand. Use<appd> q auth accountinstead. - #15299 (cli) Remove
--aminoflag fromsignandmulti-signcommands. AminoStdTxhas been deprecated for a while. Amino JSON signing still works as expected. - #14880 (x/gov) Remove
<app> tx gov submit-legacy-proposal cancel-software-upgradeandsoftware-upgradecommands. These commands are now in thex/upgrademodule and using gov v1. Usetx upgrade software-upgradeinstead. - #14864 (x/staking)
<appd> tx staking create-validatorCLI command now takes a json file as an arg instead of using required flags. - #14659 (cli)
<app> q block <height>is removed as it just output json. The new command allows either height/hash and is<app> q block --type=height|hash <height|hash>. - #14652 (grpc-web) Remove
grpc-web.addressflag. - #14342 (client)
<app> configcommand is now a sub-command using Confix. Use<app> config --helpto learn more.
BUG FIXES
- #18254 (server) Don’t hardcode gRPC address to localhost.
- #18173 (x/gov) Gov hooks now return an error and are blocking when they fail. Expect for
AfterProposalFailedMinDepositandAfterProposalVotingPeriodEndedwhich log the error and continue. - #17873 (x/gov) Fail any inactive and active proposals that cannot be decoded.
- #18016 (x/slashing) Fixed builder function for missed blocks key (
validatorMissedBlockBitArrayPrefixKey) in slashing/migration/v4. - #18107 (x/bank) Add missing keypair of SendEnabled to restore legacy param set before migration.
- #17769 (baseapp) Ensure we respect block size constraints in the
DefaultProposalHandler’sPrepareProposalhandler when a nil or no-op mempool is used. We provide aTxSelectortype to assist in making transaction selection generalized. We also fix a comparison bug in tx selection whenreq.maxTxBytesis reached. - #17668 (mempool) Fix
PriorityNonceIterator.Next()nil pointer ref for min priority at the end of iteration. - #17649 (config) Fix
mempool.max-txsconfiguration is invalid inapp.config. - #17518 (baseapp) Utilizing voting power from vote extensions (CometBFT) instead of the current bonded tokens (x/staking) to determine if a set of vote extensions are valid.
- #17251 (baseapp) VerifyVoteExtensions and ExtendVote initialize their own contexts/states, allowing VerifyVoteExtensions being called without ExtendVote.
- #17236 (x/distribution) Using “validateCommunityTax” in “Params.ValidateBasic”, preventing panic when field “CommunityTax” is nil.
- #17170 (x/bank) Avoid empty spendable error message on send coins.
- #17146 (x/group) Rename x/group legacy ORM package’s error codespace from “orm” to “legacy_orm”, preventing collisions with ORM’s error codespace “orm”.
- #16905 (types/query) Collections Pagination now applies proper count when filtering results.
- #16841 (x/bank) Correctly process legacy
DenomAddressIndexvalues. - #16733 (x/auth/vesting) Panic on overflowing and negative EndTimes when creating a PeriodicVestingAccount.
- #16713 (x/consensus) Add missing ABCI param in
MsgUpdateParams. - #16700 (baseapp) Fix consensus failure in returning no response to malformed transactions.
- #16639 Make sure we don’t execute blocks beyond the halt height.
- #16613 (baseapp) Ensure each message in a transaction has a registered handler, otherwise
CheckTxwill fail. - #16596 (baseapp) Return error during
ExtendVoteandVerifyVoteExtensionif the request height is earlier thanVoteExtensionsEnableHeight. - #16259 (baseapp) Ensure the
Contextblock height is correct afterInitChainand prior to the second block. - #16231 #16138 (x/gov) Fix Rawlog JSON formatting of proposal_vote option field.* (cli) Fix snapshot commands panic if snapshot don’t exists.
- #16043 (x/staking) Call
AfterUnbondingInitiatedhook for new unbonding entries only and fixUnbondingDelegationentries handling. This is a behavior change compared to Cosmos SDK v0.47.x, now the hook is called only for new unbonding entries. - #16010 (types) Let
module.CoreAppModuleBasicAdaptorfallback to legacy genesis handling. - #15691 (types) Make
Coin.Validate()check that.Amountis not nil. - #15258 (x/crypto) Write keyhash file with permissions 0600 instead of 0555.
- #15059 (x/auth)
ante.CountSubKeysreturns 0 when passing a nilPubkey. - #15030 (x/capability) Prevent
x/capabilityfrom consumingGasMetergas duringInitMemStore - #14739 (types/coin) Deprecate the method
Coin.IsEqualin favour ofCoin.Equal. The difference between the two methods is that the first one results in a panic when denoms are not equal. This panic lead to unexpected behavior.