Cosmos生态目前是跨链生态里进度最前沿的网络,基于跨链网络的融合性,Cosmos未来产品的多样性是值得期待的。因此,本文里,我们将把Cosmos网络运行中重点部分的资料整理。可以基于这些资料来了解Cosmos的可能性。
Cosmos SDK是Cosmos网络生态中的开发基础架构,基于Cosmos SDK开发的网络是生态中跨链网络主体。而Cosmos Hub是Cosmos的主网以及完成跨链、共识最终确定性的主体。IBC协议是Cosmos网络生态中,不同网络间互相通讯的协议标准。
Cosmos SDK中可用的默认共识引擎是Tendermint Core 。Tendermint是现存最(也是唯一)成熟的BFT共识引擎,在整个行业中广泛使用。
Cosmos SDK是开源的,旨在从可组合模块构建区块链变得容易。随着开源Cosmos SDK 模块生态系统的发展,用它构建复杂的去中心化平台将变得越来越容易。
Cosmos SDK已经被用于构建许多已经投入生产的区块链。Cosmos Hub, IRISnet,币安链,Kava等正在Cosmos SDK上构建。
在Cosmos区块链中,状态机通常通过称为ABCI的接口连接到底层共识引擎,这个接口可以用任何编程语言包装,这意味着开发人员可以用他们选择的编程语言来构建他们的状态机。
ABCI还允许开发人员交换其特定于应用程序的区块链的共识引擎。虽然目前只有 Tendermint可以使用,但未来预计会出现其他共识引擎。
开发人员还可以自由探索全方位的权衡(例如验证器数量与交易吞吐量、安全性与异步可用性等)和设计选择(用于存储的DB或IAVL树、UTXO或帐户模型等)。
在Cosmos SDK中,可以在每个区块的开头和结尾自动触发逻辑。他们还可以自由选择在其应用程序中使用的加密库,而不会受到虚拟机区块链底层环境可用内容的限制。
Cosmos和Cosmos SDK的目标是使开发人员工具尽可能通用和可组合,以便堆栈的每个部分都可以在不失去兼容性的情况下进行分叉、调整和改进。
Tendermint是一个与应用程序无关的引擎,负责处理区块链的网络和共识层。Tendermint 负责传播和排序交易字节。Tendermint Core 依靠同名的拜占庭容错 (BFT) 算法来就交易顺序达成共识。
Tendermint共识算法与一组称为Validators的特殊节点一起工作。验证者负责向区块链添加交易块。在任何给定的区块中,都有一个验证者集 V。V 中的一个验证者被算法选择为下一个区块的提议者。如果超过三分之二的 V 签署了预投票,则认为该区块有效,如果它包含的所有交易都是有效的。验证器集可以通过写入状态机的规则进行更改。
Cosmos SDK有助于在 Tendermint 之上开发安全状态机。Cosmos SDK的核心是 Golang 中ABCI的样板实现。
baseapp是Cosmos SDK应用程序的样板实现。它带有ABCI的实现来处理与底层共识引擎的连接。
Cosmos SDK提供了一个multistore持久化状态。multistore 允许开发人员声明任意数量的KVStores.
Cosmos SDK的强大之处在于它的模块化。Cosmos SDK应用程序是通过聚合一组可互操作的模块来构建的。每个模块都定义了状态的一个子集并包含自己的消息/事务处理器,而 Cosmos SDK负责将每个消息路由到其各自的模块。
每个模块都可以看作是一个小状态机。开发者需要定义模块处理的状态子集,以及修改状态的自定义消息类型。鉴于Cosmos SDK是一个开放框架,一些模块可能是恶意的,这意味着需要安全原则来推理模块间的交互。
Cosmos Hub 是数千个互连区块链中的一个,这些网络最终组成Cosmos网络。Cosmos Hub区块链上有125个验证者。
Cosmos Hub CLI称为gaiad,是一个命令行界面,用户可以通过此工具与 Cosmos Hub 进行交互。gaiad是唯一一款100%支持Cosmos Hub功能的工具,包括账户、转账、委托和治理。
Cosmos Hub预计在2022年第一季度进行Theta升级,其中包含:
Cosmos SDK v0.45
NFT 模块
Tendermint v0.35
跨链账户
流动质押
预算模块
Farm模块
区块链间通信协议 (IBC) 是一种端到端的、面向连接的、有状态的协议,用于在以未知和动态拓扑结构排列的异构区块链之间进行可靠、有序和经过身份验证的通信。
该协议通过指定一组数据结构、抽象和语义来实现这种互操作性,这些数据结构、抽象和语义可以由满足一小部分要求的任何分布式账本实现。
IBC可用于构建广泛的跨链应用程序,包括代币转移、原子交换、多链智能合约(有或没有可相互理解的VM)以及各种数据和代码分片。
由于 IBC 协议的模块化设计,IBC 应用程序开发人员无需关心客户端、连接和证明验证的底层细节。
IBC客户端是链上轻客户端。每个轻客户端都由唯一的客户端ID标识。IBC客户端跟踪其他区块链的共识状态,以及根据客户的共识状态正确验证证明所需的证明规范。客户端可以与任意数量的交易对手链连接相关联。
客户端标识符是使用客户端类型和附加格式的全局客户端计数器自动生成的{client-type}-{N}.
AClientState应包含验证IBC客户端更新和升级所需的链特定和轻客户端特定信息。其中ClientState可能包含链 ID、最新高度、证明规范、解绑期或轻客户端状态等信息。ClientState不应该包含特定高度的给定块的信息,这些是CosnensusState.
每个都ConsensusState 应该与一个唯一的块相关联,并且应该使用高度来引用。IBC客户端被赋予一个客户端标识符前缀存储,以存储其关联的客户端状态和共识状态以及与共识状态相关的任何元数据。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。