买币
行情
现货
合约BTC
理财
活动中心
福利中心
更多
0 费狂欢节
Cosmos SDK: 什么是 Cosmos SDK?Cosmos SDK 是一个开源软件框架,可用于构建可定制的 Layer 1 区块链、分布式账本和特定应用加密网络。它为开发者提供可复用的区块链组件,用于账户、代币转账、交易手续费、质押、治理、奖励、授权、升级及其他常见功能。开发者可以将这些组件与自定义模块结合,以定义新建区块链的独特业务逻辑。Cosmos SDK 主要使用 Go 编程语言编写。它是 Cosmos 技Cosmos SDK: 什么是 Cosmos SDK?Cosmos SDK 是一个开源软件框架,可用于构建可定制的 Layer 1 区块链、分布式账本和特定应用加密网络。它为开发者提供可复用的区块链组件,用于账户、代币转账、交易手续费、质押、治理、奖励、授权、升级及其他常见功能。开发者可以将这些组件与自定义模块结合,以定义新建区块链的独特业务逻辑。Cosmos SDK 主要使用 Go 编程语言编写。它是 Cosmos 技

Cosmos SDK

2026/10/13 15:13
#Advanced
Humanity
H$0.056-1.51%
SynFutures
F$0.003122-2.16%
PX
PX$0.0129+2.38%
Solayer
LAYER$0.07034-2.34%
Lorenzo Protocol
BANK$0.02736-3.08%

什么是 Cosmos SDK?

Cosmos SDK 是一个开源软件框架,可用于构建可定制的 Layer 1 区块链、分布式账本和特定应用加密网络。

它为开发者提供可复用的区块链组件,用于账户、代币转账、交易手续费、质押、治理、奖励、授权、升级及其他常见功能。

开发者可以将这些组件与自定义模块结合,以定义新建区块链的独特业务逻辑。

Cosmos SDK 主要使用 Go 编程语言编写。

它是 Cosmos 技术栈中负责应用和状态转换的层,而不是一种加密货币或区块链本身。

使用 SDK 创建的区块链可以定义自己的原生代币、验证者系统、交易规则、费用模式、治理流程和应用功能。

官方Cosmos SDK 概述将其描述为一个框架,开发者可以使用预定义模块和自定义模块构建特定应用区块链和数字账本。

该框架可支持公共无许可链、私有许可账本、联盟网络和其他专用区块链结构。

SDK 是什么意思?

SDK 是软件开发工具包(software development kit)的缩写。

软件开发工具包提供库、接口、工具、文档和可复用代码,帮助开发者为特定环境构建软件。

Cosmos SDK 提供区块链专用构建组件,因此开发者无需从头创建每一项账户、交易、存储、治理和质押功能。

SDK 一词并不意味着所有使用它创建的区块链都必须采用相同规则或用户体验。

每个开发团队都可以选择模块、参数、权限、共识集成方式和升级政策。

最新的 Cosmos SDK 版本是什么?

截至 2026 年 7 月,官方代码库将 Cosmos SDK v0.54.3 列为最新版本。

该版本于 2026 年 5 月 5 日发布,属于 v0.54 和 2026.1 版本系列。

开发前应查看官方Cosmos SDK 发布页面,因为补丁版本和安全修复可能会随时间变化。

版本号很重要,因为不同版本系列的模块接口、存储包、应用接线方式、依赖项和迁移要求可能有所不同。

区块链在升级 SDK 依赖项前,应审查可能导致不兼容的变更,并在需要时准备协调一致的网络升级。

Cosmos SDK v0.54 升级指南记录了应用接线、治理、Bank 模块生命周期钩子、Store v2、日志记录、IBC 依赖项和实验性性能功能相关的变更。

什么是特定应用区块链?

特定应用区块链是指协议层规则围绕特定应用、行业或一组用途进行设计的网络。

其核心功能作为区块链状态机的一部分运行,而不是完全依赖部署在共享通用执行层上的合约。

开发团队可以自定义交易类型、账户权限、手续费、验证者选择、代币发行、治理权和存储结构。

这种模式可以降低对无关共享应用平台所选规则的依赖。

同时,它也让该链的开发者和社区承担更多责任,包括共识安全、验证者运营、升级、经济设计和基础设施维护。

如果开发者希望在原生模块之外支持可编程智能合约,特定应用链仍可以添加虚拟机。

Cosmos SDK 如何运作?

Cosmos SDK 区块链由执行引擎、应用模块、状态存储、交易处理程序以及连接外部共识引擎的接口组成。

用户创建已签名的交易,其中包含一条或多条用于请求状态变更的消息。

共识网络将有效交易排序并打包成区块,然后把区块信息发送给应用。

SDK 应用会检查每笔交易,将其中的消息路由至相应模块,执行相关业务规则,并更新区块链状态。

每个诚实验证者都必须执行相同顺序的交易,并生成相同的应用状态哈希。

确定性执行至关重要,因为如果相同输入产生不同结果,验证者就无法对区块链状态达成一致。

Cosmos SDK 区块链的主要层

共识和网络

共识和点对点网络通常由 CometBFT 提供,而不是由每个 SDK 模块直接实现。

CometBFT 对交易排序、协调验证者投票、最终确认区块,并通过 Application Blockchain Interface 与应用通信。

BaseApp

BaseApp 是嵌入 Cosmos SDK 应用中的主要执行引擎。

