Cosmos SDK v0.45.0 is a logical continuation of the v0.44.* series, but brings a couple of state- and API-breaking changes requested by the community.
State-Breaking Changes
There are few important changes in gas consumption, which improve the gas economics:
- We now charge gas in two new places: on
.Seek()
even if there are no entries, and for the key length (on top of the value length). - When block gas limit is exceeded, we consume the maximum gas possible (to charge for the performed computation). We also fixed the bug when the last transaction in a block exceeds the block gas limit, it returns an error result, but the tx is actually committed successfully.
Finally, a small improvement in gov, we increased the maximum proposal description size from 5k characters to 10k characters.
API-Breaking Changes
- The
BankKeeper
interface has a newHasSupply
method to ensure that input denom actually exists on chain. - The
CommitMultiStore
interface contains a newSetIAVLCacheSize
method for a configurable IAVL cache size. AuthKeeper
interface inx/auth
now includes a functionHasAccount
.- Moved
TestMnemonic
fromtestutil
package totestdata
.
Finally, when using the SetOrder*
functions in simapp, e.g. SetOrderBeginBlocker
, we now require that all modules be present in the function arguments, or else the node panics at startup. We also added a new SetOrderMigration
function to set the order of running module migrations.
Improvements
- Speedup improvements (e.g. speedup iterator creation after delete heavy workloads, lower allocations for
Coins.String()
, reduce RAM/CPU usage inside store/cachekv'sStore.Write
) are included in this release. - Upgrade Rosetta to v0.7.0 .
- Support in-place migration ordering.
- Copied and updated
server.GenerateCoinKey
andserver.GenerateServerCoinKey
functions to thetestutil
package. These functions inserver
package are marked deprecated and will be removed in the next release. In thetestutil.GenerateServerCoinKey
version we added support for custom mnemonics in in-process testing network.
See our CHANGELOG for the exhaustive list of all changes, or a full commit diff.