Post by @okene • Hey
Cosmos 是什么? 一文了解Cosmos的来龙去脉 本文从技术角度全面了解 Cosmos 项目, Tendermint 是什么,Cosmos SDK 要解决什么,如何进行跨链,如何解决扩展性问题。
Stats
Actions: 0
Comments: 40
Likes: 40
Mirrors: 12
Quotes: 0
Comments
**块化**:Cosmos SDK 的目标是创建一个模块生态系统,允许开发人员轻松地创建特定应用的区块链,而无需从头开始编写应用的每个功能。 任何人都可以在自己的区块链里为 Cosmos SDK 创建一个模块或利用现成的模块。 例如,Tendermint团队正在构建一组Cosmos Hub所需的基础模块。 这些模块可以在构建自己的应用时使用。
换句话说,Cosmos是一个区块链生态系统,可以相互扩展和互操作。 在Cosmos之前,区块链是孤立的、无法相互通信。同时很难建立这样的网络,并且只能处理每秒少量的交易。
这个问题是有道理的,考虑到今天大多数去中心化的应用都是在像以太坊这样的虚拟机区块链之上开发的。 首先,这种现象的(部分)原因是,创建区块链比智能合约要困难得多。 有了Cosmos SDK之后就不再是这样。开发人员可以轻松地开发整个特定应用的区块链,这有几个优点。 除次之外,还将拥有更多的**灵活性**,**安全性**,**性能**和**主权**。
此外,开发人员可以创建新的模块来自定义其应用程序。 随着Cosmos网络的发展,SDK模块的生态系统将扩大,使得开发复杂的区块链应用程序变得越来越容易。
Tendermint BFT 将区块链的开发时间大大缩减,但从头构建一个安全的 ABCI应用(实现ABCI协议)仍然是一项艰巨的任务。 这就是为什么需要 Cosmos SDK 。
Cosmos通过新的技术愿景解决了这些问题。 为了理解这个愿景,我们需要回到区块链技术的基本原理。
Cosmos 简介 严格来说,**Cosmos是一个独立并行区块链的去中心化网络,每个区块链都由Tendermint共识这样的BFT共识算法构建**。
Cosmos的愿景是让开发人员轻松构建区块链,并通过允许他们彼此进行交易(通信)来打破区块链之间的障碍。 最终目标是创建一个**区块链网络,一个能够以去中心化方式相互通信的区块链网络**。 通过Cosmos,区块链可以保持主权,快速处理交易并与生态系统中的其他区块链进行通信,使其成为各种场景的最佳选择。
Cosmos SDK 很棒的地方在于它的模块化,允许开发人员移植现有的区块链(Go 编写)代码在它上面运行。 例如,*Ethermint*是一个将以太坊虚拟机移植到 SDK 模块中的项目。 *Ethermint*的工作原理完全像以太坊,具有Tendermint BFT 的共识属性。 所有现有的以太坊工具(Truffle,Metamask等))与Ethermint兼容,很容易将已有智能合约移植过来。
要了解 Cosmos 如何打造区块链生态系统,我们需要从区块链故事开始。 第一个区块链是比特币,这是2008年创建的点对点数字货币,使用一种称为工作证明(PoW)的新型共识机制。 这是第一个去中心化应用。 不久,人们开始意识到去中心化应用的潜力,并希望在社区中建立新的应用。
Cosmos SDK还附带了一组有用的开发者工具:控制台命令行(CLI)、REST服务和各种其他常用工具库。
Tendermint BFT 将区块链网络和共识层打包成通用引擎的解决方案,允许开发人员专注于应用程序开发,而不是复杂的底层协议。 因此,Tendermint可节省大量的开发时间。
之前创建一个区块链需要从头开始构建所有三层:网络、共识和应用程序。 以太坊通过提供虚拟机区块链简化了去中心化应用的开发,任何人都可以以智能合约的形式部署自定义逻辑。 但是,它并没有简化区块链本身的开发。 就像比特币一样,Go-Ethereum 仍然是整体耦合的系统,不易自定义。2014年Jae Kwon 创建 Tendermint 就是想要解决这个问题。
**公有链或私有链均可:** Tendermint BFT只处理区块链*网络*和*共识*,它帮助节点传播交易和验证追加交易到区块链。 应用层的角色是定义如何构成验证者集合。 因此,开发人员可以在Tendermint BFT引擎之上构建公有链或私有链。
**即时最终确定性:** Tendermint共识算法的一个属性是即时最终确定性(Instant finality)。 只要三分之一以上验证者是诚实的(拜占庭下),就永远不会分叉。 用户可以确保他们的交易一旦创建到区块就是最终(确定)的(这不是比特币和以太坊等工作区块链的情况)。
BC 允许异构链之间转移价值(如token)和数据,这意味着具有不同应用程序和验证人集合的区块链是可互操作的。 例如,它允许公有链和私有链间相互转移token。
要了解更多有关特定应用的区块链的信息,请阅读这篇文章。 当然,如果不想建立自己的区块链,仍然可以通过在Ethermint上部署你的智能合约来与Cosmos兼容(通信)。
**状态机**只是一个程序的“花哨词”,它保存一个状态,在接收到输入时修改它。 这个状态可以代表不同的东西,取决于应用程序(例如加密货币的余额)和修改状态的交易(例如从一个账户减去余额并将其添加到另一个账户)。**确定性**意味着,如果您从同一个创世纪(genesis)状态重播相同的交易,始终得到相同的结果状态。
现在,开发人员已经有了一种快速构建定制区块链的方法,让我们来看看如何将这些区块链连接在一起。 区块链之间的连接是通过区块链间通信协议(IBC:Inter-Blockchain Communication protocol)来实现的。 IBC利用Tendermint共识的“即时最终性”(其他的具有“即时最终性”共识引擎也可以),以允许**异构链之间相互转移价值(如token)或数据**。
**应用程序:** 负责更新给定的一组交易,即处理交易的状态。**网络:** 负责交易和共识相关消息的传播。**共识:** 使节点能够就系统的当前状态达成一致。 状态机与应用层类似,它定义了应用程序的状态和状态转换函数。 其他层负责在连接到网络的所有节点上复制状态机。
如果应用根据他们有多少Token来选取验证者,那么区块链就称为权益证明PoS(Proof-of-Stake)。 应用也可以只有经过许可或授权才能成为验证者,那么区块链则是许可或私有链。 开发人员可以自由定制区块链验证者集的规则。
在2014中,以太坊提出了构建去中心化应用的新愿景。 构建一个人们可以部署任何类型应用的区块链。 以太坊通过将应用层转换为称为以太坊虚拟机(EVM)的虚拟机来实现这一点。 该虚拟机能够处理称为智能合约的程序,任何开发人员都可以以*无许可*的方式部署到以太坊区块链。 这种新的方法允许成千上万的开发人员开始构建去中心化应用(dApps)。 然而,这种方法的局限性很快就显现出来,至今仍然存在。
第二个限制是开发人员只有相对较低的灵活性。 由于EVM是一个需要容纳所有用户场景的沙盒,因此它针对常用场景(average use case)进行了优化。 这意味着开发人员必须对其应用程序的设计和效率进行折衷(例如,需要在可能首选UTXO模型的支付平台中使用帐户模型)。 除此之外,它们仅限于一些编程语言,并且不能实现**代码自动执行**。
现在,我们从高层次的角度更好地理解区块链,让我们从更多的技术角度来看待区块链的定义。 区块链是一个在全节点上复制的**确定性状态机**,只要其维护者不到三分之一是拜占庭式(恶意)节点,即可保持**共识安全**, 让我们来分解一下。
第一个限制是*扩展性(scaling)*-建立在以太坊之上的去中心化应用程序被每秒15交易数的共享速率所抑制。 这是因为以太坊仍然使用工作证明,并且以太坊dApps竞争单个区块链的有限资源。
**不同的层**:异构链有不同的层,这意味着它们在如何实现网络,共识和应用部分方面可能有所不同。 为了与IBC兼容,区块链只需要遵循几个要求,主要是共识层必须具有快速的最终确定性。 工作量证明链(如比特币和以太坊)不属于这个类别,因为它们的确定性是概率性的。
第三个限制是每个应用程序在主权方面都受到限制,因为它们都共享相同的基础环境。 本质上,这会创建两层治理:应用治理和底层的治理。 前者受到后者的限制。 如果应用程序中存在错误,无法对其进行任何操作,除非经以太坊平台本身的治理批准(参考Dao事件。 如果应用程序在EVM中需要一个新功能,
总结一句话:与所有其他的 Cosmos 工具一样,Cosmos SDK 也是模块化设计。 现在它允许开发者在 Tendermint BFT 共识引擎之上构建应用。以后也可以用于其他实现 ABCI 协议的共识引擎之上。 随着时间的推移,预计将出现多个不同的架构模型的SDK,与多个共识引擎兼容,所有这些都在Cosmos 网络生态系统中。
那么它再次必须完全依靠以太坊平台的治理来接受它。 这些限制不是特定于以太坊,而是所有试图创建一个适合所有使用情况的单一平台的区块链。 这也是 Cosmos 发挥作用的地方。
Cosmos的愿景是让开发人员轻松构建区块链,并通过允许他们彼此进行交易(通信)来打破区块链之间的障碍。 最终目标是创建一个**区块链网络,一个能够以去中心化方式相互通信的区块链网络**。 通过Cosmos,区块链可以保持主权,快速处理交易并与生态系统中的其他区块链进行通信,使其成为各种场景的最佳选择。
当时,有两种选择来开发去中心化应用:要么分叉比特币代码库,要么建立在它之上。 然而,比特币代码库是非常耦合的;所有的三层—网络、共识和应用耦合在一起。 此外,比特币脚本语言功能有限,也不用户友好。 因此需要更好的工具。
每个参与者在其计算机上存储总账本的副本,并在收到交易块时根据协议定义的规则对其进行更新。 区块链技术的目标是确保总账本正确复制,这意味着每个诚实的参与者在任何给定时刻都看到相同版本的总账本。
区块链技术的主要好处是各方无需依赖中央权威即可共享账本。 区块链是**去中心化**的。 今天区块链技术的第一个也是最着名的应用是比特币,一种去中心化的货币。
**主权**:每个区块链都由一组验证者维护,他们的工作是同意下一个区块提交给区块链。 在工作量证明区块链中,这些验证者被称为矿工。 主权区块链是一个拥有自己的验证者集合的区块链。 在许多情况下,区块链的主权是很重要的,因为验证者最终负责修改状态。 在以太坊中,应用程序都是由一组通用验证者(矿工)运行的。 正因为如此,每个应用程序只有有限的主权。
**基于功能的安全性**:功能约束模块之间的安全边界,使开发人员能够更好地了解模块的可组合性,并限制恶意或意外交互的范围。 要深入了解,点击这里。
**共识安全**是指状态机复制的每个诚实节点都应该同时看到相同的状态。 当节点收到交易块时,会验证它是否有效,意味着每个交易都确保有效,并且该块本身由超过三分之二的称为验证器的维护者进行验证。 只要不到三分之一的验证者是拜占庭式(恶意)节点,安全就会得到保证。
wa nice
区块链可以被描述为由一组验证者(矿工)维护的分布式数字账本,即使一些验证者(少于三分之一)是恶意的,账本也是正确的。