它负责交易解码、签名中间件、消息路由、Gas 计量、查询、区块钩子、状态管理以及与共识引擎通信。

模块

模块包含账户、代币转账、质押、治理和软件升级等功能所需的专门应用逻辑。

状态存储

每个模块都在应用的 multistore 中受控的键值命名空间内存储状态。

客户端接口

命令行工具、gRPC 服务、REST 端点及其他接口,允许钱包、节点、区块浏览器和应用提交交易或查询状态。

什么是 BaseApp?

BaseApp 是 Cosmos SDK 区块链中的基础应用类型,负责协调交易执行和模块活动。

官方BaseApp 文档将其描述为每条 Cosmos SDK 链所使用的执行引擎。

BaseApp 实现 Application Blockchain Interface,用于区块链应用与 CometBFT 之间的通信。

它接收共识引擎请求、管理执行上下文、路由交易、协调模块并提交应用状态。

链的主应用配置会创建 BaseApp,并将其连接到模块、keeper、存储、中间件和生命周期钩子。

BaseApp 提供共享基础设施,因此每个区块链团队都不必自行创建交易路由器、Gas 计量器、状态缓存或区块钩子系统。

什么是 ABCI?

ABCI 是 Application Blockchain Interface(应用区块链接口)的缩写。

它是共识引擎与区块链应用通信所使用的协议。

ABCI 将共识和网络与特定应用的状态转换逻辑分离。

CometBFT 可以通过 ABCI 调用来初始化区块链、检查交易、最终确定区块、提交状态和获取验证者更新。

这种分离让开发者可以专注于应用规则,同时使用经过测试的共识引擎生成区块并实现最终确定性。

简化后的架构为:CometBFT → ABCI → BaseApp → 模块 → 应用状态。

什么是 CometBFT?

CometBFT 是一种拜占庭容错共识引擎,常与 Cosmos SDK 应用结合使用。

它负责点对点网络、交易传播、区块提议、验证者投票和区块最终确认。

尽管 Cosmos SDK 和 CometBFT 常常一起部署,但两者承担不同的工作。

CometBFT 决定交易的最终顺序,而 Cosmos SDK 应用则决定这些交易会产生什么作用。

即使共识引擎运行正常,应用逻辑中的缺陷仍可能导致不理想的结果。

因此,安全的区块链既需要可靠的共识配置,也需要安全且确定性的应用代码。

什么是 Cosmos SDK 模块?

Cosmos SDK 模块是可复用组件,用于管理区块链中特定领域的功能和状态。

每个模块都可以定义消息、查询、keeper、参数、创世数据、事件和区块生命周期操作。

官方模块架构指南介绍了模块如何隔离状态,并提供受控接口以实现模块间交互。

开发团队可以纳入标准模块、修改应用接线方式,或创建自定义模块。

随着区块链功能增加,模块化设计有助于保持架构清晰。

模块化并不意味着无需考虑兼容性、安全性或迁移工作,就可以随意添加任何模块。

常见 Cosmos SDK 模块

Auth 模块

x/auth
模块定义核心账户和交易类型,并支持基本的交易身份验证。

它参与签名、账户序列号、手续费和其他交易要求的检查。

官方认证模块规范说明,账户包含公钥、地址、账户编号及基于序列号的重放保护所需信息。

Bank 模块

x/bank
模块管理多种资产的币余额、转账、供应信息以及对特定代币转移的限制。

其他模块在需要铸造、销毁、转移或查看余额时,可以调用受控的 bank-keeper 接口。

Bank 模块文档介绍了其余额和多资产转账管理职责。

Staking 模块

x/staking
模块提供权益证明功能,涉及验证者、委托、解除绑定、重新委托和验证者集合更新。

Slashing 模块

x/slashing
模块可以根据链参数,对验证者长时间离线或为冲突区块签名等错误行为进行处罚。

Distribution 模块

x/distribution
模块支持在验证者、委托者和指定社区资源之间分配交易手续费及其他奖励。

Governance 模块

x/gov
模块支持链上提案、存款、投票、计票,以及执行获批的提案消息。

Mint 模块

x/mint
模块可以根据应用配置的经济规则管理协议定义的代币发行。

Upgrade 模块

x/upgrade
模块负责在指定区块高度协调计划内的软件升级和状态迁移。

Authorization 模块

x/authz
模块允许一个账户授权另一个账户代表其执行指定类型的消息,但权限范围有限。

Fee Grant 模块

x/feegrant
模块允许一个账户根据已配置的额度为另一个账户支付交易手续费。

什么是 Keeper?

Keeper 是 Cosmos SDK 模块中用于访问状态和处理业务逻辑的层。

它提供类型化方法,用于读取和写入模块数据。

模块底层的存储字段通常设为私有,以防外部代码直接修改模块状态。

消息服务器、查询服务器和区块钩子会调用 keeper 方法与状态交互。

其他模块只能获得应用明确提供的 keeper 接口和权限。

这种模式让模块依赖关系更加清晰,并减少对共享区块链状态的无约束访问。

设计不当的 keeper 接口仍可能授予危险权限,因此必须仔细审查权限边界。

Cosmos SDK 模块如何通信?

模块通过明确定义的 keeper 接口通信,而不是直接修改彼此的存储。

如果质押代币需要在模块账户之间转移,Staking 模块可以调用获批的 bank-keeper 方法。

提案通过后,Governance 模块可以调用获授权的参数更新方法。

