本页跟踪 v0.54.1 的发布与变更。完整发布历史请参阅 GitHub 上的更新日志。
2026-04-14
SDK发布
v0.54.1

改进

  • (x/auth) #26297 在 GetBlockWithTxs 中,将分页上限限制为区块内的交易数量,而不是固定为 100。
2026-04-10
SDK发布
v0.54.0

破坏性变更

  • (x/consensus) #25607 为共识参数新增 AuthorityParams。设置后,共识参数权限将优先于各 keeper 的独立权限,用于所有模块参数更新。Keeper 构造函数签名不变。
  • (x/staking) #25724 在 MsgUpdateParams 中校验 BondDenom,防止设置不存在或总供应量为零的 denom。
  • #25778 将 log 升级为 log v2。
  • #25090 已将弃用模块移动到 ./contrib。这些模块仍然可用,但将不再主动维护,也不再纳入 Cosmos SDK 漏洞赏金计划支持范围。
  • x/group
  • x/nft
  • x/circuit
  • x/crisis
  • (crypto) #24414 移除对 sr25519 的支持,因为该支持已在 CometBFT v1.x 中被移除(参见:CometBFT #3646)。
  • (x/mint) #25599 新增最大供应量参数。
  • (x/gov) #25615 通过将 CalculateVoteResultsAndVotingPowerFn 设为 keeper.NewKeeper 的必填参数,而不是使用 StakingKeeper,使 x/gov 与 x/staking 解耦。
  • (x/gov) #25617 AfterProposalSubmission hook 现在将提案人地址作为参数传入。
  • (x/gov) #25616 DistrKeeper x/distribution 现在是可选项。创世校验会确保:如果将 distribution 模块用作提案取消目标,则必须设置 distrKeeper。
  • (systemtests) #25930 将 systemtests 移入 testutil,不再单独拥有自己的 go.mod。
  • (baseapp) #26060 移除 BaseApp.SetStoreMetrics。由于 StoreMetrics 接口实际上从未生效,因此删除这部分无用代码。
  • (store) #26061 移除 store tracing API 及其所有相关配套逻辑:
  • 从 MultiStore 接口中移除 SetTracer、SetTracingContext 和 TracingEnabled。
  • 从 CacheWrapper 接口中移除 CacheWrapWithTrace。
  • 移除 BaseApp.SetCommitMultiStoreTracer,以及 BaseApp.cacheTxContext 和 FinalizeBlock 中的 tracing context 逻辑。
  • 从 servertypes.AppCreator 中移除 io.Writer 参数,并从 servertypes.AppExporter 中移除 traceWriter io.Writer。
  • 从 simapp.NewSimApp 和所有 enterprise simapp 构造函数中移除 traceStore io.Writer 参数。
  • 从所有 testutil/simsx 应用工厂签名中移除 traceStore io.Writer。
  • (store) #26042 现在使用 github.com/cosmos/cosmos-sdk/store/v2 作为 store 包,而不是 cosmossdk.io/store,所有导入路径均已变更。
  • (baseapp) #26138 默认禁用区块 gas meter。新增检查以确保在配置 bstm 并行执行时不会启用区块 gas meter,并会在这些场景下于参数赋值阶段触发 panic。

