# Cosmos介绍

By [Sentinel DVPN中文官方频道](https://paragraph.com/@sentinel-dvpn) · 2022-06-30

---

cosmos核心团队： [Interchain GmbH](https://www.interchain.berlin/), [Informal Systems](https://informal.systems/), and [Regen Network](https://www.regen.network/) 。最初，Cosmos生态系统的大部分软件都是由[Tendermint](https://tendermint.com/)公司(又名All in Bit Inc.)开发的，该公司现在主要致力于[Gravity DEX](https://cosmos.network/gravity-dex/)和[Starport](http://tutorials.cosmos.network/starport/)。

cosmos stack
============

[Tendermint Core](https://tendermint.com/core/)是一个共识引擎，为宇宙生态系统原生的区块链提供动力。它还包括P2P网络层，应用程序区块链接口(ABCI)，以及构建区块链所需的许多其他模块。通过为开发人员提供这个基础来轻松地生成他们自己的共识和网络层，团队可以将他们的工程重点转向他们的应用程序。

为了促进使用Tendermint Core构建的应用程序的开发，开发了[Cosmos SDK](https://tendermint.com/sdk/)。Cosmos SDK是一个开发工具包，用于构建基于tendermint的区块链的应用层，由许多通用模块组成，用于区块链最常见的功能，如创建帐户、桩和令牌管理。

开发人员可以使用支持团队创建的模块、其他团队创建的模块以及他们自己内部开发的模块，来组成一个适合他们需求的独特的ASBC。这些模块的本质是它们的可组合性质，这是由于Tendermint Core集成模块的方式实现的。在这个上下文中，Tendermint Core的作用就像一个旧的电话交换机——它是正确连接和路由信息的后端服务。

栈中的第三个软件是[区块链间通信协议(IBC)](https://tendermint.com/ibc/)，这是Cosmos SDK中的一个模块，允许主权区块链之间的独立通信。该协议不同于Tendermint Core中提供的网络层。IBC允许主权区块链发送和接收来自其他独立区块链的数据/信息，而Tendermint核心网络层是P2P网络，允许区块链内的节点通信并达成共识。IBC规范了将消息发送到另一个区块链的方式。这类似于SMS消息的标准化，使得不同品牌和操作系统的手机可以在发送者和接收者不费多大力气的情况下相互通信。要更多地了解IBC，了解它是如何工作的，以及它为什么重要，请阅读[关于IBC的文章](https://www.coinbase.com/cloud/discover/dev-foundations/ibc-protocol)。

为什么ASBC使用cosmos stack
=====================

可以认为区块链有三个层:共识层、点对点(P2P)网络层和应用层。对于开发人员来说，为了追求ASBC而建立一个新的共识和P2P网络层是超负荷的。Cosmos Stack中的工具提供了一个易于使用的、可组合的框架——[Cosmos SDK](https://bisontrails.co/tendermint/#:~:text=What%20is%20the%20Cosmos%2DSDK%3F)，从而加快了asbc的开发。这个框架允许开发者在Tendermint Core的基础上轻松地生成共识和网络层，然后他们可以将其用作构建应用程序的平台。

通过抽象出ASBC较低层的产品，开发团队可以更多地关注应用程序本身，以及哪些共识和网络参数最适合应用程序，而不是将资源集中在构建较低层上。

![](https://storage.googleapis.com/papyrus_images/ed63d69d54d41fea8b6b23b994f0117b2fb329041f680add11e3e202b24ea27e.png)

区块链上可以使用两种类型的应用程序层。传统的路由利用虚拟机(例如以太坊虚拟机或EVM)来创建智能合约，然后将这些合约上传到单个区块链。 这种方法需要一个通用的虚拟机，它允许创建非常不同的应用程序。虽然拥有一个通用的应用层对于各种应用程序来说是非常好的，但是应用程序开发人员在与共识层和网络层相关的参数方面受到限制。

采用ASBC设计理念的网络通常为团队提供所需的工具，以轻松地创建他们自己的专用于特定应用程序的区块链。不是让虚拟机为区块链编译应用程序，而是可以将应用程序构建到ASBC的核心计算逻辑中，并且每个应用程序都可以拥有自己的独占区块链。

开发团队现在可以选择是在现有的区块链上启动应用程序，还是创建自己的区块链来存放应用程序。然而，这个决定非常微妙，需要从多个角度考虑。

权衡和优势
=====

在现有区块链上构建和开发 ASBC 之间的主要权衡可以归结为开发的简单性与应用程序的可定制性。

*   虽然 Cosmos Stack 显着简化了区块链的开发，但构建新的区块链仍然非常复杂。
    
*   相比之下，在现有区块链上构建需要创建和部署许多智能合约，而对底层区块链基础设施几乎没有控制权。
    
*   在创建自己的区块链时，开发团队不仅要考虑应用程序的解剖结构，还要考虑启动和维护独立区块链的基础设施和安全考虑。
    

创建 ASBC 也会进入一个探索较少的领域。在现有的区块链上，例如以太坊，有很多开发人员可以寻找灵感的工作产品示例。甚至可以在很短的时间内[分叉一个现有的应用程序并启动一个新的应用程序。](https://medium.com/@blockchain_simplified/sushiswap-the-appetizing-fork-of-uniswap-7dd0ed67aa8e)然而，虽然在现有区块链上进行开发很方便，但在拥有专用于特定应用程序的区块链方面发现 了[许多改进。](https://docs.cosmos.network/master/intro/why-app-specific.html)

ASBC 相对于单一区块链生态系统最有希望的优势是主权。通常，应用程序可以采取的操作类型取决于底层区块链的共识参与者验证操作的能力。由于应用程序在通用虚拟机中运行，因此它对运行应用程序的虚拟机几乎没有治理影响，因为它是由更大的区块链验证者社区决定的。应用程序团队只能对其使用的智能合约进行更改；除非更大的社区同意它将使整个网络受益，否则不可能改变整个网络的共识和网络机制。

如果应用程序可以从控制其底层区块链机制中受益，那么 ASBC 可能更适合。例如，在今天的以太坊上，可以为质押的 ETH（如 stETH）生成代表性代币，但无法质押已经锁定在 DeFi 应用程序中的 ETH 代币。[osmosis](https://www.coinbase.com/cloud/discover/protocol-guides/guide-to-osmosis)，一个使用 Cosmos-SDK 开发的基于 ASBC 的去中心化交易所，可以做到这一点，因为它可以控制共识。称为超流质押，它将使 OSMO 和其他在 Osmosis AMM 中提供流动性的协议代币也可以质押给 Osmosis 验证者，为区块链提供安全性，并在其 LP 奖励之上获得质押奖励。开发这样一个独特的实用程序是可行的，因为该应用程序与其自己的共识和网络层紧密集成，并对其拥有完全的主权。

通过为应用程序提供专用区块链和一组验证器，应用程序和底层区块链的目标是一致的，并且更容易实现对共识和网络机制的更改。让应用程序完全控制其自己的区块链提供了许多潜在的性能优势。在 ASBC 的生态系统中，计算和存储资源的竞争较少，因为每个应用程序都有自己的一组验证器。

如果这些 ASBC 是可互操作的并且可以在本地相互通信——就像 Cosmos 生态系统中的情况一样——主权区块链可以独立运行，同时仍然相互交互，从而创建一个生态系统。具体来说，Cosmos 遵循中心辐射模型，其中不同的 ASBC（在 Cosmos 中称为区域）能够与可以将数据和信息路由到其他区域的中央枢纽区块链（Cosmos Hub）进行通信。

Cosmos 生态系统中的区块链倾向于专注于构建其应用程序，同时开发一个强大的、尽管很小的验证器集，可以根据需要进行扩展。然而，小的验证器数量可能会引起关注，尤其是在恶意验证器的环境中。如果顶级验证者串通起来，他们可能会控制网络，就像大多数 PoS 网络一样。

ASBC 安全性的另一个考虑因素是，与基于通用区块链的应用程序相比，每个应用程序的攻击面要小得多。还可以灵活地使用量身定制的密码学或经过良好审核的库，而不是使用虚拟机提供的内容。

选择开发 ASBC 而不是使用现有的基于虚拟机的区块链的权衡和优势是多方面的。在做出此决定时，重要的是要从许多不同的角度看待应用程序和生态系统，并在致力于开发之前考虑所有潜在的用例。

其他 ASBC 平台
==========

虽然 Cosmos 一直是本文的重点，但还有许多其他框架可用于开发 ASBC。Polkadot是与 Cosmos 最具可比性的生态系统。Polkadot 生态系统中的开发人员使用[Substrate 框架](https://docs.substrate.io/)，它也允许使用模块来编写应用程序，类似于 Cosmos SDK。

Polkadot 在许多方面与 Cosmos 不同，但[主要区别](https://juliankoh.medium.com/5-differences-between-cosmos-polkadot-67f09535594b)在于它们在共享安全、成员资格、治理和共识方面的方法。Polkadot 的 ASBC 或平行链将安全性和一些资源外包给其主中继链，因此依赖于中继链进行操作。就像在 ASBC 或已建立的区块链上进行选择一样，框架能力的差异决定了每个生态系统中的区块链可以具有哪些功能。这个主题本身就值得写整篇文章，因此超出了本文的范围。

区块链开发工具的另一家供应商是[Polygon](https://polygon.technology/get-started/)，它以其以太坊扩展解决方案而闻名，例如其与 EVM 兼容的侧链。除了其旗舰 PoS 侧链，Polygon 还提供了许多与以太坊兼容的汇总 ( [Polygon Hermez](https://hermez.io/) )、以通用数据可用性为中心的区块链 ( [Polygon Avail](https://blog.polygon.technology/introducing-avail-by-polygon-a-robust-general-purpose-scalable-data-availability-layer-98bc9814c048/) )，以及用于构建与以太坊兼容的区块链的模块化框架 ( [Polygon Edge](https://polygon.technology/polygon-edge/) )。因此，Polygon 为那些有兴趣在以太坊生态系统中构建自己的专用区块链架构的人提供了工具。

还有许多其他可供构建 ASBC 的平台示例。重要的是要记住，这不太可能是赢家通吃的游戏。重要的是不仅要考虑特定 ASBC 内部的互操作性，还要考虑 Cosmos、Polkadot 和 Ethereum 等平台之间的互操作性。

为 ASBC 建设
=========

选择在哪个生态系统中启动应用程序是开发人员最重要的决定之一。例如，以太坊是 NFT 的非官方所在地，因此对于基于 NFT 的应用程序（例如[Axie Infinity 的 Ronin 侧链](https://medium.com/axie-infinity/introducing-ronin-axie-infinitys-ethereum-sidechain-8745e31eaef1)或[Immutable X 的 rollup](https://docs.x.immutable.com/docs)）来说，留在以太坊生态系统中非常重要。然而，由于以太坊主网无法满足这两个应用程序的可扩展性需求，他们决定构建满足其需求的架构，同时仍作为第 2 层网络在以太坊生态系统中。这些应用程序团队看到了拥有专用架构的好处，但也需要在最适合其应用程序的生态系统中进行开发。

选择在哪个生态系统中开发应用程序需要一个整体的方法，而不是仅仅根据所涉及的技术做出决定，因为技术设计细节比在不合适的生态系统中启动的挑战更容易解决。

经常听到“[未来是多链](https://www.coinbase.com/cloud/discover/insights-analysis/polkadot-parachains-accelerator)的”这样的说法，随着这种技术的成熟，通往未来的道路比以往任何时候都更加清晰。随着用于创建现成独立区块链的工具的发展，ASBC 生态系统今天比几年前更加实用。虽然我们刚刚开始看到 ASBC 生态系统启动，但 ASBC 生态系统很可能对于有效和高效的多链未来至关重要。

跨链流程
====

IBC协议中包含了两个主要的交易类型：

IBCBlockCommitTx：发送方所在区块链的最新的区块信息。

IBCPacketTx：跨链交易本身的信息，及其在发送方链中被打包的区块信息。

其中IBCBlockCommitTx就是传送MerkleRoot到另外一条链的消息。而IBCPacketTx则传递了跨链的交易信息。也就是交易经常提到的有效载荷（payload）。而为了保证数据的安全，双方链需要创建两个队列，一进一出，用来存储入链（从对方链进来的消息）和出链（发给对方链的消息）。

当双方在路由注册后，彼此发现就可以通过路由进行跨链交易了。步骤如下：

路由注册

User A向chain1提交跨链交易（包括验证信息等），chain1执行该交易，并将交易存入outgoing队列

relayer从chain1中对应test-hub的outgoing消息队列取出跨链交易，提交到test-hub

test-hub执行交易，放入incoming消息队列

[https://tech.hyperchain.cn/cosmos-2/](https://tech.hyperchain.cn/cosmos-2/)

---

*Originally published on [Sentinel DVPN中文官方频道](https://paragraph.com/@sentinel-dvpn/cosmos)*