接收调用的模块仍负责执行自身的状态规则。

明确定义的接口可以让跨模块权限更易于测试和审计。

循环依赖和过度授权会增加应用维护和安全管理的难度。

状态如何存储?

Cosmos SDK 将应用状态作为键值对存储在各个模块专用的存储中。

键和值都以字节形式表示,而模块会按照既定序列化规则对结构化数据进行编码和解码。

Cosmos SDK 状态和存储指南说明,各模块的存储会挂载在 multistore 中,并一并提交。

每个模块都控制自己的命名空间,通常通过类型化的存储键和 keeper 访问该空间。

区块处理完成后,应用会计算一个代表所有模块状态的状态根。

状态根会返回给共识引擎,并纳入区块链已提交的历史记录。

什么是 Cosmos SDK Multistore?

Multistore 是一个容器,用于协调应用模块分别使用的状态存储。

每个模块都可以维护独立的键空间,同时所有模块的变更都会在同一个应用状态根下提交。

这种设计可以隔离模块数据,而无需为每个模块创建单独的区块链。

交易执行可以使用缓存状态,以便在更新底层状态前丢弃失败消息产生的变更。

存储实现和数据库配置会影响节点性能、数据裁剪、快照和迁移要求。

Cosmos SDK v0.54 引入了 Store v2 软件包变更,升级应用时需要谨慎迁移。

什么是创世状态?

创世状态是新建区块链开始运行时的初始状态。

创世状态通常存储在

genesis.json
文件中,其中包含链和模块配置。

创世数据可能定义初始账户、代币余额、验证者、模块参数及其他初始记录。

在链初始化期间,BaseApp 会调用各模块的创世逻辑,以验证并填充其状态。

所有节点都必须从兼容的创世数据开始运行,否则就无法计算出相同的区块链状态。

初始代币供应量、地址、验证者密钥或参数配置出错时,可能需要在网络启动前协调修正。

Cosmos SDK 交易如何运作?

Cosmos SDK 交易是一种已签名的数据结构,包含一条或多条消息、身份验证信息、Gas 限额和交易手续费。

每条消息代表一项请求操作,例如转移代币、委托质押、投票或调用自定义模块功能。

用户使用与发送账户关联的私钥为交易签名。

节点会解码提交的字节,并检查交易是否符合内存池要求。

共识将交易纳入区块后,BaseApp 会执行身份验证中间件,并将每条消息路由至相应处理程序。

成功的处理程序会更新模块状态,并发出供外部应用索引的事件。

Cosmos SDK 交易生命周期

构建交易

钱包或应用会构建消息,并添加账户、手续费、Gas、链和签名信息。

签名

账户所有者使用账户授权的私钥,对规定的签名字节进行签名。

广播

编码后的交易会通过受支持的客户端接口提交至节点。

CheckTx

在将交易纳入内存池之前,节点会初步检查签名、序列号、手续费、Gas 价格和交易格式。

共识排序

验证者通过共识流程,就包含有序交易集合的区块达成一致。

AnteHandler 执行

BaseApp 会运行消息执行前的中间件,处理身份验证、序列号、手续费和 Gas 设置。

消息执行

系统会根据消息类型 URL 将每条消息路由至相应模块消息服务器。

后处理

应用可以配置后处理程序,在消息执行后运行相关逻辑。

状态提交

成功的状态转换会纳入该区块已提交的新应用状态根。

什么是 AnteHandler?

AnteHandler 是在交易消息执行前运行的中间件。

它可以验证签名、检查账户序列号、扣除手续费、设置 Gas 计量器,并执行应用特定的交易条件。

如果 AnteHandler 拒绝某笔交易,该交易中的消息就不会执行。

根据当前 BaseApp 文档,即使后续消息执行失败,成功的 ante 处理所完成的手续费和序列号更新仍可能提交。

这意味着即使用户请求的加密操作没有成功,仍可能需要支付交易手续费。

自定义 AnteHandler 逻辑必须在所有验证者之间保持确定性。

什么是 Cosmos SDK 消息?

消息是请求执行特定状态转换的结构化指令。

例如,发送代币、创建验证者、委托质押、提交治理提案或更改自定义应用数据。

每种消息类型都有明确字段、签名者规则、验证要求和对应的消息服务器方法。

BaseApp 会根据已注册的类型 URL 路由消息。

一个交易中可以包含多条消息。

消息状态变更通常具有原子性,也就是说,如果有一条消息失败,该交易中的消息写入就不会被部分提交。

什么是查询?

查询用于读取区块链状态,不会请求状态转换。

钱包可以查询余额、质押仓位、治理提案、模块参数和交易相关信息。

Cosmos SDK 模块通常会提供 gRPC 查询服务,由 BaseApp 将查询路由到正确的查询服务器。

查询不会经过常规交易 AnteHandler,也不会像区块链交易那样扣除手续费。

如果不同节点提供的数据对应不同区块高度,或历史状态不完整,查询结果可能有所不同。

如果查询结果受这些信息影响,应用就应标明所查询的链、区块高度和数据来源。

Cosmos SDK 中的 Gas 是什么?

Gas 是用于限制交易执行所消耗计算和存储资源的计量单位。

签名验证、读取状态、写入状态和处理交易字节等操作都可能消耗 Gas。

交易会声明 Gas 限额,表示用户授权执行时最多消耗的 Gas。