新功能

  • #25471 启用完整的 BLS 12-381 支持。
  • #24872 为 CLI init、gentx、collect-gentx 提供 BLS 12-381 支持。
  • (crypto) #24919 在 secp256r1 包中新增 NewPubKeyFromBytes 函数,用于从字节创建 PubKey。
  • (server) #24720 新增 verbose_log_level 标志,用于在敏感操作(如链升级)期间切换到详细日志模式时配置日志级别。
  • (crypto) #24861 新增 PubKeyFromCometTypeAndBytes 辅助函数,用于将 comet/v2 PubKey 转换为 cryptotypes.Pubkey 接口。
  • (abci_utils) #25008 新增能力,可在 DefaultProposalHandler 中指定自定义签名者提取适配器。
  • (x/distribution) #25650 为 DelegatorStartingInfo、ValidatorHistoricalRewards 和 ValidatorCurrentRewards 新增 gRPC 查询端点与 CLI 命令。
  • #25745 通过 gopsutil 新增 DiskIO 遥测。
  • (grpc) #25648 在 GetSyncingResponse 中新增 earliest_block_height 和 latest_block_height 字段。
  • (collections/codec) #25614 在 collections/codec 中新增 TimeValue(ValueCodec[time.Time])。
  • (enterprise/poa) #25838 在 enterprise 目录下新增 poa 模块。
  • (grpc) #25850 新增 GetBlockResults 和 GetLatestBlockResults gRPC 端点,用于暴露 CometBFT 区块结果,包括 finalize_block_events。

改进

  • (ci) 对 main-nightly 改用 softprops/action-gh-release,而不是自定义 gh/git,以避免仓库 ruleset 冲突。
  • (telemetry) #26006 导出 ExtensionOptions 类型,用于以编程方式生成 otel.yaml。
  • #25955 直接使用 cosmos/btree,而不是在 go.mods 中替换它。
  • (types) #25342 取消 EventManager 上 EmitEvent 和 EmitEvents 的弃用状态。这些函数将继续维护。
  • (types) #24668 将全局配置限定到特定二进制文件,使多个 SDK 二进制可以在同一台机器上正确运行。
  • (baseapp) #24655 为 state 添加互斥锁,并将 lastCommitInfo 设为原子变量,以防止 Commit 与 CreateQueryContext 之间出现竞态条件。
  • (proto) #24161 移除 x/staking authz proto 中不必要的注解。
  • (x/bank) #24660 提升 GetAllBalances 和 GetAccountsBalances keeper 方法的性能。
  • (collections) #25464 为 Multi 索引类型新增 IterateRaw 方法,以满足查询 Collection 接口的需要。
  • (api) #25613 将弃用模块拆分到 contrib 目录,并与 api 分离,以便在不影响遗留代码的情况下启用并放行新的 proto 变更。
  • (server) #25740 为 StartGrpcServer 新增可变参数 grpc.DialOption,用于自定义 gRPC 客户端连接选项。
  • (blockstm) #25765 小幅提升 block-stm 代码可读性。
  • (blockstm) #25786 在交易状态转换中新增前置状态检查。
  • (server/config) #25807 修复(server):拒绝重叠的历史 gRPC 区块范围。
  • #25857 缩小 PriorityNonceMempool.Remove 中互斥锁的作用范围。
  • (baseapp) #25862 对重新检查的交易跳过执行 validateBasic。(从 https://github.com/cosmos/cosmos-sdk/pull/20208 回移植)
  • (blockstm) 25883 在预估阶段复用已解码的交易对象。
  • (blockstm) #25788 仅校验至少执行过一次的交易。
  • (blockstm) #25767 使用位图索引优化 block-stm MVMemory。

