cosmos-sdk v0.46.0-rc1 Release Notes
Release Date: 2022-05-23 // almost 2 years ago-
π Features
- (types) #11985 Add a
Priority
field onsdk.Context
, which represents the CheckTx priority field. It is only used during CheckTx. - π (gRPC) #11889 Support custom read and write gRPC options in
app.toml
. Seemax-recv-msg-size
andmax-send-msg-size
respectively. - (cli) #11738 Add
tx auth multi-sign
as alias oftx auth multisign
for consistency withmulti-send
. - (cli) #11738 Add
tx bank multi-send
command for bulk send of coins to multiple accounts. - (grpc) #11642 Implement
ABCIQuery
in the Tendermint gRPC service, which proxies ABCIQuery
requests directly to the application. - β‘οΈ (x/upgrade) #11551 Update
ScheduleUpgrade
for chains to schedule an automated upgrade onBeginBlock
without having to go though governance. - (cli) #11548 Add Tendermint's
inspect
command to thetendermint
sub-command. - (tx) #\11533 Register
EIP191
as an availableSignMode
for chains to use. - (x/genutil) #11500 Fix GenTx validation and adjust error messages
- #11430 Introduce a new
grpc-only
flag, such that when enabled, will start the node in a query-only mode. Note, gRPC MUST be enabled with this flag. - (x/bank) #11417 Introduce a new
SpendableBalances
gRPC query that retrieves an account's total (paginated) spendable balances. - #11441 Added a new method,
IsLTE
, fortypes.Coin
. This method is used to check if atypes.Coin
is less than or equal to anothertypes.Coin
. - β¬οΈ (x/upgrade) #11116
MsgSoftwareUpgrade
andMsgCancelUpgrade
have been added to support v1beta2 msgs-based gov proposals. - π #11308 Added a mandatory metadata field to Vote in x/gov v1beta2.
- π¦ #10977 Now every cosmos message protobuf definition must be extended with a
cosmos.msg.v1.signer
option to signal the signer fields in a language agnostic way. - #10710 Chain-id shouldn't be required for creating a transaction with both --generate-only and --offline flags.
- #10703 Create a new grantee account, if the grantee of an authorization does not exist.
- π #10592 Add a
DecApproxEq
function that checks to see if|d1 - d2| < tol
for some Decd1, d2, tol
. - #9933 Introduces the notion of a Cosmos "Scalar" type, which would just be simple aliases that give human-understandable meaning to the underlying type, both in Go code and in Proto definitions.
- #9884 Provide a new gRPC query handler,
/cosmos/params/v1beta1/subspaces
, that allows the ability to query for all registered subspaces and their respective keys. - #9776 Add flag
staking-bond-denom
to specify the staking bond denomination value when initializing a new chain. - #9533 Added a new gRPC method,
DenomOwners
, inx/bank
to query for all account holders of a specific denomination. - π (bank) #9618 Update bank.Metadata: add URI and URIHash attributes.
- (store) #8664 Implementation of ADR-038 file StreamingService
- #9837
--generate-only
flag can be used with a keyname from the keyring. - #10326
x/authz
add all grants by granter query. - #10944
x/authz
add all grants by grantee query - #10348 Add
fee.{payer,granter}
andtip
fields to StdSignDoc for signing tipped transactions. - #10208 Add
TipsTxMiddleware
for transferring tips. - β¬οΈ #10379 Add validation to
x/upgrade
CLIsoftware-upgrade
command--plan-info
value. - #10507 Add middleware for tx priority.
- #10311 Adds cli to use tips transactions. It adds an
--aux
flag to all CLI tx commands to generate the aux signer data (with optional tip), and a newtx aux-to-fee
subcommand to let the fee payer gather aux signer data and broadcast the tx - #10430 ADR-040: Add store/v2
MultiStore
implementation - #11019 Add
MsgCreatePermanentLockedAccount
and CLI method for creating permanent locked account - #10947 Add
AllowancesByGranter
query to the feegrant module - β¬οΈ #10407 Add validation to
x/upgrade
module'sBeginBlock
to check accidental binary downgrades - (gov) #11036 Add in-place migrations for 0.43->0.46. Add a
migrate v0.46
CLI command for v0.43->0.46 JSON genesis migration. - #11006 Add
debug pubkey-raw
command to allow inspecting of pubkeys in legacy bech32 format - π (x/authz) #10714 Add support for pruning expired authorizations
- #10015 ADR-040: ICS-23 proofs for SMT store
- #11240 Replace various modules
ModuleCdc
with the globallegacy.Cdc
- βͺ #11179 Add state rollback command.
- π #10794 ADR-040: Add State Sync to V2 Store
- #11234 Add
GRPCClient
field to Client Context. IfGRPCClient
field is set to nil, theInvoke
method would use ABCI query, otherwise use gprc. - #10962 ADR-040: Add state migration from iavl (v1Store) to smt (v2Store)
- (types) #10948 Add
app-db-backend
to theapp.toml
config to replace the compile-timetypes.DBbackend
variable. - π (authz)#11060 Support grant with no expire time.
- β (rosetta) #11590 Add fee suggestion for rosetta and enable offline mode. Also force set events about Fees to Success to pass reconciliation test.
- (types) #11959 Added
sdk.Coins.Find
helper method to find a coin by denom.
API Breaking Changes
- π (x/auth/ante) #11985 The
MempoolFeeDecorator
has been removed. Instead, theDeductFeeDecorator
takes a new argument of typeTxFeeChecker
, to define custom fee models. Ifnil
is passed to thisTxFeeChecker
argument, then it will default tocheckTxFeeWithValidatorMinGasPrices
, which is the exact same behavior as the oldMempoolFeeDecorator
(i.e. checking fees against validator's own min gas price). - 0οΈβ£ (x/auth/ante) #11985 The
ExtensionOptionsDecorator
takes an argument of typeExtensionOptionChecker
. For backwards-compatibility, you can passnil
, which defaults to the old behavior of rejecting all tx extensions. - π¦ (crypto/keyring) #11932 Remove
Unsafe*
interfaces from keyring package. Please use interface casting if you wish to access those unsafe functions. - (types) #11881 Rename
AccAddressFromHex
toAccAddressFromHexUnsafe
. - π¦ (types) #11788 The
Int
andUint
types have been moved to their own dedicated module,math
. Aliases are kept in the SDK's roottypes
package, however, it is encouraged to utilize the newmath
module. As a result, theInt#ToDec
API has been removed. - π¦ (grpc) #11642 The
RegisterTendermintService
method in thetmservice
package now requires aabciQueryFn
query function parameter. - π¨ #11496 Refactor abstractions for snapshot and pruning; snapshot intervals eventually pruned; unit tests.
- (types) #11689 Make
Coins#Sub
andCoins#SafeSub
consistent withCoins#Add
. - π (store)#11152 Remove
keep-every
from pruning options. - #10950 Add
envPrefix
parameter tocmd.Execute
. - (x/mint) #10441 The
NewAppModule
function now accepts an inflation calculation function as an argument. - π #10295 Remove store type aliases from /types
- #9695 Migrate keys from
Info
(serialized as amino) ->Record
(serialized as proto)- Add new
codec.Codec
argument in:keyring.NewInMemory
keyring.New
- Rename:
SavePubKey
toSaveOfflineKey
.NewMultiInfo
,NewLedgerInfo
toNewLegacyMultiInfo
,newLegacyLedgerInfo
respectively. Move them intolegacy_info.go
.NewOfflineInfo
tonewLegacyOfflineInfo
and move it tomigration_test.go
.
- Return:
*
keyring.Record, error
inSaveOfflineKey
,SaveLedgerKey
,SaveMultiSig
,Key
andKeyByAddress
. *keyring.Record
instead ofInfo
inNewMnemonic
andList
. - Remove
algo
argument from :SaveOfflineKey
- Take
keyring.Record
instead ofInfo
as first argument in:MkConsKeyOutput
MkValKeyOutput
MkAccKeyOutput
- Add new
- #10022
AuthKeeper
interface inx/auth
now includes a functionHasAccount
. - #9759
NewAccountKeeeper
inx/auth
now takes an additionalbech32Prefix
argument that representssdk.Bech32MainPrefix
. - #9628 Rename
x/{mod}/legacy
tox/{mod}/migrations
. - #9571 Implemented error handling for staking hooks, which now return an error on failure.
- π #9427 Move simapp
FundAccount
andFundModuleAccount
tox/bank/testutil
- π (client/tx) #9421
BuildUnsignedTx
,BuildSimTx
,PrintUnsignedStdTx
functions are moved to the Tx Factory as methods. - (client/keys) #9407 Added
keys rename
CLI command andKeyring.Rename
interface method to rename a key in the keyring. - (x/slashing) #9458 Coins burned from slashing is now returned from Slash function and included in Slash event.
- π¦ #9246 The
New
method for the network package now returns an error. - #9519
DeleteDeposits
renamed toDeleteAndBurnDeposits
,RefundDeposits
renamed toRefundAndDeleteDeposits
- π (codec) #9521 Removed deprecated
clientCtx.JSONCodec
fromclient.Context
. - (codec) #9521 Rename
EncodingConfig.Marshaler
toCodec
. - π #9594
RESTHandlerFn
argument is removed from thegov/NewProposalHandler
. - π¦ #9594
types/rest
package moved totestutil/rest
. - π #9432
ConsensusParamsKeyTable
moved fromparams/keeper
toparams/types
- #9576 Add debug error message to
sdkerrors.QueryResult
when enabled - π #9650 Removed deprecated message handler implementation from the SDK modules.
- π #10248 Remove unused
KeyPowerReduction
variable from x/staking types. - (x/bank) #9832
AddressFromBalancesStore
renamed toAddressAndDenomFromBalancesStore
. - β
(tests) #9938
simapp.Setup
accepts additionaltesting.T
argument. - (baseapp) #11979 Rename baseapp simulation helper methods
baseapp.{Check,Deliver}
tobaseapp.Sim{Check,Deliver}
. - π (x/gov) #10373 Removed gov
keeper.{MustMarshal, MustUnmarshal}
. - #10348 StdSignBytes takes a new argument of type
*tx.Tip
for signing over tips using LEGACY_AMINO_JSON. - #10208 The
x/auth/signing.Tx
interface now also includes a newGetTip() *tx.Tip
method for verifying tipped transactions. Thex/auth/types
expected BankKeeper interface now expects theSendCoins
method too. - π #10612
baseapp.NewBaseApp
constructor function doesn't take thesdk.TxDecoder
anymore. This logic has been moved into the TxDecoderMiddleware. - #10692
SignerData
takes 2 new fields,Address
andPubKey
, which need to get populated when using SIGN_MODE_DIRECT_AUX. - π #10748 Move legacy
x/gov
api tov1beta1
directory. - #10816 Reuse blocked addresses from the bank module. No need to pass them to distribution.
- π #10852 Move
x/gov/types
tox/gov/types/v1beta2
. - π¦ #10922, /#10957 Move key
server.Generate*
functions to testutil and support custom mnemonics in in-process testing network. MovedTestMnemonic
fromtestutil
package totestdata
. - (x/bank) #10771 Add safety check on bank module perms to allow module-specific mint restrictions (e.g. only minting a certain denom).
- (x/bank) #10771 Add
bank.BaseKeeper.WithMintCoinsRestriction
function to restrict use of bankMintCoins
usage. - π #10868, #10989 The Gov keeper accepts now 2 more mandatory arguments, the ServiceMsgRouter and a maximum proposal metadata length.
- π #10868, #10989, #11093 The Gov keeper accepts now 2 more mandatory arguments, the ServiceMsgRouter and a gov Config including the max metadata length.
- #11124 Add
GetAllVersions
to application store - (x/authz) #10447 authz
NewGrant
takes a new argument: block time, to correctly validate expire time. - π #10961 Support third-party modules to add extension snapshots to state-sync.
- #11274
types/errors.New
now is an alias fortypes/errors.Register
and should only be used in initialization code. - (authz)#11060
authz.NewMsgGrant
expiration
is now a pointer. Whennil
is used then no expiration will be set (grant won't expire). - (x/distribution)#11457 Add amount field to
distr.MsgWithdrawDelegatorRewardResponse
anddistr.MsgWithdrawValidatorCommissionResponse
. - π #11334 Move
x/gov/types/v1beta2
tox/gov/types/v1
. - π¨ (x/auth/middleware) #11413 Refactor tx middleware to be extensible on tx fee logic. Merged
MempoolFeeMiddleware
andTxPriorityMiddleware
functionalities intoDeductFeeMiddleware
, make the logic extensible using theTxFeeChecker
option, the current fee logic is preserved by the defaultcheckTxFeeWithValidatorMinGasPrices
implementation. ChangeRejectExtensionOptionsMiddleware
toNewExtensionOptionsMiddleware
which is extensible with theExtensionOptionChecker
option. Unpack the tx extension optionsAny
s to interfaceTxExtensionOptionI
. - π (migrations) #11556 Remove migration code from 0.42 and below. To use previous migrations, checkout previous versions of the cosmos-sdk.
Client Breaking Changes
- π #11797 Remove all RegisterRESTRoutes (previously deprecated)
- π #11089 interacting with the node through
grpc.Dial
requires clients to pass a codec refer to [doc](docs/run-node/interact-node.md). - π #9594 Remove legacy REST API. Please see the REST Endpoints Migration guide to migrate to the new REST endpoints.
- #9995 Increased gas cost for creating proposals.
- π #11029 The deprecated Vote Option field is removed in gov v1beta2 and nil in v1beta1. Use Options instead.
- π #11013 The
tx gov submit-proposal
command has changed syntax to support the new Msg-based gov proposals. To access the old CLI command, please usetx gov submit-legacy-proposal
. - π #11170 Fixes issue related to grpc-gateway of supply by ibc-denom.
CLI Breaking Changes
- (cli) #11818 CLI transactions preview now respect the chosen
--output
flag format (json or text). - #9695
<app> keys migrate
CLI command now takes no arguments. - π #9246 Removed the CLI flag
--setup-config-only
from thetestnet
command and added the subcommandinit-files
. - #9780 Use sigs.k8s.io for yaml, which might lead to minor YAML output changes
- #10625 Rename
--fee-account
CLI flag to--fee-granter
- #10684 Rename
edit-validator
command's--moniker
flag to--new-moniker
- β‘οΈ (authz)#11060 Changed the default value of the
--expiration
tx grant
CLI Flag: was now + 1year, update: null (no expire date).
π Improvements
- #11696 Rename
helpers.GenTx
toGenSignedMockTx
to avoid confusion with genutil'sGenTxCmd
. - (x/auth/vesting) #11652 Add util functions for
Period(s)
- #11630 Add SafeSub method to sdk.Coin.
- #11511 Add api server flags to start command.
- #11484 Implement getter for keyring backend option.
- π #11449 Improved error messages when node isn't synced.
- #11349 Add
RegisterAminoMsg
function that checks that a msg name is <40 chars (else this would break ledger nano signing) then registers the concrete msg type with amino, it should be used for registeringsdk.Msg
s with amino instead ofcdc.RegisterConcrete
. - β¬οΈ #11089 Now cosmos-sdk consumers can upgrade gRPC to its newest versions.
- #10439 Check error for
RegisterQueryHandlerClient
in all modulesRegisterGRPCGatewayRoutes
. - π #9780 Remove gogoproto
moretags
YAML annotations and addsigs.k8s.io/yaml
for YAML marshalling. - π (x/bank) #10134 Add
HasDenomMetadata
function to bankKeeper
to check if a client coin denom metadata exists in state. - (x/bank) #10022
BankKeeper.SendCoins
now takes less execution time. - (deps) #9987 Bump Go version minimum requirement to
1.17
- 0οΈβ£ (cli) #9856 Overwrite
--sequence
and--account-number
flags with default flag values when used withoffline=false
insign-batch
command. - π (rosetta) #10001 Add documentation for rosetta-cli dockerfile and rename folder for the rosetta-ci dockerfile
- 0οΈβ£ #9699 Add
:
,.
,-
, and_
as allowed characters in the default denom regular expression. - (genesis) #9697 Ensure
InitGenesis
returns with non-empty validator set. - π¦ #10341 Move from
io/ioutil
toio
andos
packages. - #10468 Allow futureOps to queue additional operations in simulations
- #10625 Add
--fee-payer
CLI flag - (cli) #10683 In CLI, allow 1 SIGN_MODE_DIRECT signer in transactions with multiple signers.
- π (deps) #10210 Bump Tendermint to v0.35.0.
- (deps) #10706 Bump rosetta-sdk-go to v0.7.2 and rosetta-cli to v0.7.3
- π (types/errors) #10779 Move most functionality in
types/errors
to a standaloneerrors
go module, except theRootCodespace
errors and ABCI response helpers. All functions and types that used to live intypes/errors
are now aliased so this is not a breaking change. - π (gov) #10854 v1beta2's vote doesn't include the deprecate
option VoteOption
anymore. Instead, it only usesWeightedVoteOption
. - π (types) #11004 Added mutable versions of many of the sdk.Dec types operations. This improves performance when used by avoiding reallocating a new bigint for each operation.
- (x/auth) #10880 Added a new query to the tx query service that returns a block with transactions fully decoded.
- (types) #11200 Added
Min()
andMax()
operations on sdk.Coins. - (gov) #11287 Fix error message when no flags are provided while executing
submit-legacy-proposal
transaction. - (x/auth) #11482 Improve panic message when attempting to register a method handler for a message that does not implement sdk.Msg
- (x/staking) #11596 Add (re)delegation getters
- π (errors) #11960 Removed 'redacted' error message from defaultErrEncoder
- (ante) #12013Β Index ante events for failed tx.
π Bug Fixes
- π (CLI) #12075 Add
p2p-port
to thegentx
andcreate-validator
CLI commands to support custom P2P ports. - β¬οΈ #11969 Fix the panic error in
x/upgrade
whenAppVersion
is not set. - β
(tests) #11940 Fix some client tests in the
x/gov
module - #11772 Limit types.Dec length to avoid overflow.
- #11724 Fix data race issues with api.Server
- #11693 Add validation for gentx cmd.
- #11645 Fix
--home
flag ignored when running help. - #11558 Fix
--dry-run
not working when using tx command. - #11354 Added missing pagination flag for
bank q total
query. - #11197 Signing with multisig now works with multisig address which is not in the keyring.
- π (makefile) #11285 Fix lint-fix make target.
- π (client) #11283 Support multiple keys for tx simulation and setting automatic gas for txs.
- β‘οΈ (store) #11177 Update the prune
everything
strategy to store the last two heights. - #10844 Automatic recovering non-consistent keyring storage during public key import.
- (store) #11117 Fix data race in store trace component
- (cli) #11065 Ensure the
tendermint-validator-set
query command respects the-o
output flag. - (grpc) #10985 The
/cosmos/tx/v1beta1/txs/{hash}
endpoint returns a 404 when a tx does not exist. - (rosetta) #10340 Use
GenesisChunked(ctx)
insteadGenesis(ctx)
to get genesis block height - π #10180 Documentation: make references to Cosmos SDK consistent
- #9651 Change inconsistent limit of
0
toMaxUint64
on InfiniteGasMeter and add GasRemaining func to GasMeter. - #9639 Check store keys length before accessing them by making sure that
key
is of lengthm+1
(forkey[n:m]
) - (types) #9627 Fix nil pointer panic on
NewBigIntFromInt
- (x/genutil) #9574 Actually use the
gentx
client tx flags (like--keyring-dir
) - (x/distribution) #9599 Withdraw rewards event now includes a value attribute even if there are 0 rewards (due to situations like 100% commission).
- (x/genutil) #9638 Added missing validator key save when recovering from mnemonic
- #9762 The init command uses the chain-id from the client config if --chain-id is not provided
- π #9854 Fixed the
make proto-gen
to get dynamic container name based on project name for the cosmos based sdks. - #9980 Returning the error when the invalid argument is passed to bank query total supply cli.
- (server) #10016 Fix marshaling of index-events into server config file.
- π #10184 Fixed CLI tx commands to no longer explicitly require the chain-id flag as this value can come from a user config.
- π #10239 Fixed x/bank/044 migrateDenomMetadata.
- β¬οΈ (x/upgrade) #10189 Removed potential sources of non-determinism in upgrades
- π #10258 Fixes issue related to segmentation fault on mac m1 arm64
- β #10466 Fixes error with simulation tests when genesis start time is randomly created after the year 2262
- π #10394 Fixes issue related to grpc-gateway of account balance by ibc-denom.
- β‘οΈ #10593 Update swagger-ui to v4.1.0 to fix xss vulnerability.
- #10842 Fix error when
--generate-only
,--max-msgs
fags set while executingWithdrawAllRewards
command. - #10897 Fix: set a non-zero value on gas overflow.
- #9790 Fix behavior of
DecCoins.MulDecTruncate
. - π #10990 Fixes missing
iavl-cache-size
config parsing inGetConfig
method. - π (crypto) [#11027] Remove dependency on Tendermint core for xsalsa20symmetric.
- (x/authz) #10447 Fix authz
NewGrant
expiration check. - π (x/authz) #10633 Fixed authorization not found error when executing message.
- #11222 reject query with block height in the future
- #11229 Handled the error message of
transaction encountered error
from tendermint. - (x/authz) #11252 Allow insufficient funds error for authz simulation
- π (cli) #11313 Fixes
--gas auto
when executing CLI transactions in--generate-only
mode - π (cli) #11337 Fixes
show-adress
cli cmd - β‘οΈ (crypto) #11298 Fix cgo secp signature verification and update libscep256k1 library.
- (x/authz) #11512 Fix response of a panic to error, when subtracting balances.
- β± (rosetta) #11590
/block
returns an error with nil pointer when a request has both of index and hash and increase timeout for huge genesis. - (x/feegrant) #11813 Fix pagination total count in
AllowancesByGranter
query. - (simapp) #11855 Use
sdkmath.Int
instead ofint64
forSimulationState.InitialStake
. - π (x/capability) #11737 Use a fixed length encoding of
Capability
pointer forFwdCapabilityKey
- #11983 (x/feegrant, x/authz) rename grants query commands to
grants-by-grantee
,grants-by-granter
cmds.
State Machine Breaking
- (baseapp) #11985 Add a
postHandler
to baseapp. ThispostHandler
is like antehandler, but is run after therunMsgs
execution. It is in the same store branch thatrunMsgs
, meaning that bothrunMsgs
andpostHandler
- (x/gov) #11998 Tweak the
x/gov
ModuleAccountInvariant
invariant to ensure deposits are<=
total module account balance instead of strictly equal. - β¬οΈ (x/upgrade) #11800 Fix
GetLastCompleteUpgrade
to properly return the latest upgrade. - β‘οΈ #10564 Fix bug when updating allowance inside AllowedMsgAllowance
- (x/auth)#9596 Enable creating periodic vesting accounts with a transactions instead of requiring them to be created in genesis.
- (x/bank) #9611 Introduce a new index to act as a reverse index between a denomination and address allowing to query for
token holders of a specific denomination.
DenomOwners
is updated to use the new reverse index. - (x/bank) #9832 Account balance is stored as
sdk.Int
rather thansdk.Coin
. - π (x/bank) #9890 Remove duplicate denom from denom metadata key.
- β¬οΈ (x/upgrade) #10189 Removed potential sources of non-determinism in upgrades
- #10422 and #10529 Add
MinCommissionRate
param tox/staking
module. - (x/gov) #10763 modify the fields in
TallyParams
to usestring
instead ofbytes
- βͺ #10770Β revert tx when block gas limit exceeded
- (x/gov) #10868 Bump gov to v1beta2. Both v1beta1 and v1beta2 queries and Msgs are accepted.
- π #11011 Remove burning of deposits when qourum is not reached on a governance proposal and when the deposit is not fully met.
- #11019 Add
MsgCreatePermanentLockedAccount
and CLI method for creating permanent locked account - (x/staking) #10885 Add new
CancelUnbondingDelegation
transaction tox/staking
module. Delegators can now cancel unbonding delegation entry and delegate back to validator. - (x/feegrant) #10830 Expired allowances will be pruned from state.
- (x/authz,x/feegrant) #11214 Fix Amino JSON encoding of authz and feegrant Msgs to be consistent with other modules.
- π (authz)#11060 Support grant with no expire time.
- (x/gov) #10868 Bump gov to v1.
π Deprecated
- β¬οΈ (x/upgrade) #9906 Deprecate
UpgradeConsensusState
gRPC query since this functionality is only used for IBC, which now has its own IBC replacement - π (types) #10948 Deprecate the types.DBBackend variable and types.NewLevelDB function. They are replaced by a new entry in
app.toml
:app-db-backend
andtendermint/tm-db
sNewDB
function. Ifapp-db-backend
is defined, then it is used. Otherwise, iftypes.DBBackend
is defined, it is used (until removed: #11241). Otherwise, Tendermint config'sdb-backend
is used.
- (types) #11985 Add a