如果交易耗尽 Gas 限额,即使底层消息本来有效,交易也会失败。

不同 Cosmos SDK 链的 Gas 计量规则和成本可能不同,因为应用可以控制重要参数和实现细节。

Cosmos SDK 交易手续费如何计算?

简化的手续费计算方式是将 Gas 限额乘以所选 Gas 价格。

交易手续费 = Gas 限额 × Gas 价格

如果交易的 Gas 限额为 200,000,Gas 价格为每单位 Gas 0.025 个单位,则手续费为 5,000 个最小代币单位。

交易手续费 = 200,000 × 0.025 = 5,000

验证者可以配置最低 Gas 价格,用于筛选提交至其节点的交易。

如果交易提供的手续费低于某节点的最低要求,该节点可能会在交易进入内存池之前拒绝它。

显示的手续费应注明代币面额和小数换算方式。

Cosmos SDK 账户

Cosmos SDK 账户通常包含地址、账户编号、序列号,以及在公钥已公开至链上时提供的公钥信息。

序列号有助于防止同一笔已签名交易被反复重放。

提交序列号过期的交易可能会导致交易被拒绝。

如果需要支持归属期、多重签名、许可或其他特殊行为,应用可以在基本账户之外定义其他账户类型。

账户地址无法证明控制其私钥的个人或组织的法律身份。

如果没有其他授权系统,私钥或恢复方式丢失可能导致账户控制权永久丧失。

Cosmos SDK 地址格式

Cosmos SDK 链通常使用 Bech32 编码显示地址,并附带特定于链的可读前缀。

该前缀有助于用户在可读界面中区分账户地址、验证者地址和共识地址。

由于使用不同前缀或地址规则,两条链可能会根据相关密钥材料生成不同的显示地址。

仅凭前缀无法证明某个地址属于预期区块链或收款人。

转移加密货币前,用户应核实链 ID、地址类型、完整收款地址和受支持的资产路径。

Cosmos SDK 质押

Cosmos SDK Staking 模块让区块链能够建立权益证明验证者系统。

原生代币持有者可以根据链的规则,将质押代币委托给验证者。

验证者的选取可能取决于绑定的投票权和配置的验证者集合上限。

官方Cosmos SDK Staking 规范定义了验证者、委托、解除绑定、重新委托和验证者集合的状态转换。

该模块使用委托份额,作为各验证者委托代币池的记账机制。

绑定代币面额、验证者上限、解除绑定时间和历史记录等质押参数由各条链自行选择。

验证者和委托者

验证者负责运营基础设施,并在加入活跃验证者集合后参与区块提议、投票和共识任务。

委托者将质押权委托给验证者,但不一定自行运营验证者基础设施。

验证者可能会对分配给委托者的奖励收取佣金。

委托者仍会受到验证者表现、佣金变化、罚没、解除绑定延迟、代币波动性和协议风险的影响。

委托并不等同于普通代币出售所涉及的所有权转移,但代币会受到质押模块规则的约束。

具体权利和风险取决于该链的应用配置。

解除绑定和重新委托

解除绑定是将委托从质押中移出的开始过程。

在链规定的解除绑定期间,代币可能无法转移。

如果验证者在代币绑定期间出现符合条件的行为,这些代币仍可能受到相应处罚的影响。

重新委托是根据协议规则将质押敞口从一名验证者转移至另一名验证者。

质押模块会跟踪尚未完成的重新委托,以减少用户通过反复更换验证者来逃避处罚的尝试。

钱包界面应显示完成时间和限制,而不应将解除绑定描述为即时提现。

Cosmos SDK 罚没机制

罚没是协议处罚措施,可能减少质押资产价值,或将验证者移出活跃共识流程。

Cosmos SDK 罚没规范涵盖验证者在线情况监测、隔离、冲突签名和 tombstoning 处理。

链可以通过参数配置处罚方式和漏签区块要求。

由于委托者的代币计入验证者质押,他们也可能承担罚没损失。

如果验证者未达到规定的在线要求,可能会被暂时隔离。

根据链的规则,严重的共识错误可能导致更严厉的处罚和永久性限制。

Cosmos SDK 治理

Governance 模块允许符合条件的参与者提交提案,并对区块链决策进行投票。

提案可以包含一条或多条可执行消息,而不只是非正式的文字建议。

治理操作可能包括更改模块参数、支出指定的社区资源或安排软件升级。

提案流程可能包括存款期、投票期、法定人数要求、通过门槛和否决门槛。

每条链都可以采用不同的治理规则。

链上投票通过并不能强制验证者运行有缺陷或无法使用的软件,因此重大升级还需要运营协调。

Cosmos SDK 授权

Authorization 模块允许授权方授予被授权方权限,使其可以代表授权方执行指定消息。

官方Cosmos SDK 授权文档说明,授权是与特定消息类型相关联的许可。

授权范围可以较宽,也可以通过自定义授权逻辑加以限制。

代币发送授权可以设置支出限额,并可选填获批的收款地址名单。

创建授权前,用户应查看允许执行的消息类型、有效期、支出限额和收款地址限制。

如果获授权账户遭到入侵,攻击者可能会滥用仍在有效期内的授权所允许的任何操作。

Cosmos SDK 软件升级

区块链软件升级可能会改变模块逻辑、存储格式、接口和共识相关行为。

x/upgrade
模块允许链在指定区块高度安排升级计划。

Upgrade 模块规范说明治理提案如何安排或取消升级计划。