问题修复

  • (baseapp) #25331 避免在 gRPC 响应头已发送时产生噪声错误;在可能时将区块高度设置为响应头,否则回退为 trailer。
  • (blockstm) #25789 当调度器未完成时唤醒挂起的执行器,以防止 goroutine 泄漏。
  • (grpc) #25647 在 node.Status gRPC 端点中返回实际的 earliest_store_height,而不是硬编码的 0。
  • (types/query) #25665 修复使用谓词函数查询集合时的分页偏移量问题。
  • (x/staking) #25649 在 IterateDelegatorRedelegations 和 GetRedelegations 中补充缺失的 defer iterator.Close() 调用,以防止资源泄漏。
  • (mempool) #25563 在交易被替换时清理发送者索引。
  • (x/epochs) #25425 修复 InvokeSetHooks 在 keeper 为 nil 时被调用,以及 AppModule 持有副本而不是指针的问题(如果像使用 depinject 那样在创建 AppModule 后再设置 hooks,由于实例不同,设置不会生效)。
  • (client, client/rpc, x/auth/tx) #24551 在向客户端方法传入 context 时正确处理取消操作。
  • (x/authz) #24638 修复一个小问题:grant key 被强制转换为字符串并直接写入错误消息,导致错误字符串可能包含无效的 UTF-8。
  • (client, client/rpc, x/auth/tx) #24551 在向客户端方法传入 context 时正确处理取消操作。
  • (x/epochs) #24770 修复 InvokeSetHooks 中 epoch hooks 的注册问题。
  • (x/epochs) #25087 移除 BeginBlocker 中冗余的错误检查。
  • GHSA-p22h-3m2v-cmgh 修复 x/distribution 在历史奖励溢出时可能导致停机的问题。
  • (x/staking) #25258 在 redelegate 事件中添加委托人地址。
  • (x/bank) #25751 修复事件中的接收方地址。
  • (client) [#25811] (https://github.com/cosmos/cosmos-sdk/pull/25811) 修复快照命令中的文件句柄泄漏问题。
  • (server/config) #25806 修复:在历史 gRPC 配置模板中补充缺失的逗号。
  • (client) #25804 为 grpc 客户端添加 GetHeightFromMetadataStrict API,以改进错误处理。
  • (x/staking) #25829 在 x/staking 中校验 authz grant 的大小写敏感性。
  • (mempool) #25869 修复(mempool):为 NextSenderTx 增加线程安全保护。
  • (blockstm) #25912 移除 SigVerificationDecorator 的签名 incarnation 缓存,该缓存会在 blockstm 下导致状态分歧。
  • (x/group) #25922 为 ThresholdDecisionPolicy 增加总权重为零的检查。
  • (x/group) #25917 防止创建权重为零的群组。
  • (x/group) #25919 为 group DecisionPolicy getter 调用增加更安全的类型断言。
  • (x/group) #25920 扩展投票期检查,从仅验证非零改为验证其为正值。
  • (baseapp) #26063 修复一个问题:在 ante 处理期间嵌入到 context 中的值会在处理器返回后被清除。

已弃用

  • #25948 修改默认的 app.go 代码,不再使用 depinject,因为我们正在逐步淘汰它。
  • (baseapp) #26107 弃用 baseapp 测试辅助方法 app.NewUncachedContext,建议改用 app.NewNextBlockContext 或 app.NewContext,更多细节请参见 UPGRADING.md。

This page tracks releases and changes for v0.54.1. For the full release history, see the CHANGELOG on GitHub.
2026-04-14
SDKRelease
v0.54.1

Improvements

  • (x/auth) #26297 Cap pagination limit at number of txs within block during GetBlockWithTxs instead of 100.
2026-04-10
SDKRelease
v0.54.0

Breaking Changes

  • (x/consensus) #25607 Add AuthorityParams to consensus params. When set, the consensus params authority takes precedence over per-keeper authority for all module parameter updates. Keeper constructor signatures are unchanged.
  • (x/staking) #25724 Validate BondDenom in MsgUpdateParams to prevent setting non-existent or zero-supply denoms.
  • #25778 Update log to log v2.
  • #25090 Moved deprecated modules to ./contrib. These modules are still available but will no longer be actively maintained or supported in the Cosmos SDK Bug Bounty program.
  • x/group
  • x/nft
  • x/circuit
  • x/crisis
  • (crypto) #24414 Remove sr25519 support, since it was removed in CometBFT v1.x (see: CometBFT #3646).
  • (x/mint) #25599 Add max supply param.
  • (x/gov) #25615 Decouple x/gov from x/staking by making CalculateVoteResultsAndVotingPowerFn a required parameter to keeper.NewKeeper instead of StakingKeeper.
  • (x/gov) #25617 AfterProposalSubmission hook now includes proposer address as a parameter.
  • (x/gov) #25616 DistrKeeper x/distribution is now optional. Genesis validation ensures distrKeeper is set if distribution module is used as proposal cancel destination.
  • (systemtests) [#25930]https://github.com/cosmos/cosmos-sdk/pull/25930) Move systemtests into testutil and no longer under its own go.mod.
  • (baseapp) #26060 Remove BaseApp.SetStoreMetrics. The StoreMetrics interface never worked, so removing dead code.
  • (store) #26061 Remove store tracing API and all related plumbing:
  • Remove SetTracer, SetTracingContext, and TracingEnabled from MultiStore interface.
  • Remove CacheWrapWithTrace from CacheWrapper interface.
  • Remove BaseApp.SetCommitMultiStoreTracer and tracing context logic from BaseApp.cacheTxContext and FinalizeBlock.
  • Remove io.Writer parameter from servertypes.AppCreator and traceWriter io.Writer from servertypes.AppExporter.
  • Remove traceStore io.Writer parameter from simapp.NewSimApp and all enterprise simapp constructors.
  • Remove traceStore io.Writer from all testutil/simsx app factory signatures.
  • (store) #26042 We are now importing github.com/cosmos/cosmos-sdk/store/v2 as the store package instead of cosmossdk.io/store and all import paths have changed.
  • (baseapp) #26138 Default block gas meter to disabled. Adds checking to ensure block gas meter is not enabled while bstm parallel execution is configured and panics in these scenarios during parameter assignment.

Features

  • #25471 Full BLS 12-381 support enabled.
  • #24872 Support BLS 12-381 for cli init, gentx, collect-gentx
  • (crypto) #24919 add NewPubKeyFromBytes function to the secp256r1 package to create PubKey from bytes
  • (server) #24720 add verbose_log_level flag for configuring the log level when switching to verbose logging mode during sensitive operations (such as chain upgrades).
  • (crypto) #24861 add PubKeyFromCometTypeAndBytes helper function to convert from comet/v2 PubKeys to the cryptotypes.Pubkey interface.
  • (abci_utils) #25008 add the ability to assign a custom signer extraction adapter in DefaultProposalHandler.
  • (x/distribution) #25650 Add new gRPC query endpoints and CLI commands for DelegatorStartingInfo, ValidatorHistoricalRewards, and ValidatorCurrentRewards.
  • #25745 Add DiskIO telemetry via gopsutil.
  • (grpc) #25648 Add earliest_block_height and latest_block_height fields to GetSyncingResponse.
  • (collections/codec) [#25614] (https://github.com/cosmos/cosmos-sdk/pull/25827) Add TimeValue (ValueCodec[time.Time]) to collections/codec.
  • (enterprise/poa) #25838 Add the poa module under the enterprise directory.
  • (grpc) #25850 Add GetBlockResults and GetLatestBlockResults gRPC endpoints to expose CometBFT block results including finalize_block_events.

Improvements

  • (ci) Use softprops/action-gh-release for main-nightly instead of custom gh/git to avoid repository ruleset conflicts.
  • (telemetry) #26006 Export ExtensionOptions type for programmatic otel.yaml generation.
  • #25955 Use cosmos/btree directly instead of replacing it in go.mods
  • (types) #25342 Undeprecated EmitEvent and EmitEvents on the EventManager. These functions will continue to be maintained.
  • (types) #24668 Scope the global config to a particular binary so that multiple SDK binaries can be properly run on the same machine.
  • (baseapp) #24655 Add mutex locks for state and make lastCommitInfo atomic to prevent race conditions between Commit and CreateQueryContext.
  • (proto) #24161 Remove unnecessary annotations from x/staking authz proto.
  • (x/bank) #24660 Improve performance of the GetAllBalances and GetAccountsBalances keeper methods.
  • (collections) #25464 Add IterateRaw method to Multi index type to satisfty query Collection interface.
  • (api) #25613 Separated deprecated modules into the contrib directory, distinct from api, to enable and unblock new proto changes without affecting legacy code.
  • (server) #25740 Add variadic grpc.DialOption parameter to StartGrpcServer for custom gRPC client connection options.
  • (blockstm) #25765 Minor code readability improvement in block-stm.
  • (blockstm) #25786 Add pre-state checking in transaction state transition.
  • (server/config) #25807 fix(server): reject overlapping historical gRPC block ranges.
  • #25857 Reduce scope of mutex in PriorityNonceMempool.Remove.
  • (baseapp) #25862 Skip running validateBasic for rechecking txs. (Backport of https://github.com/cosmos/cosmos-sdk/pull/20208).
  • (blockstm) 25883 Re-use decoded tx object in pre-estimates.
  • (blockstm) #25788 Only validate transactions that’s executed at lease once.
  • (blockstm) #25767 Optimize block-stm MVMemory with bitmap index.

Bug Fixes

  • (baseapp) #25331 Avoid noisy errors when gRPC response headers are already sent, set block height as a header when possible and fall back to a trailer.
  • (blockstm) #25789 Wake up suspended executors when scheduler doesn’t complete to prevent goroutine leaks.
  • (grpc) #25647 Return actual earliest_store_height in node.Status gRPC endpoint instead of hardcoded 0.
  • (types/query) #25665 Fix pagination offset when querying a collection with predicate function.
  • (x/staking) #25649 Add missing defer iterator.Close() calls in IterateDelegatorRedelegations and GetRedelegations to prevent resource leaks.
  • (mempool) #25563 Cleanup sender indices in case of tx replacement.
  • (x/epochs) #25425 Fix InvokeSetHooks being called with a nil keeper and AppModule containing a copy instead of a pointer (hooks set post creating the AppModule like with depinject didn’t apply because it’s a different instance).
  • (client, client/rpc, x/auth/tx) #24551 Handle cancellation properly when supplying context to client methods.
  • (x/authz) #24638 Fixed a minor bug where the grant key was cast as a string and dumped directly into the error message leading to an error string possibly containing invalid UTF-8.
  • (client, client/rpc, x/auth/tx) #24551 Handle cancellation properly when supplying context to client methods.
  • (x/epochs) #24770 Fix register of epoch hooks in InvokeSetHooks.
  • (x/epochs) #25087 Remove redundant error check in BeginBlocker.
  • GHSA-p22h-3m2v-cmgh Fix x/distribution can halt when historical rewards overflow.
  • (x/staking) #25258 Add delegator address to redelegate event.
  • (x/bank) #25751 Fix recipient address in events.
  • (client) [#25811] (https://github.com/cosmos/cosmos-sdk/pull/25811) fix(client): fix file handle leaks in snapshot commands.
  • (server/config) #25806 fix: add missing commas in historical gRPC config template.
  • (client) #25804 Add GetHeightFromMetadataStrict API to grpc client for better error handling.
  • (x/staking) #25829 Validates case-sensitivity on authz grands in x/staking.
  • (mempool) #25869 fix(mempool): add thread safety to NextSenderTx.
  • (blockstm) #25912 Remove SigVerificationDecorator signature incarnation cache causing state divergence under blockstm.
  • (x/group) #25922 Add zero-total-weight check for ThresholdDecisionPolicy
  • (x/group) #25917 Prevent creation of zero-weight groups.
  • (x/group) #25919 add safer type assertions to group DecisionPolicy getter calls.
  • (x/group) #25920 Expand voting period check to verify period is positive instead of nonzero.
  • (baseapp) #26063 Fixes an issue where values embedded in context during ante handling were wiped after the handlers returned.

Deprecated

  • #25948 Change default app.go code to not use depinject as we are phasing it out.
  • (baseapp) #26107 Deprecate baseapp test helper app.NewUncachedContext, consider using app.NewNextBlockContext or app.NewContext instead, see UPGRADING.md for more details.