Skip to content

Latest commit

 

History

History
414 lines (378 loc) · 53.8 KB

CHANGELOG.md

File metadata and controls

414 lines (378 loc) · 53.8 KB

Changelog

[Unreleased]

v0.50.2 - 2023-12-11

Features

  • (debug) #18219 Add debug commands for application codec types.
  • (client/keys) #17639 Allows using and saving public keys encoded as base64.
  • (server) #17094 Add a shutdown-grace flag for waiting a given time before exit.

Improvements

  • (telemetry) [#18646] (#18646) Enable statsd and dogstatsd telemetry sinks.
  • (server) #18478 Add command flag to disable colored logs.
  • (x/gov) #18025 Improve <appd> q gov proposer by querying directly a proposal instead of tx events. It is an alias of q gov proposal as the proposer is a field of the proposal.
  • (version) #18063 Allow to define extra info to be displayed in <appd> version --long command.
  • (codec/unknownproto)#18541 Remove the use of "protoc-gen-gogo/descriptor" in favour of using the official protobuf descriptorpb types inside unknownproto.

Bug Fixes

  • (x/auth) #18564 Fix total fees calculation when batch signing.
  • (server) #18537 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 GetConsensusParams returns an empty struct instead of panicking if no params are found.
  • (client/tx) #18472 Utilizes the correct Pubkey when simulating a transaction.
  • (baseapp) #18486 Fixed FinalizeBlock calls not being passed to ABCIListeners.
  • (baseapp) #18627 Post handlers are run on non successful transaction executions too.
  • (baseapp) #18654 Fixes an issue in which gogoproto.Merge does not work with gogoproto messages with custom types.

v0.50.1 - 2023-11-07

v0.50.0 has been retracted due to a mistake in tagging the release. Please use v0.50.1 instead.

Features

  • (baseapp) #18071 Add hybrid handlers to MsgServiceRouter.
  • (server) #18162 Start gRPC & API server in standalone mode.
  • (baseapp & types) #17712 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.
  • (genutil) #17571 Allow creation of AppGenesis without a file lookup.
  • (codec) #17042 Add CollValueV2 which supports encoding of protov2 messages in collections.
  • (x/gov) #16976 Add failed_reason field to Proposal under x/gov to indicate the reason for a failed proposal. Referenced from #238 under bnb-chain/greenfield-cosmos-sdk.
  • (baseapp) #16898 Add preFinalizeBlockHook to allow vote extensions persistence.
  • (cli) #16887 Add two new CLI commands: <appd> tx simulate for simulating a transaction; <appd> query block-results for querying CometBFT RPC for block results.
  • (x/bank) #16852 Add DenomMetadataByQueryString query in bank module to support metadata query by query string.
  • (baseapp) #16581 Implement Optimistic Execution as an experimental feature (not enabled by default).
  • (types) #16257 Allow setting the base denom in the denom registry.
  • (baseapp) #16239 Add Gas Limits to allow node operators to resource bound queries.
  • (cli) #16209 Make StartCmd more customizable.
  • (types/simulation) #16074 Add generic SimulationStoreDecoder for modules using collections.
  • (genutil) #16046 Add "module-name" flag to genutil add-genesis-account to enable intializing module accounts at genesis.* #15970 Enable SIGN_MODE_TEXTUAL.
  • (types) #15958 Add module.NewBasicManagerFromManager for creating a basic module manager from a module manager.
  • (types/module) #15829 Add new endblocker interface to handle valset updates.
  • (runtime) #15818 Provide logger through depinject instead of appBuilder.
  • (types) #15735 Make ValidateBasic() error method of Msg interface optional. Modules should validate messages directly in their message handlers (RFC 001).
  • (x/genutil) #15679 Allow applications to specify a custom genesis migration function for the genesis migrate command.
  • (telemetry) #15657 Emit more data (go version, sdk version, upgrade height) in prom metrics.
  • (client) #15597 Add status endpoint for clients.
  • (testutil/integration) #15556 Introduce testutil/integration package for module integration testing.
  • (runtime) #15547 Allow runtime to pass event core api service to modules.
  • (client) #15458 Add a CmdContext field to client.Context initialized to cobra command's context.
  • (x/genutil) #15301 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 a genutiltypes.AppGenesis{}.
  • (core) #15133 Implement RegisterServices in the module manager.
  • (x/bank) #14894 Return a human readable denomination for IBC vouchers when querying bank balances. Added a ResolveDenom parameter to types.QueryAllBalancesRequest and --resolve-denom flag to GetBalancesCmd().
  • (core) #14860 Add Precommit and PrepareCheckState AppModule callbacks.
  • (x/gov) #14720 Upstream expedited proposals from Osmosis.
  • (cli) #14659 Added ability to query blocks by events with queries directly passed to Tendermint, which will allow for full query operator support, e.g. >.
  • (x/auth) #14650 Add Textual SignModeHandler. Enable SIGN_MODE_TEXTUAL by following the UPGRADING.md instructions.
  • (x/crisis) #14588 Use CacheContext() in AssertInvariants().
  • (mempool) #14484 Add priority nonce mempool option for transaction replacement.
  • (query) #14468 Implement pagination for collections.
  • (x/gov) #14373 Add new proto field constitution of type string to gov module genesis state, which allows chain builders to lay a strong foundation by specifying purpose.
  • (client) #14342 Add <app> config command is now a sub-command, for setting, getting and migrating Cosmos SDK configuration files.
  • (x/distribution) #14322 Introduce a new gRPC message handler, DepositValidatorRewardsPool, that allows explicit funding of a validator's reward pool.
  • (x/bank) #14224 Allow injection of restrictions on transfers using AppendSendRestriction or PrependSendRestriction.

Improvements

  • (x/gov) #18189 Limit the accepted deposit coins for a proposal to the minimum proposal deposit denoms.
  • (x/staking) #18049 Return early if Slash encounters zero tokens to burn.
  • (x/staking) #18035 Hoisted out of the redelegation loop, the non-changing validator and delegator addresses parsing.
  • (keyring) #17913 Add NewAutoCLIKeyring for creating an AutoCLI keyring from a SDK keyring.
  • (x/consensus) #18041 Let ToProtoConsensusParams() return an error.
  • (x/gov) #17780 Recover panics and turn them into errors when executing x/gov proposals.
  • (baseapp) #17667 Close databases opened by SDK in baseApp.Close().
  • (types/module) #17554 Introduce HasABCIGenesis which is implemented by a module only when a validatorset update needs to be returned.
  • (cli) #17389 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 at server.StatusCommand()
  • (testutil) #17216 Add DefaultContextWithKeys to testutil package.
  • (cli) #17187 Do not use ctx.PrintObjectLegacy in commands anymore.
    • <appd> q gov proposer [proposal-id] now returns a proposal id as int instead of string.
  • (x/staking) #17164 Add BondedTokensAndPubKeyByConsAddr to the keeper to enable vote extension verification.
  • (x/group, x/gov) #17109 Let proposal summary be 40x longer than metadata limit.
  • (version) #17096 Improve getSDKVersion() to handle module replacements.
  • (types) #16890 Remove GetTxCmd() *cobra.Command and GetQueryCmd() *cobra.Command from module.AppModuleBasic interface.
  • (x/authz) #16869 Improve error message when grant not found.
  • (all) #16497 Removed all exported vestiges of sdk.MustSortJSON and sdk.SortJSON.
  • (server) #16238 Don't setup p2p node keys if starting a node in GRPC only mode.
  • (cli) #16206 Make ABCI handshake profileable.
  • (types) #16076 Optimize ChainAnteDecorators/ChainPostDecorators to instantiate the functions once instead of on every invocation of the returned AnteHandler/PostHandler.
  • (server) #16071 When mempool.max-txs is set to a negative value, use a no-op mempool (effectively disable the app mempool).
  • (types/query) #16041 Change pagination max limit to a variable in order to be modifed by application devs.
  • (simapp) #15958 Refactor SimApp for removing the global basic manager.
  • (all modules) #15901 All core Cosmos SDK modules query commands have migrated to AutoCLI, ensuring parity between gRPC and CLI queries.
  • (x/auth) #15867 Support better logging for signature verification failure.
  • (store/cachekv) #15767 Reduce peak RAM usage during and after InitGenesis.
  • (x/bank) #15764 Speedup x/bank InitGenesis.
  • (x/slashing) #15580 Refactor the validator's missed block signing window to be a chunked bitmap instead of a "logical" bitmap, significantly reducing the storage footprint.
  • (x/gov) #15554 Add proposal result log in active_proposal event. When a proposal passes but fails to execute, the proposal result is logged in the active_proposal event.
  • (x/consensus) #15553 Migrate consensus module to use collections.
  • (server) #15358 Add server.InterceptConfigsAndCreateContext as alternative to server.InterceptConfigsPreRunHandler which does not set the server context and the default SDK logger.
  • (mempool) #15328 Improve the PriorityNonceMempool:
    • Support generic transaction prioritization, instead of ctx.Priority()
    • Improve construction through the use of a single PriorityNonceMempoolConfig instead of option functions
  • (x/authz) #15164 Add MsgCancelUnbondingDelegation to staking authorization.
  • (server) #15041 Remove unnecessary sleeps from gRPC and API server initiation. The servers will start and accept requests as soon as they're ready.
  • (baseapp) #15023 & #15213 Add MessageRouter interface to baseapp and pass it to authz, gov and groups instead of concrete type.
  • #15011 Introduce cosmossdk.io/log package to provide a consistent logging interface through the SDK. CometBFT logger is now replaced by cosmossdk.io/log.Logger.
  • (x/staking) #14864 <appd> tx staking create-validator CLI command now takes a json file as an arg instead of using required flags.
  • (x/auth) #14758 Allow transaction event queries to directly passed to Tendermint, which will allow for full query operator support, e.g. >.
  • (x/evidence) #14757 Evidence messages do not need to implement a .Type() anymore.
  • (x/auth/tx) #14751 Remove .Type() and Route() methods from all msgs and legacytx.LegacyMsg interface.
  • (cli) #14659 Added ability to query blocks by either height/hash <app> q block --type=height|hash <height|hash>.
  • (x/staking) #14590 Return undelegate amount in MsgUndelegateResponse.
  • #14529 Add new property BondDenom to SimulationState struct.
  • (store) #14439 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.
  • (store) #14438 Pass logger from baseapp to store.
  • (baseapp) #14417 The store pacakge no longer has a dependency on baseapp.
  • (module) #14415 Loosen assertions in SetOrderBeginBlockers() and SetOrderEndBlockers().
  • (store) #14410 rootmulti.Store.loadVersion has 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.go to store/types/...
  • (context)#14384 Refactor(context): Pass EventManager to the context as an interface.
  • (types) #14354 Improve performance on Context.KVStore and Context.TransientStore by 40%.
  • (crypto/keyring) #14151 Move keys presentation from crypto/keyring to client/keys
  • (signing) #14087 Add SignModeHandlerWithContext interface with a new GetSignBytesWithContext to get the sign bytes using context.Context as an argument to access state.
  • (server) #14062 Remove rosetta from server start.
  • (crypto) #3129 New armor and keyring key derivation uses aead and encryption uses chacha20poly.

State Machine Breaking

  • (x/gov) #18146 Add denom check to reject denoms outside of those listed in MinDeposit. A new MinDepositRatio param is added (with a default value of 0.001) and now deposits are required to be at least MinDepositRatio*MinDeposit to be accepted.
  • (x/group,x/gov) #16235 A group and gov proposal is rejected if the proposal metadata title and summary do not match the proposal title and summary.
  • (baseapp) #15930 change vote info provided by prepare and process proposal to the one in the block.
  • (x/staking) #15731 Introducing a new index to retrieve the delegations by validator efficiently.
  • (x/staking) #15701 The HistoricalInfoKey has been updated to use a binary format.
  • (x/slashing) #15580 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.
  • (x/staking) #14590 MsgUndelegateResponse now includes undelegated amount. x/staking module's keeper.Undelegate now returns 3 values (completionTime,undelegateAmount,error) instead of 2.
  • (x/feegrant) #14294 Moved the logic of rejecting duplicate grant from msg_server to keeper method.

API Breaking Changes

  • (x/auth) #17787 Remove Tip functionality.
  • (types) module.EndBlockAppModule has been replaced by Core API appmodule.HasEndBlocker or module.HasABCIEndBlock when needing validator updates.
  • (types) module.BeginBlockAppModule has been replaced by Core API appmodule.HasBeginBlocker.
  • (types) #17358 Remove deprecated sdk.Handler, use baseapp.MsgServiceHandler instead.
  • (client) #17197 keys.Commands does not take a home directory anymore. It is inferred from the root command.
  • (x/staking) #17157 GetValidatorsByPowerIndexKey and ValidateBasic for 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 address
    • GetConsAddr() ([]byte, error) returns []byte instead 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 & SlashValidator helper function added the mock staking keeper as a parameter passed to the function
  • (x/staking) #17098 NewMsgCreateValidator, NewValidator, NewMsgCancelUnbondingDelegation, NewMsgUndelegate, NewMsgBeginRedelegate, NewMsgDelegate and NewMsgEditValidator takes a string instead of sdk.ValAddress or sdk.AccAddress:
    • NewRedelegation and NewUnbondingDelegation takes a validatorAddressCodec and a delegatorAddressCodec in order to decode the addresses.
    • NewRedelegationResponse takes a string instead of sdk.ValAddress or sdk.AccAddress.
    • NewMsgCreateValidator.Validate() takes an address codec in order to decode the address.
    • BuildCreateValidatorMsg takes a ValidatorAddressCodec in order to decode addresses.
  • (x/slashing) #17098 NewMsgUnjail takes a string instead of sdk.ValAddress
  • (x/genutil) #17098 GenAppStateFromConfig, AddGenesisAccountCmd and GenTxCmd takes an addresscodec to decode addresses.
  • (x/distribution) #17098 NewMsgDepositValidatorRewardsPool, NewMsgFundCommunityPool, NewMsgWithdrawValidatorCommission and NewMsgWithdrawDelegatorReward takes a string instead of sdk.ValAddress or sdk.AccAddress.
  • (x/staking) #16959 Add validator and consensus address codec as staking keeper arguments.
  • (x/staking) #16958 DelegationI interface GetDelegatorAddr & GetValidatorAddr have 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.
  • (testutil) #16899 The cli testutil QueryBalancesExec has been removed. Use the gRPC or REST query instead.
  • (x/staking) #16795 DelegationToDelegationResponse, DelegationsToDelegationResponses, RedelegationsToRedelegationResponses are no longer exported.
  • (x/auth/vesting) #16741 Vesting account constructor now return an error with the result of their validate function.
  • (x/auth) #16650 The cli testutil QueryAccountExec has been removed. Use the gRPC or REST query instead.
  • (x/auth) #16621 Pass address codec to auth new keeper constructor.
  • (x/auth) #16423 helpers.AddGenesisAccount has been moved to x/genutil to remove the cyclic dependency between x/auth and x/genutil.
  • (baseapp) #16342 NewContext was renamed to NewContextLegacy. The replacement (NewContext) now does not take a header, instead you should set the header via WithHeaderInfo or WithBlockHeight. Note that WithBlockHeight will soon be depreacted and its recommneded to use WithHeaderInfo.
  • (x/mint) #16329 Use collections for state management:
    • Removed: keeper GetParams, SetParams, GetMinter, SetMinter.
  • (x/crisis) #16328 Use collections for state management:
    • Removed: keeper GetConstantFee, SetConstantFee
  • (x/staking) #16324 NewKeeper now takes a KVStoreService instead of a StoreKey, and methods in the Keeper now take a context.Context instead of a sdk.Context and return an error. Notable changes:
    • Validator method now returns types.ErrNoValidatorFound instead of nil when not found.
  • (x/distribution) #16302 Use collections for FeePool state management.
    • Removed: keeper GetFeePool, SetFeePool, GetFeePoolCommunityCoins
  • (types) #16272 FeeGranter in the FeeTx interface returns []byte instead of string.
  • (x/gov) #16268 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
  • (x/slashing) #16246 NewKeeper now takes a KVStoreService instead of a StoreKey, and methods in the Keeper now take a context.Context instead of a sdk.Context and return an error. GetValidatorSigningInfo now returns an error instead of a found bool, the error can be nil (found), ErrNoSigningInfoFound (not found) and any other error.
  • (module) #16227 manager.RunMigrations() now take a context.Context instead of a sdk.Context.
  • (x/crisis) #16216 NewKeeper now takes a KVStoreService instead of a StoreKey, methods in the Keeper now take a context.Context instead of a sdk.Context and return an error instead of panicking.
  • (x/distribution) #16211 Use collections for params state management.
  • (cli) #16209 Add API StartCmdWithOptions to create customized start command.
  • (x/mint) #16179 NewKeeper now takes a KVStoreService instead of a StoreKey, and methods in the Keeper now take a context.Context instead of a sdk.Context and return an error.
  • (x/gov) #16171 Use collections for proposal state management (part 1):
    • Removed: keeper: GetProposal, UnmarshalProposal, MarshalProposal, IterateProposal, GetProposal, GetProposalFiltered, GetProposals, GetProposalID, SetProposalID
    • Removed: errors unused errors
  • (x/gov) #16164 Use collections for vote state management:
    • Removed: types VoteKey, VoteKeys
    • Removed: keeper IterateVotes, IterateAllVotes, GetVotes, GetVote, SetVote
  • (sims) #16155
    • simulation.NewOperationMsg now marshals the operation msg as proto bytes instead of legacy amino JSON bytes.
    • simulation.NewOperationMsg is now 2-arity instead of 3-arity with the obsolete argument codec.ProtoCodec removed.
    • The field OperationMsg.Msg is now of type []byte instead of json.RawMessage.
  • (x/gov) #16127 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.
  • (x/gov) #16118 Use collections for constituion and params state management.
  • (x/gov) #16106 Remove gRPC query methods from gov keeper.
  • (x/all) #16052 GetSignBytes implementations on messages and global legacy amino codec definitions have been removed from all modules.
  • (sims) #16052 GetOrGenerate no longer requires a codec argument is now 4-arity instead of 5-arity.
  • (types/math) #16040 Remove aliases in types/math.go (part 2).
  • (types/math) #16040 Remove aliases in types/math.go (part 1).
  • (x/auth) #16016 Use collections for accounts state management:
    • removed: keeper HasAccountByID, AccountAddressByID, `SetParams
  • (x/genutil) #15999 Genutil now takes the GenesisTxHanlder interface instead of deliverTx. The interface is implemented on baseapp
  • (x/gov) #15988 NewKeeper now takes a KVStoreService instead of a StoreKey, methods in the Keeper now take a context.Context instead of a sdk.Context and return an error (instead of panicking or returning a found bool). Iterators callback functions now return an error instead of a bool.
  • (x/auth) #15985 The AccountKeeper does not expose the QueryServer and MsgServer APIs anymore.
  • (x/authz) #15962 NewKeeper now takes a KVStoreService instead of a StoreKey, methods in the Keeper now take a context.Context instead of a sdk.Context. The Authorization interface's Accept method now takes a context.Context instead of a sdk.Context.
  • (x/distribution) #15948 NewKeeper now takes a KVStoreService instead of a StoreKey and methods in the Keeper now take a context.Context instead of a sdk.Context. Keeper methods also now return an error.
  • (x/bank) #15891 NewKeeper now takes a KVStoreService instead of a StoreKey and methods in the Keeper now take a context.Context instead of a sdk.Context. Also FundAccount and FundModuleAccount from the testutil package accept a context.Context instead of a sdk.Context, and it's position was moved to the first place.
  • (x/slashing) #15875 x/slashing.NewAppModule now requires an InterfaceRegistry parameter.
  • (x/crisis) #15852 Crisis keeper now takes a instance of the address codec to be able to decode user addresses
  • (x/auth) #15822 The type of struct field ante.HandlerOptions.SignModeHandler has been changed to x/tx/signing.HandlerMap.
  • (client) #15822 The return type of the interface method TxConfig.SignModeHandler has been changed to x/tx/signing.HandlerMap.
    • The signature of VerifySignature has been changed to accept a x/tx/signing.HandlerMap and other structs from x/tx as arguments.
    • The signature of NewTxConfigWithTextual has been deprecated and its signature changed to accept a SignModeOptions.
    • The signature of NewSigVerificationDecorator has been changed to accept a x/tx/signing.HandlerMap.
  • (x/bank) #15818 BaseViewKeeper's Logger method now doesn't require a context. NewBaseKeeper, NewBaseSendKeeper and NewBaseViewKeeper now also require a log.Logger to be passed in.
  • (x/genutil) #15679 MigrateGenesisCmd now takes a MigrationMap instead of having the SDK genesis migration hardcoded.
  • (client) #15673 Move client/keys.OutputFormatJSON and client/keys.OutputFormatText to client/flags package.
  • (x/all) #15648 Make SetParams consistent across all modules and validate the params at the message handling instead of SetParams method.
  • (codec) #15600 #15873 add support for getting signers to codec.Codec and InterfaceRegistry:
    • InterfaceRegistry is has unexported methods and implements protodesc.Resolver plus the RangeFiles and SigningContext methods. All implementations of InterfaceRegistry by other users must now embed the official implementation.
    • Codec has new methods InterfaceRegistry, GetMsgAnySigners, GetMsgV1Signers, and GetMsgV2Signers as well as unexported methods. All implementations of Codec by other users must now embed an official implementation from the codec package.
    • AminoCodec is marked as deprecated and no longer implements `Codec.
  • (client) #15597 RegisterNodeService now requires a config parameter.
  • (x/nft) #15588 NewKeeper now takes a KVStoreService instead of a StoreKey and methods in the Keeper now take a context.Context instead of a sdk.Context.
  • (baseapp) #15568 SetIAVLLazyLoading is removed from baseapp.
  • (x/genutil) #15567 CollectGenTxsCmd & GenTxCmd takes a address.Codec to be able to decode addresses.
  • (x/bank) #15567 GenesisBalance.GetAddress now returns a string instead of sdk.AccAddress
    • MsgSendExec test helper function now takes a address.Codec
  • (x/auth) #15520 NewAccountKeeper now takes a KVStoreService instead of a StoreKey and methods in the Keeper now take a context.Context instead of a sdk.Context.
  • (baseapp) #15519 runTxModes were renamed to execMode. ModeDeliver as changed to ModeFinalize and a new ModeVoteExtension was added for vote extensions.
  • (baseapp) #15519 Writing of state to the multistore was moved to FinalizeBlock. Commit still handles the commiting values to disk.
  • (baseapp) #15519 Calls to BeginBlock and EndBlock have been replaced with core api beginblock & endblock.
  • (baseapp) #15519 BeginBlock and EndBlock are now internal to baseapp. For testing, user must call FinalizeBlock. BeginBlock and EndBlock calls are internal to Baseapp.
  • (baseapp) #15519 All calls to ABCI methods now accept a pointer of the abci request and response types
  • (x/consensus) #15517 NewKeeper now takes a KVStoreService instead of a StoreKey.
  • (x/bank) #15477 banktypes.NewMsgMultiSend and keeper.InputOutputCoins only accept one input.
  • (server) #15358 Remove server.ErrorCode that was not used anywhere.
  • (x/capability) #15344 Capability module was removed and is now housed in IBC-GO.
  • (mempool) #15328 The PriorityNonceMempool is now generic over type C comparable and takes a single PriorityNonceMempoolConfig[C] argument. See DefaultPriorityNonceMempoolConfig for how to construct the configuration and a TxPriority type.
  • #15299 Remove StdTx transaction and signing APIs. No SDK version has actually supported StdTx since before Stargate.
  • #15284
  • (x/gov) #15284 NewKeeper now requires codec.Codec.
  • (x/authx) #15284 NewKeeper now requires codec.Codec.
    • types/tx.Tx no longer implements sdk.Tx.
    • sdk.Tx now requires a new method GetMsgsV2().
    • sdk.Msg.GetSigners was deprecated and is no longer supported. Use the cosmos.msg.v1.signer protobuf annotation instead.
    • TxConfig has a new method SigningContext() *signing.Context.
    • SigVerifiableTx.GetSigners() now returns ([][]byte, error) instead of []sdk.AccAddress.
    • AccountKeeper now has an AddressCodec() address.Codec method and the expected AccountKeeper for x/auth/ante expects this method.
  • #15211 Remove usage of github.com/cometbft/cometbft/libs/bytes.HexBytes in favor of []byte thorough the SDK.
  • (crypto) #15070 GenerateFromPassword and Cost from bcrypt.go now take a uint32 instead of a int type.
  • (types) #15067 Remove deprecated alias from types/errors. Use cosmossdk.io/errors instead.
  • (server) #15041 Refactor how gRPC and API servers are started to remove unnecessary sleeps:
    • api.Server#Start now accepts a context.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 via StartGRPCServer which accepts a context.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 WaitForQuitSignals to ListenForQuitSignals. Note, this function is no longer blocking. Thus the caller is expected to provide a context.CancelFunc which indicates that when a signal is caught, that any spawned processes can gracefully exit.
    • Remove ServerStartTime constant.
  • #15011 All functions that were taking a CometBFT logger, now take cosmossdk.io/log.Logger instead.
  • (simapp) #14977 Move simulation helpers functions (AppStateFn and AppStateRandomizedFn) to testutil/sims. These takes an extra genesisState argument which is the default state of the app.
  • (x/bank) #14894 Allow a human readable denomination for coins when querying bank balances. Added a ResolveDenom parameter to types.QueryAllBalancesRequest.
  • #14847 App and ModuleManager methods InitGenesis, ExportGenesis, BeginBlock and EndBlock now also return an error.
  • (x/upgrade) #14764 The x/upgrade module is extracted to have a separate go.mod file which allows it to be a standalone module.
  • (x/auth) #14758 Refactor transaction searching:
    • Refactor QueryTxsByEvents to accept a query of type string instead of events of type []string
    • Refactor CLI methods to accept --query flag instead of --events
    • Pass prove=false to Tendermint's TxSearch RPC method
  • (simulation) #14751 Remove the MsgType field from simulation.OperationInput struct.
  • (store) #14746 Extract Store in its own go.mod and rename the package to cosmossdk.io/store.
  • (x/nft) #14725 Extract NFT in its own go.mod and rename the package to cosmossdk.io/x/nft.
  • (x/gov) #14720 Add an expedited field in the gov v1 proposal and MsgNewMsgProposal.
  • (x/feegrant) #14649 Extract Feegrant in its own go.mod and rename the package to cosmossdk.io/x/feegrant.
  • (tx) #14634 Move the tx go module to x/tx.
  • (store/streaming)#14603 StoreDecoderRegistry moved from store to types/simulations this breaks the AppModuleSimulation interface.
  • (snapshots) #14597 Move snapshots to store/snapshots, rename and bump proto package to v1.
  • (x/staking) #14590 MsgUndelegateResponse now includes undelegated amount. x/staking module's keeper.Undelegate now returns 3 values (completionTime,undelegateAmount,error) instead of 2.
  • (crypto/keyring) #14151 Move keys presentation from crypto/keyring to client/keys
  • (baseapp) #14050 Refactor ABCIListener interface to accept Go contexts.
  • (x/auth) #13850 Remove MarshalYAML methods from module (x/...) types.
  • (modules) #13850 and #14046 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.
  • (crypto/keyring) #13734 The keyring's Sign method now takes a new signMode argument. 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.
  • (signing) #13701 Add context.Context as an argument x/auth/signing.VerifySignature.
  • (store) #11825 Make extension snapshotter interface safer to use, renamed the util function WriteExtensionItem to WriteExtensionPayload.

Client Breaking Changes

  • (x/gov) #17910 Remove telemetry for counting votes and proposals. It was incorrectly counting votes. Use alternatives, such as state streaming.
  • (abci) #15845 Remove duplicating events in logs.
  • (abci) #15845 Add msg_index to all event attributes to associate events and messages.
  • (x/staking) #15701 HistoricalInfoKey now has a binary format.
  • (store/streaming) #15519 State Streaming removed emitting of beginblock, endblock and delivertx in favour of emitting FinalizeBlock.
  • (baseapp) #15519 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.
  • (grpc-web) #14652 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
  • (cli) #17184 All json keys returned by the status command are now snake case instead of pascal case.
  • (server) #17177 Remove iavl-lazy-loading configuration.
  • (x/gov) #16987 In <appd> query gov proposals the proposal status flag have renamed from --status to --proposal-status. Additonally, that flags now uses the ENUM values: PROPOSAL_STATUS_DEPOSIT_PERIOD, PROPOSAL_STATUS_VOTING_PERIOD, PROPOSAL_STATUS_PASSED, PROPOSAL_STATUS_REJECTED, PROPOSAL_STATUS_FAILED.
  • (x/bank) #16899 With the migration to AutoCLI some bank commands have been split in two:
    • Use total-supply (or total) for querying the total supply and total-supply-of for querying the supply of a specific denom.
    • Use denoms-metadata for querying all denom metadata and denom-metadata for querying a specific denom metadata.
  • (rosetta) #16276 Rosetta migration to standalone repo.
  • (cli) #15826 Remove <appd> q account command. Use <appd> q auth account instead.
  • (cli) #15299 Remove --amino flag from sign and multi-sign commands. Amino StdTx has been deprecated for a while. Amino JSON signing still works as expected.
  • (x/gov) #14880 Remove <app> tx gov submit-legacy-proposal cancel-software-upgrade and software-upgrade commands. These commands are now in the x/upgrade module and using gov v1. Use tx upgrade software-upgrade instead.
  • (x/staking) #14864 <appd> tx staking create-validator CLI command now takes a json file as an arg instead of using required flags.
  • (cli) #14659 <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>.
  • (grpc-web) #14652 Remove grpc-web.address flag.
  • (client) #14342 <app> config command is now a sub-command using Confix. Use <app> config --help to learn more.

Bug Fixes

  • (server) #18254 Don't hardcode gRPC address to localhost.
  • (x/gov) #18173 Gov hooks now return an error and are blocking when they fail. Expect for AfterProposalFailedMinDeposit and AfterProposalVotingPeriodEnded which log the error and continue.
  • (x/gov) #17873 Fail any inactive and active proposals that cannot be decoded.
  • (x/slashing) #18016 Fixed builder function for missed blocks key (validatorMissedBlockBitArrayPrefixKey) in slashing/migration/v4.
  • (x/bank) #18107 Add missing keypair of SendEnabled to restore legacy param set before migration.
  • (baseapp) #17769 Ensure we respect block size constraints in the DefaultProposalHandler's PrepareProposal handler when a nil or no-op mempool is used. We provide a TxSelector type to assist in making transaction selection generalized. We also fix a comparison bug in tx selection when req.maxTxBytes is reached.
  • (mempool) #17668 Fix PriorityNonceIterator.Next() nil pointer ref for min priority at the end of iteration.
  • (config) #17649 Fix mempool.max-txs configuration is invalid in app.config.
  • (baseapp) #17518 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.
  • (baseapp) #17251 VerifyVoteExtensions and ExtendVote initialize their own contexts/states, allowing VerifyVoteExtensions being called without ExtendVote.
  • (x/distribution) #17236 Using "validateCommunityTax" in "Params.ValidateBasic", preventing panic when field "CommunityTax" is nil.
  • (x/bank) #17170 Avoid empty spendable error message on send coins.
  • (x/group) #17146 Rename x/group legacy ORM package's error codespace from "orm" to "legacy_orm", preventing collisions with ORM's error codespace "orm".
  • (types/query) #16905 Collections Pagination now applies proper count when filtering results.
  • (x/bank) #16841 Correctly process legacy DenomAddressIndex values.
  • (x/auth/vesting) #16733 Panic on overflowing and negative EndTimes when creating a PeriodicVestingAccount.
  • (x/consensus) #16713 Add missing ABCI param in MsgUpdateParams.
  • (baseapp) #16700 Fix consensus failure in returning no response to malformed transactions.
  • #16639 Make sure we don't execute blocks beyond the halt height.
  • (baseapp) #16613 Ensure each message in a transaction has a registered handler, otherwise CheckTx will fail.
  • (baseapp) #16596 Return error during ExtendVote and VerifyVoteExtension if the request height is earlier than VoteExtensionsEnableHeight.
  • (baseapp) #16259 Ensure the Context block height is correct after InitChain and prior to the second block.
  • (x/gov) #16231 Fix Rawlog JSON formatting of proposal_vote option field.* (cli) #16138 Fix snapshot commands panic if snapshot don't exists.
  • (x/staking) #16043 Call AfterUnbondingInitiated hook for new unbonding entries only and fix UnbondingDelegation entries handling. This is a behavior change compared to Cosmos SDK v0.47.x, now the hook is called only for new unbonding entries.
  • (types) #16010 Let module.CoreAppModuleBasicAdaptor fallback to legacy genesis handling.
  • (types) #15691 Make Coin.Validate() check that .Amount is not nil.
  • (x/crypto) #15258 Write keyhash file with permissions 0600 instead of 0555.
  • (x/auth) #15059 ante.CountSubKeys returns 0 when passing a nil Pubkey.
  • (x/capability) #15030 Prevent x/capability from consuming GasMeter gas during InitMemStore
  • (types/coin) #14739 Deprecate the method Coin.IsEqual in favour of Coin.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.

Deprecated

  • (types) #16980 Deprecate IntProto and DecProto. Instead, math.Int and math.LegacyDec should be used respectively. Both types support Marshal and Unmarshal for binary serialization.
  • (x/staking) #14567 The delegator_address field of MsgCreateValidator has been deprecated. The validator address bytes and delegator address bytes refer to the same account while creating validator (defer only in bech32 notation).

Previous Versions

CHANGELOG of previous versions.