节点运营者必须在计划升级生效前安装兼容的正确二进制文件。

升级处理程序可以运行模块迁移,将已存储的数据转换为新软件所需的格式。

协调失败可能中断区块生成,或导致运营者分散在互不兼容的版本上。

Cosmos SDK 与 IBC

IBC 是一种协议,允许兼容的区块链验证并交换跨链数据。

Cosmos SDK 链可以集成 IBC 模块,以支持代币转账、跨链账户、合约消息和其他跨链应用。

官方IBC-Go 文档说明,启用 IBC 的链可以通过无许可协议连接交换字节编码的数据。

IBC 并不限于使用 Cosmos SDK 创建的链,不过 Go 语言实现通常会集成到 SDK 应用中。

自 IBC-Go v10 起,IBC Classic 和 IBC v2 已作为该版本系列中的独立协议版本并存。

连接双方使用的协议和应用模块必须由两个参与系统共同支持。

IBC 代币转账如何运作?

IBC 代币转账始于用户在源链提交转账请求。

源链应用会根据资产的转账路径托管或销毁相应形式的资产。

包含转账数据的数据包会被提交,之后由中继器转发至目标链。

目标链会验证所需证明,并创建或释放相应的资产形式。

中继器负责传输数据包和证明数据,但无需依靠它们来保证有效数据包内容不被更改。

用户仍需承担通道选择、资产追踪、流动性、应用、客户端、共识和接收链相关风险。

Cosmos SDK 支持智能合约吗?

Cosmos SDK 专注于原生区块链模块,但可以通过扩展添加用于执行智能合约的虚拟机。

这样一来,区块链就可以将协议层模块与用户部署的可编程应用结合起来。

开发团队可以根据编程语言、兼容性、性能和安全需求选择虚拟机。

并非所有 Cosmos SDK 应用都会自动启用智能合约支持。

添加虚拟机可以扩展功能,但也会扩大应用的攻击面并增加运营复杂性。

Cosmos SDK 与智能合约

Cosmos SDK 模块作为原生应用逻辑运行,并包含在验证者使用的区块链软件中。

智能合约则运行在现有区块链应用提供的虚拟机中。

原生模块可以访问协议层钩子和紧密集成的状态接口。

智能合约通常可以部署,而无需每个验证者都安装新的链二进制文件。

更新原生模块逻辑通常需要协调进行链升级。

具体采用哪种模式,取决于功能是否需要协议层控制、无许可部署、隔离执行或快速迭代应用。

Cosmos SDK 与 Cosmos Hub

Cosmos SDK 是用于构建区块链的软件,而 Cosmos Hub 是一条使用 Cosmos 技术栈构建的特定区块链。

SDK 并没有一种所有链都必须共用的原生加密货币。

每个 Cosmos SDK 应用都可以定义自己的代币面额、供应规则、质押资产和手续费政策。

一条独立链作出的治理决策不会自动控制其他所有基于 SDK 的链。

开发者不应将 Cosmos Hub 的参数视为 Cosmos SDK 的通用默认设置。

Cosmos SDK 的优势

模块化组件可以减少团队需要独立开发的区块链基础代码。

特定应用架构让开发者能够控制协议逻辑、手续费、权限、治理和代币经济学。

模块状态边界和 keeper 接口有助于更清楚地了解权限并开展审计。

原生 IBC 支持可以提供标准化的跨链通信方式。

该框架同时支持预定义模块和自定义应用逻辑。

开源代码、文档、测试工具和现有生产环境应用有助于开发和审查。

这些优势并不能免除安全设计、审计、测试、验证者运营和经济分析的必要性。

Cosmos SDK 的局限性

启动一条独立链需要验证者、节点、监控、升级、治理和长期维护。

新网络必须根据自身威胁模型建立足够的经济安全或许可安全。

自定义模块可能存在严重的逻辑、授权或状态迁移缺陷。

模块和依赖项升级可能导致应用接线方式发生不兼容变更。

跨链连接会带来额外的客户端、中继器、路由和目标链风险。

特定应用架构的灵活性也可能增加复杂性,因为不同的 SDK 链可能采用完全不同的参数和模块。

用户不能假设所有使用该框架构建的链都具有相同的安全性、去中心化程度或资产保护措施。

Cosmos SDK 安全性

安全性取决于 SDK 版本、自定义应用代码、共识配置、验证者基础设施、密钥管理、治理和已连接协议。

每次状态转换都必须具有确定性,并且经过验证,以防止未经授权的输入。

Keeper 应仅向其他模块开放所需权限。

管理权限、升级密钥、治理权和紧急控制措施都应记录在案并经过测试。

开发者应使用受支持的依赖项、查看安全公告、运行模拟、测试迁移,并为高价值应用安排独立审计。

官方Cosmos Stack 审计页面提供核心组件已发布安全审查的链接。

Cosmos Stack 漏洞赏金政策提供了私下报告漏洞的协调流程。

Cosmos SDK 常见安全风险

非确定性执行

依赖本地时间、不可预测的迭代、外部服务或不一致数值行为的代码,可能导致验证者计算出不同的状态。

Keeper 权限错误

权限范围过宽的 keeper 接口可能允许一个模块未经授权更改另一个模块的状态。

消息授权错误

如果消息处理程序未能验证正确的签名者或权限,就可能导致未经授权的状态变更。

创世配置错误

无效余额、重复记录、错误的验证者数据或不安全的参数,可能在区块链生成第一个区块前就危及链的安全。

升级失败

不正确的迁移逻辑可能破坏状态,或导致节点无法在计划的升级高度重新启动。

经济设计缺陷

软件即使完全按照设计运行,不安全的激励机制、通胀、抵押品规则或治理门槛仍可能造成经济损失。

验证者密钥泄露

验证者密钥被盗或配置错误,可能导致运营中断,或产生可被罚没的共识行为。

依赖项漏洞

如果 SDK、共识、IBC、密码学、数据库或网络依赖项未及时更新,区块链可能继承其中的安全漏洞。

如何使用 Cosmos SDK 构建区块链

明确区块链的用途

团队应明确目标用户、资产、交易类型、安全假设、治理结构和监管要求。

选择 SDK 版本

应用应基于受支持的版本系列开发,并锁定兼容的依赖项版本。

选择标准模块

团队可以选择用于账户、转账、质押、治理、奖励、授权和升级的模块。

开发自定义模块

自定义模块可以定义消息、keeper、查询、事件、参数、创世逻辑和生命周期钩子。

配置应用组件

必须正确连接存储、keeper、模块依赖项、中间件、消息服务、查询服务和钩子执行顺序。

定义创世状态

必须生成、验证、审核初始链状态,并将其一致地分发给节点运营者。

测试确定性和状态转换

单元测试、集成测试、模拟测试、模糊测试和多节点测试网络均可帮助发现逻辑与共识问题。

进行安全审查

应重点审查高风险模块、权限、代币发行、升级和跨链集成。

启动测试网络

测试网络可供运营者和开发者演练创世配置、交易、验证者变更、故障处理和升级。

协调主网上线

验证者必须使用兼容的二进制文件、创世文件、网络配置和运维流程。

Cosmos SDK 模块开发

自定义模块通常会先定义状态模型,再实现交易消息。

Protocol Buffer 文件可以定义消息、查询、创世数据和数据结构。

keeper 提供受控的状态访问和可复用的业务逻辑。

消息服务器负责验证交易请求并调用 keeper 操作。

查询服务器提供对模块状态的只读访问。

模块可以向应用注册服务、接口、存储、创世处理程序、迁移程序和区块钩子。

开发者应测试失败状态和未授权调用,而不应只测试成功交易。

区块生命周期钩子

Cosmos SDK 模块可以在区块执行的不同阶段运行指定逻辑。

PreBlock 逻辑在 BeginBlock 之前运行,可以为当前区块准备所需状态。

BeginBlock 逻辑在区块执行开始附近运行,可以执行预定的模块任务。

随后,交易将按约定顺序处理。

EndBlock 逻辑在交易执行后运行,可以准备验证者更新或完成模块计算。

ModuleManager 负责协调钩子的执行顺序;顺序错误可能导致应用错误或意外状态。

事件与索引

Cosmos SDK 模块可以在交易和区块执行期间发出事件。

事件可以描述转账、委托、投票、参数变更或自定义应用活动等操作。

区块浏览器和分析系统可以对这些事件建立索引,从而提供可搜索的用户界面。

事件是可观察到的执行输出,而不是权威状态来源。

如果应用需要获取当前的规范结果,应查询已提交的状态。

不同应用版本之间,事件字段和索引配置可能发生变化。

Cosmos SDK 治理与参数

模块参数是链上配置值,用于控制模块行为的指定方面。

例如,参数可以包括治理存款、验证者上限、质押期限、发行设置和罚没条件。

参数通常通过经过授权的消息进行更改,而不是通过普通且不受限制的用户交易进行更改。

治理模块账户可以作为参数更新消息的授权主体。

开发者应验证每个新参数值,以防治理操作意外使模块进入无效状态。

如果需要更改底层状态转换逻辑,就不应以参数灵活性取代明确的软件升级。

Cosmos SDK 性能

性能取决于应用逻辑、数据库配置、交易复杂度、硬件、网络状况、共识设置和状态规模。

简单转账消耗的资源与复杂的多模块交易并不相同。

每个验证者都必须在网络的时间假设范围内完成确定性执行。

随着时间推移,状态增长可能增加存储、快照、同步和查询成本。

Gas 计量、数据裁剪、索引、缓存和高效的 keeper 逻辑都会影响节点性能。

Cosmos SDK v0.54 包含实验性的 Block-STM 并行交易执行支持,但要在生产环境中采用,必须仔细测试兼容性和正确性。

什么是 Block-STM?

Block-STM 是一种实验性的执行方式,旨在尝试并行处理兼容的交易,同时保持最终结果的确定性。

Cosmos SDK Block-STM 文档介绍了区块最终确定期间的乐观并行执行。

访问相互冲突状态的交易可能需要重新执行,或以安全的顺序处理。

并行执行可以提高独立工作负载的吞吐量,但如果大多数交易都会修改同一状态,其效果可能有限。

不应仅仅因为基准测试显示交易数量有所增加,就启用实验性功能。

Cosmos SDK 节点运维

全节点会存储区块链状态、与其他节点通信、验证区块,并提供已配置的接口服务。

验证者节点还会在验证者处于活跃状态时管理共识签名任务。

运营者必须保护私钥、保护远程接口、监控磁盘使用情况、安装兼容的升级,并维持可靠的网络连接。

公共远程过程调用服务应根据其威胁模型设置适当的速率限制和访问控制。

备份应保护配置和必要的恢复数据,同时避免额外复制正在使用的签名密钥。

监控系统应能检测漏块、进程故障、节点失联、磁盘空间耗尽、状态同步问题和应用行为异常。

如何评估 Cosmos SDK 区块链

确认该区块链使用的 SDK、CometBFT、IBC 和模块的具体版本。

检查应用是否包含重要的自定义模块或由管理员控制的逻辑。

考察验证者分布、共识参与情况、质押集中度和密钥管理实践。

阅读该链的治理参数、升级流程和紧急权限。

了解原生资产和跨链资产的模型,以及有权铸造、冻结或限制代币的主体。

查看安全审计、已披露的漏洞、测试覆盖率和安全事件记录。

检查 IBC 路由、客户端或连接的区块链是否引入了外部安全假设。

仅使用 Cosmos SDK 并不能决定某个加密网络是否安全或适合用户使用。

关于 Cosmos SDK 的常见误解

一种常见误解是认为 Cosmos SDK 本身是一条区块链,而不是用于创建独立区块链的框架。

另一种误解是认为所有基于 SDK 的区块链都共享同一组验证者。

除非采用特定的共享安全设计,否则独立区块链通常各自维护自己的安全机制和治理体系。

有些用户认为,所有基于 SDK 的资产都可以自动通过 IBC 转移。

IBC 转账需要兼容的模块、活跃客户端、有效路由和正常运行的中继器。

另一种误解是认为标准模块无法通过应用逻辑、参数或版本选择进行定制。

用户还可能把区块链的原生代币与用于构建该链的软件框架混为一谈。

常见问题

如何用最简单的话定义 Cosmos SDK?

Cosmos SDK 是一个开源 Go 语言框架,可用于构建可定制的 Layer 1 区块链和分布式账本。

Cosmos SDK 是一条区块链吗?

不是。它是用于构建区块链的软件,本身并不是一条区块链。

Cosmos SDK 是一种加密货币吗?

不是。使用它构建的每个应用都可以自行定义加密货币和代币规则。

Cosmos SDK 使用什么编程语言?

Cosmos SDK 主要使用 Go 语言开发。

最新的 Cosmos SDK 版本是什么?

截至 2026 年 7 月,官方代码库将 v0.54.3 列为最新版本。

什么是 BaseApp?

BaseApp 是执行引擎,用于连接共识调用、交易处理、模块和区块链状态。

什么是 ABCI?

ABCI 是共识引擎与区块链应用进行通信的接口。

什么是 CometBFT?

CometBFT 是一种共识和网络引擎,常用于为 Cosmos SDK 应用排列交易顺序并完成交易最终确认。

什么是 Cosmos SDK 模块?

模块是可复用的应用组件,负责区块链逻辑和状态中的特定部分。

什么是 keeper?

keeper 是模块中受控的状态访问层和业务逻辑层。

开发者可以创建自定义 Cosmos SDK 模块吗?

可以。开发者可以创建包含自定义消息、状态、查询、参数、事件和生命周期钩子的模块。

什么是 bank 模块?

bank 模块负责管理加密货币余额、多资产转账、供应量信息和特定代币限制。

什么是 auth 模块?

auth 模块定义核心账户和交易类型,并参与交易身份验证。

什么是 staking 模块?

staking 模块负责管理验证者、委托、解除绑定、重新委托,以及权益证明验证者更新。

什么是 slashing 模块?

slashing 模块会对验证者的特定故障行为进行惩罚,例如停机或签署相互冲突的共识消息。

什么是 governance 模块?

governance 模块负责管理提案、存款、投票、计票,以及对已批准操作的授权执行。

什么是 upgrade 模块?

upgrade 模块会安排在指定区块高度进行协调的软件变更和状态迁移。

什么是 Cosmos SDK 交易?

Cosmos SDK 交易是一种经过签名的结构,其中包含消息、账户身份验证数据、Gas 限额和手续费。

Cosmos SDK 中的 message 是什么?

message 是向模块发出的结构化请求,用于执行特定的区块链状态转换。

一笔交易可以包含多条消息吗?

可以。一笔交易可以包含多条按顺序处理的消息。

一条消息失败时会发生什么?

消息产生的状态写入通常会以原子方式回滚,但手续费和序列号变更等前置处理效果仍可能生效。

什么是 AnteHandler?

AnteHandler 是执行前中间件,用于处理签名、序列号、手续费、Gas 和其他交易检查。

Cosmos SDK 中的 Gas 是什么?

Gas 用于衡量并限制交易执行消耗的计算和存储资源。

交易手续费如何计算?

简化的计算方法是将交易的 Gas 限额乘以所选 Gas 价格。

所有 Cosmos SDK 区块链收取的手续费都相同吗?

不相同。各链可以采用不同的手续费代币、Gas 价格、最低费用和手续费政策。

什么是创世状态?

创世状态是新链启动时的初始数据,包括账户、代币、验证者、参数和模块数据。

Cosmos SDK 支持权益证明吗?

支持。其 staking 和 slashing 模块可以支持可配置的权益证明验证者系统。

委托是否能保证质押盈利?

不能。奖励可能变化,委托人还面临代币波动、佣金、停机、罚没和协议风险。

什么是解除绑定期?

解除绑定期是由区块链定义的一段等待时间,符合条件的已解除质押代币须在此期间结束后才能再次转账。

Cosmos SDK 区块链之间可以通信吗?

如果它们实现了兼容的 IBC 协议、应用、客户端和路由,就可以相互通信。

什么是 IBC?

IBC 是一种协议,用于在兼容的独立区块链之间进行经过验证的数据通信。

IBC 是否需要信任中继器?

中继器负责传输数据,而接收链会验证协议证明,不会依赖中继器来判断状态是否有效。

IBC 能消除跨链风险吗?

不能。用户仍面临应用、客户端、路由、共识、资产、流动性和目标链风险。

Cosmos SDK 支持智能合约吗?

支持。区块链可以添加兼容的虚拟机来执行智能合约。

模块和智能合约有什么区别?

模块作为原生链逻辑运行,而智能合约则运行在区块链提供的虚拟机中。

Cosmos SDK 和 Cosmos Hub 是一回事吗?

不是。Cosmos SDK 是开发框架,而 Cosmos Hub 是使用 Cosmos 技术栈创建的一条区块链。

所有 Cosmos SDK 区块链都会共享验证者吗?

不会。除非有意采用共享安全安排,否则独立区块链通常使用各自的验证者集合。

不同 SDK 区块链上的代币可以使用相同符号吗?

可以。代币符号并非全球唯一,因此用户应核实区块链、面额、合约和转账路径。

什么是 Store v2?

Store v2 是更新后的 Cosmos SDK 存储包,包含在 v0.54 迁移要求中。

什么是 Block-STM?

Block-STM 是一种实验性系统,用于在区块最终确定期间对兼容交易进行确定性并行执行。

每条 Cosmos SDK 区块链都安全吗?

不是。安全性取决于代码、验证者系统、配置、治理、依赖项、运维和经济设计。

自定义 Cosmos SDK 代码可能存在漏洞吗?

可能。自定义模块可能存在授权、会计、确定性、迁移和经济设计方面的缺陷。

Cosmos SDK 区块链应如何升级?

运营者应审查不兼容变更、测试迁移、协调升级区块高度,并在升级激活前安装兼容的二进制文件。

使用基于 SDK 的区块链前,用户应检查什么?

用户应检查其版本、验证者、治理、自定义模块、资产控制、审计、升级和跨链依赖项。

Cosmos SDK 最大的优势是什么?

其主要优势是可以通过可复用模块组合并定制协议层区块链逻辑。

Cosmos SDK 最大的局限是什么?

它的灵活性意味着每条链都必须承担大量责任,自行保障网络安全、运维、治理和升级,并维持其经济可持续性。

结论

Cosmos SDK 是一个开源 Go 语言框架,可用于创建可定制的 Layer 1 区块链、分布式账本和应用专属加密网络。

它提供用于账户、代币转账、手续费、质押、治理、授权、奖励和软件升级的可复用模块。

BaseApp 负责协调交易执行、模块生命周期操作、查询、Gas 和状态,并通过 ABCI 与共识引擎通信。

模块会隔离各自的状态,并通过受控的 keeper 接口提供业务逻辑和跨模块通信能力。

IBC 集成允许兼容的独立区块链交换经过验证的数据,同时各自保留应用状态和治理体系。

SDK 的灵活性能够支持专业化区块链设计,但并不能保证安全性、去中心化、互操作性或经济成功。

开发者必须仔细测试确定性执行、keeper 权限、创世状态、迁移、验证者运维和连接的协议。

评估 Cosmos SDK 区块链时,用户应分析具体网络的模块、参数、验证者、治理、升级、资产控制和安全记录,而不应仅根据其使用的框架作出判断。

您可能也喜欢

反恐融资(CTF)

反恐怖主义融资(CTF)是指旨在发现、预防和打击恐怖主义活动资金支持的法律、法规和活动。这包括监控和监管资金流动、在金融机构内部实施合规计划,以及执行旨在遏制恐怖主义融资的国际制裁和法规。 反恐融资在各领域的重要性 反恐融资在包括银行业、科技和国际贸易在内的各个领域都至关重要。在金融领域,强而有力的反恐融资措施可确保银行和其他金融机构不会被恐怖组织利用为其活动提供资金。这不仅有助于维护金融体系的完
2025/12/23 18:42

框架

在专业情境中,「框架」指的是一套结构化的指南、工具或实践,旨在支援专案、应用程式或系统的开发和实施。它提供了一种标准化的方法来解决复杂问题或实现特定目标,通常包含可根据具体需求进行调整和扩展的预先建置元件。 框架的关键特征 框架在软体开发、专案管理和数位行销等各个领域都至关重要。例如,在软体开发中,Angular、React 和 Django 等框架提供了开发人员用来高效建立高品质应用程式的程式库
2025/12/23 18:42

波动性爆发

「波动性爆发」是指金融市场、资产或指数的波动性突然显著增加,通常由不可预见的事件或市场情绪变化所驱动。这种突如其来的增加会导致价格大幅波动和交易量激增,从而影响投资者和交易者的风险和机会。 了解波动性爆发 波动性是衡量特定证券或市场指数收益分散程度的统计指标,显示资产价格在特定期间内的波动幅度。当这种波动超出正常水平时,就会发生波动性爆发,这通常是对意外新闻或经济事件的反应。这些事件可能包括地缘政
2025/12/23 18:42
回调还是机会?
回调还是机会?回调还是机会?
一边爆仓,一边扫货——24亿ETF资金在赌什么?